cuda shader

Nvidia CUDA(計算統一設備體系結構)是一種專用的編程模型和並行計算平臺。每個Nvidia GPU都包含CUDA內核。CUDA使得人們可以用GPU中的許多計算核心來執行通用數學計算。
大多數情況下,統一着色體系結構硬件由一系列計算單元和某種形式的動態調度 / 負載平衡系統組成,以確保所有計算單元保持儘可能頻繁地工作。

NVIDIA GPU中相當於“ CPU內核”(OpenCL中定義爲計算單元)的是SM流多處理器。每個流多處理器有一個包含8個流處理器的向量單元。SP是NVIDIA所稱的“ CUDA核心”,儘管由於這些SM是SIMD架構而頗具誤導性。
cuda shader

比如GTX 260有24個SM,每個SM有8個SP芯片上,總共有192個SP,NVIDIA將其稱爲192個cuda內核。從OpenCL的角度來看,從SM的數量來看,有24個計算單元。
“ cuda core”是向量單元內部的一個ALU。

NVIDIA將單個SP稱爲單個處理核心。 它具有兩個ALU和一個FPU的完全流水線結構,是面向單一問題的有序微處理器。SP沒有任何緩存,將大部分時間都花在處理像素或頂點數據上,因此除了處理大量的數學運算外,它在其他任何方面都不是特別出色。
cuda shader

CUDA內核是類似於計算機中處理器的並行處理器,可以是雙核或四核處理器。但是,Nvidia GPU可能具有數千個內核。這些內核負責各種任務,這些任務允許內核的數量直接與GPU的速度和功能相關。
由於CUDA內核負責處理通過GPU傳輸的所有數據,因此,在加載人物和風景時,這些內核可以處理圖形之類的事情。

計算單元是GPU核心,而不是着色器或cuda核心。可用openCL查詢。所謂的着色器或CUDA內核只是GPU內核的一部分,它不能獨立運行,而是依靠GPU內核進行操作。例如,給一個數組乘以另一個數組,GPU核心將接收它並劃分元素以提供給每個着色器(cuda核心)以執行工作。因此,着色器(CUDA核心)只是處理器的一個組成部分。
GPU由一堆處理器內核組成,這些處理器內核在計算機術語中稱爲計算單元。每個核心/計算單元都有一堆着色器,TMU和ROP。
在GPU中,包含了着色器的一個核心被稱爲cuda核心,Cuda核心是着色器,流處理器是着色器。
自從GPU使用統一的體系結構以來,GPU內核包含更多通用單元。 這些單元通常稱爲着色器。 每個着色器基本上就像較大的處理器中的某種微型處理器部分(例如x86 CPU中的SSE單元)一樣,可以執行某些任務,而不是全部。
GPU具有內核,內核本身具有許多着色器。每個GPU內核都包含一個解碼器,用於解碼內核本身的指令。 然後根據工作本身將工作負載發送到核心中的各個不同單元。 每個GPU內核均包含着色器(nvidia稱其爲cuda內核,AMD稱其爲流處理器),TMU,ROP,並且在某些GPU中還具有其他單元。 每個單元對圖形都有貢獻,因此在特定圖形設置下具有更多特定單元的GPU更快。


着色器如何映射到實際的GPU硬件?
着色器程序與GPU內核之間是否存在一對一的關係?那麼,頂點着色器程序是否在一個內核上運行,而片段着色器在另一個內核上運行?然後,數據是否從頂點着色器核心傳遞到片段着色器核心?還是GPU上的每個內核都負責所有着色器和整個圖形管線?
確切的關係取決於卡和驅動程序。着色器程序從通用形式(例如OpenGL或DirectX)轉換爲卡可以直接運行的形式,類似於對使用字節碼的Java等語言的即時編譯。

因此,這種關係取決於程序和卡的性質。如果程序又大又複雜,則卡可能需要分配多個內核,但是單個內核很可能在多個流處理器上運行着色器的許多實例。

現代卡是動態分配工作的,因此很少有1:1關係。每個內核具有多個流處理器,因此如果它們不太複雜,則可以同時處理多個着色器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章