![](/img/trans.png)
[英]Segmentation fault on parallelization with OpenMP(Parallel for)
[英]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.