Die Unvermeidlichkeit des Eindringens von FPGA in Rechenzentren

Die Unvermeidlichkeit des Eindringens von FPGA in Rechenzentren
Sie müssen kein Chip-Designer sein, um für FPGAs zu programmieren, genauso wie Sie kein C++-Programmierer sein müssen, um Code in Java zu schreiben. In beiden Fällen wird es jedoch wahrscheinlich nützlich sein.

Das Ziel der Kommerzialisierung sowohl von Java- als auch von FPGA-Technologien besteht darin, die letztgenannte Behauptung zu widerlegen. Gute Nachrichten für FPGAs: Mit den richtigen Abstraktionsschichten und dem richtigen Toolset sind in den letzten 35 Jahren seit der Erfindung des programmierbaren Logikgeräts Algorithmen und Datenflüsse für FPGAs anstelle von CPUs, DSPs, GPUs oder anderen Formen benutzerdefinierter ASICs erstellt worden immer häufiger. einfacher.

Die erstaunliche Aktualität ihrer Entwicklung zeigt sich darin, dass FPGAs gerade zu dem Zeitpunkt, als CPUs aus verschiedenen Gründen nicht mehr das einzige Rechenmodul von Rechenzentren sein konnten, das viele Aufgaben ausführen konnte, ihre Wirksamkeit erreichten und Geschwindigkeit, geringe Latenz und Netzwerkfähigkeiten boten und Speicher – heterogene Rechenfähigkeiten moderner FPGA-SoCs, die nahezu vollwertige Rechensysteme sind. FPGAs werden jedoch auch erfolgreich mit anderen Geräten in Hybridsystemen kombiniert und finden unserer Meinung nach gerade erst ihren rechtmäßigen Platz in der Computerhierarchie.

Aus diesem Grund haben wir am 22. Januar die Konferenz „Next FPGA Platform“ in San Jose organisiert. Natürlich ist Xilinx einer der größten FPGA-Anbieter weltweit und ein Pionier auf diesem Gebiet. Ivo Bolsens, Senior Vice President und Chief Technology Officer bei Xilinx, sprach auf der Konferenz und teilte uns heute seine Gedanken darüber mit, wie Xilinx dabei hilft, veränderbare Computersysteme für Rechenzentren zu schaffen.

Systemarchitekten und Programmierer brauchten viel Zeit, um ein heterogenes Rechenzentrum zu entwickeln, das über verschiedene Arten von Computerleistung verfügt und Probleme in den Bereichen Datenverarbeitung, Speicherung und Vernetzung löst. Dies erscheint notwendig, da es immer schwieriger wird, dem Mooreschen Gesetz bei der Verwendung verschiedener CMOS-Geräte zu folgen. Im Moment ist unsere Sprache immer noch CPU-zentriert, und wir sprechen immer noch von „Anwendungsbeschleunigung“, was bedeutet, dass Programme besser laufen, als das, was auf CPUs allein möglich ist. Im Laufe der Zeit werden Rechenzentren zu Ansammlungen von Rechenleistung, Datenspeicherung und Protokollen, die alles miteinander verbinden, und wir werden zu Begriffen wie „Computing“ und „Anwendungen“ zurückkehren. Hybrid Computing wird so normal sein wie die heutigen Cloud-Dienste, die auf Desktops oder virtuellen Maschinen laufen, und irgendwann werden wir einfach das Wort „Computing“ verwenden, um ihre Funktionsweise zu beschreiben. Irgendwann – und es ist wahrscheinlich, dass FPGAs dabei helfen werden, diese Ära einzuläuten – werden wir es wieder Datenverarbeitung nennen.

Die Einführung von FPGAs in Rechenzentren erfordert eine Änderung der Denkweise. „Wenn man über Möglichkeiten nachdenkt, die heutigen Anwendungen zu beschleunigen, muss man sich auf die Grundlagen konzentrieren, wie sie funktionieren, welche Ressourcen verwendet werden und wo Zeit aufgewendet wird“, erklärt Bolsens. – Sie müssen das allgemeine Problem untersuchen, das Sie lösen möchten. Viele Anwendungen, die heutzutage in Rechenzentren ausgeführt werden, skalieren so, dass sie große Mengen an Ressourcen verbrauchen. Nehmen wir zum Beispiel maschinelles Lernen, das eine große Anzahl von Rechenknoten nutzt. Aber wenn wir über Beschleunigung sprechen, müssen wir nicht nur an die Beschleunigung der Datenverarbeitung denken, sondern auch an die Beschleunigung der Infrastruktur.“

Beispielsweise wird bei den maschinellen Lernvorgängen, die Bolsens in der Praxis untersucht hat, etwa 50 % der Zeit für die Übertragung von Daten zwischen verteilten Rechenleistungen aufgewendet, und nur die verbleibende Hälfte der Zeit wird für die Berechnungen selbst aufgewendet.

