首页 文章

Simulink编码器在加速模型上的性能改进

提问于
浏览
1

我想知道是否有一些经验,使用Simulink Coder在(快速)加速器模式下运行模型生成模型可以获得多少性能?

例如,它与未加速模型到加速模型的显着改进相比如何?

我知道这有点模糊,可能取决于模型的细节,但我会对示例数字感到满意 .

1 回答

  • 2

    我不知道你是否真的会找到有用的速度提升轶事,因为你的结果将高度依赖于你自己的实现 .

    也就是说,How Acceleration Modes Work上的以下参考可能对您有用 .

    如此链接所述......

    加速器模式生成代码并将代码链接到C-MEX S功能 . Simulink使用此加速目标代码执行模拟......模型方法与Simulink软件分开,是Acceleration目标代码的一部分 . C-MEX S-function API与Simulink软件通信,MEX API与MATLAB通信 . 目标代码在与MATLAB和Simulink相同的过程中执行 .

    该链接继续描述快速加速,因此:

    Rapid Accelerator模式从您的模型创建Rapid Accelerator独立可执行文件 . 此可执行文件包括求解器和模型方法,但它位于MATLAB和Simulink之外 . 它使用外部模式(请参阅主机/目标通信)与Simulink进行通信 .

    (请注意,实际链接有一些很好的图表,有助于说明这种架构) .

    我认为从这些描述中可以看出一些重要的事情 . 首先,在加速器模式下,仅为模型方法生成代码;但是,在Rapid Accelerator模式下,还会为求解器生成代码 . 在任何一种情况下,由于生成的代码和Simulink之间的通信会产生一些开销(尽管通常在非快速加速器模式下开销会更大) .

    现在,您是否会看到这些加速模式与完全代码生成之间的显着差异很可能取决于您将如何使用生成的代码 . 您已声明您的应用程序旨在实质上分析/可视化simulink模型的输出 . 您是否打算将应用程序本身作为Simulink模型?如果是这样,我想你的工作流程就是为“插件”模型生成代码,然后将其作为s函数合并到“父”模型中 . 根据上面给出的描述,我的直觉是,与加速器模式相比,您不会看到太多的性能提升 .

    但是,如果您的应用程序要在Simulink之外实现,那么代码生成肯定是可行的方法 . 在这种情况下,您已经完全消除了与Simulink通信的开销 . 例如,在此工作流程中,您可以从"plug-in"模型生成独立的可执行文件,执行该模型以获取输出,然后只需将这些输出加载到应用程序中进行分析和可视化 . 您的应用程序可以用您想要的任何语言编写 . 事实上,您甚至可以在MATLAB中编写应用程序 - 关键是,一旦独立的可执行文件(从"plug-in"模型生成)执行完毕,您的应用程序就会运行,而不是与插件连接正在执行的模型 .

相关问题