矩阵乘法

miaotong08 2009-04-17 01:59:46
请问专家,将一个矩阵乘法用OpenMP编译指导语句并行化后,其执行时间为什么还不如其串行程序的执行时间,用clock()测量运行时间,还有更好的时间函数吗?
void matrixp(int a[L][M],int b[M][N],int c[L][N])
{
int i,j,k,sum=0;
#pragma omp parallel private(i,j,k) // reduction(+:sum)
for(i=0;i<L;i++)
for(j=0;j<N;j++)
{
sum=0;
//c[i][j]=0;
#pragma omp for reduction(+:sum)
for(k=0;k<M;k++)
{
sum+=a[i][k]*b[k][j];
c[i][j]=sum;
}
}
}
此并行有问题吗?请教,可以将回答发到我的邮箱zhangzhe65@126.com,谢谢!
...全文
252 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wightmight 2009-10-28
  • 打赏
  • 举报
回复
在i循环上:
#pragma omp parallel shared (i),private(j,k)

intel_zhenyuwang 2009-04-26
  • 打赏
  • 举报
回复
对最内层的循环进行并行即可.
navyfeng 2009-04-25
  • 打赏
  • 举报
回复
并行的线程数目过多,切换代价太大,导致整体性能下降。
一般并行线程数等于核心个数,可以得到较优的结果。

567

社区成员

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

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