c++ - OpenMP 和 CPU 亲和性

标签 c++ c posix openmp

sched_setaffinitypthread_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

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

关于c++ - OpenMP 和 CPU 亲和性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8325566/

相关文章:

c++ - 如何在 QT 中设置中央小部件的大小/位置

c - 执行 Ansi C 标准检查的 GCC 选项?

c - 拔下并重新插入连接器后无法从串行设备读取

C++ 继承 : virtual member needs redeclaring?

c++ - 我应该在我的代码中的什么地方放置 delete 语句以消除内存泄漏?

c++ - fstream.close() 和后续的 .open() 对 iostate 位有何影响?

c - C 中的列表按字母顺序排列,额外输入

c - 如何找到结构的大小?

c - posix 线程(pthread_create 和 pthread_join)

c - 如何列出当前目录下的所有.txt文件?