Bildverarbeitungskomponenten GPU schlägt CPU Bildverarbeitung auf der Grafikkarte – Geschwindigkeit enorm gesteigert Den technischen Vergleich selbst mit den schnellsten am Markt verfügbaren, in der nicht komplett zur Verfügung: Die Auslagerung der Algorithmik auf den GPU-Baustein führt zu einer Verzögerung des Datenstroms von der Bildaufnahme bis zur Verarbeitung der Daten. Trotz dieses Effekts sprechen verschiedene Untersuchungen bei rechenintensiven Operationen von einem Performance-Zuwachs um den Faktor 2 bis 10 beim Einsatz der GPU statt der CPU, wobei diese dann zudem parallel für andere Aufgaben genutzt werden kann Dass diese Technologie erst seit Kurzem für die Bildverarbeitung nutzbar ist, hat zwei wesentliche Gründe. Zum einen enthielten Grafikkarten bis vor kurzer Zeit mehrere Es gibt viele Wege, die Verarbeitungsgeschwindigkeiten in der Bildverarbeitung zu steigern. Nun gibt es eine neue Möglichkeit: Teile der Verarbeitung können auf die Grafikkarte des PC-Systems ausgelagert werden, was die Bildverarbeitungs-Geschwindigkeit um bis zu Faktor 10 steigert. Die Abarbeitung von Bildverarbeitungs-Algorithmen ist meist sehr rechenaufwändig. In vielen Fällen reicht die ständig zunehmende Performance der in leistungsfähigen PCs eingesetzten CPUs jedoch aus, um die Aufgaben in der vorgegebenen Zeit zu bewältigen. Dennoch sind die führenden Hersteller von Hard- und Software für die Bildverarbeitung ständig auf der Suche nach neuen, noch schnelleren Wegen, um sich auch für solche Geschwindigkeits-Anforderungen zu rüsten, die derzeit noch unerreichbar scheinen. Zu den üblichen Methoden der Geschwindigkeitssteigerung in der Bildverarbeitung zählen die Verteilung der Rechenaufgaben auf mehrere Dual- und Quad-Prozessoren oder auch der Einsatz von spezialisierten FPGAs. Jede dieser Technologien 48 IndustrialVISION 2/2007 hat ihre Vor- und Nachteile, doch eines ist allen gemeinsam: Sie nutzen nicht den in der Regel schnellsten vorhandenen Prozessor im System, um die BildverarbeitungsAlgorithmen abzuarbeiten: den Grafik-Prozessor der Grafikkarte, auch bekannt als GPU (Graphical Processing Unit). Diese Rennmaschinen unter den Prozessoren haben in der Vergangenheit eine unglaubliche Entwicklung hinter sich gebracht. Getrieben wurde dies vor allem durch die Spiele-Industrie, wo die Anforderungen an die grafische Darstellung von Spielszenen und Bewegungen sehr stark zugenommen haben. Millionenfach verkaufte Spielekonsolen sorgten für die nötige Nachfrage und hohen Stückzahlen sowie die zugehörigen Gewinne, um die Entwicklung der Grafik-Bausteine weiter voranzutreiben. Davon profitieren nun auch andere Industriezweige wie z. B. die Bildverarbeitung. Die Nase vorn Den technischen Vergleich selbst mit den schnellsten am Markt verfügbaren, in der Bildverarbeitung gebräuchlichen FPGAs entscheiden Grafik-Prozessoren in einigen Kriterien eindeutig für sich. So sind sie um Faktoren im Bereich von 10 bis 20 höher getaktet als übliche FPGAs und erreichen so in Verbindung mit den größeren Speichermöglichkeiten Datendurchsätze, die bis zu 500 mal höher sein können als bei üblichen FPGAs. Dieser Geschwindigkeitszuwachs steht dem Bildverarbeitungs-Anwender jedoch „So werden alle Prozessoren im System optimal genutzt“ Martin Kersting Prozessoren für verschiedene Aufgaben. Mit der Neuentwicklung von Grafik-Prozessoren wie z. B. dem GeForce 8800 von Nvidia oder ähnlichen Produkten z. B. des Herstellers ATI hat sich dies geändert: Ein Teil der 681 Mio. Transistoren des GeForce 8800-Prozessors kann dynamisch für Operationen wie Geometrie- oder Pixel-Berechnungen allokiert werden. Zum anderen erlaubt die PCIe-Anbindung einen schnellen Datentransfer zwischen Host und VGA-Karte. „Die Architektur eines Grafik-Bausteins ist immer sehr komplex“, erklärt Martin Kersting, Leiter der Entwicklung bei Stemmer Imaging. „Die DirectX-API und der High Level Shader Language (HLSL)-Compiler von Microsoft zusammen mit einer Handvoll Funktionen in unserer Software-Bibliothek Martin Kersting, Leiter der Entwicklung bei Stemmer Imaging Bildverarbeitungskomponenten Common Vision Blox versetzt Entwickler von Bildverarbeitungs-Software jedoch in die Lage, Bilder zwischen Host und GPU auszutauschen und somit alle Prozessoren im System optimal zu nutzen.“ Geschwindigkeit mal fünf Wie bereits angesprochen verursacht der Datenaustausch zwischen VGA-Karte und GPU eine gewisse Verzögerung zwischen der Bildaufnahme und der Verarbeitung der Daten auf der Grafikkarte. „Die geschickte Nutzung der GPU-Bildverarbeitung kann dennoch dazu führen, dass man selbst bei Anwendungen mit extrem hohem Datendurchsatz ohne Spezial-Hardware auskommt“, beschreibt Kersting den Vorteil der Technologie. Um dem Bildverarbeitungs-Entwickler die Vorteile der GPU-Bildverarbeitung auf möglichst effektive Weise zu erschließen, haben die Entwickler des Puchheimer Bildverarbeitungs-Spezialisten diese Möglichkeit nun in die Software-Bibliothek Common Vision Blox (CVB) des Unternehmens integriert. „Wir haben dazu über 40 neue Funktionen in CVB aufgenommen, die aus einer CVB-Applikation heraus aufgerufen werden können“, so Kersting. Derzeit umfassen diese Funktionen u.a. Im direkten Vergleich zwischen einem 2,4 GHz Intel Core 2 Duo-Prozessor und einer Nvidia 8800Grafikkarte erledigte die GPU die Bildverarbeitungs-Aufgabe rund fünf mal schneller Vergleich FPGA - GPU FPGA GPU Anzahl Prozessoren Hardware-codiert 128 Taktfrequenz 100 MHz** 1,35 GHz Speicherbreite ca. 100 Bit 384 Bit Speichertakt - 900 MHz On-board-Speicher 256 MByte*** >512 Mbyte Datenrate 220 MByte*** 87 GByte/s Skalierbar Mit proprietärem Bus Ja, SLI Asynchrone Bearbeitung Ja Ja Daten-Verzögerung 0 Bilder bis zu 4 Bilder * NVIDIA G8000-Serie, ** für eine 3x3-Filterung XILINX Virtex II, *** gebräuchliche FPGA-Hardware Aufgaben wie die Bildfilterung, Punkt-Operationen zwischen zwei Bildern, die Parallelverarbeitung von vier Monochrom-Bildern, Transformationen vom RGB- ins HSIsowie vom Bayer- ins RGB-Format, so genannte Flat Field-Korrekturen sowie Bild-Rotationen und -Skalierungen. Welcher Geschwindigkeitszuwachs mit der neuen Technologie möglich ist, haben Kersting und sein Team inzwischen mehrfach getestet. So wurden Bilder von einer monochromen CCIR-Kamera vom Typ JAI A11 an einem PC-basierten System mit ei- ner Nvidia 8800 Grafikkarte auf die Größe von 2k x 2k Pixel umgerechnet und auf dem PC-Monitor angezeigt. Gleichzeitig rechnete der Grafik-Prozessor mit 30 Bildern/s einen 3 x 3 Sobel-Filter auf dem Bild. Im direkten Vergleich zwischen einem 2,4 GHz Intel Core 2 Duo-Prozessor und der Nvidia 8800 rechneten beide Aufbauten einen 5 × 5-Filter. Die Nvidia 8800 war dabei rund fünf mal schneller. WWW STEMMER IMAGING www.vfmz.de/175502 Weitere Informationen 8 www.vfmz.de/171162 Weitere Informationen 8 www.vfmz.de/171172 " #! IndustrialVISION 2/2007 49