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


1

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

답변:


0

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.