QEをGPU用にコンパイル

QE

NVIDIA GeForce RTX 4060 Tiを載せたPCでQuantum ESPRESSOをGPU用にコンパイルしました。

スポンサーリンク

環境

WSLです。グラフィックドライバやコンパイル環境の導入は他の詳しい記事を参考にしてください。

$ nvaccelinfo

CUDA Driver Version:           12030

Device Number:                 0
Device Name:                   NVIDIA GeForce RTX 4060 Ti
Device Revision Number:        8.9

中略
Default Target:                cc89

また使用するmoduleの中身は

$ module show nvhpc-openmpi3/23.11
-------------------------------------------------------------------
/opt/nvidia/hpc_sdk/modulefiles/nvhpc-openmpi3/23.11:

conflict        nvhpc
conflict        nvhpc-nompi
conflict        nvhpc-byo-compiler
conflict        nvhpc-hpcx
conflict        nvhpc-openmpi3
setenv          NVHPC /opt/nvidia/hpc_sdk
setenv          NVHPC_ROOT /opt/nvidia/hpc_sdk/Linux_x86_64/23.11
setenv          CC /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/compilers/bin/nvc
setenv          CXX /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/compilers/bin/nvc++
setenv          FC /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/compilers/bin/nvfortran
setenv          F90 /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/compilers/bin/nvfortran
setenv          F77 /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/compilers/bin/nvfortran
setenv          CPP cpp
prepend-path    PATH /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/cuda/bin
prepend-path    PATH /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/compilers/bin
prepend-path    PATH /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/comm_libs/openmpi/openmpi-3.1.5/bin
prepend-path    PATH /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/compilers/extras/qd/bin
prepend-path    LD_LIBRARY_PATH /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/cuda/lib64
prepend-path    LD_LIBRARY_PATH /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/cuda/extras/CUPTI/lib64
prepend-path    LD_LIBRARY_PATH /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/compilers/extras/qd/lib
prepend-path    LD_LIBRARY_PATH /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/compilers/lib
prepend-path    LD_LIBRARY_PATH /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/math_libs/lib64
prepend-path    LD_LIBRARY_PATH /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/comm_libs/openmpi/openmpi-3.1.5/lib
prepend-path    LD_LIBRARY_PATH /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/comm_libs/nccl/lib
prepend-path    LD_LIBRARY_PATH /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/comm_libs/nvshmem/lib
prepend-path    CPATH /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/math_libs/include
prepend-path    CPATH /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/comm_libs/mpi/include
prepend-path    CPATH /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/comm_libs/nccl/include
prepend-path    CPATH /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/comm_libs/nvshmem/include
prepend-path    CPATH /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/compilers/extras/qd/include/qd
prepend-path    MANPATH /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/compilers/man
setenv          OPAL_PREFIX /opt/nvidia/hpc_sdk/Linux_x86_64/23.11/comm_libs/openmpi/openmpi-3.1.5
-------------------------------------------------------------------

コンパイル時と計算時はこれをロードしています。
(何が必要で何が不要なのかは分かっていません)

スポンサーリンク

コンパイル

以下のようなスクリプトを書いて実行しました。

. /etc/profile.d/modules.sh
module load nvhpc-openmpi3/23.11
export CUDA_HOME=/opt/nvidia/hpc_sdk/Linux_x86_64/23.11/cuda/12.3

./configure --with-cuda=${CUDA_HOME} --with-cuda-runtime=12.3 \
 --with-cuda-cc=89 --enable-openmp --prefix=$HOME/.local/qe_gpu
make pw
make install

基本的にはREADME_GPUに書かれているそのままです。
–with-cuda-ccは nvaccelinfo を実行して下のほうに表示されたものです。
また、最後にprefixでインストール場所をgpu用のフォルダにしています。CPU用と分ける場合はこうするといいと思います。

$ nvaccelinfo
No accelerators found.
Try nvaccelinfo -v for more information

のように表示された場合、LD_LIBRARY_PATHに libcuda.so がある場所を追加したら実行できました。

スポンサーリンク

実行コマンド

実行するときも同じようなスクリプトを用意しました。

. /etc/profile.d/modules.sh
module load nvhpc-openmpi3/23.11

export PATH=/home/wsl/.local/qe_gpu/bin:$PATH
mpiexec -n 1 pw.x -in md.in

この環境でGPUの性能が生かせているようなベンチマーク結果が出たら追記します。

コメント

タイトルとURLをコピーしました