Skip to main content
QUICK REVIEW

[논문 리뷰] Onesweep: A Faster Least Significant Digit Radix Sort for GPUs

Andy Adinets, Duane Merrill|arXiv (Cornell University)|2022. 06. 03.
Algorithms and Data Compression인용 수 5
한 줄 요약

Onesweep는 GPU용 새로운 최소의수자리(Least-Significant Digit, LSD) 기수정렬 기법을 소개하며, 단일패스 누적합 기법을 사용해 전역 메모리 트래픽을 줄인다. 이 기법은 각 자릿수 분류 반복 시 약 2n의 전역 메모리 작업만 필요로 하여 이전 방법의 약 3n에 비해 감소시킨다. NVIDIA A100에서 256M개의 랜덤 32비트 키를 정렬할 경우 29.4 GKey/s의 성능을 기록하며, CUB에 비해 1.5배 빠르고 다양한 키 분포에서 HRS를 능가한다.

ABSTRACT

We present Onesweep, a least-significant digit (LSD) radix sorting algorithm for large GPU sorting problems residing in global memory. Our parallel algorithm employs a method of single-pass prefix sum that only requires ~2n global read/write operations for each digit-binning iteration. This exhibits a significant reduction in last-level memory traffic versus contemporary GPU radix sorting implementations, where each iteration of digit binning requires two passes through the dataset totaling ~3n global memory operations. On the NVIDIA A100 GPU, our approach achieves 29.4 GKey/s when sorting 256M random 32-bit keys. Compared to CUB, the current state-of-the-art GPU LSD radix sort, our approach provides a speedup of ~1.5x. For 32-bit keys with varied distributions, our approach provides more consistent performance compared to HRS, the current state-of-the-art GPU MSD radix sort, and outperforms it in almost all cases.

연구 동기 및 목표

  • GPU 기반 LSD 기수정렬에서 중복된 메모리 작업을 최소화하여 전역 메모리 트래픽을 줄이는 것.
  • 전역 메모리에 저장된 대규모 데이터셋에 적합한 고성능이고 확장 가능한 정렬 커널을 설계하는 것.
  • 다양한 키 분포에서 기존 최고 수준의 GPU 기수정렬 구현보다 빠르고 일관된 성능을 달성하는 것.
  • 자릿수 분류 단계에서 메모리 액세스 패턴을 최적화하여 GPU에서 효율적인 정렬을 가능하게 하는 것.

제안 방법

  • 알고리즘은 각 자릿수 분류 반복 시 두 번의 메모리 패assing이 필요로 하지 않도록 단일패스 누적합 계산을 사용한다.
  • 분할된 병렬 누적합 패턴을 활용해 최소한의 전역 메모리 트래픽으로 분류 버킷 오프셋을 효율적으로 계산한다.
  • 두 단계 커널 실행을 통해 먼저 분류 카운트를 계산하고, 이후 계산된 오프셋을 사용해 배타적 스캔 및 출력 버킷에 산재된 데이터를 삽입한다.
  • 워프 수준의 감소와 셰이프 기반 접근 방식을 활용해 GPU에서의 분기 분리 최소화 및 최적의 사용량 확보를 달성한다.
  • 각 자릿수 분류 단계에서 전역 메모리 작업을 약 2n으로 최소화하여 최종 레벨 캐시 압력을 크게 감소시킨다.
  • 32비트 키를 지원하며, 실제 워크로드에서 흔히 볼 수 있는 랜덤이고 다양한 키 분포에 최적화되어 있다.

실험 결과

연구 질문

  • RQ1단일패스 누적합 기법이 기존의 이중패스 표준을 뛰어나 전역 메모리 작업 수를 감소시킬 수 있는가?
  • RQ2메모리 트래픽 감소가 현대 GPU(예: A100)에서 성능에 어떤 영향을 미치는가?
  • RQ3제안된 방법이 비균일하거나 치우친 데이터를 포함한 다양한 키 분포에서도 높은 성능을 유지할 수 있는가?
  • RQ4Throughput와 일관성 측면에서 CUB와 HRS에 비해 알고리즘이 어떻게 비교되는가?

주요 결과

  • Onesweep는 NVIDIA A100 GPU에서 256M개의 랜덤 32비트 키를 정렬할 때 29.4 GKey/s의 성능을 기록하며, CUB를 크게 능가한다.
  • 제공된 조건에서 CUB, 현재 최고 수준의 GPU LSD 기수정렬 기법에 비해 1.5배 빠른 성능을 제공한다.
  • HRS, 최고 수준의 GPU MSD 기수정렬 기법에 비해 다양한 키 분포에서 더 일관된 성능을 보인다.
  • 기존 접근 방식의 약 3n에 비해 각 자릿수 분류 단계에서 전역 메모리 작업 수를 약 2n으로 줄여 최종 레벨 메모리 트래픽을 크게 감소시켰다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.