這可能是一件顯而易見的事情,但我不知道,因爲我對裝配和操作系統級別的東西很陌生,所以對我一無所知。WebGL或CUDA代碼如何實際轉換爲GPU指令?
當你在WebGL或CUDA中編寫着色器等時,代碼實際上是翻譯成GPU指令?
我想了解如何編寫優化圖形渲染的超級低級代碼,以便在硬件/軟件邊界準確查看GPU指令的執行方式。
我知道,例如,對於CUDA,您購買其圖形卡(GPU),該圖形卡以某種方式實現以優化圖形操作。但是,如果沒有C,你怎麼編程(在一般意義上)呢?
這個問題的原因是因爲在previous question,我覺得你不能直接使用程序集編程GPU,所以我有點困惑。
如果你看看像CUDA by example文檔,這一切都只是C代碼(雖然他們有事情像cudaMalloc
和cudaFree
,我不知道是什麼在做幕後)。但是在引擎蓋下,那C必須被編譯成彙編或者至少是機器代碼什麼的,對嗎?如果是這樣,訪問GPU如何?
基本上我沒有看到如何在C或GLSL以下的水平如何指示GPU本身執行操作。你能解釋一下嗎?是否有一些程序集演示了它如何工作,或者類似的東西?或者,除了x86上的16個「CPU寄存器」之外,還有另一套「GPU寄存器」嗎?
openGL SE GLSL和webGL着色語言有點相似,它們只是翻譯不兼容的東西,並將它傳遞給SE編譯器 –
我從未見過任何'GPU Assembly'代碼,但它很清楚,編譯器(用於圖形驅動程序中包含的OpenGL + GLSL)爲您的特定設備生成二進制機器碼。這個二進制代碼可以在設備上執行,是的,'GPU寄存器'確實存在。 – dari
谷歌搜索「cuda在線文檔」可以獲得CUDA生態系統的完整文檔,包括它們的編譯器和編譯器API,它們使用的中間虛擬機指令集以及二進制後端工具(包括ELF實用程序和反彙編程序)的文檔。我只是不相信你已經努力回答在發佈之前提出的任何問題..... – talonmies