CPU、GPU、CUDA,CuDNN 简介
cuda
CUDA(Compute Unified Device Architecture),是英伟达公司推出的一种基于新的并行编程模型和指令集架构的通用计算架构,它能利用英伟达GPU的并行计算引擎,比CPU更高效的解决许多复杂计算任务。
使用CUDA的好处就是透明。根据摩尔定律GPU的晶体管数量不断增多,硬件结构必然是不断的在发展变化,没有必要每次都为不同的硬件结构重新编码,而CUDA就是提供了一种可扩展的编程模型,使得已经写好的CUDA代码可以在任意数量核心的GPU上运行。如下图所示,只有运行时,系统才知道物理处理器的数量。
cudnn
NVIDIACUDA®深度神经网络库(cuDNN)是GPU加速的用于深度神经网络的原语库。cuDNN为标准例程提供了高度优化的实现,例如向前和向后卷积,池化,规范化和激活层。
全球的深度学习研究人员和框架开发人员都依赖cuDNN来实现高性能GPU加速。它使他们可以专注于训练神经网络和开发软件应用程序,而不必花时间在底层GPU性能调整上。cuDNN的加快广泛使用的深度学习框架,包括Caffe2,Chainer,Keras,MATLAB,MxNet,PyTorch和TensorFlow。
配置pytorch
https://pytorch.org/
因为这里只支持到cuda11.3,所以在下面cuda和cudnn的安装都要是11.3版本的。
cuda下载链接
https://developer.nvidia.com/cuda-toolkit-archive
cudnn下载链接
https://developer.nvidia.com/rdp/cudnn-archive
安装教程(移动三个文件夹)
https://blog.csdn.net/sinat_23619409/article/details/84202651
pytorch版本,cuda版本,系统cuda版本查询和对应关系
pytorch版本,cuda版本,系统cuda版本查询和对应关系
https://www.cnblogs.com/Wanggcong/p/12625540.html
测试GPU是否可用
import torch
flag = torch.cuda.is_available()
print(flag)
ngpu= 1
# Decide which device we want to run on
device = torch.device("cuda:0" if (torch.cuda.is_available() and ngpu > 0) else "cpu")
print(device)
print(torch.cuda.get_device_name(0))
print(torch.rand(3,3).cuda())
输出:
True
cuda:0
GeForce GTX 1080
tensor([[0.9530, 0.4746, 0.9819],
[0.7192, 0.9427, 0.6768],
[0.8594, 0.9490, 0.6551]], device='cuda:0')