c++ - 关闭 OpenMP

标签 c++ parallel-processing openmp

在我的 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/

相关文章:

haskell - 并行排序 IO 操作

c++ - 在 #define 宏中控制条件 Openmp

c++ - OpenMP 并行代码与串行代码的输出不同

c++ - 如何使用 C++ 标准库并行化普通 for 循环

c++ - 在派生模板类中看不到来自基模板类的指针

c++ - 如何推断模板中的 C++ 返回类型?

php - PHP/MySQL并行插入的正确处理

c - UPC分配动态数组并排序

c++ - C++中的异常被捕获后找出源头?

multithreading - omp 并行与 omp 并行 for