在我的 C++ 程序中,我想有时使用或不使用 OpenMP(即多线程或单线程)来运行其可执行文件。我正在考虑以下两种情况中的任何一种,我的代码如何使用 OpenMP:
(1) 假设我的代码只有 #include <omp.h>
和 OpenMP 指令。
(2) 与 (1) 相同,我的代码进一步调用 OpenMP 函数,如 omp_get_thread_num()
.
为了不让不同的运行有不同的代码,使用一些自定义的预编译器变量来保护 OpenMP 在我的代码中出现的位置是唯一的方法吗?
谢谢和问候!
最佳答案
您可以使用环境变量:
set OMP_NUM_THREADS=1
实际上,它不会关闭 OpenMP。它将强制 OpenMP 只为一个应用程序创建一个线程。它无需重新编译即可工作。我使用此变量来测试 1、2、3、4 等线程的可伸缩性。
关于c++ - 关闭 OpenMP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1357604/