關於CUDA,cuDNN,TF,CUDA驅動版本兼容問題


實際工作當中,經常維護好幾個項目的代碼,不同項目依賴的TF版本不一致問題。網上找了好多資料,但是每次遇到的問題都不一樣,每次都要去查(就是是一樣的問題,解決辦法也可能會不一樣)每次踩坑無數,今天痛定思痛,下決心總結一下。

基本概念

  • CUDA:用於GPU編程的語言,跑TF的時候用了GPU,TF里面很多函數(或者依賴庫)是CUDA語言編寫的。不同TF版本需要不同的CUDA。
  • cuDNN:NVIDIA為深度學習,矩陣運算寫的一個加速庫。CUDA版本必須和cuDNN版本匹配。cuDNN和TF版本匹配與否則無所謂(不過CUDA和TF版本必須匹配,所以cuDNN版本和TF版本是間接依賴關系)。
  • TF:這個沒什么好說的。個人經驗,別用太新的,如果每次都用最新的,那么進而導致CUDA也要不斷更新
  • NVIDIA驅動版本:保持最新就好了,NVIDIA驅動版本要求和CUDA版本匹配,而CUDA又要求cuDNN/TF是匹配的。不過NVIDIA驅動版本是向下兼容的,所以保持最新就沒事。輸入nvidia-smi可以查看:

工作當中改如何做?

  • 盡量保持最新的CUDA驅動版本
  • 維護多個cuda版本:cuda安裝到/usr/local/目錄下,可以通過命令切換不同版本
sudo rm -rf /usr/local/cuda #刪除之前創建的軟鏈接
sudo ln -s /usr/local/cuda-8.0 /usr/local/cuda #創建新 cuda 的軟鏈接
  • 將cuDNN和CUDA解耦:說白了就是,二者單獨存放,不要混在一起。切換cuDNN只需要在~/.bashrc文件里面設置如下即可:
# 在.bashrc文件里面寫入該環境變量,切換cudnn只需要把cudnn設置到/root/cuda路徑即可
export LD_LIBRARY_PATH=/root/cuda/lib64:$LD_LIBRARY_PATH
  • TF版本別用太新的:使用pip install tensorflow-gpu=1.x.0安裝
  • 遇到問題不要無腦google:先自行分析原因,嘗試辦法,然后再google。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM