[논문 리뷰] GPU sample sort
이 논문은 다수코어 GPU를 위한 최적화된 샘플 정렬 알고리즘을 제시하며, 다중 방향 분할을 활용해 기존 GPU 정렬 알고리즘을 능가한다. 균일하게 분포된 키에 대해 Thrust의 병합 정렬보다 최대 68% 빠르며, GPU 퀵정렬보다 2배 이상 빠르며, 64비트 정수에 대해서는 레이더 정렬을 평균적으로 2배 빠르게 한다.
In this paper, we present the design of a sample sort algorithm for manycore GPUs. Despite being one of the most efficient comparison-based sorting algorithms for distributed memory architectures its performance on GPUs was previously unknown. For uniformly distributed keys our sample sort is at least 25% and on average 68% faster than the best comparison-based sorting algorithm, GPU Thrust merge sort, and on average more than 2 times faster than GPU quicksort. Moreover, for 64-bit integer keys it is at least 63% and on average 2 times faster than the highly optimized GPU Thrust radix sort that directly manipulates the binary representation of keys. Our implementation is robust to different distributions and entropy levels of keys and scales almost linearly with the input size. These results indicate that multi-way techniques in general and sample sort in particular achieve substantially better performance than two-way merge sort and quicksort.
연구 동기 및 목표
- 샘플 정렬의 성능이 이전에 탐색되지 않은 다수코어 GPU 아키텍처를 위한 최적화된 샘플 정렬 알고리즘을 설계하기 위해.
- Thrust의 병합 정렬과 퀵정렬과 같은 기존 GPU 정렬 알고리즘과의 성능 비교를 위해.
- 64비트 정수 키에 대해 고도로 최적화된 GPU 레이더 정렬과의 비교를 위해.
- 다양한 데이터 분포와 엔트로피 수준에서의 강건성과 확장성 평가를 위해.
제안 방법
- 샘플링된 키를 기반으로 한 다중 방향 분할을 사용하여 분할 지점(스플릿 포인트)을 결정함으로써 GPU 스레드 블록 간 데이터 분포를 효율적으로 수행한다.
- 로드 불균형을 최소화하고 분할 과정 중 글로벌 메모리 액세스를 줄이기 위해 분할 지점을 샘플 기반으로 선택한다.
- 스레드 블록 수준의 정렬과 병렬 분할을 통합하여 GPU 점유율과 메모리 코alescing을 극대화한다.
- 균일한 키 분포뿐만 아니라 비균일한 키 분포에 최적화되어 있어, 데이터 엔트로피 수준에 관계없이 일관된 성능을 보장한다.
- 공유 메모리 사용 및 워프 수준 프리미티브를 포함한 GPU 전용 최적화를 활용하여 비교 및 데이터 이동을 가속화한다.
실험 결과
연구 질문
- RQ1샘플 정렬은 병합 정렬과 퀵정렬과 같은 기존 비교 기반 정렬 알고리즘과 비교해 GPU에서 어떻게 성능을 내는가?
- RQ264비트 정수 키에 대해 샘플 정렬은 고도로 최적화된 GPU 레이더 정렬을 능가할 수 있는가?
- RQ3샘플 정렬은 데이터 분포와 엔트로피 수준의 변화에 얼마나 강건한가?
- RQ4입력 크기가 증가함에 따라 GPU 아키텍처에서 이 알고리즘이 얼마나 확장 가능한가?
주요 결과
- 균일하게 분포된 키에 대해 샘플 정렬은 Thrust의 병합 정렬보다 최소 25% 빠르며, 평균적으로 68% 빠르다.
- 균일하게 분포된 데이터에 대해 샘플 정렬은 GPU 퀵정렬보다 평균적으로 2배 이상 빠르다.
- 64비트 정수 키에 대해 샘플 정렬은 최적화된 GPU Thrust 레이더 정렬보다 최소 63% 빠르며, 평균적으로 2배 빠르다.
- 다양한 데이터 분포에서 입력 크기에 따라 거의 선형적인 확장성을 보여준다.
- 다양한 키 분포와 엔트로피 수준에서 높은 성능을 유지하며, 강력한 강건성을 보여준다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.