⚙️

command 'nvcc' not foundの解決

2024/10/03に公開

状況

環境はUbuntu20.04 + VSCode + CUDA12.1
説明が長いので一言でまとめると、cudaはある、pytorchの実行もできる、けどnvcc -Vが認識してない

途中でubuntuとvscodeでnvccのバージョンが違う状態に陥った。

pip install flash-attn --no-build-isolation

を実行したときに、subprocess errorでnvcc command has not foundとなり、vscodeのbash上ではnvcc -Vを実行しても反応しなかった。

解決方法

環境変数の設定として

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

を実行するとVSCodeのbash上でnvcc -Vに反応。

(env) tell@tell:~/devenv/Creativity$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243

となり本来入っているはずのcudaのバージョン(今回は12.1)と異なるものが表示された。

VSCodeのbash上でバージョンを指定した上で以下を実行しても反応がない…

export PATH=/usr/local/cuda-12.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH

そこでUbuntuのterminal上で環境変数として

tell@tell:~$ export PATH=/usr/local/cuda-12.1/bin:$PATH
tell@tell:~$ export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH

を実行するとubuntuのターミナル上では

tell@tell:~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Feb__7_19:32:13_PST_2023
Cuda compilation tools, release 12.1, V12.1.66
Build cuda_12.1.r12.1/compiler.32415258_0

となりnvccを無事認識。

しかし、vscodeのbashでは release 10.0のままになった。

つまり、Ubuntuのterminal ⇒12.1 vscodeのbash⇒10.0という状況が発生

VSCodeのterminalとUbuntuのbashでnvcc -Vが異なるときの解決方法

VSCODEの設定ファイルsetting.jsonにCUDA12.1を常に使用するように環境変数を追加

  1. VsCodeでコマンドパレットを開く(Ctrl + Shift + P)

  2. Preferences: Open User Settings(JSON)と入力してsetting.jsonを開く

  3. 以下のように環境変数を設定する

    {
      "terminal.integrated.env.linux": {
        "PATH": "/usr/local/cuda-12.1/bin:${env:PATH}",
        "LD_LIBRARY_PATH": "/usr/local/cuda-12.1/lib64:${env:LD_LIBRARY_PATH}"
      }
    }
    

    もともとなにか書き込まれている場合はこちら(私がそうだった)

    {
      "explorer.confirmDelete": false,
      "explorer.confirmDragAndDrop": false,
      "terminal.integrated.profiles.linux": {
        "bash": {
          "path": "/bin/bash",
          "args": [],
          "env": {
            "PATH": "/usr/local/cuda-12.1/bin:${env:PATH}",
            "LD_LIBRARY_PATH": "/usr/local/cuda-12.1/lib64:${env:LD_LIBRARY_PATH}"
          }
        }
      }
    }
    
    

    これでVSCodeでもnvcc -Vが認識する

    (env) tell@tell:~/devenv/Creativity$ nvcc -V
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2023 NVIDIA Corporation
    Built on Tue_Feb__7_19:32:13_PST_2023
    Cuda compilation tools, release 12.1, V12.1.66
    Build cuda_12.1.r12.1/compiler.32415258_0
    

以上!

Discussion