Affinity_mask

Affinity mask

An affinity mask is a bit mask indicating what processor(s) a thread or process should be run on by the scheduler of an operating system.[1] Setting the affinity mask for certain processes running under Windows can be useful as there are several system processes (especially on domain controllers) that are restricted to the first CPU / Core. So, excluding the first CPU might lead to better application performance.

Windows API

Thread affinity in Microsoft Windows can be specified with the SetThreadAffinityMask function.[1] Forcing of each OpenMP thread to distinctive cores in Windows can be accomplished by means of the following C code:

 #include <windows.h>
 #include <omp.h>
 // Set OpenMP thread affinity
 void set_thread_affinity () {
     #pragma omp parallel default(shared)
     {
         DWORD_PTR mask = (DWORD_PTR )1 << omp_get_thread_num();
         SetThreadAffinityMask(GetCurrentThread(), mask);
     }
 }

See also


References

  1. "SetThreadAffinityMask function (winbase.h) - Win32 apps". learn.microsoft.com. January 27, 2022. Retrieved April 7, 2023.



Share this article:

This article uses material from the Wikipedia article Affinity_mask, and is written by contributors. Text is available under a CC BY-SA 4.0 International License; additional terms may apply. Images, videos and audio are available under their respective licenses.