Closed. This question is not reproducible or was caused by typos。它当前不接受答案。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
去年关闭。
Improve this question
我正在尝试使用OpenMP设置程序中的线程数。由于某些原因,即使最大线程数为4,我的程序也只使用1个内核。我在MacOSX上,但我在使用gcc编译器(特别是:gcc9.1.0和OpenMP版本4.5)
我得到的结果是:
但我希望“Hi from i”会被打印4次。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
去年关闭。
Improve this question
我正在尝试使用OpenMP设置程序中的线程数。由于某些原因,即使最大线程数为4,我的程序也只使用1个内核。我在MacOSX上,但我在使用gcc编译器(特别是:gcc9.1.0和OpenMP版本4.5)
#include <fstream>
#include <chrono>
#include <omp.h>
int main() {
int maxthreads = omp_get_max_threads();
std::cout << "maxthreads: " << maxthreads << std::endl;
omp_set_dynamic(0);
omp_set_num_threads(4);
#pragma omp parallel num_threads(4)
{
int id = omp_get_thread_num();
#pragma omp critical
std::cout << "Hi from " << id << std::endl;
}
}
我得到的结果是:
4
Hi from 0
但我希望“Hi from i”会被打印4次。
最佳答案
我需要将标记添加到我的cmake:-DCMAKE_CXX_FLAGS=-fopenmp
和-DCMAKE_C_FLAGS=-fopenmp
07-26 09:37