1. 程式人生 > 其它 >部署paddlecor中遇到的GPU環境整合問題(CUDA版本不一致、GPU不識別等)

部署paddlecor中遇到的GPU環境整合問題(CUDA版本不一致、GPU不識別等)

  1. 背景
    在使用百度飛槳的paddleocr過程中,安裝配置gpu執行環境,程式碼部署後執行報錯,無法檢測到gpu。(實際我的環境是有八張顯示卡gpu的)。具體錯誤資訊如下:
    Compiled with WITH_GPU, but no GPU found in runtime.
    You are using GPU version Paddle, but your CUDA device is not set properly. CPU device will be used by default
  2. 解決思路
    以paddleocr為例,如果是嚴格按照文件部署配置環境,那麼基本可以歸結為軟體版本問題。分別可以檢查cuda版本、paddleocr版本、cudnn版本、paddle serving版本等軟體是否匹配。
  3. 可能遇到的問題及具體操作。
  • nvcc和nvidia-smi檢視的cuda版本不一致。
    1、先使用nvcc -V檢視cuda版本。

    2、再使用nvidia-smi檢視cuda版本。

    3、出現版本不一致情況該以哪個版本為準呢,一般是以nvcc -V顯示的cuda版本為準,上層程式sdk都會呼叫這個執行時api。檢視具體lib安裝路徑及版本資訊可以執行 cat /usr/local/cuda/version.txt,相關lib也在這個路徑下檢視。
    4、怎麼理解nvcc和nvidia-smi不一致的問題。
    nvcc屬於CUDA的編譯器,將程式編譯成可執行的二進位制檔案,nvidia-smi全稱是NVIDIA System Management Interface ,是一種命令列實用工具,旨在幫助管理和監控NVIDIA GPU裝置。
    CUDA有runtime api和driver叩i,兩者都有對應的CUDA版本,nvcc —version顯示的就是前者對應的CUDA版本,而nvidia-smi顯示的是後者對應的CUDA版本。
    用於支援driver api的必要檔案由GPU driver installer安裝,nvidia-sm就屬於這一類API;而用於支援runtime api的必要檔案是由CUDA Toolkit installer安裝的。nvcc是與CUDA Toolkit—起安裝的CUDA compiler driver tool,它只知道它自身構建時的CUDA runtime版本,並不知道安裝了什麼版本的GPU driver,甚至不知道是否安裝了GPU driver。
    CUDA Toolkit Installed^常會集成了GPU driver lnstallerz 如果你的CUDA均通過CUDA Tooklkit Installer來安裝,那麼runtime api和driver api的版本應該是一致的,也就是說,nvcc -version和nvidia-smi顯示的版本應該一樣。否則,你可能使用了單獨的GPU drive門nstaller來安裝GPU dirver,這樣就會導致nvidia-smi和nvcc —version顯示的版本不一致了。
    通常,driver api的版本能向下相容runtime api的版本,即nvidia-smi顯示的版本大於nvcc -version的版本通常不會出現大問題。
    5、cuda和驅動版本驗證表
  • 檢視cudnn版本
    cat /usr/local/cuda-9.2/include/cudnn.h | grep CUDNN_MAJOR -A 2
  • 檢查paddlepaddle-gpu版本
    版本號後面跟著的post**數字按順序代表了你的cuda以及cudnn的版本。比如環境是cuda9和cudnn7,那麼應該選擇以post97結尾的版本。
  1. 解決思路。
    通過排查判斷錯誤的原因是 cuda版本和paddlepaddle-gpu不一致,我這裡是cuda版本低、paddlepaddle-gpu版本高,有幾種解決方法。
    1、升級cuda。
    2、尋找與cuda9匹配的低版本paddlepaddle-gpu。
    3、使用nvidia-docker環境。

參考:https://blog.csdn.net/qq_43585377/article/details/114387345
https://www.jianshu.com/p/eb5335708f2a
https://blog.csdn.net/XP1990/article/details/120728487