簡體   English   中英

OpenMP 和部分

[英]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將呈現所有parallel區域,嵌套深度超過3級,處於非活動狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM