[논문 리뷰] DASH: A C++ PGAS Library for Distributed Data Structures and Parallel Algorithms
DASH는 C++ 템플릿 라이브러리로, 확장성 있고 이식 가능한 병렬 프로그래밍을 위한 컴파일러 없는 PGAS(분할된 글로벌 주소 공간) 모델을 구현한다. MPI-3 RMA를 통한 원측 통신을 이용하여 효율적이고 표현력 있으며 상호 운용 가능한 분산 데이터 구조와 병렬 알고리즘을 가능하게 하며, 9,800개의 코어까지 강력한 성능과 선형 확장성을 달성한다. 또한 팀(Teams)과 STL 호환 추상화를 통해 계층적 로컬리티를 지원한다.
We present DASH, a C++ template library that offers distributed data structures and parallel algorithms and implements a compiler-free PGAS (partitioned global address space) approach. DASH offers many productivity and performance features such as global-view data structures, efficient support for the owner-computes model, flexible multidimensional data distribution schemes and inter-operability with STL (standard template library) algorithms. DASH also features a flexible representation of the parallel target machine and allows the exploitation of several hierarchically organized levels of locality through a concept of Teams. We evaluate DASH on a number of benchmark applications and we port a scientific proxy application using the MPI two-sided model to DASH. We find that DASH offers excellent productivity and performance and demonstrate scalability up to 9800 cores.
연구 동기 및 목표
- HPC 분야에서 PGAS 모델의 보급이 제한된 문제를 해결하기 위해 컴파일러가 필요 없는 C++ 기반의 대안을 제공함으로써 벤더 종속성과 장기적인 컴파일러 유지보수 문제를 피하고자 한다.
- 기존 C++ 애플리케이션에 PGAS 프로그래밍을 원활하게 통합할 수 있도록 개별 데이터 구조의 점진적 마이그레이션을 허용함으로써, 코드베이스 전체를 다시 작성하지 않아도 된다.
- 다중 수준의 로컬리티를 표현할 수 있는 민첩한 팀 추상화를 통해 현대 HPC 시스템의 복잡한 계층적 머신 아키텍처를 지원하고자 한다.
- C++ 템플릿 추상화와 효율적인 원측 통신, STL 상호 운용성의 조합을 통해 높은 성능과 생산성을 동시에 달성하고자 한다.
- 특히 비정형적이고 데이터 집약적인 워크로드에서 기존의 양측 통신 기반 MPI 모델을 초월해 PGAS 프로그래밍이 효율적으로 확장될 수 있음을 입증하고자 한다.
제안 방법
- DASH는 DART라는 경량 PGAS 런타임 위에 구축된 C++ 템플릿 라이브러리로 구현되었으며, DART는 MPI-3 RMA, GASPI, GASNet 등의 원측 통신 기반 기반 하위 시스템을 추상화한다.
- 전체 뷰 데이터 구조를 제공하여 분산 배열(dash::Array 등)과 글로벌 포인터/참조(GlobPtr, GlobRef 등)를 통해 원격 메모리 위치에 직접 액세스할 수 있도록 한다.
- 계층적 팀 모델을 사용하여 로컬리티를 표현함으로써 머신 아키텍처의 다수 수준에서 통신 및 동기화를 세밀하게 제어할 수 있다.
- 유연한 다차원 데이터 분포 방식을 지원하며, 글로벌 및 로컬 반복자(Iterator)를 통해 분산 컨테이너에 대해 STL 알고리즘을 직접 사용할 수 있다.
- 각 단위가 자신의 로컬 데이터에 직접 액세스하고 연산할 수 있도록 함으로써 오너-컴퓨트 모델을 지원하여 통신 오버헤드를 감소시킨다.
- 기존의 MPI 기반 애플리케이션과 상호 운용 가능하여, 전체 코드베이스를 다시 작성하지 않고도 개별 데이터 구조의 점진적 마이그레이션을 허용한다.
실험 결과
연구 질문
- RQ1컴파일러가 없는 C++ 기반 PGAS 접근 방식이 기존의 양측 통신 기반 MPI 프로그래밍과 비교해 높은 성능과 확장성을 달성할 수 있는가?
- RQ2DASH는 데이터 분석 및 그래프 워크로드에서 흔히 발생하는 복잡하고 비정형적인 통신 패턴을 얼마나 효과적으로 지원할 수 있는가?
- RQ3DASH의 팀 추상화가 현대 HPC 시스템에서 계층적 로컬리티를 효율적으로 표현하는 데 얼마나 기여하는가?
- RQ4C++ 템플릿을 통해 높은 생산성과 표현력을 제공하면서도 런타임 오버헤드를 최소화할 수 있는가?
- RQ5실제 과학적 프oxy 애플리케이션을 MPI의 양측 모델에서 원측 PGAS 모델으로 마이그레이션했을 때 DASH의 성능은 어떠한가?
주요 결과
- DASH는 벤치마크 애플리케이션과 과학적 프록시 애플리케이션에서 9,800개의 코어까지 강력한 확장성을 입증했다.
- DASH를 사용해 마이그레이션한 과학적 프록시 애플리케이션이 원래의 MPI 두 측 모델 구현보다 뛰어난 성능을 보였으며, 이는 원측 PGAS 모델의 성능 우월성을 시사한다.
- DASH는 개별 데이터 구조의 점진적 마이그레이션을 허용함으로써 기존 C++ 및 MPI 코드베이스에 원활하게 통합할 수 있다.
- 글로벌 및 로컬 반복자를 통한 STL 알고리즘 지원이 개발자 생산성과 코드 표현력을 크게 향상시켰다.
- DASH의 팀 추상화는 계층적 로컬리티를 효과적으로 모델링하여 다수 수준의 메모리 및 컴퓨팅 아키텍처에서 최적화된 통신 패턴을 가능하게 했다.
- DASH의 컴파일러 없는 설계는 언어 수준의 PGAS 컴파일러가 지닌 장기적인 유지보수 부담을 피하면서도 높은 성능과 이식성을 유지한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.