Una máscara de afinidad es una máscara de bits que indica en qué procesador(es) debe ejecutarse un subproceso o proceso el programador de un sistema operativo . [1] 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 controladores de dominio) que están restringidos a la primera CPU/núcleo. Por lo tanto, excluir la primera CPU puede generar un mejor rendimiento de la aplicación.
API de Windows
La afinidad de subprocesos en Microsoft Windows se puede especificar con la SetThreadAffinityMaskfunción [1] . Para forzar cada subproceso OpenMP a núcleos distintivos en Windows se puede utilizar el siguiente código C :
#include <windows.h> #include <omp.h> // Establecer la afinidad del hilo OpenMP void set_thread_affinity () { #pragma omp parallel default(shared) { DWORD_PTR mask = ( DWORD_PTR ) 1 << omp_get_thread_num (); SetThreadAffinityMask ( GetCurrentThread (), mask ); } }
Véase también
Referencias
- ^ ab "Función SetThreadAffinityMask (winbase.h) - Aplicaciones Win32". learn.microsoft.com . 27 de enero de 2022 . Consultado el 7 de abril de 2023 .
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 entre los procesadores lógicos utilizando la máscara de afinidad