如果你手上有个比较大的任务需要计算,然后有正好有几台空闲的电脑,那么我想你可以尝试用一用MATLAB的Parallel Computing Toolbox(See here)。当然,前提是你的循环部分中的计算足够复杂,不然并行计算并不能够给你的任务省去多少时间。原因是因为communication cost本身就很大。
a.点击开始,搜索 cmd
b.在Terminal里输入:ipconfig
c.查询IP
a.右击“我的电脑”,选择“属性”
b.查询
c.dxdiag:
我办公室正好有几台四核八线程的电脑空闲着,于是我就想尝试一下。电脑性能参数如下,是可以用MATLAB Job Schedule跑一跑的,没有问题。
Computer performance
a.EF12:
IPv4 Address: 144.214.42.34
Processor: Intel® Core™ i7-4790 CPU @ 3.60Hz 3.60GHz (8-core)
Installed memory(RAM): 8.00GB
Display 1:
Name: Intel® HD Graphics 4600
Manufacturer: Intel Corporation
Chip Type: Intel® HD Graphics Family
DAC Type: Internal
Approx. Total Memory: 1696MB
Display 2:
Name: ADM Radeon™ R7 250
Manufacturer: Advanced Micro Devices, Inc.
Chip Type: ADM Radeon Graphics Processor (0x6610)
DAC Type: Internal DAC(400MHz)
Approx. Total Memory: 4095MB
b.EF9:
IPv4 Address: 144.214.42.102
Processor: Intel® Core™ i7-4790 CPU @ 3.60Hz 3.60GHz (8-core)
Installed memory(RAM): 8.00GB
c.EF16:
IPv4 Address: 144.214.42.56
Processor: Intel® Core™ i7-4790 CPU @ 3.60Hz 3.60GHz (8-core)
Installed memory(RAM): 8.00GB
首先你最好检查一下自己的MATLAB是否安装了DCT,你可以执行“ver”命令检查已经安装的工具箱list。如果你没有安装DCT的话,建议你想办法找到MATLAB的账号和license。下载toolbox的办法很简单,到MATLAB的“RESOURCES“--“Add-Ons”--”Get more APPS“就可以查找你想要的toolbox了。而使用DCT的流程如下。
首先第一步要做的,就是令每台要参与计算的计算机组成局域网。
如我手上的几台电脑:EF12, EF9, EF16
在三台计算机中安装Matlab Distributed Computing Engine(mdce)服务。
安装办法:
a.确认MATLAB安装地址
C:\Program Files\MATLAB\R2016a
b.到终端进入到C:\Program Files\MATLAB\R2016a\toolbox\distcomp\bin。同时你需要检查一下(dir),该文件夹中是否存在一个叫做"mdce.bat"的文件,不然后续工作都无法进行。
c.运行以下命令安装mdce服务:
1 |
mdce install |
d.去控制台->管理工具->服务,查看Matlab Distributed Computing Engine的属性
e.进入登录页面,选择“此帐户”,输入NT AUTHORITY\NetworkService,删除下面的密码,让该服务以NetworkService的形式登入,以便该服务存取共享的映射网络驱动器中的原程序文件。
任一台计算机都可以启动job manager,只要mdce服务启动了即可。
比如使用计算 EF12,在 C:\Program Files\MATLAB\R2006a\toolbox\distcomp\bin 目录下,运行以下命令
1 |
startjobmanager -name frenseljobm |
该命令启动jobmanager,其名字叫frenseljobm,启动地点为计算机EF12。
任一台计算机都可以启动workers,只要mdce服务启动了即可。
a.比如使用计算机101,在C:\Program Files\MATLAB\R2006a\toolbox\distcomp\bin目录下,运行以下命令:
1 |
startworker -jobmanagerhost 144.214.42.34 -jobmanager frenseljobm -name worker1 |
此命令指明在计算机144.214.42.34中,启动名为worker1的worker,而该worker受名为frenseljobm的jobmanager管理。
b.监工frenseljobm要在不同村EF9和EF12中雇用更多的工人worker2、worker3。运行如下命令:
1 |
startworker -jobmanagerhost 144.214.42.34-jobmanager frenseljobm -name worker2 -remotehost 144.214.42.102 |
即在EF9计算机中启动一个新的,名为worker2的worker。
1 |
startworker -jobmanagerhost 144.214.42.34-jobmanager frenseljobm -name worker2 -remotehost 144.214.42.56 |
即在EF16计算机中启动一个新的,名为worker3的worker。
c.使用命令
1 |
nodestatus |
可以查看节点状态, 加上 –remotehost可以查看其它节点状态。
a. 如令计算机EF12为client,即我们的程序在这里编写的。设程序文件位于D:\TestDCT中。
b.共享出文件夹D:\TestDCT,在文件夹中按工具->映射网络驱动器->令盘符为Z:->文件夹里填\\144.214.42.34\Matlab_code
于是Z:\ 便成为放置你程序的地方了。
c.以同样的方法,让计算机102和103都建立映射网络驱动器,令盘符为Z:,文件夹里填\\144.214.42.34\Matlab_code。这时三台机都可以通过Z:\testDCT访问原程序文件。
遗憾的是今天我发现我在路径$matlabhome/toolbox/distcomp/bin下竟然没有"mdce.bat"的文件,于是也就没法install。捣鼓了半天我觉得应该是licese的问题,于是发了封邮件问问系里在Mathwork官网上的contact administrator。下周一希望能够解决。到时候具体的后续再分享给各位。
最后,在“Get Add-Ons”上逛了逛,发现了挺多好玩的Toolbox,例如Statistical and Machine Learning Toolbox(Mathwork Document),希望有机会做些little toy甚至big project玩玩。
--2017.3.17 22:26
Parallel Computing Toolbox的license问题已经解决。但是我意识到办公室的电脑都是台式机,没有无线网卡,无法搭建局域网络。看来要么去买个路由器,要么需要使用Amazon EC2了。不过目前来说, local pool 4 workers的效果就已经很好了。
--2017.3.22 21:20
【欢迎订阅并关注微信公众号“饱蠹阁BaoDuGe”】
You must be logged in to post a comment.
Be the first to comment.