KMP_AFFINITY=verbose 等同于 gnu 和 ibm openmp 库?
Equivalent of KMP_AFFINITY=verbose for gnu and ibm openmp libraries?
在 Intel 系统上使用 OpenMP 时,我经常发现设置 KMP_AFFINITY=verbose,(other options...)
很有用,这样库会显示我的线程实际绑定到哪些内核。在尝试不同的线程绑定选项时,我发现这很有帮助。目前我正在使用 Power8 系统,想知道 GNU and/or IBM OpenMP 发行版是否有 KMP_AFFINITY=verbose
的等价物。换句话说,如果我使用 g++ 或 xlc++ 编译我的 OpenMP 可执行文件,我如何获得有关线程放置位置的信息?
使用 xlc++,您可以将 OMP_DISPLAY_ENV 环境变量设置为 TRUE 或 VERBOSE 以获取此信息。可以在 IBM Knowledge Center.
上找到完整的详细信息
GCC OpenMP documentation (libgomp) 说这是目前不可能的:
There is no libgomp library routine to determine whether a CPU affinity specification is in effect. As a workaround, language-specific library functions, e.g., getenv
in C or GET_ENVIRONMENT_VARIABLE
in Fortran, may be used to query the setting of the GOMP_CPU_AFFINITY
environment variable. A defined CPU affinity on startup cannot be changed or disabled during the runtime of the application.
您可以尝试使用 GOMP_DEBUG
看看它是否符合您的要求。
在 Intel 系统上使用 OpenMP 时,我经常发现设置 KMP_AFFINITY=verbose,(other options...)
很有用,这样库会显示我的线程实际绑定到哪些内核。在尝试不同的线程绑定选项时,我发现这很有帮助。目前我正在使用 Power8 系统,想知道 GNU and/or IBM OpenMP 发行版是否有 KMP_AFFINITY=verbose
的等价物。换句话说,如果我使用 g++ 或 xlc++ 编译我的 OpenMP 可执行文件,我如何获得有关线程放置位置的信息?
使用 xlc++,您可以将 OMP_DISPLAY_ENV 环境变量设置为 TRUE 或 VERBOSE 以获取此信息。可以在 IBM Knowledge Center.
上找到完整的详细信息GCC OpenMP documentation (libgomp) 说这是目前不可能的:
There is no libgomp library routine to determine whether a CPU affinity specification is in effect. As a workaround, language-specific library functions, e.g.,
getenv
in C orGET_ENVIRONMENT_VARIABLE
in Fortran, may be used to query the setting of theGOMP_CPU_AFFINITY
environment variable. A defined CPU affinity on startup cannot be changed or disabled during the runtime of the application.
您可以尝试使用 GOMP_DEBUG
看看它是否符合您的要求。