sched_setaffinity
或pthread_attr_setaffinity_np
会在OpenMP下设置线程关联吗?
相关:CPU Affinity
答案 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
export SUNW_MP_PROCBIND=TRUE
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