Matlab并行计算原理梗概
Matlab的并行计算实质还是主从结构的分布式计算。当你初始化Matlab并行计算环境时,你最初的Matlab进程自动成为主节点,同时初始化多个(具体个数手动设定,详见下文)Matlab计算子节点。Parfor的作用就是让这些子节点同时运行Parfor语句段中的代码。Parfor运行之初,主节点会将Parfor循环程序之外变量传递给计算子节点。子节点运算过程时互不干扰,运算完毕,则应该有相应代码将各子节点得到的结果组合到同一个数组变量中,并返回到Matlab主节点。当然,最终计算完毕应该手动关闭计算子节点。
并行计算设置
这里讲述的方法仅针对多核机器做并行计算的情况。设机器的CPU核心数量是CoreNum,双核机器的CoreNum为2,依次类推。CoreNum可以不等于核心数量,但是如果CoreNum小于核心数量则核心利用率没有最大化,如果CoreNum大于核心数量则效率反而可能下降。因此单核机器就不要折腾并行计算了,否则速度还更慢。
下面一段代码初始化Matlab并行计算环境:
%Initialize Matlab Parallel Computing Enviornment by Xaero | Macro2.cn
CoreNum=2; %设定机器CPU核心数量,我的机器是双核,所以CoreNum=2
if matlabpool(‘size’)<=0 %判断并行计算环境是否已然启动
matlabpool(‘open’,’local’,CoreNum); %若尚未启动,则启动并行环境
else
disp(‘Already initialized’); %说明并行环境已经启动。
end
运行成功后会出现如下语句:
Starting matlabpool using the ‘local’ configuration … connected to 2 labs.
如果运行出错,按照下面的办法检测:
首先运行:
- matlabpool size
如果出错,说明你没有安装Matlab并行工具箱。确认安装了此工具箱后,运行:
- matlabpool open local 2;
如果出错,证明你的机器在开启并行计算时设置有问题。请联系MathWorks的售后服务。
Tips
- 网上有反映说,如出现错误,可以再次打开matlab,在执行所有代码前,打开parallel->manage cluster profiles,然后再关闭,可以解决。(原因未知)
用上述语句启动Matlab并行计算环境的话,在你的内存里面有CoreNum个Matlab进程存在,每个占用内存都在百兆以上。(可以用Windows任务管理器查看),故完成运行计算后可以将其关闭。
关闭的命令很简单:
- matlabpool close
more🤖
请参看mathworks