> For the complete documentation index, see [llms.txt](https://docs-ksc.gitbook.io/blog/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs-ksc.gitbook.io/blog/install/nurion/lammps/lammps-12dec18-install.md).

# lammps-12Dec18 설치 소개

KISTI 누리온 시스템에서 lammps-12Dec18 버전 실행 파일을 컴파일하는 예시입니다.&#x20;

## **가. 설치 환경**

| **구분**     | **내용**                                           |
| ---------- | ------------------------------------------------ |
| 대상 시스템     | 누리온                                              |
| OS Version | 리눅스 / CentOS 7.9                                 |
| CPU        | <p>Intel Xeon Phi 7250</p><p>Intel Xeon 6148</p> |
| 컴파일러       | Intel 2018.3 Version                             |
| MPI        | IntelMPI 2018.3 Version                          |
| 기타         | Intel Math Kernel Library (MKL)                  |

## **나. 설치 전 환경 설정**

KISTI 시스템은 PATH, LD\_LIBRARY\_PATH 등을 쉽게 하기 위하여 OpenSource 인 Environment Modules(<http://modules.sourceforge.net)이> 구성되어 있으며, 이하 설치 소개 에서는 module load를 이용한 환경 설정 방법을 이용합니다.

***

**\[ 환경 설정 ]**

```shell-session
$ module purge
$ module load intel/18.0.3 impi/18.0.3
```

## 다. 설치 과정

설치 과정 소개는 tar를 이용한 압축 해제 방법과 설정 방법 등 진행 절차를 위주로 설명하고, 소스 파일 다운로드 등은 생략합니다. (다운로드 : <https://github.com/lammps/lammps/releases> )

설치 경로는 **${HOME}/lammps/3Mar20**을 예시로 사용하였으며, 사용자 분에게 적합한 위치로 변경하여 설치 진행하시기 바랍니다.

### **1. VORO++ 설치**&#x20;

(다운로드 : <http://math.lbl.gov/voro++/download/>)

VORONOI 패키지 설치를 위한 voro++를 우선 설치합니다.

\[설치과정]

```shell-session
$ tar xvf voro++-0.4.6.tar.gz
$ cd voro++-0.4.6
$ mkdir -p ${HOME}/build/library
$ vi config.mk
----- 수정 사항은 아래의 내용 참고 -----
$ make
$ make install
```

\[config.mk 수정 사항]

```
CXX=mpiicpc
CFLAGS= -Wall -ansi -pedantic -O3 -fPIC
E_INC= -I../../src
E_LIB= -L../../src
PREFIX= ${HOME}/build/library
INSTALL= install
IFLAGS_EXEC= -m 0755
IFLAGS= -m 0644
```

***

### **2. LATTE 설치**&#x20;

(다운로드 : <https://github.com/lanl/LATTE/releases>)

LATTTE 패키지 설치를 위한 Latte 라이브러리를 우선 설치합니다.

다운로드 받은 파일을 적당한 위치($HOME/build)에 올린 후 다음과 같은 명령으로 압축 묶음 파일을 압축 해제합니다.

\[설치과정]

```shell-session
$ cd ${HOME}/build
$ tar xzvf LATTE-1.2.1.tar.gz
$ cd LATTE-1.2.1
$ vi makefile.CHOICES
----- 수정 사항은 아래의 내용 참고 -----
$ make
```

\[makefile.CHOICES 수정 사항]

```makefile
#
# CPU Fortran options
#

#For GNU compiler:
#FC = mpif90
#FC = gfortran
#FCL = $(FC)
#FFLAGS = -O3 -fopenmp -cpp
#FFLAGS = -fast -Mpreprocess -mp
#LINKFLAG = -fopenmp

#For intel compiler:
FC = ifort
FCL = $(FC)
FFLAGS = -O3 -fpp -qopenmp
LINKFLAG = -qopenmp
LIB = -mkl=parallel

#GNU BLAS/LAPACK libraries:
#LIB = -llapack -lblas

#Intel MKL BLAS/LAPACK libraries:
LIB = -Wl,--no-as-needed -L${MKLROOT}/lib/intel64 \
-lmkl_lapack95_lp64 -lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core \
-lmkl_gnu_thread -lmkl_core -ldl -lpthread -lm

#
# GPU options
#

#GPU_CUDA_LIB = -L/opt/cudatoolkit-5.5/lib64 -lcublas -lcudart

#GPU_ARCH = sm_20
```

### **3. 라이브러리 패키지 설치**

LAMMPS 홈페이지로부터 다운로드 받은 파일을 적당한 위치($HOME/build)에 올린 후 다음과 같은 명령으로 압축 묶음 파일을 압축 해제합니다.

```shell-session
$ tar xvf lammps-12Dec18.tar.gz
```

#### 1) voronoi 설치

(1)에서 설치한 voro++ 설치 디렉토리를 지정해 줍니다.

lammps 압축 해제후 lammps-12Dec18 폴더로 이동하여 아래의 작업을 진행합니다.

\[설치과정]

```shell-session
$ cd lammps-12Dec18
$ cd lib/voronoi
$ ln -s ${HOME}/build/library/include/voro++ includelink
$ ln -s ${HOME}/build/library/lib liblink
$ cd ../../
```

#### 2) poems 설치

\[설치과정]

```shell-session
$ cd lib/poems
$ vi Makefile.mpi
----- 수정 사항은 아래의 내용 참고 -----
$ make -f Makefile.mpi
$ cd ../../
```

\[Makefile.mpi 수정 사항]

```makefile
CC = mpiicpc
CCFLAGS = -O3 -g -fPIC -Wall #-Wno-deprecated
ARCHIVE = ar
ARCHFLAG = -rc
DEPFLAGS = -M
LINK = mpiicpc
```

#### 3) meam 설치

\[설치과정]

```shell-session
$ cd lib/meam
$ vi Makefile.mpi
----- 수정 사항은 아래의 내용 참고 -----
$ make -f Makefile.mpi
$ cd ../../
```

\[Makefile.mpi 수정 사항]

```makefile
F90 = mpiifort
CC = mpiicc
F90FLAGS = -O3 -fPIC
#F90FLAGS = -O
ARCHIVE = ar
ARCHFLAG = -rc
LINK = mpiicpc
```

#### 4) awpmd 설치

\[설치과정]

```shell-session
$ cd lib/awpmd
$ vi Makefile.lammps.linalg
----- 수정 사항은 아래의 내용 참고 -----
$ vi Makefile.mpi
----- 수정 사항은 아래의 내용 참고 -----
$ make -f Makefile.mpi
$ cd ../../
```

\[Makefile.lammps.installed 수정 사항]

```
user-atc_SYSINC =
user-atc_SYSLIB = -llinalg
user-atc_SYSPATH = -L../../lib/linalg$(LIBOBJDIR)
```

\[Makefile.mpi 수정 사항]

```
CC = mpiicpc
```

#### 5) atc 설치

\[설치과정]

```shell-session
$ cd lib/atc
$ vi Makefile.lammps.linalg
----- 수정 사항은 아래의 내용 참고 -----
$ vi Makefile.mpi
----- 수정 사항은 아래의 내용 참고 -----
$ make -f Makefile.mpi


$ cd ../../
```

\[Makefile.lammps.linalg 수정 사항]

```
user-atc_SYSINC =
user-atc_SYSLIB = -llinalg
user-atc_SYSPATH = -L../../lib/linalg$(LIBOBJDIR)
```

\[Makefile.mpi 수정 사항]

```
CC = mpiicpc
```

#### 6) linalg 설치

\[설치과정]

```shell-session
$ cd lib/linalg
$ vi Makefile.mpi
----- 수정 사항은 아래의 내용 참고 -----
$ make -f Makefile.mpi
$ cd ../../
```

\[Makefile.mpi 수정 사항]

```
FC = mpiifort
FFLAGS = -O3 -fPIC
FFLAGS0 = -O0 -fPIC
```

#### 7) reax 설치

\[설치과정]

```shell-session
$ cd lib/reax
$ make -f Makefile.ifort
$ cd ../../
```

#### 8) latte 설치

\[설치과정]

```shell-session
$ cd lib/latte
$ ln -s ${HOME}/build/LATTE-1.2.1/src includelink
$ ln -s ${HOME}/build/LATTE-1.2.1 liblink
$ ln -s ${HOME}/build/LATTE-1.2.1/src/latte_c_bind.o filelink.o
$ vi Makefile.lammps.mpi
----- 수정 사항은 아래의 내용 참고 -----
$ cd ../../
```

\[Makefile.lammps.mpi 수정 사항]

```
latte_SYSINC =
latte_SYSLIB = ../../lib/latte/filelink.o -llatte -llinalg -lifport
latte_SYSPATH = -L../../lib/linalg -qopenmp
```

#### 9) message 설치

\[설치과정]

```shell-session
$ cd lib/message/cslib/src
$ vi Makefile
----- 수정 사항은 아래의 내용 참고 -----
$ make lib_parallel zmq=no
$ cp libcsmpi.a libmessage.a
```

\[Makefile 수정 사항]

```makefile
ifeq ($(MPI),YES)
CC = mpiicpc
else
CCFLAGS += -I./STUBS_MPI
LIB = libcsnompi.a
SHLIB = libcsnompi.so
endif
```

### **4. LAMMPS 설치**

lammps 설치 디렉토리($HOME/build/lammps-12Dec18) 아래 src 폴더로 이동합니다.

* package 선택 및 설치

사용하는 사용자의 연구내용에 맞추어 필요한 package를 선택하여 설치합니다. 여기서는 기본적으로 많이 사용되는 package를 위주로 설치하였습니다.

| **설치과정**                                                                                                                                                                                                                                                                                                                                                                                                                                                            |                                                                                                                                                                                                                                                                                                                  |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p>$ cd src<br>$ make package-status<br>$ make yes-standard<br>$ make yes-message<br>$ make no-GPU<br>$ make no-PYTHON<br>$ make no-kim<br>$ make no-KOKKOS<br>$ make no-MSCG<br>$ make yes-USER-ATC<br>$ make yes-USER-AWPMD<br>$ make yes-USER-MEAMC<br>$ make yes-USER-OMP<br>$ make yes-USER-REAXC<br>$ make package-status<br>$ vi MAKE/Makefile.mpi<br>-- 수정 사항은 아래 내용 참고 --<br>$ vi Makefile.package.settings<br>-- 수정 사항은 아래 내용 참고 --<br><br>$ make mpi</p> | <p><br>package 선택 확인<br>standard package 선택<br><br>standard package 중 gpu package 제외<br>standard package 중 PYTHON package 제외<br>standard package 중 kim package 제외<br>standard package 중 KOKKOS package 제외<br>standard package 중 MSCG package 제외<br><br><br><br><br><br><br>package 선택 확인<br><br><br><br><br></p> |

\[MAKE/Makefile.mpi 수정 사항]

```makefile
CC = mpiicpc
OPTFLAGS = -xCOMMON-AVX512 -O3 -fp-model fast=2 -no-prec-div -qoverride-limits
CCFLAGS = -qopenmp -qno-offload -fno-alias -ansi-alias -restrict \
-DLMP_INTEL_USELRT -DLMP_USE_MKL_RNG $(OPTFLAGS)
CCFLAGS += -I/apps/compiler/intel/18.0.3/mkl/include -lmkl_rt
SHFLAGS = -fPIC
DEPFLAGS = -M

LINK = mpiicpc
LINKFLAGS = -qopenmp $(OPTFLAGS)
LIB =
SIZE = size

ARCHIVE = ar
ARFLAGS = -rc
SHLIBFLAGS = -shared

FFT_INC = -DFFT_MKL -DFFT_SINGLE
FFT_PATH =
FFT_LIB = -L${MKLROOT}/lib/intel64/ -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core
```

\[Makefile.package.settings 수정 사항]

```
include ../../lib/awpmd/Makefile.lammps
include ../../lib/atc/Makefile.lammps
include ../../lib/message/Makefile.lammps.nozmq
include ../../lib/voronoi/Makefile.lammps
include ../../lib/reax/Makefile.lammps
include ../../lib/poems/Makefile.lammps
include ../../lib/meam/Makefile.lammps
include ../../lib/latte/Makefile.lammps.mpi
include ../../lib/compress/Makefile.lammps
```

***

## **라. 실행 파일 복사**

설치가 완료되면 사용에 편의를 위해 bin 경로를 만들어 실행 파일인 lmp\_mpi를 bin 경로에 복사합니다. (선택사항)

```shell-session
$ ls -l lmp_mpi
$ cd ${HOME}/build/lammps-12Dec18/
$ mkdir bin
$ cp ${HOME}/build/lammps-12Dec18/src/lmp_mpi/bin .
```

## **마. 누리온에서 LAMMPS 사용을 위한 PBS 작업 스크립트 예제**

위의 과정을 거처 설치된 lammps는 누리온 환경에서 다음과 같이 실행이 가능합니다.\
누리온에서 작업을 제출하기 위해서는 PBS 작업 스크립트를 사용하여야 하며 실행 예제로는 examples/meam 아래의 데이터를 이용하였습니다.

{% code title="작업스크립트 예제 (lammps:test-run.sh)" overflow="wrap" lineNumbers="true" %}

```bash
#!/bin/sh
#PBS -V
#PBS -N lammps_job_test
#PBS -q normal
#PBS -l select=2:ncpus=60:mpiprocs=60:ompthreads=1
#PBS -l walltime=04:00:00
#PBS -A lammps

cd $PBS_O_WORKDIR

module purge
module load intel/18.0.3 impi/18.0.3
export PATH=${HOME}/build/lammps-12Dec18/bin:$PATH
mpirun lmp_mpi -in in.meamc

exit 0
```

{% endcode %}
