'CUDA'에 해당되는 글 1건

  1. 2009/06/03 CPU + GPU 협업 시대
하루가루2009/06/03 11:31



오랜만의 글쓰기다. 

협업이란 말을 CPU와 GPU의 관계에서 듣게 되다니 새롭다. 순차적 연산 구조인 CPU와 병행 연산 구조인 GPU가 모두 활용되는 프로그램이 작성된다면 뛰어난 성능을 보이리라 생각된다.

혹시 우리 프로젝트에도 이 기술을 적용할 수 있을까 해서 FORTRAN CUDA를 찾아봤다. 온라인으로 요청하면 제공받을 수 있는 것 같다. OpenMP와 MPI를 이용한 성능 향상의 한계를 CUDA가 한 단계 높혀주지 않을까 기대된다. 

문제는 내가 사용하는 환경들에서는 CUDA를 사용할 수 없다. GeForce 8100 이상의 그래픽 카드에서 CUDA를 지원하는데, 병렬 모델 분야에서 사용되는 컴퓨터에는 그래픽 카드가 별도로 탑재되지 않는다. 대부분 내장 그래픽 카드다. (ㅠㅠ) 그 대신 CPU 프로세서는 월등하다. Xeon CPU core가 여러 개 박혀 있어 OpenMP 적용하면 성능은 매우 좋아진다.

기상 예측, 수치 해석 모델 등에 활용되는 연산은 90% 이상 부동소수점 연산이고, 기상 모델에서 사용하는 데이터는 resolution에 따라 다르지만 큰 데이터는 4개의 축을 갖고 있다. 엄청 크다. 가정 집 PC에서 실행하면 ㄷㄷㄷ이다. 이를 OpenMP나 MPI로 적용하는 것은 많은 돈 뭉치를 core의 수 만큼 나눠 세어나가는 것이며 그 core의 참여 수에 따라 돈을 빨리 센다. GPU를 이용하면 이 core를 몇 십 배 쉽게 활용할 수 있어 보인다. 그리고 MPI와 달리 CPU와 GPU의 협업은 network를 이용하지 않기 때문에 비교도 되지 않을 것이다.

OpenMP의 후계가 CUDA와 같은 GPU 기반 병렬 연산 기술이 된다면 MPI는 어떻게 될까 생각된다. 다. 나는 CUDA에도 한계가 있다고 본다. 하나 혹은 두 개의 그래픽 카드를 갖는 한 머신에서 다룰 수 있는 연산은 한계가 있다. GPU core도 최대 수가 제한될 것 아닌가. 현재는 괜찮겠지만, 모델 프로그램의 데이터 resolution은 하드웨어 성능에 따라 프로그래머가 욕심 내고 있다. 4x5도 크기의 셀이 2x2.5로 조밀해지면서 기존 데이터보다 4배 이상 데이터가 커졌다. 

전 지구 모델을 예로 들면 경도와 위도를 144 x 91개로 나누는데 km로 따지면 엄청나지 않은가. 과학은 앞으로 이를 더 조밀하게 만들어 예측을 정확히 하고자 노력할 것이다. 위도와 경도가 각각 2배씩 조밀해지면 전체 데이터는 4배, 그 외 고도 등에 따라 또 증가할 것이다. 결국, GPU에서도 이 데이터를 다 처리하기 위해 load가 걸릴 것이고 이를 분산하는 기술이 적용되야 한다. MPI가 현재 OpenMP의 개선 한계를 처리해주듯이 GPU 연산의 부하도 MPI가 처리할 것이다. 

아... 이 글의 요지는 MPI를 열심히 마스터 해서 GPU와 협업 시키는 연구를 해보고만(!) 싶다는 것이다. 이번 방학 때 짬을 내서 간단하게 테스트 해보고 효과가 있다면 내년도 연구방향에 슬쩍 넣고, 그 전에 난 졸업하련다.


- 가루비누 -













저작자 표시 비영리 변경 금지
Posted by cheru