LAMMPS Programının GPU Destekli Derlenmesi
LAMMPS programını GPU destekli olarak iki şekilde kurabiliriz. Bunlardan ilki hiç module yüklemeden, derleme yapmadan Yüksek Başarımlı Hesaplama’ da en çok tercih edilen Singularity container kullanmaktır. Fakat bu standart kullanım içindir. Hesaplamalarınızda ihtiyaç duyacağınız ekstra özel kütüphaneler için standart ikinci kurulumu yapmanız gerekmektedir. İkincisi ise TRUBA’ da mevcut modüllerin yüklenmesi ile yapılan derlemedir. Aşağıdaki kurulum öğreticisinde iki şekilde de gösterilecektir.
Singularity Container Kullanarak LAMMPS Kullanımı
TRUBA kuyruklarında Singularity kullanarak LAMMPS kapsayıcısını ev dizininize yeni bir dizin oluştururak içerisine kayıt ediniz. Bunun için aşağıda verilen kod satırlarını terminalinize yazınız.
mkdir lammps-gpu
cd lammps-gpu
singularity build lammps-2021.sif docker://nvcr.io/hpc/lammps:10Feb2021
Uyarı
Daha üst versiyonlarını kontrol etmek için linki verilen sayfaya bakabilirsiniz: https://ngc.nvidia.com/catalog/containers/hpc:lammps
Kaydetme işlemi tamamlandıktan sonra LAMMPS uygulamasının gpu destekli hali sorunsuz çalışacaktır. Fakat slurm betik dosyanızı buna uygun düzenlemeniz gerekmektedir. Sizin için hazırlanan gpu destekli slurm betik dosyası örneği aşağıda verilmiştir.
#!/bin/bash
#SBATCH -p palamut-cuda
#SBATCH -A kullanici_adi
#SBATCH -J lammps
#SBATCH -N 1 #number of nodes
#SBATCH -n 16 #number of cpus
#SBATCH --gres=gpu:1
#SBATCH --time=00-01:00:00
#SBATCH --mail-type=ALL
#SBATCH --output=slurm-%j.out
#SBATCH --error=slurm-%j.err
export OMP_NUM_THREADS=1
echo "SLURM_NODELIST $SLURM_NODELIST"
echo "NUMBER OF CORES $SLURM_NTASKS"
export SIF=/truba/home/kullanici_adi/lammps-gpu/lammps-2021.sif
singularity run --nv $SIF lmp < input_file
exit
LAMMPS Programının Palamut-Cuda Kümelerinde Derlenmesi
LAMMPS programının lammps-patch_31Aug2021 versiyonunun TRUBA sisteminde GPU destekli derlenmesi için gerekli adımlar aşağıda verilmiştir. Siz de bu adımları takip ederek kurulumu kendi dizininizde kurabilirsiniz.
1.
İlk olarak lammps-derleme adında bir dizin oluşturunuz. Kurulum için gerekli kaynak kodu bu dizine kopyaladıktan sonra, tar
komutuyla sıkıştırlmış dosyaları açınız.
Bu ilk iki işlem için gerekli terminal komutları aşağıda sıralanmıştır.
mkdir lammps-derleme
cd derleme-derleme
wget https://github.com/lammps/lammps/archive/refs/tags/patch_31Aug2021.tar.gz
tar -xzvf patch_31Aug2021.tar.gz
cd lammps-patch_31Aug2021
2.
İkinci adım olarak /truba/home/kullaniciadi/lammps-derleme/lammps-patch_31Aug2021 adlı dizin içinde build
klasörü oluşturmanız gerekmektedir. Sonrasında yapılacak derleme işlemleri bu klasör altında gerçekleştirilecektir. Bu yüzden bu klasör altında olduğunuzu pwd
komutu ile kontrol ediniz.
mkdir build
cd build
Kurulumu palamut-cuda
kümelerinde yapmak için bu kümelerden boş bir işlemci sağlamamız gerekmektedir. Bunun için srun komutu ile boş sunucu isteği yapmanız gerekmektedir. Aşağıdaki komut satırını kendi terminalizde uyguladığınızda boş işlemci için sıraya gireceksiniz.
srun -N 1 -n 16 -A kullanici_adi -p palamut-cuda --gres=gpu:1 --time=02:00:00 --job-name "install" --pty bash -i
3.
Kurulumu doğru bir şekilde yapabilmemiz için gerekli ortamların hazır olması gerekmektedir. Bu yüzden program için gerekli modulleri yüklememiz gerekir.
Fakat daha öncesinde çalışan ve derlememize engel olacak bir module varsa çakışma olmaması adına onu kapatmamız gerekir.
Öncelikle module purge
komutu ile çalışan modülleri kapatalım ve sonrasında derleme için gerekli olan modulleri yükleyelim.
Uyarı
Kurulum için ayrıca CMake protokolüne de ihtiyacınız bulunmaktadır. Bu noktada dikkat etmemiz gereken en önemli şey CMake optionlarını doğru seçmektir. Bu protokol için kullanılan tag’ler için Cmake Flags linkinden erişebilirsiniz.
Gerekli ortamlar için aşağıdaki komut satırını terminalinizden uygulayınız.
source /truba/sw/centos7.9/comp/intel/oneapi-2021.2/setvars.sh
module load centos7.9/lib/openmpi/4.1.1-intel-oneapi-2021.2
module load centos7.9/comp/cmake/3.18.0
module load centos7.9/comp/gcc/7
module load centos7.9/lib/cuda/11.4
export CC=mpiicc CXX=mpiicpc FC=mpiifort
cmake ../cmake -D PKG_GPU=yes -D GPU_API=cuda -D GPU_ARCH=sm_80 -D BUILD_MPI=on -D BLAS_LIBRARIES="-L${MKLROOT}/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl" -D LAPACK_LIBRARIES="-L${MKLROOT}/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl" -D PKG_BODY=yes -D PKG_CLASS2=yes -D PKG_DIPOLE=yes -D PKG_MANYBODY=yes -D PKG_MC=yes -D PKG_LATTE=yes -D PKG_MLIAP=yes -D PKG_SNAP=yes -D PKG_SPIN=yes -D PKG_PYTHON=yes -D PKG_USER-MOLFILE=yes -D PKG_MOLECULE=yes -D PKG_USER-PHONON=yes -D PKG_USER-REAXC=yes -D PKG_KSPACE=yes -D PKG_USER-MEAMC=yes -D PKG_USER-SMTBQ=yes -D PKG_USER-DIFFRACTION=yes -D FFT=MKL
- 4.
Son olarak
cmake --build .
komutunu çalıştırarak LAMMPS derlemesini tamamlayınız. Build adlı dosyanın içinde lmp executable ile programı çalıştırabilirsiniz.
Aşağıdaki slurm betik örneğini kullanarak programı kullanabilirsiniz.
#!/bin/bash
#SBATCH -p palamut-cuda
#SBATCH -A kullanici_adi
#SBATCH -J lammps
#SBATCH -N 1 #number of nodes
#SBATCH -n 16 #number of cpus
#SBATCH --gres=gpu:1
#SBATCH --time=00-01:00:00
#SBATCH --mail-type=ALL
#SBATCH --output=slurm-%j.out
#SBATCH --error=slurm-%j.err
module purge
source /truba/sw/centos7.9/comp/intel/oneapi-2021.2/setvars.sh
module load centos7.9/lib/openmpi/4.1.1-intel-oneapi-2021.2
module load centos7.9/comp/gcc/7
module load centos7.9/lib/cuda/11.4
export OMP_NUM_THREADS=1
echo "SLURM_NODELIST $SLURM_NODELIST"
echo "NUMBER OF CORES $SLURM_NTASKS"
LAMMPS_DIR=/truba/home/kullanici_adi/lammps-derleme/lammps-patch_31Aug2021/build
mpirun $LAMMPS_DIR/lmp < input_dosyasının_adi >out
exit