OpenMP and sections
OpenMP and sections
我有以下代码:
#pragma omp parallel sections num_threads(2) {
#pragma omp section
Function_1;
#pragma omp section
Function_2;
}
但是在Function_1和Function_2中,我有一个并行,但只有一个线程运行它。那么,如何并行运行Function_1和Function_2并在这些函数中运行多个线程呢?
感谢!
将一个parallel
区域放在另一个区域中称为嵌套。默认情况下,嵌套区域处于非活动状态,这意味着它们以串行方式执行。为了使它们处于活动状态,您可以:
- 将环境变量
OMP_NESTED
设置为true
- 在封闭
parallel
区域之前插入以下调用:omp_set_nested(1);
还可以通过以下方式限制嵌套并行工作的级别数:
- 将环境变量
OMP_MAX_ACTIVE_LEVELS
设置为num
,或 - 呼叫
omp_set_max_active_levels(num);
其中num
是所需的最大活动级别,例如,值 3
将使嵌套超过 3
层的所有parallel
区域处于非活动状态。
相关文章:
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 为什么 Clang 不允许"and"作为函数名称?
- 位阵列上的快速AND运算
- 是否可以在 C++03 中定义'move-and-swap idiom'等效项
- BoostPython and CMake
- OpenSSL BIO and SSL_read
- Gurobi GRBModel and GRBmodel in C++
- std::visit and std::variant usage
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- Directx12 and keystrokes
- different between int **arr =new int [ n]; and int a[i][j]?
- C++ getenv and setenv
- Inference pytorch C++ with alexnet and cv::imread image
- Visual Studio 2019 C++ and std::filesystem
- 保证逻辑 AND 表达式中的函数调用
- python ctypes and C++ pointers
- C++ const char with .begin() and .end()
- Threads with Classes and std::packaged_task
- OpenMP and sections