簡體   English   中英

OpenMP條件並行化-並行節中if子句的語法

[英]OpenMP conditional parallelization - syntax for if clause in parallel sections

並行部分模板是:

#pragma omp parallel sections{
    #pragma omp section{
        //parallelized
    }
    #pragma omp section{
        //parallelized
    }
}

使用if clause有條件地並行化此方法的正確方法是什么?

if (condition)添加到最外面的#pragma是否足夠?還是需要在每個內部的#pragma中也指定嗎?

#pragma omp parallel sections if(condition){
    #pragma omp section{ //is if(condition) needed here also?
        //parallelized or serialized depending on if(condition)
    }
    #pragma omp section{ //is if(condition) needed here also?
        //parallelized or serialized depending on if(condition)
    }
}

根據OpenMP 4.5 docs ,parallel部分構造的語法如下:

#pragma omp parallel sections [clause[[,] clause...]
{
# pragma omp section
  {
  }
# pragma omp section
  {
  }
}

因此,您應該僅將if子句放在外部#pragma 並且(至少就我對OpenMP的經驗而言是如此),您應該將{放在實用語句之后的新行中,但不要放在結尾。 因為任何#pragma語句都是預處理程序宏, {不會被它解析。

暫無
暫無

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

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