Water for Future
GPU를 이용한 하천흐름모형의 개발
1. 머리말
지난 수십년간 하천흐름을 해석하기 위하여 다 양한 수치모델이 개발되어 왔다.
하천흐름 모형은 많은 계산시간을 요구하여 실 제 하천흐름 현상을 제한적으로 모의하는 실정이 다. 특히 정상류 해석이 아닌 오래 기간을 모의해 야 하는 비정상류 해석시 해석시간이 PC성능에 따 라 적게는 수분에서 수시간까지 소요된다. 대부분
의 하천흐름해석시 모의구간격자의 형태 및 크기, 수심값 보간결과, 조도계수 및 각종 변수입력값 을 사용자가 시행착오를 거치면서 결과값을 도출 한다. 하지만 흐름해석을 위한 일련의 과정을 반 복적으로 작업하고 결과를 기다리는 시간은 많은 시간이 소요되어 이에 대한 대안으로 동시에 분 할된 격자영역을 계산할 수 있는 병렬처리기법인 GPU(Graphic Processing Unit)를 이용하여 복 잡한 수리현상을 해석하기 시작하였다. 본고에서 는 하천흐름해석을 위한 CPU 및 GPU 수치해석 모형의 개발과정과 각각의 해석속도를 비교 분석 후 실무적용사례를 소개하고자 한다.
2. 하천흐름모형의 개발
연구에서 개발된 하천흐름모형(이하 KSWM) 은 3차원 연속방정식과 Navier-Stokes 운동량 방정식으로부터 수심방향에 관하여 적분하여 유 도된 천수방정식을 지배방정식으로 사용하는 2차 원 하천흐름모형이다. 공간에 대해서는 삼각형 유 한요소로 분할하고, 시간에 대해서는 양해법으로 수치적분하는 유한요소모형이다(Jung and Kim, 1992; Kawahara et al., 1982).
사용된 연속방정식과 운동량방정식은 아래와 같다.
김 성 곤 ●●●
(주) 이엔지소프트 대표이사 [email protected]
조 광 준 ●●●
(주) 디엔에프코텍 부사장 [email protected]
신 창 수 ●●●
(주) 동남이엔씨 부사장 [email protected]
Water for Future
위의 방정식을 C++로 표현한 유한요소코드 (Joe Sampson, 2008)를 실무에 사용가능하도록 코드수정 및 경계조건 등을 보완하여 해석모형을 개발하였다. KSWM은 전처리과정, 해석과정, 후 처리과정이 통합된 시스템이다. 특히 해석엔진이 외부에서 실행되지 않고 시스템내부에 탑재되어 있어 해석 후 결과값을 출력하지 않고, 메모리상
에서 바로 처리가 가능하여 파일 입출력으로 인한 시간을 제거해 해석결과를 좀 더 빠르게 확인가능 하며, 해석 중에도 현재까지의 해석결과를 실시간 으로 분석할 수 있다. 다만, 현재까지 유한요소 격 자망생성은 타프로그램(SMS)과의 연동을 통해 해 결하고 있으며, 향후 시스템 보완과정에서 격자망 생성부를 추가할 예정이다.
(2.1) (2.2) (2.3)
그림 1. KSWM 시스템 사용자 인터페이스
그림 3. 하류단 흐름결과를 3차원으로 표현한 예
그림 2. 선택노드에서 시계열 결과정보를 그래프 표현
그림 4. 노드스트링에 시계열경계조건을 입력한 예
Water for Future
3. GPU를 이용한 유한요소코드의 개발
2000년 초반까지 개발자들은 소프트웨어 성능 향상을 위해 특별한 노력을 하지 않아도 되었다 고 해도 과언이 아니다. CPU의 성능 향상이 곧 소 프트웨어의 성능 향상으로 이어져 왔기 때문이다.
CPU는 무어의 법칙이 적용 되는 대표적인 사례로 꾸준한 성능 향상을 가져 왔다. 1996년 당시 인텔 의 CEO였던 앤디 그로브는 연설에서 “2011년에 는 현재(1996년)의 프로세서(400만개의 트랜지스 터, 200MHz의 속도)보다 200배나 강력해진 10억 개의 프로세서와 10GHz의 속도를 가진 인텔 프로 세서가 나올 것이다.” 라고 이야기 하였다. 그러나
현시점에서 돌아보면 이 말은 실현 되지 않았다.
CPU 개발에 있어 프로세스의 성능은 발열과 전력 의 문제로 인하여 수년 전부터 거의 평행선을 달 리고 있기 때문이다. 이에 따라 개발자들은 하드 웨어에만 의존하던 기존의 성능 향상 시도에서 벗 어나, 소프트웨어의 성능 향상을 위한 병렬 프로 그래밍에 대한 관심을 가지기 시작했다. 이와 동 시에 NVIDIA에서는 GPU를 기반으로 병렬 프로 그래밍이 가능한 CUDA를 발표하였고, CUDA 프 로세서를 탑재한 가속기 등의 하드웨어를 선보이 기 시작했으며 이로 인하여 해외의 CFD 분야에서 는 다양한 해석방법을 적용하여 기존의 CPU계산 방식으로 인한 문제점을 해결하고 있다.
그림 5. 년도별 CPU 속도 향상 그래프 (출처: CPU DB) 그림 6. nVIDIA Titan
nVIDIA에서 개발한 CUDA는 GPU에서 수행하 는 알고리즘을 코딩 시 C프로그래밍언어를 사용 할 수 있도록 하는 기술이다. 이는 기존의 CPU와 달리 많은 수의 프로세서를 포함하고 있는 GPU 를 이용하여 연산을 수행하게 해주는 GPU프로그 래밍언어이다.
CUDA는 C언어를 기반으로 하기 때문에 C를 알고 있는 프로그래머라면 복잡한 그래픽에 대한 사전 지식없이 쉽게 GPU를 이용한 일반연산을 구 현할 수 있다. 또한 기존에 쉐이딩 언어를 사용함 으로써 발생할수 있는 오버헤드가 제거됨으로써 더욱 효율적인 연산수행을 가능하게 한다. CUDA
도 GPU를 이용하는 언어이기 때문에 하드웨어 의 구조적인 원인에서 오는 문제점을 가지고 있 다. 즉 GPU와 GPU간에 메모리를 공유하여 사용 할 수 없으며, GPU에서 연산을 하기 위해선 주기 억 장치로부터 데이터를 전송받아 연산을 수행해 야 한다. 그렇기 때문에 데이터전송에 따른 지연 을 줄이고 프로그램의 효율을 높이기 위해선 CPU 와 GPU간의 데이터 교환을 최소가 되도록 하는 것이 속도향상을 위한 가장 큰 조건이 된다.
개발시 사용된 CPU는 Intel Xeon E5-2620 (2.0GHz), GPU는 NVIDIA Titan을 사용하였 다. 현재는 기술발전에 힘입어 100만원대 초반에
Water for Future
2 0 2 5 3 0 3 5 4 0 4 5 5 0 5 5 6 0 6 5 7 0 7 5 8 0
ǰ °î õ
´ë û ´ï ûÁÖ Ãë¼öž
´ë Á¤ ¸®
¿Á õ õ ȸ ³² ±³
ȸ ÀΠõ
ÁÖ ¿ø õ
´ëÀü Ãë¼öž
EL(m) ºÐ Àú ¸®
µµ ¿À ¸® 0 2 (km) Àå °è ±³
그림 7. CPU방식의 계산코드
그림 9. 대청호 지형
그림 8. GPU방식의 계산코드
그림 10. 유한요소 격자 및 관측지점위치 1GHz 클럭속도의 3000개 이상의 코어가 장착되
어 있는 GPU가속기를 적용하여 더욱 빠른 계산 속도를 지원한다.
4. 대청호내 흐름해석에 적용한 사례
대청호는 대전 및 충청지역에 생활용수와 공업 용수를 공급하는 중요한 수자원이다. 매년 수질오 염 특히 부영양화 문제로 고통을 받고 있으며, 이 에 따른 조류의 과잉 발생으로 수돗물에서 냄새가 유발되는 등 상수원에 대한 불신이 높아지고 있는
실정이다. 이러한 대청호의 수질악화 원인은 대청 호 상류지역의 각종 오염원으로부터 배출되는 오 염물질이 미처리 상태로 대청호에 홍수시 다량으 로 유입되기 때문이다. 따라서 대청호의 수질관리 를 위해서는 유역 및 수계에서 물의 순환과정을 바 르게 파악하여 수질관리에 도움이 될 수 있도록 평 상시와 홍수시에 대하여 물의 흐름을 분석하였다.
복잡 지형을 가지고 있는 대청호(그림 9) 내의 흐름해석을 위해 그림 10과 같은 유한요소 격자망 을 사용하였으며 격자요소의 최소길이는 50 m, 최대길이는 394 m이며 노드개수 2585개, 요소개
Water for Future
수 4154개 이다.
모형의 입력자료와 검증자료로 사용한 수위자료 의 관측위치는 그림10에 표시된 정점에서 2001년 6 월 27일부터 7월26일까지 약 28일간 관측결과(한 국수자원공사[2001]) 중 9일간의 대청댐 전면 수위 자료와 본류 유입량을 모형 입력조건으로 6월 27일 에서 7월5일까지 수위관측 자료를 모형 검증자료로 사용하였다. 하류단 경계조건으로 사용한 수위변화 와 댐 상류에서의 본류 유입량은 그림 11과 같다.
7월1일 전후로 강우발생시 상류에서 유입유량이
증가하면서 수심이 1 m가랑 증가하였고 관측위치 에서 관측결과와 계산결과를 비교하였을 때 그림 12와 같이 관측값과 거의 유사한 것을 확인할 수 있 었다. 7월1일 강수시 유속분포는 그림13, 14와 같 다.
5. 실무적용 사례를 통해 비교한 CPU모 형과 GPU모형의 결과값 및 속도비교
그림 11. 흐름해석을 위한 경계조건 그림 12. 관측수위와 계산값 비교
그림 13. 흐름해석을 위한 경계조건 그림 14. 관측수위와 계산값 비교
Water for Future
두 방법을 사용하여 총 208시간을 모의한 결과 (유속분포)는 동일한 결과값(유속 및 수위)을 산 출하였으며 계산시간은 표1과 같다. 동일한 조건 에서 유한요소격자수만 변경하였을 경우 노드가 2588개 일 경우 GPU가 CPU대비 3.6배의 성능을 보였으며, 노드가 5021개인 경우 GPU가 CPU대
비 10.25배의 성능을 보여주었다. 노드수가 커질 수록 계산속도가 향상되는 이유는 GPU의 계산블 럭당 노드수가 많아질수록 성능이 높아진다. 이로 인해 GPU를 적용한 해석엔진의 사용시 사용자는 좀 더 다양한 해석케이스에 해석을 수행함으로써 흐름현상을 좀 더 정확하게 분석할 수 있다.
노드/요수개수 CPU기반 GPU기반 효율
2588/4154 47분 13분 3.6 배
5021/8682 164분 16분 10.25 배
표 1. CPU와 GPU의 계산시간 비교
6. 맺음말
현재 GPU를 이용한 수치모형 개발 연구는 진 행 중에 있으며, 앞으로 저수지 흐름모의, 연안 해 수유동 모의 등의 다양한 흐름 현상을 모의하고, 적용성을 보다 면밀하게 평가할 예정이다. GPU 를 활용하면, 신속하게 각종 흐름현상을 모의 할 수 있음을 확인하였다. GPU 모형은 계산시간을 획기적으로 단축시킴에 따라 궁극적으로 자연 수 괴(하천, 호소, 해양 등)에서 흐름변화와 수질변화 를 신속하게 평가할 수 있는 예측시스템의 개발에
활용될 수 있을 것이며, 각종 사고로 발생되는 수 질오염 현상을 신속하게 예측하는 활용하면, 수질 오염 방제대책을 신속하게 수립할 수 있게 되어서 수질오염의 확산을 방지하는 데 기여할 것이다.
7. 감사의 글
이 논문은 2015년도 국토교통과학기술진흥원으 로부터 지원받은 건설교통기술 촉진연구사업 입 자방식의 3D 유체흐름 시뮬레이션 개발(과제번호 1615007359)에 의하여 수행되었습니다. 연구지원 에 감사드립니다.
1. 정태성, 황정화.(2003) 대청호내 흐름 및 유입 부유사 확산 모델링, 한국해양환경공학 회지 , Vol. 6, No. 4, pp.67-82
2. Jung, T.S. and Kim, Chang Shik. (1992) A finite element hydrodynamic model for moving boundary prpblems, J. of Korean Society of Coastal and Ocean Engineers, 4(3):146~155
3. Kawahara, M., Hirana, H. and Tsubota, K. (1982) Selective lumping finite element method for shallow water flow, International Journal for Numerical Methods in Fluids, 2, 89-112.
4. “2011년에는 10 GHz CPU가 나올 것이다” http://minjang.egloos.com/
viewer/2738790 참고문헌