异步并行编程
使用
parfeval
在后台计算函数您可以使用 parfeval
在后台计算函数,而无需等待它完成。在许多情况下,提前退出 for 循环是很方便的。例如,在优化过程中,当结果足够好时,您可以提前停止循环。您可以使用 parfeval
或 parfevalOnAll
对一个或所有并行池工作单元执行此操作。如果您希望能够绘制中间结果,这样做可能很有用。使用 parfeval
或 parfevalOnAll
与使用 parfor
不同,因为使用后者需要等待循环完成。
您可以结合使用 send
和 poll
,通过数据队列发送和轮询来自不同工作单元的消息或数据。使用 afterEach
可添加一个从数据队列接收到新数据时要调用的函数。
使用 afterEach
和 afterAll
可在 Future
数组的每个或所有元素都完成后自动调用函数。该数组可以包含由 parfeval
、parfevalOnAll
、afterEach
或 afterAll
返回的 Future。
函数
主题
异步并行编程快速入门
- 使用 parfeval 在后台计算函数
尽早摆脱优化循环并收集可用的结果。 - 使用 afterEach 和 afterAll 运行回调函数
在并行池中Future
对象运行完成后自动运行函数。 - 查询及撤销 parfeval future
这个示例展示如何查询parfeval
future 的状态并取消它们。 - 使用 afterEach 和 afterAll 异步更新用户界面
此示例显示如何在计算完成时更新用户界面。当您使用parfeval
将计算卸载给工作单元时,工作单元执行计算时所有用户界面都会做出响应。您可以使用waitbar
来创建一个简单的用户界面。 - 在 spmd、parfor 和 parfeval 之间选择
将spmd
与其他并行计算功能(例如parfor
和parfeval
)进行比较和对比。
应用
- 使用 parfeval 进行参数扫描时的绘图
此示例显示如何使用parfeval
执行并行参数扫描,并在使用DataQueue
对象进行计算时发回结果。 - 与后期处理并行执行网络摄像头图像采集
此示例展示了如何并行执行网络摄像头的帧采集和数据后处理。 - 执行图像采集和并行图像处理
此示例展示了如何从网络摄像头执行图像采集并并行进行数据并行处理。 - 使用可轮询数据队列向工作单元发送消息
此示例展示了如何在使用parfeval
进行异步函数评估时,使用可轮询数据队列向工作单元发送数据或指令。 (自 R2025a 起) - 使用可轮询数据队列在工作单元之间传输数据
此示例展示了如何在使用parfeval
进行异步函数评估时,使用可轮询数据队列在工作单元之间传输数据。 (自 R2025a 起) - 并行训练深度学习网络 (Deep Learning Toolbox)
此示例说明如何在本地计算机上运行多个深度学习试验。使用此示例作为模板,您可以修改网络层和训练选项,以满足您的具体应用需要。无论您有一个还是多个 GPU,都可以使用这种方法。如果您只有一个 GPU,网络会在后台逐个进行训练。本示例中的方法使您能够在进行深度学习试验时继续使用 MATLAB®。 - 使用 parfeval 训练多个深度学习网络 (Deep Learning Toolbox)
此示例说明如何使用parfeval
对深度学习网络的网络架构深度执行参数扫描,并在训练期间检索数据。 - 接收有关工作单元的通信
此示例展示了如何在工作单元上设置数据队列以接收数据。 (自 R2023b 起) - 以交互方式并行导入和处理数据
此示例显示如何在交互式并行池中同时导入和处理数据。为了简化您的工作流,您可以在同一个并行池上重叠parfeval
和parfor
计算。 (自 R2023b 起) - 对池工作单元执行数据采集和处理
此示例展示了如何在交互式并行池上实现并行数据采集和处理管道。管道使用PollableDataQueue
对象来促进并行池中工作单元之间的数据传输。 (自 R2025a 起) - 并行控制硬件和采集数据
此示例展示了如何同时控制硬件并在并行工作单元上执行数据采集。 (自 R2025a 起)