„Hier denke ich, dass FPGA helfen kann, weil wir sicherstellen können, dass sowohl die Rechen- als auch die Kommunikationsaspekte der Anwendung optimiert werden. Und wir können dies auf der gesamten Infrastrukturebene und auf der Chipebene tun. Dies ist einer der großen Vorteile von FPGAs, die es Ihnen ermöglichen, Kommunikationsnetzwerke für spezifische Anwendungsanforderungen zu erstellen. Basierend auf typischen Datenbewegungsmustern in KI-Workloads sehe ich keinen Bedarf für eine komplexe Switch-basierte Architektur. Sie können ein Netzwerk mit einem großen Datenfluss aufbauen. Gleiches gilt für Trainingsaufgaben für neuronale Netze – Sie können ein Mesh-Netzwerk mit Paketgrößen aufbauen, die sich an eine bestimmte Aufgabe anpassen. Mithilfe eines FPGA können Datenübertragungsprotokolle und Schaltungstopologien sehr genau skaliert und auf eine bestimmte Anwendung zugeschnitten werden. Und im Fall des maschinellen Lernens ist auch klar, dass wir keine Gleitkommazahlen mit doppelter Genauigkeit brauchen, und das können wir auch anpassen.“

Der Unterschied zwischen einem FPGA und einer CPU oder einem benutzerdefinierten ASIC besteht darin, dass letztere im Werk programmiert werden und Sie danach Ihre Meinung über die zu berechnenden Datentypen oder berechneten Elemente oder über die Art der Daten nicht mehr ändern können durch das Gerät fließen. Mit FPGAs können Sie Ihre Meinung ändern, wenn sich die Betriebsbedingungen ändern.

In der Vergangenheit hatte dieser Vorteil seinen Preis, da die FPGA-Programmierung nichts für schwache Nerven war. Die Notwendigkeit besteht darin, FPGA-Compiler für eine bessere Integration mit den Tools zu öffnen, die Programmierer zum Schreiben CPU-paralleler Anwendungen in C, C++ oder Python verwenden, und einen Teil der Arbeit an Bibliotheken auszulagern, die Verfahren auf FPGAs beschleunigen. Genau das leistet der Machine-Learning-Stack von Vitis, der ML-Plattformen wie Caffe und TensorFlow mit Bibliotheken zum Ausführen herkömmlicher KI-Modelle oder zum Hinzufügen von FPGA-Funktionen zu Aufgaben wie Videotranskodierung, Videoobjekterkennung und Datenanalyse, Finanzrisikomanagement und allen anderen unterstützt -Party-Bibliotheken.

Dieses Konzept unterscheidet sich nicht wesentlich von Nvidias CUDA-Projekt, das vor einem Jahrzehnt gestartet wurde und paralleles Rechnen auf GPU-Beschleuniger verlagert, oder von AMDs ROCm-Toolkit oder von dem Versprechen von Intels OneAPI-Projekt, das auf verschiedenen CPUs, GPUs und FPGAs laufen soll.

Die Frage ist nur, wie all diese Tools miteinander verbunden werden, sodass jeder nach eigenem Ermessen eine Reihe von Rechenleistungen programmieren kann. Dies ist wichtig, da FPGAs komplexer geworden sind, viel komplexer als alle verfügbaren CPUs. Sie werden mit modernsten Fertigungsverfahren und modernsten Chip-Packaging-Technologien hergestellt. Und sie werden ihre Nische finden, denn wir dürfen keine Zeit, Geld, Energie und Intelligenz mehr verschwenden – all das sind zu teure Ressourcen.

„FPGAs bieten technologische Vorteile“, sagt Bolsens. – Und das ist nicht nur die übliche Werbung für Anpassungsfähigkeit und Rekonfigurierbarkeit. In allen wichtigen Anwendungen – maschinelles Lernen, Graphanalyse, Hochgeschwindigkeitshandel usw. – Sie haben die Fähigkeit, nicht nur den Datenverteilungspfad, sondern auch die Speicherarchitektur – also die Art und Weise, wie sich Daten innerhalb des Chips bewegen – an eine bestimmte Aufgabe anzupassen. In FPGAs ist außerdem viel mehr Speicher integriert als in anderen Geräten. Es sollte auch berücksichtigt werden, dass Sie, wenn eine Aufgabe nicht in einen FPGA passt, sie über mehrere Chips skalieren können, ohne auf die Nachteile zu stoßen, die Sie erwarten, wenn Sie Aufgaben über mehrere CPUs oder GPUs skalieren.“

Source: habr.com

Kommentar hinzufügen