coder.MexCodeConfig
从 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 |
|
cfg = coder.config('mex'); cfg.TargetLang = 'C++'; cfg.DeepLearningConfig = coder.DeepLearningConfig('mkldnn'); |
coder.CuDNNConfig (GPU Coder) |
|
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) |
|
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' | 此值是默认值。 代码生成器会在堆上为大小(以字节为单位)大于或等于 |
'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 中推出新增属性 UsePrecompiledLibraries 允许您指定生成代码使用特定于平台的预编译库的程度。
如果您尝试使用引号为 CustomInclude、CustomLibrary 和 CustomSource 代码配置参数指定包含空白的单个文件名或路径(例如 '"folder1\folder2\sp ace\fun3.c"'),代码生成器将生成错误。
使用具有分隔符的字符向量或字符串标量在代码配置对象中指定多个文件名和路径会生成错误。请改用字符串数组和字符向量元胞数组。例如,要包含多个文件夹名称,您可以在 CustomInclude 中使用字符串数组,即 cfg.CustomInclude = ["C:\Project","C:\Custom Files"]; 形式;或使用字符向量元胞数组(即 cfg.CustomInclude = {'C:\Project','C:\Custom Files'}; 形式)来包含用于编译生成代码的路径。
使用引号为 CustomInclude、CustomLibrary 和 CustomSource 代码配置属性指定包含空白的单个文件名或路径(例如,'"sp ace/fun3.c"')将产生警告,此功能在以后的版本中将删除。
在以后的版本中,DynamicMemoryAllocation 属性将被删除。
要为可变大小数组动态分配内存,请使用 EnableDynamicMemoryAllocation 属性。要配置动态内存分配阈值,请使用 DynamicMemoryAllocationThreshold 属性。
使用具有分隔符的字符向量或字符串标量在代码配置对象中指定多个文件名和路径时会产生警告,该功能将在以后的版本中删除。请改用字符串数组和字符向量元胞数组。例如,要包含多个文件夹名称,您可以在 CustomInclude 中使用字符串数组,即 cfg.CustomInclude = ["C:\Project","C:\Custom Files"]; 形式;或使用字符向量元胞数组(即 cfg.CustomInclude = {'C:\Project','C:\Custom Files'}; 形式)来包含用于编译生成代码的路径。
在以后的版本中,使用具有分隔符的字符向量或字符串标量在代码配置对象中指定多个文件名、路径或保留名称的功能将被删除。请改用字符串数组和字符向量元胞数组。例如,要包含多个文件夹名称,您可以在 CustomInclude 中使用字符串数组,即 cfg.CustomInclude = ["C:\Project","C:\Custom Files"]; 形式;或使用字符向量元胞数组(即 cfg.CustomInclude = {'C:\Project','C:\Custom Files'}; 形式)来包含用于编译生成代码的路径。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)