[TCAD'23] Rubick

Rubick: A Unified Infrastructure for Analyzing, Exploring, and Implementing Spatial Architectures via Dataflow Decomposition

Liqiang Lu, et.al. on November 28, 2023
doi.org
obsidian에서 수정하기

author:

Abstract

빠르게 성장하고 있는 텐서 애플리케이션은 대규모 PE 어레이와 풍부한 상호 연결 리소스를 갖춘 공간 아키텍처에서 구현될 때 엄청난 데이터 흐름 대안을 제시합니다. 기존 연구에서는 데이터 흐름에 대한 다양한 표기법과 성능 모델 을 개발했습니다. 이러한 표기법은 데이터 흐름의 재사용, 대역폭, 성능을 이해하는 데는 매우 유용하지만, 기본 하드웨어 구현을 정의하지는 않습니다. 의미상의 차이로 인해 이러한 표기법을 기반으로 한 분석은 서로 다른 데이터 흐름 간의 세부적인 아키텍처 특징을 포착할 수 없어 비효율적인 설계 공간 탐색과 차선책 설계로 이어집니다.

이러한 문제를 해결하기 위해 공간 아키텍처를 분석, 탐색, 구현하기 위한 통합 인프라인 Rubick을 제안합니다. Rubick의 주요 혁신은 데이터 흐름을 두 가지 낮은 수준의 중간 표현으로 분해 한다는 점입니다: 1) 액세스 항목(access entry) 과 2) 데이터 레이아웃(data layout)입니다. 액세스 엔트리는 데이터가 메모리에서 PE 어레이로 들어오는 방법을 지정하고, 데이터 레이아웃은 데이터가 배열되고 액세스되는 방법을 지정합니다. 이 두 가지 표현을 통해 PE 상호 연결 및 메모리 구조와 같은 하드웨어 구현 세부 사항을 유추할 수 있으므로 구조 분석 및 체계적인 탐색이 가능합니다. 이러한 분해 분석을 기반으로 Rubick은 마이크로 아키텍처 최적화와 효율적인 설계 공간 탐색을 위한 기회를 제공합니다.

