檢測CUDA、cuDNN、Pytorch是否可用
大家看完程式碼不妨看一下後文的詳解哦~
默子在原有基礎上增加了很多新的內容。
解釋的更加詳細,更加具體,更加新穎!
廢話不多說,我們直接開始。
複製下列程式碼到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 %
程式碼逐行剖析:
-
torch.version.cuda
會輸出當前CUDA的版本,一般來說,會有 11.7 和 11.3 (更老的版本可能會出現相容性問題,建議大家去更新一下,直接到
Nvidia
官網就可以)
-
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)。
-
torch.cuda.is_available()
返回GPU是否可用,可用為
True
,不可用為False
-
torch.cuda.device_count()
返回顯示卡數量,大家的電腦一般都是
1
啦,哈哈哈(友情提示:如果電腦是多GPU的,上述程式碼只能列出第一個GPU裝置的部分資訊,並不能列出全部GPU的資訊。如果想獲取全部資訊,可以先獲取GPU列表,然後迴圈輸出每個GPU)
-
torch.cuda.is_bf16_supported()
顯示卡是否支援BF16計算,支援為
True
,不支援為False
BF16,有時也被稱為BFloat16或Brain Float16,是一種針對人工智慧與深度學習應用程式進行最佳化的新數字格式。 它在谷歌、 英特爾 、 Arm 和許多其他公司的人工智慧加速器得到了廣泛的應用。使用BF16主要是因為,神經網路對指數的大小比尾數敏感得多,所以不必使用傳統尾數精度更高的FP64或者是FP32。 默子的960M是肯定不支援BF16的,目前支援BF16的顯示卡有很多,比較大眾化的應該就是NVIDIA 老黃家NVIDIA創始人兼執行長的 RTX3060 和 RTX3070 了。至於專業的深度學習卡,絕大部分都是支援的。
-
torch.cuda.get_device_capability()
獲取GPU的算力 (CUDA Capability Major/Minor version number) ,對於N卡來說,檢視全部型號顯示卡的算力請訪問 https://developer.nvidia.com/cuda-gpus#compute (其餘顯示卡請讀者自行搜尋吧)
在官方給出的文件中,如果進行神經網路的訓練,建議GPU此數值在 5.0 以上(默子的卡剛剛及格,嗚嗚嗚)
torch.cuda.get_device_properties(0).total_memory
該條命令可以獲取到當前GPU的總視訊記憶體大小。詳細資訊可參考Pytorch官方文件https://pytorch.org/docs/stable/generated/torch.cuda.get_device_properties.html
TensorCore
能力
傳統的N卡GPU都會有CUDA
核心,用來處理大量的浮點運算。而 Tensor
核心能加速處於深度學習神經網路訓練和推理運算核心的矩陣計算,能夠在維持超低精度損失的同時大幅加速推理吞吐效率。不過,最近幾年的卡才會搭載TensorCore
,這個會直接體現在顯示卡的算力等級上,大於7
的顯示卡才會有搭載 TensorCore
。
具體是如何加速的,以及具體會加速多少,這個涉及到CUDA和Tensor核心的底層原理與深度學習相關知識。默子就不在這裡展開闡述了,感興趣的同學可以找一些文章、影片去看看。但就一句話,在深度學習方面,
TensorCore
吊打CUDACore
。
$$\color{#CC0033}{今天的內容到這裡就結束啦}$$
$$\color{#CC0033}{點贊不斷,更新不斷}$$
$$\color{#FF9900}{關注默子,獲得更多優質學習資源}$$
$$\color{#FF9900}{一起無限進步!}$$
更多內容將同步釋出在作者微信公眾號上,感興趣的同學可以關注喔 ~
公眾號名稱:
AinfO Tech
,下方圖片掃碼關注~