gpt4 book ai didi

c - 为什么 "omp parallel"和 "omp single"不相互抵消? (开放MP)

转载 作者:行者123 更新时间:2023-12-04 12:11:20 28 4
gpt4 key购买 nike

在我学习 OpenMP 的过程中,我遇到了一个示例,其中的主要内容如下所示:

int main(){
#pragma omp parallel
#pragma omp single
some_function(1,2);
return 0;
}

如果我错了请纠正我,但根据我的理解,parallel 创建线程,而 single 只允许一个线程通过。

所以这两者不是互相抵消了吗?如果您只打算使用一个线程,那么创建线程有什么意义?

some_function#pragma omp task 中递归调用自身,如果这有任何区别的话。

最佳答案

omp parallel创建的线程组在omp single期间仍然存在,只是不参与执行,等待工作。 omp task 会产生很大的不同(这就是为什么在您的问题中始终包含一个完整示例如此重要的原因)!那时创建了一个任务,该任务将(很可能)由等待工作的线程之一执行。 OpenMP 中的任务通常就是这样使用的。团队中的任何线程都可以创建任务,运行时会将它们分配给团队中的线程(可能包括生成它的线程)。

关于c - 为什么 "omp parallel"和 "omp single"不相互抵消? (开放MP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42033466/

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