24小时热门版块排行榜    

查看: 2537  |  回复: 12

我是包子

铜虫 (正式写手)

[求助] Linux下 如何实现matlab多线程计算(应该也叫并行运算) 已有2人参与

程序跑了三个月了,还没有结果,这个真的不可以有,所以,菜鸟只能在这里求助了!!!

由于原先程序运算比较大,套用了很多的for循环,考虑到用Linux服务器来跑实验。(主要本人菜鸟一枚,不会优化程序,所以只能用最笨的办法了,5555······)

学校有几台32核的Linux服务器,其matlab版本是R2014a]版本的,上网搜索了一下matlab可以并行计算,然后就试试了,在原先的程序前我加了----matlabpool local 8(Linux服务器cpu是64,但是还要其他程序在运行就写了个8),反正提示是可以开启8个labs运行(也就是并行池的意思吧),但是发现运算的速度也没有我想象提升的那么快,还是很慢,难道是因为我在服务器上面提交的任务太多了嘛?

最后一个问题就是,matlab是不能开启多个并行池进行计算的吗?我之前打开了一个并行池,当我想开启第二个的时候就开启不了了,想问这个需要怎么解决?

有没有大神可以帮帮我这只菜鸟,自学的Linux和matlab,很多基础都不会,求帮忙、求帮忙、求帮忙,重要的事情要说三遍!!!
回复此楼

» 猜你喜欢

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

就算失望也不能绝望
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖置顶 ( 共有1个 )

wake_up

木虫 (著名写手)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
我是包子: 回帖置顶 2015-11-07 09:56:03
我是包子(xzhdty代发): 金币+10 2015-11-07 20:45:36
matlab多并行池支持不好,你全开都要跑那么久,如果过真开多并行。。。。。。。另外,那个每个机器的worker最大只能设到机器的物理内核数, 不能达到线程数。 多个机器的情况下,每个机器设置的核数必须一样。 如果真做那么大的密集计算,强烈建议GPU。CPU的并行计算很无力。

发自小木虫Android客户端
扫地扫地扫心地,心地不扫空扫地,人人都把心地扫,世上无处不净地.
8楼2015-10-24 09:54:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

问天阁

木虫 (正式写手)

3楼2015-10-23 21:56:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

问天阁

木虫 (正式写手)

2楼2015-10-23 21:54:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

260846137

新虫 (小有名气)

并行运算也不是你想它同时运算人家就能做滴 要看这个并行运算会不会利用到另外的并行运算的结果  像循环的嵌套使用并行运算是基本没用滴 想想就明白了

发自小木虫IOS客户端
4楼2015-10-23 23:48:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dk1013

木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
1. MATLAB的函数基本上是能并行都并行化了的。
2. MATLAB在程序矢量化了之后,才能体现出它的强大。for循环尽量少用。
3. 如果没办法矢量化(跟要解决的问题有关),必须使用很多for循环,还是换成C或者Fortran吧。OpenMP适合你的情况。
到得还来别无事 庐山烟雨浙江潮
5楼2015-10-24 09:28:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wake_up

木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
matlab并行计算太摆设,在单机上parfor确实好用,但是多台机器的话,机器间的通信太恼火了。而且对主调度节点性能要求很高,尤其是内存。我做过7个机器的并行,完全不好用。2014的并行计算设计的不成熟,建议用2015
。楼主如果有条件可以看看是否可以用GPU算。我现在都放matlab的 并行计算了。有兴趣可以一起研究交流。

发自小木虫Android客户端
扫地扫地扫心地,心地不扫空扫地,人人都把心地扫,世上无处不净地.
6楼2015-10-24 09:40:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wake_up

木虫 (著名写手)

顺便说一句,matlab2015已经不需要用那个麻烦的matlab pool语句了。直接parfor就好。多个机器的情况下,linux系统的版本要一致,而且在host里面要添加其他机台机器的域名。在MPI通信的时候,几个机器才能互相找到。

发自小木虫Android客户端
扫地扫地扫心地,心地不扫空扫地,人人都把心地扫,世上无处不净地.
7楼2015-10-24 09:44:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

我是包子

铜虫 (正式写手)

引用回帖:
3楼: Originally posted by 问天阁 at 2015-10-23 21:56:53
Matlab正版用户找客服

不好意思,最近没有关注,关于这个问题,导师只是给一个建议而已,实战的还得自己动手解决呢,表示用的是网上下载的matlab
就算失望也不能绝望
9楼2015-11-07 09:50:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

我是包子

铜虫 (正式写手)

引用回帖:
4楼: Originally posted by 260846137 at 2015-10-23 23:48:44
并行运算也不是你想它同时运算人家就能做滴 要看这个并行运算会不会利用到另外的并行运算的结果  像循环的嵌套使用并行运算是基本没用滴 想想就明白了

恩,现在知道了,不过同样感谢啦
就算失望也不能绝望
10楼2015-11-07 09:51:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 我是包子 的主题更新
信息提示
请填处理意见