📔
활용정보
초보사용자 가이드누리온 지침서뉴론 지침서활용정보MyKSC 지침서
  • 활용정보
  • 1️⃣소프트웨어 설치
    • 누리온
      • LAMMPS
        • lammps-2Aug2023 설치 소개
        • lammps-3Mar20 설치 소개(SKL)
        • lammps-3Mar20 설치 소개(KNL)
        • lammps-12Dec18 설치 소개
      • GROMACS
        • GROMACS-2021.4 버전 설치 소개 (SKL)
        • GROMACS-2021.4 버전 설치 소개 (KNL)
        • GROMACS-2020.2 버전 설치 소개 (KNL)
        • GROMACS-2020.2 버전 설치 소개 (SKL)
        • GROMACS-2018.6 버전 설치 소개 (KNL)
        • GROMACS-2018.6 버전 설치 소개 (SKL)
        • GROMACS-5.1.4 설치
      • Quantum Espresso
        • Quantum Espresso-7.2 설치 소개
        • Quantum Espresso-6.6 설치 소개
        • Quantum Espresso-6.2.1 설치 소개
      • OpenFOAM
        • OpenFOAM-v1912 설치 소개
        • OpenFOAM-v1712 설치 소개
        • OpenFOAM-7 버전 설치 소개(SKL)
        • OpenFOAM-7 버전 설치 소개(KNL)
        • OpenFOAM-5.x 버전 설치 소개(SKL)
        • OpenFOAM-5.x 버전 설치 소개(KNL)
      • VASP
        • VASP 6.5.0 설치 소개
        • VASP 6.1.0 설치 소개
        • VASP 5.4.4 설치 (KNL)
        • VASP 5.4.4 설치 (SKL)
        • VASP 5.3.5 설치
      • 누리온 R-3.6.2 버전 설치 소개
      • CP2K
        • CP2K-6.1.0 버전 설치 소개
        • CP2K-5.1.0 버전 설치 소개
      • SIESTA
        • SIESTA 4.1-b3 설치(KNL)
        • SIESTA 4.1-b3 설치(SKL)
      • WRF-V3.9.1.1 설치
      • RASPA v2.0.47 설치 소개
      • gcc v8.1.0 설치
      • UPP v3.1 설치 소개
      • mpiP v3.4.1 설치 소개
      • V_Sim v3.7.2 설치 소개
      • foam-extend v3.1 설치 소개
      • ParaView v5.2.0 설치 소개
      • AutoDock Vina v1.1.2 설치 소개
      • DDSCAT v7.3.3 설치 소개
    • 뉴론
      • VASP
        • VASP 6.4.3 설치 (GPU)
        • VASP 5.4.4 설치 (GPU)
      • GROMACS
        • GROMACS-2018.6 (GPU 버전) 설치
        • GROMACS-2016.4 (GPU 버전) 설치
      • LAMMPS
        • lammps-16Mar18 (GPU 버전) 설치
      • NAMD 2.12 (GPU 버전) 설치
      • Quantum Espresso
        • Quantum Espresso-7.3 (GPU 버전) 설치
        • Quantum Espresso-6.6 (GPU 버전) 설치
        • Quantum Espresso-6.4 (GPU 버전) 설치
      • OpenFOAM-v1912 설치 소개 (SKL)
  • 2️⃣슈퍼컴퓨터 활용 팁
    • 공통
      • oneAPI 소개
      • AMD Instinct MI100 GPU 성능 테스트
      • Checkpoint 기능 관련 안내
      • 인터렉티브 작업 제출 예제
      • git 사용 방법 안내
      • PYTHON 2.7 EOL(End of Life) 안내
      • Conda 의 활용 소개
      • CPU 관련 오류 사항 ( illegal instruction )
      • vasp.5.4.4.18Apr17 Version Bug 이슈
      • 컴파일러별 AVX-512 옵션 정리
      • Linux(Unix) 에서 Text 파일 내용에 ^M 이 붙어 있는 경우 해결 방법
      • vasp.5.4.1.24Jun15 Version Bug 이슈
      • 오픈 소스 빌드 시에 OpenMP 체크 오류 (Intel 컴파일러)
      • X86_64 어셈블리 프로그래밍 기초
    • 누리온
      • MVAPICH2/MVAPICH2-X 성능 비교(VASP)
      • WRF
        • WRF 멀티노드 활용(SKL)
        • WRF 멀티노드 활용(KNL)
      • VASP
        • VASP 멀티노드 활용(SKL)
        • VASP 멀티노드 활용(KNL)
      • LAMMPS
        • LAMMPS 멀티노드 활용(SKL)
        • LAMMPS 멀티노드 활용(KNL)
      • Gromacs
        • Gromacs 멀티노드 활용 (SKL)
        • Gromacs 멀티노드 활용 (KNL)
      • QE
        • QE 멀티노드 활용(SKL)
        • QE 멀티노드 활용(KNL)
    • 뉴론
      • SSH Port Forwarding 을 통한 Jupyter 작업 실행
      • AMD 노드 활용
      • LAMMPS 멀티노드 활용
      • Gromacs 멀티노드 활용
      • OpenMPI 3.1.X 이슈 사항
      • MPI 환경설정 및 작업 제출 방법(2021.03)
  • 3️⃣동영상 지침서
    • 공통
      • 파일 전송 (FTP) 사용법
    • 누리온
      • 작업 제출 방법
      • 작업 스크립트 작성법
      • 슈퍼컴퓨터 모듈 사용법
      • 슈퍼컴퓨터 접속 방법 [Windows 사용자]
      • 슈퍼컴퓨터 접속 방법 [Mac 사용자]
    • 뉴론
      • 인터렉티브 작업 방법
      • Slurm 작업 제출 방법
      • conda 설정방법
      • 작업 스크립트 작성 방법
  • 4️⃣기타
    • 누리온
      • FAQ (2025.03)
      • 사용자 지침서 (2021.05)
      • 데스크톱 가상화(VDI)
      • TSMSF 사용자 지침서
      • i-PI 사용법 (LAMMPS)
      • 딥러닝 프레임워크 병렬화 사용법
      • Q-CHEM v5.2 사용자 지침서
      • ABAQUS 사용자 지침서(2020.12)
      • OpenFOAM 사용자 지침서
      • 가우시안16(Gaussian16) S/W 사용 안내 (2019.03)
      • ANSYS FLUENT 사용자 지침서(2020.03)
      • ANSYS CFX 사용자 지침서(2020.02)
      • NASTRAN 사용자 지침서(2020.02)
      • LS-DYNA 사용자 지침서(2020.02)
      • 가우시안16(Gaussian16) LINDA S/W 사용 안내 (2019.08)
    • 뉴론
      • 공유 노드 정책 변경에 따른 메모리 할당량 설정 안내
      • SLURM 스케줄러 Fairshare 스케줄링 정책
      • FAQ (2025.01)
      • OpenFOAM 사용자 지침서
      • Jupyter 사용자 지침서
      • 딥러닝 프레임워크 병렬화 사용법
      • Keras 기반 Multi GPU 사용 방법 (2020.10)
      • 가우시안16(Gaussian16) GPU S/W 사용 안내 (2019.08)
      • slurm 스케쥴러 기본 사용법 (2021.04)
      • 뉴론 시스템 개요(2021.04)
  • External Link
    • Nurion Guide(Eng)
    • Neuron Guide(Eng)
