主要内容

优化代码生成实时应用程序

时间限制在生成的代码

嵌入式应用程序可能要求限制代码可以运行多久才能返回答案。这样的要求可以有问题的,因为解决给没有时间保证优化。这个主题轮廓技术估计嵌入代码将运行多久才能返回结果,并描述了代码改变自己的习惯就会缩短的时间要求。

一般建议编写高效的代码,代码生成MATLAB代码生成代码设计注意事项(MATLAB编码器)

匹配的目标环境

估计代码生成之前生成的代码的执行时间,设置你的MATLAB®环境与目标环境尽可能匹配。

  • 检查你的目标硬件时钟速度和你的电脑。扩展相应的基准测试结果。

  • maxNumCompThreads在MATLAB为1,因为默认LAPACK和bla库生成的MATLAB编码器™是单线程的。

    lastN = maxNumCompThreads (1);

    你完成基准后,重置maxNumCompThreads值:

    N = maxNumCompThreads (lastN);%或者,% N = maxNumCompThreads(“自动”);

    请注意

    如果你的目标硬件有多个核心和使用自定义多线程LAPACK和布拉斯特区库,然后设置maxNumCompThreads在目标硬件线程的数量。看到加快生成独立的代码通过使用线性代数LAPACK调用(MATLAB编码器)

  • 如果你有一个嵌入式编码器®许可证,有关详细信息,请参阅这些主题在可靠的方法评估结果的性能嵌入代码:加速线性代数在从一个MATLAB函数生成的代码块中(嵌入式编码),加快从MATLAB函数生成矩阵运算的代码块(嵌入式编码),验证(嵌入式编码),性能(嵌入式编码)

设置编码器配置

设置配置代码生成、电话coder.config

cfg = coder.config (墨西哥人的);

节省时间在生成的代码中,关闭完整性检查,检查整数饱和。解决不依赖这些检查正常功能,假设目标函数和非线性约束函数不需要他们。有关详细信息,请参见控制运行时检查(MATLAB编码器)

cfg。IntegrityChecks = false;cfg。SaturateOnIntegerOverflow = false;

通常情况下,生成的代码运行更快的使用静态内存分配时,尽管这个分配可以提高生成的代码的数量。此外,一些硬件不支持动态内存分配。金宝app使用静态内存分配,指定该设置。

cfg。DynamicMemoryAllocation =“关闭”;

你可以提高你的代码的性能通过选择不同类型的布拉斯特区,底层的线性代数子程序。学习如何设置BLAS生成的代码,看一看加快矩阵运算生成独立的代码通过使用布拉斯特区调用(MATLAB编码器)。如果你想要并行运行的嵌入式应用程序,您必须提供布拉斯特区或LAPACK库,支持并行计算系统上。金宝app同样的,当你有并行的硬件,你可以提高你的代码的性能通过设置自定义LAPACK调用。看到加快生成独立的代码通过使用线性代数LAPACK调用(MATLAB编码器)

基准的解算器

运行你的墨西哥人1000年生成的代码在一个循环中使用一组输入参数,评价是典型的应用程序。发现总时间和最大的评估时间。尝试你认为可能造成的参数解算器太长,和其他参数和测试它们。如果墨西哥人应用程序返回满意的结果在合理的时间帧,然后你可以认为已部署的应用程序将做同样的事情。

设置初始点

最重要的一个影响因素都运行时和解决方案质量优化的初始点x0。参数解算器调用之间变化缓慢时,解决方案从先前的调用通常是一个好的起点为下一个电话。看到遵循方程解决方案作为一个参数变化,也展示了如何在解决方案可能发生因为解决开关盆地的吸引力

如果你的优化问题没有参数变化缓慢,和只包含一些控制变量,然后试图估计响应从以前的解决方案可以是值得的。金宝搏官方网站解决方案的构建模型的函数参数,作为二次参数或低维插值,和使用预测解决方案解决者作为起点。

适当设置选项

你有时速度解决方案通过调整参数。如果你设置MaxIterations选择只允许几个迭代,然后快速解算器停止。例如,如果解算器fmincon,输入此代码。

选择= optimoptions (“fmincon”,“算法”,“sqp”,“MaxIterations”,50);[x, fval exitflag] = fmincon (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,nonlcon,选项)

然而,可以远离最优结果。确保一个不准确的结果不会太影响你的系统。集MaxIterations尽可能大的同时,仍满足时间约束。可以通过测量估计这个值迭代需要多长时间,或通过测量一个函数评估需要多久,然后设置MaxFunctionEvaluations选择或MaxIterations选择。例如,看到的代码生成优化的基础知识

为进一步建议设置可以速度解算器,看看解决花费的时间太长。注意一些建议在这个话题的限制并不适用,因为代码生成。看到在背景fmincon代码生成代码生成quadprog背景

全球最低

您可能希望全球最低,而不只是一个局部最小值,作为解决方案。寻找全球最低会花费大量的时间,并不能保证工作。建议,请参阅寻找一个更小的最小值

另请参阅

|(MATLAB编码器)||

相关的话题