OpenMP线程绑定【未完结】

OpenMP线程绑定

OpenMP相关环境变量与指令

OMP_PROC_BIND

OMP_PROC_BIND环境变量设置bind-var ICV的初始值。这个环境变量的值可以是true、false,或者用逗号分隔的master、close或spread列表。列表的值设置了对应嵌套级别的并行区域要使用的线程亲和策略。

如果环境变量设置为false,则执行环境可能会在OpenMP位置之间移动OpenMP线程,线程相关性将被禁用,并行构造上的proc_bind子句将被忽略。

否则,执行环境不应该在OpenMP位置之间移动OpenMP线程,线程亲和性被启用,并且初始线程被绑定到OpenMP位置列表中的第一个位置,先于第一个活动并行区域。

如果OMP_PROC_BIND环境变量中的值不是true、false或master、close或spread的逗号分隔列表,则程序的行为是实现定义的。如果初始线程不能绑定到OpenMP位置列表中的第一个位置,则该行为也是实现定义的。

例子:

1
2
setenv OMP_PROC_BIND false
setenv OMP_PROC_BIND "spread, spread, close"

参考资料

NUMA 处理器与进程绑定 - Harry Chen’s Blog

OMP_PROC_BIND (openmp.org)

Controlling OpenMP Thread Affinity

OMP_PLACES (openmp.org)

Thread Affinity Interface (intel.com)


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!