金宝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首选项>平行。
版本历史
介绍了R2017bR2020a:“没有”
输入是不再支持金宝app
从R2020a,金宝appSimulink.sdi.enab金宝applePCTSupport
函数不再支持金宝app“没有”
输入选项。禁用自动登录的数据并行工人导入仿真数据检查,使用“手动”
选择。
R2020a:逻辑输入将被忽略
从R2020a,金宝appSimulink.sdi.enab金宝applePCTSupport
逻辑输入函数忽略了。在脚本中指定的逻辑输入金宝appSimulink.sdi.enab金宝applePCTSupport
函数,取代0
或假
输入的“手动”
输入选项和1
或真正的
输入的“所有”
选项来实现等效的行为。
R2018a:输入值已经改变了
从R2018a,金宝appSimulink.sdi.enab金宝applePCTSupport
输入值更改为:
“本地”
“没有”
“所有”
“手动”
在R2017b,金宝appSimulink.sdi.enab金宝applePCTSupport
函数接受一个逻辑输入启用或禁用仿真数据检查支持数据并行模拟登录。金宝app
真正的
或1
支持自动导入数据金宝app从所有平行工人到检查员的模拟数据。在R2018a,使用
“所有”
选择相同的行为。您还可以使用新的“本地”
输入你想要自动导入数据时只从本地工人。假
或0
禁用登录支持导入所有数据并金宝app行的工人。在R2018a,使用
“没有”
选择相同的行为。您还可以使用新的“手动”
选择当您想要分析数据确定您想要导入的工人个人遇到的仿真数据检查员平行的工人。
Apri esempio
如果dispone di una versione modificata di questo esempio。Desideri aprire questo esempio con le modifiche星期二吗?
第一MATLAB
海脂肪clic苏联合国collegamento切corrisponde questo第一MATLAB:
Esegui il第一inserendolo所以nella隙缝di第一MATLAB。我浏览器web非supportano金宝app comandi MATLAB。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。