작도닷넷 블로그
작도닷넷 블로그

컴퓨터

GPU를 이용한 병렬 컴퓨팅

08/12/18 16:00(년/월/일 시:분)

GPU는 보통 게임용이다. 근데 요즘엔 GPU가 너무 좋아져서 게임 말고 다른데 써도 될 정도다.

얼마나 좋냐 하면, CPU가 보통 듀얼코어, 쿼드코어정도 할때, GPU는 48코어, 128코어, 256코어씩 한다. 물론 훨씬 간단하고 작은 프로세서들이지만, 일단 숫자가 압도적으로 많으니까 잘만 이용하면 상당히 쓸모가 있다.

GPU를 금융, 의료, 통계 등의 전문적인 분야에 응용하기 시작한게 2004년이고, 2008년 현재는 상용화 단계에 와 있다. 여기에 뛰어든 것들로는

엔비디아 - CUDA
ATi/AMD - Stream
Apple/Khronos - OpenCL
Microsoft - DirectX 11

하나씩 보면

CUDA는 지포스 8천 시리즈 이상에서만 동작하며, ATi Stream도 Radeon에서만 동작한다. 하드웨어에 의존적이긴 하지만, 경쟁 플랫폼들보다 빨리 시작했기 때문에 지금까지 해놓은 게 많다.

http://www.nvidia.com/cuda

http://ati.amd.com/technology/streamcomputing/

OpenCL은 OpenGL의 연장선에서 나온 것으로, 이제 막 스펙이 정해졌다.

http://www.macrumors.com/2008/12/09/opencl-1-0-specification-completed-and-released/
http://www.khronos.org/opencl/

역시 최고의 기대작은 DirectX 11에 추가될 GPGPU 지원인데, 2009년 후반이나 되야 나올 것이다.

이 중에서 현재 CUDA와 ATi Stream은 경쟁 플랫폼들보다 1년 정도는 기술적 우위를 점하고 있으므로 지금 시작한다면 이들이 현실적인 선택이 될 것이다.


- 어려움

기존에는 20~30% 빨라지면 대단한 거였지만, GPU 병렬 컴퓨팅은 빨라지면 4배, 6배, 20배, 50배씩 빨라지기 때문에 엄청난 차이가 있다. 컴퓨터를 500대 써야 할 일을 50대만 써도 되거나, 10시간 걸리던 일을 1시간으로 줄일 수도 있다.

문제는 기존의 소프트웨어를 GPU에 맞게 옮기는 게 어렵다는 점이다. 크게 분류하자면

1. 일을 잘게 쪼개는 어려움
2. 그래픽카드의 HW적 한계

예를 들어 엔비디아에서 나오는 가장 좋고 비싼 그래픽카드, TESLA의 경우 동시에 23,000 쓰레드를 처리할 수 있다. 그러므로 하나의 작업을 23,000개 이상으로 쪼개지 않으면 GPU의 성능을 다 쓰지 못한다.

이것은 기존에 듀얼코어나 쿼드코어에 맞게, 하나의 작업을 2개나 4개로 쪼개는 것과는 차원이 다른 문제다. 2개와 2만개는 차이가 크니까. 물론 이것은 이미 70~80년대 병렬 컴퓨팅에서 충분히 다뤘던 문제이기 때문에 위험하지는 않으나, 충분히 훈련된 고급 인력은 필요할 것이다.

둘째로는 그래픽카드의 하드웨어적 한계를 프로그래머가 감안해야 한다. 고도로 발달한 CPU의 캐시 관리, 메모리 관리 기법과는 달리 GPU는 아직도 초기 단계다. 사람이 해야 할 일이 많다.

예를 들어 쓰레드를 32*n, 64*n 단위로 만들고, 이들이 각각 다른 메모리 뱅크를 참조하도록 해야 한다. 이렇게 하지 않으면 여러 프로세스에서 같은 메모리 뱅크를 참조해서 경합이 발생할 수 있다. 그러면 시리얼 작업보다 오히려 더 느려질 수도 있다.

그러므로

1. 병렬 컴퓨팅(수퍼 컴퓨팅)
2. 컴퓨터 하드웨어 아키텍처

에 대한 고도의 지식이 필요하다.


- SIMT (Single Instruction, Multiple Thread)

CUDA에서는 병렬 컴퓨팅을 쉽게 도와주려고 SIMT(심티)를 지원한다.

하나의 명령을 데이터만 바꿔가며 n개의 쓰레드로 돌리는 것이다. 프로그래머는 하나의 function만 만들면 쓰레드 여러 개 돌리는 건 CUDA에서 알아서 해준다.

또한 같은 명령을 데이터만 바꿔가면서 쓰레드를 돌리면, 이 쓰레드 간에는 context switching 비용이 zero다.



결론

GPU를 이용한 병렬 컴퓨팅은 복잡하고 전문적인 금융, 의료, 통계 등에 사용할 수 있다. 기존에 CPU만 사용하는 것보다 적게는 4배, 많게는 17배까지도 빠르다.

워낙 빠르고 효율적이기 때문에 앞으로 전문 소프트웨어는 GPU 가속을 지원하는 방향으로 바뀔 것이다. 즉 기존 소프트웨어를 GPU에 맞게 바꾸는 수요가 생길 것이다.

병렬 컴퓨팅은 70~80년대부터 충분히 연구가 된 분야고, GPU를 일반적인 용도로 사용하는 연구 또한 2004년부터 주목받기 시작했고, 2009년 후반에 DirectX 11에서도 GPGPU를 지원할 예정다. 시기가 무르익었다.

하지만 기술적인 진입장벽이 높다. 병렬 컴퓨팅과 하드웨어 아키텍처에 대한 충분한 지식이 있어야 한다. 고급 인력이 필요하다.


http://www.itviewpoint.com/88727
금융위기에 더 빛나는 '엔비디아 CUDA' 기술 활용사례
떡이떡이

http://www.xacdo.net/tt/rserver.php?mode=tb&sl=1521

이름
비밀번호
홈페이지 (없어도 됩니다)

비밀글로 등록
작도닷넷은 당신을 사랑합니다.

[이전 목록]   [1] ... [103][104][105][106][107][108][109][110][111] ... [235]   [다음 목록]

최근 글

이웃로그 관리자 옛날 작도닷넷 태터툴즈 ©현경우(xacdo) since 2001