Skip to main content
QUICK REVIEW

[논문 리뷰] Acceleration of multiple precision matrix multiplication based on multi-component floating-point arithmetic using AVX2

Tomonori Kouya|arXiv (Cornell University)|2021. 01. 16.
Numerical Methods and Algorithms참고 문헌 9인용 수 4
한 줄 요약

이 논문은 오차 없는 변환(EFT) 기법을 기반으로 한 더블더블(DD), 트리플더블(TD), 쿼드더블(QD) 산술을 사용한 다중 정밀도 행렬 곱셈을 AVX2로 가속화한 고도로 최적화된 구현을 제시한다. SIMD화된 EFT 함수와 AVX2 명령어를 활용하여 병렬 계산 및 메모리 접근을 수행함으로써, 기존 비가속화 버전 대비 3배 이상의 성능 향상을 달성하였으며, 현대의 x86-64 CPU인 인텔 코어 i9와 AMD EPYC에서 최대 10~24 스레드까지 안정적인 성능 스케일링을 보였다.

ABSTRACT

In this paper, we report the results obtained from the acceleration of multi-binary64-type multiple precision matrix multiplication with AVX2. We target double-double (DD), triple-double (TD), and quad-double (QD) precision arithmetic designed by certain types of error-free transformation (EFT) arithmetic. Furthermore, we implement SIMDized EFT functions, which simultaneously compute with four binary64 numbers on x86_64 computing environment, and by using help of them, we also develop SIMDized DD, TD, and QD additions and multiplications. In addition, AVX2 load/store functions were adopted to efficiently speed up reading and storing matrix elements from/to memory. Owing to these combined techniques, our implemented multiple precision matrix multiplications have been accelerated more than three times compared with non-accelerated ones. Our accelerated matrix multiplication modifies the performance of parallelization with OpenMP.

연구 동기 및 목표

  • 기존의 구현 방식을 초월하여 AVX2 벡터 명령어를 사용한 다중 정밀도 행렬 곱셈을 가속화하기 위해.
  • x86-64 아키텍처에서 DD, TD, QD 산술을 위한 효율적인 SIMD화된 오차 없는 변환(EFT) 함수를 구현하기 위해.
  • AVX2 로드/스토어 명령어를 활용하여 MPF 행렬의 메모리 접근을 최적화하기 위해.
  • AMD EPYC와 인텔 코어 i9와 같은 고코어 수 CPU에서 OpenMP를 사용한 성능 스케일링을 평가하기 위해.
  • 블록 행렬 곱셈과 스트라센 알고리즘 간의 병렬화 효율성과 성능 향상 측면에서 비교하기 위해.

제안 방법

  • 내장 함수인 _mm256_add_pd 및 _mm256_fmadd_pd를 사용하여 AVX2 최적화 EFT 함수(AVX2QuickTwoSum, AVX2TwoSum, AVX2TwoProd)를 구현하였다.
  • 256비트 레지스터를 활용한 효율적인 AVX2 로드/스토어 연산을 가능하게 하기 위해 MPF 벡터 및 행렬을 위한 새로운 데이터 구조를 설계하였다.
  • AVX2 내장 함수를 사용하여 네 개의 다중 정밀도 수치를 동시에 처리하는 방식으로, DD, TD, QD 덧셈 및 곱셈 루틴을 SIMD화하였다.
  • EFT 계산의 정확도와 성능 향상을 위해 _mm256_fmadd_pd를 통한 융합 곱셈-덧셈(FMA) 명령어를 통합하였다.
  • 멀티코어 시스템에서 블록 행렬 곱셈과 스트라센 알고리즘의 스레드 수준 병렬화를 위해 OpenMP를 사용하였다.
  • 다양한 행렬 크기와 스레드 수를 가진 인텔 코어 i9(10코어)와 AMD EPYC(24코어) 시스템에서 성능을 평가하였다.

실험 결과

연구 질문

  • RQ1AVX2 기반 SIMD 병렬 처리는 DD, TD, QD 산술을 사용한 다중 정밀도 행렬 곱셈을 상당히 가속화할 수 있는가?
  • RQ2AMD EPYC와 같은 고코어 수 CPU에서 OpenMP를 사용한 블록 행렬 곱셈의 성능 스케일링은 어떻게 되는가?
  • RQ38개 이상의 코어를 가진 CPU에서 조차 AVX2를 적용해도 스트라센 알고리즘이 약 6배 성능 향상 이외로 스케일링되지 않는 이유는 무엇인가?
  • RQ4AVX2는 다성분 부동소수점 유형을 위한 메모리 접근과 산술 커널 최적화에 어느 정도 기여하는가?
  • RQ5현대의 멀티코어 시스템에서 큰 크기의 불안정한 조건을 가진 문제에 대해, 블록 행렬 곱셈은 스트라센 알고리즘보다 더 우수한 스케일링 성능을 보이는가?

주요 결과

  • 제안된 AVX2 최적화 구현은 비가속화된 MPF 행렬 곱셈 대비 3배 이상의 성능 향상을 달성하였다.
  • 블록 행렬 곱셈은 인텔 코어 i9에서는 최대 10개 스레드, AMD EPYC에서는 최대 24개 스레드까지 안정적인 성능 향상을 보이며 효과적인 병렬 스케일링을 보였다.
  • 스트라센 알고리즘은 AVX2 여부에 관계없이 두 CPU 모두에서 약 6배 성능 향상에 머물렀으며, 이는 재귀 호출에서의 비효율적인 스레드 스케줄링 때문이었다.
  • 24코어를 가진 AMD EPYC에서, 모든 테스트 정밀도(DD, TD, QD)에서 블록 행렬 곱셈이 스트라센 알고리즘을 앞서는 성능을 보였으며, 특히 큰 행렬 크기에서 두드러졌다.
  • 256비트 레지스터를 활용한 최적화된 로드/스토어 연산 덕분에 AVX2는 메모리 접근 성능을 크게 향상시켰으며, 이는 전체 성능 향상에 기여하였다.
  • 이 구현은 블록 행렬 곱셈이 고코어 수 시스템에서 선호되는 선택임을 입증하였으며, 스트라센 방법은 본질적인 병렬화 병목 현상으로 인해 제한됨을 보였다.

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

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

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

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