셰이더가 실제 GPU 하드웨어에 매핑되는 방법

셰이더가 실제 GPU 하드웨어에 매핑되는 방법

GPU와 GPU 프로그래밍을 더 잘 이해하기 위해 셰이더와 셰이더가 GPU에서 어떻게 구현되는지 더 잘 이해하고 싶습니다. 셰이더 프로그램과 GPU 코어 사이에 1:1 관계가 있습니까? 그렇다면 버텍스 셰이더 프로그램은 한 코어에서 실행되는 반면 프래그먼트 셰이더는 다른 코어에서 실행됩니까? 그러면 정점 셰이더 코어에서 조각 셰이더 코어로 데이터가 전달됩니까? 아니면 GPU의 각 개별 코어가 모든 셰이더와 전체 그래픽 파이프라인을 담당합니까? 즉, 하나의 GPU 코어에는 버텍스 셰이더, 테셀레이션 셰이더, 지오메트리 셰이더 등이 포함되어 있으며 각 코어는 최종 픽셀을 출력합니다. 내 정신적 그림을 확고히 하는 데 도움이 되는 모든 정보는 유용할 것입니다.

답변1

정확한 관계는 카드와 드라이버에 따라 다릅니다. 셰이더 프로그램은 일반 형식(예: OpenGL 또는 DirectX)에서 바이트코드를 사용하는 Java와 같은 언어에 대한 적시 컴파일과 같이 카드에서 직접 실행할 수 있는 형식으로 변환됩니다.

따라서 관계는 프로그램과 카드의 성격에 따라 달라집니다. 프로그램이 크고 복잡한 경우 카드에 여러 코어를 할당해야 할 수도 있지만 단일 코어가 여러 스트림 프로세서에서 셰이더의 많은 인스턴스를 실행할 가능성이 높습니다.

최신 카드는 작업을 동적으로 할당하므로 1:1 관계가 거의 없습니다. 각 코어에는 여러 스트림 프로세서가 있으므로 너무 복잡하지 않은 경우 여러 셰이더를 동시에 처리할 수 있습니다.

관련 정보