gpt4 book ai didi

C++ 中断 omp 并行

转载 作者:太空宇宙 更新时间:2023-11-04 11:57:39 24 4
gpt4 key购买 nike

这是我的 prime hunter 的一部分。我想在满足条件并将 b 设置为 false 后尽快打破 omp parallel for:

#pragma omp parallel for
for( long l = 1; l <= n; l++ ) {
if (m % p[l] == 0) {
b = false;
*// Break omp parallel for*}
}

我试图通过 do 循环来实现这一点,但我无法弄清楚。有人可以帮我修改一下吗?

最佳答案

我相信唯一的方法是添加一个失败变量,但它不会给你任何性能提升;

#pragma omp parallel for
for( long l = 1; l <= n; l++ ) {
if (b) {
if (m % p[l] == 0) {
b = false;
}
}
}

如果真的有那么长的话,最好将循环分成几段;

#pragma omp parallel for
for( long l = 1; l < n / 2; l++ ) {
if (m % p[l] == 0) {
b = false;
}
}
if (b) {
#pragma omp parallel for
for( long l = n / 2; l <= n; l++ ) {
if (m % p[l] == 0) {
b = false;
}
}
}

只需将其分成您认为最好的数量即可。

有关使用手动线程(但允许 breaking)的更复杂的答案,请参阅此答案:https://stackoverflow.com/a/9813239/1180785

关于C++ 中断 omp 并行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15467075/

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