Skip to content

Chtho11y/CPP-Proj3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CS205-CPP-Proj3

Yu Shiqi CPP project 3. (96/100 pts)

相对比较满意的一次 proj.

项目要求:实现快速矩阵乘法,并测试特定大小( $2^k$​ 大小方阵)矩阵的效率,与 OpenBLAS 比较。

实际实现的优化包括:

  • 朴素算法:分块指令集优化
  • Strassen算法
  • CUDA

代码报告见 report 文件夹下,阅读 pdf 以获得更好的阅读体验,另外此文件夹下也附上了画图用的简易程序,很丑但是能用。

如果你测试发现部分效率和报告对不上?嘘。。。报告个别数据填串了,尤其是朴素的8k

如果你想做得更好:

  • 虽然朴素算法基本达到了 OpenBLAS 的100-110%,但是实际上只有 kernel 写的比较精细,分块方式、分块参数方面都有很大提升空间,可以阅读 OpenBLAS 或报告参考资料中 Goto 的论文,尝试不同的分块方式。
  • 使用自行实现的多线程。该项目目前多线程依赖 OpenMP,效果比较一般,你可以自己实现一下试试。
  • Strassen 就是一坨
  • CUDA 部分缺少参照,你可以加入 cuBLAS 的对照。并且这部分我是在ddl前两三天做的,优化严重欠缺,你可以实现更好的优化。
  • 我没来得及写 arm 设备,如果你手头也没有,可以试试你的手机。Android Studio 对内嵌 C 语言还是比较友好的,随便套个模板就可以发布一个 app 到手机上测试了。不过这部分我没做,所以不保证能成。

如果你们还是用这个服务器, 这是一些忠告:

  • 测试越早越好!后面服务器上人挤人根本没法测,所以 CUDA 部分实际上少了很多数据。
  • 如果有申必人长时间占用服务器,比如半小时乃至几小时,不要给他脸,直接找助教 kill 掉他。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published