有沒有簡單的方法可以讓我知道一些代碼是在GPU而不是CPU中執行的?如何知道使用GPU或CPU執行代碼?
回答
我認爲你需要弄清楚CPU和GPU之間工作分離的概念。如果您編寫代碼並使用不針對GPU執行的常規編譯器進行編譯,代碼將始終執行CPU。
在主程序中所有對OpenGL或DirectX函數的調用都是在CPU上執行的,沒有「神奇」的翻譯層。然而,一些這些調用使GPU執行某些操作,如繪製三角形。
CUDA和OpenCL是針對數據並行執行體系結構的語言。 GPU就是這樣的架構。但是CUDA和OpenCL代碼需要一些主機程序,而這些程序又將在CPU上執行。可編程着色器(HLSL,GLSL)也是如此。
所以:程序的主機部分(設置工作環境,發出渲染調用或GPU執行)將在CPU上運行。在GPU上運行的代碼是在單獨的編譯單元(即上傳到OpenGL的GLSL着色器代碼,用OpenCL/CUDA編譯器編譯的OpenCL/CUDA代碼)中編譯的。
glsl(.sh)中的所有代碼都在GPU中運行?如果我必須做更復雜的事情,比如高斯/中值濾波,該怎麼辦?如果我寫:float a = 0.5 * 0.7;這次被執行多少次?每像素一個?我怎樣才能控制並行和somehing我只是想運行單向?對不起,我是並行執行編程的新手。 – flankechen 2013-09-17 02:58:02
正如datenwolf所說,你編寫的任何通過標準編譯器(gcc等)編譯的代碼都將在CPU上運行。在GPU上運行的程序稱爲着色器。着色器中的變量類型與C/C++程序不同,語法也更加嚴格和更加有限。
舊的圖形應用程序使用兩種類型的着色器:頂點和片段。頂點着色器在發送給渲染器的任何幾何頂點上運行。片段着色器將接收來自頂點着色器的輸出(在幾何面上插值),並且將對將被繪製到屏幕的幾何圖形的每個像素或片段進行操作。
現代圖形已經引入了General Purpose GPU Programming的想法。 OpenGL的幾何着色器和Nvidia的CUDA可以在GPU上執行通用編程。
總結:編譯的着色器在GPU上運行,編譯的C/C++在CPU上運行。
預着色器時代如何?在GPU上運行什麼代碼? – 2015-03-17 09:39:20
預着色器時代也是預先編程的GPU時代,因此GPU上的用戶編寫的代碼無法在其上運行。 – kevintodisco 2015-03-17 16:11:59
取決於您使用的操作系統以及OpenGL/OpenCL/other,您可以使用系統分析器爲您提供此信息。系統分析器是跟蹤系統範圍活動的軟件,在完成跟蹤後以可讀形式呈現。 例如,對於Windows,可以使用Vtune,它同時監視CPU和GPU。
希望這會有所幫助。
- 1. 串行CPU與GPU代碼
- 2. 從託管代碼執行CPU/GPU指令
- 3. Mesa3d CPU或GPU?
- 4. 如何編寫使用GPU執行計算的代碼?
- 5. 確保Python代碼是否在GPU或CPU上運行
- 6. 我想知道如何執行這個下面的python代碼?
- 7. CPU和GPU相同的代碼庫
- 8. 爲什麼Opencv GPU代碼比CPU慢?
- 9. 如何使用OpenCL從CPU到GPU執行並行傳輸內存?
- 10. 需要知道如何使代碼更
- 11. 測試theano代碼,如何使用GPU?
- 12. Python的Tensorflow運行在GPU代替CPU
- 13. 在CUDA/CPU上執行代碼
- 14. onPageChangeListener()如何知道代碼的用途?
- 15. 如何在GPU上運行代碼?
- 16. Tensorflow代碼不使用GPU
- 17. 如何使用此代碼執行@ Html.DropDownListFor?
- 18. 如何在Python中知道每分鐘執行一行代碼的次數?
- 19. 如何知道哪些是正在執行的代碼行當接收
- 20. 不知道如何使一行代碼在python中工作
- 21. 如何在所有CPU上執行一段內核代碼?
- 22. 如何使用CUDA在GPU上運行MATLAB代碼?
- 23. 如何知道Android的GPU使用情況?
- 24. 如何知道GPU計算在OpenCv4Android使用本地
- 25. PowerShell命令或代碼知道腳本執行是否已停止
- 26. 代碼執行類或oops
- 27. 如何使屬性動態(未知,直到代碼執行)?
- 28. 知道的執行時間,並使用Perl或shell腳本
- 29. Python:如何知道OS/CPU是64位
- 30. CPU如何知道PCI地址空間
嗯,它不是很確定,但對於Windows [「Process Explorer」](http://technet.microsoft.com/zh-cn/sysinternals/bb896653)有一個GPU使用情況圖。所以要麼使用它,要麼找出它使用的API。 – PeterT 2012-02-05 14:59:29
您可以更具體地瞭解您嘗試在GPU上運行的「代碼」類型嗎?您列出3種不同的API,所有這些API都在GPU上運行「代碼」,使用3種完全不同的方式來執行此操作。 – 2012-02-05 15:42:04