실험 결과 Rubick은 액세스 엔트리 IR을 최적화하여 2.7%의 지연 시간 증가만으로 와이어 리소스를 82.4% 절감하고, 데이터 레이아웃 IR을 최적화하여 70.8% 의 메모리 오버헤드를 줄일 수 있음을 입증했습니다. 또한 Rubick은 데이터 흐름의 DSE 시간을 최대 $1.1\times 10^{5}\text{X}$까지 가속화하여 며칠에서 몇 분으로 시간을 절약할 수 있습니다. Rubick의 소스 코드는 (https://link-omitted-for-blind-review)에서 공개적으로 사용할 수 있습니다.

1. Introduction

이 논문은 급성장하는 텐서 응용 프로그램의 요구에 맞춰 대규모 PE 배열 및 풍부한 인터커넥션 자원을 특징으로 하는 공간 아키텍처를 분석하고 구현하기 위한 통합 인프라인 Rubick을 소개합니다. 이 리뷰의 목적은 Rubick의 혁신적인 데이터 흐름 분해 접근법과 그것이 공간 아키텍처 설계에 미치는 영향을 평가하는 것입니다.

2. Background

공간 아키텍처는 고성능 컴퓨팅과 에너지 효율성을 위해 중요한 역할을 합니다. 이전 연구들은 데이터 흐름의 재사용, 대역폭 및 성능을 이해하는 데 유용한 다양한 표기법과 성능 모델을 개발해 왔지만, 이러한 표기법은 하드웨어 구현을 명확히 정의하지 못합니다. 따라서, 이러한 연구는 설계 공간 탐색의 효율성을 저하시킬 수 있습니다.

Spatial Dataflow

figure 1

Figure 1 1D-CONV를 사용한 예시. 기존의 컴퓨팅 중심[20], [71], 데이터 중심[24], [29], 관계 중심[21], [39] 접근 방식은 낮은 수준의 아키텍처를 노출할 수 없으며, 프리미티브 기반 접근 방식은 데이터 흐름을 명시적으로 설명할 수 없습니다. Rubick IR은 데이터 흐름과 아키텍처 사이의 의미적 격차를 해소할 수 있습니다.

아래 세가지 표현은 하드웨어의 디테일을 표현하지 못함

  • compute-centric : Cosa [@cosa], Interstellar [@interstellar]
  • data-centric : MAESTRO [@maestro_micro] [@maestro] - gt-synergy
  • relation-centric : TENET [@tenet], TensorLib [@tensorlib_dac; @tensorlib_tcad] - pku-liang

only cover a subset of dataflow space
it is hard to write the primitive for non-orthogonal dataflow like (a).

  • primitive-based
    • HeteroCL [@heteroCL]
    • AutoSA [@autosa] T2S-Tensor [@t2s-tensor]

3. Methodology

3.1 Dataflow Analysis via Decomposition

  • 데이터 흐름을 access entry와 data layout이라는 두 개의 저수준 중간 표현으로 분해
    • Access entry는 데이터가 메모리에서 PE 배열로 들어가는 방식을 지정
    • data layout은 데이터가 배열되고 액세스되는 방식을 지정

figure 2

  1. $D_S$ : Iteration domain
    • $\Theta_{D_s → D_{st}}$ : Space-Time Transform
  2. $D_{st}$ : Dataflow Spacetime Domain
    • $\Omega_{ D_{st} → E_{st} }$ : Access Entry
    • 데이터가 메모리에서 PE 배열로 들어가는 방식
  3. $E_{st}$ : Entry Spacetime Domain ⬅ 본 논문에서 추가한 도메인
    • $L_{ E_{st} → D_A }$ : Data Layout
    • $L_{ E_{st} → D_B }$ : Data Layout
    • 데이터가 배열되고 액세스되는 방식
  4. $D_A$ : Tensor Domain

figure 3

3.2 Dataflow Design Space Exploration

Access Entry

figure 4

figure 4 Input access entry space on 2D-PE array. The space is formulated as tensor access direction vectors.

  • 3D
    • (a) X-systolic Dir-vec (1, 0 | 1).
    • (b) Y-systolic Dir-vec (0, 1 | 1).
    • (c) Diag-systolic. Dir-vec (1, 1 | 1).
    • (d) stationary Dir-vec (0, 0 | 1).
  • 4D
    • (e) X-multicast Dir-vec (1, 0 | 0).
    • (f) Y-multicast Dir-vec (0, 1 | 0).
    • (g) Diag-multicast Dir-vec (1, 1 | 0).
    • (h) XY-multicast Dir-vec (1, 0 | 0), (0, 1 | 0).
    • (i) X-systolic-Y-multicast Dir-vec (1, 0 | 1), (0, 1 | 0) .
    • (j) Y-systolic-X-multicast Dir-vec (0, 1 | 1), (1, 0 | 0).
    • (k) X-multicast-stationary Dir-vec (1, 0 | 0), (0, 0 | 1)
    • (l) Y-multicast-stationary Dir-vec (0, 1 | 0), (0, 0 | 1).
    • (m) Diag-multicast-stationary. Dir-vec (1, 1 | 0), (0, 0 | 1).
    • (n) XY-multicast-stationary. Dir-vec (1, 0 | 0), (0, 1 | 0), (0, 0 | 1).

Data Layout

figure 5 그림 5. - 2D-PE 배열의 데이터 레이아웃 공간. 공간은 선형 행렬 변환으로 공식화됩니다. (a) 원본. (b) $x$와 $t1$을 교환. (c) $t1$에 (–$x$) 추가. (d) 교환 및 추가.

figure 6 그림 6. - Rubick IR을 사용한 아키텍처 구현. (a) 접근 엔트리 IR 기반 하드웨어 최적화. (b) 데이터 레이아웃 IR 기반 하드웨어 최적화. (c) Rubick IR을 사용한 하드웨어 생성.

4. Key Findings

Rubick의 실험 결과는 다음과 같습니다:

  • access entry IR을 최적화하여 와이어 자원을 82.4%까지 줄이면서도 지연 시간을 2.7%만 증가시켰습니다.
  • data layout IR을 최적화하여 메모리 오버헤드를 70.8%까지 줄였습니다.
  • 데이터 흐름 설계 공간 탐색 시간을 최대 1.1 × 10^5배까지 가속화하여 탐색 시간을 며칠에서 몇 분으로 단축시켰습니다.

5. Contributions

Rubick의 주요 기여는 다음과 같습니다:

  • 데이터 흐름을 분석하기 위한 중간 표현으로서 access entry와 data layout을 제안.
  • 저수준 제약 조건에서 데이터 흐름을 체계적이고 효율적으로 공식화하는 방법론을 제공.
  • Rubick IR을 사용한 데이터 흐름 구현 방법론을 제안하여 데이터 흐름과 아키텍처 간의 의미적 격차를 해소.

6. Limitations

Rubick의 한계점은 다음과 같습니다:

  • 저수준 표현의 정확도와 복잡성으로 인해 초기 설정 및 구성에 시간이 소요될 수 있습니다.
  • 특정 응용 프로그램에 최적화된 설계를 일반화하는 데 제한이 있을 수 있습니다.

8. Future Research Directions

미래 연구 방향은 다음과 같습니다:

  • Rubick의 접근법을 더욱 다양한 응용 프로그램에 적용하여 일반화 가능성을 평가.
  • 머신러닝 및 인공지능 응용 프로그램에 대한 특화된 최적화 기술 개발.
  • Rubick의 프레임워크를 확장하여 더 복잡한 공간 아키텍처 설계를 지원.

9. Personal Insights and Evaluation

Rubick은 데이터 흐름을 저수준의 중간 표현으로 분해하는 혁신적인 접근법을 통해 공간 아키텍처 설계를 효율적으로 최적화할 수 있는 강력한 도구입니다. 그러나 초기 설정의 복잡성과 특정 응용 프로그램에 대한 일반화 가능성에 대한 추가 연구가 필요합니다.

10. Conclusion

Rubick은 데이터 흐름 분석, 탐색 및 구현을 위한 통합 인프라로서 공간 아키텍처 설계의 새로운 가능성을 열어줍니다. 이 논문은 데이터 흐름 분해 접근법을 통해 하드웨어 자원 최적화와 설계 공간 탐색의 효율성을 크게 향상시켰음을 보여줍니다. 앞으로 더 다양한 응용 프로그램에 대한 연구가 필요합니다.

figure 11 figure 11

figure 12 figure 12

Figure

figure 7 figure 7

figure 8 figure 8

figure 9 figure 9

figure 10 figure 10

Table

table I table I

table II table II

table III table III