主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

coder.MexCodeConfig

R2026a

从 MATLAB 代码生成 MEX 函数的配置参数

描述

coder.MexCodeConfig 对象包含 codegen 在生成 MEX 函数时使用的配置参数。使用 -config 选项将对象传递给 codegen 函数。

创建对象

通过使用 coder.config 函数创建一个 coder.MexCodeConfig 对象。

创建 coder.MexCodeConfig 对象后,您可以在命令行以编程方式修改其属性,也可以使用配置参数对话框以交互方式修改其属性。请参阅Specify Code Configuration Parameters Interactively。

属性

全部展开

动态数组优化,指定为 true 或 false。有关详细信息,请参阅缓存动态数组数据。

生成代码的格式化工具,指定为 'Auto'、'Clang-format' 或 'MathWorks'。有关详细信息,请参阅选择要使用的代码格式工具。

用于编译时递归的最大函数特化数,指定为正整数。有关详细信息,请参阅编译时递归限制。

常量折叠器执行的最大指令数,指定为正整数。有关详细信息,请参阅常量折叠超时。

常量输入检查模式,指定为 'CheckValues' 或 'IgnoreValues'。有关详细信息,请参阅常量输入。

是否生成包含枚举类的 C++ 代码,指定为 true 或 false。有关详细信息,请参阅从 MATLAB 枚举生成 C++ 枚举类。

生成的 C++ 代码的命名空间,指定为字符向量。有关详细信息,请参阅 C++ 命名空间。

放置为 MathWorks 代码生成的 C++ 代码,指定为字符向量。有关详细信息,请参阅 MathWorks 代码的命名空间。

是为 MATLAB 类生成 C++ 类还是 C 样式结构体,指定为 true 或 false。有关详细信息,请参阅从 MATLAB 类生成 C++ 类。

是否为您的 MATLAB 代码中的命名空间生成 C++ 命名空间,指定为 true 或 false。有关详细信息,请参阅从 MATLAB 命名空间生成 C++ 命名空间。

出现在从您的 MATLAB 代码生成的每个 C/C++ 头文件(rtwtypes.h 和 rtwhalf.h 除外)顶部附近的自定义代码,指定为字符向量。有关详细信息,请参阅头文件。

在编译生成代码时要添加到包含路径中的包含文件夹,指定为字符串数组、字符向量元胞数组或字符向量。有关详细信息,请参阅其他包含目录。

要包含在生成的初始化函数中的自定义代码,指定为字符向量。有关详细信息,请参阅初始化函数。

要与生成代码链接的静态库文件,指定为字符串数组、字符向量元胞数组或字符向量。有关详细信息,请参阅其他库。

要编译并与生成代码链接的源文件,指定为字符串数组、字符向量元胞数组或字符向量。有关详细信息,请参阅其他源文件。

位于任何函数外部且出现在每个生成的 .c 或 .cpp 文件(rtwhalf.c 或 rtwhalf.cpp 除外)顶部附近的代码,指定为字符向量。有关详细信息,请参阅源文件。

出现在生成的终止函数中的代码,指定为字符向量。有关详细信息,请参阅终止函数。

用于深度学习网络的代码生成的配置对象,指定为下表中的对象之一。

对象需要描述
coder.MklDNNConfig

  • Deep Learning Toolbox™

  • MATLAB Coder™ Interface for Deep Learning 支持包

coder.MklDNNConfig 对象包含特定于使用 Intel® MKL-DNN 的深度学习 C++ 代码生成的参数。要创建 coder.MklDNNConfig 对象,请使用 coder.DeepLearningConfig。例如:

cfg = coder.config('mex');
cfg.TargetLang = 'C++';
cfg.DeepLearningConfig = coder.DeepLearningConfig('mkldnn');

请参阅使用 MKL-DNN 的深度学习网络的代码生成。

