Erzwingen der Ausführung von Renderscript auf CPU oder GPU (mindestens zur Leistungsoptimierung)

Ich habe ein paarBasic Algorithmen (DCT / IDCT und einige andere), die auf Nexus 10 portiert sind und (zumindest funktionell wie erwartet) funktionieren. Da es sich bei diesen Algorithmen um erste Implementierungen handelt, läuft ihre Ausführungszeit derzeit in Sekunden, was verständlich ist.

Angesichts der Architektur von Renderscript sehe ich jedoch, dass diese Algorithmen abhängig von anderen parallelen Anwendungsaktivitäten entweder auf CPU oder GPU ausgeführt werden. In meiner Anwendung gibt es beispielsweise eine Bildlaufansicht für Bilder, und bei jeder Aktivität in dieser Ansicht wird die Render-Skript-Ausführung im Wesentlichen an die CPU übertragen. Wenn keine Aktivität vorhanden ist, wird der Algorithmus auf der GPU ausgeführt. Ich sehe das live über ARM-DS5 Mali / A15 Spuren.

Diese Situation stellt sich als Debug- / Optimierungs-Albtraum dar, da das Leistungsdelta, wenn der Algorithmus auf CPU (Dual Core) gegenüber GPU (Mali) ausgeführt wird, in der Größenordnung von 2 Sekunden liegt, was es sehr schwierig macht, die Leistungsverbesserungen zu messen, die ich bin auf meinem Algorithmus-Code zu tun.

Gibt es eine Möglichkeit, dieses Problem zu umgehen? Eine mögliche Lösung besteht darin, zumindest eine Debug-Konfigurationsoption zu haben, um den Zieltyp (ARM, GPU) für den RenderScript-Code zu wählen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage