Matlab的parfor的使用条件 « 阅微堂 var duoshuoQuery = {"short_name":"zhiqiang","sso":{"login":"http:\/\/zhiqiang.org\/blog\/wp-login.php?action=duoshuo_login","logout":"http:\/\/zhiqiang.org\/blog\/wp-login.php?action=logout&_wpnonce=7821c15e3b"},"theme":"default","stylePatch":"wordpress\/"}; duoshuoQuery.sso.login += '&redirect_to=' + encodeURIComponent(window.location.href); duoshuoQuery.sso.logout += '&redirect_to=' + encodeURIComponent(window.location.href); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "//hm.baidu.com/hm.js?4aeb7949cc92dd0d749965d396a00d2f"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _speedMark = new Date();

Matlab的parfor的使用条件

作者:张志强, 发表于

parfor适用于

  • 大量的简单计算的循环。
  • 大量或少量的复杂计算的循环。

不建议在少量的简单计算的循环中使用parfor,因为parfor本身有计算的损耗。

同时有很多情况不能使用parfor,此时Matlab会报错。那到底什么情况下可以用什么情况下不能用呢?这需要从Matlab的parfor循环机制讲起。Matlab的parfor循环内的变量可分为五大类,parfor对这五类变量有不同的处理方式。如果Matlab无法对parfor内的某变量进行归类,或者该变量不满足该类别变量的要求,就会导致出错,此时便不能使用parfor。

具体而言,Matlab的parfor循环内的变量可分为以下五类:

matlab parfor 变量分类示意图

matlab parfor 变量分类示意图

1、Loop变量,顾名思义无需多解释。一个限制是循环内不能对循环变量再次赋值:

parfor i = 1:ni = i + 1; % not alloweda(i) = i;
end

2、Sliced变量,是指每个循环只访问该变量的特定位置,具体访问位置跟Loop变量有关。一个比较简单的理解方式是,循环访问变量的位置必须是「固定」「不重合」的。如果该变量是输出变量(即在循环内被赋值),访问还必须是「连续」的(此时只能是Loop变量再加固定的平移量)。该变量不能在循环内动态变换大小。因此有以下的可行以及不可行的情况:

parfor i = 1:nx(i) = a(2*i*i);  % allowed;y(i+2) = a(i) + b(i+1); % allowed;c(i+1) = c(i) + 1; % not allowed;z(2*i) = i; % not allowed;a(i) = [];  % not allowed;a(end+1) = i; % not allowed
end

3、Broadcast变量,是指外部变量,且在循环内未被重新赋值。

4、Reduction变量,该变量遍历所有循环,并且跟运行结果无关。Matlab会自动识别该类变量,并正确输出结果。如下例所示,matlab会按正确顺序输出x2:

x2 = [];
n = 10;
parfor i = 1:nx2 = [x2, i];i,
end

有意思的是,上面这段代码里,i并不一定按照1到10的顺序输出,但x2的结果却必然是1到10。

5、temporary变量,是指循环内的临时变量,且该变量不会通过Loop变量引用(否则该被归类到Sliced变量)。

Q.E.D.


上一篇:Matlab打开和关闭时自动执行的脚本,2014年7月16日
Matlab在启动时会自动运行脚本startup.m。在这个脚本里可以自动修改当前目录,修改显示方式等等。比如 cd Z:/ format compact format short g 同样,Matlab在退

下一篇:使用Matlab的函数包实现命名空间,2014年8月16日
在写Matlab程序时,函数的命名方式让人头疼。使用+mypack的方式可以创建函数包,实现函数命名空间。这种方式函数调用的开销为1秒钟10万次,比普通方式要慢20倍。


if (typeof DUOSHUO !== 'undefined') DUOSHUO.EmbedThread('.ds-thread');

  • 支持使用微薄、人人网和QQ的账户登陆进行评论。由各自网站直接认证,不会泄露你的密码。
  • 登陆后可选择分享评论到所绑定的社交网络,如微薄、人人和QQ空间。
  • 评论提交后无法修改。如需修改,请删除原评论再重新提交。
  • 评论支持LaTeX代码,行内公式请用\(a+b=c\),行间公式请用\[a+b=c\]。公式只支持英文字符。
http://www.taodudu.cc/news/show-6386687.html

相关文章:

  • 易居住房平台
  • 全屋智能--智慧家庭新风向
  • 云蹦迪、云追星、云表白…疫情下的情人节怎么过?
  • 搭建一个基于flask和redis的代理池(proxy pool)
  • “宅”是种生活方式还是种病?
  • 如何流畅远程登录另一台电脑(尽可能流畅的远程桌面连接设置)
  • open和with open的用法,你弄明白了吗?
  • OpenLooKeng
  • open与fopen
  • Error opening session. Cause: java.lang.NullPointerException
  • open()
  • OPEN(二)
  • OpenFegin(基础)
  • 什么是OPen Flow?
  • fopen和open的区别
  • with open相关用法
  • with open()的使用
  • open()和with open() as的区别
  • with open()用法
  • 我的漂亮老婆!
  • 老婆为什么是别人的好?
  • 我的文章让老婆看到了……
  • 老婆的最后一条短信----(真的很感人)
  • 老婆最后一条信息
  • 老婆的最后一条信息
  • 我的老婆
  • 感人:留给老婆下任老公的信
  • 王志文神秘老婆是昔日上海名模陈坚红(图)
  • 转贴一下 老婆日记

