Skip to main content
QUICK REVIEW

[논문 리뷰] Fast Sorting Algorithms using AVX-512 on Intel Knights Landing

Bérenger Bramas|arXiv (Cornell University)|2017. 04. 24.
Parallel Computing and Optimization Techniques인용 수 18
한 줄 요약

이 논문은 인텔 노드스 랜딩에서 AVX-512 명령어를 사용하여 최적화된 고성능, 인-place 정렬 알고리즘을 제안한다. 작은 부분 배열에 대해 브랜치 없는 Bitonic 정렬을 결합하고 Quicksort의 가속을 위해 벡터화된 파artitioning 커널을 사용함으로써, 정수 및 이중 정밀도 데이터 유형에서 GNU C++ std::sort보다 최대 4배 빠른 성능을 달성한다.

ABSTRACT

This paper describes fast sorting techniques using the recent AVX-512 instruction set. Our implementations benefit from the latest possibilities offered by AVX-512 to vectorize a two-parts hybrid algorithm: we sort the small arrays using a branch-free Bitonic variant, and we provide a vectorized partitioning kernel which is the main component of the well-known Quicksort. Our algorithm sorts in-place and is straightforward to implement thanks to the new instructions. Meanwhile, we also show how an algorithm can be adapted and implemented with AVX-512. We report a performance study on the Intel KNL where our approach is faster than the GNU C++ sort algorithm for any size in both integer and double floating-point arithmetics by a factor of 4 in average.

연구 동기 및 목표

  • 인텔 노드스 랜딩의 최신 AVX-512 명령어 세트를 활용한 빠르고 인-place 정렬 알고리즘 설계.
  • AVX-512 명령어를 사용하여 파artitioning 단계를 벡터화하여 Quicksort의 성능 향상.
  • AVX-512에 최적화된 브랜치 없는 Bitonic 정렬 네트워크를 활용해 작은 부분 배열의 효율적 정렬 구현.
  • 현대 x86-64 프로세서에서 고급 벡터화된 정렬 기법의 실용적이고 간단한 구현 방법 제시.

제안 방법

  • 알고리즘은 하이브리드 접근 방식을 사용한다: 작은 부분 배열은 512비트 레지스터에 최적화된 브랜치 없는 Bitonic 정렬 변종으로 정렬된다.
  • AVX-512 명령어를 사용하여 16개의 정수 또는 이중 정밀도 부동소수점 수를 명령어 수준에서 처리하는 벡터화된 파artitioning 커널을 구현한다.
  • AVX-512의 수집-산산 흩뿌림 및 비교-스왑 연산을 활용하여 파artitioning 커널이 효율적인 인-place 정렬을 가능하게 한다.
  • 전체 Quicksort 프레임워크는 벡터화된 파artitioning 커널을 사용하여 데이터 이동을 줄이고 명령어 수준의 병렬성을 향상시킨다.
  • 복잡한 메모리 접근 패턴을 피하고 AVX-512의 넓은 레지스터와 고급 제어 명령어를 활용하여 성능을 향상시킨다.

실험 결과

연구 질문

  • RQ1AVX-512 명령어는 Quicksort의 파artitioning 단계를 어떻게 효과적으로 가속화할 수 있는가?
  • RQ2현대 x86-64 프로세서에서 512비트 벡터 유닛에 최적화된 브랜치 없는 Bitonic 정렬은 어느 정도 최적화될 수 있는가?
  • RQ3벡터화된 파artitioning과 작은 배열용 Bitonic 정렬을 조합한 하이브리드 정렬 접근 방식은 표준 라이브러리 구현보다 뛰어난 성능을 낼 수 있는가?
  • RQ4다양한 데이터 유형에서 인텔 노드스 랜딩에서 AVX-512 최적화 정렬은 GNU C++ std::sort에 비해 얼마나 빠른가?

주요 결과

  • 제안된 AVX-512 최적화 정렬 알고리즘은 인텔 노드스 랜딩에서 GNU C++ std::sort보다 평균적으로 4배 빠른 성능을 달성한다.
  • 정수 및 이중 정밀도 부동소수점 정렬 워크로드에서 모든 입력 크기에서 알고리즘이 GNU C++ std::sort를 뛰어넘는 성능을 보인다.
  • 벡터화된 파artitioning 커널은 메모리 접근 횟수를 크게 줄이고 명령어 수준의 병렬성을 향상시킨다.
  • 작은 부분 배열에 대한 브랜치 없는 Bitonic 변종은 파이pline 스톱을 줄이고 AVX-512를 지원하는 프로세서에서 캐시 효율성을 향상시킨다.

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

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

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

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