c++ - 如何在 OpenMP 中设置线程数
问题描述
我正在尝试使用 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
推荐阅读
- python - Python os.chdir() 不适用于带有空格和特殊字符的路径
- nginx - NGINX - 更改 proxy_pass 中的参数
- swift - 'Query' 类型的值没有成员 'getDocument'
- java - Log4j2 RollingFileAppender 不将日志写入文件
- ios - 如何在nativescript angular中制作自定义对话框
- async-await - Gulp 4 错误:以下任务未完成:您是否忘记发出异步完成信号?
- scala - 如何在 spark scala 中保存 PCA 对象?
- webpack - Chrome 的覆盖选项卡显示我的图书馆
- mysql - 如何为使用两个数据库(mysql和mongo)的django项目编写单元测试
- mysql - 如何在 my.cnf 中更改时区,同时考虑夏令时