NVIDIA,CUDAをインストールしてGROMACSをGPU上で動かす
環境 Linux:ubuntu22.04 実行は2023年6月。 NVIDIA,CUDAをインストールしてGROMAGSをGPU上で動かす
を目的とした記事です。
初心者向け解説追加&トラブル解決向けですので 基本はリンク先の記事通りに従えばうまく行きます。
NVIDIA, CUDAのインストールだけではトラブルは起きないと思いますが、GROMACSのダウンロードしたバージョンによってはGPUとしてCUDAを認識しなかったり、そもそもCMAKEできなかったりします。GROMACSのCMAKEがうまくいかなかったとしてもNVIDIA、CUDAのインストールからやり直す必要はないです。多分。
NVIDIA
だいたいは
↑ここに書いてある手順で大丈夫です。
自分がインストールした時のトラブルを中心に解説します。
* インストール済みNVIDIA,CUDAを確認
Linuxのターミナルを開いて
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
と打つと、blacklist-nouveau.confというファイルが強制オープンされるので
blacklist nouveau options nouveau modeset=0
と入力して保存してください。
sudo update-initramfs -u
これでNouveauが無効化されます。
ここまでの手順は間違えて別のバージョンのNVIDIAをインストールしちゃっても繰り返す必要はないです。心配ならその都度、sudo update-initramfs -u
をターミナルに打ってください。
dpkg -l | grep nvidia dpkg -l | grep cuda
現在、インストール済みのnvidiaとcudaのバージョン情報をターミナルに出力させるコマンド。
何か出力された場合は、全てアンインストールしてください。
sudo apt-get --purge remove nvidia-XXX sudo apt-get --purge remove cuda-XXX
XXX
の部分にはdpkg -l | grep nvidia
、dpkg -l | grep cuda
で出力されたバージョン情報を入れてください。環境によっては数字だけを入れてもアンインストールされないかもしれません。
libnvidia-XXX
↑こういう感じで出力されます。XXXの部分をコピペしてください。
sudo apt-get --purge remove nvidia-* sudo apt-get --purge remove cuda-*
また、全て消すのに↑のコードを使っても構いませんが、環境によっては消えないと思います。 私はうまく消せていませんでした。
全てのnvidia,cudaをremoveできたか確認するためにもう一度
dpkg -l | grep nvidia dpkg -l | grep cuda
を打って何も出なかったら、次に進んでください。
* Linuxに入れる推奨NVIDIAドライバを確認
ubuntu-drivers devices
いくつか出力されると思いますが、私の環境で470ではダメでしたので今回は525を選択。
sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update sudo apt install nvidia-driver-525 -y sudo apt upgrade
そして再起動。
sudo reboot
再起動後、デスクトップの解像度が著しく落ちる時がありますが放置して問題ありません。見づらいですが次に進みましょう。
nvidia-smi
と打って、GPUの使用状況が出てきたら成功です。
それではcudaのインストールに進んでください。
CUDA
CUDAのインストールもここに書いてある手順で大体問題ありません。ubuntuのバージョンで使うコードが異なりますのでよく確認してからコピペしてください。
自分のLinuxはubuntu22.04であったので ubuntu22.04用のコードをコピペ。 リンク先に18.4と20.4用のコードがあります。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600 wget https://developer.download.nvidia.com/compute/cuda/12.0.0/local_installers/cuda-repo-ubuntu2204-12-0-local_12.0.0-525.60.13-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu2204-12-0-local_12.0.0-525.60.13-1_amd64.deb sudo cp /var/cuda-repo-ubuntu2204-12-0-local/cuda-*-keyring.gpg /usr/share/keyrings/ sudo apt-get update
自分がインストールした時のcudaバージョンは、11.5です。
sudo apt-get -y install cuda-11.5
Qiitaでバージョン指定する場合のインストールコードで
cuda-11-2
と書いてありますがハイフン"-"
ではなくドット"."
に置き換えてください。
ハイフンはエラーになります。
vi ~/.bashrc
と打って
export PATH="/usr/local/cuda/bin:$PATH" export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
パス↑を入力してください。
nvcc -V
でバージョンが確認できますが、私の場合はnvcc -V
を打つと
sudo apt install nvidia-cuda-toolkit
これを入力するようターミナルに要求されたので打ちました。
こうしてnvcc -V
によりバージョンが確認できるようになりました。
sudo apt install nvidia-cuda-toolkit
でエラーが起きる場合があるかもしれません。それはCUDAのバージョンとNVIDIAのバージョンとの間で起きている依存関係のエラーで起きています。解決に苦労しました。
NVIDIAとの依存関係のエラー
解決策として;
- 何が入っているか確認して不要なものを取り除きもう一度別のバージョンを入れる
dpkg -l | grep cuda
でバージョンを確認して
sudo apt-get --purge remove cuda-XXX
で取り除いてください。XXXは不要なバージョン。NVIDIAをインストールした時に自動的にCUDAのAPIがインストールされてしまうようです。過去にNVIDIAをインストールした時の情報が残っているかも。エラーが起きないようでしたらそのままにしてください。 この辺は詳しい人いたらコメントで教えてください…
sudo apt-get -y install cuda-11.5
を打つ前にsudo apt-get -y install cuda
を打ってしまうと最新版のcudaがインストールされてしまいます。そのあとsudo apt-get -y install cuda-11.5
を打っても最新版が認識されてしまうのです。これはdpkg -l | grep cuda
で複数のバージョンが入っていることが確認できます。
複数のバージョンが入っていると、依存関係によるエラーが起きる時があります。
必要であればNVIDIAもアンインストールして再度セットし直して良いかもしれませんが大変です。
GROMACS
確かにbrew install gromacs でもインストールはできるんですが、そっちはCPU上で動きます。GPU上でGROMACSを動かすには以下の手順に従ってください。
brewでインストールしたGROMACSはアンインストールしました。
nvidia-smi
、nvcc -V
この2つのコマンドが問題なく使えていればGROMACSのインストールを開始してOKです。
エラーが出た場合、再起動。再起動しても治らなかったらこのページの最初からやり直してください。再起動のコマンドはsudo reboot
です。
英語ですが。参考にしたページ↓
https://bioinformaticsreview.com/20201111/installing-gromacs-on-ubuntu-with-cuda-gpu-support/
まずは任意のバージョンのGROMACSのzipファイルをダウンロードしてください。
↑のページからダウンロードできます。バージョンはうまくcmakeできてCUDAをGPUとして認識してくれるものを最終的に選べれば良いです。面倒ですが試行錯誤。 自分は2023年、2022年、2021年、2020年…と試して結局2020.4になりました。
ダウンロードしたら解凍します。解凍用ディレクトリを作ってzipファイルを移動。
自分の場合は
mkdir opt cd opt
フォルダoptを作り、zipファイルを移動。mvコマンドを使っても良かったんですが手動で移動しました。コマンドでやる場合はmv XXX.zip ./(移動先フォルダ名)/
という感じでできます。
そして解凍。 解凍したらフォルダXXX(GROMACSのzip解凍したフォルダ)に移動してbuildというフォルダを作ってください。
tar xvzf XXX(GROMACSのzipファイル) cd XXX mkdir build cd build
buildに移動したあと、
CMAKEします。
sudo cmake .. -DGMX_OPENMP=ON -DGMX_MPI=ON -DGMX_GPU=ON -DBUILD_SHARED_LIBS=OFF -DGMX_PREFERS_STATIC_LIBS=ON -DCMAKE_C_FRAG=mpiicc -DGMX_BUILD_OWN_FFTW=ON -DREGRESSIONTEST_DOWNLOAD=ON -DGMX_QMMM_PROGRAM=NONE -DGMXAPI=OFF -DGMX_EXTERNAL_BLAS=OFF -DGMX_EXTERNAL_LAPACK=OFF
↑スクロールが大変で見づらいと思うので同じものを下に貼ります。ターミナルに打つときは↑のものをコピペしてくだい。
sudo cmake .. -DGMX_OPENMP=ON -DGMX_MPI=ON -DGMX_GPU=ON
-DBUILD_SHARED_LIBS=OFF -DGMX_PREFERS_STATIC_LIBS=ON
-DCMAKE_C_FRAG=mpiicc -DGMX_BUILD_OWN_FFTW=ON
-DREGRESSIONTEST_DOWNLOAD=ON -DGMX_QMMM_PROGRAM=NONE
-DGMXAPI=OFF -DGMX_EXTERNAL_BLAS=OFF
-DGMX_EXTERNAL_LAPACK=OFF
-DGMX_GPU=ON
または-DGMX_GPU=CUDA
となるかはGROMACSのバージョン次第です。2020年のは-DGMX_GPU=ON
です。多分2021〜22年が境界線で-DGMX_GPU=CUDA
じゃないとエラーが起きます。エラー文に従ってください。
正常に完了したら次に進んでください。私の環境では完了までに時間がかかりました。 sudoを打たないとエラーになる可能性があります。
regressionファイルは自分でダウンロード、用意しても良いですが、面倒なので
-DREGRESSIONTEST_DOWNLOAD=ON
としました
sudo cmake ..
以降のコマンドは実行環境に合わせてカスタマイズしてください。他のGROMACSのインストールサイトを色々見ましたがそのままコピぺしてうまくいかなかったら適宜コマンドを書き換えたり削除したりしてやり直してください。やり直すときはbuildファイルを削除し、作り直してcmakeを始めてください。
make check
いくつかエラーが起きるかもしれませんが次に進んで問題ありません。
sudo make install
sudo を抜くとエラーになる時があるかも。 インストールが何度も途中で止まってしまうエラーが起きたら別のバージョンのGROMACSを再度ダウンロードするところから始めた方が良いかもしれません。自分の場合、2023バージョンのGROMACSは10%前後で止まり、全然make installできず…
source /usr/local/gromacs/bin/GMXRC
このあと、
gmx --version gmx _mpi --version
gmxまたはgmx_mpiのどちらかのコマンドでバージョンを確認してください。 GPUのところにCUDAと表示されていたら成功です。 GPU のところがenabledになっていたらGPUが認識されていません。 面倒ですが、make installしたGROMACSのデータを消して別のGROMACSのzipをダウンロードし、最初からやり直してください。
GROMACSのダウンロードからやり直す場合
GROMACSのデータの消し方ですが、解凍したファイルを全削除するだけではダメです。
cd /usr/local sudo mv -r gromacs
localディレクトリに存在するgromacsというフォルダごと消してください。手動ではできませんでしたのでコマンドで無理やりです… 実行環境によっては別のディレクトリにgromacsというフォルダができる可能性もあります。
ここまでやってください。そうしないと新しいGROMACSを入れたハズなのにgmx pdb2gmx --version
で見ると消したはずのバージョンが認識されてしまっている!なんて事態が起きます。
うまく消せていなかった場合はgmx pdb2gmx --version
でダウンロードしたものとは別のバージョンが表示されるので確認してください。
他のトラブルについて
もしここに書いていないトラブルが起きたら?
詳しそうな 他の人に聞いてみましょう。
chatGPTに聞いてみましょう