FrankieSwayt 2020-02-16 08:17 采纳率: 0%
浏览 1756

C语言 如何利用分块(Block)优化矩阵乘法?

本人计算机小白一枚
现在正在上一门课平行计算(Parallel Computing)需要实现的如下

C := C + A*B

  for i = 1 to n
    for j = 1 to n
      for k = 1 to n
        C(i,j) = C(i,j) + A(i,k) * B(k,j)
      end
    end
  end

其中ABC是n x n的矩阵。这种计算需要进行2n^3次浮点运算(floating point operations)。
现在需要用分块(blocked)来优化计算效率 / 提高CPU利用率。以BLAS计算效率为100%。争取可以达到70%即可。
GitHub上有类似解法:https://github.com/greggomann/cs267-spring2014-hw01。
但是效率只达到了BLAS的25-26%。(benchmark-blocked.c)
希望有大神可以帮助我实现更高的运算效率。如需细节请联系我!wx frankswayt

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2020-02-18 10:12
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)