lammps-2Aug2023 설치 소개

이 문서에서는 KISTI 누리온 시스템에서 lammps-2Aug2023 버전을 make로 빌드하는 방법에 대하여 소개합니다.

가. 설치 환경

구분
내용

대상 시스템

Nurion

OS Version

Linux / CentOS 7.9

CPU

Intel Xeon Phi 7250

Intel Xeon 6148

Compiler

Intel oneAPI 21.2

MPI

Intel MPI 21.2

기타

Intel Math Kernel Library (MKL)

나. 설치 전 환경설정

누리온 시스템에서는 PATH, LD_LIBRARY_PATH 설정을 손쉽게 하기 위해서 환경설정 툴인 Module이 구성되어 있으며 이하 설치 소개에서는 module load 를 이용한 환경설정 방법으로 안내합니다.

$ source /apps/compiler/intel/oneapi_21.2/setvars.sh
$ module purge
$ module load intel/oneapi_21.2 impi/oneapi_21.2

※ 설치 시에만 source 적용이 필요하며 이후에는 module 만 load 하고 작업을 수행하면 됩니다.

다. 설치과정

※ lammps 다운로드 예시

$ wget https://github.com/lammps/lammps/archive/refs/tags/stable_2Aug2023_update4.tar.gz

※ 아래는 일부 패키지 설치 예시이며 필요하지 않은 패키지는 생략하고 설치 진행하여도 무방합니다. 다만, make 단계에서 package 세팅 시 해당 패키지를 제외하고 make를 진행해야 오류가 발생하지 않습니다.

※ plumed 를 제외한 예시 패키지는 모두 ${MY_LAMMPS_DIR}/lib 에서 설치 진행합니다. MY_LAMMPS_DIR 은 lammps 를 압축 해제한 디렉터리 입니다.

※ package에 따라 추가적인 설치 과정이나 make 파일 수정이 필요할 수 있습니다.

1. lammps 압축 해제 및 디렉터리 설정

$ tar -xzf stable_2Aug2023_update4.tar.gz
$ cd lammps-stable_2Aug2023_update4

# 현재 경로를 MY_LAMMPS_DIR 로 설정 
$ export MY_LAMMPS_DIR=$PWD

2. 옵션 패키지 설치 과정 예시

voro++ 설치

$ wget https://math.lbl.gov/voro++/download/dir/voro++-0.4.6.tar.gz
$ tar -xzf voro++-0.4.6.tar.gz

$ cd voro++-0.4.6
$ mkdir -p ${MY_LAMMPS_DIR}/build/library

$ cp config.mk bak_config.mk

$ vi config.mk

-수정 내용-
CXX=mpiicpc
PREFIX=${MY_LAMMPS_DIR}/build/library

$ make > make.log 2>&1
$ make install

# 디렉터리 변경
$ cd $MY_LAMMPS_DIR/lib/voronoi
$ ln -s ${MY_LAMMPS_DIR}/build/library/include/voro++ includelink
$ ln -s ${MY_LAMMPS_DIR}/build/library/lib liblink

poems 설치

$ cd ../poems
(절대 경로 : cd ${MY_LAMMPS_DIR}/lib/poems)

$ cp  Makefile.mpi bak_Makefile.mpi

$ vi Makefile.mpi

-수정 내용-
CC =	        mpiicpc -std=c++11
LINK =         	mpiicpc -std=c++11

$ make -f Makefile.mpi > make.log 2>&1

awpmd 설치

$ cd ../awpmd
(절대 경로 : cd ${MY_LAMMPS_DIR}/lib/awpmd)

$ cp Makefile.lammps.linalg bak_Makefile.lammps.linalg

$ vi Makefile.lammps.linalg

-수정 내용-
(수정이 필요하지 않은 경우 저장하지 않고 vim 종료)
awpmd_SYSLIB = -llinalg

$ cp Makefile.mpi bak_Makefile.mpi

$ vi Makefile.mpi

- 수정 내용-
CC =	    mpiicpc -std=c++11

$ make -f Makefile.mpi > make.log 2>&1

atc 설치

