主要内容

万博1manbetxSimulink.sdi.WorkerRun.getLatest

类:万博1manbetxSimulink.sdi.WorkerRun
包:万博1manbetxSimulink.sdi

为最近的运行创建工作运行

语法

runnobj =万博1manbetx Simulink.sdi.WorkerRun.getLatest

描述

runObj= 万博1manbetxSimulink.sdi.WorkerRun.getLatest创建一个万博1manbetxSimulink.sdi.WorkerRun对象用于并行计算工具箱™工作线程上的最新运行。

输出参数

全部展开

万博1manbetxSimulink.sdi.WorkerRun对象访问来自最新并行计算工具箱工作线程运行的数据。

例子

全部展开

这个例子执行模型的并行模拟slexAircraftExample使用不同的输入过滤器时间常数,并展示了使用模拟数据检查器编程接口访问数据的几种方法。

设置

首先确保“模拟数据检查器”为空,并且“并行计算工具箱”支持配置为自动导入在本地工作者上创建的运行。万博1manbetx然后,创建在每个模拟中使用的过滤器参数值向量。

确保模拟数据检查器为空,PCT支持为万博1manbetx%启用。万博1manbetxSimulink.sdi.clear Simulink.sdi万博1manbetx.enablePCTSupport (“本地”定义Ts值Ts_vals = [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1];

初始化并行工作者

如果您还没有本地工作者池,可以使用gcp创建一个本地工作者池来运行并行模拟。在一个spmd代码块,加载slexAircraftExample建模并选择要记录的信号。避免数据并发性问题使用sim卡parfor,为每个工作人员创建一个临时目录,以便在模拟期间使用。

P = gcp;
使用“本地”配置文件启动并行池(parpool)…连接4个工人。
spmd加载系统并选择要记录的信号load_system (“slexAircraftExample”) 万博1manbetxSimulink.sdi.markSignalForStreaming (“slexAircraftExample /试点”, 1“上”) 万博1manbetxSimulink.sdi.markSignalForStreaming ('slexAircraftExample/飞机动力学模型'4“上”在每个worker上创建临时目录workDir = pwd;addpath(workDir) tempDir = tempname;mkdir (tempDir) cd (tempDir)结束

运行并行模拟

使用parfor同时进行七个模拟。选择的值Ts对于每个模拟,并修改值Ts在模型工作区中。然后,运行模拟并构建数组万博1manbetxSimulink.sdi.WorkerRun对象使用模拟数据检查器访问数据。后parfor循环,使用另一个spmd段从工作目录中删除临时目录。

parfor指数= 1:7选择Ts的值Ts_val = Ts_vals(索引);更改过滤器时间常数并模拟modelWorkspace = get_param(“slexAircraftExample”“modelworkspace”);modelWorkspace.assignin (“t”Ts_val) sim卡(“slexAircraftExample”为每个模拟创建一个工作运行workerRun(index) = 万博1manbetxSimulink.sdi.WorkerRun.getLatest结束spmd移除临时目录cd (workDir)删除文件夹(tempDir,“年代”) rmpath (workDir)结束

从并行模拟输出中获取数据集对象

getDataset方法将数据从WorkerRun成一个数据集对象,以便您可以轻松地进行后期处理。

ds(7) = 万博1manbetxSimulink.SimulationData.Dataset;a = 1:7 ds(a) = workerRun(a).getDataset;结束ds (1)
ans Bl万博1manbetxockPath = Simulink.SimulationData.Dataset”2元素名称  __________ ________________________________________ 1 (1 x1信号)α,rad……rcraftExample/Aircraft Dynamics Model 2 [1x1 Signal] Stick slexAircraftExample/Pilot -使用大括号{}访问、修改或添加使用索引的元素。

从并行仿真输出中获取DatasetRef对象

对于大数据工作流,使用getDatasetRef方法引用与WorkerRun

b = 1:7 datasetRef(b) = workerRun(b).getDatasetRef;结束datasetRef (1)
ans = datasetef与属性:名称:'运行3:slexAircraftExample'运行:[1×1 Simulink.sdi。万博1manbetx执行命令numElements: 2

在仿真数据检查器中处理并行仿真数据

您也可以创建本地运行对象,使用模拟数据检查器API分析和可视化您的数据。此示例添加一个标记,指示每次运行的过滤器时间常数值。

c = 1:7运行(c) = workerRun(c).getLocalRun;Ts_val_str = num2str(Ts_vals(c));说明:strcat('Ts = ', Ts_val_str);(c)。Description = desc;(c)。Name = strcat('slexAircraftExample运行Ts=', Ts_val_str);结束

清理工作存储库

清理工作人员使用的文件,为希望在工作人员池上运行的其他模拟释放磁盘空间。

万博1manbetxSimulink.sdi.cleanupWorkerResources

版本历史

在R2017b中引入