gpt4 book ai didi

c - 在并行 for 循环中嵌套并行 for 循环

转载 作者:行者123 更新时间:2023-12-04 06:03:14 26 4
gpt4 key购买 nike

我想做这个:

omp_set_nested(1);
#pragma omp parallel for private(j)
for (i = 0; i < n; ++i) {
#pragma omp parallel for
for (j = 0; j < m; ++j) {
/* do smth */
}
}

这意味着,如果我有 8 个线程,并且第一个循环只使用 4 个线程,我希望内部循环也使用其他 4 个线程。我怎样才能做到这一点?

最佳答案

您可以指定区域中所需的线程数。

所以如果你这样做:

omp_set_nested(1);
#pragma omp parallel for private(j) num_threads(2)
for (i = 0; i < n; ++i) {
#pragma omp parallel for num_threads(4)
for (j = 0; j < m; ++j) {
/* do smth */
}
}

然后外循环将有 2 个线程。然后这 2 个线程中的每一个都将为内部循环产生 4 个线程。 (共8个)

您的描述有些令人困惑,因为您希望每个循环使用 4 个线程。不要忘记它是嵌套的,所以它们会相乘。

关于c - 在并行 for 循环中嵌套并行 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8683410/

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