Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-关于parfor的问题
1 我们知道MATLAB支持并行运行一般有四种模式:
第一种模式:本机调用多核CPU性能并行运算
第二种模式:本机调用GPU性能并行运算
第三种模式:多计算机组成集群,调用集群CPU性能并行运算
第四种模式:运用MATLAB提供的云计算服务。
2 在第一种并行运算模式中:
标准模式为:
第一步:打开并行池parpool
第二步:parfor等相关PCT,并行计算工具箱中函数
第三步:关闭并行池
3 第一步:打开并行池的方式:
1)p = parpool('local',2); % 在知道有几个本地核的情况下,选择调用几个核进行并行运算。
2)parpool; % 这是直接打开并行池的方式。
备注:建议采用第一种,方便关闭和更改参数。
第二步:parfor函数的问题:
1)很多简单的低纬度运算,建议只需要用普通函数和关键字即可,用parfor函数进行运算并不能提升性能。
2)MATLAB利用多核心的计算能力来加速计算时非常有必要的,因为目前所有的电脑最少都双核心了。
3)循环并行使用parfor循环代替for循环,但是很多时候parfor很不好用,当parfor循环体内的代码比较多时,非常不容易满足循环条件而失败。因此我们首先要分析代码,另一种方式用profiler打开代码分析器来分析代码那一部分耗时较大,进行代码分析。
3)通用格式:
parfor ss = 1:100
XXX
......
......
end
4)通用并行计算模板:其基本思路就是将循环体内代码打包为函数!
parfor ss=1:100
func(ss,...,...);
end
函数如下所示:
function func(ss,...,...)
xxx
.....
.....
end
备注:该函数不应该有返回值,当parfor循环体内计算结果需要返回主函数时(绝大多数情况是这样的),那么将结果在循环体内保存为文件,文件名与循环变量ss有关。当parfor的并行运行完之后,将保存的临时文件读取进来即可,保存和读取计算结果相比于大型的计算耗时来讲应该小很多,从而体现出并行的优势。所提供的该方法可以用于任何一维、二维或者多维循环的加速计算,采用这种方法,规避了学习parofr规则的所有难点,非常具有通用性。
第三步:删除并行池参数关闭
delete(p)
举个例子:比如有这么一段并行计算代码,其中绿色标注的位置为循环体。
p = parpool('local',2);
tic
n = 200;
A = 500;
a = zeros(n);
parfor i = 1:n
a(i) = max(abs(eig(rand(A))));
end
toc
delete(p)
当然这个循环体内可以有不同的计算队列,我们把这个队列封装成为一个函数,如下:
function [a] = sample(A)
a = max(abs(eig(rand(A))));
end
然后再用parpool调用,如下:
p = parpool('local',2);
clear;
tic
n = 200;
A = 500;
a = zeros(n);
parfor i = 1:n
b = sample(A);
a(i) = b;
end
clear b;
toc
delete(p);
时间已过 28.838599 秒。
对比原先的代码:
tic
n = 200;
A = 500;
a = zeros(n);
for i = 1:n
a(i) = max(abs(eig(rand(A))));
end
toc
时间已过 42.570194 秒。
4 MATLAB并行计算的提升有限和MATLAB语言的效率有关,并且和处理的数据量和计算复杂度有关。
Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-关于parfor的问题的更多相关文章
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-2
1 MATLAB并行计算-从个人桌面到远程集群和云(陈伟/魏奋)视频摘录笔记 https://cn.mathworks.com/videos/parallel-computing-with-matla ...
- Matlab高级教程_第二篇:MATLAB和C#对应数据类型的讲解(多讲一点儿C#的矩阵运算)
1. MATLAB对应C#的数据类型主要在引入的父类库MWArray当中.有如下对应规则 .NET TYPE MWArrayTYPE MATLAB Type System.Double MWNumer ...
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-1
1 更高级的算法牵扯到更多重的循环和复杂的计算,尤其是现在人工智能的算法尤其如此.有些历史知识的人能够了解到,人工智能的很多基本算法其实近百年之前就有了,但是当时的计算机技术达不到去实现这些算法的要求 ...
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_01_定时器
MATLAB的定时器功能(timer函数): 1 从MATLAB6.5版本开始,MATLAB开始支持定时器.相对于传统的pause函数来说,定时器要强大的多,不仅可以等效实现pause的功能,还可以显 ...
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-利用GPU并行执行MATLAB程序
1 MATLAB原文: 如果所有你想使用的函数支持GPU,你能够使用gpuArray把输入的数据传输到GPU,也能够唤起gather命令把传输值GPU的数据回收. 2 通过gpuDevice命令观察当 ...
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_全局变量的妙用_遍历穿透
1 比如我这边写了一个函数,这个函数中有一个变量作为参数,给定这个参数一个值,然后这个函数返回给我一个值.但是,我写这函数的时候,这个传参我不写到函数里面.可以通过全局变量的方式进行在外部穿透遍历. ...
- Matlab高级教程_第二篇:关于MATLAB转C#过程中遇到输出两组参数的问题
1. 在matlab的m函数很可能遇到原函数[a,b] = func(a); 这样的两个输出参数. 2. 在观察C#生成后定义中我们发现: public MWArray HP(); public MW ...
- Matlab高级教程_第二篇:MATLAB和C#一些常用的矩阵运算方法的转换
1.相关方法已经生产引用,直接调用的结果如下: 2. 相关调用代码如下: using System; using System.Collections.Generic; using System.Li ...
- Matlab高级教程_第二篇:关于MATLAB转C#过程中MWArray到C#数组,C#数组到MWArray相互转换
Matlab传递数据时使用的方法,那么Matlab计算完成后在C#中应该怎么获取它的计算数据呢? 需要遵循两个基本步骤: 弄清楚Matlab函数传回的数据到底是什么格式?struct?cell?cha ...
随机推荐
- 技术沙龙|京东云DevOps自动化运维技术实践
自动化测试体系不完善.缺少自助式的持续交付平台.系统间耦合度高服务拆分难度大.成熟的DevOps工程师稀缺,缺少敏捷文化--这些都是DevOps 在落地过程中,或多或少会碰到的问题,DevOps发展任 ...
- java笔记01
java对象数组 Student[] Students = new Student[3]; 与普通数组无差 java集合类 集合类: 面向对象对事物的描述是通过对象来体现的. 为了方便对多个对象进行操 ...
- 一天一个设计模式——模板方法(Template Method)模式
一.模式说明 现实世界中的模板是用于将事物的结构规律予以固定化.标准化的成果,它体现了结构形式的标准化.例如镂空文字印刷的模板,通过某个模板印刷出来的文字字体大小都是一模一样,但是具体使用什么材质的颜 ...
- 获取ExtJS中开启Form.fileUpload时,返回的信息
当Form,开启fileUpload后,不能按默认的方式得到action.result,开启fileUpload与否,返回的action.result的内容是不一样的 未开启fileUpload时,返 ...
- jquery的读、写、增、删、查方法
# 注:jquery需要导包 格式<script type="text/javascript" src="jquery-3.2.1.js">> ...
- Navicat for Mysql 11.2 的下载,安装与激活
1. Navicat for Mysql 11.2 的下载 链接:https://pan.baidu.com/s/1w54F-MYTLuy4TQwpzUE7bQ 密码:zsfu 2.下载的 ...
- 寒假day08
今天爬了部分与人才动态相关的数据,还刷了剑指offer的部分算法题
- ansible-playbook权限提升多种方式
ansible-playbook 可以方便快速的批量执行部署和运维任务,对于不同的场景和服务器,需要使用不同的权限提升方式. 最佳实现:为了提高playbook的兼容性,跟功能没有直接关系的权限提升脚 ...
- YouTube推出慈善组合工具,能引国内视频网站跟风吗?
互联网的出现不仅仅让大众的工作和生活更便利,更深度改变着传统事物的形态,让其被更多人广泛地认知并接触到.如,原本在线下通过彩页.手册.横幅等进行宣传.募捐的慈善,就通过互联网展现出更为强大的影响力.而 ...
- 树上问题&图论模板整理
去除过水的模板,包括但不限于dijkstra(甚至堆优化都被过滤了).SPFA.kruskal.拓扑排序等. 欧拉回路:http://uoj.ac/problem/117 #include<bi ...