본문 바로가기

프로그래밍/컴퓨터7

[CS] 컴퓨트 셰이더 컴퓨트 셰이더는 GPU가 CPU의 기능까지 수행할 수 있게 되면서 나타난 개념이다. DirectX11에서 도입되었으며 일반적인 셰이더처럼 HLSL을 사용하여 처리를 할 수 있고, 렌더링 파이프라인과는 동떨어진, 독립된 셰이더이기 때문에 그래픽스 렌더링과는 관계 없이 사용할 수 있다. 컴퓨트 셰이더와 비슷한 연산들을 픽셀 셰이더에서 수행했었지만 컴퓨트 셰이더는 픽셀 셰이더에 비해 다음과 같은 이점이 있다. 출력할 곳의 리소스를 임의의 위치로 사용 가능 데이터 공유나 스레드 동기화의 매커니즘 설계 지정한 수의 스레드를 명시적으로 구동시켜, 퍼포먼스를 최적화할 수 있음 렌더링 파이프라인과 상관 없으므로 코드의 유지보수가 간단하다. 컴퓨트 셰이더는 병렬 처리 작업을 위해 수행 되는 하나 이상의 스레드 그룹(Th.. 2023. 7. 11.
[CS] GPGPU GPGPU란? GPGPU는 General Purpose computing on Graphics Processing Unit의 약자이며 일반적으로 CPU가 처리하던 연산을 GPU에서 처리하도록 하는 것을 말한다. 보통 CPU는 복잡한 연산을 처리하기 위한 장치이고, GPU는 오로지 그래픽 부분의 연산만을 담당하는 장치이지만 CPU에서 담당할 경우 부하가 많이 걸리는, 예를 들면 단순하지만 반복 작업이 많이 들어가는 연산을 넘겨 받아 처리를 할 수 있다. 이런 방법은 GPU가 그래픽 처리를 위해 대량의 병렬 처리 유닛을 보유하고 있기 때문에 가능한 것으로 기존에 적용된 병렬 처리 기능을 강화하여 연산을 훨씬 대량, 효율적으로 가능케 한다. 현재는 각 그래픽 카드 회사마다 각 제품에 특화된 플랫폼이 있으며 대.. 2023. 7. 11.
[CS] SIMD(Single Instruction Multiple Data) SIMD 한국어로 번역하면 단일 명령 다중 데이터를 의미한다. 하나의 명령으로 여러 데이터를 동시에 처리하는 병렬 컴퓨팅의 일종으로 CPU의 종류에 따라 한 번에 64비트(MMX), 128비트(SSE), 256비트(AVX)의 데이터를 동시에 처리가 가능하다. 위 메모리들은 기본적으로 메모리 정렬이 되어 있어야 하며, SIMD 명령어를 통해 데이터를 처리할 수 있다. MMX 1997년에 공개된 인텔의 SIMD형 확장 명령어 세트로 총 56개의 명령어를 포함한다. x87FPU 레지스터를 이용하여 하나의 명령으로 동시에 여러 정수 연산을 처리한다. 한 번에 64비트씩 처리가 가능하고 기존 범용 레지스터보다 훨씬 더 효율적으로 연산을 처리하지만, 프로그램에서 MMX를 사용하도록 프로그램 되어 있지 않으면 MMX.. 2023. 6. 19.
[CS] 메모리 단편화 & 메모리 풀 메모리 단편화란, 메모리 공간에서 사용할 수 있는 전체 메모리의 공간은 충분하지만 각각의 공간이 너무 협소하여 더는 데이터의 공간을 할당하지 못하는 상태를 의미한다. 이는 내부 단편화와 외부 단편화로 나뉘는데 내부 단편화란 필요한 양보다 더 큰 공간이 할당되어 실질적으로 사용하지 않는 공간이 발생하는 경우를 의미하고, 외부 단편화는 할당 받은 메모리 공간들 사이에 작은 메모리들이 너무 많아 실질적으로 사용할 수 있는 메모리의 공간이 적어지는 경우를 의미한다. 가령 16byte의 공간을 할당했지만 실제로 사용하는 데이터는 8byte일 때, 8byte의 공간이 사용하지 못하는 상황이 발생한다. 이것이 내부 단편화이다. 또한 8byte를 할당하고 이어서 16byte를 할당했다. 이후 8byte의 공간을 해제한.. 2023. 5. 4.