Ich habe ein paar grundlegende Algorithmen (DCT / IDCT und einige andere) portiert und funktioniert (wie erwartet zumindest funktional) auf Nexus 10. Da diese Algorithmen erste Implementierungen sind, ist ihre Ausführungszeit derzeit in Sekunden zu laufen, 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 laufen. Zum Beispiel gibt es in meiner Anwendung eine Scrollview für Bilder und jede Aktivität in dieser Ansicht, im Wesentlichen schiebt die Ausführung von rendercript CPU. Wenn es keine Aktivität gibt, läuft der Algorithmus auf der GPU. Ich sehe das live über ARM-DS5 Mali / A15 Spuren.
Diese Situation stellt sich als Albtraum des Debuggens dar, da das Leistungsdelta, wenn der Algorithmus auf CPU (Dual Core) versus GPU (Mali) läuft, in der Größenordnung von 2 Sekunden liegt, was die Leistungsverbesserungen sehr schwierig macht das mache ich mit meinem Algorithmuscode.
Gibt es eine Möglichkeit, dieses Problem zu umgehen? Eine mögliche Lösung besteht darin, zumindest eine Debug-Konfigurationsmöglichkeit zu haben, um den Zieltyp (ARM, GPU) für den Render-Code zu wählen?
Dadurch wird die Ausführung der Ausführung in der Referenz-CPU-Implementierung erzwungen. Es gibt kein Äquivalent, um Dinge zur GPU zu zwingen, da viele Bedingungen dies zur Laufzeit unmöglich machen könnten.
Auch nützlich ist:
%Vor%Dies begrenzt die Anzahl der zu verwendenden CPU-Kerne auf 1 (oder einen anderen Wert, den Sie für den CPU-Zähler des Geräts festlegen)
Tags und Links android performance renderscript