CUDA标准库与生态
标准库
CUDA提供了覆盖数学函数、线性代数、图像处理和机器学习以及其他重要领域的标准库供大家使用。这些库提供了大量高性能算法,可以节约大量时间。
库名称 | 介绍 |
---|---|
数学库 | 涉及到各种精度的数学计算,可以查看文档 |
Thrust | 类似C++的标准模板库 |
cuBLAS | 基本线性代数子程序 |
cuFFT | 快速傅里叶变换 |
cuSPARSE | 稀疏矩阵 |
cuRAND | 随机数生成库 |
cuSolver | 稠密矩阵和稀疏矩阵计算库 |
cuDNN | 深度神经网络 |
上述库需要使用时查阅文档即可
Thrust库
这是一个实现了众多基本并行算法的C++模板库,类似于STL。
其提供了两种矢量结构(vector),需要包含<thrust/host_vector.h>
或<thrust/device_vector.h>
来使用。
- thrust::host_vector
: 存储于主机的vector - thrust::device_vector
: 存储于设备的vector
当然,其也提供了很多常用的算法
关于Thrust库的文档请查阅此处
cuBLAS
这个库专门用于进行矩阵运算,提供了诸多的矩阵相关的API,可以参阅文档
在使用的时候个地方需要特别提及一下,这个库由于最开始是使用Fortran语言实现的,因此带有Fortran语言风格。比如矩阵式按列有限存储的,这对局部性会产生印象,需要注意。
cuSolver
这个库也是处理矩阵的,但是其主要处理高级矩阵运算,比如矩阵求逆或者对角化之类的东西。
cuRAND
这个库用于产生随机数,可以产生伪随机数和准随机数。