sched_setaffinity
或 pthread_attr_setaffinity_np
是否可以在 OpenMP 下设置线程关联?
相关:CPU Affinity
最佳答案
是的,命名调用将用于设置线程关联。唯一的问题是修复线程数并在正确的线程中设置正确的亲和性(您可以尝试对已知线程数使用 for
循环的静态调度)。
据我所知,几乎每个 openmp 都允许通过环境设置亲和性。环境变量的名称各不相同(前段时间还没有标准化)。 我用 http://www.spec.org/omp2001/results/omp2001.html找到 openMP 实现的页面,将搜索特定的环境变量名称。亲和性设置在大约一半的 specOMP 结果中。结果中还有一些额外的 OpenMP 性能调整设置。
例如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
关于c++ - OpenMP 和 CPU 亲和性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8325566/