matlab并行计算

matlab并行计算

ID:21774483

大小:17.84 KB

页数:5页

时间:2018-10-24

matlab并行计算_第1页
matlab并行计算_第2页
matlab并行计算_第3页
matlab并行计算_第4页
matlab并行计算_第5页
资源描述:

《matlab并行计算》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、MATLAB并行计算今天搞了一下matlab的并行计算,效果好的出乎我的意料。本来CPU就是双核,不过以前一直注重算法,没注意并行计算的问题。今天为了在8核的dell服务器上跑程序才专门看了一下。本身写的程序就很容易实现并行化,因为beamline之间并没有考虑相互作用。等于可以拆成n个线程并行,要是有550核的话,估计1ms就算完了。。。先转下网上找到的资料。一、Matlab并行计算原理梗概Matlab的并行计算实质还是主从结构的分布式计算。当你初始化Matlab并行计算环境时,你最初的Matlab进程自动成为主节点,同时初始化多个(具体个数手动设定,详见下文

2、)Matlab计算子节点。Parfor的作用就是让这些子节点同时运行Parfor语句段中的代码。Parfor运行之初,主节点会将Parfor循环程序之外变量传递给计算子节点。子节点运算过程时互不干扰,运算完毕,则应该有相应代码将各子节点得到的结果组合到同一个数组变量中,并返回到Matlab主节点。当然,最终计算完毕应该手动关闭计算子节点。二、初始化Matlab并行计算环境这里讲述的方法仅针对多核机器做并行计算的情况。设机器的CPU核心数量是CoreNum双核机器的CoreNum2,依次类推。CoreNum以不等于核心数量,但是如果CoreNum小于核心数量则核心

3、利用率没有最大化,如果CoreNum大于核心数量则效率反而可能下降。因此单核机器就不要折腾并行计算了,否则速度还更慢。下面一段代码初始化Matlab并行计算环境:%InitializeMatlabParallelComputingEnviornmentbyXaero

4、Macro2.cnCoreNum=2;%设定机器CPU核心数量,我的机器是双核,所以CoreNum=2ifmatlabpool('size')<=0%判断并行计算环境是否已然启动matlabpool('open','local',CoreNum);%若尚未启动,则启动并行环境elsedisp('Al

5、readyinitialized');%说明并行环境已经启动。end运行成功后会出现如下语句:Startingmatlabpoolusingthe'local'configuration...connectedto2labs.如果运行出错,按照下面的办法检测:首先运行:matlabpoolsize如果出错,说明你没有安装Matlab并行工具箱。确认安装了此工具箱后,运行:matlabpoolopenlocal2;如果出错,证明你的机器在开启并行计算时设置有问题。请联系MathWorks的售后服务。三、终止Matlab并行计算环境用上述语句启动Matlab并行计算

6、环境的话,在你的内存里面有CoreNum个Matlab进程存在,每个占用内存都在百兆以上。(可以用Windows任务管理器查看),故完成运行计算后可以将其关闭。关闭的命令很简单:matlabpoolclose四、Matlab做MonteCarlo并行的算法Matlab并行计算比较特别。下图节选自Matlab并行计算工具箱用户手册。这个列表告诉你Matlab如何处理Parfor并行计算程序段中的各种变量。所以写代码时要注意不少问题,否则写出的并行代码可能还不如非并行的代码快。这里我推荐大家用Matlab写MonteCarlo并行代码时按照以下注意事项来写:1.将M

7、onteCarlo模拟过程中不会改变的参数都写在Parfor循环块外面2.生成随机数、计算f(x)等过程都写在Parfor里面3.不要将V0结果传递出Parfor,而是直接计算出V0的均值、方差传递出parfor。4.最后用数学公式将传递出Parfor的V0的均值方差组合计算成最终结果这些事项如何体现到程序中请参照示例代码文件并结合视频教程学习。这样的并行办法简单易行,对原始程序没有太大的改动,同时传递变量耗费时间也较少,效率比较高。另外一个问题就是并行代码做模拟的次数问题。我们要达到用非并行的代码做N此模拟所能得到结果的精确程度,在核心为CoreNum并行代码

8、中,Parfor语句段中只要做N/CoreNum次即可达到。五、将例子改写为并行代码附件中的pareg1.m,……,pareg5.m五个文件分别是前一章五个例子的并行代码。这里需要提到的是,这五个代码文件都是用向量化的代码编写。原因在于,在前一章大家都看到了,向量化的代码比循环语句代码一般快几十甚至上千倍,所以要提高速度,向量化代码是最重要的优化方法,并行计算倒是其次。%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

9、%%%%%%%%%%%%

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。