Simulin万博1manbetxk上的家伙

万博1manbetxSimulink与基于模型的设计

并行模拟模型的技巧

更新:在MATLAB中R2017a的功能PARSIM介绍了。为了更好地体验并行模拟模型,我们建议使用PARSIM而不是parfor中的SIM。查看最近的博客文章用parsim并行模拟模型很容易更多细节。

---------------

正如我在本博客中多次提到的,使用并行计算工具箱可以帮你节省很多时间。今天我想分享一些技巧来帮助您开始并行运行模拟。

串口参数扫描

在并行之前,让我们先看看模拟模型的标准循环。有很多方法可以设置MATLAB和Simulink来进行参数扫描。我看到的最常见的简单设置如下所示:万博1manbetx

  • 使用以下命令加载模型加载系统
  • 使用脚本初始化MATLAB基本工作区
  • 定义一个要扫过的值向量
  • 在循环中,索引到参数向量中
  • 模拟使用sim卡

对于本例,我们使用简单的质量-弹簧-阻尼模型进行仿真。

拟模拟模型

我们有一个初始化脚本,初始化三个变量。

初始化脚本

我们用这个代码做参数扫描。

连续运行

万博1manbetx仿真软件和透明度

在模拟内部模型时parfor,关于parfor如何管理变量,有一些复杂的问题需要考虑parfor循环中变量的分类透明度

让我用几句话重述一下您将在这些文档页面中学到的重要课程:

  • 并行工作者是独立的MATLAB会话,parfor向其发送代码和数据进行处理。
  • 为了提高效率,parfor将变量分类为许多类别,并且只发送它认为需要的变量
  • 发送给工人的代码不是在他们的基本工作区中执行,而是在一个特殊的函数工作区中执行
  • Simulink模型所需的变量对parfor万博1manbetx不“可见”,因此不会自动发送给工作人员
  • 默认情况下,Simuli万博1manbetxnk在基本工作区中查找所需的变量

因为这些事实,使simulink运行在parfor内部需要一些万博1manbetx技巧。让我们看看在parfor内部模拟模型的两种技术。

基本工作空间中的参数扫描

在第一种技术中,我们通过违反透明使用来抵消Simulink不透明的事实万博1manbetx埃瓦林和/或指派.是的…我喜欢危险的生活!

为了尽可能地提高效率,我们首先使用spmd语句将模型所需的数据放在worker的基本工作区中,该数据在参数扫描期间保持不变sim卡

基本工作空间的平行扫描

在功能工作区中的参数扫描

在第二种技术中,我们做相反的事情。我们通过在函数工作区中做所有的事情来隐藏Si万博1manbetxmulink不透明的事实。

函数工作区中的并行扫描

其中,函数调用sim将SrcWorkspace参数设置为指向当前工作区:

调用sim

关于未来的注释

请放心,我们正在积极工作的功能,使模拟模型内部parfor在未来更容易。然而,由于我们不幸地被迫生活在现在,我想分享一些这些复杂的东西可能会帮助你们中的一些人建立他们的环境来并行地模拟模型。

现在轮到你了

尝试设置你的模型并行模拟,让我们知道如何通过留下一个这里的评论

|

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。