【并行算法】并行循环

本文介绍了如何通过Matlab的parfor循环实现并行计算,以提高程序执行效率。parfor将循环任务分配给多个worker执行,确保结果一致性的同时,减少了执行时间。文中通过实例展示了parfor与串行循环在结果、执行顺序和时间上的比较,揭示了并行计算的优势。
摘要由CSDN通过智能技术生成

一、循环的并行性

在主要的程序结构中,循环结构一般是比较耗时的部分。如果可以并行执行循环,那么可以很大程度上提高Matlab程序的执行效率

对于次数确定的循环(for循环),如果循环的‘计数模块’对于单次循环是独立的(计算结果与循环体的执行顺序无关),那么理论上可以将整个循环拆分成几个子循环,然后将子循环的结果合并。

编写Matlab并行程序时,有两种模式。利用Matlab提供的并行计算模块;利用Matlab提供的通用并行程序设计方法。

Matlab提供的并行计算模块,除了parfor和spmd外,还提供了for-drange、pmode、dfeval和dfevalasync等标准并行结构。

二、parfor循环的基本原理

由for关键字表示的循环可以通过parfor关键字进行并行。Matlab遇到parfor关键字时表示循环采用并行方式执行。

parfor关键字并行执行for循环时,会将for循环划分为若果部分,每部分交由不同的worker执行。循环次数能够被worker数量整除时,循环被平均划分;否则某些worker会执行较多的循环次数。

worker是一个逻辑上的概念,指能并行运行代码的Matlab端。对于微机,单个处理器可以运行一个或多个worker。

注意:

1).parfor应用的前提是循环能够分解成互不相关的分段;

2).parfor并行时会占用计算机资源进行必要的数据通信(循环的效率与循环的长度、需要传输的数据量有关)

默认情况下,Matlab只启动一个进程。Matlab执行parfor之前,需要打开并行计算池。

Matlab并行计算池管理若干worker,每个worker都

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值