coder.CuDNNConfig (GPU Coder)

  • Deep Learning Toolbox

  • GPU Coder™

  • GPU Coder Interface for Deep Learning 支持包

coder.CuDNNConfig 对象包含特定于使用 cuDNN 库的深度学习 CUDA® 代码生成的参数。要创建 coder.CuDNNConfig 对象,请使用 coder.DeepLearningConfig。例如:

cfg = coder.gpuConfig('lib');
cfg.TargetLang = 'C++';
cfg.DeepLearningConfig = coder.DeepLearningConfig('cudnn');

请参阅Code Generation for Deep Learning Networks by Using cuDNN (GPU Coder)。

coder.TensorRTConfig (GPU Coder)

  • Deep Learning Toolbox

  • GPU Coder

  • GPU Coder Interface for Deep Learning 支持包

coder.TensorRTConfig 对象包含特定于使用 TensorRT 库的深度学习 CUDA 代码生成的参数。要创建 coder.TensorRTConfig 对象,请使用 coder.DeepLearningConfig。例如:

cfg = coder.gpuConfig('lib');
cfg.TargetLang = 'C++';
cfg.DeepLearningConfig = coder.DeepLearningConfig('tensorrt');

请参阅Code Generation for Deep Learning Networks by Using TensorRT (GPU Coder)。

注意

使用 ARM® Compute Library 进行深度学习不支持 MEX 代码生成。

依赖关系:如果设置了 DeepLearningConfig,则 codegen 将 TargetLang 设置为 C++。

动态内存分配模式,指定为下表中的值之一。

值描述
'Threshold'

此值是默认值。

代码生成器会在堆上为大小(以字节为单位)大于或等于 DynamicMemoryAllocationThreshold 的可变大小数组动态分配内存。

'AllVariableSizeArrays'代码生成器在堆上为所有可变大小数组动态分配内存。
'Off'

代码生成器在栈上静态分配可变大小数组的内存。

无界可变大小数组需要动态内存分配。

依赖关系:

  • EnableVariableSizing 启用此参数。

  • 将此 DynamicMemoryAllocation 设置为 'Threshold' 会启用 DynamicMemoryAllocationThreshold 参数。

请参阅Generate Code for Variable-Size Arrays。

注意

在以后的版本中将删除 DynamicMemoryAllocation 配置选项。要为可变大小数组动态分配内存,请使用 EnableDynamicMemoryAllocation 选项。要设置阈值,请使用 DynamicMemoryAllocationThreshold 选项。

固定大小数组的动态内存分配,指定为 false 或 true。有关详细信息,请参阅对固定大小数组启用动态内存分配。

生成的 C/C++ 函数接口处的动态分配数组的实现,指定为 'Auto'、'C' 或 'C++'。有关详细信息,请参阅动态内存分配接口。

可变大小数组的动态内存分配的大小阈值,指定为正整数。有关详细信息,请参阅动态内存分配阈值。

表达式回显,指定为 true 或 false。有关详细信息,请参阅回显不带终止分号的表达式。

自动外部函数调用,指定为 true 或 false。有关详细信息,请参阅自动引入外部调用。

for 循环的自动并行化,指定为 false 或 true。有关详细信息,请参阅启用自动并行化。

for 循环的自动并行化的报告,指定为 true 或 false。有关详细信息,请参阅启用自动并行化报告。

C 编译器调试模式,指定为 false 或 true。有关详细信息,请参阅启用 C/C++ 编译器调试模式。

可变大小数组的动态内存分配,指定为 true 或 false。有关详细信息,请参阅启用动态内存分配。

生成代码中的隐式扩展功能,指定为 true 或 false。有关详细信息,请参阅启用隐式扩展。

即时 (JIT) 编译模式,指定为 false 或 true。有关详细信息,请参阅对 MEX 的编译类型使用 JIT 编译。

memcpy 优化,指定为 true 或 false。有关详细信息,请参阅使用 memcpy 进行向量赋值。

