返回信息流都说C在执行多次循环时比Matlab快很多,我写了一个1024*1024 * 1024*1400的矩阵乘法,C用三层迭代的最傻瓜式的方式,Matlab则直接进行矩阵运算,C的速度比Matlab慢30倍以上。
是因为Matlab对矩阵运算有优化么?
C中如何优化可以使其速度比Matlab快?
这是一条镜像帖。来源:北邮人论坛 / matlab / #5805同步于 2009/6/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
计算矩阵相乘,Matlab和C相比应当是哪个更快?
teamo
2009/6/13镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
lz可以查查BLAS 3, 这种“最傻瓜“的矩阵相乘算法 C =A*B 每一次都要进入C算一个c_ij
简单的优化 可以vertorization, 做法比如交换loop 的顺序, e.g. jki, ikj .... 优化的方法很多种,进一步还可以parallel。 lz还可以根据矩阵的大小进行相关的优化。如果是稀疏矩阵,那有需要其他的方法了,不过我理解lz应该只是想做普通的稠密矩阵吧?
Keywords: BLAS SAXPY GAXPY vertorization
MATLAB调用的应该是BLAS的例程
【 在 yasmine 的大作中提到: 】
: Matlab 具体的优化方法我也不清楚,但肯定不可能是那个“最傻瓜“的算法 :)
这种情况即使c快,我也懒得去自己去写算法……合理偷懒是码农的基本素质……
【 在 teamo (/ti 'amo/) 的大作中提到: 】
: 都说C在执行多次循环时比Matlab快很多,我写了一个1024*1024 * 1024*1400的矩阵乘法,C用三层迭代的最傻瓜式的方式,Matlab则直接进行矩阵运算,C的速度比Matlab慢30倍以上。
: 是因为Matlab对矩阵运算有优化么?
: C中如何优化可以使其速度比Matlab快?
: ...................
我先查查,谢谢~~
【 在 yasmine (继续混...) 的大作中提到: 】
: lz可以查查BLAS 3, 这种“最傻瓜“的矩阵相乘算法 C =A*B 每一次都要进入C算一个c_ij
: 简单的优化 可以vertorization, 做法比如交换loop 的顺序, e.g. jki, ikj .... 优化的方法很多种,进一步还可以parallel。 lz还可以根据矩阵的大小进行相关的优化。如果是稀疏矩阵,那有需要其他的方法了,不过我理解lz应该只是想做普通的稠密矩阵吧?
: Keywords: BLAS SAXPY GAXPY vertorization
: ...................