為了更好地理解 GPU 和 GPU 編程,我希望更好地了解著色器以及它們如何在 GPU 上實現。著色器程式和 GPU 核心之間是否存在 1 對 1 的關係?那麼頂點著色器程式是否在一個核心上運行,而片段著色器在另一個核心上運行呢?那麼資料是從頂點著色器核心傳遞到片段著色器核心嗎?或者 GPU 上的每個單獨核心負責所有著色器和整個圖形管道?這意味著一個 GPU 核心包含頂點著色器、曲面細分著色器、幾何著色器等,每個核心將輸出一個最終像素。任何有助於鞏固我的心理圖景的資訊都會很有用。
答案1
確切的關係取決於卡片和驅動程式。著色器程式從通用形式(例如 OpenGL 或 DirectX)轉換為卡片可以直接運行的東西,有點像是使用字節碼的 Java 等語言的即時編譯。
因此,這種關係取決於程序和卡的性質。如果程式龐大且複雜,則卡片可能需要分配多個核心,但更有可能的是單一核心將在多個流處理器上運行著色器的許多實例。
現代卡片動態分配工作,因此很少有 1:1 的關係。每個核心都有多個流處理器,因此可以同時處理多個著色器(如果它們不太複雜)。