【深度學習】檢測CUDA、cuDNN、Pytorch是否可用

HistoneMax發表於2023-01-17

檢測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 %

程式碼逐行剖析:

  1. torch.version.cuda

    會輸出當前CUDA的版本,一般來說,會有 11.711.3 (更老的版本可能會出現相容性問題,建議大家去更新一下,直接到 Nvidia 官網就可以)


  1. 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)。


  1. torch.cuda.is_available()

    返回GPU是否可用,可用為True,不可用為 False


  1. torch.cuda.device_count()

    返回顯示卡數量,大家的電腦一般都是 1 啦,哈哈哈(友情提示:如果電腦是多GPU的,上述程式碼只能列出第一個GPU裝置的部分資訊,並不能列出全部GPU的資訊。如果想獲取全部資訊,可以先獲取GPU列表,然後迴圈輸出每個GPU)


  1. torch.cuda.is_bf16_supported()

    顯示卡是否支援BF16計算,支援為True,不支援為 False

    BF16,有時也被稱為BFloat16或Brain Float16,是一種針對人工智慧與深度學習應用程式進行最佳化的新數字格式。 它在谷歌、 英特爾 、 Arm 和許多其他公司的人工智慧加速器得到了廣泛的應用。使用BF16主要是因為,神經網路對指數的大小比尾數敏感得多,所以不必使用傳統尾數精度更高的FP64或者是FP32。 默子的960M是肯定不支援BF16的,目前支援BF16的顯示卡有很多,比較大眾化的應該就是NVIDIA 老黃NVIDIA創始人兼執行長的 RTX3060 和 RTX3070 了。至於專業的深度學習卡,絕大部分都是支援的。


  1. torch.cuda.get_device_capability()

    獲取GPU的算力 (CUDA Capability Major/Minor version number) ,對於N卡來說,檢視全部型號顯示卡的算力請訪問 https://developer.nvidia.com/cuda-gpus#compute (其餘顯示卡請讀者自行搜尋吧)

    在官方給出的文件中,如果進行神經網路的訓練,建議GPU此數值在 5.0 以上(默子的卡剛剛及格,嗚嗚嗚)


  1. torch.cuda.get_device_properties(0).total_memory

該條命令可以獲取到當前GPU的總視訊記憶體大小。詳細資訊可參考Pytorch官方文件https://pytorch.org/docs/stable/generated/torch.cuda.get_device_properties.html


  1. TensorCore 能力

傳統的N卡GPU都會有CUDA核心,用來處理大量的浮點運算。而 Tensor核心能加速處於深度學習神經網路訓練和推理運算核心的矩陣計算,能夠在維持超低精度損失的同時大幅加速推理吞吐效率。不過,最近幾年的卡才會搭載TensorCore,這個會直接體現在顯示卡的算力等級上,大於7的顯示卡才會有搭載 TensorCore

具體是如何加速的,以及具體會加速多少,這個涉及到CUDA和Tensor核心的底層原理與深度學習相關知識。默子就不在這裡展開闡述了,感興趣的同學可以找一些文章、影片去看看。但就一句話,在深度學習方面,TensorCore吊打 CUDACore


$$\color{#CC0033}{今天的內容到這裡就結束啦}$$

$$\color{#CC0033}{點贊不斷,更新不斷}$$

$$\color{#FF9900}{關注默子,獲得更多優質學習資源}$$

$$\color{#FF9900}{一起無限進步!}$$

更多內容將同步釋出在作者微信公眾號上,感興趣的同學可以關注喔 ~

公眾號名稱:AinfO Tech ,下方圖片掃碼關注~

相關文章