找回密码
 欢迎注册
楼主: G-Spider

[擂台] 寻求最快速的矩阵乘实现

[复制链接]
发表于 2010-11-2 16:35:12 | 显示全部楼层
并不是慢在了乘法指令上了,而是慢在复杂度上了。n^3同n^2.81比较,当n=1000时,能够相差3-4倍,如果使用n^2.367,那就快多了,几十倍有了。
litaoye 发表于 2010-11-2 15:39

对于1000阶左右的矩阵,cache命中率还是很重要的,对于简单的乘法算法,通常只要对矩阵乘法运算做一下blocking就可以提高很多倍的速度。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-11-2 17:54:34 | 显示全部楼层
14# forcal
Forcal兄过奖了,现在还不能说超过matlab(因为还没真正成形),要真正超过它,还要提高Cache命中率,这也是我能想到的一个主要问题,在真正解决了这个问题之后,我会发给你的。
我想matlab(矩阵实 ...
G-Spider 发表于 2010-10-31 21:11

感谢+期待!呵呵。

参考这个论坛,是关于Matlab GPU 高性能计算的:http://www.matlabsky.com/forum-83-1.html

效率应该与liangbch 的测试结果一致吧?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-11-2 19:09:29 | 显示全部楼层
22# forcal
21# mathe
1024阶左右的矩阵,单精度,一行或一列也要4kb,10000阶接近40KB,一级Cache都放不下,当初用matlab试验PageRank的加速算法,有个试验数据的矩阵阶是9百多,运行了一下,果断放弃,虚拟内存不够....改用了个小一些的4百多的,对于大阶的矩阵,cache命中率非常重要,GPU运算进行了细致的分块,并没有用高级的算法,如果不把数据规划好,恐怕大多时间浪费在数据传输上了。
liangbch的GPU测试又点燃了我CUDA激情,呵呵,一年前初识CUDA,可惜没有平台(我的那破机是GF 7,郁闷),64位机的版本又不太成熟,也就了解了些基础知识,而今3.2版出来了,下了个64位的版本,比之前丰富多个,至少src有了(虽然工具仍然没有32位的多),运行了一下matrixMul,还算成功。
矩阵乘法,继续....今天考个鬼科学社会主义,还开卷,不停的“写”了两个小时,右手快废了。。。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-20 16:00 , Processed in 0.054016 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表