고도로 병렬화된 희소 행렬 행렬 곱셈
초록
희소 행렬-행렬 곱셈을 위한 새로운 2차원 블록 분산 알고리즘을 제시하고, 초희소 커널을 이용해 직렬 구간의 확장성을 확보하였다. MPI 구현을 통해 수천 개 프로세서까지 효율적인 스케일링을 입증하였다.
상세 분석
본 논문은 그래프 알고리즘과 멀티그리드와 같은 선형 해석기법에서 핵심적인 역할을 하는 일반화된 희소 행렬-행렬 곱셈(GSpGEMM)에 대한 병렬 처리 방법을 근본적으로 재설계하였다. 기존의 1차원 행 또는 열 분산 방식은 프로세서 수가 증가함에 따라 통신 비용이 급격히 상승하고, 메모리 불균형이 심화되는 한계가 있었다. 이를 극복하기 위해 저자들은 2차원 블록 분산 모델을 채택했으며, 행렬 A와 B를 각각 p×q 블록 격자로 나누어 각 프로세서가 (i,j) 블록을 담당하도록 설계하였다. 이 구조는 각 프로세서가 필요한 블록 쌍만 교환하면 되므로 전체 통신량이 O(√P) 수준으로 감소한다.
핵심 기술은 “hypersparse” 커널이다. 전통적인 CSR/CSC 포맷은 행이나 열에 원소가 일정 수준 이상 존재할 때 효율적이지만, 블록이 매우 작아지는 경우(예: 블록 크기가 수십 개 이하) 메모리 오버헤드가 비효율적으로 작용한다. 저자들은 블록 내부를 좌표형식(COO)으로 저장하고, 행/열 인덱스를 압축하는 새로운 인코딩 방식을 도입했다. 이 방식은 블록 내 비제로 원소 수가 블록 크기에 비해 현저히 적을 때(즉, 초희소 상황) 메모리 사용량을 최소화하고, 곱셈 연산을 비제로 원소 리스트 기반으로 수행함으로써 연산 복잡도를 O(nnz)로 유지한다.
알고리즘 흐름은 크게 네 단계로 나뉜다. 첫째, 각 프로세서는 자신이 담당하는 A와 B 블록을 로컬 메모리로 로드한다. 둘째, 2차원 토폴로지를 이용해 필요한 B 블록을 행 방향으로, A 블록을 열 방향으로 전파한다(즉, Cannon’s algorithm과 유사한 스케줄링). 셋째, 수신된 블록 쌍에 대해 hypersparse 커널을 적용해 부분 곱셈을 수행하고, 결과를 로컬 누적 버퍼에 저장한다. 넷째, 최종 결과 블록을 정해진 프로세서에 집계한다. 이 과정에서 비동기 MPI 통신과 중첩 가능한 계산을 활용해 통신-연산 겹침을 극대화하였다.
성능 분석에서는 이론적 복잡도와 실제 실험을 모두 제시한다. 통신 비용은 O(√P·(nnz/P)·log k) 형태이며, 여기서 k는 블록 내 평균 비제로 원소 수이다. 계산 비용은 블록당 비제로 원소 수에 비례하므로, 전체 연산량은 기존 1차원 분산 대비 거의 동일하지만, 통신 오버헤드가 현저히 감소한다. 또한, hypersparse 커널은 블록 크기가 작아질수록 효율이 급격히 상승해, 프로세서 수가 증가함에 따라 “무한히” 스케일링이 가능하다는 실험적 증거를 제공한다.
실험에서는 2,048개의 코어까지 확장 가능한 MPI 구현을 테스트했으며, 다양한 행렬 밀도와 구조(실제 웹 그래프, 랜덤 스파스 행렬, 멀티그리드 수준 행렬)를 사용해 강력한 스케일링을 확인했다. 특히, 1,024코어에서 30배 이상의 속도 향상을 기록했으며, 이는 기존 2차원 분산 구현 대비 2~3배 정도의 추가 이득을 보여준다. 또한, 메모리 사용량도 블록당 O(nnz/P) 수준으로 유지돼 대규모 문제에서도 메모리 한계에 부딪히지 않는다.
이 논문의 주요 기여는 (1) 2차원 블록 분산을 기반으로 한 새로운 GSpGEMM 프레임워크, (2) 초희소 상황에 최적화된 hypersparse 커널 설계, (3) MPI 기반 구현을 통한 실질적인 수천 코어 스케일링 입증이다. 이러한 접근은 향후 대규모 그래프 처리, 과학 계산, 머신러닝에서의 희소 텐서 연산 등에 광범위하게 적용될 수 있다.
댓글 및 학술 토론
Loading comments...
의견 남기기