1. CUDA란
컴퓨터 관련 과에서 어느정도 방구좀 뀐다고 하는 학부생이라도 CUDA에 대해 이름만 들어봤거나 모르는 경우가 많다.
그도 그럴것이 학부 수준에서 병렬 프로그래밍이라는 수업을 가르치는 학교는 없거나 희귀한 케이스일 것이다.
필자 또한 머신러닝에서 학습 속도를 향상시키기 위해 이것저것 알아보다가 GPU를 사용하면 빨라진다고 해서 그때 CUDA를 처음 알게되고 설치까지 하였다.

CUDA란 NVIDIA에서 그래픽 카드를 이용한 GPGPU(General Purpose Graphics Processing Unit)의 통합 개발 환경 제공을 위해 2007년 2월 발표된 Compute Unified Device Architecture 통칭 CUDA 이다.
책에 적혀진 공식적인 설정(?)은 이거고 본인이 이해한 내용은 GPU 프로그래밍을 사용하기 위한 툴!(NVIDIA 그래픽카드만 쓸 수 있음!) 이다.
CUDA를 사용하는 이유는 기존 CPU 프로그래밍에 비해 GPU 프로그래밍의 연산 속도가 매우 차이나기 때문이다. 책에서는 1Tflops의 연산을 위해 CPU 프로그래밍은 인텔 i7 cpu 10개가 필요하고 GPU 프로그래밍은 고성능 그래픽카드 (GTX 480 정도)하나만 있으면 된다고 한다. 필자의 개발 환경인 1660ti maxq 의 성능이 21Tflops인 것을 감안하면 현재는 그 격차가 훨씬 벌어졌을 거라고 생각한다.
2. CPU vs GPU
CUDA의 프로그램 진행 과정과 기존 CPU 프로그램의 진행 과정은 약간 다르다.
기존의 CPU에서 데이터 처리
1. 입력과 출력에 사용할 메모리 할당
2. 처리하고자 하는 데이터를 메모리에 입력
3. 연산을 하고자 메모리에 있는 데이터를 CPU(레지스터)로 가져옴
4. 정수 연산은 ALU, 실수 연산은 FPU에서 처리
5. 처리된 레지스터의 값을 메모리로 출력
6. 사용한 메모리 해제
기존의 CPU에서 데이터 병렬 처리 (4 스레드)
1. 입력과 출력에 사용할 메모리 할당
2. 처리하고자 하는 데이터를 메모리에 입력
3. 연산을 하고자 데이터를 4등분하여 각각의 코어로 가져옴
4. 데이터를 4개의 스레드로 처리
5. 처리된 4개의 데이터를 병합
6. 결과를 메모리에 출력
CUDA에서 데이터 처리
1. 그래픽 카드에 메모리 공간을 할당
2. PC의 입력 데이터를 그래픽 카드의 메모리로 복사
3. 강력한 GPU 성능을 이용하여 병렬처리
4. 처리된 결과를 그래픽 카드의 메모리에서 PC의 메모리로 복사
이런 차이점을 가지며 다음 글에서 예제를 통해 CUDA에서 데이터 처리하는 방법을 설명하겠다.
'GPU Programming > CUDA basic' 카테고리의 다른 글
3. CUDA 예제 - 초급 (0) | 2022.07.05 |
---|---|
2. CUDA에서 데이터 처리 (3) (0) | 2022.07.05 |
2. CUDA에서 데이터 처리 (2) (0) | 2022.06.29 |
2. CUDA에서 데이터 처리 (1) (0) | 2022.06.29 |
0. Introduction (0) | 2022.06.29 |