zoukankan      html  css  js  c++  java
  • 最大限度地减少块输出中间结果的计算和存储

    最大限度地减少块输出中间结果的计算和存储

    Expression Folding

    表达式折叠

    表达式折叠优化代码,以最小化块输出处中间结果的计算,并将这些结果存储在临时缓冲区或变量中。启用“表达式折叠”时,代码生成器将块计算折叠(折叠)为单个表达式,而不是为模型中的每个块生成单独的代码语句和存储声明。大多数Simulink块支持表达式折叠。

    表达式折叠提高了生成代码的效率,经常获得比手工优化代码更好的结果。在许多情况下,整个模型计算组被折叠成一行高度优化的代码。

    可以在自己的内联S函数块中使用表达式折叠。有关详细信息,请参见支持表达式折叠的S函数。

    Example Model

     

    Generate Code

    关闭expression folding后,在explfld.c文件中,代码生成器生成此代码。

    /* Model step function */

    void exprfld_step(void)

    {

      /* Gain: '<Root>/Gain' incorporates:

       *  Inport: '<Root>/In1'

       */

      exprfld_B.S1 = exprfld_P.Gain_Gain * exprfld_U.i1;

     

      /* Gain: '<Root>/Gain1' incorporates:

       *  Inport: '<Root>/In2'

       */

      exprfld_B.S2 = exprfld_P.Gain1_Gain * exprfld_U.i2;

     

      /* Outport: '<Root>/Out1' incorporates:

       *  Product: '<Root>/Product'

       */

      exprfld_Y.Out1 = exprfld_B.S1 * exprfld_B.S2;

    }

    两个增益块都有单独的代码语句。在最终输出之前,这些代码语句计算增益块的临时结果。

     

    启用优化

    默认情况下,“表达式折叠”(Expression folding)处于启用状态。要查看现有模型是否启用了表达式折叠,请执行以下操作:

    1.表达式折叠仅在选择配置参数>信号存储重用参数时可用,因为表达式折叠仅对涉及局部变量的表达式进行操作。启用信号存储重用参数。

    2.选择“信号存储重用”时,“启用本地块输出”、“重用本地块输出”和“消除多余的局部变量(表达式折叠)”参数默认都处于启用状态。

    优化生成代码

    使用表达式折叠,代码生成器生成单行输出计算,如expfld.c文件所示。生成的注释记录了表达式中出现的块参数。

    /* Model step function */

    void exprfld_step(void)

    {

      /* Outport: '<Root>/Out1' incorporates:

       *  Gain: '<Root>/Gain'

       *  Gain: '<Root>/Gain1'

       *  Inport: '<Root>/In1'

       *  Inport: '<Root>/In2'

       *  Product: '<Root>/Product'

       */

      exprfld_Y.Out1 =

         exprfld_P.Gain_Gain *

         exprfld_U.i1 *

         (exprfld_P.Gain1_Gain * exprfld_U.i2);

    }

    更复杂模型上下文中的表达式折叠示例,请单击rtwdemo_slexprfold,或在命令提示下键入:

    rtwdemo_slexprfold

    人工智能芯片与自动驾驶
  • 相关阅读:
    HBase的完全分布式搭建
    研究Zookeeper的原理(二)
    研究Zookeeper的原理(一)
    zookeeper集群的搭建
    Hadoop之伪分布式安装
    MySQL忘记密码(终极解决方法,亲测有效,windows版本)
    MySQL重置密码(liunx)
    disconf---分布式配置管理平台的搭建(linux版本)
    zookeeper的安装(单机版)
    Redis搭建一主一从及哨兵模式(二)
  • 原文地址:https://www.cnblogs.com/wujianming-110117/p/14306071.html
Copyright © 2011-2022 走看看