执行速度
使用代码生成选项和优化来提高生成代码的执行速度。您可以修改或禁用动态内存分配,这可能会影响执行速度。并行代码可以通过使用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库 |
例子和如何
适应可变数组
通过最小化动态内存分配来改善执行时间。
使用技术帮助代码生成器确定可变大小数组的上限。
在应用程序或命令行中禁用动态内存分配。
禁用小于特定大小的数组的动态内存分配。
循环
生成一个在共享内存多核平台上并行运行的循环。
生成一个MEX函数,在特定数量的可用内核上并行执行循环迭代。
治疗parfor
循环,parfor
在单个线程上运行的-循环。
尽可能将操作移到循环之外。
控制环展开。
函数调用
使用相同的变量作为函数的输入和输出。
通过用函数体替换函数调用,内联消除了函数调用的开销。
限制内联以减少生成的代码大小和内存使用。
通过在生成的代码中用常量替换表达式来减少执行时间。
外部代码集成
通过集成您自己优化的代码来提高性能。
为某些线性代数函数生成LAPACK调用。指定要使用的LAPACK库。
生成FFTW库调用快速傅里叶变换。指定FFTW库。
实现FFT库回调类方法,并提供支持的C代码,以防止并行访问FFTW规划。万博1manbetx
概念
优化生成代码的执行速度或内存使用。
动态内存分配会降低执行速度。
生成以下的MEX函数parfor
循环。
内部变量parfor
-loops分为循环、切片、广播、缩减和临时。
减少变量累积一个值,该值取决于所有循环迭代。
为了提高所生成代码的性能,代码生成器使用优化。
代码生成器通过使用优化生成的代码memcpy
.
代码生成器通过使用优化生成的代码memset
.
LAPACK函数调用提高了为某些线性代数函数生成的代码的执行速度。
生成C/ c++代码,其中行元素连续存储在内存中。
故障排除
的代码生成诊断错误parfor
循环。