文章目录
- 检测代码:
- 代码逐行剖析:
- 1. `torch.version.cuda`
- 2. `torch.__version__` .
- 3. `torch.cuda.is_available()`
- 4. `torch.cuda.device_count()`
- 5. `torch.cuda.is_bf16_supported()`
- 6. `torch.cuda.get_device_capability()`
- 7. `torch.cuda.get_device_properties(0).total_memory`
- 8. `TensorCore` 能力
- 今天的内容到这里就结束啦 \textcolor{#CC0033}{今天的内容到这里就结束啦} 今天的内容到这里就结束啦
- 点赞不断,更新不断 \textcolor{#CC0033}{点赞不断,更新不断} 点赞不断,更新不断
- 关注默子,获得更多优质学习资源 \textcolor{#FF9900}{关注默子,获得更多优质学习资源} 关注默子,获得更多优质学习资源
- 一起无限进步! \textcolor{#FF9900}{一起无限进步!} 一起无限进步!
大家看完代码不妨看一下后文的详解哦~
默子在原有基础上增加了很多新的内容。
解释的更加详细,更加具体,更加新颖!
废话不多说,我们直接开始。
检测代码:
复制下列代码到IDE中运行
import torch
print('CUDA版本:',torch.version.cuda)
print('Pytorch版本:',torch.__version__)
print('显卡是否可用:','可用' if(torch.cuda.is_available()) else '不可用')
print('显卡数量:',torch.cuda.device_count())
print('是否支持BF16数字格式:','支持' if (torch.cuda.is_bf16_supported()) else '不支持')
print('当前显卡型号:',torch.cuda.get_device_name())
print('当前显卡的CUDA算力:',torch.cuda.get_device_capability())
print('当前显卡的总显存:',torch.cuda.get_device_properties(0).total_memory/1024/1024/1024,'GB')
print('是否支持TensorCore:','支持' if (torch.cuda.get_device_properties(0).major >= 7) else '不支持')
print('当前显卡的显存使用率:',torch.cuda.memory_allocated(0)/torch.cuda.get_device_properties(0).total_memory*100,'%')
如果可以正常使用,大概率是这样的
CUDA版本: 11.7
Pytorch版本: 1.13.1+cu117
显卡是否可用: 可用
显卡数量: 1
是否支持BF16数字格式: 不支持
当前显卡型号: NVIDIA GeForce GTX 960M
当前显卡的CUDA算力: (5, 0)
当前显卡的总显存: 3.9998779296875 GB
是否支持TensorCore: 不支持
当前显卡的显存使用率: 0.0 %
代码逐行剖析:
1. torch.version.cuda
会输出当前CUDA的版本,一般来说,会有 **11.7** 和 **11.3** (更老的版本可能会出现兼容性问题,建议大家去更新一下,直接到 `Nvidia` 官网就可以)
2. torch.__version__
.
会输出当前 Pytorch 的版本,
对于`1.13.1+cu117`
1.13.0
表示当前Pytorch的大版本,目前主流的版本大约在1.8.0
-1.13.0
,当大家开始复现代码时,就会发现自己要在电脑上同时装好多个Pytorch版本,所以用Conda
去管理虚拟环境是很有必要的一件事哦~,大家对Conda虚拟环境管理
感兴趣的话,不妨点个赞,默子看看下期要不要出。cu113
表示当前 Pytorch 是GPU的,CUDA版本是11.3,如果是cp39
表示当前 Pytorch 是CPU版本,Python版本是3.9.X- 有的同学会看到
dev
开头的一串序号,dev20230114
表示是开发构建版(Pytorch.Nightly),具体构建日期为2023年1月14日,没有的话则是稳定版(Pytorch.Stable)。
3. torch.cuda.is_available()
返回GPU是否可用,可用为`True`,不可用为 `False`
4. torch.cuda.device_count()
返回显卡数量,大家的电脑一般都是 `1` 啦,哈哈哈(友情提示:如果电脑是多GPU的,上述代码只能列出第一个GPU设备的部分信息,并不能列出全部GPU的信息。如果想获取全部信息,可以先获取GPU列表,然后循环输出每个GPU)
5. torch.cuda.is_bf16_supported()
显卡是否支持BF16计算,支持为`True`,不支持为 `False`
> BF16,有时也被称为BFloat16或Brain Float16,是一种针对人工智能与深度学习应用程序进行优化的新数字格式。 它在谷歌、 英特尔 、 Arm 和许多其他公司的人工智能加速器得到了广泛的应用。使用BF16主要是因为,神经网络对指数的大小比尾数敏感得多,所以不必使用传统尾数精度更高的FP64或者是FP32。 默子的960M是肯定不支持BF16的,目前支持BF16的显卡有很多,比较大众化的应该就是NVIDIA [老黄](https://baike.baidu.com/item/%E9%BB%84%E4%BB%81%E5%8B%8B/6343558)家^NVIDIA创始人兼首席执行官^的 RTX3060 和 RTX3070 了。至于专业的深度学习卡,绝大部分都是支持的。
6. torch.cuda.get_device_capability()
获取GPU的算力 **(CUDA Capability Major/Minor version number)** ,对于N卡来说,查看全部型号显卡的算力请访问 [https://developer.nvidia.com/cuda-gpus#compute](https://developer.nvidia.com/cuda-gpus#compute) (其余显卡请读者自行搜索吧)
> 在官方给出的文档中,如果进行神经网络的训练,建议GPU此数值在 5.0 以上(默子的卡刚刚及格,呜呜呜)
7. torch.cuda.get_device_properties(0).total_memory
该条命令可以获取到当前GPU的总显存大小。详细信息可参考Pytorch官方文档https://pytorch.org/docs/stable/generated/torch.cuda.get_device_properties.html
8. TensorCore
能力
传统的N卡GPU都会有CUDA
核心,用来处理大量的浮点运算。而 Tensor
核心能加速矩阵计算,维持低损失加速推理效率。这个会直接体现在显卡的算力等级上,大于7
的显卡才会有搭载 TensorCore
。
具体是如何加速的,以及具体会加速多少,这个涉及到CUDA和Tensor核心的底层原理与深度学习相关知识。默子就不在这里展开阐述了,感兴趣的同学可以找一些文章、视频去看看。但就一句话,在深度学习方面,
TensorCore
吊打CUDACore
。