Skip to main content
QUICK REVIEW

[논문 리뷰] TTC: A high-performance Compiler for Tensor Transpositions

Paul Springer, Jeff R. Hammond|RWTH Publications (RWTH Aachen)|2016. 03. 07.
Parallel Computing and Optimization Techniques참고 문헌 18인용 수 6
한 줄 요약

TTC는 차원이 다중인 텐서 전치 연산을 위한 도메인 특화 컴파일러로, 블로킹, 루프 재정렬, 소프트웨어 프리패칭, 명시적 벡터화 등의 최적화 기법을 사용하여 고성능 C++ 코드를 생성한다. 이 컴파일러는 인텔 허슬 및 AMD 스티림롤러 아키텍처에서 피크 메모리 대역폭에 근접한 성능을 달성하며, 현대 컴파일러를 능가하고, 성능 손실가능성을 최소화하면서도 검색 공간을 줄이기 위한 가지치기 히우리스틱을 사용한다. 이로 인해 100개의 후보만으로도 전수 검색 성능의 99%를 달성한다.

ABSTRACT

We present TTC, an open-source parallel compiler for multidimensional tensor transpositions. In order to generate high-performance C++ code, TTC explores a number of optimizations, including software prefetching, blocking, loop-reordering, and explicit vectorization. To evaluate the performance of multidimensional transpositions across a range of possible use-cases, we also release a benchmark covering arbitrary transpositions of up to six dimensions. Performance results show that the routines generated by TTC achieve close to peak memory bandwidth on both the Intel Haswell and the AMD Steamroller architectures, and yield significant performance gains over modern compilers. By implementing a set of pruning heuristics, TTC allows users to limit the number of potential solutions; this option is especially useful when dealing with high-dimensional tensors, as the search space might become prohibitively large. Experiments indicate that when only 100 potential solutions are considered, the resulting performance is about 99% of that achieved with exhaustive search.

연구 동기 및 목표

  • HPC 워크로드에서 다차원 텐서 전치를 위한 고성능이고 이식 가능한 소프트웨어의 부족을 해결하기 위해.
  • 현대 아키텍처에서 피크 메모리 대역폭에 근접한 성능을 내는 최적화된 C++ 코드를 생성하기 위해.
  • 가능한 코드 변환의 조합 폭발 문제를 효과적인 가지치기 히우리스틱을 통해 줄이기 위해.
  • 과학 계산 및 머신러닝 분야에서 효율적이고 재사용 가능하며 이식 가능한 텐서 연산을 가능하게 하기 위해.
  • 향후 더 넓은 텐서 곱셈 컴파일러 파이프라인에 통합될 수 있도록 지원하기 위해.

제안 방법

  • TTC는 도메인 특화 접근 방식을 사용하여 명시적 루프 변환을 적용한 C++ 코드를 생성하는 텐서 전치를 컴파일한다.
  • 다중 차원 간의 데이터 국소성과 메모리 접근 패턴을 향상시키기 위해 루프 재정렬을 적용한다.
  • 블로킹을 통해 텐서를 관리하기 쉬운 하위 블록으로 나누어 캐시 활용도를 최적화한다.
  • 성능 모델을 기반으로 동적으로 조정되는 소프트웨어 프리패칭을 통해 메모리 지연을 숨긴다.
  • AVX 명령어를 사용하여 명시적 벡터화를 적용하여 SIMD 스트림의 최대 처리량을 달성한다.
  • 히우리스틱을 기반으로 고품질 후보를 우선순위에 따라 정렬함으로써 검색 공간을 제한하는 가지치기 전략을 적용하여 컴파일 시간을 단축시키면서도 성능 손실을 최소화한다.

실험 결과

연구 질문

  • RQ1도메인 특화 컴파일러가 현대 CPU에서 피크 메모리 대역폭에 근접한 성능을 내는 텐서 전치 코드를 생성할 수 있는가?
  • RQ2성능 손실 없이 고차원 텐서 전치의 경우에 대해 가지치기 히우리스틱이 검색 공간을 얼마나 효과적으로 줄일 수 있는가?
  • RQ3블로킹, 루프 재정렬, 프리패칭, 벡터화 각각이 성능에 미치는 영향은 무엇인가?
  • RQ4다양한 텐서 차원과 데이터 레이아웃에서 TTC의 성능가 현대 최적화 컴파일러와 비교해 볼 때 어떻게 되는가?
  • RQ5고정된 프리패칭 거리를 사용하는 것이 검색 공간을 줄이기 위한 실용적인 보편적 해결책으로서 어느 정도 타당한가?

주요 결과

  • TTC가 생성한 코드는 인텔 허슬 및 AMD 스티림롤러 아키텍처에서 모두 피크 메모리 대역폭에 근접한 성능을 달성한다.
  • 단지 100개의 후보만으로도 벤치마크 전반에서 전수 검색 성능의 99.10%를 달성한다.
  • 고정된 프리패칭 거리 5에서 8 사이의 설정이 평균 99% 이상의 효율성과 최소 98%의 효율성을 달성하여, 실용적인 강력한 선택지로 입증된다.
  • 단 한 개의 후보만으로도 전수 검색 성능의 94.58%를 달성하여, 히우리스틱의 뛰어난 품질을 입증한다.
  • 블로킹, 루프 재정렬, 프리패칭, 벡터화의 조합이 현대 컴파일러 대비 성능 향상의 대부분을 차지한다.
  • 컴파일러의 설계는 향후 AVX512, ARM, 파wr, GPU 등의 새로운 지시 세트로의 확장성도 보장한다.

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

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

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

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