求助一个真实的并行优化问题
在FDTD计算中,计算软件会实时保存一些数据,我将其读出并作傅立叶变换处理,然后删除数据文件。
核心处理如下:
for (fi=0;fi<6;fi++)
{
fp[fi]=fopen(fnc[fi],"r");
if (fp[fi]==NULL)
{
printf("Error open fnc!\n");
break;
}
else
{
for (j=1;j<=jmax[fi];j++)
for (i=1;i<=imax[fi];i++)
{
fscanf(fp[fi],"%lg%lg%lg%lg%lg%lg%lg%lg%lg",&Ex,&Ey,&Ez,&Hx,&Hy,&Hz,&Jx,&Jy,&Jz);
omp_set_num_threads(2);
#pragma omp parallel for schedule(static) private(k)
for (k=0;k<=freqnum;k++)
{
Exf[fi][j][i][k]+=Ex*efac[k];
Eyf[fi][j][i][k]+=Ey*efac[k];
Ezf[fi][j][i][k]+=Ez*efac[k];
Hxf[fi][j][i][k]+=Hx*efac[k];
Hyf[fi][j][i][k]+=Hy*efac[k];
Hzf[fi][j][i][k]+=Hz*efac[k];
}
}
fclose(fp[fi]);
if (fi>=5)
{
for (i=0;i<=5;i++) remove(fnc[i]);
Dealed++;
}
}
}
但是并行优化后的程序竟然远比不优化要慢,大家帮忙看看问题在哪?