coder.gpuConfig
配置参数CUDA代码生成的MATLAB代码通过使用GPU编码器
描述
的coder.GpuCodeConfig
或coder.gpuConfig
对象包含的配置参数codegen
使用生成CUDA®墨西哥人,一个静态库,动态链接库,或一个可执行程序与GPU编码器™。通过对象的codegen
函数使用配置
选择。
创建
语法
描述
cfg = coder.gpuConfig (
创建一个指定构建代码生成配置对象类型,可CUDA墨西哥人,一个静态库,动态链接库,或一个可执行程序。如果嵌入式编码器®产品安装,它会创建一个build_type
)coder.EmbeddedCodeConfig
对象为静态库,动态库,或可执行的构建类型。
cfg = coder.gpuConfig (
创建一个配置对象生成CUDA生成代码build_type
“是”,假)“自由”
,“dll”
,或exe”
即使嵌入式安装编码器产品输出。
cfg = coder.gpuConfig (
创建一个build_type
“是”,真的)coder.EmbeddedCodeConfig
配置对象即使嵌入式产品没有安装编码器。然而,使用一个代码生成coder.EmbeddedCodeConfig
对象需要嵌入式编码器许可证。
输入参数
build_type
- - - - - -输出从生成的CUDA代码构建
墨西哥人的
|“自由”
|“DLL”
|EXE”
输出从生成的CUDA代码构建,指定为这个表中的值之一。
价值 | 描述 |
---|---|
墨西哥人的 |
CUDA墨西哥人 |
“自由” |
静态库 |
“DLL” |
动态链接库 |
EXE” |
可执行程序 |
属性
coder.GpuConfig
只包含GPU的具体配置参数配置对象的代码。查看所有的属性代码配置对象,明白了coder.CodeConfig
和coder.EmbeddedCodeConfig
。
启用
- - - - - -控制GPU代码生成
真正的
(默认)|假
控制代CUDA (* .cu)文件用这个表中的值之一。
价值 | 描述 |
---|---|
真正的 |
这个值是默认值。 支持CUDA代码生成。 |
假 |
禁用CUDA代码生成。 |
例子:cfg.GpuConfig。启用= true
MallocMode
- - - - - -GPU内存分配
“离散”
(默认)|“统一”
内存分配(malloc
)模式中使用CUDA生成代码,在这个表指定为一个值。
价值 | 描述 |
---|---|
“离散” |
这个值是默认值。 生成的代码使用 |
“统一” |
生成的代码使用 对于英伟达®嵌入式目标。看到统一内存分配模式主机被删除。 |
有关更多信息,请参见离散和管理模式。
例子:cfg.GpuConfig。MallocMode= 'discrete'
KernelNamePrefix
- - - - - -自定义内核名称前缀
' '(默认)|特征向量
指定一个自定义名称前缀的所有内核在生成的代码。例如,使用价值“CUDA_”
创建内核名字CUDA_kernel1
,CUDA_kernel2
,等等。如果没有提供名字,GPU编码器内核加名字的入口点函数的名称。内核名称可以包含大写字母,小写字母,数字0 - 9和下划线字符_。GPU编码器移除不支持的字符从内核名字和金宝app附加α
前缀不一个字母字母开头。
例子:cfg.GpuConfig。KernelNamePrefix = ' myKernel '
EnableCUBLAS
- - - - - -使用cuBLAS
图书馆
真正的
(默认)|假
更换与NVIDIA的数学函数调用cuBLAS
库调用,指定为这个表中的值之一。
价值 | 描述 |
---|---|
真正的 |
这个值是默认值。 允许GPU编码器取代和调用适当的数学函数调用 |
假 |
禁用的使用 |
有关更多信息,请参见从库调用内核。
例子:cfg.GpuConfig。EnableCUBLAS= true
EnableCUSOLVER
- - - - - -使用cuSOLVER
图书馆
真正的
(默认)|假
更换与NVIDIA的数学函数调用cuSOLVER
库调用,指定为这个表中的值之一。
价值 | 描述 |
---|---|
真正的 |
这个值是默认值。 允许GPU编码器取代和调用适当的数学函数调用 |
假 |
禁用的使用 |
有关更多信息,请参见从库调用内核。
例子:cfg.GpuConfig。EnableCUSOLVER= true
EnableCUFFT
- - - - - -使用cuFFT
图书馆
真正的
(默认)|假
更换fft
函数调用与英伟达cuFFT
库调用,指定为这个表中的值之一。
价值 | 描述 |
---|---|
真正的 |
这个值是默认值。 允许GPU编码器取代适当 |
假 |
禁用的使用 |
有关更多信息,请参见从库调用内核。
例子:cfg.GpuConfig。EnableCUFFT= true
基准测试
- - - - - -基准测试添加到生成的代码
假
(默认)|真正的
控制的基准测试代码生成的CUDA代码通过使用这个表中的值之一。
价值 | 描述 |
---|---|
假 |
这个值是默认值。 生成的CUDA代码不包含基准测试功能。 |
真正的 |
生成CUDA代码与基准测试功能。这个选项使用CUDA api等 |
例子:cfg.GpuConfig。基准测试= true
SafeBuild
- - - - - -在生成的代码错误检查
假
(默认)|真正的
错误检查功能添加到生成的CUDA代码通过使用这个表中的值之一。
价值 | 描述 |
---|---|
假 |
这个值是默认值。 生成的CUDA代码不包含错误检查功能。 |
真正的 |
生成的代码和错误检查CUDA API和内核调用。 |
例子:cfg.GpuConfig。SafeBuild= true
ComputeCapability
- - - - - -最低计算功能代码生成
“3.5”
(默认)|“3.2”
|“3.7”
|“5.0”
|“5.2”
|“5.3”
|“6.0”
|“6.1”
|“6.2”
|“7.0”
|“7.1”
|“7.2”
为代码生成选择最小的计算能力。计算能力识别GPU硬件支持的特性。金宝app它所使用的是应用程序在运行时确定哪些硬件特性,说明目前的GPU上都是可用的。如果您指定自定义计算能力,GPU编码器忽略此设置。
看到CUDA计算代码生成功能要求,参考下表。
目标 | 计算能力 |
---|---|
CUDA墨西哥人 |
看到GPU计算的需求。 |
源代码、静态或动态库和可执行文件 |
3.2或更高版本。 |
深度学习应用8位整数的精度 |
6.1、6.3或更高版本。 |
深度学习应用half-precision(16位浮点) |
5.3、6.0、6.2或更高版本。 |
例子:cfg.GpuConfig。ComputeCapability = ' 6.1 '
CustomComputeCapability
- - - - - -控制GPU代码生成
”
(默认)|特征向量
指定的名称NVIDIA CUDA的虚拟架构GPU输入文件必须被编译。
例如,指定一个虚拟架构类型拱= compute_50
。您可以指定一个真正的建筑使用拱= sm_50
。有关更多信息,请参见选择转向GPU代码生成主题在CUDA工具包的文档中。
例子:cfg.GpuConfig。CustomComputeCapability = '拱= compute_50 '
CompilerFlags
- - - - - -额外的旗帜GPU的编译器
”
(默认)|特征向量
通过额外的旗帜GPU编译器。例如,——fmad = false
指示学校网站
编译器禁用收缩浮点乘法和添加到一个浮点Multiply-Add (FMAD)指令。
NVIDIA的编译器选项类似,看到这个话题NVCC命令选项CUDA工具包的文档。
例子:cfg.GpuConfig。CompilerFlags= '--fmad=false'
StackLimitPerThread
- - - - - -每GPU线程堆栈限制
1024年
(默认)|整数
每个GPU的最大堆栈限制线程指定为一个整数值。
例子:cfg.GpuConfig。StackLimitPerThread = 1024
MallocThreshold
- - - - - -Malloc阈值
200年
(默认)|整数
指定大小上面私有变量分配在堆上而不是堆栈,作为一个整数值。
例子:cfg.GpuConfig。MallocThreshold = 256
MaximumBlocksPerKernel
- - - - - -最大数量的块中创建一个内核启动
0
(默认)|整数
指定模块中创建一个内核启动的最大数量。
因为GPU设备流多处理器(SM)资源有限,限制块的数量为每个内核可以避免性能损失调度、装卸的街区。
如果在一个循环的迭代次数大于每个内核模块的最大数量,代码生成器创建CUDA内核大步。
当你指定块的最大数量为每个内核,代码生成器创建一维内核。强制代码生成器创建2 d或3 d内核,使用coder.gpu.kernel
编译指示。的coder.gpu.kernel
编译指示优先于内核的最大数量为每个块。
例子:cfg.GpuConfig。MaximumBlocksPerKernel = 1024
EnableMemoryManager
- - - - - -使用GPU内存管理器
假
(默认)|真正的
选择有效的GPU内存管理器内存分配,管理和提高运行时性能。
价值 | 描述 |
---|---|
真正的 |
GPU内存管理器创建了一个集合并管理大型GPU内存池分配和回收的大块的内存块在这些池。通过创建大的内存池,内存管理器减少CUDA内存api调用的数量,提高运行时性能。您可以使用墨西哥人和独立CUDA GPU内存管理器代码生成。 |
假 |
禁用使用GPU内存管理器内存分配和管理。 这个值是默认值。 |
例子:cfg.GpuConfig。EnableMemoryManager = true
BlockAlignment
- - - - - -池中指定对齐的内存块
256年
(默认)|正整数
指定所使用的内存块的对齐GPU内存管理器。块大小(字节)池中的指定值的倍数。的值BlockAlignment
必须是2的幂。
例子:cfg.GpuConfig。BlockAlignment= 1024
FreeMode
- - - - - -指定当GPU内存管理器释放内存
“永远”
(默认)|“AtTerminate”
|“AfterAllocate”
指定GPU设备的内存管理器释放内存时通过使用这个表中的值之一。
价值 | 描述 |
---|---|
“永远” |
空闲内存,内存管理器被摧毁。 这个值是默认值。 |
“AtTerminate” |
自由空GPU池时 墨西哥人的目标,内存被释放后每次调用函数生成的墨西哥人。 对于其他目标,当调用终止函数内存已经被释放了。 |
“AfterAllocate” |
每次调用后空池释放CUDA内存分配。 |
例子:cfg.GpuConfig。FreeMode= 'AtTerminate'
MinPoolSize
- - - - - -指定的最低GPU内存管理器的池的大小
8
(默认)|正整数
指定兆字节(MB)的最低池大小的GPU内存管理器。的值MinPoolSize
必须是2的幂。
使用的内存管理器计算规模水平MinPoolSize
和MaxPoolSize
参数通过插值的两个值之间增加2。例如,如果MinPoolSize
4,MaxPoolSize
是1024,规模水平{4、8、16、32、64、128、256、512、1024}。
例子:cfg.GpuConfig。MinPoolSize= 32
MaxPoolSize
- - - - - -指定的最大池大小GPU内存管理器
2048年
(默认)|正整数
指定兆字节(MB)的最大池大小GPU内存管理器。的值MaxPoolSize
必须是2的幂。
使用的内存管理器计算规模水平MinPoolSize
和MaxPoolSize
参数通过插值的两个值之间增加2。例如,如果MinPoolSize
4,MaxPoolSize
是1024,规模水平{4、8、16、32、64、128、256、512、1024}。
例子:cfg.GpuConfig。MaxPoolSize= 4096
例子
生成CUDA墨西哥人
生成CUDA墨西哥人从一个适合GPU的MATLAB函数函数代码生成。同时,使代码生成报告。
编写一个MATLAB函数VecAdd
执行向量加法的输入一个
和B
。
函数[C] = VecAdd (A, B)% # codegenC = coder.nullcopy(0(大小(A)));coder.gpu.kernelfun ();C = A + B;结束
生成一个墨西哥人功能,创建一个代码生成配置对象。
cfg = coder.gpuConfig (墨西哥人的);
使代码生成报告。
cfg.GpuConfig。EnableCUBLAS= true; cfg.GenerateReport = true;
生成一个墨西哥人函数在当前文件夹指定配置对象使用配置
选择。
%生成一个墨西哥人的功能和代码生成报告codegen配置cfgarg游戏{0(512512年,“双”),0(512512年,“双”)}VecAdd
限制
GPU编码器总是设置
PassStructByReference
财产的coder.CodeConfig
和coder.EmbeddedCodeConfig
代码配置对象为true。GPU编码器总是设置
EnableSignedLeftShifts
和EnableSignedRightShifts
财产的coder.EmbeddedCodeConfig
代码配置对象为true。为独立的目标,如静态库,动态链接库,或者在Windows可执行程序®不设置环境,生成makefile
每公吨
或/ MD
编译器标志。这些标志指示Visual Studio编译器使用多线程库。默认情况下,Visual Studio使用每公吨
在编译过程中。通过其它的编译器具体标志,使用CompilerFlags
选择。例如,cfg.GpuConfig。CompilerFlags=“-Xcompiler / MD”;
的
学校网站
编译器限制输入文件后缀。例如,如果目标文件包含版本号,编译可能会失败。在这种情况下创建符号链接或通过“-Xlinker”
到CompilerFlags
。
版本历史
介绍了R2017bR2021a:统一
内存分配模式主机被删除
在未来的版本中,统一内存分配(cudaMallocManaged
)模式时,将删除目标NVIDIA GPU设备在开发计算机主机。可以继续使用统一内存分配模式针对NVIDIA嵌入式平台。
当从MATLAB生成主机CUDA代码,设置MallocMode
财产的coder.gpuConfig
代码配置对象“离散”
。
第一de MATLAB
Ha事实clic en联合国围绕此时一个埃斯特第一de MATLAB:
Ejecute el第一introduciendolo en la ventana de第一de MATLAB。洛杉矶navegadores网络没有admiten第一de MATLAB。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。