下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MATLAB行计算今天搞了一下matlab的并行计算,效果好的出乎我的意料。本来CPLM是双核,不过以前一直注重算法,没注意并行计算的问题。今天 为了在8核的dell效劳器上跑程序才专门看了一下。本身写的程序就很容易实 现并行化,因为beamline之间并没有考虑相互作用。等丁可以拆成n个线程并行,要是有550核的话,估计1ms就算完了。先转下网上找到的资料。一、Matlab并行计算原理梗概Matlab的并行计算实质还是主从结构的分布式计算。当你初始化Matlab并行计算环境时,你最初的Matlab进程自动成为主节点,同时初始化多个(具体 个数手动设定,详见下文)Matlab计算子节点。Par
2、for的作用就是让这些子节 点同时运行Parfor语句段中的代码。Parfor运行之初,主节点会将Parfor循 环程序之外变量传递给计算子节点。子节点运算过程时互不干扰,运算完毕,那么应该有相应代码将各子节点得到的结果组合到同一个数组变量中, 并返回到Matlab主节点。当然,最终计算完毕应该手动关闭计算子节点。二、初始化Matlab并行计算环境这里讲述的方法仅针对多核机器做并行计算的情况。 设机器的CPU心数量 是CoreNum双核机器的CoreNum2依次类推。CoreNu也不等丁核心数量,但是 如果CoreNum、丁核心数量那么核心利用率没有最大化, 如果CoreNumpt丁核心数 量
3、那么效率反而可能下降。因此单核机器就不要折腾并行计算了,否那么速度还更慢。下面一段代码初始化Matlab并行计算环境:%Initialize Matlab Parallel Computing Enviornment by Xaero | Macro2CoreNum=2;咖定机器CP%心数量, 我的机器是双核, 所以CoreNum=2 if matlabpool(size) matlabpool local 4Starting matlabpool using the local configuration . connected to 4 labs.显示正在进行多核配置,一会说,连接到4个“
4、实验室。我理解就是在本 地虚拟出4台可以运行matlab的工作站,这样用分布式计算工具箱可以进行并 行计算matlabpool这个命令好似是在并行计算工具箱里的。观察windows任 务管理器,可以发现一共有5个MATLAB.exe程。其中一个占内存较多的,我 理解是主控的,他根本不干活,只负责分配,进行计算时他的cpu占用率只有12%剩下四个进程专门用来计算的,跑起来各占cpu 25%E右。看上去还是每个matlab进程单核运算,但是一下开4个进程,所以能把cpu用满。如果后续还需要多核运算,就直接用parfor好了,不用每次都用matlabpool命令。那个配置一次就好。算完了,不再跑了,
5、临退出时关闭配置就行。 matlabpool closeSending a stop signal to all the labs . stopped.下面是我一个M攻件的程序,测测4核并行计算和单核计算的差距,很简单。function testtimeruntimes = 1e9;dummy1 = 0;dummy2 = 0;%matlabpool local 4tic%for x= 1:runtimes;parfor x= 1:runtimes;dummy1 = dummy1 + x;dummy2 = 2 * x + 1;endtocplot(1 2, dummyl, dummy2);第一次
6、用普通for语句,单核跑,6.09秒 testtimeElapsed time is 6.094267 seconds.第二次用parfor语句,4核跑,1.63秒 matlabpool local 4Starting matlabpool using the local configuration . connected to4 labs. testtimeElapsed time is 1.631350 seconds. matlabpool close加速比6.09/ 1.63 = 3.736,将近4倍还有开销吧,还比拟可观。%9 %然后说一下要注意的几个问题:1、parfor效果好,但是用起来要注意程序的细节。很多地方都会报错。比如下标必须为连续的整数!否那么会报下面这个错误“The variable xxx in a parfor cannot be classified.具体可以看parfor帮助文件里面的slicedvariables这一节,帮助建议仔细全部看过最好。2、 用了parfor之后,输出参数用nargout确定,会出错。不知道为什么。3、 变量在parfor内外的传进传出要非常小心,因为并行的关系,依赖循环 下标的变量都要仔细考虑。在我的程序里面,用profile监测,不用并行计算的时候,CPIM问为84.742 S ,用了并行计算的时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论