📔
활용정보
초보사용자 가이드누리온 지침서뉴론 지침서활용정보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
  • 가. 개요
  • 나. 환경설정 및 구성
  • 1. 환경설정 방법
  • 2. 상세 구성
  • 다. 성능 비교
  • 라. NCORE값에 따른 성능최적화
  • 마. mvapich2/2.3.1 vs mvapich2-x/2.3.3
  1. 슈퍼컴퓨터 활용 팁
  2. 누리온

MVAPICH2/MVAPICH2-X 성능 비교(VASP)

슈퍼컴퓨팅인프라센터 2020. 7. 23. 15:48

Previous누리온NextWRF

Last updated 1 year ago

가. 개요

MVAPICH2-X는 MVAPICH2를 기반으로 개발된 MPI 라이브러리로, 엑사스케일 컴퓨팅 환경에서의 통신 성능 최적화를 목표로 노드 간 통신 성능 및 노 내 통신 성능을 모두 고려하여 개발되었다.

MVAPICH2-X는 ‘Advanced MPI and Unified MPI+PGAS Communication Runtime for Exascale Systems’ 을 의미하며, 매니코어 CPU 기반의 슈퍼컴퓨터에서 많이 활용되고 있으며 최근 클라우드 컴퓨팅 산업의 발전에 따라 Microsoft Azure 및 Amazon Web Service (AWS) 등 여러 시스템에서도 활용되고 있다.

계산 과학에서 Message Passing Interface (MPI) 는 가장 많이 사용되는 프로그래밍 모델이며, Partitioned Global Address Space (PGAS) 는 주로 불규칙한 통신 패턴이 있는 프로그램을 위하여 사용된다. PGAS는 성능에 필요한 공유 메모리 추상화(abstraction) 및 지역성(locality) 통제를 제공한다.

MVAPICH2-X에서 활용되는 여러 feature 중 KISTI 5호기 Nurion에 활용 가능한 기술은 노드 내 collective 최적화를 제공하는 XPMEM 및 asynchronous progress 최적화 기술이 있다.

MVAPICH2-X는 MVAPICH2를 기반으로 개발하여 MPI-3 및 고급 MPI 기능을 모두 지원한다.

  • Dynamically Connected (DC) Transport Protocol

  • User Mode Memory Registration

  • On-Demand Paging (ODP)

  • Data Partitioning-based Multi-Leader Design (DPML)

  • Contention Aware Kernel-Assisted MPI collectives

  • Hybrid MPI+PGAS (UPC, OpenSHEME, CAF and UPC++)

따라서 이 라이브러리는 사용자가 통합 커뮤니케이션 런타임과 함께 MPI, MPI+OpenMP, UPC, OpenSHMEM, UPC++, CAF, hybrid MPI(+OpenMP) 모델 등을 사용하여 어플리케이션을 작성할 수 있는 유연성을 제공한다.

※ 상세 내용은 아래 링크 참고

http://mvapich.cse.ohio-state.edu/overview/


나. 환경설정 및 구성

1. 환경설정 방법

$ module load intel/19.0.5 mvapich2-x/2.3.3

2. 상세 구성

누리온 시스템에 설치된 mvapich2-x/2.3.3모듈은 아래와 같은 옵션으로 설치되었다.

  • --disable-rdma-cm- --without-hydra-ckpointlib

  • --disable-mcast

  • --with-device=ch3:psm

  • --with-xpmem=/opt/xpmem/

  • --with-ch3-rank-bits=32

64K 이상의 코어 수를 지원하기 위하여 –with-ch3-rank-bits 옵션이 사용되었으며, MVAPICH2 와는 달리 collective communication 을 위하여 xpmem 을 통하여 동작한다.

※ xpmem 을 활용한 intra-socket 및 inter-socket 성능 참고 http://mvapich.cse.ohio-state.edu/performance/mv2x-pt_to_pt/

