[DAC'23] Rubick

Rubick: A Synthesis Framework for Spatial Architectures via Dataflow Decomposition

Zizhang Luo, et.al. on July 9, 2023
doi.org
obsidian에서 수정하기

author

Abstract

데이터 흐름은 텐서 애플리케이션을 위해 설계된 공간 아키텍처에 매우 중요합니다. 기존 연구에서는 데이터 흐름을 위한 다양한 표기법과 하드웨어 생성 프레임워크를 개발했습니다. 그러나 표기법과 하위 수준의 세부 사항 간의 의미적 차이로 인해 이러한 표기법을 기반으로 한 분석은 서로 다른 데이터 흐름 간의 세부적인 아키텍처 특징을 포착할 수 없어 아키텍처 최적화와 효율적인 설계 공간 탐색(DSE)을 동시에 제공하지 못했으며,

본 연구에서는 공간 아키텍처를 위한 합성 프레임워크인 Rubick을 제안합니다. Rubick은 데이터 흐름을 액세스 엔트리와 데이터 레이아웃을 포함한 두 가지 낮은 수준의 중간 표현으로 분해합니다. 액세스 엔트리는 데이터가 메모리에서 PE 어레이로 들어오는 방법을 지정하고, 데이터 레이아웃은 데이터가 배열되고 액세스되는 방법을 지정합니다.

이러한 분해를 기반으로 Rubick은 효율적인 DSE를 제공하고 최적화된 하드웨어를 생성합니다. 실험 결과, DSE 시간이 최대 1.1×105배까지 빨라지고 FPGA의 성능이 13% 향상되는 것으로 나타났습니다.

Background

그림 1. - (a) 공간 아키텍처 개요. (b) 데이터 흐름 매핑 예시.

그림 2. - GEMM 데이터 흐름 분해 예제. 텐서 A의 데이터 이동 (a)은 액세스 엔트리 IR (b)와 데이터 레이아웃 IR (c)으로 분해됩니다. 수학적 과정은 행렬 형태로 작성될 수 있습니다 (d).

그림 3. - 2D-PE 배열에서 입력 액세스 엔트리 공간. 이 공간은 텐서 액세스 방향 벡터로 형성됩니다.

그림 4. - 2D-PE 배열에서 데이터 레이아웃 공간. 이 공간은 선형 행렬 변환으로 형성됩니다.

그림 5. - Rubick 합성 흐름

Method

Result

그림 6. - Rubick 액세스 엔트리 IR을 사용하여 하드웨어 설계를 탐색합니다. a-g는 그림 3의 액세스 엔트리 유형을 의미합니다.

그림 7. - Rubick에 의해 향상된 탐색 효율성.

표 I - FPGA 성능 비교

그림 8. - GEMM 데이터 흐름 분해를 통한 면적 및 전력 분석. X축은 액세스 엔트리로 표기된 다양한 데이터 흐름입니다. 예: (bda)는 텐서 A, B, Y가 그림 3의 유형-(a), 유형-(d), 유형-(b) 액세스 엔트리를 적용함을 의미합니다.