저 하늘의 구름처럼~

about GPU 1(CPU와 GPU의 차이점,특징) 본문

IT

about GPU 1(CPU와 GPU의 차이점,특징)

강백호v 2019. 7. 27. 20:34

1) GPU는 범용 처리를 수행하기 위한 프로세서이다. 여러 가지 처리를 가능한 짧은 시간안에 실행 할 수 있게 만들어 졌다.
각각의 정점 좌표 변환이나 픽셀의 색이나 밝기 계산은 느려도 수많은 정점이나 픽셀의 처리를 병렬로 실행함으로써
전체적으로 실행시간을 줄이는 방식으로 만들어 졌다. CPU는 스포츠카와 같은 것으로 한두 사람을 빠르게 운송 할 수 있다. GPU는 버스와 같은 것이다. 속도는 스포츠카에 미치지 못하지만, 한 번에 많은 사람을 태울 수 있으므로 시간당 사람 수x거리 면에서 본다면 스포츠 카보다 성능이 높다고 할 수 있다. 버스는 모든 승객이 같은 목적지에 갈 때는 효율이 좋으나 서로 다른 목적지에 가고자 하는 사람이 모이면 제대로 운송할 수 없다. 이와 마찬가지로 GPU의 경우도 같은 계산을 수행하는 처리가 많을 때가 아니라면 높은 성능은 발휘할 수 없다.

 

2) GPU는 대량 병렬 프로세서 이다.
좌표 변환은 패널의 정점 좌표마다 독립된 계산이며 픽셀의 색이나 밝기 계산도 픽셀마다 독립된 계산으로, 앞의 좌표나 픽셀 계산이 끝나지 않으면 다음 처리를 시작할 수 없는 것이 아니라 어떤 순서로 계산해도 상관없는 계산이다.
이들 계산은 병렬로 실행할 수 있으므로 GPU에서는 이들 계산을 수행하는 유닛을 여러 개 준비하여 병렬로 처리를 수행하는 방법으로 성능을 높인다.

 

3) CPU와 GPU는 별도 메모리 공간을 가지며, DMA 엔진으로 메모리 공간을 공유한다.
하나의 메모리 공간을 사용하는 것이 어려운 이유는,CPU는 대용량 메모리가 필요하고,
GPU는 고연산 성능을 가능토록하고 고 대역 폭 메모리가 필요하기 때문이다.

 

4) GPU는 그래픽 처리를 위해 개발된 OpenGL 언어를 주로 사용하였으나, 계산을 수행하려면 각각의 변수를 정점 좌표로 하여 이에 여러가지 변수를 좌표 변환 행렬의 형태로 하여 곱하는 연산을 수행할 필요가 있어 범용의 계산을 수행하는 데는 적당하지 않는 환경이었다.

이러한 상황에서,CUDA(Compute Unified Device Archiecture)라 부르는 과학 기술 계산에 사용하는 C언어를 확장한 프로그래밍 환경을 제공하였다. CUDA는 GPU에서의 높은 병렬도를 지원하기 위한 최소한의 기능 확장을 적용하였다. 

CUDA는 NVIDIA가 개발한 독자의 언어로, 다른 회사가 사용할 수 없으므로 업계 표준으로 OpenCL이라는 GPU를 위한 범용 계산용 언어가 만들어 진다.

 

- 출처 : 머신러닝과 블록체은을 떠받치는 GPU의 모든 기술 (Hisa Ando 지음, 길양이 옮김)