2016-07-31 5 views
1

In render nenne ich einen Kernel ähnlicheOverlapping Berechnung und Kommunikation in render

foo.forEach_bar(out_array); 

und Übertragungsparameter auf eine Zuteilung wie folgt:

in_array.copyFromUnchecked(array); 

ich ein arbeite ein Programm, in dem ich nenne mehrere verschiedene Kernel. Ist es möglich, die Datenübertragung für einen Kernel mit der Berechnung des vorherigen Kernels zu überlappen? (Das heißt, während die GPU den vorherigen Kernel verarbeitet, schaffen wir es, die Daten für den nächsten Kernel zu übertragen)

Antwort

0

Wenn Sie mit Kernen über eine Zuweisung arbeiten, können Sie einfach die Ausgabezuweisung eines Kernels als Eingabe verwenden ein anderer Kernel.

Wenn Sie nacheinander mehrere Kernel aufrufen, müssen Sie sich keine Gedanken darüber machen, dass sie sich "überlappen", weil es sich nicht um eine "echte" Asynchronität handelt. Sie werden nacheinander ausgeführt, so dass Sie eine vorherige Zuweisung (die Sie beispielsweise als Ausgang eines Kernels verwenden) einfach als Eingabe für einen neuen Kernel verwenden können.

Ihr Konzept der "Überlappung" ist nicht genau richtig: da Zuweisungen im RAM-Speicher gespeichert sind, gehen sie nirgendwo daneben. Dies bedeutet, dass ein anderer Kernel auf dieselbe Speicherzuweisung zugreifen kann, ohne dass sein Inhalt irgendwo anders übertragen werden muss.

Referenz: RenderScript: parallel computing on Android, the easy way

+0

Es wird möglicherweise überlappen, aufgrund der Puffer zwischen GPU und nicht-GPU-Speicher bewegt. Es wird nicht immer vollständig geteilt. Die wirkliche Antwort ist jedoch, dass die Berechnung/das Kopieren überlappt ist, solange die Puffer nicht mehr verwendet werden (dh Sie können nicht gleichzeitig in eine Zuordnung in einem Kernel schreiben, wenn Sie sie wieder in den Java-Speicher einlesen Kopieren nach). –

+0

Vielen Dank, Stephen, für die Bekanntmachung über die nicht geteilten Architekturen. Können Sie ein Beispiel für mobile Geräte mit einer nicht gemeinsamen Architektur geben? – cmaster11

+0

Ich glaube leider nicht, dass ich das darf. Es tut uns leid. –