#pragma omp parallel for
for (int i = 0; i <500; i++)
for (j=i; j < 102342; j++)
{
Output[j] += staticConstant[i] * data[j-i];
}
}
vector 答案有的相同,有的不同。这可能是什么原因?一开始我以为可能是float的缘故,所以我把所有的都转换成了double。会有 5-6 个相同的答案,或者随机值非常接近的更大的 block ,而一些则相差很远。
最佳答案
您有多个线程写入 Output[j]
。这会导致竞争条件。一个线程写入的值被另一个具有不同值的线程替换。
关于c++ - 并行化时的不同答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47625711/