sudo apt install -y cmake build-essential ccache gfortran openmpi-bin libopenmpi-dev \
libfftw3-dev libjpeg-dev libpng-dev python3-dev python3-pip \
python3-virtualenv libblas-dev liblapack-dev libhdf5-serial-dev \
hdf5-tools ffmpeg
cd
mkdir MD
cd MD
wget https://download.lammps.org/tars/lammps-stable.tar.gz
tar xvzf lammps-stable.tar.gz
cd lammps-23Jun2022
mkdir build
cd build
- GPU_ARCHはこちらでチェック。例: GeForce RTX 3060、RTX A4000はsm_86、RTX4090はsm_89、6000Adaもsm_89。
cmake -C ../cmake/presets/most.cmake \
-D LAMMPS_MACHINE=gpu \
-D CMAKE_C_COMPILER=icx \
-D CMAKE_CXX_COMPILER=icpx \
-D CMAKE_Fortran_COMPILER=ifx \
-D FFT=MKL \
-D PKG_GPU=yes \
-D GPU_API=cuda \
-D GPU_ARCH=sm_89 \
-D BUILD_MPI=yes \
-D PKG_MANYBODY=yes \
-D PKG_VORONOI=yes \
-D DOWNLOAD_VORO=yes \
-D PKG_MEAM=yes \
-D PKG_REAXFF=yes \
../cmake
- Ubuntuのバージョン次第では、nvccとintelコンパイラが競合して(?)うまくいかないかも?その場合は以下でどうでしょう。
cmake -C ../cmake/presets/most.cmake \
-D LAMMPS_MACHINE=gpu \
-D PKG_GPU=yes \
-D GPU_API=cuda \
-D GPU_ARCH=sm_89 \
-D BUILD_MPI=yes \
-D PKG_MANYBODY=yes \
-D PKG_VORONOI=yes \
-D DOWNLOAD_VORO=yes \
-D PKG_MEAM=yes \
-D PKG_REAXFF=yes \
../cmake
- 詳細はこちらでチェック。
- HOSTARCH = HOST from list above [(例) SPR:Intel Sapphire Rapids Xeon Server CPUs (AVX512) @ w7-2495x]
- GPUARCH = GPU from list above, [(例) NVIDIA Ada generation CC 8.9 @ RTX6000Ada]
- 検証環境は以下。
- Ubuntu 24.04
- Intel OneAPI 2025.1.0
- Cuda Toolkit 13.1
cmake -C ../cmake/presets/most.cmake \
-D LAMMPS_MACHINE=kokkos \
-D PKG_KOKKOS=yes \
-D Kokkos_ARCH_SPR=yes \
-D Kokkos_ARCH_ADA89=yes \
-D Kokkos_ENABLE_CUDA=yes \
-D Kokkos_ENABLE_OPENMP=yes \
-D BUILD_OMP=yes \
-D CMAKE_CXX_COMPILER=`which mpicxx` \
-D MPI_C_COMPILER=`which mpicc` \
-D PKG_MEAM=yes \
-D PKG_MANYBODY=yes \
-D PKG_VORONOI=yes \
-D DOWNLOAD_VORO=yes \
-D PKG_REAXFF=yes \
../cmake
module load openmpi/5.0.7/rocm6.3.3
cmake -C ../cmake/presets/most.cmake \
-D LAMMPS_MACHINE=gpu \
-D PKG_GPU=yes \
-D GPU_API=HIP \
-D HIP_ARCH=gfx942 \
-D CMAKE_CXX_COMPILER=hipcc \
-D CMAKE_CXX_FLAGS="-mcmodel=large --offload-arch=gfx942" \
-D BUILD_MPI=yes \
-D PKG_MANYBODY=yes \
-D PKG_VORONOI=yes \
-D DOWNLOAD_VORO=yes \
-D PKG_MEAM=yes \
-D PKG_REAXFF=yes ../cmake
module load openmpi/5.0.7/rocm6.3.3
module load openmpi/5.0.7/rocm6.3.3_amdflang_afar
export OMPI_CC=amdclang
cmake -C ../cmake/presets/most.cmake \
-D LAMMPS_MACHINE=kokkos \
-D PKG_KOKKOS=yes \
-D Kokkos_ARCH_ZEN4=yes \
-D Kokkos_ARCH_AMD_GFX942_APU=yes \
-D Kokkos_ENABLE_HIP=yes \
-D Kokkos_ENABLE_OPENMP=yes \
-D BUILD_OMP=yes \
-D BUILD_MPI=yes \
-D CMAKE_CXX_COMPILER=hipcc \
-D CMAKE_CXX_FLAGS="-fopenmp -mcmodel=large --offload-arch=gfx942" \
-D PKG_MEAM=yes \
-D PKG_MANYBODY=yes \
-D PKG_VORONOI=yes \
-D DOWNLOAD_VORO=yes \
-D PKG_REAXFF=yes \
../cmake
CMAKEのプリセットはこちら
make -j 4 # Numberは並列コア数
make install
cd
vim .bashrc
最終行に以下を追加する(Buildファイルの場所が/home/「ユーザ名」/.local/binの場合)
export PATH=/home/「ユーザ名」/.local/bin:$PATH
以下のコマンドで反映させる。
cd
source .bashrc
lmp_gpu
と入力して、エラーがでなければインストール成功。Ctrl+cで終了。
もともと用意されている計算例(melt)を実行してみる。まずInputファイルを編集。
cd
cd MD/lammps-stable_23Jun2022/examples/melt
vim in.melt
インプットファイル(in.melt)をvimで以下の通り編集する。
編集するのは22行目。行頭の♯を削除するだけ。
dump id all atom 50 dump.melt
そして、コマンドライン上で実行する。
- GPUで計算する場合
lmp_gpu -sf gpu -pk gpu 1 -in in.melt
なんか計算がはじまって、最後に'Total wall time: xx:xx:xx'と表示されていれば成功!
- GPUとCPUのハイブリッドで計算する場合
mpirun -n 8 lmp_gpu -sf gpu -pk gpu 1 -in in.melt
- Kokkosを用いてGPUとCPU(OpenMP)のハイブリッドで計算する場合
lmp_kokkos -k on g 1 t 12 -sf kk -in in.melt
lmp_kokkos -k on g 1 t 12 -sf kk -pk kokkos newton on neigh half -in in.melt #追加でパッケージ指定すると早くなるかも?
ls
すると、
dump.melt # ← 各時間ステップにおける原子の配置に関するデータ。後で可視化する。
log.lammps # ← ログファイル。
ができているはず。
計算内容: examples/melt/in.meltをもとに、「region box block 0 50 0 50 0 50」「run 2500」に変更。
計算環境1: CPUにIntel Core i5 12400F、GPUにNVIDIA GeForce RTX 3060。
- 並列なしの場合: 0:06:59 (Ref.)
- 8並列の場合: 0:01:39 (-76%)
- 12並列の場合: 0:01:18 (-81%)
- GPUの場合: 0:00:29 (-93%)
計算環境2: CPUにIntel Core i7 13700KF、GPUにNVIDIA RTX A4000。
- 並列なしの場合: 0:05:40 (Ref.)
- 12並列の場合: 0:00:52 (-84%)
- 20並列の場合: 0:00:42 (-88%)
- GPUの場合: 0:00:24 (-93%)
計算環境3: CPUにIntel Core i7 13700KF、GPUにNVIDIA RTX 4090。
- GPUの場合: 0:00:19 (-94%)
計算環境4: CPUにIntel Xeon w7-2495X、GPUにNVIDIA RTX 6000 Ada。
- 並列なしの場合: 0:07:04 (Ref.)
- 24並列の場合: 0:00:28 (-93%)
- 36並列の場合: 0:00:18 (-96%)
- 42並列の場合: 0:00:16 (-96%)
- 48並列の場合: 0:00:20 (-95%)
- GPUの場合: 0:00:32 (-92%)
- CPU8並列+GPUの場合: 0:00:09 (-94%)
計算環境5: GPUにAMDAMD Instinct MI300A @プラズマシミュレータ。
- GPUの場合: 0:00:24 (-93%)
Windowsに可視化ソフトをインストールする。OVITO Basicを選んでインストール (Proは有料)。 https://www.ovito.org/
dump.XXファイルをOVITOで開けば可視化できます。