全球旧事资料 分类
Matlab并行计算(parfor)
1Matlab并行计算原理Matlab的并行计算实质还是主从结构的分布式计算。当初始化Matlab并行计算环境时,程序最初的Matlab进程自动成为主节点,同时初始化多个(具体个数手动设定,详见下面并行计算步骤)Matlab计算子节点。parfor的作用就是让这些子节点同时运行parfor语句段中的代码。parfor运行之初,主节点会将parfor循环程序之外变量传递给计算子节点。子节点运算过程时互不干扰,运算完毕,则应该有相应代码将各子节点得到的结果组合到同一个数组变量中,并返回到Matlab主节点。当然,最终计算完毕应该手动关闭计算子节点。2并行计算的理论步骤?指定运行计算所需的core(初始化Matlab并行计算环境);运行所需要计算的程序块;释放分配的core。格式如下:matlabpoollocal
parallelprogrammatlabpoolclose若提示“matlabpoolwillberemovedi
afuturereleaseUseparpooli
stead”说明电脑所安装的matlab版本比较新,在新的matlab里很多语法都已经修改,但是保留了之前的旧语法,但是随着版本的更新,旧的语法会逐渐取消,因此若出现以上提示信息,建议采用以下的格式:parpool(
)parallelprogramdelete(gcp)其中
是core数目,为一个正整数,必须小于等于电脑处理器的core数目。你的电脑如果是双核四线程的,那么只能申请两个(而非4个)matlablocalpool。笔记本电脑上i3、i5、i7的处理器一般是双核,台式机上i3是双核,i5、i7是四核。但是如果设置的
小于核心数量则核心利用率没有最大化,如果
大于核心数量则效率反而可能下降。因此
的大小一般设置为和机器本身的core的数量
f相同。2初始化Matlab并行计算环境可以通过下面的代码来初始化Matlab并行计算环境:CoreNum2;设定机器CPU核心数量,我的机器是双核,所以CoreNum2ifmatlabpoolsize0判断并行计算环境是否已然启动matlabpoolope
localCoreNum;若尚未启动,则启动并行环境elsedispAlreadyi
itialized;说明并行环境已经启动。E
d或者(Matlab版本比较新)CoreNum2设定机器CPU核心数量,我的机器是双核,所以CoreNum2ifisemptygcp
ocreate判断并行计算环境是否已然启动parpoolCoreNum若尚未启动,则启动并行环境elsedispAlreadyi
itialized说明并行环境已经启动。E
d若一开始没有初始化环境则会显示:Starti
gparallelpoolparpoolusi
gthelocalprofileco
ectedto2workers此时通过Wi
dows资源管理器可以看到Matlab运行的进程。
其中一个为主控,只负责分配,另外两个用来计算。3需要注意的问题r
好听全球资料 返回顶部