GPU 기반 대규모 얕은 물 흐름 시뮬레이션 가속기
초록
본 논문은 2차원 얕은 물 방정식(SWE)을 풀기 위해 HLLC 근사 리만 솔버와 셀 중심 유한체적법을 적용한 GPU 전용 구현을 제시한다. CUDA 기반으로 CPU와 GPU의 전체 연산 흐름을 비교하고, NVIDIA Quadro 시리즈(K600, K2000, K5200, K6000)를 이용해 1천 개에서 1천만 개 셀 규모의 비정형 격자에 대한 성능을 평가한다. 정확도는 CPU와 동일한 수준을 유지하면서, 고성능 GPU에서는 최대 30배 이상 속도 향상이 관찰되었다. 성능 향상은 그래픽 카드의 코어 수, 메모리 용량·대역폭, 그리고 시뮬레이션 시간에 크게 의존한다.
상세 분석
이 연구는 2차원 얕은 물 방정식의 보존형식을 셀 중심 유한체적법으로 이산화하고, HLLC(Harten‑Lax‑van Leer‑Contact) 근사 리만 솔버를 이용해 인터페이스에서의 수량 흐름을 계산한다. 시간 적분은 명시적 오일러 스킴을 사용하며, CFL 조건에 따라 동적 타임스텝을 조절한다. 구현 단계는 크게 (1) 데이터 구조화·초기화, (2) 인터페이스별 플럭스 계산, (3) 셀 상태 업데이트, (4) 경계조건 적용으로 나뉜다. CPU 버전은 순차 C 코드로 작성됐으며, GPU 버전은 CUDA C로 재작성해 수천 개의 스레드를 블록·그리드 형태로 배치한다. 핵심 최적화 포인트는 호스트‑디바이스 간 데이터 전송을 최소화하고, 모든 연산을 디바이스 메모리 내에서 수행하도록 설계한 점이다. 특히 플럭스 계산과 셀 업데이트는 각각 인터페이스와 셀 수에 비례하는 병렬 루프이므로, GPU의 대규모 멀티코어 구조에서 높은 효율을 기대할 수 있다.
성능 평가에서는 네 종류의 Quadro GPU와 Intel Xeon CPU(단일 코어) 사이의 실행 시간을 비교한다. 작은 격자(≈1 k 셀)에서는 전송 오버헤드가 지배적이어서 속도 향상이 제한적이었지만, 10 k~1 M 셀 규모에서는 K5200·K6000이 각각 약 12배·25배 정도의 가속을 보였다. 10 M 셀 테스트는 메모리 요구량이 2 GB를 초과하므로 K2000은 실행이 불가능했으며, 고성능 GPU만이 처리할 수 있었다. 또한 시뮬레이션 시간(총 2400 s)과 연산량이 증가할수록 속도 향상 비율이 상승했으나, 장시간 실행 시 GPU 온도·전력 제한으로 인한 변동성이 관찰되었다. 결과적으로, GPU 가속은 문제 규모가 최소 10 k 셀 이상일 때 실용적이며, 코어 수·메모리 대역폭·GPU 메모리 용량이 성능을 결정짓는 주요 요인임을 확인했다.
댓글 및 학술 토론
Loading comments...
의견 남기기