MV2_SHOW_ENV_INFO 환경변수를 2로 구성하여 Knights Landings(KNL) 최적화 설정으로 구성되었다.

 PROCESSOR ARCH NAME                     : MV2_ARCH_INTEL_XEON_PHI_7250
 PROCESSOR FAMILY NAME                   : MV2_CPU_FAMILY_INTEL
 PROCESSOR MODEL NUMBER                  : 87
 HCA NAME                                : MV2_HCA_INTEL_HFI1
 MV2_USE_CMA_COLL                        : 1
 - MV2_USE_CMA_COLL_ALLREDUCE            : 0
 - MV2_USE_CMA_COLL_REDUCE               : 0
 - MV2_USE_CMA_COLL_BCAST                : 0
 - MV2_USE_CMA_COLL_SCATTER              : 1
 - MV2_USE_CMA_COLL_GATHER               : 1
 - MV2_USE_CMA_COLL_ALLGATHER            : 1
 - MV2_USE_CMA_COLL_ALLTOALL             : 1
 MV2_USE_XPMEM_COLL                      : 1
 - MV2_USE_XPMEM_COLL_ALLREDUCE          : 1
 - MV2_USE_XPMEM_COLL_REDUCE             : 1
 - MV2_USE_XPMEM_COLL_BCAST              : 1
 - MV2_USE_XPMEM_COLL_SCATTER            : 1
 - MV2_USE_XPMEM_COLL_GATHER             : 1
 - MV2_USE_XPMEM_COLL_ALLGATHER          : 1
 - MV2_USE_XPMEM_COLL_ALLTOALL           : 0
 PSM2_MQ_RNDV_HFI_THRESH                 : 4194304
 PSM2_MQ_EAGER_SDMA_SZ                   : 4194304
 Heterogeneity                           : NO
 SMP Eagersize                           : 32768
 HFI Eagersize                           : 4194304
 Tuning Table:                           : MV2_ARCH_INTEL_XEON_PHI_7250 MV2_HCA_INTEL_HFI1
 MV2_ENABLE_SOCKET_AWARE_COLLECTIVES     : 1
 MV2_USE_SOCKET_AWARE_ALLREDUCE          : 1
 MV2_USE_SOCKET_AWARE_BARRIER            : 1
 MV2_USE_SOCKET_AWARE_SHARP_ALLREDUCE    : 0
 MV2_SOCKET_AWARE_ALLREDUCE_MIN_MSG      : 1
 MV2_SOCKET_AWARE_ALLREDUCE_MAX_MSG      : 2048

다. 성능 비교

누리온 시스템에서 'MVAPICH2/2.3.1 및 MVAPICH2-X/2.3.3 모듈을 활용한 VASP 테스트 샘플의 실행 방법 및 성능을 보여주는 예제이다. VASP (5.4.4.4 버전)의 실행 테스트를 위하여, 실리콘(Si512)을 모델 시스템으로 사용하여 PBE 구현의 성능을 테스트하였다. 병렬 설정에 따른 성능 차이를 가장 크게 보이는 변수가 NCORE값이므로, NCORE가 4, 8, 16, 32, 64일 때에 대하여 누리온 노드수를 조정하여 계산 속도를 측정하였다.

INCAR 파일
ISTART = 0
ICHARG = 2

PREC   = normal
ENCUT  = 300
LREAL  = auto

ALGO   = normal
NELMIN = 4
NELM   = 10
EDIFF  = 1e-6

ISMEAR = 0
SIGMA  = 0.1

KPAR   = 1
NCORE  = {4,8,16,32,64}
NSIM   = 4
LPLANE = .TRUE.

LWAVE  =.FALSE.
LCHARG =.FALSE.
작업 스크립트
#!/usr/bin/env bash

#PBS -V
#PBS -N bmt
#PBS -A vasp
#PBS -q normal
#PBS -l select=1:ncpus=64:mpiprocs=64:ompthreads=1
#PBS -l walltime=48:00:00
#PBS -W release_nodes_on_stageout=True 

module purge
module load intel/19.0.5 mvapich2/2.3.1

cd $PBS_O_WORKDIR

mpirun_rsh                                                 \
    -np $(wc -l $PBS_NODEFILE | awk '{print $1}') \
    -hostfile $PBS_NODEFILE                            \
    MV2_ENABLE_AFFINITY=1                          \
    MV2_CPU_BINDING_POLICY=bunch              \
    OMP_NUM_THREADS=1                             \
    {설치경로}/vasp_std

라. NCORE값에 따른 성능최적화

부표에서 가로축은 사용한 NCORE 수이고, 세로축은 사용한 KNL 노드 수이다. 각 시간(초) 3번의 반복 실험을 평균한 결과이다. Massive parallel limit에서 설정한 NCORE 수가 64일때 좋은 성능을 보였다. mvapich2에서는 8노드 이상에서는 노드를 늘이더라도 계산 시간이 줄어들지 않는 결과를 보였다.

__

마. mvapich2/2.3.1 vs mvapich2-x/2.3.3

다음은 두 가지 모듈을 사용하여 성능 테스트한 결과로, mvapich2-x/2.3.3 모듈을 사용한 경우가 더 빠르다는 것을 알 수 있다.

2️⃣
mvapich2/2.3.1 성능
mvapich2-x/2.3.3 성능