Powered by GitBook
On this page
  • 가. i-PI 소개
  • 나. 소프트웨어 설치 정보
  • 다. 소프트웨어 실행 방법 - Unix Domain Socket 방식 (Single node only)
  • 1. 환경 설정
  • 2. 입력 파일 설정
  • 3. 스케줄러 작업 스크립트 파일 작성
  • 라. 소프트웨어 실행 방법 - Internet Socket mode (Multi node 대응)
  • 1. 환경 설정
  • 2. 입력 파일 설정
  • 3. 스케줄러 작업 스크립트 파일 작성
  1. 기타
  2. 누리온

i-PI 사용법 (LAMMPS)

슈퍼컴퓨팅인프라센터 2020. 11. 12. 10:12

PreviousTSMSF 사용자 지침서Next딥러닝 프레임워크 병렬화 사용법

Last updated 1 year ago

본 문서는 누리온 시스템에서 i-PI 소프트웨어 사용을 위한 기초적인 정보를 제공하고 있습니다. 따라서, i-PI 소프트웨어 사용법과 누리온/리눅스 사용법 등은 포함되어 있지 않습니다. 누리온/리눅스 사용법에 대한 정보는 KISTI 홈페이지 (https://www.ksc.re.kr)의 기술지원 > 지침서 내 누리온 사용자 지침서 등을 참고하시기 바랍니다.

가. i-PI 소개

  • i-PI는 Python으로 작성된 Universal force engine 인터페이스입니다.

  • 원자간 상호작용에 대한 제일원리 평가 소프트웨어와 함께 사용하도록 설계되어 있습니다.

  • 본 문서는 i-PI와 LAMMPS를 같이 사용하는 경우에 대해 서술합니다.

  • LAMMPS 등 타 소프트웨어와 연동하여 계산을 수행하는 경우 상호간 통신에 Socket을 사용합니다.(Unix Domain Socket, Internet Socket)

※ 자세한 사항은 i-PI 홈페이지를 방문하시기 바랍니다. (http://ipi-code.org)

나. 소프트웨어 설치 정보

  • i-PI는 별도의 설치가 필요하지 않으며, 배포처(https://github.com/i-pi/i-pi)에서 소스코드를 내려받아 바로 사용하실 수 있습니다.

  • LAMMPS는 누리온 시스템에 기설치된 12Dec18 버전을 모듈 환경설정하여 사용합니다.

다. 소프트웨어 실행 방법 - Unix Domain Socket 방식 (Single node only)

i-PI와 타 소프트웨어를 연동하여 사용할 경우 Socket으로 통신을 수행합니다.

Unix Domain Socket 방식은 오직 한 노드 내에서만 사용할 수 있으며, 파일시스템을 거쳐 통신이 이루어지기 때문에 전체 네트워크 프로토콜 스택을 거쳐 통신이 이루어지는 Internet Socket(TCP/IP) 대비 오버헤드가 적어 성능상 유리합니다.

1. 환경 설정

$ module load intel/18.0.3 impi/18.0.3 craype-mic-knl
$ module load lammps/12Dec18 python/3.7

2. 입력 파일 설정

실행 전 입력 파일의 일부를 수정할 필요가 있습니다.

  • i-PI 입력파일: input.xml

...
<ffsocket name='lmpserial' mode='unix'>
<address> ipi-lmp_unix </address>
</ffsocket>
...

※ ffsocket 블록에서 mode는 'unix'로 설정하고, address는 임의의 문자열을 사용하시면 됩니다.

  • LAMMPS 입력파일: in.lmp

...
fix 1 all ipi ipi-lmp_unix 34567 unix
...

※ 4번째 필드는 LAMMPS와 함께 동작할 외부 코드를 지정합니다: ipi

※ 5번째 필드는 input.xml에서 설정한 address와 동일한 문자열을 입력해야 합니다: ipi-lmp_unix

※ 7번째 필드는 Unix Domain Socket 사용 여부를 결정합니다: unix

3. 스케줄러 작업 스크립트 파일 작성

  • 아래는 누리온 시스템에서의 작업 제출 예제입니다.

#!/bin/sh
#PBS -V
#PBS -N i-PI_test
#PBS -q normal
#PBS -l select=1:ncpus=68:mpiprocs=68:ompthreads=1
#PBS -l walltime=12:00:00
#PBS -A etc
cd $PBS_O_WORKDIR
source {i-PI 설치 경로}/env.sh

rm -fv EXIT
OMP_NUM_THREADS=4 # i-PI 실행 스레드 수 지정


if [ -f "RESTART" ]; then
i-pi RESTART >& log.i-pi &
else
i-pi input.xml >& log.i-pi &
fi

OMP_NUM_THREADS=1 # LAMMPS 실행 스레드 수 지정

sleep 10

mpirun -n 64 lmp_mpi -in in.lmp # 실행할 MPI 프로세스 수 명시적으로 지정


touch EXIT

※ 위에서 파란색으로 표기된 부분은 사용자가 적절히 수정해야 합니다.

※ Queue 종류(-q) : queue는 KNL(68 cores)을 사용할 경우 normal, SKL(40 cores)을 사용할 경우 norm_skl을 사용합니다.

※ 기타 PBS에 관련된 명령어 및 사용법은 누리온 사용자 지침서를 참조하시면 됩니다.

라. 소프트웨어 실행 방법 - Internet Socket mode (Multi node 대응)

1. 환경 설정

$ module load intel/18.0.3 impi/18.0.3 craype-mic-knl
$ module load lammps/12Dec18 python/3.7

2. 입력 파일 설정

실행 전 입력 파일의 일부를 수정할 필요가 있습니다.

  • i-PI 입력파일: input.xml

...
<ffsocket name='lmpserial' mode='inet'>
<address> 172.31.27.3 </address>
<port> 34567 </port> # port 주소 지정
</ffsocket>
...

※ ffsocket 블록에서 mode는 'inet'으로 설정하고, address(IP 주소) 및 port(포트 주소)를 설정하시면 됩니다.

  • LAMMPS 입력파일: in.lmp

...
fix 1 all ipi 172.31.27.3 34567
...

※ 4번째 필드는 LAMMPS와 함께 동작할 외부 코드를 지정합니다: ipi

※ 5번째 필드는 input.xml에서 설정한 address와 동일한 IP 주소를 입력해야 합니다: i-PI가 실행될 노드의 IP 주소

※ 6번째 필드는 input.xml에서 설정한 port와 동일한 포트 주소를 입력해야 합니다: i-PI에서 사용할 임의의 포트 주소

※ 7번째 필드는 Internet socket mode에서는 사용되지 않습니다.

3. 스케줄러 작업 스크립트 파일 작성

작업이 실행될 계산노드를 명시적으로 지정하지 않을 경우 시스템 사용 상황에 따라 작업을 제출할 때마다 다른 계산노드를 할당받을 가능성이 높습니다.

따라서 작업 스크립트에서 input.xml, in.lmp의 address 필드 값을 실제 할당받은 계산노드의 주소로 업데이트하는 과정이 필요합니다.

  • 아래는 누리온 시스템에서의 작업 제출 예제입니다.

#!/bin/sh
#PBS -V
#PBS -N i-PI_test
#PBS -q normal
#PBS -l select=1:ncpus=68:mpiprocs=68:ompthreads=1
#PBS -l walltime=12:00:00
#PBS -A etc
cd $PBS_O_WORKDIR
source {i-PI 설치 경로}/env.sh
rm -fv EXIT
OMP_NUM_THREADS=4 # i-PI 실행 스레드 수 지정
IPINODE=grep "${HOSTNAME} " /etc/hosts | awk '{print $1}' # 현재 i-PI가 실행중인 노드의 IP 주소
if [ -f "RESTART" ]; then
sed -i "s:fix 1 all ipi .* :fix 1 all ipi ${IPINODE} :g" in.lmp
sed -i "s:address>.<:address>${IPINODE}<:g" RESTART
sed -i "s:port>.<:port>34567<:g" RESTART
i-pi RESTART >& log.i-pi &
else
sed -i "s:fix 1 all ipi .* :fix 1 all ipi ${IPINODE} :g" in.lmp
sed -i "s:address>.<:address>${IPINODE}<:g" input.xml
sed -i "s:port>.<:port>34567<:g" input.xml
i-pi input.xml >& log.i-pi &
fi
OMP_NUM_THREADS=1 # LAMMPS 실행 스레드 수 지정
sleep 10
mpirun -n 64 lmp_mpi -in in.lmp # 실행할 MPI 프로세스 수 명시적으로 지정
touch EXIT

※ 위에서 파란색으로 표기된 부분은 사용자가 적절히 수정해야 합니다.

※ Queue 종류(-q) : queue는 KNL(68 cores)을 사용할 경우 normal, SKL(40 cores)을 사용할 경우 norm_skl을 사용합니다.

※ 기타 PBS에 관련된 명령어 및 사용법은 누리온 사용자 지침서를 참조하시면 됩니다.

4️⃣
(출처: http://ipi-code.org/about/interface/)