我有以下代码:
#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,并在这些函数中运行多个线程呢?
谢谢!
发布于 2012-11-18 22:38:10
将一个parallel区域放在另一个区域中称为嵌套。默认情况下,嵌套区域是非活动的,这意味着它们是串行执行的。为了激活它们,您可以执行以下操作:
在封闭的true
OMP_NESTED设置为parallel以下调用的trueomp_set_nested(1);还可以通过以下方式限制嵌套并行工作的层数:
OMP_MAX_ACTIVE_LEVELS设置为num,或omp_set_max_active_levels(num);其中num是所需的最大活动级别,例如,3值将使嵌套比parallel级别更深的所有3区域处于非活动状态。
https://stackoverflow.com/questions/13437782
复制相似问题