文档

执行速度

提高生成的C/ c++代码的执行速度

使用代码生成选项和优化来提高生成代码的执行速度。您可以修改或禁用动态内存分配,这可能会影响执行速度。并行代码可以通过使用parfor循环。如果可用,可以利用现有的优化C代码和专门的库来加快执行速度。

有关如何针对特定条件优化代码的详细信息,请参见优化策略

功能

parfor 并行循环
coder.varsize 声明可变大小的数组
coder.const 在生成的代码中将表达式折叠为常量
coder.inline 在生成的代码中控制内联
coder.unroll 通过为每次循环迭代创建循环体的副本来展开for-loop
coder.ceval 调用外部C/ c++函数

编码器。LAPACKCallback 抽象类,用于在生成的代码中为LAPACK调用指定LAPACK库和LAPACKE头文件
coder.fftw.StandaloneFFTW3Interface 抽象类,用于在生成的代码中为FFTW调用指定FFTW库

例子和如何

适应可变数组

最小化动态内存分配

通过最小化动态内存分配来改善执行时间。

为可变大小的数组提供最大大小

使用技术帮助代码生成器确定可变大小数组的上限。

在代码生成过程中禁用动态内存分配

在应用程序或命令行中禁用动态内存分配。

设置“内存动态分配阈值”

禁用小于特定大小的数组的动态内存分配。

循环

使用并行for循环生成代码(parfor)

生成一个在共享内存多核平台上并行运行的循环。

指定parfor-Loops中的最大线程数

生成一个MEX函数,在特定数量的可用内核上并行执行循环迭代。

parfor-Loops的控件编译

治疗parfor循环,parfor在单个线程上运行的-循环。

尽量减少循环中的冗余操作

尽可能将操作移到循环之外。

展开for循环

控制环展开。

函数调用

消除函数输入的冗余副本

使用相同的变量作为函数的输入和输出。

内联代码

通过用函数体替换函数调用,内联消除了函数调用的开销。

控制内联

限制内联以减少生成的代码大小和内存使用。

将函数调用折叠为常量

通过在生成的代码中用常量替换表达式来减少执行时间。

数值边缘情况

禁用对整数溢出或万博1manbetx非有限的支持

通过抑制对整数溢出或非有限溢出的支持代码的生成来提高性能。万博1manbetx

外部代码集成

集成外部/自定义代码

通过集成您自己优化的代码来提高性能。

通过使用LAPACK调用加速生成的独立代码中的线性代数

为某些线性代数函数生成LAPACK调用。指定要使用的LAPACK库。

通过使用FFTW库调用加速生成的独立代码中的快速傅里叶变换

生成FFTW库调用快速傅里叶变换。指定FFTW库。

在生成的独立代码中同步多线程访问FFTW规划

实现FFT库回调类方法,并提供支持的C代码,以防止并行访问FFTW规划。万博1manbetx

概念

优化策略

优化生成代码的执行速度或内存使用。

动态内存分配和性能

动态内存分配会降低执行速度。

使用并行for循环的算法加速

生成以下的MEX函数parfor循环。

parfor-Loops中的变量分类

内部变量parfor-loops分为循环、切片、广播、缩减和临时。

parfor-Loops中的约简赋值

减少变量累积一个值,该值取决于所有循环迭代。

生成代码中的MATLAB编码器优化

为了提高所生成代码的性能,代码生成器使用优化。

memcpy优化

代码生成器通过使用优化生成的代码memcpy

memset优化

代码生成器通过使用优化生成的代码memset

LAPACK调用生成的代码

LAPACK函数调用提高了为某些线性代数函数生成的代码的执行速度。

生成使用行主数组布局的代码

生成C/ c++代码,其中行元素连续存储在内存中。

故障排除

故障排除parfor-Loops

的代码生成诊断错误parfor循环。

这个话题有用吗?