Una máscara de afinidad es una máscara de bits que indica en qué procesador (es) un subproceso o proceso debe ejecutar el programador de un sistema operativo . Establecer la máscara de afinidad para ciertos procesos que se ejecutan en Windows puede ser útil ya que hay varios procesos del sistema (especialmente en los controladores de dominio) que están restringidos a la primera CPU / Core. Por lo tanto, excluir la primera CPU podría conducir a un mejor rendimiento de la aplicación.
API de Windows
La afinidad de subprocesos en Microsoft Windows se puede especificar con la función SetThreadAffinityMask . Forzar cada subproceso OpenMP a núcleos distintivos en Windows se puede lograr mediante el siguiente código C :
#include #include // Establecer afinidad de subproceso OpenMP void set_thread_affinity () { #pragma omp paralelo predeterminado (compartido) { DWORD_PTR mask = ( DWORD_PTR ) 1 << omp_get_thread_num (); SetThreadAffinityMask ( GetCurrentThread (), máscara ); } }
Ver también
Referencias
enlaces externos
- Artículo de MSDN sobre la función SetThreadAffinityMask
- Taskset, una herramienta para configurar la máscara de afinidad en Linux
- CPU Balancer, una utilidad gratuita de código abierto que distribuye los procesos de Windows XP de manera uniforme sobre procesadores lógicos utilizando la máscara de afinidad