用openmp并行之后时间没有减少。是任务量太少的原因吗?

q422074621 2015-12-02 03:00:50
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的。
我的这个函数会在程序中执行很多次,所以希望弄成并行的。可是时间根本不减少是为什么呢?
...全文
1212 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
q422074621 2015-12-02
  • 打赏
  • 举报
回复
用vt看了之后发现omp_barrier这个浪费了很多时间

566

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