用openmp并行之后时间没有减少。是任务量太少的原因吗?
void MatMultiVec(double alpha,double *A, double* x, double* y, int row, int col)
{
int i,j;
double temp;
#pragma omp parallel for num_threads(2) private(j,temp)
for(i=0;i<row;i++)
{
temp = 0;
//
for(j=0;j<col;j++)
{
temp = temp + alpha*(A[i*row+j] * x[j]) ; //purple present A[i*col+j]
}
y[i]=temp;
}
}
我将上面的矩阵向量乘法代码并行,执行了10000次发现时间和没用openmp的差不多。A矩阵是1000X1000的。
我的这个函数会在程序中执行很多次,所以希望弄成并行的。可是时间根本不减少是为什么呢?