【问题标题】:Simulink-Simulation with parfor (Parallel Computing)Simulink-Simulation with parfor(并行计算)
【发布时间】:2016-06-10 11:41:10
【问题描述】:

我今天问了一个关于使用 Matlab-Simulink 进行并行计算的问题。由于我之前的问题有点乱,而且代码中有很多东西并不真正属于问题。

我的问题是

我想在 parfor-Loop 中模拟某些东西,而我的 Simulink-Simulation 使用“From Workspace”块将所需数据从工作区集成到模拟中。由于某种原因,它不起作用。

我的代码如下:

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 只是一个 zeros(100,20)-Matrix。这是 Data 的示例。

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

错误

使用 DemoScript 时出错(第 9 行)

在“DemoMDL/Mask”中评估参数“DataInput”时出错

原因:

Error using parallel_function>make_general_channel/channel_general (line 907)
Error evaluating parameter 'DataInput' in 'DemoMDL/Mask'
    Error using parallel_function>make_general_channel/channel_general (line 907)

    Undefined function or variable 'DemoData'.

现在你知道为什么会这样了吗?

奇怪的是,如果我尝试访问 parfor-Loop 内的“DemoData”,它会起作用。以该代码为例:

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);

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

'>>'演示脚本 00000000000000000 .....

非常感谢。这是带有更多(不必要)细节的原始问题:

EarlierQuestion

【问题讨论】:

    标签: matlab parallel-processing simulink parfor


    【解决方案1】:

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

    您可以尝试使用模型工作区,或者只是插入行

    DemoData = DemoData;

    parfor 循环代码中。

    【讨论】:

      【解决方案2】:

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

      使用 Simulink 运行并行仿真时,如果将数据移至模型工作区,则可以更轻松地管理工作区中的数据。然后每个工作人员都可以从其模型工作区访问这些数据。您可以加载 MAT 文件或编写 MATLAB 代码来初始化模型工作区中的数据。您可以使用 Simulink 模型菜单 View->Model Explorer->Model Workspace 访问模型工作区。

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

      【讨论】:

        猜你喜欢
        • 2016-10-11
        • 1970-01-01
        • 1970-01-01
        • 2017-03-04
        • 2017-09-18
        • 1970-01-01
        • 2016-04-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多