簡體   English   中英

openmp 條件並行循環

[英]openmp conditional parallel loop

如果某個條件成立,我會嘗試使用 openmp for 循環。 如果條件成立,我可以簡單地使用 if else 語句來使用並行 for 循環,但是 for 循環中的代碼有點長,如果我只使用 if else 語句,它將使代碼長度加倍。 所以基本上,我想要一個更好的方法來做到這一點:

if(condition_holds){
   // use parallel for loop
   #pragma omp parallel for
   for(...){
     // Long piece of code
   }
}else{
  // Don't use parallel for loop
  for(...){
    // Long piece of code
  }
}

所以我不必在 for 循環中編寫代碼兩次。

使用 OpenMP 的if子句有條件地啟用並行性:

#pragma omp parallel for if(condition_holds)
for(...) {

}

您可能會得到一個額外函數調用的開銷,因為循環體被 OpenMP 實現分成了一個函數。

暫無
暫無

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

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