24小时热门版块排行榜    

查看: 2189  |  回复: 18
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

田山东

捐助贵宾 (著名写手)

[求助] 请教matlab在linux下的并行问题已有2人参与

我想在linux下进行并行运算,原先串行的时候用for循环
for i=1:10
.....
.....
end
每个循环直接互相不影响,各干各的,得到的结果也是相互独立的,所以想到了并行运算。
把它改成parfor循环
parfor i=1:10
...
...
end
然后与串行相同的编译语句  nohup matlab d5.out &
进行编译,结果一下就结束了,没有进行计算,是怎么回事呢?
看书,说还要设置运行的核数,比如 matlabpool 设置需要几个核。
对spmd有点小疑问。同一段段代码运行在不同的 多个 lablablab上,是说一个任务运行在多个核上吧?而不是不同的任务运行在不同的核上。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

everythinghasitsseason.enjoyyourlife.
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tracel

木虫 (正式写手)

【答案】应助回帖


感谢参与,应助指数 +1
jjdg: 金币+1, 感谢参与 2012-11-30 13:15:56
nohup 是系统命令,而非matlab命令,matlab环境,启用并行后,直接运行.m文件即可。
4楼2012-11-30 12:26:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 19 个回答

田山东

捐助贵宾 (著名写手)

刚在网上搜了一下,matlabpool open local 8 设置节点数,但是必须在matlab下面才行,比如我打开linux,
>>matlab
进入matlab系统,然后matlabpool open local 8 可以,给出提示:
Starting matlabpool using the 'local' configuration ... connected to 8 labs.
看上去好像可以了,好吧,挂程序吧:
nohup matlab dd.out &
这个语句是网友给的,就是让matlab程序后台运行的一个方法。这时候提示出错了:
??? Undefined function or method 'nohup' for input arguments of type 'char'.

很奇怪 啊!!
如果进入linux界面,然后进入ABzazhi24pi.m这个文件所在的文件夹,输入
nohup matlab dd.out &
则没有这个奇怪的提示??? Undefined function or method 'nohup' for input arguments of type 'char'.
而且串行的时候还能得到正确的结果,并行的时候反而不能运行了。郁闷啊
everythinghasitsseason.enjoyyourlife.
2楼2012-11-30 10:50:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

田山东

捐助贵宾 (著名写手)

是不是break的问题。但是break跳出的是内层的循环啊。
parfor j=1:10
...
...
for
for
for
if...
berek
end
...


end
是这个问题吗?不用break也不行啊。没法跳出那个循环啊
everythinghasitsseason.enjoyyourlife.
3楼2012-11-30 11:06:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tracel

木虫 (正式写手)

【答案】应助回帖


jjdg: 金币+1, 感谢参与 2012-11-30 13:16:08
想继续使用nohup命令运行程序,还需要并行的话,需要在你.m程序文件进行修改。
示例如下:
matlabpool(3);      %parallel using 3 threads , 3可以改为任何你需要的核数
...    % 原程序内容
matlabpool close;   %close all the matlabpools
5楼2012-11-30 12:42:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见