主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

parfevalOnAll

在并行池中的所有工作单元上异步运行函数

说明

F = parfevalOnAll(p,fcn,numFcnOut,X1,...,Xm) 请求在并行池 fcn 中的所有工作单元上异步执行函数 pparfevalOnAll 函数使用输入参量 fcn 评估每个工作单元上的 X1,...,Xm 并返回 numFcnOut 输出参量。当所有工作单元都完成运行 fcn 时,您可以从 Future 对象 F 中获取结果。

F = parfevalOnAll(fcn,numFcnOut,X1,...,Xm) 请求在当前并行池中的所有工作单元上异步执行。如果不存在池,并且启用了自动池创建,MATLAB® 将启动一个新的并行池。

注意

如果要使用 clear,请使用 parfevalOnAll 而不是 parforspmd。这保留了工作区透明度。请参阅确保 parfor 循环或 spmd 语句的透明度

示例

示例

全部折叠

您可以使用 parfevalOnAll 函数对所有工作单元运行清理函数,同时保留工作区透明度。

例如,为了在删除用于分发仿真的临时文件夹之前卸载 mex 文件,请使用 parfevalOnAll 在所有工作单元上运行 clear 函数。因为 clear 具有 0 输出参量,所以将 0 指定为 parfevalOnAllnumFcnOut 输入参量。

parfevalOnAll(@clear,0,"mex");

要关闭所有工作单元的所有 Simulink 模型窗口,请使用 bdclose 函数运行 parfevalOnAll

p = gcp; % Get the current parallel pool
f = parfevalOnAll(p,@bdclose,0,"all");

在这两种情况下,等待完成并使用 fetchOutputs 函数验证是否成功。即使您不请求输出参量,您也可以对 future 使用 fetchOutputs 来检查来自工作单元的错误。

fetchOutputs(f)

输入参数

全部折叠

并行工作单元池,指定为 parallel.Pool 对象。您可以使用 parpool 函数创建一个并行池。

在工作单元上运行的函数,指定为函数句柄。

示例: fcn = @sum

数据类型: function_handle

从函数 fcn 请求的输出参量的数量,指定为非负整数。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

输入参量,指定为以逗号分隔的变量或表达式列表。并行池工作单元将这些参量输入到函数 fcn

输出参量

全部折叠

Future,以 parallel.FevalOnAllFuture 对象形式返回,代表所有并行工作单元上 fcn 的执行并保存其结果。使用 fetchOutputs 收集结果。

扩展功能

全部展开

版本历史记录

在 R2013b 中推出

全部展开