2
我有一个具有以下结构的代码。如何判断openmp不同步阵列
#pragma omp parallel for
for(i = 0; i < N; i++)
{
.....
index = get_index(...);
array[index] = ...;
.....
}
现在的index
值是为每个线程唯一的(它永远不会重叠的不同的线程),但当然OpenMP的不能让这种猜测,我想用同步对象访问array
。
如何让openmp不要使用array
的同步对象,并依靠我index
值对于不同的线程是唯一的。我尝试将array
置于私人列表中,但出现了分段错误。
OpenMP在默认情况下不会同步任何内容。所以这不应该是一个问题。索引是在并行区域内还是外部声明的? – Mysticial
仅供参考:由于缓存垃圾,写入到来自不同线程的共享阵列会导致可怕的性能问题。你应该确保这些线程当前写入的indeces之间有一定的距离)。 – smerlin