Skip to main content
QUICK REVIEW

[논문 리뷰] High-Performance Tensor Contraction without Transposition

Devin A. Matthews|arXiv (Cornell University)|2016. 07. 01.
Parallel Computing and Optimization Techniques참고 문헌 33인용 수 5
한 줄 요약

이 논문은 TBLIS를 제시하며, BLIS 기반 행렬 곱셈 커널과 텐서에서 행렬으로의 매핑을 융합하여 명시적 전치를 제거하는 고성능 텐서 수축 라이브러리이다. BLIS 프레임워크의 유연한 알고리즘 아키텍처를 활용함으로써 저자들은 행렬 곱셈 수준에 근접한 성능를 달성하였으며, 특히 복잡한 텐서 형태에서 단일 및 다중 코어 워크로드 모두에서 기존의 TTGT 및 BSMTC와 같은 전통적 접근 방식을 능가한다.

ABSTRACT

Tensor computations--in particular tensor contraction (TC)--are important kernels in many scientific computing applications. Due to the fundamental similarity of TC to matrix multiplication (MM) and to the availability of optimized implementations such as the BLAS, tensor operations have traditionally been implemented in terms of BLAS operations, incurring both a performance and a storage overhead. Instead, we implement TC using the flexible BLIS framework, which allows for transposition (reshaping) of the tensor to be fused with internal partitioning and packing operations, requiring no explicit transposition operations or additional workspace. This implementation, TBLIS, achieves performance approaching that of MM, and in some cases considerably higher than that of traditional TC. Our implementation supports multithreading using an approach identical to that used for MM in BLIS, with similar performance characteristics. The complexity of managing tensor-to-matrix transformations is also handled automatically in our approach, greatly simplifying its use in scientific applications.

연구 동기 및 목표

  • 텐서 수축에서 명시적 텐서 전치의 성능 및 메모리 오버헤드를 제거하기 위해.
  • 코드 생성 및 런타임 오버헤드 없이 일반 목적의 고성능 텐서 수축 라이브러리를 개발하기 위해.
  • 유연하고 확장 가능한 프레임워크를 사용하여 최적화된 행렬 곱셈 수준의 성능를 달성하기 위해.
  • 사용자 개입 최소화로 텐서 레이아웃 관리가 효율적으로 이루어지는 다중 스레드 실행을 가능하게 하기 위해.
  • 다양한 텐서 형태와 수축 패턴을 지원하는 프로덕션 수준의 오픈소스 솔루션(TBLIS)을 제공하기 위해.

제안 방법

  • 저자들은 텐서 요소를 행렬 커널 내에서 인라인으로 액세스할 수 있도록 하는 두 가지 새로운 텐서에서 행렬으로의 매핑 방식—산산이 흩어진 행렬 텐서 수축(SMTC) 및 블록 산산이 흩어진 행렬 텐서 수축(BSMTC)—을 설계하였다.
  • 이러한 매핑 방식은 BLIS 프레임워크에 통합되어 전치 및 데이터 패킹을 커널 계산과 융합함으로써 별도의 전치 연산과 추가 워크스페이스를 제거한다.
  • 이 접근 방식은 BLIS의 모듈러 설계를 활용하며, 행렬 곱셈이 독립적인 알고리즘 컴포넌트로 분해되므로, MM에 사용되는 동일한 원천 기반으로 커스터마이징된 텐서 수축 알고리즘을 구성할 수 있다.
  • 구현은 블록 기반 데이터 레이아웃과 최적화된 메모리 액세스 패턴을 사용하여 캐시 재사용과 벡터화를 향상시키고, 데이터 이동을 최소화한다.
  • 멀티스레딩은 행렬 곱셈과 동일한 스레딩 모델을 사용하여 성능 스케일링이 일관되게 유지된다.
  • TBLIS 라이브러리는 텐서에서 행렬으로의 인덱스 변환을 자동으로 처리하여 사용자에게 저수준 복잡성을 추상화한다.

실험 결과

연구 질문

  • RQ1명시적 전치 또는 추가 워크스페이스 없이도 텐서 수축을 행렬 곱셈 수준의 성능에 근접하게 구현할 수 있는가?
  • RQ2다양한 텐서 형태에서 BLIS 기반 텐서 수축의 성능는 기존의 전통적 TTGT 및 BSMTC 접근 방식과 비교해 어떻게 되는가?
  • RQ3다양한 코어에서 계산 중심 및 통신 중심 시나리오 모두에서 제안된 방법의 확장성은 어느 정도인가?
  • RQ4BLIS 프레임워크의 모듈러리티가 고성능 일반 목적 텐서 수축 커널을 효과적으로 구축하는 데 사용될 수 있는가?
  • RQ5비효율적인 데이터 액세스 패턴이 텐서 수축 성능에 미치는 영향은 무엇이며, 이를 어떻게 완화할 수 있는가?

주요 결과

  • BSMTC 알고리즘은 많은 텐서 형태에서 최고 성능의 10% 이내 성능를 달성하여 행렬 곱셈의 효율성에 가까워진다.
  • 단일 코어의 계산 중심 케이스에서 BSMTC와 BLIS는 유사하게 높은 성능를 보이며 최고 성능에 가까이 도달하지만, TTT(TTGT)는 큰 텐서에서 성능 급락을 보이며 10 GFLOPs 이하로 떨어진다.
  • 통신 중심 케이스에서는 BSMTC가 약 30 GFLOPs를 유지하는 반면, TTT는 10 GFLOPs 미만으로 떨어지며, 제안된 방법의 뚜렷한 성능 우위를 보인다.
  • 다중 코어 실행에서는 BSMTC가 TTT 대비 최대 21.1배의 스피드업을 달성하였으며, 텐서 형태에 따라 1.3배에서 21.1배까지 스피드업 범위를 보이며 강력한 확장성을 입증하였다.
  • 일부 케이스에서 BSMTC는 BLIS를 초월하는 성능를 보였는데, 이는 내부적으로 더 최적화된 행렬 곱셈 변종를 사용했기 때문이며, 알고리즘 맞춤화의 이점을 보여준다.
  • TBLIS 라이브러리는 TTGT의 워크스페이스 오버헤드를 성공적으로 피하고, BSD 라이선스 하에 프로덕션 수준의 오픈소스 구현을 제공한다.

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

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

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

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