Core Concepts
최신 NVIDIA Ampere(A100) 및 Hopper(GH200) GPU 아키텍처에서 스텐실 기반 커널의 고도로 최적화된 구현을 통해 최대 58%의 성능 향상을 달성했습니다. 또한 OpenACC 및 OpenMP 프로그래밍 모델에 대한 새로운 비동기 실행 전략을 제안하여 최대 42%의 성능 향상을 달성했습니다.
Abstract
이 연구에서는 최신 NVIDIA Ampere(A100) 및 Hopper(GH200) GPU 아키텍처에서 스텐실 기반 커널의 성능을 평가하고 최적화 방안을 제시했습니다.
CUDA 커널 구현 및 최적화:
다양한 CUDA 커널 구현을 탐색하고 A100과 GH200 아키텍처에서 성능을 비교했습니다.
GH200의 새로운 스레드 블록 클러스터 기능이 성능에 미치는 영향을 분석했습니다.
최적화된 CUDA 커널은 이전 GPU 세대 대비 최대 58%의 성능 향상을 달성했습니다.
OpenACC 및 OpenMP 구현 및 최적화:
OpenACC와 OpenMP 타겟 오프로딩 구현을 제시하고 A100 및 GH200에서 성능을 평가했습니다.
OpenACC의 비동기 실행 전략과 OpenMP의 nowait 절을 활용한 새로운 최적화 기법을 제안했습니다.
최적화된 OpenACC 구현이 OpenMP 구현보다 33% 더 우수한 성능을 보였습니다.
프로그래밍 모델 비교:
CUDA, OpenACC, OpenMP 세 가지 프로그래밍 모델의 성능과 이식성을 비교했습니다.
포팅성을 고려할 때 OpenMP와 OpenACC가 유망한 선택지로 나타났습니다.
전력 소비 분석:
A100과 GH200의 전력 소비 특성을 프로그래밍 모델별로 비교했습니다.
GH200은 CUDA 구현에서 더 안정적인 전력 소비 패턴을 보였지만, OpenACC와 OpenMP에서는 A100보다 전력 소비가 높았습니다.
Stats
NVIDIA Ampere(A100) 아키텍처에서 CUDA 커널의 장치 메모리 읽기/쓰기 양은 22.15GB입니다.
NVIDIA Hopper(GH200) 아키텍처에서 최적화된 CUDA 커널의 장치 메모리 읽기/쓰기 양은 17.23GB로 22.18% 감소했습니다.
NVIDIA Ampere(A100) 아키텍처에서 OpenACC 커널의 장치 메모리 읽기/쓰기 양은 47,612,893,312바이트입니다.
NVIDIA Hopper(GH200) 아키텍처에서 OpenACC 커널의 장치 메모리 읽기/쓰기 양은 45,280,361,216바이트로 5.0% 감소했습니다.
NVIDIA Ampere(A100) 아키텍처에서 OpenMP 커널의 장치 메모리 읽기/쓰기 양은 46,086,569,472바이트입니다.
NVIDIA Hopper(GH200) 아키텍처에서 OpenMP 커널의 장치 메모리 읽기/쓰기 양은 32,045,994,240바이트로 30.4% 감소했습니다.
Quotes
"최신 TOP500 슈퍼컴퓨터 랭킹에 따르면 20개 시스템 중 15개가 GPU 가속기를 사용하고 있어, 이러한 가속기에 의존하는 워크로드를 지속적으로 업데이트하고 최적화하는 것이 중요합니다."
"최대 58%의 성능 향상을 달성했으며, 최적화된 OpenACC 구현이 OpenMP 구현보다 33% 더 우수한 성능을 보였습니다."
"포팅성을 고려할 때 OpenMP와 OpenACC가 유망한 선택지로 나타났습니다."