B*B 发帖数: 87 | 1 我用matlab写了一个script,类似穷举搜索最大值的问题,搜索一个矩阵里面所有2个
元素的可能。
有两层循环的嵌套,每层都是一百万,1e10+6。
matlab跑了2天没有出结果,有人说可能要跑10天。
我的机器cpu是老的amd64X2,跑ubuntu 10.10, matlab r2009b.
以前没跑过这么大的循环,也不知道原来这么慢。
是不是这是正常现象?如果我把程序用c++写,编译运行,会快多少?
如果买个新的desktop,用intel Xeon 4,6核那种,又能快多少?
如果是从写程序的角度来说,是不是有别的方法加速?比如并行?我不是这专业的,不
懂。希望高人能给点意见。 |
C*O 发帖数: 389 | 2 改算法吧
【在 B*B 的大作中提到】 : 我用matlab写了一个script,类似穷举搜索最大值的问题,搜索一个矩阵里面所有2个 : 元素的可能。 : 有两层循环的嵌套,每层都是一百万,1e10+6。 : matlab跑了2天没有出结果,有人说可能要跑10天。 : 我的机器cpu是老的amd64X2,跑ubuntu 10.10, matlab r2009b. : 以前没跑过这么大的循环,也不知道原来这么慢。 : 是不是这是正常现象?如果我把程序用c++写,编译运行,会快多少? : 如果买个新的desktop,用intel Xeon 4,6核那种,又能快多少? : 如果是从写程序的角度来说,是不是有别的方法加速?比如并行?我不是这专业的,不 : 懂。希望高人能给点意见。
|
m*******1 发帖数: 58 | 3 1. Matlab 大循环效率很低, 这是由Matlab的运行方式决定的。尽量直接向量化, 避
免大循环。
2. 用C/写, 应该可以提高效率。
3. 不管用matlab还是C/C++, 先看算法能否向量化。可向量化的算法, 加上高性能的
BLAS库,能大幅度提高计算效率。
你的问题描述太简略。介绍一下详细情况,才能确定好的方案。你的问题的规模好象还
不需要并行计算。
|
B*B 发帖数: 87 | 4 其实我的是1000000X2的矩阵,然后从这个1000000行的矩阵里面任意取2行的组合,我是用了循环穷举的方法来求这个C(2,1000000)的组合的。
查了一下发现这个组合问题是一个比较经典的问题。 |
l*****n 发帖数: 1068 | |