0%

CUDA高性能并行计算(12)--CUDA标准库与生态

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

这个库用于产生随机数,可以产生伪随机数和准随机数。