我在使用 OpenMP 并行化代码时遇到问题。我附上了可以重现我的问题的最简单的代码。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n = 10;
int size = 1;
vector<double> vec(1, double(1.0));
double sum = 0.0;
#pragma omp parallel for private(vec) reduction(+: sum)
for (int i = 0; i != n; ++i)
{
/* in real case, complex operations applied on vec here */
sum += vec[0];
}
cout << "sum: " << sum << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我使用带标志 -fopenmp 的 g++ 进行编译,g++ 的错误消息提示“分段错误(核心已转储)”。我想知道代码有什么问题。
请注意,应将其设置为私有,因为在实际代码中,for 循环中vec …