OpenMP和CPU亲和力

Jak*_* M. 8 c c++ posix openmp

sched_setaffinitypthread_attr_setaffinity_np将在OpenMP下设置线程亲和力?

相关:CPU亲和力

osg*_*sgx 14

是的,命名调用将用于设置线程关联.唯一的问题是修复线程号并在正确的线程中设置正确的亲和力(您可以尝试for对已知数量的线程使用循环的静态调度).

据我所知,几乎每个openmp都允许通过环境设置亲和力.环境变量的名称各不相同(前一段时间没有标准化).我使用http://www.spec.org/omp2001/results/omp2001.html页面来查找openMP实现,并将搜索特定的环境变量名称.亲和力设置在specOMP结果的一半左右.结果中还有一些额外的OpenMP性能调整设置.

例如,对于intel编译器,变量是

 export KMP_AFFINITY=compact,0
Run Code Online (Sandbox Code Playgroud)

对于sun编译器:

 export SUNW_MP_PROCBIND=TRUE
Run Code Online (Sandbox Code Playgroud)

对于gcc(pre-openmp 3.1)

 export GOMP_CPU_AFFINITY=0-63
Run Code Online (Sandbox Code Playgroud)

其中63是最大CPU数(从0开始计数)

较新的OpenMP标准,版本3.1定义了环境变量OMP_PROC_BIND(见4.4节),其是在设置的OpenMP亲和力的标准化方式.用法是:

 export OMP_PROC_BIND=true
Run Code Online (Sandbox Code Playgroud)