主要内容

金宝appSimulink.sdi.enab金宝applePCTSupport

控制当导入的数据并行模拟仿真数据检查员

描述

例子

金宝appSimulink.sdi.enab金宝applePCTSupport (模式)配置数据从平行进口仿真数据检查员工人根据指定的模式模式。您可以配置仿真数据从本地工人只检查员进口数据,或数据从本地和远程的工人。你也可以设置为手动模式,它允许您手动运行导入检查员使用模拟数据金宝appSimulink.sdi.sendWorkerRunToClient函数。默认情况下,仿真数据督察是配置为手动导入模式。

例子

全部折叠

配置仿真数据检查并行工人支持导入输出自动从本地和远程的工人。金宝app

金宝appSimulink.sdi.enab金宝applePCTSupport (“所有”)

防止输出并行计算工具箱™工人从仿真数据自动导入到检查员,指定手动模式的支持。金宝app

金宝appSimulink.sdi.enab金宝applePCTSupport (“手动”)

这个例子展示了如何使用金宝appSimulink.sdi.sendWorkerRunToClient发送运行使用并行工人手工仿真数据创建的检查员。

设置

这个例子中几个模拟运行vdp模型中,不同的值,μ。并行仿真设置,定义一个向量的μ模拟值和配置数据检查手册并行计算工具箱支持。金宝app

%启用手动并行计算工具箱支持金宝app金宝appSimulink.sdi.enab金宝applePCTSupport (“手动”);%选择几个μ值MuVals = (1 2 3 4);

初始化并行的工作

使用parpool(并行计算工具箱)开始的四个平行的工人。这个例子中调用parpool里面一个if语句所以你只创建一个平行池如果你不已经有一个了。您可以使用spmd(并行计算工具箱)运行初始化代码所有工人。例如,加载vdp模型和选择我们可以发送信号记录运行检查员在客户机上MATLAB仿真数据。为了避免数据模拟时并发问题sim卡parfor每个工人,创建一个临时目录中。模拟完成后,另一个spmd块删除临时目录。

gcp (p =“nocreate”);如果isempty (p) parpool (4);结束
开始平行池(parpool)使用“本地”概要文件…连接到4工人。
spmd%加载系统并选择信号记录load_system (“vdp”)S金宝appimulink.sdi.markSignalForStreaming (“vdp / x1”,1“上”)S金宝appimulink.sdi.markSignalForStreaming (“vdp / x2”,1“上”)%为仿真对工人创建临时目录workDir = pwd;目录(workDir) tempDir = tempname;mkdir (tempDir) cd (tempDir)结束

运行并行模拟与parfor

从并行流数据工人检查员仿真数据,你必须运行并行模拟使用parfor(并行计算工具箱)。每个工人运行vdp模拟的不同的值μ。金宝app仿真软件不能访问的内容parfor循环,所以变量MuVal定义在工人的工作空间,在那里vdp模型可以看到,使用assignin

parfor(指数= 1:4)%设置值μ的工人的基本工作空间assignin (“基地”,“MuVal”MuVals(指数));%修改模型和模拟中的μ的值set_param (的vdp /亩,“获得”,“MuVal”)sim卡(“vdp”)

访问数据和发送到客户机MATLAB运行

可以使用模拟数据检查员编程接口的工人一样你会在客户端MATLAB。这个示例创建了一个金宝appSimulink.sdi.Run对象和高度的价值μ用于仿真的标签财产。

