GPU编码器™支持CU金宝appDA优化库®GPU,如Cublas,Cusolver,袖口,推力,CUDNN和RENSORT图书馆。
cuBLAS库是在NVIDIA上实现的基本线性代数子程序(BLAS)®CUDA运行时间。它允许您访问NVIDIA GPU的计算资源。
cuSOLVER库是基于cuBLAS和cuSPARSE库的高级包。它提供了有用的lapack类特征,例如常见的矩阵分解和稠密矩阵的三角求解例程,一个稀疏最小二乘求解器和一个特征值求解器。
cuFFT库提供了NVIDIA gpu上的快速傅里叶变换(FFT)算法的高性能实现。cuBLAS, cuSOLVER和cuFFT库是NVIDIA CUDA工具包的一部分。
推力是一个CUDA C ++模板库。推力库随CUDA工具包,让您充分利用GPU加速的原语如排序的实现复杂的高性能并行应用程序。
NVIDIA CUDA Deep Neural Network library (cuDNN)是一个gpu加速的用于深度神经网络的原语库。cuDNN为标准例程提供了高度优化的实现,如正向和向后卷积、池化、规范化和激活层。NVIDIA的TensorRT是一个高性能深度学习推理优化器和运行时库。有关更多信息,请参阅基于cuDNN的深度学习网络代码生成和基于TensorRT的深度学习网络代码生成.
GPU编码器不需要特殊的Pragma来为库生成内核调用。在代码生成过程中,当您选择时启用Cublas.GPU编码器应用程序或使用中的选项config_object.GpuConfig。EnableCUBLAS = true
属性,GPU编码器用调用cuBLAS库替换了一些功能。当你选择使cuSOLVERGPU编码器应用程序或使用中的选项config_object.gpuconfig.enableCusolver = true
属性,GPU编码器用调用cuSOLVER库替换一些功能。GPU编码器要将高级数学函数替换为库调用,必须满足以下条件:
对于这些函数,必须存在特定于gpu的库替换。
MATLAB®编码器™必须满足数据大小阈值。
GPU编码器支持表中金宝app列出的函数的袖口,Cusolver和Cublas库替代品。对于在CUDA中没有替代品的函数,GPU编码器使用映射到GPU的便携式MATLAB函数。
MATLAB函数 | 描述 | MATLAB编码器LAPACK支金宝app持 | cuBLAS, cuSOLVER, cuFFT,推力支撑金宝app |
---|---|---|---|
|
矩阵乘以 |
是的 |
是的 |
|
解决线性方程系统 |
是的 |
是的 |
|
鲁矩阵分解 |
是的 |
是的 |
|
正交 - 三角分解 |
是的 |
部分 |
|
矩阵决定簇 |
是的 |
是的 |
|
柯列斯基分解 |
是的 |
是的 |
|
互惠的条件数 |
是的 |
是的 |
|
解线性方程组 |
是的 |
是的 |
|
特征值和特征向量 |
是的 |
不 |
|
舒尔分解 |
是的 |
不 |
|
奇异值分解 |
是的 |
部分 |
|
快速傅里叶变换 |
是的 |
是的 |
|
逆快速傅里叶变换 |
是的 |
是的 |
排序数组元素 |
是的,使用 |
当你选择使cuFFTGPU编码器应用程序或使用中的选项config_object.GpuConfig。EnableCUFFT = true
GPU编码器地图中的CLI财产FFT,IFFT,FFT2,IFFT2,FFTN.IFFTN
函数调用到相应的cuFFT库调用。对于2-D转换和更高,GPU编码器创建多个1-D批处理转换。这些批处理转换比单个转换具有更高的性能。GPU编码器只支持错位转换。金宝app如果使cuFFT,则GPU编码器使用CFFTW.
可用的或从可移植的MATLAB FFT生成内核的库。支持单精度和双精度数据类型。金宝app输入和输出可以是实值或复值,但实值变换更快。cuFFT库支持通常指定为2金宝app的幂或可以分解为小素数乘积的值的输入大小。一般来说,质因数越小,性能越好。
请注意
使用CUDA库名称,如袖口
,cublas
, 和cudnn
因为MATLAB函数的名称会导致代码生成错误。
coder.gpu.kernel
|coder.gpu.kernelfun
|gpucoder.matrixmatrixkernel.
|coder.gpu.constantMemory
|gpucoder.stencilKernel
|gpucoder.sort