使用OpenMP

时间:2015-07-14 14:26:11

标签: c arrays parallel-processing openmp

我正在尝试并行化以下嵌套" for循环" (在C中)使用OpenMP。

for (dt = 0; dt <= maxdt; dt++) {
  for (t0 = 0; t0 <= nframes-dt; t0++) {
    for (i=0; i<natoms; i++) {
      VAC[dt] = VAC[dt] + dot_product(vect[t0][i],vect[t0+dt][i]) ;
    }
  }
}

基本上,这计算时间相关向量(vect)的自相关函数。我需要使用OpenMP将VAC数组作为最终输出。

我尝试使用OpenMP的简化总和方法来执行此操作,方法是在最内层循环(for (i=0; i<natoms; i++))上方添加以下行。

#pragma omp parallel for default(shared) private(i,axis) schedule(guided) reduction(+: VAC[dt])

但这不起作用,因为减少总和不适用于数组。并行化这些代码的最佳和最有效的方法是什么?感谢。

0 个答案:

没有答案