Skip to main content
QUICK REVIEW

[논문 리뷰] Parallel Quicksort without Pairwise Element Exchange

Jesper Larsson Träff|arXiv (Cornell University)|2018. 04. 20.
Parallel Computing and Optimization Techniques참고 문헌 13인용 수 3
한 줄 요약

이 논문은 분산 메모리 병렬 퀵정렬의 재귀 과정에서 쌍별 요소 교환을 제거하기 위해 피벗만 분배하는 교환 없음(parallel Quicksort) 변형을 제안한다. 이로 인해 총 통신량이 $O(n\log p)$ 에서 $O(n)$ 으로 감소된다. 방법은 MPI 집합 연산을 사용해 피벗을 분배하고, 재귀의 최하단에서 한 번의 재분배만 수행하며, 1024개 프로세스에서 최대 650배의 성능 향상을 달성했고, 프로세스당 요소 수가 500,000을 초과할 경우 기존 변형보다 약 1.3배 더 빠른 약화 스케일링 성능을 보였다.

ABSTRACT

Quicksort is an instructive classroom approach to parallel sorting on distributed memory parallel computers with many opportunities for illustrating specific implementation alternatives and tradeoffs with common communication interfaces like MPI. The (two) standard distributed memory Quicksort implementations exchange partitioned data elements at each level of the Quicksort recursion. In this note, we show that this is not necessary: It suffices to distribute only the chosen pivots, and postpone element redistribution to the bottom of the recursion. This reduces the total volume of data exchanged from $O(n\log p)$ to $O(n)$, $n$ being the total number of elements to be sorted and $p$ a power-of-two number of processors, by trading off against a total of $O(p)$ additional pivot element distributions. Based on this observation, we describe new, \emph{exchange-free} implementation variants of parallel Quicksort and of Wagar's HyperQuicksort. We have implemented the discussed four different Quicksort variations in MPI, and show that with good pivot selection, Quicksort without pairwise element exchange can be significantly faster than standard implementations on moderately large problems.

연구 동기 및 목표

  • 분산 메모리 병렬 퀵정렬에서 쌍별 요소 교환을 제거하여 통신량을 줄이고 확장성을 향상시키기 위해.
  • 병렬 정렬에서 요소 교환을 줄이고 피벗 분배를 늘리는 데서 발생하는 성능 상충 관계를 탐색하기 위해.
  • 단지 MPI 집합 연산만을 사용하여 교환 없음 퀵정렬 및 하이퍼퀵정렬 변형을 설계하고 구현하기 위해.
  • 대규모 클러스터에서의 성능을 평가하고 기존 기반의 교환 기반 구현과 비교하기 위해.
  • 다양한 문제 크기에서 원활한 확장성을 달성하기 위해 교환 기반 및 교환 없음 변형을 결합하기 위해.

제안 방법

  • 재귀 과정에서 쌍별 요소 교환을 제거하고, 피벗 선택을 위해 MPI_Alltoallv와 MPI_Allreduce를 사용해 전역 피벗 분배를 수행한다.
  • 고수준 단계에서는 피벗 정보만 사용하고, 실제 요소 재분배를 재귀의 최하단으로 연기한다.
  • 재귀 기저 단계에서 각 프로세스가 피벗 경계 기반으로 로컬 집합을 정렬함으로써 단일 재분배 단계를 수행한다.
  • 표준 퀵정렬과 워거의 하이퍼퀵정렬을 위한 두 가지 변형을 구현하며, 모두 교환 없음 방식이다.
  • 프로세스당 요소 수가 임계값(예: c=1500)을 초과할 경우 기존 방식에서 교환 없음 방식으로 전환함으로써 표준 및 교환 없음 변형을 결합한다.
  • MPI 프로세스는 0부터 p−1까지 순서가 매겨지며, p는 2의 거듭제곱이 되고, 초기에 각 프로세스당 n/p개의 요소를 균형 있게 가진다고 가정한다.

실험 결과

연구 질문

  • RQ1분산 메모리 퀵정렬에서 쌍별 요소 교환을 제거해도 성능 저하 없이 가능할 수 있는가?
  • RQ2재귀적 퀵정렬에서 요소를 교환하는 것과 피벗을 분배하는 것 사이의 통신 비용 상충 관계는 어떠한가?
  • RQ3대규모 클러스터에서 교환 없음 퀵정렬의 성능은 기존 기반의 교환 기반 퀵정렬과 비교해 어떻게 되는가?
  • RQ4교환 기반 및 교환 없음 변형을 모두 포함하는 하이브리드 접근 방식이 다양한 문제 크기에서 더 나은 확장성을 달성할 수 있는가?
  • RQ5프로세스당 요소 수가 어느 임계값이 되면 교환 없음 변형이 기존 변형보다 더 효율적인가?

주요 결과

  • 1024개 프로세스에서 10^8개의 부동소수점 수를 정렬할 경우, 교환 없음 퀵정렬은 표준 변형보다 650배의 성능 향상을 달성했다.
  • 8192개 프로세스의 약화 스케일링 실험에서, 프로세스당 요소 수가 500,000을 초과할 경우, 교환 없음 변형은 항상 기존 변형보다 1.3배 더 빠르게 작동했다.
  • 통합된 퀵정렬 변형은 표준 또는 교환 없음 버전 중 어느 하나의 성능보다도 열등하지 않으며, 4096개 프로세스에서 1000배 이상의 성능 향상을 달성했다.
  • 작은 프로세스당 요소 수(n/p < 100,000)에서는 교환 없음 변형의 성능이 고지연성 MPI_Alltoallv 및 MPI_Allreduce 연산으로 인해 저하되었다.
  • 교환 없음 접근 방식은 총 통신량을 $O(n\log p)$ 에서 $O(n)$ 으로 줄였으며, $O(p)$ 의 추가 피벗 분배 비용을 감수하는 상충 관계를 가졌다.
  • 다양한 데이터 형식(이중 정밀도, 정수)과 입력 분포(임의 순열)에서도 결과가 안정적이었으며, 중간에서 대규모 문제 크기에서 일관된 성능 향상을 보였다.

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

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

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

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