请教matlab linux 并行在linux下的并行问题

matlab并行计算之parfor
提高matlab代码的执行效率,是很多码农们的迫切愿望和需求。最重要的当然是好的代码结构,向量化的语言的高效性是for循环拍马也赶不上的。但是,现实中很多时候我们是需要使用到for循环的,为此可以使用matlab的并行计算来提高代码执行效率。
并行计算的原理就是将代码分配到多个处理器中进行运算。例如8核的机器,就可以同时调动8个处理器来运算。不过为了在运算时你不至于太无聊,还是留下一个给自己做其他事情用吧。
1、启动和关闭并行计算功能
CoreNum=7; %调用的处理器个数
if matlabpool('size')&=0
&%之前没有打开
matlabpool('open','local',CoreNum);
else &%之前已经打开
& & disp('matlab pool
already started');
matlabpool close
如果代码还在调试阶段,可以暂时不关闭matlabpool,反复开关浪费时间得很。另外,matlab关闭后,matlabpool也会自动关闭,所以如果不是海量代码,可以不用关闭的(个人意见,没有实测影响)。
2、parfor的使用
将传统的for循环改为parfor循环,就会将循环体作为整体分到到一个个处理器中,从而一次性进行多组运算。在使用parfor时,代码的编写有一些注意事项,最主要的是其中变量的处理。matlab的帮助文档中有详细的描述。
在此,我将摘取一部分重要的加以说明并举例。
在parfor中,变量不再是随心所欲的使用,有着其自己的分类。在parfor运行时,我们经常会遇到这样的错误“&Error:
The variable xxx in a parfor cannot be
classified.”说的就是变量xxx不能被正常划分到正确的类别中。
parfor变量一共分为5类,每一类的定义和用途就不说了,看一眼就明白。需要注意的是以下几点
(1)循环变量
循环变量在循环体中的使用一定要具有独立性,循环体之间不相关。例
a(i)=a(i-1)*是不行的。
(2)sliced 变量(一般是数组,被各个处理器分割成一个个slice)
slice变量在一个循环体内只能出现一个slice,简单说就是一个循环体内只能出现slice数组的一个元素。例
a(i)=temp1;
a(i+1)=temp2;
是不行的。
另外,slice变量的下标一定要连续,例
是不行的。
(3)临时变量
matlab使用变量的一个好处是不需要预定义。但是在使用parfor时,这会弄混sliced变量和临时变量。由于临时变量不需要有sliced变量的限制,使用更自由,因此一定要区分开。方法是在parfor中对临时变量进行预定义。例
parfor i=1:10
& & b=zeros(1,4);
& & for j=1:4
&b(i)=i+1;
& & a(i)=b;
&%a是sliced变量
基本上注意到这几个问题就能正常运行parfor了。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。如何在LINUX下并行运行数值模式_百度知道
如何在LINUX下并行运行数值模式
我有更好的答案
修改/etc/hosts文件,加入 127.0.0.1 plasmahpc 然后重新启动下 /etc/init.d/network restart就可以了,是你主机名没有这个名字的原因
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。只需一步,快速开始
扫一扫,访问微社区
查看: 5241|回复: 7|关注: 0
linux下的matlab并行
<h1 style="color:# 麦片财富积分
新手, 积分 6, 距离下一级还需 44 积分
各位,请问matlab2012(或者matlab2011)在linux下能够使用PCT和MDCE并行分布式功能吗?
我在windows里面成功应用PCT和MDCE了,Linux应该怎么配置啊?
谁有关于Linux下的matlab的资料,共享一下啊,多谢了!
MATLAB 基础讨论版块优秀回答者
<h1 style="color:#4 麦片财富积分
关注者: 19
如果采用jobmanager,几乎是完全一样的。如果你采用其他scheduler, 那可能要熟悉一下linux的并行环境。
MATLAB 基础讨论版块优秀回答者
<h1 style="color:#4 麦片财富积分
关注者: 19
如果采用matlab并行计算池,执行parfor或spmd,也和window完全一样的。matlab的兼容性做的还是挺不错的。
<h1 style="color:# 麦片财富积分
刘维 发表于
如果采用matlab并行计算池,执行parfor或spmd,也和window完全一样的。matlab的兼容性做的还是挺不错的。 ...
刘老师,在windows里面完全没有问题,在Linux下matlab并行池也不能用,输入matlabpool 4等相关命令都会报错,报错内容大概是函数java.inerAddress.gerlocalHost(),Unkonwn&&Exception这个错误。
一般来说,报这个错误是找不到本地网络机子,可是,在C语言等编程环境下,网络是好的,getlocalhost()函数也是正常的,还能实现socket通信,那我就不清楚为什么matlab自己会弹出那个报错的原因了。
补充一下,我们用的是正版matlab,不存在破解问题,服务器也是比较正规的,matlab其它功能都能正常使用,请问,刘老师有Linux下matlab并行的这方面的知识吗?网不吝赐教啊!多谢了!
MATLAB 基础讨论版块优秀回答者
<h1 style="color:#4 麦片财富积分
关注者: 19
我们那个linux集群上没有PCT和MDCE,但是如果用local选项启动matlabpool的话,应该不需要IP地址吧。在matlab parallel菜单中可以对local项测试一下,看看有没有问题。
<h1 style="color:# 麦片财富积分
关注者: 1
期待答案啊。我也遇到了在window下并行没错,Linux下并行不能跑的问题了
MATLAB 基础讨论版块优秀回答者
<h1 style="color:#4 麦片财富积分
关注者: 19
期待答案啊。我也遇到了在window下并行没错,Linux下并行不能跑的问题了
我没有linux集群环境,没有试验过,就没有发言权。
不过,一般来说,matlab对linux的支持比windows好的多,windows能跑,linux一般都没问题。我估计还是环境配置的问题,比如权限、网络配置、scheduler选择等。
关注新浪微博:书生一文; 微信: 获取MATLAB混编,文件与数据接口,并行技术图书答疑和最新资料
<h1 style="color:# 麦片财富积分
刘老师,在windows里面完全没有问题,在Linux下matlab并行池也不能用,输入matlabpool 4等相关命令都会报 ...
你好。我用的是job和task的方式,做distributed job,实现了分布式计算
站长推荐 /3
筑起功能安全的堡垒 - 基于模型设计的软件开发
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区只需一步,快速开始
扫一扫,访问微社区
查看: 28468|回复: 38|关注: 0
如何在linux服务器中运行自己写的matlab程序?
<h1 style="color:# 麦片财富积分
新手, 积分 34, 距离下一级还需 16 积分
关注者: 1
我们学校的教育技术中心的超算平台采用了高性能的并行计算模式, 使用十几台高性能的服务器同时运行, 同时使用多种计算资源解决计算问题, 用多个处理器来协同求解同一问题. 大大提高了大型复杂应用程序的计算速度, 如Matlab和Stata等。
按下面网址的说法是可以打开matlab,但现在我自己写的matlab程序怎么在上面运行呢?
PS:我用 SSH_Secure_Shell_Client 软件将自己写的matlab程序上传到服务器了,接下来该如何操作?
用户刚登陆时默认在/home/用户名的目录下. 教育技术中心已为大家安装了一些实用的应用软件, 如Matlab和Stata. 其中Matlab安装在/opt/softs/MATLAB下, 用户如要启动Matlab需进到bin目录中,输入命令&cd opt/softs/MATLAB/bin&。 然后执行matlab启动程序&./matlab&,即可启动图形界面。
我上传的文件在&&/home/csuan/sim/&&目录下,请问该如何运行我在 sim 目录下的主程序 ex.m 呢?还有就是我的程序运行得很长的时间,该用怎么样的命令来让程序再后台运行并将结果保存下来呢?
跪求帮忙了!
MATLAB 基础讨论版块优秀回答者
<h1 style="color:#4 麦片财富积分
关注者: 19
本帖最后由 刘维 于
19:59 编辑
用命令行模式可以的,比如执行ex6.m文件,用如下命令即可。
matlab -nodesktop -r ex6.m
特别注意-r选项,用于执行ex6.m文件
关注新浪微博:书生一文; 微信: 获取MATLAB混编,文件与数据接口,并行技术图书答疑和最新资料
<h1 style="color:# 麦片财富积分
关注者: 1
用命令行模式可以的,比如执行ex3.m文件,用如下命令即可。
matlab -nodesktop -r ex6.m
特别注意-r选项, ...
你好!我按你说的运行我的程序后提示下面的错误
Undefined variable “ex” or function&&“ex.m”.
是不是因为服务器中 Matlab安装在/opt/softs/MATLAB
而我上传的 sim 文件 在 /home/csuan/ 里面,所以matlab找不到,如何用linux命令将这个目录加到matlab的搜索路径呢?网上说要linux添加路径到PATH环境变量中,本人菜鸟,望你详细指教了。先谢谢了!
<h1 style="color:# 麦片财富积分
关注者: 1
用命令行模式可以的,比如执行ex6.m文件,用如下命令即可。
matlab -nodesktop -r ex6.m
特别注意-r选项, ...
版主你能帮忙吗?还指望着这个算论文的东西了!!!希望你可以帮忙了!
<h1 style="color:# 麦片财富积分
关注者: 1
用命令行模式可以的,比如执行ex6.m文件,用如下命令即可。
matlab -nodesktop -r ex6.m
特别注意-r选项, ...
版主你能帮忙吗?还指望着这个算论文的东西了!!!希望你可以帮忙了!
MATLAB 基础讨论版块优秀回答者
<h1 style="color:#4 麦片财富积分
关注者: 19
版主你能帮忙吗?还指望着这个算论文的东西了!!!希望你可以帮忙了! ...
你直接将ex.m的绝对路径放到-r 后面就行了。
关注新浪微博:书生一文; 微信: 获取MATLAB混编,文件与数据接口,并行技术图书答疑和最新资料
<h1 style="color:# 麦片财富积分
关注者: 1
你直接将ex.m的绝对路径放到-r 后面就行了。
版主,我试了,提示下面的错误:
-bash: matlab: command not found
这个是什么原因呢?
<h1 style="color:# 麦片财富积分
关注者: 1
我自己已经想别的办法解决了,所以帖子关闭了。谢谢!
MATLAB 基础讨论版块优秀回答者
<h1 style="color:#4 麦片财富积分
关注者: 19
恭喜。欢迎将你解决问题的经验分享给大家。
关注新浪微博:书生一文; 微信: 获取MATLAB混编,文件与数据接口,并行技术图书答疑和最新资料
<h1 style="color:# 麦片财富积分
关注者: 1
恭喜。欢迎将你解决问题的经验分享给大家。
嗯,好的,有需要帮助的可以和我联系!
站长推荐 /3
筑起功能安全的堡垒 - 基于模型设计的软件开发
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区11:28 提问
求助:MATLAB并行计算程序不能正常结束。
MATLAB并行计算(parfor)程序,在运行临近结束时,会一直卡住不动,也不占用CPU资源,但不能正常结束。
在MATLAB中点暂停按钮,程序落到一个函数中,并且那个循环是个死循环。(附图)
"q.poll(1, java.util.concurrent.timeunit.seconds)"获取到的值为空。
这是为何?
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐}

我要回帖

更多关于 matlab linux 并行 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信