在 Intel 系统上使用 OpenMP 时,我经常发现设置它很有用,KMP_AFFINITY=verbose,(other options...)
以便库吐出我的线程实际绑定到的内核。在尝试不同的线程绑定选项时,我发现这很有帮助。目前我正在使用 Power8 系统,想知道是否有KMP_AFFINITY=verbose
GNU 和/或 IBM OpenMP 发行版的等价物。换句话说,如果我使用 g++ 或 xlc++ 编译我的 OpenMP 可执行文件,我如何获得关于我的线程放置位置的信息?
问问题
1519 次
2 回答
1
使用 xlc++,您可以将 OMP_DISPLAY_ENV 环境变量设置为 TRUE 或 VERBOSE 以获取此信息。可以在IBM Knowledge Center上找到完整的详细信息。
于 2017-06-13T20:15:29.013 回答
1
GCC OpenMP 文档(libgomp)说这目前是不可能的:
没有 libgomp 库例程来确定 CPU 亲和性规范是否有效。作为一种解决方法,可以使用特定语言的库函数(例如
getenv
C 或GET_ENVIRONMENT_VARIABLE
Fortran 中的函数)来查询GOMP_CPU_AFFINITY
环境变量的设置。在应用程序运行期间不能更改或禁用启动时定义的 CPU 亲和性。
您可以尝试使用GOMP_DEBUG
,看看它是否符合您的要求。
于 2017-06-14T08:29:38.540 回答