用于对生成的 MEX 函数进行探查的插桩,指定为 false 或 true。有关详细信息,请参阅启用执行探查。

parfor 循环的并行化,指定为 true 或 false。有关详细信息,请参阅尽可能启用 OpenMP 库。

运行时递归支持,指定为 true 或 false。有关详细信息,请参阅启用运行时递归。

可变大小数组支持,指定为 true 或 false。有关详细信息,请参阅启用可变大小。

外部函数调用支持,指定为 true 或 false。有关详细信息,请参阅保留外部调用。

文件划分模式,指定为 'MapMFileToCFile' 或 'SingleFile'。有关详细信息,请参阅生成文件的划分方法。

仅生成源代码,指定为 true 或 false。有关详细信息,请参阅仅生成代码。

生成代码中的注释,指定为 true 或 false。有关详细信息,请参阅包括注释。

代码生成报告,指定为 false 或 true。有关详细信息,请参阅始终创建报告。

全局数据同步模式,指定为 'SyncAlways'、'SyncAtEntryAndExits' 或 'NoSync'。有关详细信息,请参阅全局数据同步模式。

使用 GPU Coder 生成 CUDA GPU 代码的配置对象。GpuCodeConfig 对象包含特定于 CUDA GPU 代码生成的参数。要创建 GpuCodeConfig 对象,请使用 coder.gpuConfig (GPU Coder)。例如:

cfg = coder.gpuConfig('mex');
cfg.GpuConfig

ans = 

  GpuCodeConfig with properties:

                    Enabled: 1
                 MallocMode: 'discrete'
           KernelNamePrefix: ''
               EnableCUBLAS: 1
             EnableCUSOLVER: 1
                EnableCUFFT: 1
               Benchmarking: 0
                  SafeBuild: 0
          ComputeCapability: 'Auto'
    CustomComputeCapability: ''
              CompilerFlags: ''
        StackLimitPerThread: 1024
            MallocThreshold: 200
     MaximumBlocksPerKernel: 0
        EnableMemoryManager: 1
           SelectCudaDevice: -1

有关详细信息,请参阅Generate Code Using the Command Line Interface (GPU Coder)。

如果设置了 GpuConfig,则代码生成器对 GPU 代码生成所需的某些属性使用固定值。某些属性也具有不同默认值。有关详细信息,请参阅Configure GPU Code Generation (GPU Coder)。

是否在代码生成报告中突出显示由隐式扩展导致的潜在问题,指定为 true 或 false。有关详细信息,请参阅突出显示隐式扩展导致的潜在问题。

是否在代码生成报告中突出显示由使用循环控制函数导致的潜在问题,指定为 true 或 false。有关详细信息,请参阅突出显示使用 coder.loop 函数的潜在问题。

潜在的行优先布局效率问题,指定为 true 或 false。有关详细信息,请参阅突出显示潜在的行优先问题。

使用 memset 将浮点数和双精度数赋值为零,指定为 true 或 false。有关详细信息,请参阅使用 memset 将浮点数和双精度数初始化为 0.0。

控制 MathWorks 函数之间的内联,指定为 'Speed'、'Always'、'Readability' 或 'Never'。有关详细信息,请参阅 MathWorks 编写的 MATLAB 函数的内联策略。

控制用户编写函数和 MathWorks 函数之间的内联,指定为 'Speed'、'Always'、'Readability' 或 'Never'。有关详细信息,请参阅 MathWorks 函数和用户函数之间调用的内联策略。

控制用户编写函数之间的内联,指定为 'Speed'、'Always'、'Readability' 或 'Never'。有关详细信息,请参阅用户编写的 MATLAB 函数的内联策略。

内存完整性检查,指定为 true 或 false。有关详细信息,请参阅检查内存完整性。

