2012-11-18 23 views
2

我有以下代码:OpenMP和部分

#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并在这些函数中运行多个线程呢?

thx!

回答

3

在另一个区域内有一个parallel区域称为嵌套。默认情况下,嵌套区域是不活动的,这意味着它们是连续执行的。为了让他们主动,你可以:

  • 设置环境变量OMP_NESTEDtrue
  • 封闭parallel区域之前插入以下电话:omp_set_nested(1);

人们也可以限制数量嵌套并行性的工作原理:

  • 设置环境变量OMP_MAX_ACTIVE_LEVELSnum,或
  • 主叫omp_set_max_active_levels(num);

其中num是期望的最大活性水平,例如3的值将呈现所有parallel区域,嵌套深度超过3,处于非活动状态。

+0

Thx !!它工作正常! – Arkerone