GPU编码器™支持为C金宝appUDA优化的库®cuBLAS、cuSOLVER、cuFFT、Thrust、cuDNN和TensorRT等图形处理器库。
Cublas库是在NVIDIA之上的基本线性代数子程序(BLA)的实现®CUDA运行时。它允许您访问NVIDIA GPU的计算资源。
Cusolver库是基于Cublas和Cusparse库的高级包。它提供了有用的Lapack样功能,例如常见的矩阵分解和用于致密矩阵的三角求解程序,稀疏最小二乘求解器和特征值求解器。
袖口库提供了NVIDIA GPU上快速傅里叶变换(FFT)算法的高性能实现。Cublas,Cusolver和袖口图书馆是NVIDIA CUDA工具包的一部分。
Thrust是一个c++的CUDA模板库。CUDA工具包附带了Thrust库,允许您利用gpu加速原语(如sort)来实现复杂的高性能并行应用程序。
NVIDIA CUDA深神经网络库(CUDNN)是一种用于深神经网络的GPU加速基元图书馆。CUDNN为标准例程提供高度调整的实现,例如前向和向后卷积,汇集,归一化和激活层。nvidia张力是一个高性能的深度学习推理优化器和运行时库。有关更多信息,请参见使用CUDNN的深度学习网络代码生成和使用张于Rentrt的深度学习网络代码生成。
GPU编码器不需要一个特殊的pragma来生成内核对库的调用。在代码生成过程中,当您选择使cuBLAS选项中的GPU编码器或使用config_object.gpuconfig.enablecublas = true
CLI中的属性,GPU编码器用对Cublas库的调用替换一些功能。当你选择启用cusolver选项中的GPU编码器或使用config_object.GpuConfig。EnableCUSOLVER = true
GPU编码器在CLI中的属性用对Cusolver库的调用替换一些功能。对于GPU编码器将高级数学函数替换为库呼叫,必须满足以下条件:
必须存在特定于GPU的库替换。
马铃薯®编码器™必须满足数据大小阈值。
GPU编码器支持cu金宝appFFT、cuSOLVER和cuBLAS库替换表中列出的功能。对于CUDA中没有替换的函数,GPU Coder使用映射到GPU的可移植MATLAB函数。
Matlab功能 | 描述 | Matlab编码器Lapack支金宝app持 | Cublas,Cusolver,袖口,推力支持金宝app |
---|---|---|---|
|
矩阵相乘 |
是的 |
是的 |
|
解线性方程组 |
是的 |
是的 |
|
LU矩阵分解 |
是的 |
是的 |
|
Orthogonal-triangular分解 |
是的 |
部分的 |
|
矩阵的行列式 |
是的 |
是的 |
|
Cholesky分解 |
是的 |
是的 |
|
互惠条件号 |
是的 |
是的 |
|
解决线性方程系统 |
是的 |
是的 |
|
特征值和eIgen vectors |
是的 |
没有 |
|
施尔分解 |
是的 |
没有 |
|
奇异值分解 |
是的 |
部分的 |
|
快速傅里叶变换 |
是的 |
是的 |
|
快速傅里叶反变换 |
是的 |
是的 |
排序数组元素 |
是的,使用 |
当你选择启用袖口选项中的GPU编码器或使用config_object.gpuconfig.enablecufft = true
属性,GPU编码器映射fft、传输线、fft2 ifft2 fftn.ifftn
您的MATLAB代码中的函数调用到相应的吊杆库调用。对于2-D变换和更高,GPU编码器创建多个1-D批量变换。这些批量变换的性能高于单个变换。GPU编码器仅支持出于退出的变金宝app换。如果启用袖口未选择,GPU编码器使用CFFTW
Libraries可用或从便携式MATLAB FFT生成内核。支持单一和双精度数据类型。金宝app输入和输出可以是真实的或复杂的值,但实值变换更快。袖口库支持输入大小通常被指定金宝app为2的功率为2或可以在小型素数的产品中进行的值。一般来说,主要因素越小,性能越好。
笔记
使用CUDA库名,例如cufft
那Cublas.
,CUDNN.
由于MATLAB函数的名称导致代码生成错误。
coder.gpu.kernel.
|coder.gpu.kernelfun.
|gpucoder.matrixMatrixKernel
|coder.gpu.constantmemory.
|gpucoder.stildkernel.
|gpucoder.sort.