2012-11-18 39 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