OpenMP和CPU亲和力

时间:2011-11-30 11:55:54

标签: c++ c posix openmp

sched_setaffinitypthread_attr_setaffinity_np会在OpenMP下设置线程关联吗?

相关:CPU Affinity

1 个答案:

答案 0 :(得分:14)

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

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

E.g。 For intel compiler变量是

 export KMP_AFFINITY=compact,0

For sun compiler:

 export SUNW_MP_PROCBIND=TRUE

For gcc (pre-openmp 3.1)

 export GOMP_CPU_AFFINITY=0-63

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

newer OpenMP Standard, version 3.1 定义了环境变量OMP_PROC_BIND(参见4.4节),它是在OpenMP中设置关联的标准方法。用法是:

 export OMP_PROC_BIND=true