状況
環境は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を常に使用するように環境変数を追加
-
VsCodeでコマンドパレットを開く(Ctrl + Shift + P)
-
Preferences: Open User Settings(JSON)と入力してsetting.jsonを開く
-
以下のように環境変数を設定する
{ "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
以上!