matlab开启并行计算 核数_MATLAB——多核并行计算初探
本文主要以并行语句parfor为例进行探索。
1. 适用条件
(1)每次循环之间是相互独立的;
(2)循环执行完之后的结果和循环执行的先后次序无关;
(3)不适用于频繁读写内存的算法。
2. 设置并行环境
%% 设置并行计算环境
poolobj = gcp('nocreate');
if isempty(poolobj)
poolsize = 0;
CoreNum = 4; % 设置CPU核心数量
parpool('local', CoreNum);
else
poolsize = poolobj.NumWorkers;
disp('Already initialized'); % 并行环境已启动
end
%% 关闭并行计算环境
delete(gcp('nocreate'));
如果长时间不运行并行计算,计算机会在30min后关闭并行环境。
3. 简单实例
clc;clear all;
tic
a = zeros(10000,10000); % 先分配内存
core_number = 4; % 想要调用的处理器个数
parpool('local',core_number);
parfor i = 1:10000
for j = 1:10000
a(i,j) = i*j;
end
disp(i)
end
toc
delete(gcp('nocreate'));
如果不预先分配内存、不使用parfor的条件下,在我的笔记本上运行此程序大约需要390s;仅使用parfor,不预先分配内存,运行此程序大约需要23s;如果预先分配好内存,运行此程序仅需1.8s,此时就显示不出parfor的作用了,所以在运行大数组之前一定要提前分配好内存~
4. 注意事项
4.1 parfor-Loop中的变量应该为连续增加的整数
以下是三种反例:
parfor ii = 0:0.2:1 % 不是整数
parfor jj = 1:2:11 % 不是连续整数
parfor kk = 10:-1:1 % 不是递增整数
如果需要引用上述变量,可以参考如下方式进行修改:
ii = 0:0.2:1;
parfor id_ii = 1:numel(ii)
iii = ii(id_ii);
...
end
4.2 parfor-Loop中的变量分类问题
parfor-Loop中的变量包括如下5个分类:
分类
描述循环变量
parfor的循环索引
切片变量
需要读取或写入的parfor之外的变量,且读取或写入位置与循环变量相关,每次循环中只能读取由同一个索引值索引的切片,如 a[i] 和 a[i+1] 同时出现,则a不被识别为切片变量
广播变量
在循环之前定义好的变量,在循环内部只需读取即可
简约变量
可在多次循环内对一个变量操作,该变量与迭代顺序无关
临时变量
在循环内部创建,循环结束后会清除调,但不在循环外部访问a = 0;
c = pi;
z = 0;
r = rand(1,10)
parfor k = 1 : 100 % k为循环变量
a = k; % a为临时变量
z = z + k; % z为简约变量
b(k) = r(k); % r为切片变量(输入),b为切片变量(输出)
if k <= c % c为广播变量
d = 2 * a; % d为临时变量
end
end
(1)在parfor-Loop中,如果使用嵌套的for循环来索引切片数组,则不能在parfor循环的其他地方再次使用该数组。举例如下:
%% 无效代码,因为数组A是在嵌套的for循环中被切片和索引的
A = zeros(4,10);
parfor i = 1:4
for j = 1:10
A(i,j) = i + j;
end
disp(A(i,1))
end
%% 有效代码,v被分配到了嵌套循环的外部
A = zeros(4,10);
parfor i = 1:4
v = zeros(1,10);
for j = 1:10
v(j) = i + j;
end
disp(v(1))
A(i,:) = v;
end
(2)
参考:
【1】MATLAB官方帮助文档。
matlab开启并行计算 核数_MATLAB——多核并行计算初探相关推荐
- matlab开启并行计算 核数_MATLAB 并行计算
主要函数:parfor 并行 for 循环 说明: parfor LoopVar = InitVal:EndVal; Statements; end 在生成的 MEX 函数中或在共享内存多核平台上并行 ...
- Matlab多核并行计算parfor的那些事儿【注意事项】
这几天因为实验需求,所以就了解并尝试用了matlab的多核并行计算方法,主要是通过parfor的形式来实现.现在将笔记mark down并share给大家.希望有所帮助.如有错误,欢迎批评指正. 什么 ...
- matlab有无并行功能,使用MATLAB并行计算功能提高多核系统性能
使用MATLAB并行计算功能提高多核系统性能 2009-12-13 22:12:11| 分类:matlab相关| 标签:|字号大中小订阅 maxNumCompThreads 命令 由于处理器时钟频率的 ...
- ++ 多核cpu 并行_一文读懂什么是多核并行计算(三)
导读:面向应用工程师的商业软件咨询.自研软件定制开发服务的仿真公众号,点击关注进入菜单,查看更多精彩内容. (三)如何实现多核并行计算呢? 了解了多核.多Machine.多Rack后,我可以看一下软件 ...
- python多核并行计算_Python 多核并行计算
以前写点小程序其实根本不在乎并行,单核跑跑也没什么问题,而且我的电脑也只有双核四个超线程(下面就统称核好了),觉得去折腾并行没啥意义(除非在做IO密集型任务).然后自从用上了32核128GB内存,看到 ...
- 并行计算综述————第一章 并行计算硬件平台:并行计算机
并行计算综述 第一章 并行计算硬件平台:并行计算机 Ch1 并行计算与并行计算机结构模型 1.1多核处理器与线程级并行 1.何谓多核处理器? 将功能复杂的单一核处理器划分为若干个功能相对简单的多个处理 ...
- 并行计算复习————第一篇 并行计算硬件平台:并行计算机
并行计算复习 第一篇 并行计算硬件平台:并行计算机 Ch1 并行计算与并行计算机结构模型 1.1多核处理器与线程级并行 1.何谓多核处理器? 将功能复杂的单一核处理器划分为若干个功能相对简单的多个处理 ...
- 查看服务器CPU的个数、CPU的核数、多核超线程数
查看服务器CPU的个数.CPU的核数.多核超线程数 这里有几个概念: 1.一台物理机的物理CPU的个数 2.一个CPU上的核数 3.一个核上面支持的线程数 有下面的计算公式: 总核数 = 物理CPU个 ...
- matlab开启并行计算 核数_[续] Matlab 并行编程——多核 多线程
刚开始接触matlab并行计算,以前旧电脑从不考虑这些的 小本i7四核八线程16G内存,64位win7和matlab 2012b,任务管理器显示有8个框 当用普通for循环,只有一个框接近100%,c ...
最新文章
- 系统架构设计:进程缓存和缓存服务,如何抉择?
- win10系统打开更新服务器失败怎么回事,Win10系统一直无法安装更新怎么办 Win10更新一直安装失败的3种解决方法...
- 21天精通python-21天学通Python 完整pdf扫描版[58MB]
- envi 文件 生成mat_JVM 内存分析工具 MAT 的深度讲解与实践——入门篇
- 日常生活小技巧 -- U盘拷贝时提示文件过大问题
- 苹果手机怎么编辑word文档_原创首发:编辑和修改PDF文档,将PDF转换为WORD技巧...
- PWA(Progressive Web App)入门系列:(四)Promise
- 报告:69% 的企业表示云技术有助于他们的疫情恢复
- 转网口显示未识别的网络_已有1700万用户携号转网 超99%用户1小时内办结
- 锁定计算机在哪里设置方法,怎样锁定电脑?如何设置电脑锁屏【步骤详解】
- 机器学习课程笔记【十一】- 因子分析
- RHCA红帽认证架构师考试分享
- 退出CrOS Factory,进入正常Chrome OS
- python打印列表元素_Python打印输出数组中全部元素
- 4399小游戏 十滴水 求解器(输出路径的bfs)
- 修怪曹操杀了华佗_拔剑-浆糊的传说_新浪博客
- mysql能不能存储图片_韩魔方视频app下载免费_电脑知识学习网
- http 404强制跳转到指定的网页地址
- 拷贝构造函数的三种使用情况
- 小友VUI SDK 初探