Matlab 版 (精华区)
发信人: zjliu (秋天的萝卜), 信区: Matlab
标 题: [合集]求助:Matlab循环如何优化?
发信站: 哈工大紫丁香 (2003年11月27日15:32:06 星期四), 站内信件
────────────────────────────────────────
tm (呼呼) 于 Wed Nov 26 14:33:57 2003 说道:
感觉Matlab中循环效率很低,我算一个东西要2分多钟,我都要崩溃了。因为这个东西要求
是应该实时处理的,起码每秒算出2次来。
一般对于这种循环有没有优化加速的办法?转换成矩阵运算是不太可能了。
────────────────────────────────────────
zjliu (秋天的萝卜) 于 2003年11月26日14:52:12 星期三 说道:
方法可能只有两个换机器,或者再想办法改程序。
另外,看看这个:
查一下matlab\bin\win32目录,应该有几个atlas_*.dll文件,
matlab对不同的cpu采用不同的dll,这是matlab快的根源,(blas内核)。
你可以在自己机器上重新编译一个相应的dll文件,可能会快不少。
下面的网页有些介绍:
http://econ.ucsd.edu/~ksheppar/matlab/MatlabAtlas.htm
我试了一下,参照该网页的做法,确实可行。
我的机器比较旧,用bench命令测lu分解的速度有25%的提高。我猜想如果是较新的CPU,
增幅会更大。
编译atlas很费时,可以下载网页上编译好的dll,拷贝到相应目录,并修改blas.spec
文件即可。
有兴趣不妨试试。
────────────────────────────────────────
tm (呼呼) 于 Wed Nov 26 15:02:58 2003 说道:
那么,改程序有什么常规方法介绍一下好吗?
────────────────────────────────────────
tm (呼呼) 于 Wed Nov 26 15:07:54 2003 说道:
我看了,有几个文件:atlas_Athlon.dll atlas_PII.dll atlas_PIII.dll atlas_PPro.d
ll
应该是分别针对:Athlon,PentiumII,PentiumIII,Pentium Pro优化的吧?可是我的是
P4
应该去down个atlas_P4.dll来吧。
────────────────────────────────────────
zjliu (秋天的萝卜) 于 2003年11月26日15:35:38 星期三 说道:
方法可能很多,主要是矩阵化程序,
另外不同函数的执行速度是有差别的,
比较一下,选择执行快的函数使用
────────────────────────────────────────
tm (呼呼) 于 Wed Nov 26 16:05:47 2003 说道:
有人说可以编译执行,会快很多,不知这种说法对否?
────────────────────────────────────────
zjliu (秋天的萝卜) 于 2003年11月26日16:21:02 星期三 说道:
这个我没尝试过,我一般不关心程序的执行速度,
只要能执行就可以了,时间长了,我还能等得及
────────────────────────────────────────
tm (呼呼) 于 Wed Nov 26 17:05:17 2003 说道:
多谢。改天请你吃饭,呵呵。
────────────────────────────────────────
able (随心所欲) 于 2003年11月26日19:27:56 星期三 说道:
你尝试用mcc file.m看看,你能得到一个file.exe文件,速度一帮来讲能快大约5倍。
────────────────────────────────────────
tm (呼呼) 于 Wed Nov 26 21:43:58 2003 说道:
谢谢你的指导,我去试试看。
────────────────────────────────────────
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:8.971毫秒