%将元数据附加到运行id = S金宝appimulink.sdi.getAllRunIDs;lastIndex =长度(IDs);runID = 金宝appSimulink.sdi.getRunIDByIndex (lastIndex);parRun = 金宝appSimulink.sdi.getRun (runID);parRun。标签= strcat(“μ= 'num2str (MuVals(指数)));%将运行检查员在客户机上MATLAB仿真数据金宝appSimulink.sdi.sendWorkerRunToClient结束

关闭临时目录并查看检查员在仿真运行数据

使用另一个spmd部分删除临时目录上创建工人们一旦模拟完成。在每个仿真,金宝appSimulink.sdi.sendWorkerRunToClient从所有的工人导入到检查员的模拟数据。您可以查看数据并检查运行属性的值μ期间使用模拟。

spmd%删除临时目录cd (workDir)删除文件夹(tempDir,“年代”)rmpath (workDir)结束金宝appSimulink.sdi.view

这个例子执行并行模型的模拟slexAircraftExample用不同的输入滤波器时间常数和显示多种方式访问数据使用模拟数据检查员编程接口。

设置

首先确保仿真数据督察是空的和并行计算工具箱支持配置为自动导入创建运行在本地工人。金宝app然后,创建一个向量在每个模拟滤波器参数值使用。

%确保检查员仿真数据为空,和PCT的支持金宝app%启用。金宝appSimulink.sdi。明确Simu金宝applink.sdi.enablePC金宝appTSupport (“本地”)%定义Ts值Ts_vals = (0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1];

初始化并行的工作

使用gcp创建一个本地工人池运行并行模拟如果你不已经有一个了。在一个spmd代码块,加载slexAircraftExample模型和选择信号记录。为了避免数据并发性问题sim卡parfor,创建一个临时目录中为每个工人在模拟使用。

p =质量;
开始平行池(parpool)使用“本地”概要文件…连接到4工人。
spmd%加载系统并选择信号记录load_system (“slexAircraftExample”)S金宝appimulink.sdi.markSignalForStreaming (“slexAircraftExample /试点”,1“上”)S金宝appimulink.sdi.markSignalForStreaming (“slexAircraftExample /飞机动力学模型”4“上”)%每个工人上创建临时目录workDir = pwd;目录(workDir) tempDir = tempname;mkdir (tempDir) cd (tempDir)结束

运行并行模拟

使用parfor七个模拟并行运行。选择的值Ts对于每一个仿真,和修改的值Ts在模型中工作区。然后,运行仿真,建立数组金宝appSimulink.sdi.WorkerRun对象来访问数据和仿真数据检查员。后parfor循环,使用另一个spmd段去除来自工人的临时目录。

parfor指数= 1:7Ts %选择值Ts_val = Ts_vals(指数);%改变滤波器时间常数和模拟modelWorkspace = get_param (“slexAircraftExample”,“modelworkspace”);modelWorkspace.assignin (“t”Ts_val) sim卡(“slexAircraftExample”)%为每个模拟创建一个工人运行workerRun(指数)= Simu金宝applink.sdi.WorkerRun.getLatest结束spmd%删除临时目录cd (workDir)删除文件夹(tempDir,“年代”)rmpath (workDir)结束

从并行仿真得到的数据集对象输出

getDataset将数据从一个方法WorkerRun成一个数据集所以你可以很容易地后处理对象。

ds (7) =金宝app Simulink.SimulationData.Dataset;a = 1:7 ds (a) = workerRun .getDataset(一个);结束ds (1)
ans = 金宝appSimulink.SimulationData。数据集'' with 2 elements Name BlockPath __________ ________________________________________ 1 [1x1 Signal] alpha, rad ...rcraftExample/Aircraft Dynamics Model 2 [1x1 Signal] Stick slexAircraftExample/Pilot - Use braces { } to access, modify, or add elements using index.

从并行仿真得到DatasetRef对象输出

对于大数据工作流,使用getDatasetRef方法参考相关的数据WorkerRun

b = 1:7 datasetRef (b) = workerRun (b) .getDatasetRef;结束datasetRef (1)
ans = DatasetRef属性:名称:“运行3:slexAircraftExample”运行:[1×1 Simulink.sdi。金宝app运行]numElements: 2

督察过程并行模拟数据仿真数据

您还可以创建本地运行对象来分析和可视化数据使用仿真数据检查器API。这个示例添加一个标签显示为每个运行滤波器时间常数的值。

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

清理人员存储库

清理工人所使用的文件释放磁盘空间为其他模拟你想运行在你的工人池中。

金宝appSimulink.sdi.cleanupWorkerResources

输入参数

全部折叠

模拟数据检查数据导入模式数据登录平行工人,指定为这些选项之一:

  • “手动”——不自动导入创建运行在并行工人。您可以手动导入创建运行在并行工人使用金宝appSimulink.sdi.sendWorkerRunToClient函数。

  • “本地”——自动导入创建运行在本地工人。

  • “所有”——自动导入创建运行在本地和远程的工人。

数据类型:字符|字符串

选择功能

您可以修改仿真数据的并行计算支持模式检查员通过选择金宝app首选项>平行

版本历史

介绍了R2017b

全部展开