代码生成器是将深度神经网络 (DNN) 的大型常量嵌入生成的源代码中还是将这些常量写入二进制数据文件,指定为 'WriteOnlyDNNConstantsToDataFiles' 或 'KeepInSourceFiles'。有关详细信息,请参阅大型常量生成。

确定代码生成器是否将 DNN 常量写入二进制数据文件的阈值(高于此阈值时写入),指定为正整数。有关详细信息,请参阅大型常量阈值。

自动打开代码生成报告,指定为 true 或 false。有关详细信息,请参阅生成报告后自动启动报告。

在生成代码中包含 MATLAB 源代码作为注释,指定为 true 或 false。有关详细信息,请参阅 MATLAB 源代码作为注释。

memcpy 或 memset 优化的最小大小(以字节为单位),指定为正整数。有关详细信息,请参阅 Memcpy 阈值(字节)。

对象名称,指定为字符向量。

在生成的 C/C++ 代码中运行并行 for 循环的最大 CPU 线程数,指定为正整数。有关详细信息,请参阅最大 CPU 线程数。

为归约运算生成 SIMD 代码和并行化执行归约运算的 for 循环,指定为 false 或 true。有关详细信息,请参阅优化归约。

使用 codegen 生成 MEX 函数后自定义编译处理的命令,指定为字符向量。有关详细信息,请参阅代码生成后命令。

生成使用 N 维索引的代码,指定为 false 或 true。有关详细信息,请参阅保留数组维度。

要在生成代码中保留的变量名称,指定为 'None'、'UserNames'、'All'。有关详细信息,请参阅保留变量名称。

包含关于代码生成的代码生成报告信息的变量的名称,指定为字符向量。有关详细信息,请参阅将报告信息导出到变量。

潜在差异报告,指定为 true 或 false。有关详细信息,请参阅报告与 MATLAB 的差异。

代码生成器不能用于函数或变量的名称,指定为字符串数组、字符向量元胞数组或字符向量。有关详细信息,请参阅保留名称。

响应性检查,指定为 true 或 false。有关详细信息,请参阅启用对 CTRL+C 和图刷新的响应。

生成代码的行优先数组布局,指定为 false 或 true。有关详细信息,请参阅数组布局。

整数溢出支持,指定为 true 或 false。有关详细信息,请参阅对整数溢出进行饱和处理。

用于加速向量运算的 SIMD 固有函数的级别,指定为 'Portable'、'Full' 或 'None'。有关详细信息,请参阅硬件 SIMD 加速。

每个应用程序的最大栈使用量(以字节为单位),指定为正整数。有关详细信息,请参阅最大栈使用量。

要在生成代码中使用的语言,指定为 'C' 或 'C++'。有关详细信息,请参阅语言。

自 R2024b 起

是否在生成代码中使用预编译库,指定为 'Prefer' 或 'Avoid'。有关详细信息,请参阅使用预编译库。

MATLAB 命令行处的代码生成进度显示,指定为 'Info'、'Silent' 或 'Verbose'。有关详细信息,请参阅显示详尽的编译器输出。

示例

全部折叠

编写一个用来生成代码的 MATLAB 函数。此示例使用函数 myadd,它返回其输入的总和。

function c = myadd(a,b)
c = a + b;
end

创建一个用于 MEX 函数生成的配置对象。

cfg = coder.config('mex');

更改您不希望使用默认值的属性的值。例如,启用即时 (JIT) 编译。

cfg.EnableJIT = true;

使用 codegen 生成代码。通过使用 -config 选项将配置对象传递给 codegen。指定输入参量为双精度标量。

codegen myadd -config cfg -args {1 1} -report

提示

  • 要打开包含关联的编译配置设置的对话框,请双击工作区中的配置对象。

替代功能

要对 MEX 函数生成使用默认配置参数值,而不是创建配置对象,您可以调用 codegen 而不指定配置对象,或使用 -config:mex 选项。

版本历史记录

在 R2011a 中推出

全部展开