응애맘마조

GPGPU, 컴퓨트 셰이더 본문

공부/3D과제

GPGPU, 컴퓨트 셰이더

TH.Wert 2023. 7. 11. 22:05

주의 : 해당 게시물에서 작성될 내용은 과제를 해결하기 위해 출처의 내용을 그대로 작성한 부분이 많으며 일절 광고나 수익 창출 목적으로 쓰인 것이 아님을 밝힙니다.

GPGPU는 일반적으로 컴퓨터 그래픽스를 위한 계산만 맡고 있었던 그래픽 처리 장치를, 전통적으로 중앙 처리 장치가 맡았던  응용 프로그램들의 계산에 사용되는 기술입니다. 프로그램이 가능한 층과 고정도 연산을 그래픽 파이프라인에 연결하는 것입니다. 줄여서 말하면 CPU 대신에 GPU로 데이터를 병렬 처리 할 수 있다고 볼 수 있습니다.

특성으로는 기본적인 회로 구조에서는 신호 증폭의 역할을 수행하는 트랜지스터는 집적 회로 내부에서 스위치의 역할을 수행하며, 다른 여러 부품들과 조합을 이루어 신호 처리 및 연산을 수행하는 유닛으로서 기능하기 때문입니다. CPU의 경우 일반적인 용도로 사용되기에 다양한 명령어 세트를 포함한 긴 파이프라인을 가지는 반면, GPU의 경우 3D 연산에 한정되어 다수의 셰이더 유닛을 배치해 병렬로 데이터를 연산하는 구조를 가집니다.

용도로는 가장 많이 사용되는 멀티미디어 처리에 쓰이고 있습니다. 특히 동영상 인코더 프로그램에서도 GPGPU를 사용해서 더 빠른 속도로 인코더를 하고, 동영상 플레이어에서도 그래픽카드 가속 처리를 사용하여 CPU의 부담을 줄이고 있습니다. 또한 오픈월드를 사용하는 게임에서 무수히 많은 오브젝트를 처리하기 위해 GPGPU를 사용하며, 프레임 영상의 HDR 영상 처리를 위해 사용하기도 합니다.

데이터 분석인 빅 데이터 처리와 인공지능에서도 GPGPU가 사용되고 비트코인이나 이더리움 같은 전자화폐의 생성에도 사용합니다.

 

응용으로는 데이터의 흐름에 따른 커널 구현, 비트맵 변환, 텍스쳐 유닛, 프레임 버퍼에 따른 흐름 처리를 할 수 있습니다.


컴퓨트 셰이더는 먼저 그래픽 프로그래밍을 넘어 D3D11을 확장하는 프로그래밍이 가능한 셰이더 단계라고 볼 수 있습니다. 일반 렌더링 파이프라인과 별도로 그래픽 카드에서 실행되는 프로그램입니다. 다른 프로그래밍이 가능한 셰이더와 마찬가지로 컴퓨트 셰이더는 HLSL을 사용하여 설계 및 구현되지만 유사성이 끝나는 위치에 불과합니다. 하지만 컴퓨트 셰이더는 일반적인 용도의 고속 컴퓨트를 제공하고 GPU의 많은 병렬 프로세서를 활용합니다. 메모리 및 스레드 동기화 기능을 제공하여 보다 효과적인 병렬 프로그래밍 방법을 허용합니다. ID3D11DeviceContext::Dispatch 또는 ID3D11DeviceContext::DispatchIndirect 메서드를 호출하여 명령을 실행합니다.

파이프라인과 컴퓨트 셰이더

특징으로는 GPU 자원으로 직접 읽고 쓰기가 가능하고 자료 병렬적 알고리즘 구현에 용이하며 출력을 다른 셰이더의 입력에 묶을 수 있습니다.

 

읽어주셔서 감사합니다.

'공부 > 3D과제' 카테고리의 다른 글

큐브 맵, 사운드 로드  (0) 2023.07.28
다익스트라, 에이스타  (0) 2023.07.12
애니메이션 효과 구현  (0) 2023.07.02
모델 불러오기  (0) 2023.06.29
키프레임  (0) 2023.06.28
Comments