我正在尝试并行化以下嵌套" 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])
但这不起作用,因为减少总和不适用于数组。并行化这些代码的最佳和最有效的方法是什么?感谢。