相当于KMP_AFFINITY = gnu和ibm openmp库的详细信息?

时间:2017-06-13 17:55:21

标签: gcc g++ openmp gnu xlc

在英特尔系统上使用OpenMP时,我经常发现设置KMP_AFFINITY=verbose,(other options...)很有用,因此库会吐出我的线程实际绑定到的核心。在尝试使用不同的线程绑定选项时,我觉得这很有用。目前我正在使用Power8系统,并想知道GNU和/或IBM OpenMP发行版是否等同KMP_AFFINITY=verbose。换句话说,如果用g ++或xlc ++编译我的OpenMP可执行文件,如何获取有关线程放置位置的信息?

2 个答案:

答案 0 :(得分:1)

使用xlc ++,您可以将OMP_DISPLAY_ENV环境变量设置为TRUE或VERBOSE以获取此信息。有关详细信息,请参阅 IBM知识中心




答案 1 :(得分:1)

GCC OpenMP documentation(libgomp)说目前无法做到这一点:

  

没有libgomp库例程来确定CPU亲和性规范是否有效。作为解决方法,可以使用特定于语言的库函数(例如,C中的getenv或Fortran中的GET_ENVIRONMENT_VARIABLE来查询GOMP_CPU_AFFINITY环境变量的设置。在应用程序的运行时期间,无法更改或禁用启动时定义的CPU关联。

您可以尝试使用GOMP_DEBUG,看看它是否符合您的要求。