首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Simulink- parfor (并行计算)仿真

Simulink- parfor (并行计算)仿真
EN

Stack Overflow用户
提问于 2016-06-10 11:41:10
回答 3查看 1.3K关注 0票数 3

今天我用问了一个关于并行计算的问题.因为我前面的问题有点混乱,而且代码中有很多不属于这个问题的东西。

我的问题是

我想在parfor-循环中模拟一些东西,而我的Simulink-模拟使用"From Workspace“块将工作空间中所需的数据集成到仿真中。因为某种原因它不起作用。

我的代码如下所示:

代码语言:javascript
复制
load DemoData
path = pwd;

apool = gcp('nocreate');
if isempty(apool)
    apool = parpool('local');
end

parfor k = 1 : 2
    load_system(strcat(path,'\DemoMDL'))
    set_param('DemoMDL/Mask', 'DataInput', 'DemoData')


       SimOut(k) = sim('DemoMDL')
    end

delete(apool);

我的模拟如下所示:

DemoData-File只是一个零(100,20)-Matrix。这是数据的一个例子。

现在,如果我模拟脚本,下面会出现错误消息:

错误

使用DemoScript时出错(第9行) “DemoMDL/Mask”中参数“DataInput”的错误评估

原因如下:

使用parallel_function>make_general_channel/channel_general (第907行)错误计算'DemoMDL/Mask‘中参数'DataInput’的错误使用parallel_function>make_general_channel/channel_general (第907行)未定义的函数或变量'DemoData‘。

你知道为什么会发生这种事吗?

奇怪的是,如果我试图访问parfor-循环中的“DemoData”,它就能工作。为了更好地使用该代码:

代码语言:javascript
复制
load DemoData
path = pwd;

apool = gcp('nocreate');
if isempty(apool)
    apool = parpool('local');
end

parfor k = 1 : 2
    load_system(strcat(path,'\DemoMDL'))
    set_param('DemoMDL/Mask', 'DataInput', 'DemoData')
    fprintf(num2str(DemoData))
end

delete(apool);

这是我的输出,没有模拟和显示数据。

>‘>’DemoScript 00000000000000000 .

非常感谢。这就是最初的问题,还有更多(不必要的)细节:

EarlierQuestion

EN

回答 3

Stack Overflow用户

发布于 2016-06-10 13:46:54

我怀疑问题是,当MATLAB对parfor循环进行预处理以确定哪些变量需要传递给工作人员时,它不知道DemoData是什么。在您的第一个示例中,它只是一个字符串,因此不会发送任何数据。在您的第二个示例中,它显式地了解了变量,因此确实传递了它。

您可以尝试使用,或者只是插入行

DemoData = DemoData;

parfor循环代码中。

票数 3
EN

Stack Overflow用户

发布于 2016-06-10 13:41:40

您的错误是因为工作人员无法访问客户端工作区中的DemoData。

使用Simulink运行并行仿真时,如果将数据移动到工作空间模型中,将更容易管理工作区中的数据。然后,每个工作人员都可以从其模型工作区访问这些数据。您可以加载MAT文件或编写MATLAB代码来初始化模型工作区中的数据。您可以使用Simulink模型菜单视图-> model >访问模型工作区。

还请参阅http://www.mathworks.com/help/simulink/ug/running-parallel-simulations.html中关于“解决工作区访问问题”的文档。

票数 2
EN

Stack Overflow用户

发布于 2022-09-09 15:38:22

你也可以移动线

代码语言:javascript
复制
load DemoData

parfor循环中。这样做,您可以确保数据在每个工作人员基础工作区中都是可用的,模型可以访问wich,而不是客户端工作区。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37747380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档