【发布时间】:2015-08-18 13:06:18
【问题描述】:
我想使用 OpenMP 并行化以下代码
for(m=0; m<r_c; m++)
{
for(n=0; n<c_c; n++)
{
double value = 0.0;
for(j=0; j<r_b; j++)
for(k=0; k<c_b; k++)
{
double a;
if((m-j)<0 || (n-k)<0 || (m-j)>r_a || (n-k)>c_a)
a = 0.0;
else
a = h_a[((m-j)*c_a) + (n-k)];
//printf("%lf\t", a);
value += h_b[(j*c_b) + k] * a;
}
h_c[m*c_c + n] = value;
//printf("%lf\t", h_c[m*c_c + n]);
}
//cout<<"row "<<m<<" completed"<<endl;
}
在此我希望每个线程同时执行“for j”和“for k”。 我正在尝试在“for m”循环之前使用 pragma omp parallel for,但没有得到正确的结果。 我怎样才能以优化的方式做到这一点。提前致谢。
【问题讨论】:
-
你能澄清一下你得到了什么和你期望什么?
-
@AviGinsburg 它是矩阵 2D 全卷积的代码,我正在尝试让每个线程并行执行“j”和“k”循环。这样做我得到了正确的结果,但执行时间增加了一倍以上。我无法弄清楚问题
标签: parallel-processing openmp