HBM 기반 범용 스파스 행렬‑벡터 곱 가속기 Serpens
초록
Serpens는 고대역폭 메모리(HBM)를 활용해 일반적인 스파스 행렬‑벡터 곱(SpMV)을 효율적으로 가속하는 FPGA 설계이다. 메모리 중심 처리 엔진과 인덱스 결합 기법을 통해 임의 접근을 온‑칩으로 제한하고, 12개의 대형 매트릭스와 2,519개의 SuiteSparse 테스트에서 기존 가속기와 GPU 대비 1.7 ∼ 2.1배 높은 처리량과 에너지 효율을 달성한다.
상세 분석
Serpens는 HBM 기반 FPGA인 Xilinx Alveo U280을 기반으로 설계되었으며, 총 19개의 HBM 채널(밀집 행렬 16채널, 입력·출력 벡터 각각 1채널씩)을 할당해 273 GB/s의 집합 대역폭을 확보한다. 핵심 설계는 ‘메모리 중심’ 처리 엔진(PE)으로, 각 HBM 채널에서 읽은 스파스 원소를 8개의 PE에 브로드캐스트하고, 벡터 세그먼트를 BRAM에 저장한 뒤 URAM에 누적한다. 이때 벡터 접근은 온‑칩 BRAM/URAM에서만 발생하므로 외부 메모리의 랜덤 접근을 완전히 제거하고, 파이프라인 II=1을 유지한다.
인덱스 결합(index coalescing) 기법은 연속 행 인덱스를 하나의 URAM 주소에 압축 저장함으로써 URAM 활용 효율을 2배 이상 높인다. 이를 위해 색칠(coloring)과 재정렬(reordering) 과정을 적용해 동일 색상의 원소가 DSP 누적 지연(T = 2 사이클) 내에 충돌하지 않도록 설계하였다. 결과적으로 URAM 은행 충돌을 최소화하면서도 누적 버퍼 깊이를 크게 확장할 수 있다.
자원 분석에서는 BRAM 32·HA 개, URAM 8·HA·U 개가 필요함을 수식으로 제시하고, HA(스파스 행렬에 할당된 채널 수)를 16에서 24까지 늘리면 처리량이 3.79배까지 증가함을 실험적으로 확인한다. 또한, 512‑bit 폭의 Rd/Wr 모듈을 사용해 16개의 FP32 값을 한 번에 전송하고, 스파스 원소는 64‑bit(행·열 32‑bit 압축) 형태로 8개를 한 번에 전송해 메모리 대역폭 활용도를 극대화한다.
성능 평가에서는 12개의 대형 매트릭스에서 GraphLily 대비 1.91배, Sextans 대비 1.76배 높은 기하 평균 처리량을 기록했으며, 2,519개의 SuiteSparse 매트릭스 전체에서는 K80 GPU 대비 2.10배 빠른 처리량과 6.25배 높은 에너지·대역폭 효율을 달성했다. 최대 60.55 GFLOP/s(30,204 MTEPS)까지 스케일링 가능함을 보여준다. 이러한 결과는 HBM 채널을 효율적으로 매핑하고, 온‑칩 메모리 구조를 최적화한 것이 핵심 원동력임을 시사한다.
댓글 및 학술 토론
Loading comments...
의견 남기기