主要内容

库调用的内核

GPU编码器™ 支持为万博1manbetxCUDA优化的库®cuBLAS、cuSOLVER、cuFFT、Thrust、cuDNN和TensorRT等图形处理器库。

  • CuBLAS库是英伟达的基础线性代数子程序(BLAS)的一种实现。®CUDA运行时。它允许您访问NVIDIA GPU的计算资源。

  • cuSOLVER库是基于cuBLAS和cuSPARSE库的高级包。它提供了有用的类似LAPACK的功能,例如用于密集矩阵的公共矩阵分解和三角求解例程、稀疏最小二乘解算器和特征值解算器。

  • cuFFT库在NVIDIA GPU上提供了快速傅里叶变换(FFT)算法的高性能实现。CuBLAS、CuoSver和Cufft库是英伟达CUDA工具包的一部分。

  • Thrust是一个c++的CUDA模板库。CUDA工具包附带了Thrust库,允许您利用gpu加速原语(如sort)来实现复杂的高性能并行应用程序。

  • 英伟达CUDA深度神经网络库(CUDNN)是一个用于深度神经网络的GPU加速的图元库。cuDNN为标准例程(如前向和后向卷积、池、规范化和激活层)提供了高度优化的实现。英伟达坦索特是一个高性能的深度学习推理优化器和运行时库。有关更多信息,请参见基于cuDNN的深度学习网络代码生成基于TensorRT的深度学习网络代码生成.

GPU编码器不需要一个特殊的pragma来生成内核对库的调用。在代码生成过程中,当您选择使cuBLAS选项中的GPU编码器或使用config_object.GpuConfig.EnableCUBLAS=true属性,GPU编码器用对cuBLAS库的调用替换某些功能。当您选择启用cuSOLVER选项中的GPU编码器或使用config_object.GpuConfig。EnableCUSOLVER = true属性,GPU编码器用对cuSOLVER库的调用替换某些功能。要让GPU编码器将高级数学函数替换为库调用,必须满足以下条件:

  • 这些函数必须存在GPU特定的库替换。

  • MATLAB®编码员™必须满足数据大小阈值。

GPU编码器支持cu万博1manbetxFFT、cuSOLVER和cuBLAS库替换表中列出的功能。对于CUDA中没有替换的函数,GPU Coder使用映射到GPU的可移植MATLAB函数。

MATLAB函数 描述 MATLAB编码器拉巴克支架万博1manbetx cuBLAS、cuSOLVER、cuFFT、推力支架万博1manbetx

时间

矩阵相乘

mldivide(“\”)

解线性方程组Ax=B对于x

LU矩阵分解

qr

Orthogonal-triangular分解

部分的

详细资料

矩阵的行列式

胆固醇

Cholesky分解

雷康德

倒数条件数

linsolve

求解线性方程组Ax=B

eig

特征值和特征向量

没有

舒尔

舒尔分解

没有

svd

奇异值分解

部分的

fft,fft2,fftn

快速傅里叶变换

ifft,ifft2,ifftn

快速傅里叶反变换

排序

对数组元素排序

是的,使用gpucoder.sort

当您选择启用袖口选项中的GPU编码器或使用config_object.GpuConfig.enablecuft=true属性,GPU编码器映射fft、传输线、fft2 ifft2 fftn.ifftnMATLAB代码中的函数调用到相应的cuFFT库调用。对于二维和更高的变换,GPU编码器创建多个一维批处理变换。这些批处理转换比单个转换具有更高的性能。GPU编码器仅支持异地转换。如果万博1manbetx启用袖口未选中,GPU编码器使用CFFTW库(如果可用)或从便携式MATLAB FFT生成内核。支持单精度和双精度数据类型。输入和输出可以是实值或复数,但实值转换速度更快。cuFFT库支持输入大小,通常指定为2的幂或可以分解为小素数乘积的值。一般来说,主因子越小,性能越好。万博1manbetx

笔记

使用CUDA库名,例如cufft,库布拉斯,cudnn因为MATLAB函数的名称会导致代码生成错误。

另见

|||||

相关的话题