CopyRight © 淘嘟嘟版权所有

Matlab的parfor的使用条件相关推荐

  1. matlab并行计算 parfor

    CoreNum=6; %设定机器CPU核心数量 parpool(CoreNum); Starting parallel pool (parpool) using the 'local' profile ...

  2. matlab 并行计算 parfor

    转自: http://www.xiongfuli.com/%E5%B9%B6%E8%A1%8C%E8%AE%A1%E7%AE%97/2016-05/Matlab-Parfor.html 在Matlab ...

  3. matlab parfor不能用,matlab中parfor函数

    google中输入matlab parfor,你将得到足够多的资料来了解这是个什么东西,如果你耐心,建议去研究研究matlab 帮助中对parfor的说明.这里我只大概讲一下parfor.parfor ...

  4. Matlab编程与数据类型 -- 分支条件选择语句if/end

    本微信图文详细介绍了Matlab中if/end分支条件选择语句.

  5. Matlab的parfor并行编程

    Matlab的parfor并行编程 通常消耗最多计算资源的程序往往是循环.把循环并行化,或者优化循环体中的代码是最常用的加快程序运行速度的思路. Matlab提供了parfor关键字,可以很方便的在多 ...

  6. matlab代码:计及条件风险价值的电-气综合能源系统能量-备用分布鲁棒优化

    matlab代码:计及条件风险价值的电-气综合能源系统能量-备用分布鲁棒优化 关键词:wasserstein距离 CVAR条件风险价值 分布鲁棒优化 电-气综合能源 能量-备用调度 主要内容:代码主要 ...

  7. 【Matlab】parfor并行运算如何显示进度条?

    1.Introduction 随着时间的流逝,逐渐从 Matlab 小白成长为大白,以前都是迭代都是 for 循环,今天由于循环需要时间太久了,于是搜了下,Matlab 居然还可以并行运算!而且语法和 ...

  8. matlab取矩阵满足条件,[MATLAB]矩阵中寻找满足条件的元素

    参见张志涌精通matlab >> A=randn(3,4) A = -0.5883 0.1139 -0.0956 -1.3362 2.1832 1.0668 -0.8323 0.7143 ...

  9. Matlab编程语言(五)--条件语句

    条件语句可用于在运行时选择要执行的代码块.最简单的条件语句为if语句.例如: 通过使用可选关键字elseif,else,即if语句可以包含嵌套.例如: 再者,针对一组已知值测试相等性时,可以使用swi ...

最新文章

  1. html 显示消息数量,html实现消息按钮上的数量角标的实例详解
  2. 使用cmake组建跨平台项目
  3. C#并行开发_Thread/ThreadPool, Task/TaskFactory, Parallel
  4. 关于css选择器的问题 + * ~这三个有什么区别
  5. python任务调度框架_Python任务调度模块APScheduler
  6. Java怎么在if输出中进行运算_磕代码:c/c++/java:输入三个整数,输出运算结果;if条件句的使...
  7. Window open()使用方法
  8. html5 绘制图形,HTML5绘制几何图形
  9. unix环境高级编程基础知识之第二篇(3)
  10. erp 维护费 要交吗_erp系统每年都要缴费吗
  11. 99%的人都会遇到的Python “用户环境”问题
  12. 2018 我所了解的 Vue 知识大全(一)
  13. 使用grafana4的alert功能
  14. java编译提示错误信息_java常见编译错误信息
  15. Python中的注释和文档
  16. 什么是UV贴图和展开?游戏建模纯干货,UV的详细解释,不懂得赶紧看过来!
  17. windows7副本不是正版问题
  18. 【转】数字会议系统功能之解析
  19. linux搭建软路由,用 Alpine Linux 搭建软路由
  20. Cell Reports:青年发育过程中脑血流与功能磁共振ALFF耦合

热门文章

  1. SOLOV2源码解析
  2. 服务器选择SATA还是SCSI
  3. (一)CDN技术分类概述
  4. 电商项目中的经典问题
  5. ”linux学习之路” (感觉写的很好,更像是网络编程学习路线图)
  6. 加多宝二次创业五周年:解锁品牌持续增长密码
  7. 数据结构python版 答案,中国大学 MOOC_数据结构与算法Python版_章节测验答案
  8. T检验中有哪些指标?
  9. CentOS 7 查看系统时间、更新系统时间 、修改系统时间
  10. 20210829-基于CentOS7/Linux配置ssh免密登录