Wie nutzen Android-Programme NEON SIMD?

8

Ich habe etwas über die CPU-Funktionen gelernt und bin über NEON gestolpert.

Nach dem, was ich gelesen habe, sieht es so aus, als ob NEON eine spezielle Programmierung benötigt, aber das ist völlig richtig, oder finden die CPUs, die diese Funktion haben, immer noch Möglichkeiten, Medienprozesse für einige Anwendungen zu beschleunigen und zu beschleunigen es gibt keinen spezifischen Code dafür?

    
Tam 17.07.2012, 02:05
quelle

1 Antwort

9

Es gibt eine Reihe von Möglichkeiten, die NEON-Anweisungen zu verwenden. Einige von ihnen sind:

  • Bibliothekare. Es ist eine gute Chance, dass Ihr Memcpy mit NEON handgefertigt wird. Musik- / Videowiedergabe-Bibliotheken in der API verwenden NEON und / oder GPU zur Beschleunigung. Aso, es gibt Third-Pary-Bibliotheken, die es benutzen. FastCV von Qualcomm ist ein gutes Beispiel
  • Vom Compiler ausgegebene Anweisungen. Einige Compiler mit den richtigen Compileroptionen geben NEON-Anweisungen aus. Die meisten Compiler werden Neon für Float-Operationen verwenden, aber nicht vektorisieren. Sie werden das Gerät als einzelne Dateneinheit verwenden, nur weil es schnell und bequem ist. Es gibt einige Vektorisierungsfähigkeiten im GCC- und ARM-Compiler, aber sie sind in Umfang und Ergebnissen wirklich begrenzt.
  • Hand-codiertes C mit intrinsics Ссылка Es ist wahrscheinlich der beste Weg zu bekommen begann in der NEON-Welt.
  • Handcodierter Assembler. Dies scheint das Beste zu sein, wenn Sie maximale Leistung erreichen wollen. Es erfordert auch eine Menge Aufwand und CS-Kenntnisse.

  • Und zu guter Letzt können Sie NEON verwenden, indem Sie einfach eine App herunterladen, die es verwendet. Dein Lieblings-Musikplayer nutzt wahrscheinlich die NEON-Einheit in deinem Smartphone:)

Fazit: NEON hat viele Verwendungen, aber es wird nur verwendet, wenn der Code speziell NEON-Anweisungen enthält. Technisch, wie @pst sagte, muss es durch ein Stück Code anvisiert werden .

    
Sam 17.07.2012, 06:19
quelle

Tags und Links