laplacemo 发表于 2011-4-13 16:50

[求助]matlab多核计算,调用子程序出现循环

程序1
function =tfor
t=0;
matlabpool local 3;
parfor i=1:1000
    t=t+inSum;
end
matlabpool close;
function =inSum
x=abs(round(normrnd(50,40,1,1000)));
s=sum(x);

程序2
function =ttfor
t=0;
matlabpool local 3;
parfor i=1:1000
    t=t+tinSum;
end
matlabpool close;
function =tinSum
s=0;
parfor i=1:100
    s=s+i;
end

程序1子程序里没有循环,没有问题;但程序2中有循环,就会出错,请问这种情况matlab能使用多核计算吗?

雨人 发表于 2011-4-13 18:05

回复 1 # laplacemo 的帖子

并行计算中,parfor好像只适用于最底层的一层循环,在parfor help中可以找到说明

laplacemo 发表于 2011-4-13 21:38

回复 2 # 雨人 的帖子

嗯,我也看到这样的说明,但是如何需要并行计算,不用parfor,请问有其他办法吗?

雨人 发表于 2011-4-14 08:57

回复 3 # laplacemo 的帖子

并行计算的内容也很多啊 ,你可以参考并行计算的工具箱。我对这块也不是很熟悉,具体还是建议你看看help吧

libralibra 发表于 2011-4-16 02:02

不用parfor,你需要把数据变成distributied matrix,然后每个核心只处理自己的那部分数据就行了

meiyongyuandeze 发表于 2011-4-16 09:15

跟进学习下吧,没搞过并行,不过估计以后的课题肯定会涉及到,期待高手!

ChaChing 发表于 2011-4-16 10:37

可能个人经歷遇过程序一丢, 一星期还没出答案的时代, 所以总感觉现在的速度已经够快了! 所以这些工具安装时就直接不选了, 也没学过
而且现在动不动就大矩阵大迴圈, 有些可能有其必要, 但许多实在是没这需要阿
愚昧想法, 可以简单的就不必复杂!

喔, 强调下不是说并行不重要, 只是我还没此需求吧了
年轻人我还是会建议知晓下

雨人 发表于 2011-4-17 08:47

个人感觉,并行计算其实也很有用处,考虑到现在计算机经常是有4核等,经过精心处理过的程序,速度确实要高好几倍。尤其需要反复多次求解方程,比如画分岔图时,感觉很有用处。
遗憾的是,并行计算用法限制较多,个人在使用parfor调用simulink模型时,总提示错误。还是希望,熟悉这块的朋友,路过留言!
页: [1]
查看完整版本: [求助]matlab多核计算,调用子程序出现循环