Maya promo video解釋了GPU緩存如何影響用戶使應用程序運行更快。在像Cinder這樣的框架中,我們重新繪製了每幀更新中我們想要在場景中的所有地理操作,並將其發送到視頻卡。所以我想從程序員的角度來看待GPU緩存背後的東西? OpenGL/DirectX API是這種技術的後盾?如何在GPU內存中「緩存」我的網格?什麼是來自OpenGL/DirectX程序員的「GPU Cache」?
2
A
回答
1
首先,Maya使用的「GPU緩存」術語
可能指的是簡單存儲在卡上的圖形數據
指的是優化Maya中與設備無關的存儲和渲染的網格。對於卡製造商來說,「GPU緩存」的概念是不同的(在這種情況下,它意味着更像L1或L2 CPU緩存)。
要回答你的最後一個問題:使用OpenGL術語,你通常會創建頂點緩衝對象(VBO's)。這些將數據存儲在卡上。然後,當你想繪製時,你可以簡單地指示卡片使用這些緩衝區。
這將避免將主(CPU)內存中的網格數據複製到圖形(GPU)內存中的開銷。如果您需要多次繪製網格而不更改網格數據,則表現會更好。
2
就我所知,在OpenGL或DirectX中沒有辦法直接指定將要在GPU緩存上進行什麼,將不會被存儲和跟蹤。然而,爲了充分利用緩存,應該遵循和維護的方法。其中一些包括:
- 批,批,批。
- 將數據直接上傳到GPU
- 使網格中的頂點位置最大化的順序索引。
- 保持狀態更改爲最小值。
- 將着色器更改保持在最小值。
- 保持紋理更改爲最小值。
- 儘可能使用最大紋理壓縮。
- 使用紋理映射儘可能(最大化紋理像素採樣地點)
同樣重要的是要記住,沒有一個統一的GPU緩存。有多個(頂點,紋理等)獨立緩存。
來源:
OpenGL SuperBible - Memory Bandwidth and Vertices
相關問題
- 1. 什麼是Cache-Control:private?
- 2. 新手來GPU編程:學什麼?
- 3. 什麼是GPU的編程語言
- 4. 什麼是xdoclet? (從C程序員的角度來看)
- 5. 從程序員的角度來看fatwire是什麼?
- 6. Slim 3:什麼是HTTP Cache?
- 7. 什麼是Glassfish「osgi-cache」?
- 8. Dalvik和dalvik-cache是什麼?
- 9. 什麼是node-lru-cache?
- 10. 什麼是Post Cache替換?
- 11. 什麼使GPU程序不可搶佔?
- 12. 什麼是程序員參考書?
- 13. 來自C++程序員的Java問題
- 14. .sass-cache中的文件是什麼?
- 15. 什麼是perf cache事件的含義?
- 16. 什麼是pip的`--no-cache-dir`好?
- 17. jQuery中$ .cache的用途是什麼?
- 18. 對於不是優秀程序員的測試人員來說,什麼是好的編程語言?
- 19. 什麼是設置no-cache =「設置Cookie」
- 20. h = httplib2.Http('。cache')是什麼意思?
- 21. 'path/to/the/cache/dir'是什麼意思?
- 22. 需要什麼PC硬件來試用GPU編程?
- 23. F#GPU編程vs KDB處理數據,最快的是什麼?
- 24. 到底什麼是GPU合併通
- 25. 對於Tegra GPU需要什麼編程
- 26. 功能程序員的「道德」是什麼意思?
- 27. 什麼是ffmpeg程序員使用的lib Swscale?
- 28. 新程序員友好的語言是什麼?
- 29. emacs中的「程序員快捷方式」是什麼?
- 30. 新程序員學習ASP.net的最快方法是什麼?
這可能指的是優化三角形網格用於後-T&L緩存局部性。在過去,這個緩存是一個相對較小的FIFO隊列,並且爲了實現最佳利用率,按照條帶順序排序頂點是必需的。這是更復雜的建模軟件可以完成的事情,但這些日子幾乎沒有關係。 –