[논문 리뷰] Implementing Strassen's Algorithm with CUTLASS on NVIDIA Volta GPUs
이 논문은 CUTLASS를 사용하여 NVIDIA Volta GPU에서 메모리 효율적인 스트라센 알고리즘의 새로운 구현을 제시한다. GEMM 커널에서 공유 메모리와 레지스터 파일을 재사용하여 추가 워크스페이스를 피하고 있다. 1단계 스트라센의 경우 최대 1.11×의 성능 향상을 달성하였으며, break-even 점수는 1,536에 불과하고, 2단계 스트라센의 경우 1.19×의 성능 향상을 기록하였다. 이는 병합된 연산, 작업 기반 병렬 처리, 예측 성능 모델을 활용한 결과이다.
Conventional GPU implementations of Strassen's algorithm (Strassen) typically rely on the existing high-performance matrix multiplication (GEMM), trading space for time. As a result, such approaches can only achieve practical speedup for relatively large, "squarish" matrices due to the extra memory overhead, and their usages are limited due to the considerable workspace. We present novel Strassen primitives for GPUs that can be composed to generate a family of Strassen algorithms. Our algorithms utilize both the memory and thread hierarchies on GPUs, reusing shared memory and register files inherited from GEMM, fusing additional operations, and avoiding extra workspace. We further exploit intra- and inter-kernel parallelism by batching, streaming, and employing atomic operations. We also develop a performance model for NVIDIA Volta GPUs to select the appropriate blocking parameters and predict the performance for GEMM and Strassen. Overall, our 1-level Strassen can achieve up to 1.11x speedup with a crossover point as small as 1,536 compared to cublasSgemm on a NVIDIA Tesla V100 GPU. With additional workspace, our 2-level Strassen can achieve 1.19x speedup with a crossover point at 7,680.
연구 동기 및 목표
- 스트라센 알고리즘의 실용적 한계, 즉 높은 메모리 오버헤드와 워크스페이스 요구로 인한 문제 크기 제한을 극복하기 위해.
- 추가 글로벌 및 공유 메모리 사용을 제거함으로써, 더 작은 비정사각형 행렬에서도 기존 GEMM을 능가할 수 있도록 스트라센 알고리즘을 가능하게 하기 위해.
- 커널 내부 및 간의 병렬 처리를 배치, 스트리밍, 원자 연산을 통해 활용함으로써 커널 실행 오버헤드를 증가시키지 않고도 병렬 처리를 극대화하기 위해.
- 최적의 차단 파라미터 선택과 런타임 성능 예측을 안내하기 위해 볼타 GPU 기반의 정확한 성능 모델을 개발하기 위해.
- 최신 GPU에서 최소한의 메모리 프로파일을 가지고도 고도의 산술 강도를 확보함으로써, 작은 문제 크기에서도 스트라센을 효율적으로 구현할 수 있음을 입증하기 위해.
제안 방법
- 기존 공유 메모리와 레지스터 파일을 재사용하여 추가 워크스페이스가 필요 없도록, 메모리 및 산술 연산을 직접 GEMM 파이프라인에 융합한 새로운 GPU 스트라센 커널 설계.
- 커널 특화 및 연산 융합을 통한 레지스터 사용 최적화로, 레지스터 압박을 줄이면서도 높은 점유율을 유지하기 위해.
- 스레드 블록, 워프, 스레드 간의 커널 내 병렬 처리와 배치 및 스트리밍을 통한 커널 간 병렬 처리를 활용하여 계산과 메모리 대역폭을 겹치기 위해.
- 스트라센 계산 그래프에서 동시 업데이트를 관리하기 위해 원자 연산을 활용하여 확장 가능한 작업 기반 병렬 처리를 가능하게 하기 위해.
- 산술 강도, 메모리 연산, 레지스터 사용을 기반으로 한 볼타 GPU 성능 모델 개발을 통해 성능 예측 및 최적의 블록 크기 선택을 가능하게 하기 위해.
- 지연 최소화와 최대한의 겹침을 달성하기 위해 메모리 액세스 패턴과 피리패치를 신중히 설계한 1단계 및 2단계 스트라센 변형 구현.
실험 결과
연구 질문
- RQ1기존 GEMM에 비해 추가 글로벌 또는 공유 메모리 워크스페이스가 필요 없이 GPU에서 스트라센 알고리즘을 구현할 수 있는가?
- RQ2현대의 볼타 GPU에서 추가 메모리가 없을 경우, 스트라센 알고리즘이 cublasSgemm를 능가하기 시작하는 최소 행렬 크기는 얼마인가?
- RQ3스트라센 알고리즘에서 커널 내부 및 간의 병렬 처리를 어떻게 효과적으로 활용할 수 있으며, 이를 통해 높은 점유율과 메모리 지연 숨기기를 유지할 수 있는가?
- RQ4산술 강도와 메모리 연산을 기반으로 한 성능 모델이 볼타 GPU에서 스트라센 성능을 얼마나 정확하게 예측할 수 있는가?
- RQ5차단 파라미터의 선택이 GEMM 대비 스트라센의 성능에 미치는 영향은 무엇이며, 이를 어떻게 최적화할 수 있는가?
주요 결과
- 1단계 스트라센의 경우 테슬라 V100 GPU에서 1,536×1,536 행렬 크기에서 break-even 점수 1,536을 확보하여 cublasSgemm를 초월한다.
- 2단계 스트라센의 경우 break-even 점수는 7,680이며, 최대 1.19×의 성능 향상을 기록하였다. 이는 이전 최고 수준의 방법에서 요구하는 13,312보다 훨씬 낮은 수준이다.
- 제안된 구현은 표준 GEMM과 동일한 추가 글로벌 또는 공유 메모리 사용량을 유지하여 워크스페이스 기반의 메모리 병목 현상을 제거하였다.
- 성능 모델은 런타임 성능을 정확하게 예측하고, GEMM 및 스트라센 커널에 대한 최적의 블록 크기 선택을 안내하는 데 성공하였다.
- 작업 융합과 메모리 및 계산 단계의 겹침을 통해 고도의 산술 강도를 확보함으로써, 메모리 대역폭 제한의 영향을 최소화하였다.
- 이러한 접근은 이전에 메모리 및 성능 오버헤드로 인해 경쟁력이 없었던 작은 비정사각형 행렬에 대해서도 GPU에서 스트라센 알고리즘의 실용적 적용 가능성을 입증하였다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.