Entscheidungshilfe

Visionalgorithmen für CPU und FPGA

 Die Entwicklung von Algorithmen für FPGA-Zielsysteme mit einem konfigurationsbasierten Tool mit integriertem Leistungsvergleich beschleunigt den Entwicklungsablauf. (Bild: National Instruments Germany GmbH)

Bild 2 | Die Entwicklung von Algorithmen für FPGA-Zielsysteme mit einem konfigurationsbasierten Tool mit integriertem Leistungsvergleich beschleunigt den Entwicklungsablauf. (Bild: National Instruments Germany GmbH)

Jetzt steht die Auswahl der passenden Algorithmen an. Hierfür muss zunächst die Funktionsweise von CPUs und FPGAs näher betrachtet werden. Zur Veranschaulichung dient hier ein theoretischer Algorithmus, der dieselben vier Verarbeitungsschritte einmal auf einer CPU und einmal auf einem FPGA durchführt. Eine CPU arbeitet sequenziell, d.h., dass eine Operation erst vollständig beendet sein muss, bevor der nächste Vorgang gestartet wird. In diesem Beispiel benötigt jeder der vier Verarbeitungsschritte 6ms für die Ausführung, sodass die Gesamtverarbeitungszeit auf der CPU 24ms beträgt. FPGAs hingegen zeichnen sich durch eine hohe Parallelität aus, sodass jeder der vier Verarbeitungsschritte zur selben Zeit an unterschiedlichen Bildelementen durchgeführt werden kann. Damit liegt die Verarbeitungszeit für das erste Bildelement bei nur 2ms und für das gesamte Bild bei 4ms, woraus sich eine Gesamtverarbeitungszeit von 6ms ergibt. Dies ist eine deutliche Steigerung gegenüber der Verarbeitung auf der CPU. Selbst beim FPGA-basierten Co-Processing, bei dem das Bild zur CPU und wieder zurück gesendet wird, liegt die Gesamtverarbeitungszeit, einschließlich der Übertragungszeit, immer noch deutlich unter der einer rein CPU-basierten Verarbeitung. Ein reales Beispiel wäre die Vorbereitung eines Bildes für die Teilchenzählung. Zur Schärfung des Bildes wird zunächst ein Faltungsfilter angewandt. Anschließend wird durch Anwendung eines Schwellenwerts ein Binärbild erzeugt. Durch die Konvertierung eines 8bit-s/w-Bildes in ein Binärbild werden nicht nur die Bilddaten reduziert, das Bild wird auch für die nötigen morphologischen Bildverfahren vorbereitet. Als letzter Schritt wird das Bild im Rahmen der Morphologie der Schließen-Operation unterzogen, um Löcher aus den Segmenten zu entfernen. Wird dieser Algorithmus nur auf der CPU ausgeführt, muss zuerst die Faltungsoperation auf dem kompletten Bild ablaufen, bevor als nächster Schritt dann das Schwellenwertverfahren usw. ausgeführt werden kann. Mit dem Vision Development Module für LabView und dem auf dem All-Programmable SoC (System on a Chip) Zynq-7020 von Xilinx basierenden CompactRIO-Controller cRIO-9068 liegt die Gesamtverarbeitungsdauer hier bei 166,7ms. Wird der gleiche Algorithmus auf einem FPGA ausgeführt, können alle Verarbeitungsschritte parallel ablaufen. Somit dauert die gesamte Verarbeitung auf dem FPGA nur 8ms, wobei auch die DMA-Übertragungszeit zwischen CPU und FPGA enthalten ist. In manchen Fällen muss das verarbeitete Bild möglicherweise für andere Anwendungsbereiche zurück an die CPU gesendet werden. Dadurch dauert der gesamte Prozess etwa 8,5ms. Der Algorithmus wird auf dem FPGA also fast 20-mal schneller als auf der CPU ausgeführt. Das legt natürlich die Frage nahe, warum nicht einfach jeder Algortihmus auf dem FPGA ausgeführt wird. Aber wie so oft, ist auch die FPGA-basierte Verarbeitung mit gewissen Einschränkungen verbunden. Da wären z.B. Taktraten. FPGA-Taktraten bewegen sich in der Regel zwischen 100 und 200MHz und liegen damit deutlich unter denen von CPUs, die ohne weiteres 3GHz oder mehr erreichen. Bei Anwendungen, in denen Bildverarbeitungsalgorithmen iterativ ablaufen müssen und die keine Parallelität benötigen, ermöglicht eine CPU daher eine schnellere Verarbeitung. Im vorangegangenen Beispiel wurde der Algorithmus auf dem FPGA mit der 20-fachen Geschwindigkeit ausgeführt. Da die Verarbeitungsschritte an einzelnen Bildelementen oder kleineren Gruppen von Bildelementen parallel ausgeführt werden, profitiert der Algorithmus von der parallelen Verarbeitung des FPGAs. Bei Algorithmen für den Musterabgleich oder OCR, bei denen das gesamte Bild auf einmal analysiert werden muss, liegt der FPGA bei der Verarbeitungsleistung jedoch nicht mehr vorne. Das liegt zum einen daran, dass keine parallele Verarbeitung stattfindet und zum anderen am enormen Speicherbedarf, der für die Analyse eines vollständigen Bildes im Gegensatz zu einer Binärmatrix notwendig ist. FPGAs haben zwar auch direkten Zugriff auf interne und ggf. auch externe Speicherressourcen, allerdings in deutlich geringerem Maße als CPUs oder als für diese Verarbeitungsschritte erforderlich.

Seiten: 1 2 3Auf einer Seite lesen

National Instruments Germany GmbH

Das könnte Sie auch Interessieren