CUDA 教程(一) GPU 編程概述和 CUDA 環境搭建
前言 本文將帶大家瞭解 CUDA 編程,學習使用C和Python調用CUDA編程接口,對模型進行推理加速,性能優化。我們將從底層原理開始,帶大家瞭解CUDA的工作機制,一步步掌握CUDA編程。相信大家會受益菲淺。
歡迎關注公眾號CV技術指南,專注於計算機視覺的技術總結、最新技術跟蹤、經典論文解讀、CV招聘信息。
本教程來自知識星球【CV技術指南】更多技術教程,可加入星球學習。
零教程的基本概述
在深度學習蓬勃發展的今天,模型變得越來越深,參數愈加龐大,雖然準確率不斷增長,由於硬件受限,對實際場景部署的要求也越來越高,CUDA 編程成為了一門必備的武林絕學。如果你對模型的推理速度有較高要求,如果你有龐大的數據流等待推理,一起跟着教程瞭解這門技術。
該教程目前暫定有以下章節,如有添加將會另行説明:
通過這些教程,可以説初入了 CUDA 編程的世界,基本學會了如何部署加速自己的深度學習模型。
一 CUDA簡介
首先介紹一下 GPU,在計算機中,GPU 相比 CPU,擁有非常多的內核,這意味着 GPU 可以以非常高的吞吐量執行程序,如同一條非常寬闊的道路可以同時讓很多車輛同時通行,例如最新的 RTX 3090 的核心數達到了恐怖的 10496 個,而當前的頂級 CPU 通常只有不超過 32 核心。因此我們需要正確地設計並行化加速算法,就可以發揮 GPU 的強大優勢。
CUDA 是由英偉達 NVIDIA 於 2007 年所推出針對 NVIDIA GPU 專有系統,通過 CUDA,用户可方便地使用封閉好的 SDK 對 GPU 進行復雜的數值計算,在深度學習領域,CUDA 提供了一套強大的加速並行計算和人工智能相關的代碼庫,同時,NVIDIA 官方提供了非常完善的安裝程序。
二 CUDA 安裝
Linux 安裝
首先檢查本機是否有 nvidia 的顯卡
lspci | grep -i "nvidia"
請不要在vm虛擬機中安裝 CUDA
以筆主的電腦為例,有一張 RTX 3060 的移動顯卡
之後去 NVIDIA 官網 下載對應發行版的 CUDA Toolkit,這裏根據自己的深度學習框架選擇版本,在安裝 Toolkit 時會自帶 CUDA Driver
下載文件推薦選擇 runfile 格式
文件比較大,等待時確保機器上有相應的依賴庫,可以運行下面命令安裝依賴庫
如果系統為圖形界面,需要檢查系統是否自帶開源 NVIDIA Nouveau 驅動
lsmod | grep -i "nouveau"
如果有輸出,需要禁用 Nouveau 驅動
sudo vim /etc/modprobe.d/blacklist.conf
在文件中追加如下內容
同時卸載 nvidia 相關包
sudo apt purge nvidia-*
重啟系統
sudo reboot
重啟後使用Ctrl + Alt + F2
進入 tt2,再次檢查開源驅動是否啟動
lsmod | grep -i "nouveau"
然後關閉顯示服務,並修改安裝文件權限
sudo service lightdm stop
chmod 777 cuda_10.2.89_440.33.01_linux.run
之後運行 CUDA 安裝腳本,在安裝時
sudo sh cuda_*_linux.run
安裝完成後腳本會自動在/usr/local
創建 cuda -> /usr/local/cuda-11.8/
軟鏈接,在 ~/.bashrc
寫入
在終端中輸入 nvcc -V
,如有類似下面的輸出,則安裝成功
安裝完成後重啟圖形界面
sudo service lightdm restart
接下來安裝 cuDNN
http://developer.nvidia.com/rdp/cudnn-download
下載完成後解壓
zip -xf cudnn-linux-x86_64-8.6.0.163_cuda11-archive.tar.xz
將解壓後的文件拷貝到 CUDA 對應的安裝目錄下,並添加權限
即安裝完成
Windows 安裝
打開設備管理器,查看當前顯卡型號
以筆主的電腦為例,有一張 RTX 3060 的移動顯卡
再在桌面右擊或打開系統小托盤,打開 NVIDIA 控制面板
這裏推薦 Studio 驅動程序,不建議 Game Ready 驅動程序,可以在 NVIDIA 驅動程序下載 找到對應顯卡的驅動程序。安裝完成後如圖所示
之後根據系統驅動程序版本下載 CUDA 安裝程序,點擊查看系統驅動程序版本和 CUDA 版本對應關係,推薦 exe(local)
下載完成後雙擊打開,這裏使用默認位置
使用自定義安裝
這裏要記住安裝位置,推薦默認
安裝後會自動添加環境變量,打開 Powershell / CMD,輸入nvcc -V
如有類似下面的輸出,則安裝成功
接下來安裝 cuDNN
http://developer.nvidia.com/rdp/cudnn-download
下載完成解壓後如何下圖
把這三個文件夾拷貝到 CUDA 的安裝目錄下,同名文件夾會自動合併。
將如下路徑添加到系統環境變量中
即安裝完成
三 PyCUDA
PyCUDA 是 NVIDIA 針對 python 編寫的 CUDA API,底層使用 C++, 使用 PyCUDA 可以更方便地編寫代碼。同樣 CUDA 錯誤都會自動轉換為 Python 異常。
Linux 安裝
確保電腦中安裝了 python 環境和 pip,安裝命令
pip install pycuda
Windows 安裝
根據自己的 CUDA 版本 和 Python 版本下載 whl 文件 http://www.lfd.uci.edu/~gohlke/pythonlibs/#pycuda
安裝命令
pip install pycuda*.whl
四 Nvidia Nsight Systems
簡稱 nsys
,是一款低開銷性能分析工具,旨在為開發人員提供優化軟件所需的洞察力。無偏差的活動數據可在工具中可視化,可幫助用户調查瓶頸,避免推斷誤報,並以更高的性能提升概率實現優化。用户將能夠識別問題,例如 GPU 閒置、不必要的 GPU 同步、CPU 並行化不足。
根據系統平台選擇合適的安裝包
http://developer.nvidia.cn/gameworksdownload#?dn=nsight-systems-2022-4
安裝完成後輸入命令
nsys --version
如有返回,即安裝完成
本教程來自知識星球【CV技術指南】更多技術教程,可加入星球學習。
歡迎關注公眾號CV技術指南,專注於計算機視覺的技術總結、最新技術跟蹤、經典論文解讀、CV招聘信息。
【技術文檔】《從零搭建pytorch模型教程》122頁PDF下載
QQ交流羣:444129970。羣內有大佬負責解答大家的日常學習、科研、代碼問題。
其它文章
用於超大圖像的訓練策略:Patch Gradient Descent
CV小知識討論與分析(5)到底什麼是Latent Space?
CVPR 2023 Workshop | 首個大規模視頻全景分割比賽
如何更好地應對下游小樣本圖像數據?不平衡數據集的建模的技巧和策
CVPR 2023 Workshop | 首個大規模視頻全景分割比賽
如何更好地應對下游小樣本圖像數據?不平衡數據集的建模的技巧和策
用少於256KB內存實現邊緣訓練,開銷不到PyTorch千分之一
DAMO-YOLO | 超越所有YOLO,兼顧模型速度與精度
- 普通段位玩家的CV算法崗上岸之路(2023屆秋招)
- 用於超大圖像的訓練策略:Patch Gradient Descent
- 關於知識蒸餾,你一定要了解的三類基礎算法
- 深度理解變分自編碼器(VAE) | 從入門到精通
- CUDA 教程(一) GPU 編程概述和 CUDA 環境搭建
- 一文總結當下常用的大型 transformer 效率優化方案
- 多模態學習有哪些架構?MBZUAI最新《多模態表示學習》綜述,29頁詳述多模態表示學習的演化、預訓練及其應用綜述
- Transformer-Based Learned Optimization
- U-Net在2022年相關研究的論文推薦
- ECCV 2022 | 新方案: 先剪枝再蒸餾
- CVPR2022 | 簡單高效的語義分割體系結構
- CVPR 2022 | 網絡中批處理歸一化估計偏移的深入研究
- CVPR2022 | 通過目標感知Transformer進行知識蒸餾
- 經典論文 | 300FPS,超快結構感知的深度車道檢測
- YOLO系列梳理(九)初嘗新鮮出爐的YOLOv6
- CVPR2022 | 長期行動預期的Future Transformer
- CVPR2022 | 可精簡域適應
- CVPR2022 | 弱監督多標籤分類中的損失問題
- 計算機視覺中的論文常見單詞總結
- CVPR2022 | A ConvNet for the 2020s & 如何設計神經網絡總結