c******k 发帖数: 1140 | 1 Matlab程序是 for 嵌套循环:比如,
a=0.1:0.5 with spacing 0.01; b=0.1:0.6 with spacing 0.01
c=0.1:0.8 with spacing 0.01; d=0.1:0.6 with spacing 0.01
e=0.1:0.9 with spacing 0.01; f=0.1:0.7 with spacing 0.01
g=0.1:0.6 with spacing 0.01; h=0.1:0.5 with spacing 0.01
执行部分
end; end; end; end;end; end; end; end;
这个程序在普通的PC 3.6GHz, 2GB内存上运行要2个星期多,把它放在系里的服务器上
运行,结果比我们lab的这个PC还慢,网管告诉我系里服务器的单个CPU才1.8GHz,尽管
我们有近30个CPU并行和全部 24GB ram也没用。建议把这个程序编成并行处理,但是不
知道如何把嵌套循环程序给并行处理?谢谢 |
l*****i 发帖数: 3929 | 2 这个取决于你的执行部分是什么,并不是所有的程序都可以改成并行的,就算改了也不
一定就好。你可以看看这个:(parfor = parellel for)
http://www.mathworks.com/help/toolbox/distcomp/parfor.html
【在 c******k 的大作中提到】 : Matlab程序是 for 嵌套循环:比如, : a=0.1:0.5 with spacing 0.01; b=0.1:0.6 with spacing 0.01 : c=0.1:0.8 with spacing 0.01; d=0.1:0.6 with spacing 0.01 : e=0.1:0.9 with spacing 0.01; f=0.1:0.7 with spacing 0.01 : g=0.1:0.6 with spacing 0.01; h=0.1:0.5 with spacing 0.01 : 执行部分 : end; end; end; end;end; end; end; end; : 这个程序在普通的PC 3.6GHz, 2GB内存上运行要2个星期多,把它放在系里的服务器上 : 运行,结果比我们lab的这个PC还慢,网管告诉我系里服务器的单个CPU才1.8GHz,尽管 : 我们有近30个CPU并行和全部 24GB ram也没用。建议把这个程序编成并行处理,但是不
|
c******k 发帖数: 1140 | 3 简单点说,执行部分是每次把abcdefg这8个数带入一个矩阵,然后和已知矩阵们做相乘
运算,长话短说最后只得到一个数,当然全部for loop 结束后,会产生N多的数。这个
执行部分还要实时从N多的书中求出最小的10个数。
也就是程序执行完毕,这最小的10个数也产生了。
【在 l*****i 的大作中提到】 : 这个取决于你的执行部分是什么,并不是所有的程序都可以改成并行的,就算改了也不 : 一定就好。你可以看看这个:(parfor = parellel for) : http://www.mathworks.com/help/toolbox/distcomp/parfor.html
|
c*******h 发帖数: 1096 | 4 for循环间没啥关联的话就将其中一层循环分成30份每个CPU算一份就好了。。。
【在 c******k 的大作中提到】 : 简单点说,执行部分是每次把abcdefg这8个数带入一个矩阵,然后和已知矩阵们做相乘 : 运算,长话短说最后只得到一个数,当然全部for loop 结束后,会产生N多的数。这个 : 执行部分还要实时从N多的书中求出最小的10个数。 : 也就是程序执行完毕,这最小的10个数也产生了。
|
t***s 发帖数: 4666 | 5 have to use parallel toolbox. multiple instances slows down matlab
for big.
【在 c*******h 的大作中提到】 : for循环间没啥关联的话就将其中一层循环分成30份每个CPU算一份就好了。。。
|
c******k 发帖数: 1140 | 6 再弱问下:只有matlab 2009a or b 以上的version才有这个parallel computing
toolbox. 我希望用系里的CPU batch system去并行计算,那么我是要求学校在系里的
服务器上装matlab 2009,还是在我们实验室的local PC上装matlab 2009就行? 实在
不懂,谢谢 |
l********a 发帖数: 1154 | 7 从这个需求看可以并行的
把a-g先做成一个矩阵,然后做成根据cpu数量做成cell数组,
直接parfor就行,每个u会拿到跟自己id对应的部分进行运算
并将计算结果写入结果矩阵的对应位置
最后你自己sort结果,拿出前10个数就可以了
【在 c******k 的大作中提到】 : 简单点说,执行部分是每次把abcdefg这8个数带入一个矩阵,然后和已知矩阵们做相乘 : 运算,长话短说最后只得到一个数,当然全部for loop 结束后,会产生N多的数。这个 : 执行部分还要实时从N多的书中求出最小的10个数。 : 也就是程序执行完毕,这最小的10个数也产生了。
|
l*****i 发帖数: 3929 | 8 先尽量把你的循环vectorize然后在PC上试试?
也不
【在 c******k 的大作中提到】 : 简单点说,执行部分是每次把abcdefg这8个数带入一个矩阵,然后和已知矩阵们做相乘 : 运算,长话短说最后只得到一个数,当然全部for loop 结束后,会产生N多的数。这个 : 执行部分还要实时从N多的书中求出最小的10个数。 : 也就是程序执行完毕,这最小的10个数也产生了。
|
c****p 发帖数: 6474 | 9 建议没向量化的话先做先量化
【在 c******k 的大作中提到】 : Matlab程序是 for 嵌套循环:比如, : a=0.1:0.5 with spacing 0.01; b=0.1:0.6 with spacing 0.01 : c=0.1:0.8 with spacing 0.01; d=0.1:0.6 with spacing 0.01 : e=0.1:0.9 with spacing 0.01; f=0.1:0.7 with spacing 0.01 : g=0.1:0.6 with spacing 0.01; h=0.1:0.5 with spacing 0.01 : 执行部分 : end; end; end; end;end; end; end; end; : 这个程序在普通的PC 3.6GHz, 2GB内存上运行要2个星期多,把它放在系里的服务器上 : 运行,结果比我们lab的这个PC还慢,网管告诉我系里服务器的单个CPU才1.8GHz,尽管 : 我们有近30个CPU并行和全部 24GB ram也没用。建议把这个程序编成并行处理,但是不
|
s**********e 发帖数: 591 | 10 Never use MATLAB to do for loop, especially extensive for loop. Matlab is
fast for vector processing. If you want to do for loop, use C++. |
|
|
c******k 发帖数: 1140 | 11 但是最终我还需要从abcdefg中分别选出一个数,作为我的运算结果。不用loop,都向
量化了,能从abcdefg中选出数来吗?
【在 c****p 的大作中提到】 : 建议没向量化的话先做先量化
|
i****p 发帖数: 76 | 12 我不觉得用matlab 并行处理好。
建议你看看MPI,这个是很普遍的并行处理库。而且MATRIX MULTIPILCATION已经有现成
的程序了。你装个库,写个小的C程序,运行起来很容易。
如果你们系里有BATCH SYSTEM,我觉得他们应该有这个库。你上来说说你们系里是什么
系统? |
j********9 发帖数: 603 | |
l********a 发帖数: 1154 | 14 definitely,x = [a b c d e f g]
x(1)-x(7)分别就是a-g
【在 c******k 的大作中提到】 : 但是最终我还需要从abcdefg中分别选出一个数,作为我的运算结果。不用loop,都向 : 量化了,能从abcdefg中选出数来吗?
|
j**u 发帖数: 6059 | 15 it seems like you are finding multiple parameters (each in a reasonable
range) to optimize a cost function. If so, you might want to try the matlab
optimization toolbox. it might help increase the computing efficiency.
【在 c******k 的大作中提到】 : 但是最终我还需要从abcdefg中分别选出一个数,作为我的运算结果。不用loop,都向 : 量化了,能从abcdefg中选出数来吗?
|
t***s 发帖数: 4666 | 16 his cost function may be very complicated.
matlab
【在 j**u 的大作中提到】 : it seems like you are finding multiple parameters (each in a reasonable : range) to optimize a cost function. If so, you might want to try the matlab : optimization toolbox. it might help increase the computing efficiency.
|
j**u 发帖数: 6059 | 17 it is still a cost function.
【在 t***s 的大作中提到】 : his cost function may be very complicated. : : matlab
|
c***r 发帖数: 1570 | 18 if there is no flow dependency in the execute part.
it could be paralleled, either using matlab or any compilable language |
t***s 发帖数: 4666 | 19 it may not be linear, quadratic, or even convex.
【在 j**u 的大作中提到】 : it is still a cost function.
|
l*****i 发帖数: 3929 | 20 It may or may not, but we are just asking OP to try. OP can also consider th
GADS toolbox.
【在 t***s 的大作中提到】 : it may not be linear, quadratic, or even convex.
|