
Man muss kein Chip-Entwickler sein, um für FPGA zu programmieren, und man muss kein C++-Programmierer sein, um in Java zu kodieren. Dennoch wird es in beiden Fällen wahrscheinlich nicht schaden.
Das Ziel der Kommerzialisierung beider Technologien, Java und FPGA, besteht darin, die letzte Aussage zu widerlegen. Gute Nachrichten für FPGA – seit der Erfindung des programmierbaren logischen Geräts vor 35 Jahren ist es dank geeigneter Abstraktionsebenen und Werkzeugsets immer einfacher geworden, Algorithmen und Datenströme für FPGA anstelle von CPU, DSP, GPU oder anderen speziellen ASICs zu erstellen.
Die erstaunliche Timeliness ihrer Schaffung zeigt sich darin, dass genau in dem Moment, als CPU nicht mehr das einzige Rechenmodul bleiben konnte, Rechenzentren FPGA ihre Effizienz erreichten und Geschwindigkeit, geringe Latenz, Netzwerkfähigkeiten und Speicher – heterogene Rechenfähigkeiten moderner FPGA SoCs, die nahezu vollständige Rechenanlagensysteme darstellen, anbieten. FPGA lassen sich jedoch auch erfolgreich mit anderen Geräten in hybriden Systemen kombinieren, und unserer Meinung nach beginnen sie erst, ihren rechtmäßigen Platz in der Berechnungshierarchie zu finden.
Deshalb haben wir die Konferenz The Next FPGA Platform in San Jose am 22. Januar organisiert. Natürlich ist eines der Hauptunternehmen für FPGA weltweit und Pionier auf diesem Gebiet Xilinx. Ivo Bolsens, Senior Vice President und CTO von Xilinx, hielt auf der Konferenz eine Rede und teilte uns seine heutigen Gedanken mit, wie Xilinx dazu beiträgt, veränderbare Rechensysteme für Rechenzentren zu schaffen.
Systemarchitekten und Programmierer benötigten einige Zeit, um zu einem heterogenen Rechenzentrum zu gelangen, in dem Computerressourcen verschiedener Arten vorhanden sind, die Aufgaben in den Bereichen Berechnung, Speicherung und Netzwerkorganisation lösen. Dies erscheint notwendig, da es immer schwieriger wird, dem Moore'schen Gesetz mit verschiedenen CMOS-Technologien zu folgen. Solange unsere Sprache noch an der CPU festgebunden ist und wir weiterhin über „Anwendungsbeschleunigung“ sprechen, wobei wir die Verbesserung der Programmausführung im Vergleich zu dem, was nur mit CPUs möglich ist, meinen. Nach einer gewissen Zeit werden Rechenzentren zu einer Sammlung von Rechenressourcen, Datenspeichern und Protokollen, die alles verbinden, und wir werden zu Begriffen wie „Berechnungen“ und „Anwendungen“ zurückkehren. Hybrides Rechnen wird genauso zur Norm werden wie die heutigen „Cloud“-Dienste, die auf Basis von normalen oder virtuelle Maschinen, und irgendwann werden wir einfach das Wort „Berechnungen“ verwenden, um ihre Funktionsweise zu beschreiben. Irgendwann – und die FPGA werden wahrscheinlich aktiv zur Ankunft dieser Ära beitragen – werden wir dies wieder Datenverarbeitung nennen.
Um FPGAs in Rechenzentren einzuführen, ist es notwendig, die Denkweise zu ändern. „Wenn man über Möglichkeiten nachdenkt, heutige Anwendungen zu beschleunigen, muss man die Grundlagen ihrer Ausführung hinterfragen, welche Ressourcen verwendet werden und wo die Zeit verloren geht“, erklärt Bolsens. „Man muss das Gesamtproblem untersuchen, das man zu lösen versucht. Viele der heute in Rechenzentren laufenden Anwendungen sind skalierbar und beanspruchen eine große Menge an Ressourcen. nehmen wir beispielsweise maschinelles Lernen, das eine enorme Anzahl an Rechenknoten verwendet. Aber wenn man über Beschleunigung spricht, muss man nicht nur über die Beschleunigung der Berechnungen nachdenken, sondern auch über die Beschleunigung der Infrastruktur.“
Zum Beispiel bei den maschinellen Lernoperationen, die Bolsens in der Praxis untersuchte, wird etwa 50 % der Zeit für den Datenaustausch zwischen verstreuten Rechenressourcen verwendet, und nur die verbleibende Hälfte der Zeit wird für die Berechnungen selbst aufgewendet.
Hier, denke ich, kann FPGA tatsächlich helfen, da wir sowohl die Rechenaspekte als auch die Aspekte der Datenübertragung für die Anwendung optimieren können. Und das können wir auf der Ebene der allgemeinen Infrastruktur und auf der Chip-Ebene tun. Das ist eines der großen Vorteile von FPGA, die es ermöglichen, Kommunikationsnetze für die spezifischen Bedürfnisse der Anwendung zu schaffen. Wenn ich die typischen Muster der Datenbewegung in Aufgaben, die mit künstlicher Intelligenz zusammenhängen, beobachte, sehe ich keine Notwendigkeit für eine komplexe Architektur basierend auf Switches. Es kann ein Netzwerk mit hohem Datenfluss aufgebaut werden. Dasselbe gilt für die Aufgaben des Trainierens von neuronalen Netzen – man kann ein Gitternetz mit Paketgrößen schaffen, die sich an die spezifische Aufgabe anpassen. Mit FPGA können Übertragungsprotokolle und die Topologie der Schaltung sehr präzise skaliert und angepasst werden, um der jeweiligen Anwendung gerecht zu werden. Und im Falle des maschinellen Lernens ist auch klar, dass wir keine doppelt genauen Fließkommazahlen benötigen, und das können wir ebenfalls anpassen.
Der Unterschied zwischen FPGA und CPU oder spezialisierten ASIC liegt darin, dass die letzteren bei der Herstellung programmiert werden und man danach nicht mehr über die Arten von berechneten Daten oder berechneten Elementen nachdenken kann, oder über die Art des Datenstroms, der durch das Gerät fließt. FPGA ermöglichen es Ihnen, Ihre Meinung zu ändern, wenn sich die Betriebsbedingungen ändern.
In der Vergangenheit war dieser Vorteil teuer, als die Programmierung von FPGAs nicht für schwache Gemüter gedacht war. Es ist erforderlich, Compiler für FPGAs zu öffnen, damit sie besser mit Werkzeugen integriert werden, die von Programmierern zum Erstellen von Anwendungen mit paralleler Berechnung für CPU in C, C++ oder Python verwendet werden, und einen Teil der Arbeit an Bibliotheken zu übertragen, die die Verfahren auf FPGAs beschleunigen. Genau das erledigt der Vitis-Stack für maschinelles Lernen, der der Grundlage solcher Plattformen für ML wie Caffe und TensorFlow dient und Bibliotheken für die Ausführung gängiger KI-Modelle oder für die Integration von FPGA-Funktionalitäten in Aufgaben wie Video-Transcodierung, Objekterkennung in Videos, Datenanalyse, Risikomanagement und beliebige externe Bibliotheken umfasst.
Dieses Konzept unterscheidet sich nicht stark von dem vor zehn Jahren von Nvidia gestarteten CUDA-Projekt, das parallele Berechnungen auf GPU-Beschleuniger verlagert, oder von dem ROCm-Toolkit von AMD, oder von den Versprechungen des Intel-Projekts OneAPI, das auf verschiedenen CPUs, GPUs und FPGAs funktionieren soll.
Die Frage ist nur, wie all diese Werkzeuge miteinander verknüpft werden, sodass jeder Mensch eine Reihe von Rechenressourcen nach seinen Wünschen programmieren kann. Das ist wichtig, da FPGAs viel komplexer geworden sind, wesentlich komplexer als jede vorhandene CPU. Sie werden mit den fortschrittlichsten Fertigungsprozessen und den modernsten Chipverpackungstechnologien hergestellt. Und sie werden ihren Platz finden, da wir unsere Zeit, Geld, Energie und Intelligenz nicht mehr verschwenden können – all das sind zu kostbare Ressourcen.
„FPGAs bieten technologische Vorteile“, sagt Bolsens. „Und das ist nicht nur ganz gewöhnliche Werbung über Anpassungsfähigkeit und Umprogrammierbarkeit. In allen wichtigen Anwendungen – maschinelles Lernen, Graphanalyse, Hochfrequenzhandel usw. – haben sie die Möglichkeit, nicht nur den Datenflussweg, sondern auch die Speicherarchitektur anzupassen – wie die Daten innerhalb des Chips bewegt werden. Darüber hinaus enthalten FPGAs wesentlich mehr Speicher als andere Geräte. Außerdem ist zu beachten, dass, wenn eine Aufgabe nicht in einen FPGA passt, sie auf mehrere Chips skaliert werden kann, ohne mit den Nachteilen konfrontiert zu werden, die auftreten, wenn man Aufgaben auf mehrere CPUs oder GPUs skaliert.”
Quelle: habr.com
