OpenMP和CPU亲和力

sched_setaffinitypthread_attr_setaffinity_np可以在OpenMP下设置线程关联?

相关: CPU亲和力

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

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

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

  export KMP_AFFINITY=compact,0 

对于sun编译器:

  export SUNW_MP_PROCBIND=TRUE 

对于gcc(pre-openmp 3.1)

  export GOMP_CPU_AFFINITY=0-63 

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

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

  export OMP_PROC_BIND=true