gpt4 book ai didi

c - 为什么当单个 block 包含在节 block 中时openmp会发出警告

转载 作者:太空宇宙 更新时间:2023-11-04 02:14:52 25 4
gpt4 key购买 nike

我有一个单独的 block 包含在这样的 sections block 中

#include <stdio.h>
#include <stdlib.h>
#include <omp.h>

int main (int argc, char *argv[])
{

int nthreads, tid;

/* Fork a team of threads giving them their own copies of variables */
#pragma omp parallel private(tid)
{

#pragma omp sections
{


#pragma omp section
{
printf("First section %d \n" , tid);
}

#pragma omp section
{


#pragma omp single
{
printf("Second Section block %d \n" , tid);
}

}

}

} /* All threads join master thread and disband */

printf("Outside parallel block \n");


}

当我编译这段代码时,编译器给出以下警告

工作共享区域不能紧密嵌套在工作共享、关键、有序或主区域中

这是为什么?

最佳答案

它会向您发出此警告,因为您有一个嵌套在 openmp sections 区域内的 openmp 单个区域,而它们之间没有嵌套 openmp 并行区域。

这被称为紧密嵌套区域。

在 C 中,工作共享结构是 for、sections 和 single。

有关更多信息,请参阅 OpenMP Specification或查看 Intel's Documentation on Improper nesting of OpenMP* constructs .

为了让代码编译干净,尝试用 #pragma omp parallel sections 替换你的 #pragma omp sections或用 #pragma omp parallel 包含 #pragma omp sections

参见 Guide into OpenMP: Easy multithreading programming for C++获取更多信息和示例。

关于c - 为什么当单个 block 包含在节 block 中时openmp会发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9264223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com