MVAPICH2/MVAPICH2-X 성능 비교(VASP)
슈퍼컴퓨팅인프라센터 2020. 7. 23. 15:48
Last updated
슈퍼컴퓨팅인프라센터 2020. 7. 23. 15:48
Last updated
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/
누리온 시스템에 설치된 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) 최적화 설정으로 구성되었다.
누리온 시스템에서 'MVAPICH2/2.3.1 및 MVAPICH2-X/2.3.3 모듈을 활용한 VASP 테스트 샘플의 실행 방법 및 성능을 보여주는 예제이다. VASP (5.4.4.4 버전)의 실행 테스트를 위하여, 실리콘(Si512)을 모델 시스템으로 사용하여 PBE 구현의 성능을 테스트하였다. 병렬 설정에 따른 성능 차이를 가장 크게 보이는 변수가 NCORE값이므로, NCORE가 4, 8, 16, 32, 64일 때에 대하여 누리온 노드수를 조정하여 계산 속도를 측정하였다.
부표에서 가로축은 사용한 NCORE 수이고, 세로축은 사용한 KNL 노드 수이다. 각 시간(초) 3번의 반복 실험을 평균한 결과이다. Massive parallel limit에서 설정한 NCORE 수가 64일때 좋은 성능을 보였다. mvapich2에서는 8노드 이상에서는 노드를 늘이더라도 계산 시간이 줄어들지 않는 결과를 보였다.
__
다음은 두 가지 모듈을 사용하여 성능 테스트한 결과로, mvapich2-x/2.3.3 모듈을 사용한 경우가 더 빠르다는 것을 알 수 있다.