【发布时间】:2020-05-14 06:29:09
【问题描述】:
我正在尝试优化 nbody 算法,当我在循环中添加 #pragma acc 内核时,我不明白以下评论是什么
#pragma acc kernels
for (i = 0; i < n; i++)
{
real fx, fy, fz;
fx = fy = fz = 0;
real iPosx = in[i].x;
real iPosy = in[i].y;
real iPosz = in[i].z;
for (j = 0; j < n; j++)
{
real rx, ry, rz;
rx = in[j].x - iPosx;
ry = in[j].y - iPosy;
rz = in[j].z - iPosz;
real distSqr = rx*rx+ry*ry+rz*rz;
distSqr += SOFTENING_SQUARED;
real s = in[j].w / POW(distSqr,1.5);
real3 ff;
ff.x = rx * s;
ff.y = ry * s;
ff.z = rz * s;
fx += ff.x;
fy += ff.y;
fz += ff.z;
}
force[i].x = fx;
force[i].y = fy;
force[i].z = fz;
}
什么意思是“生成隐式约简(+:fx)
"生成隐式约简(+:fy)
“生成隐式约简(+:fz)”?
谢谢
【问题讨论】:
标签: c optimization openacc