2014. 6. 9. 16:05

Graphic Processing Unit 구조

 

GPU라는 놈이 nVidia가 표준도 아닌것이 가장 많이 사용되고 있기 때문에,

nVidia의 CUDA만 본다. 내 연구실 컴퓨터 GPU도 GTX280이다. ㅇㅋ

 

CPU와 GPU의 구조이다.

 

 

딱봐도 느껴지는것은 GPU는 병렬구조를 갖고 있다는 것

그리하야 CPU에서 하지 못하는 병렬 계산을 GPU에서는 해낼 수 있다.

 

GPU 전체가 그래픽카드를 의미하는 말은 아니고

그래픽 카드에서 계산을 담당하는 부분이 바로 GPU인 것이다.

 

CUDA는 이미지 및 동영상, 그래픽 처리에 아주 월등한 성능을 보여주고

최근 다양한 용도로 사용되고 있다.

 



기본 아키텍쳐가

CPU 변수 -> GPU 처리 -> 다시 CPU가 처리된 내용을 처리

물론 복잡한 행렬식이나 벡터계산을 병렬적으로 처리하여 CPU에 비해 월등한 성능을 보여준다.

 

SM : Streaming Multiprocessor 로, GPU는 SM의 집합으로 이루어져 있다.

        SM은 8개의 SP로 이루어져 있다.

        32개의 스레드가 있으며(왜 32개인지는 SP설명 때 설명),

        이 32개의 스레드워프(Warp)라는 단위로 불리운다.

        16개의 스레드로 메모리참조를 하는 경우에는 하프워프(HalfWarp)라고 한다.

        GPU는 1SM 단위(32스레드)로 동작(메모리참조)한다

SP : Scalar Processor 로, 4개의 스레드로 구성되어 있고, 실행한다.

        때문에 SM은 32개의 스레드로 구성되어 있는 것이다.

        SM = 8개의 SP = 1개의 SP에는 4개의 스레드

        4단계 연산자 파이프라인에 따라 4개의 8스레드 묶음 병렬 실행

 

스레드, 블록, 그리드 



Compute Capability 1.3 기준이며, 그래픽카드의 사양에따라 얼마든지 달라질 수 있다.

스레드 : 최소 명령어 처리 단위

블록 : 스레드 묶음으로 최대 512개의 스레드를 가질 수 있다

그리드 : 블록이 모여 그리드가 된다, 그리드의 배치는 2차원까지만 지원되며 z축은 1로 고정이다.

어쨋든 기본 구조는 여기까지.

이걸 어떻게 써먹어서 성능을 높여볼 수 있을까를 연구해보자.

 

이 모든 성능적 우월함을 제쳐두고

한가지 아쉬운 점은 표준화가 되어 있지 않기 때문에 오로지 nVidia GPU에서만 돌아간다는 것

그것도 CUDA를 지원하는 GPU에서만 작동한다는게 가장 큰 단점

Posted by 긍정왕오킹