컴퓨트 커널

위키백과, 우리 모두의 백과사전.

컴퓨트 커널(compute kernel)은 컴퓨팅에서 처리량이 높은 가속기(예: 그래픽 처리 장치(GPU), 디지털 신호 처리 장치(DSP) 또는 FPGA)용으로 컴파일된 루틴으로, 기본 프로그램과 별도로 사용되지만(일반적으로 중앙 처리 장치에서 실행됨) 컴퓨트 셰이더(compute shader)라고도 하며 GPU의 정점 셰이더 및 픽셀 셰이더와 실행 단위를 공유하지만 한 클래스의 장치 또는 그래픽 API에서의 실행에만 국한되지는 않는다.

설명[편집]

컴퓨트 커널은 대략적으로 기존 언어로 알고리즘을 구현할 때 내부 루프(암묵적인 순차 작업이 없는 경우 제외) 또는 내부 반복기에 전달된 코드에 해당한다.

"OpenCL C"(OpenCL API로 관리됨)와 같은 별도의 프로그래밍 언어로 지정되거나, 셰이딩 언어(OpenGL과 같은 그래픽 API로 관리됨)로 작성된 "컴퓨트 셰이더"로 지정되거나, 애플리케이션 코드에 직접 내장될 수 있다. C++AMP의 경우처럼 고급 언어로 작성되었다.

벡터 처리[편집]

이 프로그래밍 패러다임은 벡터 프로세서에 잘 매핑된다. 배치 내 커널의 각 호출은 독립적이므로 데이터 병렬 실행이 가능하다는 가정이 있다. 그러나 일부 시나리오에서는 요소 간 동기화(상호 종속 작업을 위해)를 위해 원자성 작업이 사용될 수도 있다. 개별 호출에는 중첩되지 않는 가정이 존중되는 한 버퍼 데이터의 임의 주소 지정(분산 수집 작업 포함)이 수행될 수 있는 인덱스(1개 이상의 차원)가 제공된다.

벌컨 API[편집]

벌컨 API는 언어 독립적이고 기계 독립적인 방식으로 그래픽 셰이더와 컴퓨트 커널을 모두 설명하기 위한 중간 SPIR-V 표현을 제공한다. 목적은 통합 메모리 아키텍처 및 이기종 시스템 아키텍처와 같은 하드웨어 개발에 맞춰 언어 진화를 촉진하고 GPU 컴퓨트 기능을 활용할 수 있는 보다 자연스러운 기능을 제공하는 것이다. 이를 통해 CPU와 GPU 간의 긴밀한 협력이 가능해진다.

같이 보기[편집]