GPU(Graphic Processing Unit) : 그래픽 처리장치
컴퓨터 시스템에서 그래픽 연산을 빠르게 처리하여 결과값을 모니터에 출력해주는 연산장치. 컴퓨터 그래픽을 처리하는 장치이다.
CPU vs GPU (이전 포스팅 : CPU 이해하기)
CPU(중앙처리장치)는 데이터를 순차적으로 입력받아서 연산하고 처리하는 직렬처리 방식이다.
초기 CPU는 컴퓨터에 입력이 들어오면 데이터를 계산하고, 처리하고, 이를 화면에 그려주는 일까지 모든일을 담당했다. 단순한 용도로만 사용하던 컴퓨터는 CPU 혼자서 이러한 작업은 무리없이 소화했는데, 시간이 지남에 따라 컴퓨터는 좀더 복잡한 계산과, 게임과 같은 복잡한 화면을 그리는 용도로 사용되기 시작했다. 순차적으로 데이터를 처리하는 CPU는 처리하는 양이 많아짐에 따라 처리하는 연산의 병목현상이 발생하게 된다.
혼자 모든일을 맡아서 하던 CPU의 작업량을 나눠주기 위해서 GPU는 CPU가 하던 화면그리는 일을 맡아서 하게 된다. CPU는 직접 화면을 그리는 일을 하지 않고, 대신 GPU에게 화면을 그려주라는 명령만 하게 됨으로써 좀더 중요한 작업에만 집중할 수 있게 되었다.
화면에 그림을 그리는 일이란 모니터에 있는 픽셀을 하나씩 연산해주고 변화되는 픽셀을 계산해주는 작업을 의미한다. 이 작업은 1024x768의 해상도 화면이라면 786,432개의 픽셀을 연산해야 하는 계산으로 단순하지만 CPU가 하나씩 처리하기에는 오래걸리는 작업으로 중요한 연산을 하는데 딜레이가 발생할 수 있었다. 이러한 작업을 GPU에게 위임함으로써 CPU는 중요한 일에만 집중할 수 있게 되었다.
GPU는 1개의 코어만 있는 CPU와는 다르게 여러개의 멀티코어로 이루어져있다. 화면을 그리는 일을 하게 된 GPU는 여러개의 픽셀에 대한 계산을 동시에 진행 후 동시에 화면에 그려주는 작업을 해야했다. 그렇기 때문에 이러한 작업은 동시다발적으로, 병렬처리로 진행했어야 했다. 이러한 특성때문에 GPU는 멀티코어를 갖는 구조로 발전했고, 개별 데이터의 처리속도는 느리지만 대용량 데이터를 처리는 병렬처리로 빠르게 처리할 수 있는 구조로 발전하게 된 것이다.
아래 영상은 CPU와 GPU를 비교하는 가장 유명한 영상이다. CPU와 GPU가 그래픽을 어떻게 처리하는지 직접 확인할 수 있다. youtu.be/-P28LKWTzrI
GPU의 연산
- 해상도 : 1024 x 768
- 주사율 : 60Hz * 주사율 : 갱신 빈도수, 60hz란 것은 초당 모니터의 갱신 빈도수가 60회를 의미한다.
모니터에 새로운 화면을 그려주기 위해서는 초당 1024 x 768 x 60 의 연산횟수가 필요하다. 약 768,432*60번. GPU의 코어는 수만개의 코어로 이를 처리하게 된다. 그런데 이는 단순이 화면을 갱신하는 부분에 대한 설명이다. GPU는 화면에 3D 객체를 어떻게 그릴까?
3D 객체의 표현
- 점(Vertex) : 정점, 꼭지점, 모델을 구성하는 가장 작은 단위
- 선(Edge) : 점과 점이 만나 이루어지는 선
- Polygon(다각형) : 선과 선이 만나 이루어진 삼각형. 모든 오브젝트는 삼각형을 무수히 이어 붙여 만들어진다.
3D 오브젝트는 수많은 Polygon들을 합쳐서 표현한 것이다. 화면에 3D 오브젝트를 그리기 위해서는 Vertex 기반 Polygon을 그리는 것이고, GPU는 많은 코어를 이용하여 이 수많은 vertex를 병렬로 처리하게 된다. vertex를 움직이거나 회전시키는 문제는 벡터나 매트릭스 연산을 해야하는 연산인데, 이러한 vertex의 매트릭스 연산은 단순하지만 대량의 양을 한번에 처리해야 하는 문제이고 많은 코어를 이용해 계산하게 된다.->(3D 게임 그래픽스의 이해)
GPGPU(General-Purpose computing on Graphics Processing Units, GPU 상의 범용 계산) : GPU를 이용한 범용연산
컴퓨터 그래픽을 위한 계산만 하던 GPU에게 CPU가 맡았던 연산에도 사용해 연산속도를 향상 시키는 기술. 특히 GPU의 특징을 활용한 병렬처리 작업에 효과적이다. 이상적인 GPGPU 응용 프로그램의 데이터 집합은 크고, 병렬도는 높고, 데이터 요소간 의존성은 최소이다. (매트릭스/벡터 연산, 시뮬레이션 연산, 빅데이터를 이용한 데이터검색, 가상화폐 채굴, 딥러닝 등)
기본적으로 그래픽 처리에 주로 사용되었던 매트릭스나 벡터연산은 GPU에서 효율적으로 계산할 수 있으며, 대량의 데이터를 예측하고 계산이 필요한 시뮬레이션에도 효과적으로 계산할 수 있다. 대량의 데이터에서 데이터를 찾는 작업, 가상화폐에서 독립된 블록에서 하나씩 해시값을 찾는 작업 역시 병렬로 처리하면서, 하나씩 찾는 CPU보다 향상된 속도로 작업할 수 있다.
딥러닝 역시도 마찬가지로 많은 데이터를 반복적으로 학습시키는 작업인데, CPU로 처리하기엔 시간이 많이 소요되어 빠른 학습을 위해 GPU를 활용하게 된다.
GPGPU 라이브러리
NVIDIA CUDA(Compute Unified Device Architecture) : 그래픽 처리 장치(GPU)에서 수행하는 (병렬 처리) 알고리즘을 C 프로그래밍 언어를 비롯한 산업 표준 언어를 사용하여 작성할 수 있도록 하는 GPGPU 기술. NVIDIA 종속
OpenCL(Open Computing Language) : 개방형 범용 병렬 컴퓨팅 프레임워크이다. CPU, GPU, DSP 등의 프로세서로 이루어진 이종 플랫폼에서 실행되는 프로그램을 작성할 수 있게 해 준다. NVIDIA, AMD, Intel CPU/GPU와 임베디드 프로세서 등에서 그래픽카드와 상관없이 동작.
GPU 기술 - 레이트레이싱(Ray Tracing)이란?
- youtu.be/bFUWu387ErM
Ray Tracing : 이미지 픽셀 하나하나를 통과하는 광선들이 있다 가정하고 그 광선(Ray)을 역추적(Trace)하는 방식. 빛이란 연속적으로 반사하여 눈을 통해 사물을 볼 수 있게 된다. 이러한 빛의 반사를 현실에서와 같이 똑같이 구현하고 렌더링하는 작업을 의미한다.
*Raterization(래스터화) : 3D 오브젝트를 평면 화면에 픽셀로 연산하는 과정. 빛에 대한 별도의 연산이 없기 때문에 오브젝트가 자연스럽게 반사되는 것과 같아 보이는 텍스처를 미리 입여야 한다. 연산이 적게 들기 때문에 게임에서 많이 사용하고 있다. 성능에는 효과적인 방법이지만 사실적인 구현은 어렵다.
기존 3D의 작업은 래스터화를 이용하여 미리 텍스쳐에 빛의 처리를 의도적으로 입혀 화면에 그려지게 하였다면, 레이트레이싱을 이용한 구현은 광원을 인식해 빛의 반사를 실시간으로 연산한다는 차이가 있다. 빛을 이용한 보다 사실적인 묘사가 가능하지만 많은 연산이 필요해 성능이 떨어질 수 있다. *또한 게임에서 레이트레이싱을 지원해야 가능.
RTX On VS RTX Off
NVIDIA 그래픽카드 모델명과 RTX (레이트레이싱이 적용된 그래픽카드)
NVIDIA 지포스 그래픽카드를 보면 GTX, RTX등의 이름을 볼 수 있다. RTX는 위에서 설명한 레이트레이싱 기술이 적용된 그래픽카드를 의미하고 Geforce 20 시리즈부터 나오기 시작했다.
그래픽카드 네이밍 : GeForce RTX 2080 Ti D6 11GB
1) GeForce : 엔비디아 지포스 제품군. 지포스, 쿼드로, 테슬라 등이 있다.
- 지포스 : 개인용 GPU, 게임 최적화
- 쿼드로 : 워크스테이션용, 작업용 GPU. 3D 모델링, 렌더링 최적화
- 테슬라 : 워크스테이션용, 작업용 GPU, GPGPU를 이용한 병렬연산 최적화
2) RTX : 그래픽 카드의 등급
- GT : 엔트리급 그래픽카드. 간단한 게임 돌아감.
- GTS : 메인스트림급 그래픽카드. 무난한 성능. 고사양 게임을 돌리기엔 무리가 있다.
- GTX : 메인스트림, 퍼포먼스, 하이앤드, 플래그쉽급 그래픽카드. 중간~고성능 모두 GTX로 묶여있다. 대부분 그래픽카드
- RTX : 레이트레이싱 기술이 적용된 그래픽카드.
3) 2080 : 그래픽카드의 세대와 성능
- 앞의 두자리(or 1자리)는 세대를 나타낸다. 숫자가 높을수록 최근에 출시된 제품이다. 30이 2020년 9월, 현재기준 가장 최신 출시된 모델이다.
- 뒤의 두자리는 그래픽 카드의 성능을 의미한다. 숫자가 높을수록 성능이 좋다.
-> GTX 3060 < GTX 3070 < GTX 3080
4) Ti(Titan) : 동일대 10의 자리보다 성능을 높인 버전
5) D6 : 탑재된 메모리(VRAM)의 규격 종류. D5->GDDR5, D5X->GDDR5X, D6->GDDR6
*GDDR(Graphics Double Data Rate memory) : 그래픽카드에서 사용하는 메모리
-> DDR?GDDR?그래픽 D램은 무엇이 다를까?
6) VRAM(그래픽카드 메모리)의 용량. GPU에서는 데이터를 VRAM으로 불러 처리하기 때문에 VRAM이 높으면 처리할 데이터 양이 많은 게임과같은 환경에 유리하다.
'Software Development > IT' 카테고리의 다른 글
WWDC2021-Create 3D models with Object Capture (0) | 2021.06.12 |
---|---|
EXIF (Exchangeable Image File Format) - 이미지 파일 메타 데이터 포맷 (0) | 2021.01.26 |
PC 구매 전 기본 상식 - CPU 쉽게 이해하기 (0) | 2021.01.14 |
타입스크립트(Typescript) 알아보기 (0) | 2021.01.08 |
구글홈 & 헤이홈 스마트 리모컨 허브 연동으로 가전기기 연동하기 (0) | 2020.03.21 |