CUDA
CUDA是英伟达开发的一套平行计算平台,使程序应用的运行和计算可以使用GPU(仅限于NVIDIA的GPU,其他的如AMD并不支持),加快计算速度,如Tensorflow、百度Paddle的开发语言都包含CUDA,因此才能在训练模型时选择是否使用GPU训练;并为标准编程语言提供一组扩展,比如C和C++。因此使用CUDA C/C++能够调用平行计算编程库,使开发者更专注于并行计算的效率提升
CUDA的使用需要满足一定的硬件条件,首先是支持CUDA的GPU,这里可以查看自己的Windows是否有这样的GPU:
ctrl + alt + delete
如图所示,左下角GPU 0是Intel显卡,GPU 1是NVIDIA的GeForce MX250 GPU,其将可用于深度学习训练模型
查看该GPU支持的CUDA版本:
Windows系统搜索打开NVIDIA Control panel,如图所示:
点击左下角系统信息后,可以看到支持的版本:
cuDNN
CUDA虽然使得计算可以在GPU上进行,但NVIDIA进一步在CUDA的基础上进行改进,根据前向反向传播、卷积、池化、normalization、**的计算特性,做了一些trick,使得DNN的训练计算更快(个人理解)
OpenCL
OpenCL是一个通用的并行编程的标准,也提供了编程语言OpenCL C和API函数,其不似CUDA仅支持自家的GPU设备,OpenCL支持NVIDIA、AMD等。不过似乎tensorflow和paddle都并不使用其作为开发语言之一,可能是因为NVIDIA有CUDA和cuDNN的支持,统一的开发套件,丰富的库等