本文主要以并行语句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——多核并行计算初探相关推荐

  1. matlab开启并行计算 核数_MATLAB 并行计算

    主要函数:parfor 并行 for 循环 说明: parfor LoopVar = InitVal:EndVal; Statements; end 在生成的 MEX 函数中或在共享内存多核平台上并行 ...

  2. Matlab多核并行计算parfor的那些事儿【注意事项】

    这几天因为实验需求,所以就了解并尝试用了matlab的多核并行计算方法,主要是通过parfor的形式来实现.现在将笔记mark down并share给大家.希望有所帮助.如有错误,欢迎批评指正. 什么 ...

  3. matlab有无并行功能,使用MATLAB并行计算功能提高多核系统性能

    使用MATLAB并行计算功能提高多核系统性能 2009-12-13 22:12:11| 分类:matlab相关| 标签:|字号大中小订阅 maxNumCompThreads 命令 由于处理器时钟频率的 ...

  4. ++ 多核cpu 并行_一文读懂什么是多核并行计算(三)

    导读:面向应用工程师的商业软件咨询.自研软件定制开发服务的仿真公众号,点击关注进入菜单,查看更多精彩内容. (三)如何实现多核并行计算呢? 了解了多核.多Machine.多Rack后,我可以看一下软件 ...

  5. python多核并行计算_Python 多核并行计算

    以前写点小程序其实根本不在乎并行,单核跑跑也没什么问题,而且我的电脑也只有双核四个超线程(下面就统称核好了),觉得去折腾并行没啥意义(除非在做IO密集型任务).然后自从用上了32核128GB内存,看到 ...

  6. 并行计算综述————第一章 并行计算硬件平台:并行计算机

    并行计算综述 第一章 并行计算硬件平台:并行计算机 Ch1 并行计算与并行计算机结构模型 1.1多核处理器与线程级并行 1.何谓多核处理器? 将功能复杂的单一核处理器划分为若干个功能相对简单的多个处理 ...

  7. 并行计算复习————第一篇 并行计算硬件平台:并行计算机

    并行计算复习 第一篇 并行计算硬件平台:并行计算机 Ch1 并行计算与并行计算机结构模型 1.1多核处理器与线程级并行 1.何谓多核处理器? 将功能复杂的单一核处理器划分为若干个功能相对简单的多个处理 ...

  8. 查看服务器CPU的个数、CPU的核数、多核超线程数

    查看服务器CPU的个数.CPU的核数.多核超线程数 这里有几个概念: 1.一台物理机的物理CPU的个数 2.一个CPU上的核数 3.一个核上面支持的线程数 有下面的计算公式: 总核数 = 物理CPU个 ...

  9. matlab开启并行计算 核数_[续] Matlab 并行编程——多核 多线程

    刚开始接触matlab并行计算,以前旧电脑从不考虑这些的 小本i7四核八线程16G内存,64位win7和matlab 2012b,任务管理器显示有8个框 当用普通for循环,只有一个框接近100%,c ...

最新文章

  1. 系统架构设计:进程缓存和缓存服务,如何抉择?
  2. win10系统打开更新服务器失败怎么回事,Win10系统一直无法安装更新怎么办 Win10更新一直安装失败的3种解决方法...
  3. 21天精通python-21天学通Python 完整pdf扫描版[58MB]
  4. envi 文件 生成mat_JVM 内存分析工具 MAT 的深度讲解与实践——入门篇
  5. 日常生活小技巧 -- U盘拷贝时提示文件过大问题
  6. 苹果手机怎么编辑word文档_原创首发:编辑和修改PDF文档,将PDF转换为WORD技巧...
  7. PWA(Progressive Web App)入门系列:(四)Promise
  8. 报告:69% 的企业表示云技术有助于他们的疫情恢复
  9. 转网口显示未识别的网络_已有1700万用户携号转网 超99%用户1小时内办结
  10. 锁定计算机在哪里设置方法,怎样锁定电脑?如何设置电脑锁屏【步骤详解】
  11. 机器学习课程笔记【十一】- 因子分析
  12. RHCA红帽认证架构师考试分享
  13. 退出CrOS Factory,进入正常Chrome OS
  14. python打印列表元素_Python打印输出数组中全部元素
  15. 4399小游戏 十滴水 求解器(输出路径的bfs)
  16. 修怪曹操杀了华佗_拔剑-浆糊的传说_新浪博客
  17. mysql能不能存储图片_韩魔方视频app下载免费_电脑知识学习网
  18. http 404强制跳转到指定的网页地址
  19. 拷贝构造函数的三种使用情况
  20. 小友VUI SDK 初探

热门文章

  1. http://www.xueh188.top/index.php/archives/9/
  2. 太阳与彩虹---开始!
  3. pythonocc基础使用:1.读取/写入brep,iges,step,stl文件
  4. python 加法运算
  5. DynamicDet
  6. Djang制作简易母婴商场
  7. 通过js实现拖拽排序
  8. 分治法(03几何问题)凸包问题
  9. 0糖0卡0脂肪更健康还是骗智商
  10. TLDR,一个简易版的命令查询手册