由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Computation版 - 如何让一个嵌套循环程序并行处理?
相关主题
[合集] 如何让一个嵌套循环程序并行处理?建立方程
Analytic solution for an ODE求助:stand-alone application 无法运行
matlab question: signum and abs请教matlab安装
How to adjust Adjust the Matlab pathParallel computing in Matlab
[转载] 问个matlab的问题今天发现Matlab R2006版在laptop和desktop上结果不同
请教一个MATLAB中 CURVE-FITTING 的问题MATLAB 问题请教
一个matlab里面计算曲线斜率的问题问个不该问的,matlab盗版用起来有问题吗?
[合集] 问个matlab的问题 (转载)包子求matlab script ramachandran.m (转载)
相关话题的讨论汇总
话题: spacing话题: matlab话题: end话题: 并行处理话题: 嵌套循环
进入Computation版参与讨论
1 (共1页)
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++.
相关主题
请教一个MATLAB中 CURVE-FITTING 的问题建立方程
一个matlab里面计算曲线斜率的问题求助:stand-alone application 无法运行
[合集] 问个matlab的问题 (转载)请教matlab安装
进入Computation版参与讨论
c******k
发帖数: 1140
11
但是最终我还需要从abcdefg中分别选出一个数,作为我的运算结果。不用loop,都向
量化了,能从abcdefg中选出数来吗?

【在 c****p 的大作中提到】
: 建议没向量化的话先做先量化
i****p
发帖数: 76
12
我不觉得用matlab 并行处理好。
建议你看看MPI,这个是很普遍的并行处理库。而且MATRIX MULTIPILCATION已经有现成
的程序了。你装个库,写个小的C程序,运行起来很容易。
如果你们系里有BATCH SYSTEM,我觉得他们应该有这个库。你上来说说你们系里是什么
系统?
j********9
发帖数: 603
13
OpenMP?
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.
1 (共1页)
进入Computation版参与讨论
相关主题
包子求matlab script ramachandran.m (转载)[转载] 问个matlab的问题
请教如何将libSBML绑定到Matlab或者其他编译工具上,谢谢! (转 (转载)请教一个MATLAB中 CURVE-FITTING 的问题
一个关于加快循环计算的问题一个matlab里面计算曲线斜率的问题
请教一下Matlab下的那个Parallel Computing[合集] 问个matlab的问题 (转载)
[合集] 如何让一个嵌套循环程序并行处理?建立方程
Analytic solution for an ODE求助:stand-alone application 无法运行
matlab question: signum and abs请教matlab安装
How to adjust Adjust the Matlab pathParallel computing in Matlab
相关话题的讨论汇总
话题: spacing话题: matlab话题: end话题: 并行处理话题: 嵌套循环