$ cd ../atc
(절대 경로 : cd ${MY_LAMMPS_DIR}/lib/atc)

$ cp Makefile.lammps.linalg bak_Makefile.lammps.linalg

$ vi Makefile.lammps.linalg

-수정 내용-
(수정이 필요하지 않은 경우 저장하지 않고 vim 종료)
atc_SYSLIB = -llinalg

$ cp Makefile.mpi bak_Makefile.mpi
$ vi Makefile.mpi

-수정 내용-
CC =	        mpiicpc -std=c++11

$ make -f Makefile.mpi > make.log 2>&1

linalg 설치

$ cd ../linalg
(절대 경로 : cd ${MY_LAMMPS_DIR}/lib/linalg)

$ cp Makefile.mpi bak_Makefile.mpi
 
$ vi Makefile.mpi

-수정 내용-
CC =          mpiicpc -std=c++11

$ make -f Makefile.mpi > make.log 2>&1

plumed 설치

$ cd ../plumed
(절대 경로 : cd ${MY_LAMMPS_DIR}/lib/plumed)

$ cp Install.py bak_Install.py

$ vi Install.py
- 수정 내용- 
123번째 라인 cmd 로 시작되는 부분
--enable-static-patch CXX=mpiicpc

$ cd ../../src
(절대 경로 : cd ${MY_LAMMPS_DIR}/src)

$ make lib-plumed args="-b" > plumed.make.log 2>&1
(다른 패키지보다 설치에 약간의 시간이 더 소요될 수 있음)

3. lammps package 설치 및 설정

(cd $MY_LAMMPS_DIR/src 경로에서 make 단계 진행)

$ make yes-most
$ make yes-voronoi
$ make yes-poems
$ make yes-awpmd
$ make yes-atc
$ make yes-plumed
$ make yes-intel
$ make yes-mpiio
$ make yes-ml-snap

$ make package-status > package.list 2>&1
(package.list에서 설정된 패키지 확인 가능)

$ vi Makefile.package.settings 
(package.settigs 파일 확인하고 수정사항이 없는 경우 vim 종료)
# Makefile settings generated by libraries used by specific LAMMPS packages
# this file is auto-edited when those packages are included/excluded

include ../../lib/plumed/Makefile.lammps
include ../../lib/atc/Makefile.lammps
include ../../lib/awpmd/Makefile.lammps
include ../../lib/poems/Makefile.lammps
include ../../lib/voronoi/Makefile.lammps
include ../../lib/plugin/Makefile.lammps

4. make 파일 수정 및 make

Makefile.mpi 수정

$ cd MAKE

$ cp Makefile.mpi bak_Makefile.mpi

$ vi Makefile.mpi

-compiler/linker settings 수정 내용-
# 예시 OPTFLAGS 의-xCOMMON-AVX512 는 SKL, KNL 노드 공통 최적화 옵션이며 
# -xMIC-AVX512 는 KNL, -xCORE-AVX512는 SKL 노드 최적화 옵션이므로 3가지 옵션 중 택일

CC =            mpiicpc
OPTFLAGS = -xCOMMON-AVX512 -O3 -fp-model fast=2 -no-prec-div -qoverride-limits -std=c++11

CCFLAGS = -qopenmp -qno-offload -fno-alias -ansi-alias -restrict \
-DLMP_INTEL_USELRT -DLMP_USE_MKL_RNG $(OPTFLAGS)

CCFLAGS += -I$(MKLROOT)/include -I/apps/common/jpeg/9c/include
SHFLAGS =       -fPIC
DEPFLAGS =      -M

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

ARCHIVE =       ar
ARFLAGS =       -rc
SHLIBFLAGS =    -shared

-FFT library 수정 내용-
FFT_INC = -DFFT_MKL -DFFT_SINGLE -DFFT_MKL_THREADS
FFT_PATH =
FFT_LIB = -L${MKLROOT}/lib/intel64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lmkl_rt

make 실행

$ cd ..
$ make mpi > make.mpi.log 2>&1

※ make 시 오류가 발생하는 경우 clean 방법

$ cd $MY_LAMMPS_DIR/src
$ make clean-all

Last updated