声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2810|回复: 7

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

[复制链接]
发表于 2011-4-13 16:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

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

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

使用道具 举报

发表于 2011-4-13 18:05 | 显示全部楼层
回复 1 # laplacemo 的帖子

并行计算中,parfor好像只适用于最底层的一层循环,在parfor help中可以找到说明
 楼主| 发表于 2011-4-13 21:38 | 显示全部楼层
回复 2 # 雨人 的帖子

嗯,我也看到这样的说明,但是如何需要并行计算,不用parfor,请问有其他办法吗?
发表于 2011-4-14 08:57 | 显示全部楼层
回复 3 # laplacemo 的帖子

并行计算的内容也很多啊 ,你可以参考并行计算的工具箱。我对这块也不是很熟悉,具体还是建议你看看help吧
发表于 2011-4-16 02:02 | 显示全部楼层
不用parfor,你需要把数据变成distributied matrix,然后每个核心只处理自己的那部分数据就行了
发表于 2011-4-16 09:15 | 显示全部楼层
跟进学习下吧,没搞过并行,不过估计以后的课题肯定会涉及到,期待高手!
发表于 2011-4-16 10:37 | 显示全部楼层
可能个人经歷遇过程序一丢, 一星期还没出答案的时代, 所以总感觉现在的速度已经够快了! 所以这些工具安装时就直接不选了, 也没学过
而且现在动不动就大矩阵大迴圈, 有些可能有其必要, 但许多实在是没这需要阿
愚昧想法, 可以简单的就不必复杂!

喔, 强调下不是说并行不重要, 只是我还没此需求吧了
年轻人我还是会建议知晓下
发表于 2011-4-17 08:47 | 显示全部楼层
个人感觉,并行计算其实也很有用处,考虑到现在计算机经常是有4核等,经过精心处理过的程序,速度确实要高好几倍。尤其需要反复多次求解方程,比如画分岔图时,感觉很有用处。
遗憾的是,并行计算用法限制较多,个人在使用parfor调用simulink模型时,总提示错误。还是希望,熟悉这块的朋友,路过留言!

点评

赞成: 5.0
赞成: 5
  发表于 2011-4-19 11:52
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-10 06:35 , Processed in 0.056084 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表