gpt4 book ai didi

c++ - 当 pragma for 中有 pragma for 时,OpenMP 中会发生什么情况?

转载 作者:搜寻专家 更新时间:2023-10-31 01:16:58 29 4
gpt4 key购买 nike

#pragma omp parallel 的开头创建了一堆线程,然后当我们到达 #pragma omp for 时,工作负载被分配。如果这个 for 循环内部有一个 for 循环,并且我在它之前也放置了一个 #pragma omp for 会怎样?每个线程是否创建新线程?如果不是,哪些线程被分配了这个任务?在这种情况下到底发生了什么?

最佳答案

默认情况下,不会为内部循环生成任何线程。它是使用到达它的线程顺序完成的。

这是因为默认情况下禁用嵌套。但是,如果您通过 omp_set_nested() 启用嵌套,然后将生成一组新的线程。

但是,如果您不小心,这将导致 p^2 个线程(因为每个原始 p 线程都会产生另一个 p 线程。)因此默认情况下禁用嵌套。

关于c++ - 当 pragma for 中有 pragma for 时,OpenMP 中会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8609277/

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