23. matlab并行计算原理以及parpool函数

 声明: 因电脑问题, 只做记录,以后尝试。

出处:

Matlab并行运算 - wenyusuran的专栏 - CSDN博客
https://blog.csdn.net/wenyusuran/article/details/28901727

(1)matlab并行运算函数

 最初的matlab并行的运算函数是:       matlabpool

而后淘汰了matlabpool函数,转为使用parpool函数

本人使用为matlab2016b

(2)matlab并行原理:

Matlab的并行计算实质还是主从结构的分布式计算。当你初始化Matlab并行计算环境时,你最初的Matlab进程自动成为主节点,同时初始化多个(具体个数手动设定,详见下文)Matlab计算子节点。Parfor的作用就是让这些子节点同时运行Parfor语句段中的代码。Parfor运行之初,主节点会将Parfor循环程序之外变量传递给计算子节点。子节点运算过程时互不干扰,运算完毕,则应该有相应代码将各子节点得到的结果组合到同一个数组变量中,并返回到Matlab主节点。当然,最终计算完毕应该手动关闭计算子节点。
--------------------- 
作者:文宇肃然 
来源:CSDN 
原文:https://blog.csdn.net/wenyusuran/article/details/28901727 
(3)初始化matlab并行计算环境

这里讲述的方法仅针对多核机器做并行计算的情况。

设机器的CPU核心数量是CoreNum。双核机器的CoreNum2,依次类推。CoreNum不等于核心数量,但是如果CoreNum小于核心数量则核心利用率没有最大化,如果CoreNum大于核心数量则效率反而可能下降。因此单核机器就不要折腾并行计算了,否则速度还更慢。

查看CPU的核数:-----系统信息查看

也就是实际上双核--逻辑上分了四个线程(2个内核,四个逻辑处理器)

                      尴尬-----------似乎并行了效率会更差啊-----------------

一代码初始化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
--------------------- 
作者:文宇肃然 
来源:CSDN 
原文:https://blog.csdn.net/wenyusuran/article/details/28901727 
版权声明:本文为博主原创文章,转载请附上博文链接!

以下内容参看: 

Matlab并行运算 - wenyusuran的专栏 - CSDN博客
https://blog.csdn.net/wenyusuran/article/details/28901727

猜你喜欢

转载自blog.csdn.net/luolang_103/article/details/84870735