请教一个OpenMP并行计算的问题,为什么并行后反而比串行更慢一倍
我的程序代码是:
void wd(int N,double *h,double *g,double *c0,double *c,double *d)
/* wavelet decomposition 小波分解 */
{
int k,n,l;
#pragma omp parallel for
for(k=0;k<N;k=k+2)
{
double ck=0.0,dk=0.0;
for(l=0;l<8;l++)
{
n=k+l;
ck=ck+c0[n%(N+1)]*h[l];
dk=ck+c0[n%(N+1)]*g[l];
}
c[k]=ck;
d[k]=dk;
}
}
//h,g分别是两个滤波器系数 前面有db4函数产生这两个系数
为什么我这样运行了并行的速度反而比串行慢一倍呢??
如果我想在内层再做一次并行的话该怎么办呢??
希望各位师傅帮帮忙,我刚开始学习OpenMP,一些OpenMP的内容看了,但是实际操作总是出现问题,希望大家指导