C++ Break omp parallel for
C++ Break omp parallel for
这是我的主要猎人的一部分。我想在满足条件并将b设置为false之后尽快打破omp并行:
#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;
}
}
}
只要把它分成你认为最好的几个就可以了。
对于使用手动线程(但允许break
)的更复杂的答案,请参阅此答案:https://stackoverflow.com/a/9813239/1180785
相关文章:
- "error: no matching function for call to"构造函数错误
- 表示"accepting anything for this template argument" C++概念的通配符
- 如何在C++中从两个单独的for循环中添加两个数组
- 在Linux for Windows上编译C++代码时出错
- 调用专用模板时出错"no matching function for call to [...]"
- 为什么我的for循环不能正确获取argv
- 为什么我不能在 FOR LOOP 中使用 i/10,C++?
- OpenMP #pragma omp for v/s #pragma omp parallel for 之间的区别?
- 函数中的"pragma omp parallel for"在另一个并行循环中调用函数时无效
- C++ + OpenMP for Parallel Computing:如何在Visual Studio中进行设置
- Parallel for with omp
- OpenMP:'parallel for loop'瓶颈
- 简单将 OpenMp Parallel for 转换为 C# Parallel for
- Parallel of std::reference_wrapper for std::shared_ptrs
- OpenMP 'parallel for'预先初始化
- omp parallel for:如何让线程写入私有数组,并在所有线程完成处理后合并所有数组
- OpenMP "master"杂注不得被"parallel for"杂注包围
- C++ Break omp parallel for
- OpenMP "parallel for"在特定程序中很奇怪
- 用OpenMP(Parallel for)并行化时分割错误