【发布时间】:2021-07-16 12:55:41
【问题描述】:
我有以下代码。
for (i = 0; i < n; ++i) {
++cnt[offset[i]];
}
其中offset 是一个大小为n 的数组,其中包含[0, m) 范围内的值,cnt 是一个大小为m 的数组,初始化为0。我使用OpenMP 对其进行并行化,如下所示。
#pragma omp parallel for shared(cnt, offset) private(i)
for (i = 0; i < n; ++i) {
++cnt[offset[i]];
}
根据这个post的讨论,如果offset[i1] == offset[i2]换成i1 != i2,上面这段代码可能会导致cnt不正确。我该怎么做才能避免这种情况?
【问题讨论】:
标签: c++ c multithreading parallel-processing openmp