반응형
왜 GPU programming 일까?
- multicore central processor의 보급량 증가!
- 듀얼코어를 시작으로 8- , 16- ...등 parallel computing이 꼭 필요해졌다.
- CPU(Central Processing Unit) 만으로는 불가능할까?
- CPU의 Clock cycle이 늘어나긴 했지만, 더 증가가 어렵다. 이는 heat와 power(transistor의 크기를 더 줄일 수 없다는 한계) 때문이다.
- 따라서, 다른 방법 즉 gpu를 찾게 된 것이다.
Parallel Programming의 간단한 역사
- 1980,90년대 cpu가 발전하면서 그래픽 기술도 함께 발전했다. 마이크로소프트는 이를 위해서 새로운 2D display accelerator라는 것을 개발했다. hardware가 bitmap 연산을 도와주는 accelerator이였다.
- 그즈음 Silicon Graphics가 3d 그래픽 어플리케이션을 만드는데 활용할 수 있는 OpenGL라이브러리를 공개했다.
- 그리고 90년대 중반! NVIDIA, ATI Tech 기업에 이러한 그래픽 accelerator을 출시하기 시작했다.
초기 GPU Computing
- 당시 gpu 프로그래밍은 그래픽, OpenGL이나 DirectX 사용을 위해 이루어졌다. 그래픽 이외의 GPU 프로그래밍을 general purpose programming이라고 한다.
- 그래픽을 다루려다 보니 input 값은 주로 색을 나타내어 (x,y)의 position에 색정보가 들어있는 형태로 구성이 되어 있다.
- 실제 이 input 색깔에 다른 data를 넣어 높은 연산을 하고자 한 것이 그 당시 연구원들의 아이디어다.
- 그런데 실제로 해보려고 하니 다음과 같은 문제가 있었다.
- 제한적인 resource constraint : 결국 input 형식을 맞추어야하는 문제 발생.
- memory 할당의 문제
- debugging이 어려운 문제
CUDA
- 2006년에 GeForce 880 GTX가 출시 되면서 처음으로 CUDA Archietecture이 탑재 되어 출시 되었다.
- CUDA Architecture란?
- general-purpose computation이 가능하도록 구성한 구조
- single-precision floating points arithmetic 연산 가능
- general-purspose instruction set
- 소프트웨어로 접근 가능한 shared memory cache에 자유로이 read/write 가능!
- CUDA Architecture 활용하기
- CUDA 이전에는, OpenGL이나 DirectX를 사용하여 그래픽 문제로 치환하여 gpu에 접근해야했다.
- 따라서 NVIDIA에서는 C언어를 기반으로한 CUDA Architecture에서 활용할 수 있는 CUDA C를 개발했다.
- 이에 CUDA C는 general purpose gpu computing을 할 수 있는 최초의 언어가 된 것이다!
CUDA를 사용하는 application 들
- Medical Imaging
- 유방암을 탐지하는 mammogram(유방촬영술) 은 유능한 의사가 촬영하지 않으면 굉장히 많은 촬영을 진행해야하는데, 환자를 방사능에 여러번 노출 시키는 것은 좋지 못하다. 따라서 ultrasound imaging 방식이 개발되었다. 모인 초음파 데이터를 3차원의 이미지로 연산을 해야하는데 이는 gpu computation없이는 실질적으로 활용하기에 어렵다.
- TechniScan Svara 는 NVIDIA TESLA C1060 processor을 활용하여 15분에 35GB의 데이터를 처리할 수 있었다.
반응형
'Programming > CUDA' 카테고리의 다른 글
[CUDA] Constant Memory 와 이벤트 (0) | 2023.05.02 |
---|---|
[CUDA] CUDA로 threading & shared memory (0) | 2023.05.02 |
[CUDA] Parallel Programming in CUDA (0) | 2023.05.01 |
[CUDA] CUDA C 기초 (0) | 2023.05.01 |