2013-02-27 97 views
4

我似乎無法找到任何有關如何檢查RenderScript是否實際上並行代碼的文檔。我想知道CPU或GPU是否正在使用以及調度的線程數量。確定Renderscript是否在CPU/GPU和線程數上運行

我發現的唯一的事情是這樣的錯誤報告: http://code.google.com/p/android/issues/detail?id=28662

筆者提到,把rsForEach腳本導致它,它被指向下面的調試輸出連載:

01-02 00:21:59.960: D/RenderScript(1256): = 0 0x0 
01-02 00:21:59.976: D/RenderScript(1256): = 1 0x1 

我試圖在LogCat中搜索一個類似的字符串,但我一直未能找到匹配。

有什麼想法?

更新: 其實我似乎已經想通了。看來我的LogCat foo不如它應該的那麼好。我用我的應用程序信息過濾調試輸出,發現這樣一行:

02-26 22:30:05.657: V/RenderScript(26113): rsContextCreate dev=0x5cec0458 
02-26 22:30:05.735: V/RenderScript(26113): 0x5d9f63b8 Launching thread(s), CPUs 2 

回答

2

這隻會告訴你有多少的CPU都可以使用。這並不表示有多少線程或正在使用哪個處理器。通過設計RS避免暴露此信息

通常RS將使用所有可用的CPU核心,除非您調用諸如rsg *或時間函數的「串行」函數。至於什麼樣的標準會導致腳本從GPU被分配到CPU,這取決於每個供應商GPU的能力。

你引用的錯誤已被固定在4.1

2

我遇到了同樣的問題,當我與RS的工作。我使用Nexus 5進行測試。我發現RS的初始啓動利用了CPU而不是使用GPU,這已經使用Trepn 5.0s應用程序進行了驗證。後來我發現Nexus-5 GPU不支持雙精度(Link to Adreno 330),所以默認情況下它將它連接到CPU上。爲了克服這個,我使用了#pragma rs_fp_relaxed我的rs文件的頂部以及頭部聲明。

因此,如果您嚴格希望將其移植到GPU上,那麼可能是找出您的移動GPU規格並嘗試使用Trepn 5.0s或同等應用程序來測試GPU利用率的最佳方法。截至目前RS不公開線程級細節,但在實現過程中,我們可以使用我們的根的內核的x和y參數 - 內核作爲線程索引。

+0

當RS開始在GPU上運行時,LogCat輸出中是否有任何明顯的變化?我正在嘗試使用Mali GPU(Mali似乎沒有提供像Trepn這樣的GPU分析工具,而Trepn似乎也沒有認出Mali GPU),並且LogCat輸出保持不變,無論我使用的是什麼'rs_fp_xxx'編譯指示。我甚至試過按照http://stackoverflow.com/questions/13917106/where-is-the-filterscript-documentation-and-how-can-i-use-it中的建議嘗試'FilterScript',但無濟於事。 – 2016-03-05 02:23:11

相關問題