다중 코어와 클러스터를 위한 비트 호환 ILU(k) 병렬 전처리기
TPILU(k)는 기존 순차 ILU(k)와 동일한 수치 결과를 보장하면서, 공유 메모리와 분산 메모리 환경 모두에서 효율적으로 스케일링되는 첫 번째 비트‑호환 병렬 전처리기이다. 작업‑지향 파이프라인과 정적 밴드 분할을 이용해 코어 수가 늘어날수록 실행 시간이 감소하고, 기존 블록 Jacobi ILU(k)와 달리 안정성을 유지한다. 또한 레벨 기반 불완전 역행렬 기법을 옵션으로 제공해 추가 가속을 얻을 수 있다. 실험 결과 16코어에서 최대 9…
저자: Xin Dong, Gene Cooperman
본 논문은 희소 비대칭 행렬에 대한 반복 선형 해법에서 널리 사용되는 ILU(k) 전처리기의 병렬화 문제를 깊이 있게 탐구하고, 새로운 알고리즘 TPILU(k)를 제안한다. 기존의 도메인 분할 기반 전처리기(PILU, BJILU 등)는 서브 도메인의 크기가 작아질수록 오프다이어날 요소를 무시하거나 복잡도를 크게 늘려 수치적 불안정성이나 성능 저하를 일으킨다. 이러한 한계를 극복하기 위해 저자는 도메인 분할을 포기하고, 행을 ‘밴드’라는 단위로 나눈 뒤 작업‑지향(parallel task) 모델을 적용한다.
TPILU(k)의 핵심 개념은 ‘프론티어(frontier)’이다. 프론티어는 현재까지 완전하게 처리된 행의 최대 인덱스를 의미하며, 모든 스레드가 이 값을 기준으로 동기화한다. 각 밴드는 프론티어보다 뒤에 있는 행들로 구성되며, 밴드 내부에서는 현재 프론티어까지의 행을 이용해 부분적으로 소거(sweep)한다. 밴드가 완전히 처리되면 프론티어가 해당 밴드의 행 수만큼 증가하고, 이 정보가 모든 스레드에 전파된다. 이렇게 하면 행‑기반 Gaussian elimination과 동일한 연산 순서를 유지하면서도, 서로 다른 밴드에 속한 작업을 동시에 수행할 수 있다.
밴드 크기는 성능과 동기화 비용 사이의 트레이드오프를 조절한다. 작은 밴드일수록 더 많은 병렬 작업이 생성되어 코어 활용도가 높아지지만, 동기화 지점이 늘어나 오버헤드가 증가한다. 공유 메모리 환경에서는 프론티어 변수의 원자적 읽·쓰기가 매우 저렴하므로, 저자는 작은 밴드(예: 수십 행) 전략을 채택한다. 이는 특히 마지막 몇 개의 밴드가 상대적으로 밀집(dense)해져 fill‑in이 많이 발생하는 경우에도 전체 실행 시간을 크게 단축한다.
TPILU(k)는 두 단계로 구성된다. 첫 번째는 ‘심볼릭 팩터화(Symbolic factorization)’ 단계로, 레벨 k 이하의 fill‑in을 결정하고 허용된 위치(permitted) 집합을 만든다. 이 단계는 순수히 구조만을 다루며, 행‑밴드 병합(row‑merge) 연산을 통해 레벨을 전파한다. 두 번째는 ‘수치 팩터화(Numeric factorization)’ 단계로, 실제 값들을 계산한다. 두 단계 모두 밴드 단위로 병렬화되며, 각 스레드는 자신에게 할당된 밴드 집합을 순차적으로 처리한다.
또한 저자는 레벨 기반 불완전 역행렬(level‑based incomplete inverse) 서브 메서드인 TPIILU(k)를 옵션으로 제공한다. 이 방법은 ILU(k) 전처리 행렬의 역행렬을 레벨 k 이하의 fill‑in만을 사용해 근사 계산한다. 성공하면 원래 TPILU(k)와 동일한 비트‑호환성을 유지하면서, 전처리 단계에서 발생하는 삼각해 결합 연산을 대체해 추가적인 속도 향상을 얻는다. 만약 역행렬 근사가 수렴하지 않으면, 알고리즘은 즉시 기본 TPILU(k) 경로로 전환한다.
분산 메모리 확장성을 위해 TPILU(k)는 ‘정적 로드 밸런싱(static load balancing)’과 ‘파이프라인 통신(pipelined communication)’을 도입한다. 각 프로세스는 미리 정해진 밴드 집합을 라운드‑로빈 방식으로 할당받으며, 완전하게 처리된 밴드만을 메시지 버퍼에 담아 다른 프로세스로 전송한다. 이때 고정된 버퍼 수와 크기를 사용해 동적 메모리 할당을 피하고, 통신과 계산을 겹쳐 네트워크 대기 시간을 최소화한다. 결과적으로, 프로세스 간의 의존성이 최소화되어 대규모 클러스터에서도 효율적인 스케일링이 가능하다.
실험에서는 16코어 워크스테이션과 80노드(각 2 CPU, 8 코어) 클러스터에서 다양한 희소 행렬을 테스트하였다. 16코어 환경에서는 TPILU(k) 기반 GMRES 해법이 순차 ILU(k) 대비 최대 9배 가속을 보였으며, 코어 수가 증가할수록 실행 시간이 꾸준히 감소했다. 클러스터 실험에서는 차원 160 000, 대각우세(sparse diagonally dominant) 행렬에 대해 80노드에서 50배 가속을 달성했다. 특히, 기존 Block Jacobi ILU(k)가 수렴하지 못하던 경우에도 TPILU(k)는 안정적으로 수렴했으며, 비트‑호환성을 유지해 결과 재현성이 완벽히 보장되었다.
마지막으로, 비트‑호환성(bit‑compatibility)이라는 엄격한 검증 기준을 만족한다는 점이 강조된다. 연산 순서를 정확히 동일하게 유지해 부동소수점 라운드‑오프 차이가 전혀 발생하지 않으며, 이는 기존 코드와 교체 시 재검증 비용을 크게 절감한다. 산업 현장에서 코드 업데이트에 따른 회귀 테스트 비용을 최소화하고, 높은 신뢰성을 요구하는 과학·공학 시뮬레이션에 바로 적용할 수 있다.
요약하면, TPILU(k)는 작업‑지향 파이프라인, 정적 밴드 분할, 레벨 기반 역행렬 옵션, 최소화된 통신 설계를 결합해 현재 가장 널리 쓰이는 ILU(k) 전처리기의 병렬화 한계를 뛰어넘는 솔루션을 제공한다. 이는 다중 코어와 대규모 클러스터 환경 모두에서 높은 성능과 수치적 안정성을 동시에 달성할 수 있음을 실험적으로 입증한다.
원본 논문
고화질 논문을 불러오는 중입니다...
댓글 및 학술 토론
Loading comments...
의견 남기기