DE112022002238T5 - Netzwerkschnittstellenvorrichtungs-basierte berechnungen - Google Patents

Netzwerkschnittstellenvorrichtungs-basierte berechnungen Download PDF

Info

Publication number
DE112022002238T5
DE112022002238T5 DE112022002238.8T DE112022002238T DE112022002238T5 DE 112022002238 T5 DE112022002238 T5 DE 112022002238T5 DE 112022002238 T DE112022002238 T DE 112022002238T DE 112022002238 T5 DE112022002238 T5 DE 112022002238T5
Authority
DE
Germany
Prior art keywords
packet
data
network interface
interface device
worker
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112022002238.8T
Other languages
English (en)
Inventor
Yanfang LE
Daniel A. Alvarez
Amedeo Sapio
John Andrew Fingerhut
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112022002238T5 publication Critical patent/DE112022002238T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Hierin beschriebene Beispiele betreffen einen Switch, der umfasst: eine Schaltung zum Empfangen eines Pakets, das einen Header und eine Nutzlast umfasst, und in Verbindung mit der Durchführung einer Berechnung an der Paketnutzlast, Weiterleiten des Paket-Headers, aber nicht der Nutzlast, an einen Ziel-Endpunkt. In einigen Beispielen soll der Zielendpunkt des Pakets eine Verwaltung eines zuverlässigen Transports durchführen. In einigen Beispielen beinhaltet die Schaltung eine programmierbare Schaltung einer Datenebene, die eine Eingangspipeline oder Ausgangspipeline und eine oder mehrere Übereinstimmungsaktionseinheiten (MAUs) umfasst, um eine Verarbeitung der Nutzlast durchzuführen, wobei die programmierbare Schaltung der Datenebene eine Berechnung an der Paketnutzlast durchführen soll.

Description

  • PRIORITÄTSANSPRUCH
  • Die vorliegende Anmeldung beansprucht die Priorität gemäß 35 U.S.C. Abschnitt 365(c) der US-Anmeldung Nr. 17/515,222 , eingereicht am 29. Oktober 2021, mit dem Titel „NETWORK INTERFACE DEVICE-BASED COMPUTATIONS“ (Netzwerkschnittstellenvorrichtungs-basierte Berechnungen), deren Inhalt hierin vollständig aufgenommen ist.
  • STAND DER TECHNIK
  • Vorhandene netzwerkinterne Berechnungslösungen für das Training für verteilte tiefe neuronale Netzwerke (Deep Neural Networks, DNNs), wie etwa Sapio et al., „Scaling Distributed Machine Learning with In-Network Aggregation“, 18th USENIX Symposium on Networked Systems Design and Implementation (NSDI '21) (SwitchML) und Lao et al., „ATP: In-network Aggregation for Multi-tenant Learning“ (NSDI '21) (ATP), schlagen das Verwerfen von Paketen vor, um Netzwerkverkehr zu reduzieren, wenn der Switch die Pakete verarbeitet. Das Verwerfen von Paketen kann jedoch eine Verbindung unterbrechen, z. B. die Remote Direct Memory Access (RDMA) Reliable Connection (RC) (RDMA RC). 1 zeigt eine herkömmliche Ende-zu-Ende-Lösung für Training für maschinelles Lernen (ML) unter Verwendung einer Parameterserver (PS)-Architektur.
  • Die PS-Architektur beinhaltet Worker 100 und Parameterserver (PS) 120, die unter Verwendung von Switches 110 kommunikativ gekoppelt sind. Eine Ende-zu-Ende-Lösung für die PS-Architektur beinhaltet Reduce-Scatter- und Allgather-Operatoren. Wenn das System die RDMA-RC als das Netzwerktransportprotokoll verwendet, richtet ein Worker ein RC-Warteschlangenpaar mit mindestens einem PS ein. 1 zeigt, dass Worker1 drei QPs aufweist und die QPs mit einem PS verbunden sind. Worker2 und Worker3 nutzen auch drei QPs, und die QPs sind mit einem PS verbunden.
  • In dem Reduce-Scatter-Operator sendet ein Worker eine Partition der Daten an einen entsprechenden Parameterserver. Zum Beispiel werden die Partitionen a1 von Worker1, a2 von Worker2 und a3 von Worker3 an PS1 gesendet, die Partitionen b1 von Worker1, b2 von Worker2 und b3 von Worker3 werden an PS2 gesendet, und ein ähnliches Muster gilt für den PS3. Infolgedessen sind die Daten über mehrere Parameterserver verstreut, um die parallele Berechnung von Grafikverarbeitungseinheiten (GPUs) zu nutzen, die sich in einem Parameterserver befinden. Nach dem Empfangen der Daten führt der PS zuerst eine Aggregation über die Daten von den Workern durch. Als Nächstes nutzt der PS eine GPU, um eine Berechnung durchzuführen, z. B. eine Optimierung über die aggregierten Daten. Es ist anzumerken, dass die Parameterserver und Worker als Prozesse implementiert werden können, die auf derselben Maschine oder derselben GPU ausgeführt werden können. Netzwerk-Incast kann entstehen, wenn mehrere Netzwerkschnittstellenvorrichtungen Kommunikationen zu einer einzigen Netzwerkschnittstellenvorrichtung senden, die aufgrund übermäßigen empfangenen Paketverkehrs überlastet wird.
  • In dem Allgather-Operator werden die Daten, die durch eine GPU verarbeitet werden, als Multicast an die Worker gesendet. Ein Parameterserver sendet die gleiche Kopie der Daten an die Worker. In diesem Prozess wird die Bandbreite von einem Parameterserver an alle Worker verteilt, und das Netzwerk könnte der Engpass sein.
  • RDMA-RC ist verbindungsbasiert und verfolgt empfangene Pakete beim Endhost. Falls ein Paket nicht beim Empfänger ankommt, kann eine Paketneuübertragung ausgelöst werden. Die Verbindungssemantik wird bei der netzwerkinternen Berechnung unterbrochen, wenn anstelle eines Hosts ein Switch ein Paket verarbeitet und das Paket absichtlich verwirft, um den Netzwerkverkehr zu reduzieren. Falls also ein erwartetes Paket nicht bei einem Endhost-Empfänger empfangen wird, ist der Endhost nicht in der Lage zu unterscheiden, ob der Switch das Paket absichtlich verbraucht oder das Netzwerk das Paket aufgrund des Pufferüberlaufs oder der Beschädigung verwirft.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
    • 1 zeigt ein beispielhaftes System.
    • 2 zeigt ein beispielhaftes Paketformat, das von einem Sender-Worker oder Sender-Parameterserver genutzt werden kann.
    • 3 zeigt ein beispielhaftes System.
    • 4 zeigt eine beispielhafte Operation einer Reduce-Scatter-Operation.
    • 5 zeigt einen beispielhaften Pseudocode einer Reduce-Scatter-Operation bei einer Netzwerkschnittstellenvorrichtung.
    • 6 zeigt ein beispielhaftes System, das eine Allgather-Operation durchführen kann.
    • 7 zeigt einen beispielhaften Pseudocode von Operationen zum Durchführen einer Allgather-Operation.
    • 8A und 8B zeigen beispielhafte Prozesse.
    • 9A zeigt eine beispielhafte Netzwerkschnittstellenvorrichtung.
    • 9B zeigt einen beispielhaften Switch.
    • 10 zeigt ein beispielhaftes System.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Wenn eine Ende-zu-Ende-Verbindung durch eine Netzwerkschnittstellenvorrichtung unterbrochen wird, die Pakete verarbeitet, kann ein Endpunkt keinen Grund erkennen, warum ein erwartetes Paket nicht empfangen wird, da das Paket nicht von dem Endpunkt empfangen wurde. Einige Beispiele versuchen, eine RDMA-RC-Verbindung aufrechtzuerhalten und einer Netzwerkschnittstellenvorrichtung zu ermöglichen, Paketverarbeitung durchzuführen, die Trainings- und Inferenzoperationen für verteilte tiefe neuronale Netzwerke (DNN), maschinelles Lernen (ML) oder Frameworks für maschinelles Lernen zugeordnet sind, die auf SwitchML, ATP oder anderen basieren. Eine Paketnutzlast kann durch die Netzwerkschnittstellenvorrichtung verarbeitet werden, und der Paket-Header kann durch einen Endpunkt-Empfängerhost zur Protokollverarbeitung verarbeitet werden. Einige Beispiele teilen die Anwendungsdatenverarbeitung und die Transportprotokollverarbeitung zwischen einer jeweiligen Netzwerkschnittstellenvorrichtung und einer Endpunkt-Host- oder Endhost-Netzwerkschnittstellenvorrichtung auf, deren RoCEv2-Implementierung gut verifiziert ist.
  • Änderungen an Implementierungen von Workern und Parameterservern können geringfügig sein oder gar nicht anfallen, indem ein Workflow einer PS-Architektur aufrechterhalten wird, da Worker und Parameterserver die Verwendung von Datenverarbeitung und Transportprotokollverarbeitung zwischen einer jeweiligen Netzwerkschnittstellenvorrichtung und einem Endpunkthost oder einer Endhost-Netzwerkschnittstellenvorrichtung (z. B. eine RDMA-fähige Netzwerkschnittstellensteuerung) weder anfordern noch veranlassen. Bei einigen Beispielen kann eine Anzahl von Gesamt-Workern kodiert und in einem Paket-Header übermittelt werden.
  • Bei einigen Beispielen ist eine Netzwerkschnittstellenvorrichtung, die eine Berechnung durchführt, eine Endpunkt-Netzwerkschnittstellenvorrichtung. Ein Endpunkt-Host, der mit der Endpunkt-Netzwerkschnittstellenvorrichtung verbunden ist, kann eine RDMA-RC-Verbindung aufrechterhalten, indem der Transportzustand verwaltet wird, wie etwa durch Bestimmen, ob sequenzielle Paketsequenznummern empfangen werden. Der Endpunkt-Host kann die Herstellung und Aufrechterhaltung der Konnektivität verwalten.
  • Bei einigen Beispielen können programmierbare Übereinstimmungsaktionseinheiten (Match Action Units, (MAUs) einer Eingangspipeline oder Ausgangspipeline einer Netzwerkschnittstellenvorrichtung eine Berechnung an Daten zumindest in Verbindung mit Reduce-Scatter- und Allgather-Prozessen durchführen. Durch Nutzen der Programmierbarkeit der Eingangspipeline oder Ausgangspipelinebewirkt der Reduce-Scatter-Prozess, dass die Eingangspipeline oder die Ausgangspipeline eine Aggregationsphase (z. B. Summierung, min-max und so weiter) und/oder eine Multicast-Operation einer Allgather-Phase durchführt. Die Multicast-Operation kann beinhalten, dass der PS ein vollständiges Nutzlastpaket an die Netzwerkschnittstellenvorrichtung sendet und dass die Netzwerkschnittstellenvorrichtung die Nutzlast speichert. Die Netzwerkschnittstellenvorrichtung kann ein Pseudopaket (z. B. ein Header ohne Daten in einer Nutzlast) von dem PS empfangen und die Netzwerkschnittstellenvorrichtung kann die Nutzlast des Pseudopakets einfügen oder durch die gespeicherte Nutzlast ersetzen, um ein aktualisiertes Paket bereitzustellen und das aktualisierte Paket an einen oder mehrere Worker weiterzuleiten.
  • In einer Reduce-Scatter-Phase können ein oder mehrere Worker vollständige Nutzlastpakete an die Netzwerkschnittstellenvorrichtung senden, und die Netzwerkschnittstellenvorrichtung leitet Header-Pakete (z. B. Pakete mit Headern, aber ohne Nutzlast) an den PS weiter, bevor sie eine Gesamtanzahl von Paketen von Workern empfängt. Wenn die Netzwerkschnittstellenvorrichtung die Gesamtanzahl von Paketen von Workern empfängt, leitet die Netzwerkschnittstellenvorrichtung ein Paket mit berechneten Ergebnissen an den PS weiter. Für weitergeleitete Pakete, bei denen eine Nutzlast hinzugefügt oder entfernt wird, können Header-Felder wie hier beschrieben aktualisiert werden.
  • In einer Allgather-Phase kann der PS ein vollständiges Nutzlastpaket (z. B. ein Paket mit Header und Nutzlast) über die Netzwerkschnittstellenvorrichtung an einen Worker senden. Daten in dem vollständigen Nutzlastpaket können gleich oder unterschiedlich zu der Nutzlast der berechneten Ergebnisse sein, die von der Netzwerkschnittstellenvorrichtung empfangen werden. Der PS kann einen Satz von Header-Paketen (z. B. Pakete mit Headern, aber ohne Nutzlasten) über die Netzwerkschnittstellenvorrichtung an die anderen Worker senden. Die Netzwerkschnittstellenvorrichtung kann Pakete an Worker weiterleiten. Die Netzwerkschnittstellenvorrichtung kann die Nutzlast aus dem vollständigen Nutzlastpaket speichern und die gespeicherte Nutzlast in eine Nutzlast der Header-Pakete einfügen. Der Worker kann mindestens ein vollständiges Nutzlastpaket empfangen. Für weitergeleitete Pakete, bei denen eine Nutzlast hinzugefügt oder entfernt wird, können Header-Felder wie hier beschrieben aktualisiert werden.
  • In einer Reduce-Scatter-Phase können Worker vollständige Nutzlastpakete an die Netzwerkschnittstellenvorrichtung senden, und die Netzwerkschnittstellenvorrichtung leitet Header der vollständigen Nutzlastpakete (z. B. Header-Pakete) an den PS weiter. Die Netzwerkschnittstellenvorrichtung speichert das berechnete Ergebnis, das in ein Header-Paket eingefügt werden soll. Für weitergeleitete Pakete, bei denen eine Nutzlast hinzugefügt oder entfernt wird, können Header-Felder wie hier beschrieben aktualisiert werden.
  • In einer Allgather-Phase kann der PS Header-Pakete an die Netzwerkschnittstellenvorrichtung senden, die Netzwerkschnittstellenvorrichtung fügt das gespeicherte berechnete Ergebnis aus einer Reduce-Scatter-Phase in die Header-Pakete ein und leitet die Pakete mit den berechneten Ergebnissen an Worker weiter. Für weitergeleitete Pakete, bei denen eine Nutzlast hinzugefügt oder entfernt wird, können Header-Felder wie hier beschrieben aktualisiert werden.
  • 2 zeigt ein beispielhaftes Paketformat, das von einem Sender-Worker oder Sender-Parameterserver genutzt werden kann. Das Paket 200 kann als RDMA-over-Converged-Ethernet (ROCE)-v2-konsistentes Paket implementiert werden, obwohl auch andere Paketformate und Paketspezifikationen verwendet werden können. Beispielsweise kann ein ROCE-v2-Paket genutzt werden, um Daten von einem Worker an einen Parameterserver oder von einem Parameterserver an einen Worker zu übertragen. Die Ergänzung zu „InfiniBand™ Architecture Specification Volume 1 Release 1,2.1, Anhang A17: RoCEv2 (2014)“ stellt eine beispielhafte Beschreibung verschiedener Header in Paket 200 bereit. Das Immediate-Wert-Feld kann einen RDMA-Header beinhalten, der 32 Bit beträgt und benutzerdefinierte Daten enthält. Bei einigen Beispielen kann das Immediate-Wert-Feld des Pakets 200 mindestens den Poolindex-Startpunkt 202, die Worker-Kennung (ID) 204 und die Richtung oder Operation 206 beinhalten.
  • Das Poolindex-Startpunkt-Feld 202 kann die Unterstützung mehrerer Parameterserver ermöglichen und versuchen, überlappende Pool-Slots zu vermeiden. Um Daten in einer Netzwerkschnittstellenvorrichtung zu verarbeiten, können Daten in einem Slot im Speicher der Netzwerkschnittstellenvorrichtung gespeichert werden. Ein Pool kann mehrere Paket-Speicher-Slots und ein Poolindex-Startpunkt-Feld 202 beinhalten. Das Poolindex-Startpunkt-Feld 202 kann einen bestimmten Slot im Speicher identifizieren, der Daten des Pakets speichern soll, die einen Versatz von einem Startpunkt darstellen, der basierend auf der Paketsequenznummer in dem BTH-Feld berechnet wird. Ein Endpunkt-Sender kann einen Wert des Poolindex-Startpunkt-Felds 202 einstellen, und das Feld kann durch einen Jobplaner (z. B. Orchestrator) zugewiesen werden, wenn oder bevor eine Arbeitslast startet.
  • Ein Jobplaner kann Jobparameter mit einer softwaredefinierten Vernetzungsverarbeitungs (Software Defined Networking, SDN)-Steuerung, wie etwa Reduction-ID, Rang, Gesamtanzahl von Workern, gemeinsam nutzen. Die SDN-Steuerung kann eine Anzahl von Slots pro Reduzierung zuweisen, wie etwa einen Bereich von Speicher-Slots, wobei der Startindex nicht größer als die Slot-Anzahl von laufenden („In-Flight“) Paketen ist. Die Slots können am Ende des Jobs freigegeben werden
  • Bei einigen Beispielen können Paketsequenznummern (PSN) eines eine Warteschlangenpaars (QP) auf null initialisiert werden. Basierend auf dem Poolindex-Startpunkt-Feld kann eine Netzwerkschnittstellenvorrichtung eine Slot-ID berechnen. Ein QP an einem Parameterserver (PS) kann einem Speicherbereich des PS zugeordnet sein, und ein PS weist dem Satz von QPs denselben Speicherbereich zu. Daten können in einem Speicherbereich eines Switches oder einer Netzwerkschnittstellenvorrichtung aggregiert werden. Der Speicherbereich des PS kann verwendet werden, um aggregierte Daten von einem Switch oder einer Netzwerkschnittstellenvorrichtung zu empfangen.
  • Das Worker-ID-Feld 204 kann einen bestimmten Worker identifizieren, der Daten in dem Paket gesendet oder empfangen hat. Eine Empfänger-Netzwerkschnittstellenvorrichtung kann das Worker-ID-Feld 204 nutzen, um eine Anzahl von Workern zu zählen, die Daten zur Verarbeitung durch die Empfänger-Netzwerkschnittstellenvorrichtung bereitgestellt haben, um sicherzustellen, dass Worker in einer Gruppe von Workern Daten zur Verarbeitung bereitgestellt haben, bevor verarbeitete Daten an ein Host-System bereitgestellt werden.
  • Es wird als Nächstes eine Beschreibung einer beispielhaften Verwendung des Worker-ID-Feld 204 gegeben. Worker-Kennungswerte können von einer Netzwerkschnittstellenvorrichtung verwendet werden, um unterschiedliche Operationen zu unterscheiden und zu bestimmen, ob Worker einer Gruppe von Workern alle Daten beigetragen haben. Bei einigen Beispielen kann eine Worker-ID durch die Netzwerkschnittstellenvorrichtung in eine Bitmap umgewandelt werden. Zum Beispiel trägt der Worker mit der ID 1 den Wert 1, der in 00010 umgewandelt wird. Tabelle 2 zeigt ein Beispiel für eine Umwandlung von einer Worker-ID in eine Bitmap. Bitmaps können hinzugefügt werden, um eine Anzahl von Workern zu verfolgen, die Pakete an die Netzwerkschnittstellenvorrichtung gesendet haben. Tabelle 2
    Worker-ID Bitmap
    0 00001
    1 00010
    2 00100
    3 01000
    4 10000
  • Die Verfolgung von Datenbeiträgen von Workern kann durch Hinzufügen von Bitmaps erfolgen, die Workern zugeordnet sind, die Daten zu der Netzwerkschnittstellenvorrichtung beigetragen haben. In diesem Beispiel werden Beiträge von 5 Workern verfolgt. Tabelle 3 zeigt ein Beispiel für das Zählen von Datenbeiträgen von Workern. Tabelle 3
    Slot-ID Bitmap Zähler Aggregatorwert-Feld
    1 00101 2 Daten
    2 00000 0 Keine Daten
    3 00111 3 Daten
    4 01101 3 Daten
    5 10101 3 Daten
  • Die Slot-ID-Spalte kann ein Speicher-Slot sein, der zum Speichern von Daten verwendet werden kann, die aus einer Rechenoperation einer Netzwerkschnittstellenvorrichtung resultieren. Ein Slot besitzt eine zugeordnete Bitmap, um die Anzahl von Workern zu verfolgen, die Daten zu der Berechnung beigetragen haben. Der Spaltenzähler kann verwendet werden, um zu verfolgen, wie viele unterschiedliche Worker Daten bereitstellen, die bei der Berechnung verwendet werden sollen. Beispielsweise kann eine Berechnung Summe, Schreiben oder Lesen beinhalten.
  • In diesem Beispiel in Tabelle 3 werden 5 Slots verwendet, um Daten zu speichern, die von 5 Workern aggregiert sind. Slot-ID = 1 hat Daten von zwei Workern (z. B. Worker 0 und 2) empfangen, Slot-ID = 2 hat keine Daten empfangen, Slot-ID = 3 hat Daten von drei Workern (z. B. Worker 0-2) empfangen und so weiter. Nachdem Daten von den Workern 0-4 empfangen wurden, kann eine Berechnungsoperation durchgeführt werden und die resultierende Berechnung kann aus dem Speicher-Slot kopiert werden, der der Slot-ID zugeordnet ist, und an den Host gesendet werden. Aggregierte Berechnungsdaten können in einem Register oder Speicher gespeichert werden, bevor sie kopiert oder an den Host gesendet werden.
  • Eine Netzwerkschnittstellenvorrichtung kann einen Orchestrator über Speicheradressen oder -Slots informieren, die zum Speichern von Paketdaten verfügbar sind. Der Orchestrator kann die Speichernutzung in der Netzwerkschnittstellenvorrichtung überwachen. Das Poolindex-Startpunkt-Feld und die Worker-Kennung-Felder können durch den Orchestrator zugewiesen und an den Endpunkt-Sender übermittelt werden. Wenn ein Job startet, kann der Orchestrator den Speicherbereich, z. B. den Registerbereich, einem oder mehreren zugeordneten PS(s) zuweisen und die Worker-ID dem/den zugeordneten Worker(n) zuweisen. Bei einigen Beispielen kann das Immediate-Wert-Feld von einem Sender-Worker oder Sender-PS für eine Schreib- oder NUR-SCHREIB-Anforderung befüllt werden.
  • Das Richtung-Feld 206 kann eine Operation beinhalten, die die Netzwerkschnittstellenvorrichtung an in einem Paket empfangenen Daten durchführen soll. Beispielsweise kann ein Wert von 0 angeben, dass eine Reduce-Scatter-Operation durchgeführt werden soll. Ein Wert von 1 kann angeben, dass eine Allgather-Operation durchgeführt werden soll. Es können auch andere Operationen durchgeführt werden, wie etwa Allreduce, die eine Kombination aus ReduceScatter und Allgather sein kann.
  • 3 zeigt ein beispielhaftes System. Das System kann Teil eines verteilten ML- oder DNN-Systems sein, das trainiert wird oder Inferenzen durchführt , die mit SwitchML, Message Passing Interface (MPI), Symmetrie Hierarchical Memory Access (SHMEM), Unified Parallel C (UPC) oder anderen konsistent sind. Die Netzwerkschnittstellenvorrichtung 300 kann als eines oder mehrere von Folgendem implementiert sein: Netzwerkschnittstellensteuerung (NIC), SmartNIC, Router, Switch, Weiterleitungselement, Infrastrukturverarbeitungseinheit (Infrastructure Processing Unit, IPU), Datenverarbeitungseinheit (Data Processing Unit, DPU), netzwerkangeschlossenes Gerät (z. B. Datenspeicher, Speicher, Beschleuniger, Prozessoren, Sicherheit) und so weiter. Die Kommunikationsschaltung 310 kann Kommunikationen mit anderen Vorrichtungen über ein Netzwerk oder eine Fabric über einen oder mehrere Ports bereitstellen. Die Kommunikationsschaltung 310 kann konfiguriert sein, eine oder mehrere beliebige Kommunikationstechnologien (z. B. drahtgebundene oder drahtlose Kommunikationen) und diesen zugeordnete Protokolle (z. B. InfiniBand®, Bluetooth®, Wi-Fi®, 4G LTE, 5G usw.) zu verwenden, um eine solche Kommunikation durchzuführen. Die Kommunikationsschaltung 310 kann eine oder mehrere Netzwerkhardwareressourcen beinhalten, wie etwa Eingangswarteschlangen, Ausgangswarteschlangen, Crossbars, gemeinsam genutzte Speicherschalter, Medienzugriffssteuerung (Media Access Control, MAC), Bitübertragungsschichtschnittstelle (Physical Layer Interface, PHY), Ethernet-Port-Logik und andere Netzwerkhardwareressourcen.
  • Die Netzwerkschnittstellenvorrichtung 300 kann Paketprozessoren 302 nutzen, um empfangene Pakete zu verarbeiten und Pakete zur Übertragung vorzubereiten. Beispielsweise kann die Berechnung 304 eines oder mehrere von Folgendem durchführen: Summierung von Paketdaten mit anderen Paketdaten von anderen Workern, Multiplikation, Division, min-max- oder andere Datenberechnungsoperationen in Bezug auf Allreduce, ReduceScatter oder Allgather. Paket-Header und Daten können im Speicher 320 gespeichert werden.
  • Die Datenverteilung 306 kann eine Verteilung von Daten, die durch die Berechnung 304 von einem PS erzeugt wurden, an einen oder mehrere zugeordnete Worker oder von einem oder mehreren zugeordneten Workern an ein PS in Übereinstimmung mit Allreduce, ReduceScatter oder Allgather durchführen.
  • Der Header-Verarbeitungs-Offload 308 kann Paket-Header über eine Paket- und/oder eine Direktspeicherzugriffs (Direct Memory Access, DMA)-Kopieroperation an einen Server 350, der ein PS ausführt, senden oder kopieren. Der Betrieb der Paketprozessoren 302 kann unter Verwendung von P4, C, Python, Broadcom Network Programming Language (NPL) oder x86-kompatiblen ausführbaren Binärdateien oder anderen ausführbaren Binärdateien programmiert werden.
  • Der Server 350 kann unter Verwendung einer Vorrichtungsschnittstelle oder Netzwerkverbindung mit der Netzwerkschnittstellenvorrichtung 300 gekoppelt sein, für die hier Beispiele beschrieben sind. Der Server 350 kann Prozessoren 352, Speicher 360 und andere hierin beschriebene Technologien zumindest in Bezug auf das System aus 10 beinhalten. Die Offload-Verbindungsaufrechterhaltung 354 kann Verbindungen zwischen Workern (nicht gezeigt) und dem PS 356 basierend auf der RDMA-RC verwalten. Beispielsweise kann die Verbindungsaufrechterhaltung 354 einen Paketempfang an einen Sender bestätigen und basierend auf dem im Speicher 360 gespeicherten Verbindungskontext 362 identifizieren, ob keine Paketsequenznummer von einem Sender empfangen wird, und eine Paketneuübertragung anfordern.
  • 4 zeigt eine beispielhafte Operation einer Reduce-Scatter-Operation. Eine RDMA-RC-Verbindung kann zwischen Worker1 und Worker2 und dem Parameterserver PS1 eingerichtet werden. Obwohl hier Beispiele in Bezug auf RDMA-RC beschrieben sind, können andere zuverlässige Transportprotokolle verwendet werden, wie Amazon SRD, ANR2.0 oder andere. In einem ML-Framework und in Verbindung mit Training oder Inferenz können Worker1 und Worker2 dem PS1 Daten (z. B. Gradienten oder Koeffizienten) bereitstellen. PS1 kann einen Endpunkt darstellen.
  • In einer Reduce-Scatter-Operation summiert die Netzwerkschnittstellenvorrichtung 400 Daten und sendet Daten (nach dem Empfangen von Daten von Worker1 W1 und Worker2 W2) an PS1. Bei einigen Beispielen richtet W1 eine RC-Verbindung mit QP1 an PS1 ein, und W2 richtet eine RC-Verbindung mit QP2 an PS1 ein. Es ist anzumerken, dass dieses Beispiel eine Teilmenge der Aggregation von einem Job ist. Bei einigen Beispielen kann es so viele Parameterserver wie eine Anzahl von Workern geben. Das Paket A1 von W1 kommt an der Netzwerkschnittstellenvorrichtung 400 an, und die Daten von A1 werden gespeichert. Die Netzwerkschnittstellenvorrichtung 400 aktualisiert einen Worker-Zähler, um den Empfang von Daten von W1 widerzuspiegeln, und leitet den Header an QP1 weiter. Die Netzwerkschnittstellensteuerung (NIC) von PS1 sendet ein ACK-Paket an den W1.
  • Das Paket A2 von W2 kommt an der Netzwerkschnittstellenvorrichtung 400 an, und die Netzwerkschnittstellenvorrichtung 400 führt eine Aggregation durch. Da es insgesamt zwei Worker gibt, ist die Aggregation abgeschlossen. Die Netzwerkschnittstellenvorrichtung 400 schreibt die aggregierten Daten, z. B. a = a1 + a2, in das Paket A2 und leitet A2 an die QP2 bei PS1 weiter. Dann sendet die NIC des PS1 eine ACK für A2 an den W2. Die Netzwerkschnittstellenvorrichtung 400 sendet die Header von A1 und QP2 an PS1, sodass PS1 die RC-Verbindung mit W1 und W2 aufrechterhält. Die Nutzlastverarbeitung an der Netzwerkschnittstellenvorrichtung 400 hilft, den Netzwerkverkehr zu dem PS1 zu reduzieren.
  • 5 zeigt einen beispielhaften Pseudocode einer Reduce-Scatter-Operation, die an einer Netzwerkschnittstellenvorrichtung durchgeführt werden kann. Pakete, die von einem Worker übertragen werden, können mit Immediate-Wert-Daten formatiert werden, die den Operationstyp (Richtung), die Worker-ID und den Poolindex-Startpunkt beinhalten. Eine gesamte ausstehende Paketnummer darf nicht größer als die Gesamtpuffergröße sein, die die Netzwerkschnittstellenvorrichtung ihr zugewiesen hat.
  • Wenn ein Job startet, weist ein Jobplaner einem bestimmten Job insgesamt m Slots zu und konfiguriert den Switch für die Gesamtanzahl von n Workern (Zeile 1). Der Jobplaner weist m weitere Slots zu, um einen in SwitchMI, beschriebenen Schattenpool zu bedienen. Ein Slot kann einer Bitmap und einem Zähler zugeordnet sein.
  • Basierend auf dem Empfang eines Pakets extrahiert die Netzwerkschnittstellenvorrichtung die Worker-ID, den pool_index_start_point (Poolindex-Startpunkt) oder die Slot-ID, die Paketsequenznummer (psn) und Daten. Dann berechnet sie den Poolindex und die Pool-ID aus Paketsequenznummer und pool_index_start_point und speichert sie in Metadaten, die als s.pool_id und s.pool_index angegeben werden. Die Netzwerkschnittstellenvorrichtung prüft, ob das Paket zuvor aggregiert wurde. Wenn das Paket zuvor nicht aggregiert wurde (z. B. Zeile 7), legt die Netzwerkschnittstellenvorrichtung die Bitmap fest und erhöht den Zähler (z. B. Zeile 8 und 9). Wenn der Zähler anzeigt, dass dies das erste Paket ist, speichert er die Daten in dem Register (z. B. Zeile 10 und 11); andernfalls führt die Netzwerkschnittstellenvorrichtung eine Aggregation durch (z. B. Zeile 13).
  • Wenn der Zähler zeigt, dass die Aggregation abgeschlossen ist, kopiert die Netzwerkschnittstellenvorrichtung die aggregierten Daten und den Zählerwert zur Aufnahme in das Paket und sendet das Paket (z. B. Zeile 15-17), das entsprechend dem vorgeschlagenen Standard-Routing für die Netzwerkschnittstellenvorrichtung weitergeleitet wird. Gleichzeitig löscht die Netzwerkschnittstellenvorrichtung den Zähler und die Bitmap für den Schattenpool mit demselben pool index (Poolindex) (z. B. Zeile 18-19).
  • Falls der Zähler zeigt, dass die Aggregation noch nicht abgeschlossen ist, entfernt die Netzwerkschnittstellenvorrichtung die Nutzlast aus dem Paket und sendet nur den Header (z. B. als ein Pseudopaket) (z. B. Zeile 20-21) mit dem Standard-Routing-Algorithmus an den entsprechenden PS. Wenn eine Worker-Beitrags-Bitmap zeigt, dass das Paket aggregiert wurde (z. B. Zeile 22), und falls die Aggregation erledigt ist, weist die Netzwerkschnittstellenvorrichtung die Aggregation in einer Nutzlast und einer Bitmap dem Paket zu und leitet das Paket (z. B. Zeile 24--26) an den entsprechenden Parameterserver weiter. Andernfalls entfernt die Netzwerkschnittstellenvorrichtung, falls die Aggregation nicht erledigt ist, die Nutzlast aus dem Paket und leitet das Paket weiter (z. B. Zeile 27-28).
  • Bei einigen Beispielen werden ein empfangenes Paket mit Header und Nutzlast, das als Pseudopaket mit dem Header des empfangenen Pakets weitergeleitet wird, oder ein Pseudopaket so geändert, dass es eine Nutzlast enthält, wobei ein Längenfeld in einem Internet Protocol (IP)-Header, ein Längenfeld in einem UDP (User Datagram Protocol)-Header und/oder ein Längenfeld in einem erweiterten RDMA (RDMA Extended Header, RETH) von einer Netzwerkschnittstellenvorrichtung geändert werden können, um die resultierende Paketlänge des Pseudopakets anzuzeigen. Beispielsweise können, wenn eine Netzwerkschnittstellenvorrichtung netzwerkinterne Berechnung an einem empfangenen Paket durchführt und einen Header in einem Pseudopaket weiterleitet, eines oder mehrere der drei Felder geändert werden, um die Länge des Pseudopakets anzugeben. Beispielsweise kann das Längenfeld im RETH-Header auf null gesetzt werden. Wenn die Netzwerkschnittstellenvorrichtung ein Pseudopaket empfängt und eine Nutzlast hinzufügt, können eines oder mehrere der drei Felder geändert werden, um die Länge des Pseudopakets mit zusätzlicher Nutzlast anzugeben. Beispielsweise kann das Längenfeld im RETH-Header auf die Nutzlastlänge eingestellt werden.
  • Als Nächstes wird ein beispielhafter Betrieb eines Parameterservers beschrieben. Der PS kann einen gleichen Speicherbereich für einen Satz von QPs zuweisen, deren Daten aggregiert werden sollen. Mit dieser Speicherzuweisung kann ein Speicherbereich einem Satz von QPs zugewiesen werden, deren Daten aggregiert werden sollen. Wenn der PS aggregierte Daten empfängt, fährt der PS mit der nächsten Operation der Berechnung fort. Es ist anzumerken, dass selbst in dem Fall, dass das Pseudopaket (z. B. der Paket-Header) später als die vollständigen aggregierten Daten eingeht, der PS das Pseudopaket unterscheidet, weil das Pseudopaket kein Datenfeld in dem Paket enthält. Es ist auch möglich, dass mehr als ein vollständig aggregiertes Datenpaket in derselben Speicherregion ankommt.
  • Bei einigen Beispielen führt die NIC des PS die Paketempfangsbestätigungs (ACK)- und Neuübertragungsanforderungen durch. Es ist anzumerken, dass, wenn der PS ein Pseudopaket (z. B. Paket-Header) oder ein vollständiges Paket empfängt, die NIC des PS eine ACK an den Worker sendet. Wenn die NIC des Workers die ACK empfängt, bestimmt die NIC, dass das Paket an das Ziel geliefert wurde. Falls die NIC des Workers die ACK nicht empfängt, überträgt die NIC des Workers erneut ein Paket. Einige Beispiele teilen die Anwendungsdatenverarbeitung und die Transportschichtverarbeitung unter der Netzwerkschnittstellenvorrichtung und der NIC des PS auf.
  • Im Folgenden werden Beispiele für verschiedene Paketverlustszenarien zur Verifizierung beschrieben. Es ist anzumerken, dass Paketverlustursachen Paketbeschädigungen, Netzwerküberlastungen oder beliebige andere Gründe sein können.
  • Falls das Paket A1 von W1 verloren geht, empfängt W1 eine NACK und überträgt A1 erneut. Falls zu diesem Zeitpunkt A2 von der Netzwerkschnittstellenvorrichtung empfangen wurde, ist es das letzte Paket und somit schreibt die Netzwerkschnittstellenvorrichtung die aggregierten Daten in A1 und leitet A1 an den PS weiter, andernfalls leitet die Netzwerkschnittstellenvorrichtung den Header von A1 an den PS weiter. In diesem Szenario empfängt der PS nur eine Kopie der aggregierten Ergebnisdaten.
  • In einem Fall, in dem der Header des Pakets A1 von der Netzwerkschnittstellenvorrichtung für das QP1 des PS bereitgestellt, aber nicht von der NIC des PS empfangen wird, fordert die NIC des PS eine erneute Übertragung des Pakets A1 an. Falls das Paket A2 an der Netzwerkschnittstellenvorrichtung ankommt, ist die Aggregation abgeschlossen, und somit schreibt die Netzwerkschnittstellenvorrichtung das aggregierte Ergebnis in A1 und leitet das aggregierte Ergebnis in A1 an den PS weiter. Der PS empfängt zwei Kopien der aggregierten Ergebnisdaten. Falls A2 nicht bei der Netzwerkschnittstellenvorrichtung angekommen ist, wenn das erneut übertragene Paket A1 bei der Netzwerkschnittstellenvorrichtung ankommt, ist dies nicht das letzte Paket, die Netzwerkschnittstellenvorrichtung verwirft die Nutzlast und leitet den Header von A1 an den PS weiter (Zeile 28 in 5).
  • In einem Fall, in dem das an das QP2 des PS gesendete Paket A2 verloren geht, gehen aggregierte Daten verloren. In diesem Fall überträgt die NIC eines Workers A2 erneut. Die Netzwerkschnittstellenvorrichtung führt eine Aggregation durch, und die Netzwerkschnittstellenvorrichtung schreibt das aggregierte Ergebnis in das erneut übertragene Paket A2 und leitet das erneut übertragene Paket A2 an den PS weiter. Der PS empfängt eine Kopie der aggregierten Daten.
  • In einem Fall, in dem eine ACK an W1 verloren geht, veranlasst die NIC des PS eine erneute Übertragung des Pakets A1. Falls das Paket A2 an der Netzwerkschnittstellenvorrichtung ankommt, ist die Aggregation abgeschlossen, und die Netzwerkschnittstellenvorrichtung schreibt die aggregierten Daten in das Paket A1 und leitet das Paket A1 an den PS weiter. Der PS empfängt eine Kopie der aggregierten Daten von Paket A2, da diese erneut übertragene Kopie von Daten durch die NIC des PS verworfen werden kann, da dieselbe Sequenz von Paket bereits empfangen wurde. Falls A2 nicht an der Netzwerkschnittstellenvorrichtung angekommen ist, wenn das erneut übertragene Paket A1 bei der Netzwerkschnittstellenvorrichtung ankommt, kann die Netzwerkschnittstellenvorrichtung die Nutzlast verwerfen und den Header von A1 an den PS weiterleiten (z. B. Zeile 28 in 4).
  • In einem Fall, in dem eine ACK an W2 verloren geht, veranlasst die NIC des PS eine erneute Übertragung des Pakets A2. Die Aggregation ist abgeschlossen, und die Netzwerkschnittstellenvorrichtung schreibt das aggregierte Ergebnis in das Paket A2 und leitet das Paket A2 an den PS weiter. Die NIC des PS empfängt zwei Kopien der Daten, da die gleiche Sequenz des Pakets empfangen wurde, und die NIC des PS verwirft das erneut übertragene Paket. Der PS greift auf eine Kopie der aggregierten Daten zu.
  • 6 zeigt ein Beispiel für eine Allgather-Operation. Eine Allgather-Operation kann Ergebnisse von dem PS1 an die Worker W1 und W2 verteilen. In einer Allgather-Operation sendet der PS1 eine Kopie von Daten an die Netzwerkschnittstellenvorrichtung 600, um sie an die Worker W1 und W2 zu verteilen, indem die Daten in einem Paket an die Netzwerkschnittstellenvorrichtung 600 gesendet werden, und sendet Pseudopakete an die Netzwerkschnittstellenvorrichtung 600, um sie an den Rest der Worker (z. B. W2) weiterzuleiten. Der PS1 kann eine Kopie der aggregierten Daten an die Netzwerkschnittstellenvorrichtung 600 senden, um sie an einen Worker zu senden, und PS1 sendet einen Paket-Header, z. B. die RDMA-NUR-SCHREIB-Anforderung ohne Nutzlast, an die Netzwerkschnittstellenvorrichtung 600, um sie an die aggregierten Daten anzuhängen und an den/die anderen Worker(en) zu senden. Der PS1 sendet Pakete, die mit der Worker-ID kodiert sind
  • Der PS1 sendet zuerst die Daten a' von dem QP2 an die Netzwerkschnittstellenvorrichtung 600. Die Netzwerkschnittstellenvorrichtung 600 speichert die Daten a' (Drop-off a') und leitet das Paket an W2 weiter. Der PS1 sendet ein Pseudopaket mit einem Paket-Header von QP1, aber ohne Nutzlast a' an die Netzwerkschnittstellenvorrichtung 600, um sie an W 1 weiterzuleiten. Die Netzwerkschnittstellenvorrichtung 600 hängt jedoch die Nutzlast a' (Pick-up a') an den Paket-Header an und leitet das erstellte Paket an W1 weiter.
  • Falls die Start-Paketsequenznummern (PSN) von unterschiedlichen Hosts gleich sind, kann dies die Konflikte auf den Slots von Netzwerkschnittstellenvorrichtungen auf unterschiedlichen Parameterservern verursachen, die denselben unter Verwendung desselben pool index (Poolindex) verwenden. Durch die Verwendung des pool_index_start_point (Poolindex-Startpunkt) können Konflikte auf den Slots der Netzwerkschnittstellenvorrichtungen vermieden werden.
  • Bei einigen Beispielen ist die integrierte Multicast-Gruppe der Netzwerkschnittstellenvorrichtung 600 nicht für die Verwendung zum Senden von a' an W1 und W2 konfiguriert. Die Verwendung einer integrierten Multicast-Gruppe kann das Speichern von QP-Informationen beinhalten, um den Paket-Header neu zu schreiben, während der Multicast dasselbe Paket an unterschiedliche QPs repliziert und das QP des PS Pakete sendet, um die Verbindung aufrechtzuerhalten.
  • 7 zeigt einen beispielhaften Pseudocode von Operationen zum Durchführen einer Allgather-Operation. Beim Empfangen eines Pakets, speichert die Netzwerkschnittstellenvorrichtung, falls das Paket nicht empfangen wurde (z. B. Zeile 7 des Pseudocodes in 7), wenn die Gesamtanzahl von identifizierten Paketen verschiedener Worker null ist und das Paket die volle Nutzlast aufweist, die Nutzlast in dem Pool und aktualisiert die Bitmap und den Zähler (z. B. Zeile 11-15 des Pseudocodes in 7). Falls die Gesamtanzahl von identifizierten Paketen verschiedener Worker null ist und die Länge des Pakets null ist, z. B. das Pseudopaket, verwirft die Netzwerkschnittstellenvorrichtung dieses Paket (z. B. Zeile 9-10 des Pseudocodes in 7).
  • Falls die Gesamtanzahl verschiedener Pakete, die identifiziert wurden, größer als null ist und die Paketlänge null ist, hängt die Netzwerkschnittstellenvorrichtung die Daten aus dem Pool an das Pseudopaket an und aktualisiert die Bitmap und den Zähler (z. B. Zeile 17-21 des Pseudocodes in 7). Wenn die Gesamtanzahl verschiedener Pakete, die identifiziert wurden, die Gesamtanzahl von Workern ist, setzt die Netzwerkschnittstellenvorrichtung die Bitmap und den Zähler für ihren entsprechenden Schattenpool-Slot zurück (z. B. Zeile 24-26 des Pseudocodes in 7).
  • Wenn das Paket identifiziert wurde und es sich um ein Pseudopaket handelt, schreibt die Netzwerkschnittstellenvorrichtung die Daten aus dem Pool in die Nutzlast des Pakets. Die Netzwerkschnittstellenvorrichtung leitet das Paket weiter (z. B. Zeile 27-30 des Pseudocodes in 7).
  • Im Folgenden werden verschiedene Paketverlustszenarien beschrieben. In einem Szenario, in dem ein vollständiges Nutzlastpaket von QP2 auf dem Pfad von PS1 zur Netzwerkschnittstellenvorrichtung verworfen wird, kann das Pseudopaket zuerst an der Netzwerkschnittstellenvorrichtung empfangen werden. Wenn die Netzwerkschnittstellenvorrichtung diese Pseudopakete empfängt, löscht die Netzwerkschnittstellenvorrichtung sie (z. B. Zeile 8-10 des Pseudocodes in 7).
  • In einem Szenario, in dem ein vollständiges Nutzlastpaket von QP2 auf einem Pfad von der Netzwerkschnittstellenvorrichtung zu W2 verworfen wird, überträgt die NIC des PS1 das Paket von QP2 erneut, und die Netzwerkschnittstellenvorrichtung leitet das Paket an Q2 weiter (z. B. Zeile 30 des Pseudocodes in 7).
  • In einem Szenario, in dem ein Pseudopaket auf einem Pfad von PS1 zur Netzwerkschnittstellenvorrichtung verworfen wird, überträgt die NIC des PS 1 das Pseudopaket von QP1 erneut, und die Netzwerkschnittstellenvorrichtung schreibt eine Nutzlast in das Pseudopaket und leitet das Paket weiter (z. B. Zeile 17-21 des Pseudocodes in 7).
  • In einem Szenario, in dem ein Pseudopaket auf einem Pfad von der Netzwerkschnittstellenvorrichtung zu W1 verworfen wird, überträgt die NIC des PS 1 das Pseudopaket von QP1 erneut, die Netzwerkschnittstellenvorrichtung schreibt die Nutzlast in das Paket und leitet das Paket mit der Nutzlast an W1 weiter (z. B. Zeile 28-30 des Pseudocodes in 7).
  • In einem Szenario, in dem zwei Pakete von den Netzwerkschnittstellenvorrichtungen an unterschiedliche Workern verworfen werden, werden die zwei Pakete erneut übertragen (z. B. Zeile 28-30 des Pseudocodes in 7).
  • 8A zeigt einen beispielhaften Prozess, der an einer Netzwerkschnittstellenvorrichtung durchgeführt werden kann. Bei 802 kann eine Netzwerkschnittstellenvorrichtung konfiguriert sein, um eine Berechnung in Bezug auf mindestens ReduceScatter, Allgather oder Allreduce für Daten von Workern im Auftrag eines Servers durchzuführen. Bei einigen Beispielen kann der Server ein Parameterserver sein. Bei einigen Beispielen kann die Netzwerkschnittstellenvorrichtung konfiguriert sein, um Datenberechnungen (z. B. Summierung, Subtraktion, min-max- oder andere algebraische Operationen) an in Paketen empfangenen Daten durchzuführen. Bei einigen Beispielen kann die Netzwerkschnittstellenvorrichtung konfiguriert sein, um Header von empfangenen Pakete an den Parameterserver weiterzuleiten, um die Verbindungsaufrechterhaltung an den Parameterserver auszulagern.
  • Bei 804 kann die Netzwerkschnittstellenvorrichtung ein Paket von einem Worker empfangen. Das Paket kann einen Poolindex-Startpunkt angeben, einen Worker identifizieren, der das Paket gesendet hat, und eine Richtung einer Operation angeben, die an den Daten durchzuführen ist. Bei 806 kann die Netzwerkschnittstellenvorrichtung eine Berechnung an den empfangenen Daten basierend auf der angegebenen Operation durchführen, die an den Daten durchgeführt werden soll. Bei einigen Beispielen können die Daten einen Gradienten oder Koeffizienten oder andere Werte in Verbindung mit MI,- oder DNN-Training oder -Inferenz beinhalten. Die Netzwerkschnittstellenvorrichtung kann ein Ergebnis der Berechnung in einem Speicher-Slot speichern, der basierend auf dem Poolindex-Startpunkt identifiziert wird. Bei 808 kann die Netzwerkschnittstellenvorrichtung einen Tracker aktualisieren, von dem der Worker Daten beigetragen hat. Beispielsweise kann die Netzwerkschnittstellenvorrichtung eindeutige Worker in einer Gruppe von Workern zählen, die der Operation zugeordnet sind und Daten beigetragen haben. Bei 810 kann bestimmt werden, ob alle Worker in der Gruppe von Workern, die der Operation zugeordnet sind, Daten beigetragen haben. Basierend darauf, dass alle Worker in der Gruppe von Workern, die der Operation zugeordnet sind, Daten beigetragen haben, kann der Prozess bei 812 fortfahren, wobei die Netzwerkschnittstellenvorrichtung ein Paket mit einer aggregierten Berechnung, die basierend auf Daten von Workern in der Gruppe von Workern bestimmt wird, die der Operation zugeordnet sind, an den Parameterserver senden kann. Basierend darauf, dass weniger als alle Worker in der Gruppe von Workern, die der Operation zugeordnet sind, Daten beigetragen haben, kann der Prozess bei 804 fortfahren.
  • 8B zeigt einen beispielhaften Prozess, der an einer Netzwerkschnittstellenvorrichtung durchgeführt werden kann. Bei 850 kann eine Netzwerkschnittstellenvorrichtung konfiguriert sein, um eine Verteilung berechneter Ergebnisse von einem Parameterserver oder der Netzwerkschnittstellenvorrichtung in Bezug auf mindestens ReduceScatter, Allgather oder Allreduce an die Worker im Auftrag eines Parameterservers durchzuführen. Bei einigen Beispielen kann die Netzwerkschnittstellenvorrichtung konfiguriert sein, um Datenberechnungen (z. B. Summierung, Subtraktion, min-max- oder andere algebraische Operationen) an in Paketen empfangenen Daten durchzuführen.
  • Bei 852 kann die Netzwerkschnittstellenvorrichtung berechnete Ergebnisdaten in einem Paket von einem Server empfangen, um die berechneten Ergebnisdaten an Worker in einer Worker-Gruppe zu senden. Bei 854 kann die Netzwerkschnittstellenvorrichtung ein Paket ohne Daten (Pseudopaket) von dem Server empfangen, und die Netzwerkschnittstellenvorrichtung soll die berechneten Ergebnisdaten in das Pseudopaket aufnehmen, um die berechneten Ergebnisdaten an einen Worker zu senden, der im Header des Pseudopakets identifiziert ist.
  • Bei einigen Beispielen können die berechneten Ergebnisdaten in der Netzwerkschnittstellenvorrichtung gespeichert werden, und der Server kann ein Pseudopaket an die Netzwerkschnittstellenvorrichtung senden, das an Worker der Worker-Gruppe gerichtet ist, und die Netzwerkschnittstellenvorrichtung kann die berechneten Ergebnisdaten in das empfangene Pseudopaket aufnehmen und das Pseudopaket mit den berechneten Ergebnisdaten an den Worker weiterleiten.
  • 9A stellt ein beispielhaftes Netzwerkweiterleitungssystem dar, das als eine Netzwerkschnittstellenvorrichtung oder ein Router verwendet werden kann. Zum Beispiel veranschaulicht 9 mehrere Eingangspipelines 920, eine Verkehrsverwaltungseinheit (als Verkehrsmanager bezeichnet) 950 und mehrere Ausgangspipelines 930. Obwohl sie als separate Strukturen gezeigt sind, können die Eingangspipelines 920 und die Ausgangspipelines 930 bei manchen Beispielen die gleichen Schaltungsressourcen verwenden.
  • Der Betrieb von Pipelines kann unter Verwendung von Programmierprotokollunabhängigen Paketprozessoren (P4), C, Python, Broadcom Network Programming Language (NPL) oder x86-kompatiblen ausführbaren Binärcodes oder anderen ausführbaren Binärcodes programmiert werden. Bei einigen Beispielen ist die Pipelineschaltung konfiguriert, um Eingangs- und/oder Ausgangspipeline-Pakete synchron sowie Nichtpaketdaten zu verarbeiten. Das heißt, eine bestimmte Stufe der Pipeline kann eine beliebige Kombination eines eingehenden Pakets, eines ausgehenden Pakets und von Nichtpaketdaten in demselben Taktzyklus verarbeiten. In anderen Beispielen sind die Eingangs- und Ausgangspipelines jedoch separate Schaltungen. In einigen dieser anderen Beispiele verarbeiten die Eingangspipelines auch die Nichtpaketdaten.
  • Bei einigen Beispielen wird das Paket als Reaktion auf das Empfangen eines Pakets zu einer der Eingangspipelines 920 geleitet, wo eine Eingangspipeline einem oder mehreren Anschlüssen eines Hardware-Weiterleitungselements entsprechen kann. Nach dem Durchlaufen der ausgewählten Eingangspipeline 920 wird das Paket an den Verkehrsmanager 950 gesendet, wo das Paket eingereiht und in den Ausgangspuffer 954 platziert wird. Bei einigen Beispielen spezifiziert die Eingangspipeline 920, die das Paket verarbeitet, in welche Warteschlange das Paket durch den Verkehrsmanager 950 platziert werden soll (z. B. basierend auf dem Ziel des Pakets oder einer Flusskennung des Pakets). Der Verkehrsmanager 950 sendet dann das Paket an die geeignete Ausgangspipeline 930, wobei eine Ausgangspipeline einem oder mehreren Ports des Weiterleitungselements entsprechen kann. Bei einigen Beispielen gibt es keine notwendige Korrelation dahingehend, welche der Eingangspipelines 920 ein Paket verarbeitet und an welche der Ausgangspipelines 930 der Verkehrsmanager 950 das Paket versendet. Das heißt, ein Paket könnte anfänglich durch die Eingangspipeline 920b nach Empfang durch einen ersten Port und dann anschließend durch die Ausgangspipeline 930a verarbeitet werden, um aus einem zweiten Port gesendet zu werden usw.
  • Mindestens eine Eingangspipeline 920 weist einen Parser 922, eine Kette mehrerer Übereinstimmungsaktionseinheiten (Match-Action Units, MAUs) 924 und einen Deparser 926 auf. Gleichermaßen kann die Ausgangspipeline 930 einen Parser 932, eine Kette von MAUs 934 und einen Deparser 936 beinhalten. Der Parser 922 oder 932 empfängt bei einigen Beispielen ein Paket als eine formatierte Sammlung von Bits in einer bestimmten Reihenfolge und parst das Paket in seine konstituierenden Header-Felder. Bei einigen Beispielen startet der Parser am Anfang des Pakets und weist Feldern (z. B. Datencontainern) Header-Felder zur Verarbeitung zu. In einigen Ausführungsformen trennt der Parser 922 oder 932 die Paket-Header (bis zu einem festgelegten Punkt) von den Nutzlasten des Pakets und sendet die Nutzlasten (oder das gesamte Paket, einschließlich der Header und Nutzlasten) direkt an den Deparser, ohne die MAU-Verarbeitung zu durchlaufen. Der Ausgangsparser 932 kann zusätzliche Metadaten verwenden, die von der Eingangspipeline bereitgestellt werden, um seine Verarbeitung zu vereinfachen.
  • Die MAUs 924 oder 934 können eine Verarbeitung an den Paketdaten durchführen. Bei einigen Beispielen beinhalten die MAUs eine Folge von Stufen, wobei jede Stufe eine oder mehrere Übereinstimmungstabellen und eine Aktions-Engine beinhaltet. Eine Übereinstimmungstabelle kann einen Satz von Übereinstimmungseinträgen beinhalten, mit denen die Paket-Header-Felder abgeglichen werden (z. B. unter Verwendung von Hash-Tabellen), wobei die Übereinstimmungseinträge auf Aktionseinträge verweisen. Wenn das Paket mit einem bestimmten Übereinstimmungseintrag übereinstimmt, referenziert dieser bestimmte Übereinstimmungseintrag einen bestimmten Aktionseintrag, der einen Satz von Aktionen spezifiziert, die an dem Paket durchzuführen sind (z. B. Senden des Pakets an einen bestimmten Port, Modifizieren eines oder mehrerer Paket-Header-Feldwerte, Verwerfen des Pakets, Spiegeln des Pakets in einen Spiegelpuffer usw.). Die Aktions-Engine der Phase kann die Aktionen an dem Paket durchführen, das dann an die nächste Phase der MAU gesendet wird. Zum Beispiel unter Verwendung von MAU(s) ist dies die Paketverarbeitung, das Empfangen von Worker-Daten, das Weiterleiten eines Paket-Headers von einem Worker zu einem Server oder das Einfügen berechneter Ergebnisdaten in Pakete, die an Worker gesendet werden sollen, wie hier beschrieben.
  • Der Deparser 926 oder 936 kann das Paket unter Verwendung eines Paket-Header-Vektors (PHV), wie durch die MAU 924 oder 934 modifiziert, und der Nutzlast, die direkt von dem Parser 922 oder 932 empfangen wird, rekonstruieren. Der Deparser kann ein Paket erstellen, das über das physische Netzwerk oder an den Verkehrsmanager 950 gesendet werden kann. Bei einigen Beispielen kann der Deparser dieses Paket basierend auf Daten, die zusammen mit dem PHV empfangen werden, die Protokolle spezifizieren, die in den Paket-Header aufzunehmen sind, sowie seiner eigenen gespeicherten Liste von Datencontainerpositionen für die Header-Felder jedes möglichen Protokolls konstruieren.
  • Der Verkehrsmanager 950 kann einen Paketreplikator 952 und einen Ausgabepuffer 954 beinhalten. In einigen Ausführungsformen kann der Verkehrsmanager 950 andere Komponenten beinhalten, wie etwa einen Rückmeldungsgenerator zum Senden von Signalen bezüglich Ausgangsanschlussausfällen, eine Reihe von Warteschlangen und Planern für diese Warteschlangen, Warteschlangenzustandsanalysekomponenten sowie zusätzliche Komponenten. Der Paketreplikator 952 einiger Beispiele führt eine Replikation für Broadcast-/Multicastpakete durch, wobei mehrere Pakete erzeugt werden, die zu dem Ausgabepuffer hinzugefügt werden sollen (die z. B. an unterschiedliche Ausgangspipelines verteilt werden sollen).
  • Der Ausgabepuffer 954 kann bei einigen Beispielen Teil eines Warteschlangen- und Puffersystems des Verkehrsmanagers sein. Der Verkehrsmanager 950 kann einen gemeinsam genutzten Puffer bereitstellen, der etwaige Warteschlangenverzögerungen in den Ausgangspipelines berücksichtigt. Bei einigen Beispielen kann dieser gemeinsam genutzte Ausgabepuffer 954 Paketdaten speichern, während Referenzen (z. B. Zeiger) auf diese Paketdaten in unterschiedlichen Warteschlangen für jede Ausgangspipeline 930 gehalten werden. Die Ausgangspipelines können ihre jeweiligen Daten aus dem gemeinsamen Datenpuffer unter Verwendung einer Warteschlangenrichtlinie anfordern, die auf Steuerebene konfigurierbar ist. Wenn eine Paketdatenreferenz den Anfang ihrer Warteschlange erreicht und zum Entfernen aus der Warteschlange eingeplant ist, können die entsprechenden Paketdaten aus dem Ausgabepuffer 954 und in die entsprechende Ausgangspipeline 930 gelesen werden.
  • 9B zeigt einen beispielhaften Switch. Verschiedene Beispiele können in oder mit dem Switch verwendet werden, um eine netzwerkinterne Berechnung, Pseudopaketweiterleitung oder eine Modifikation zum Hinzufügen oder Entfernen einer Nutzlast durchzuführen, wie hier beschrieben. Der Switch kann als ein System-on-Chip (SoC) implementiert sein. Der Switch 964 kann Pakete oder Frames eines beliebigen Formats oder gemäß einer beliebigen Spezifikation von einem beliebigen Port 962-0 bis 962-X zu einem beliebigen der Ports 966-0 bis 966-Y (oder umgekehrt) routen. Beliebige der Ports 962-0 bis 962-X können mit einem Netzwerk aus einer oder mehreren miteinander verbundenen Vorrichtungen verbunden sein. Gleichermaßen kann jeder der Ports 966-0 bis 966-Y mit einem Netzwerk aus einer oder mehreren miteinander verbundenen Vorrichtungen verbunden sein.
  • Bei einigen Beispielen kann die Switch-Fabric 970 Routing von Paketen von einem oder mehreren Eingangsports zur Verarbeitung vor dem Austritt aus dem Switch 964 bereitstellen. Die Switch-Fabric 970 kann als eine oder mehrere Multi-Hop-Topologien implementiert sein, wobei beispielhafte Topologien, neben anderen Implementierungen, Torus, Butterflies, gepufferte mehrstufige usw. oder Shared Memory Schalter Fabric (SMSF) beinhalten. Die SMSF kann eine beliebige Switch-Fabric sein, die mit Eingangsports und allen Ausgangsports in dem Switch verbunden ist, wobei Eingangssubsysteme Paketsegmente in den Speicher der Fabric schreiben (speichern), während die Ausgangssubsysteme Paketsegmente aus dem Speicher der Fabric lesen (abrufen).
  • Der Speicher 968 kann konfiguriert sein, um Pakete, die an Ports empfangen werden, vor dem Austritt aus einem oder mehreren Ports zu speichern. Die Paketverarbeitungspipelines 972 können bestimmen, welcher Port Pakete oder Frames übertragen soll, um eine Tabelle zu verwenden, die Paketcharakteristiken auf einen zugeordneten Ausgangssport abbildet. Die Paketverarbeitungspipelines 972 können konfiguriert sein, um eine Übereinstimmungsaktion an empfangenen Paketen durchzuführen, um Paketverarbeitungsregeln und nächste Hops unter Verwendung von Informationen zu identifizieren, die bei manchen Beispielen in ternären inhaltsadressierbaren Speicher (TCAM)-Tabellen oder Tabellen mit exakter Übereinstimmung gespeichert sind. Beispielsweise können Übereinstimmungsaktionstabellen oder -schaltungen verwendet werden, wodurch ein Hash eines Teils eines Pakets als ein Index verwendet wird, um einen Eintrag zu finden. Die Paketverarbeitungspipelines 972 können eine Zugriffssteuerliste (Access Control List, ACL) oder Paketverwürfe aufgrund von Warteschlangenüberlauf implementieren. Die Paketverarbeitungspipelines 972 können konfiguriert sein, um eine netzwerkinterne Berechnung, Pseudopaketweiterleitung oder eine Modifikation zum Hinzufügen oder Entfernen einer Nutzlast durchzuführen, wie hier beschrieben. Die Betriebskonfiguration der Paketverarbeitungspipelines 972, einschließlich ihrer Datenebene, kann unter Verwendung von P4, C, Python, Broadcom Network Programming Language (NPL) oder x86-kompatiblen ausführbaren Binärdateien oder anderen ausführbaren Binärdateien programmiert werden. Die Prozessoren 976 und die FPGAs 978 können zur Paketverarbeitung oder -modifikation genutzt werden.
  • 10 zeigt ein beispielhaftes Rechensystem. Komponenten des Systems 1000 (z. B. Prozessor 1010, Netzwerkschnittstelle 1050 und so weiter) dienen zur Paketverarbeitung, dem Empfangen von Worker-Daten, dem Weiterleiten eines Paket-Headers von einem Worker zu einem Server oder dem Einfügen berechneter Ergebnisdaten in Pakete, die an Worker gesendet werden sollen, wie hier beschrieben. Das System 1000 beinhaltet einen Prozessor 1010, der die Verarbeitung, Betriebsverwaltung und Ausführung von Anweisungen für das System 1000 bereitstellt. Der Prozessor 1010 kann eine beliebige Art von Mikroprozessor, Zentralverarbeitungseinheit (Central Processing Unit, CPU), Grafikverarbeitungseinheit (Graphics Processing Unit, GPU), Verarbeitungskern oder andere Verarbeitungshardware zum Bereitstellen von Datenverarbeitung für das System 1000 oder eine Kombination von Prozessoren beinhalten. Der Prozessor 1010 steuert den Gesamtbetrieb des Systems 1000 und kann einen oder mehrere programmierbare Universal- oder Spezialzweckmikroprozessoren, Digitalsignalprozessoren (DSPs), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltkreise (Application Specific Integrated Circuits, ASICs), programmierbare logische Schaltungen (Programmable Logic Devices, PLDs) oder dergleichen oder eine Kombination solcher Vorrichtungen sein oder diese beinhalten.
  • In einem Beispiel beinhaltet das System 1000 eine Schnittstelle 1012, die mit dem Prozessor 1010 gekoppelt ist und die eine Schnittstelle mit höherer Geschwindigkeit oder eine Schnittstelle mit hohem Durchsatz für Systemkomponenten, die Verbindungen mit größerer Bandbreite benötigen, wie etwa das Speichersubsystem 1020 oder Grafikschnittstellenkomponenten 1040 oder Beschleuniger 1042, darstellen kann. Die Schnittstelle 1012 stellt eine Schnittstellenschaltung dar, die eine eigenständige Komponente sein kann oder die auf einem Prozessor-Chip integriert sein kann. Wo vorhanden, stellt die Grafikschnittstelle 1040 eine Schnittstelle mit Grafikkomponenten her, um einem Benutzer des Systems 1000 eine visuelle Anzeige bereitzustellen. Bei einem Beispiel kann die Grafikschnittstelle 1040 eine hochauflösende (High Definition, HD) Anzeige ansteuern, die eine Ausgabe für einen Benutzer bereitstellt. Die Bezeichnung „hochauflösend“ (High Definition) kann sich auf eine Anzeige mit einer Pixeldichte von etwa 100 Pixel pro Zoll (Pixels Per Inch, PPI) oder mehr beziehen und kann Formate wie etwa Full-HD (z. B. 1080p), Retina-Displays, 4K (Ultra High Definition, UHD) oder andere beinhalten. Bei einem Beispiel kann die Anzeige eine Touchscreen-Anzeige beinhalten. Bei einem Beispiel erzeugt die Grafikschnittstelle 1040 eine Anzeige basierend auf im Speicher 1030 gespeicherten Daten oder basierend auf durch den Prozessor 1010 ausgeführten Operationen oder basierend auf beidem. In einem Beispiel erzeugt die Grafikschnittstelle 1040 eine Anzeige basierend auf Daten, die im Speicher 1030 gespeichert sind, oder basierend auf Operationen, die durch den Prozessor 1010 ausgeführt werden, oder beidem.
  • Die Beschleuniger 1042 können eine Auslagerungs-Engine mit fester Funktion oder eine programmierbare Auslagerungs-Engine sein, auf die durch einen Prozessor 1010 zugegriffen werden kann oder die von diesem verwendet werden kann. Beispielsweise kann ein Beschleuniger unter den Beschleunigern 1042 Komprimierungs (DC)-Fähigkeit, Kryptografiedienste, wie etwa Verschlüsselung mit öffentlichem Schlüssel (PKE), Chiffrier-, Hash-/Authentifizierungsfähigkeiten, Entschlüsselung oder andere Fähigkeiten oder Dienste bereitstellen. Bei einigen Beispielen stellt ein Beschleuniger unter den Beschleunigern 1042 zusätzlich oder alternativ dazu Feldauswahlsteuerungsfähigkeiten bereit, wie hier beschrieben. In einigen Fällen können Beschleuniger 1042 in einen CPU-Sockel (z. B. einen Verbinder zu einer Hauptplatine oder Leiterplatte, die eine CPU aufweist und eine elektrische Schnittstelle mit der CPU bereitstellt) integriert sein. Die Beschleuniger 1042 können zum Beispiel einen Einzel- oder Mehrkernprozessor, eine Grafikverarbeitungseinheit, einen Single- oder Multi-Level-Cache einer logischen Ausführungseinheit, Funktionseinheiten, die zum unabhängigen Ausführen von Programmen oder Threads verwendbar sind, anwendungsspezifische integrierte Schaltungen (ASICs), Prozessoren für neuronale Netzwerke (NNPs), programmierbare Steuerlogik und programmierbare Verarbeitungselemente, wie etwa Field Programmable Gate Arrays (FPGAs) oder programmierbare logische Schaltungen (PLDs), beinhalten. Die Beschleuniger 1042 können mehrere neuronale Netzwerke, CPUs, Prozessorkerne, Universal-Grafikverarbeitungseinheiten bereitstellen, oder Grafikverarbeitungseinheiten können zur Verwendung durch Modelle für künstliche Intelligenz (KI) oder maschinelles Lernen (ML) verfügbar gemacht werden. Zum Beispiel kann das AI-Modell eines oder mehrere von Folgenden verwenden oder beinhalten: ein Verstärkungslernschema, ein Q-Lernschema, Deep-Q-Lernen oder Asynchronous Advantage Actor-Critic (A3C), ein kombinatorisches neuronales Netzwerk, ein rekurrentes kombinatorisches neuronales Netzwerk oder ein anderes AI- oder ML-Modell. Mehrere neuronale Netze, Prozessorkerne oder Grafikverarbeitungseinheiten können zur Verwendung durch AI- oder ML-Modelle bereitgestellt werden.
  • Das Datenspeicherteilsystem 1020 stellt den Hauptspeicher des Systems 1000 dar und stellt Datenspeicher für Code, der vom Prozessor 1010 ausgeführt werden soll, oder Datenwerte, die beim Ausführen einer Routine verwendet werden sollen, bereit. Das Speichersubsystem 1020 kann eine oder mehrere Speichervorrichtungen 1030, wie etwa einen Festwertspeicher (ROM), einen Flash-Speicher, eine oder mehrere Arten von Direktzugriffsspeicher (RAM), wie etwa DRAM, oder andere Speichervorrichtungen oder eine Kombination solcher Vorrichtungen beinhalten. Der Speicher 1030 speichert und hostet unter anderem das Betriebssystem (OS) 1032, um eine Softwareplattform zur Ausführung von Anweisungen in dem System 1000 bereitzustellen. Außerdem können Anwendungen 1034 auf der Softwareplattform des OS 1032 aus dem Speicher 1030 ausgeführt werden. Die Anwendungen 1034 stellen Programme dar, die ihre eigene Betriebslogik haben, um die Ausführung einer oder mehrerer Funktionen durchzuführen. Die Prozesse 1036 stellen Agenten oder Routinen dar, die dem OS 1032 oder einer oder mehreren Anwendungen 1034 oder einer Kombination Hilfsfunktionen bereitstellen. Das OS 1032, die Anwendungen 1034 und die Prozesse 1036 stellen Softwarelogik bereit, um dem System 1000 Funktionen bereitzustellen. In einem Beispiel beinhaltet das Speichersubsystem 1020 eine Speichersteuerung 1022, die eine Speichersteuerung zum Erzeugen und Ausgeben von Befehlen an den Speicher 1030 ist. Es versteht sich, dass die Speichersteuerung 1022 ein physischer Teil des Prozessors 1010 oder ein physischer Teil der Schnittstelle 1012 sein könnte. Zum Beispiel kann die Speichersteuerung 1022 eine integrierte Speichersteuerung sein, die in einer Schaltung mit dem Prozessor 1010 integriert ist.
  • Bei manchen Beispielen kann das OS 1032 Linux®, Windows® Server oder Personal Computer, FreeBSD®, Android®, MacOS®, iOS®, VMware vSphere, openSUSE, RHEL, CentOS, Debian, Ubuntu oder ein beliebiges anderes Betriebssystem sein. Das OS und der Treiber können auf einer CPU ausgeführt werden, die u. a. von Intel®, ARM®, AMD®, Qualcomm®, IBM®, Texas Instruments® verkauft oder konzipiert wird. Bei einigen Beispielen kann ein Treiber die Netzwerkschnittstelle 1050 konfigurieren, um die Paketverarbeitung, den Empfangen von Worker-Daten, das Weiterleiten eines Paket-Headers von einem Worker zu einem Server oder das Einfügen berechneter Ergebnisdaten in Pakete, die an Worker gesendet werden sollen, durchzuführen, wie hier beschrieben. Bei einigen Beispielen kann ein Treiber das Auslagern an die Netzwerkschnittstelle 1050, die Paketverarbeitung, den Empfang von Worker-Daten, das Weiterleiten eines Paket-Headers von einem Worker zu einem Server oder das Einfügen berechneter Ergebnisdaten in Pakete, die an Worker gesendet werden sollen, aktivieren oder deaktivieren, wie hier beschrieben. Ein Treiber kann die Fähigkeit der Netzwerkschnittstelle 1050 ankündigen, einen oder mehrere Aspekte der Netzwerkschnittstelle 1050 durchzuführen, um die Paketverarbeitung, den Empfang von Worker-Daten, das Weiterleiten eines Paket-Headers von einem Worker zu einem Server oder das Einfügen berechneter Ergebnisdaten in Pakete, die an Worker gesendet werden sollen, durchzuführen, wie hier beschrieben.
  • Obwohl dies nicht speziell veranschaulicht ist, versteht es sich, dass das System 1000 einen oder mehrere Busse oder Bussysteme zwischen Vorrichtungen beinhalten kann, wie etwa einen Speicherbus, einen Grafikbus, Schnittstellenbusse oder andere. Busse oder andere Signalleitungen können Komponenten kommunizierend oder elektrisch miteinander koppeln oder die Komponenten sowohl kommunizierend als auch elektrisch koppeln. Busse können physische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Bridges, Adapter, Steuerungen oder andere Schaltungen oder eine Kombination davon beinhalten. Busse können zum Beispiel einen Systembus und/oder einen Peripheral Component Interconnect (PCI)-Bus und/oder einen Hyper-Transport- oder Industriestandard-Architektur (ISA)-Bus und/oder einen Small Computer System Interface (SCI)-Bus und/oder einen Universal Serial Bus (USB) oder einen 1394-Bus nach Institute of Electrical and Electronics Engineers (IEEE)-Standard (Firewire) beinhalten.
  • In einem Beispiel beinhaltet das System 1000 eine Schnittstelle 1014, die mit der Schnittstelle 1012 gekoppelt sein kann. In einem Beispiel stellt die Schnittstelle 1014 eine Schnittstellenschaltung dar, die eigenständige Komponenten und integrierte Schaltungen beinhalten kann. Bei einem Beispiel sind mehrere Benutzerschnittstellenkomponenten oder Peripheriekomponenten oder beide mit der Schnittstelle 1014 gekoppelt. Die Netzwerkschnittstelle 1050 stellt dem System 1000 die Möglichkeit bereit, mit entfernten Vorrichtungen (z. B. Servern oder anderen Rechenvorrichtungen) über ein oder mehrere Netzwerke zu kommunizieren. Die Netzwerkschnittstelle 1050 kann einen Ethernet-Adapter, drahtlose Verbindungskomponenten, Zellularnetzwerkverbindungskomponenten, einen Universal Serial Bus (USB) oder andere auf drahtgebundenen oder drahtlosen Standards basierende oder proprietäre Schnittstellen beinhalten. Die Netzwerkschnittstelle 1050 kann Daten an eine Vorrichtung senden, die sich in demselben Rechenzentrum oder Rack oder in derselben entfernen Vorrichtung befindet, was ein Senden von im Speicher gespeicherten Daten beinhalten kann.
  • Manche Beispiele für die Netzwerkschnittstelle 1050 sind Teil einer Infrastrukturverarbeitungseinheit (Infrastructure Processing Unit, IPU) oder einer Datenverarbeitungseinheit (Data Processing Unit, DPU) oder werden durch eine IPU oder DPU genutzt. Eine xPU kann sich mindestens auf eine IPU, DPU, GPU, GPGPU oder andere Verarbeitungseinheiten (z. B. Beschleunigervorrichtungen) beziehen. Eine IPU oder DPU kann eine Netzwerkschnittstelle mit einer oder mehreren programmierbaren Pipelines oder Festfunktionsprozessoren beinhalten, um ein Auslagern von Operationen durchzuführen, die durch eine CPU hätten ausgeführt werden können. Die IPU oder DPU kann eine oder mehrere Speichervorrichtungen beinhalten. Bei einigen Beispielen kann die IPU oder DPU virtuelle Umschaltoperationen durchführen, Datenspeichertransaktionen (z. B. Komprimierung, Verschlüsselung, Virtualisierung) verwalten und Operationen verwalten, die auf anderen IPUs, DPUs, Servern oder Vorrichtungen durchgeführt werden.
  • In einem Beispiel enthält das System 1000 eine oder mehrere Eingabe/Ausgabe (E/A)-Schnittstellen 1060. Die E/A-Schnittstelle 1060 kann eine oder mehrere Schnittstellenkomponenten beinhalten, über die ein Benutzer mit dem System 1000 interagiert (z. B. Audioschnittstellen, alphanumerische, taktile/berührungsempfindliche oder andere Schnittstellen). Die Peripherieschnittstelle 1070 kann eine beliebige Hardwareschnittstelle beinhalten, die vorstehend nicht speziell erwähnt ist. Peripheriegeräte verweisen im Allgemeinen auf Vorrichtungen, die eine abhängige Verbindung zu dem System 1000 herstellen. Eine abhängige Verbindung ist eine Verbindung, bei der das System 1000 die Softwareplattform oder Hardwareplattform oder beides bereitstellt, auf der die Operation ausgeführt wird und mit der ein Benutzer interagiert.
  • In einem Beispiel beinhaltet das System 1000 ein Datenspeichersubsystem 1080 zum Speichern von Daten auf eine nichtflüchtige Weise. In einem Beispiel können sich bei bestimmten Systemimplementierungen zumindest bestimmte Komponenten des Datenspeichers 1080 mit Komponenten des Arbeitsspeicherteilsystems 1020 überschneiden. Das Datenspeichersubsystem 1080 beinhaltet eine oder mehrere Datenspeichervorrichtungen 1084, die ein beliebiges herkömmliches Medium zum nichtflüchtigen Speichern großer Datenmengen sein oder beinhalten können, wie etwa eine oder mehrere Magnet-, Festkörper- oder optische Platten oder eine Kombination davon. Der Datenspeicher 1084 hält Code oder Anweisungen und Daten 1086 in einem persistenten Zustand (z. B. wird der Wert trotz Unterbrechung der Energieversorgung des Systems 1000 beibehalten). Der Datenspeicher 1084 kann allgemein als ein „Speicher“ betrachtet werden, obwohl der Speicher 1030 in der Regel der Ausführungs- oder Arbeitsspeicher ist, um dem Prozessor 1010 Anweisungen bereitzustellen. Während der Datenspeicher 1084 nichtflüchtig ist, kann der Speicher 1030 flüchtigen Speicher beinhalten z. B. ist der Wert oder Zustand der Daten unbestimmt, falls die Stromversorgung zum System 1000 unterbrochen wird). In einem Beispiel beinhaltet das Datenspeichersubsystem 1080 eine Steuerung 1082, um eine Schnittstelle mit dem Datenspeicher 1084 zu bilden. In einem Beispiel ist die Steuerung 1082 ein physischer Teil der Schnittstelle 1014 oder des Prozessors 1010 oder kann Schaltungen oder Logik sowohl im Prozessor 1010 als auch in der Schnittstelle 1014 beinhalten.
  • Ein flüchtiger Speicher ist ein Speicher, dessen Zustand (und damit die in ihm gespeicherten Daten) unbestimmt ist, wenn die Energieversorgung zur Vorrichtung unterbrochen wird. Ein dynamischer flüchtiger Speicher verwendet ein Auffrischen der in der Vorrichtung gespeicherten Daten, um den Zustand beizubehalten. Ein Beispiel für einen dynamischen flüchtigen Speicher beinhaltet dynamischen Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM) oder eine Variante davon, wie etwa synchronen DRAM (SDRAM). Ein Beispiel für einen flüchtigen Speicher beinhaltet einen Cache. Ein Speichersubsystem, wie hier beschrieben, kann mit einer Anzahl von Speichertechnologien kompatibel sein, wie etwa DDR3 (Double Data Rate Version 3, Originalversion von JEDEC (Joint Electronic Device Engineering Council) am 16. Juni 2007), DDR4 (DDR Version 4, Anfangsspezifikation, veröffentlicht im September 2012 von JEDEC), DDR4E (DDR Version 4), LPDDR3 (Low Power DDR Version 3, JESD209-3B, August 2013 von JEDEC), LPDDR4) LPDDR Version 4, JESD209-4, ursprünglich von JEDEC im August 2014 veröffentlicht), WIO2 (Wide Input/Output Version 2, JESD229-2, ursprünglich von JEDEC im August 2014 veröffentlicht, HBM (High Bandwidth Memory, JESD325, ursprünglich von JEDEC im Oktober 2013 veröffentlicht, LPDDR5 (momentan von JEDEC erörtert), HBM2 (HBM Version 2), momentan von JEDEC erörtert, oder andere oder Kombinationen von Speichertechnologien sowie Technologien, die auf Ableitungen oder Erweiterungen solcher Spezifikationen basieren.
  • Ein nichtflüchtiger Speicher (NVM) ist ein Speicher, dessen Zustand selbst bei Unterbrechung einer Leistungszufuhr zur Vorrichtung festgelegt ist. Bei einer Ausführungsform kann die NVM-Einrichtung eine blockadressierbare Arbeitsspeichervorrichtung, wie beispielsweise NAND-Technologien, oder insbesondere einen NAND-Flash-Arbeitsspeicher mit mehreren Schwellenpegeln (z. B. Single-Level Cell (SLC), Multi-Level Cell (MLC), Quad-Level Cell (QLC), Tri-Level-Cell (TLC)), oder eine beliebige andere NAND-Technologie, umfassen. Eine NVM-Vorrichtung kann auch eine byteadressierbare dreidimensionale Write-in-Place-Crosspoint-Speichervorrichtung oder eine andere byteadressierbare Write-in-Place-NVM-Vorrichtung (auch als persistenter Speicher bezeichnet), wie etwa Phasenwechselspeicher (PCM) mit einer oder mehreren Bitebenen oder Phasenwechselspeicher mit einem Schalter (PCMS), Intel® Optane™-Speicher, umfassen. NVM-Vorrichtungen, die Chalkogenid-Phasenwechselmaterial (zum Beispiel Chalkogenidglas) verwenden, resistiven Speicher, einschließlich Metalloxidbasis-, Sauerstoffleerstellenbasis- und Direktzugriffsspeicher auf Basis von leitfähigen Brücken (CB-RAM), Nanodrahtspeicher, ferroelektrischen Direktzugriffsspeicher (FeRAM, FRAM), magnetoresistiven Direktzugriffsspeicher (MRAM), der Memristor-Technologie beinhaltet, Spin-Transfer-Torque(STT)-MRAM, eine Vorrichtung auf Basis eines Spintronik-Magnetübergangsspeichers, eine Vorrichtung auf Basis eines Magnettunnelübergangs (MTJ), eine Vorrichtung auf Basis von DW (Domänenwand) und SOT(Spin Orbit Transfer), eine Speichervorrichtung auf Basis von Thyristoren oder eine Kombination von einem oder mehreren der vorstehenden oder einen anderen Speicher umfassen.
  • Eine (nicht dargestellte) Stromquelle stellt Energie für die Komponenten des Systems 1000 bereit. Insbesondere ist die Stromquelle typischerweise über eine Schnittstelle mit einer oder mehreren Stromversorgungen in dem System 1000 verbunden, um die Komponenten des Systems 1000 mit Strom zu versorgen. In einem Beispiel beinhaltet die Stromversorgung einen AC-DC-Adapter (Wechselstrom-zu-Gleichstrom-Adapter) zum Einstecken in eine Wandsteckdose. Dieser Wechselstrom (AC) kann aus einer erneuerbaren Energiequelle stammen (z. B. Solarstrom). In einem Beispiel beinhaltet die Stromquelle eine DC-Stromquelle, wie zum Beispiel einen externen AC-DC-Wandler. In einem Beispiel beinhaltet die Stromquelle oder die Stromversorgung eine drahtlose Ladehardware zum Laden über eine unmittelbare Nähe zu einem Ladefeld. In einem Beispiel kann die Stromquelle eine interne Batterie, eine Wechselstromversorgung, eine bewegungsbasierte Stromversorgung, eine Solarstromversorgung oder eine Brennstoffzellenquelle beinhalten.
  • In einem Beispiel kann das System 1000 unter Verwendung von miteinander verbundenen Rechen-Sleds von Prozessoren, Speichern, Datenspeichern, Netzwerkschnittstellen und anderen Komponenten implementiert sein. Es können Hochgeschwindigkeitszwischenverbindungen verwendet werden, wie etwa: Ethernet (IEEE 802.3), Remote Direct Memory Access (RDMA), InfiniBand, Internet Wide Area RDMA Protocol (iWARP), Transmission Control Protocol (TCP), User Datagram Protocol (UDP), quick UDP Internet Connections (QUIC), RDMA over Converged Ethernet (RoCE), Peripheral Component Interconnect express (PCIe), Intel QuickPath Interconnect (QPI), Intel Ultra Path Interconnect (UPI), Intel On-Chip System Fabric (IOSF), Omni-Path, Compute Express Link (CXL), HyperTransport, einem Hochgeschwindigkeits-Fabric, NVLink, Advanced Microcontroller Bus Architecture (AMBA)-Zwischenverbindung, OpenCAPI, Gen-Z, Infinity Fabric (IF), eine Cache-kohärente Zwischenverbindung für Beschleuniger (CCIX - Cache Coherent Interconnect for Accelerators), 3GPP Long Term Evolution (LTE) (4G), 3GPP 5G und Variationen davon. Daten können in virtualisierte Datenspeicherknoten kopiert oder gespeichert werden oder durch Verwenden eines Protokolls, wie etwa NVMe over Fabrics (NVMe-oF) oder NVMe, zugänglich sein.
  • Beispiele hierin können in verschiedenen Arten von Rechenvorrichtungen, Smartphones, Tablets, Personalcomputern und Netzwerkausrüstung implementiert sein, wie Switches, Router, Racks und Bladeserver, wie diejenigen, die in einem Rechenzentrum und/oder einer Serverfarmumgebung eingesetzt werden. Die in Rechenzentren und Serverfarmen verwendeten Server umfassen gereihte Serverkonfigurationen, wie etwa rackbasierte Server oder Blade-Server. Diese Server stehen über verschiedene Netzwerkeinrichtungen in Verbindung, wie etwa über Partitionssätze von Servern in Local Area Networks (LANs) mit geeigneten Switch- und Routing-Anlagen zwischen den LANs, um ein privates Intranet zu bilden. Cloud-Hosting-Anlagen können zum Beispiel typischerweise große Rechenzentren mit einer Vielzahl von Servern einsetzen. Ein Blade umfasst eine separate Rechenplattform, die dazu ausgelegt ist, serverähnliche Funktionen auszuführen, d. h. einen „Server on a Card“. Dementsprechend beinhaltet jedes Blade Komponenten, die bei herkömmlichen Servern üblich sind, einschließlich einer gedruckten Hauptleiterplatte (Hauptplatine) mit interner Verdrahtung (z. B. Bussen) zum Koppeln geeigneter integrierter Schaltungen (Integrated Circuits, ICs), und anderer auf der Platine montierter Komponenten.
  • Bei manchen Beispielen können die Netzwerkschnittstelle und andere hier beschriebene Ausführungsformen in Verbindung mit einer Basisstation (zum Beispiel 3G, 4G, 5G und so weiter), einer Makrobasisstation (zum Beispiel 5G-Netzwerken), einer Pikostation (zum Beispiel einem IEEE 802.11-kompatiblen Zugangspunkt), einer Nanostation (zum Beispiel für Point-to-MultiPoint (PtMP)-Anwendungen), On-Premises-Rechenzentren, Off-Premises-Rechenzentren, Edge-Netzwerkelementen, Fog-Netzwerkelementen und/oder hybriden Rechenzentren (zum Beispiel Rechenzentren, die Virtualisierung, Cloud- und softwaredefiniertes Networking verwenden, um Anwendungsarbeitslasten über physikalische Rechenzentren und verteilte Multi-Cloud-Umgebungen hinweg zuzustellen), verwendet werden.
  • Verschiedene Beispiele sind unter Verwendung von Hardwareelementen, Softwareelementen oder einer Kombination von beiden implementierbar. Bei einigen Beispielen können Hardwareelemente Vorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktoren usw.), integrierte Schaltungen, ASICs, PLDs, DSPs, FPGAs, Speichereinheiten, Logikgatter, Register, Halbleiterbauelemente, Chips, Mikrochips, Chipsätze usw. beinhalten. Bei einigen Beispielen können Softwareelemente Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, Anwendungsprogrammierschnittstellen (APIs), Befehlssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon einschließen. Die Entscheidung, ob ein Beispiel unter Verwendung von Hardwareelementen und/oder Softwareelementen implementiert wird, kann in Abhängigkeit von einer beliebigen Anzahl von Faktoren variieren, wie etwa der gewünschten Rechenleistung, Leistungspegeln, Wärmetoleranzen, dem Budget für Verarbeitungszyklen, Eingangsdatenraten, Ausgangsdatenraten, Speicherressourcen, Datenbusgeschwindigkeiten und anderen Gestaltungs- oder Leistungsbeschränkungen, wie sie für eine bestimmte Implementierung gewünscht werden. Ein Prozessor kann eine oder mehrere Kombinationen aus einer Hardwarezustandsmaschine, digitaler Steuerlogik, einer Zentralverarbeitungseinheit oder beliebiger Hardware-, Firmware- und/oder Softwareelemente sein.
  • Einige Beispiele können unter Verwendung eines oder als ein Herstellungsartikel oder mindestens ein computerlesbares Medium implementiert sein. Ein computerlesbares Medium kann ein nichtflüchtiges Speicherungsmedium zum Speichern von Logik beinhalten. Bei einigen Beispielen kann das nichtflüchtige Speichermedium eine oder mehrere Arten von computerlesbaren Speichermedien beinhalten, die in der Lage sind, elektronische Daten zu speichern, einschließlich eines flüchtigen Speichers oder eines nichtflüchtigen Speichers, eines entfernbaren oder nicht entfernbaren Speichers, eines löschbaren oder nicht löschbaren Speichers, eines beschreibbaren oder wiederbeschreibbaren Speichers und so weiter. Bei manchen Beispielen kann die Logik verschiedene Softwareelemente, wie etwa Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, API, Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon beinhalten.
  • Gemäß einigen Beispielen kann ein computerlesbares Medium ein nichtflüchtiges Speichermedium zum Speichern oder Aufrechterhalten von Anweisungen beinhalten, die, wenn sie durch eine Maschine, eine Rechenvorrichtung oder ein System ausgeführt werden, die Maschine, die Rechenvorrichtung oder das System dazu veranlassen, Verfahren und/oder Operationen gemäß den beschriebenen Beispielen durchzuführen. Die Anweisungen können jede geeignete Art von Code beinhalten, wie beispielsweise Quellcode, kompilierten Code, interpretierten Code, ausführbaren Code, statischen Code, dynamischen Code und dergleichen. Die Anweisungen sind gemäß einer vordefinierten Computersprache, -art oder - syntax implementierbar, um eine Maschine, eine Rechenvorrichtung oder ein System dazu anzuweisen, eine bestimmte Funktion durchzuführen. Die Anweisungen sind mit jeder geeigneten höheren, niedrigeren, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementierbar.
  • Ein oder mehrere Aspekte mindestens eines Beispiels können durch repräsentative Anweisungen implementiert werden, die auf mindestens einem maschinenlesbaren Medium gespeichert werden, das verschiedene Logik innerhalb des Prozessors repräsentiert, die, wenn sie von einer Maschine, einer Rechenvorrichtung oder einem System gelesen werden, bewirken, dass die Maschine, die Rechenvorrichtung oder das System Logik zum Durchführen der hier beschriebenen Techniken herstellt. Solche Repräsentationen, die als „IP-Kerne“ bekannt sind, können auf einem greifbaren, maschinenlesbaren Medium gespeichert werden und verschiedenen Kunden oder Herstellungsanlagen zugeführt werden, um sie in die Herstellungsmaschinen zu laden, die tatsächlich die Logik oder den Prozessor herstellen.
  • Die Formulierung „ein Beispiel“ bezieht sich nicht notwendigerweise immer auf dasselbe Beispiel oder dieselben Beispiele. Jeder hier beschriebene Aspekt ist mit jedem anderen hier beschriebenen Aspekt oder ähnlichen Aspekt kombinierbar, und zwar unabhängig davon, ob die Aspekte in Bezug auf dieselbe Figur oder dasselbe Element beschrieben sind. Die Unterteilung, Auslassung oder Einbindung von Blockfunktionen, die in den begleitenden Figuren dargestellt sind, bedeutet nicht, dass die Hardwarekomponenten, Schaltungen, Software und/oder Elemente zum Implementieren dieser Funktionen in Ausführungsformen notwendigerweise zu unterteilen, auszulassen oder einzubinden sind.
  • Einige Beispiele können unter Verwendung des Ausdrucks „gekoppelt“ und „verbunden“ und Ableitungen davon beschrieben sein. Diese Begriffe sind nicht notwendigerweise als Synonyme füreinander zu verstehen. Beispielsweise können Beschreibungen unter Verwendung der Begriffe „verbunden“ und/oder „gekoppelt“ darauf hinweisen, dass zwei oder mehr Elemente in direktem physischen oder elektrischen Kontakt miteinander stehen. Der Ausdruck „gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehrere Elemente nicht in direktem Kontakt miteinander stehen, aber dennoch miteinander zusammenwirken oder interagieren.
  • Die Begriffe „erster“, „zweiter“ und dergleichen bezeichnen hier keine Reihenfolge, Menge oder Wichtigkeit, sondern dienen vielmehr dazu, ein Element von einem anderen zu unterscheiden. Die Begriffe „ein“ bzw. „eine“ bezeichnen hier keine Mengenbegrenzung, sondern vielmehr das Vorhandensein mindestens eines der genannten Elemente. Der hier in Bezug auf ein Signal verwendete Begriff „gesetzt“ bezeichnet einen Signalzustand, in dem das Signal aktiv ist und der durch Anlegen eines beliebigen logischen Pegels, entweder logisch 0 oder logisch 1, an das Signal erreichbar ist. Die Ausdrücke „folgend“ oder „nach“ können sich auf ein unmittelbares Folgen oder auf ein Folgen auf ein oder mehrere andere Ereignisse beziehen. Andere Abfolgen von Operationen können auch gemäß alternativen Beispielen durchgeführt werden. Ferner können zusätzliche Operationen hinzugefügt oder entfernt werden, abhängig von den bestimmten Anwendungen. Es kann eine beliebige Kombination von Änderungen verwendet werden, und Durchschnittfachleute mit der Kenntnis dieser Offenbarung werden die zahlreichen Variationen, Modifikationen und alternativen Beispiele davon verstehen.
  • Eine disjunktive Ausdrucksweise, wie etwa die Formulierung „mindestens eines von X, Y oder Z“, sofern nicht spezifisch anders angegeben, versteht sich in dem Kontext, wie sie allgemein verwendet wird, um darzustellen, dass ein Element, ein Begriff usw. entweder X, Y oder Z oder eine beliebige Kombination davon (zum Beispiel X, Y und/oder Z) sein kann. Daher soll eine solche disjunktive Ausdrucksweise nicht dazu dienen und nicht implizieren, dass bestimmte Beispiele erfordern, dass zumindest ein X, zumindest ein Y oder zumindest ein Z für jedes vorhanden ist. Zusätzlich kann konjunktive Ausdrucksweise, wie etwa die Formulierung „mindestens eines von X, Y und Z“, sofern nicht spezifisch anderweitig angegeben, als X, Y, Z oder eine beliebige Kombination davon, einschließlich „X, Y und/oder Z“, verstanden werden.
  • Veranschaulichende Beispiele der hier offenbarten Vorrichtungen, Systeme und Verfahren sind nachstehend bereitgestellt. Ein Beispiel für die Vorrichtungen, Systeme und Verfahren kann ein oder mehrere beliebige und eine beliebige Kombination der nachstehend beschriebenen Beispiele beinhalten.
  • Beispiel 1 beinhaltet ein oder mehrere Beispiele und beinhaltet eine Vorrichtung, umfassend: einen Switch, der Folgendes umfasst: eine Schaltung, die, wenn betriebsbereit, zu Folgendem dient: Empfangen eines Pakets, das einen Header und eine Nutzlast umfasst, und in Verbindung mit der Durchführung einer Berechnung an der Paketnutzlast, Weiterleiten des Paket-Headers, aber nicht der Nutzlast, an einen Ziel-Endpunkt.
  • Beispiel 2 beinhaltet ein oder mehrere Beispiele, wobei der Ziel-Endpunkt des Pakets dazu dient, eine Verwaltung eines zuverlässigen Transports durchzuführen.
  • Beispiel 3 beinhaltet ein oder mehrere Beispiele, wobei die Schaltung umfasst: eine programmierbare Schaltung einer Datenebene, die eine Eingangspipeline oder Ausgangspipeline und eine oder mehrere Übereinstimmungsaktionseinheiten (MAUs) umfasst, um eine Verarbeitung der Nutzlast durchzuführen, wobei die programmierbare Schaltung der Datenebene eine Berechnung an der Paketnutzlast durchführen soll.
  • Beispiel 4 beinhaltet ein oder mehrere Beispiele, wobei die Berechnung an der Paketnutzlast eines oder mehrere von Folgendem umfasst: eine Aggregationsphase eines Reduce-Scatter-Prozesses und/oder Schreib- und/oder Leseoperationen einer Allgather-Phase einer Multicast-Operation und wobei die Aggregationsphase eine oder mehrere Summierungs- oder min-max-Operationen umfasst
  • Beispiel 5 beinhaltet ein oder mehrere Beispiele, wobei das Paket dazu dient, eine Gesamtanzahl von Workern in einer Worker-Gruppe in dem Header zu identifizieren, und der Switch dazu dient, verarbeitete Daten für den Ziel-Endpunkt bereitzustellen, nachdem die Gesamtanzahl von Workern Daten an den Switch gesendet hat.
  • Beispiel 6 beinhaltet ein oder mehrere Beispiele, wobei der Switch eine Schaltung umfasst, die dazu dient, berechnete Ergebnisdaten aus der Durchführung einer Berechnung an der Paketnutzlast zu speichern, und eine Schaltung, die dazu dient, das mindestens eine Paket mit den berechneten Ergebnisdaten an einen Rechenknoten weiterzuleiten, der einen Worker ausführt.
  • Beispiel 7 beinhaltet ein oder mehrere Beispiele, wobei die Schaltung zum Speichern eines berechneten Ergebnisdatenelements aus der Durchführung einer Berechnung an der Paketnutzlast und die Schaltung zum Weiterleiten mindestens eines Pakets mit den berechneten Ergebnisdaten an einen Rechenknoten, der einen Worker ausführt, dazu dient, die berechneten Ergebnisdaten in mindestens ein Paket, das von einem Server empfangen wird, einzufügen und das mindestens eine Paket, das von dem Server empfangen wird, mit den eingefügten berechneten Ergebnisdaten weiterzuleiten.
  • Beispiel 8 beinhaltet ein oder mehrere Beispiele, wobei der Switch eines oder mehrere von Folgenden umfasst: Netzwerkschnittstellensteuerung (NIC), SmartNIC, Router, Switch, Weiterleitungselement, Infrastrukturverarbeitungseinheit (IPU) oder Datenverarbeitungseinheit (DPU).
  • Beispiel 9 beinhaltet ein oder mehrere Beispiele, die einen Server zum Ausführen eines Parameterservers umfassen, der dazu dient, berechnete Ergebnisdaten aus der Durchführung einer Berechnung an der Paketnutzlast zu empfangen und die Verbindungsaufrechterhaltung und -verwaltung mit mindestens einem Rechenknoten durchzuführen, der einen Worker ausführt.
  • Beispiel 10 beinhaltet ein oder mehrere Beispiele, die ein Rechenzentrum umfassen, das den mindestens einen Rechenknoten beinhaltet, der einen Worker und den Server ausführt, wobei der mindestens eine Rechenknoten über den Switch Daten für neuronales Netzwerktraining und/oder Inferenzoperationen an den Server senden soll.
  • Beispiel 11 beinhaltet ein oder mehrere Beispiele und beinhaltet ein computerlesbares Medium, das darauf gespeicherte Anweisungen umfasst, die bei Ausführung durch einen oder mehreren Prozessoren Folgendes veranlassen: Konfiguration einer Netzwerkschnittstellenvorrichtung, um: basierend auf dem Empfang eines Pakets von einem Worker eine Paketnutzlastverarbeitung durchzuführen und die Verarbeitung des Transport-Headers und die Verbindungsaufrechterhaltung an einen Server auszulagern, wobei das Paket einen Worker angibt, der Daten zur Verarbeitung beiträgt.
  • Beispiel 12 beinhaltet ein oder mehrere Beispiele, wobei die Paketnutzlastverarbeitung eines oder mehrere von Folgendem umfasst: eine Aggregationsphase eines Reduce-Scatter-Prozesses und/oder eine Allgather-Phase einer Multicast-Operation.
  • Beispiel 13 beinhaltet ein oder mehrere Beispiele, wobei das Paket eine Gesamtanzahl von Workern in einer Worker-Gruppe in dem Header identifiziert und die Anweisungen die Netzwerkschnittstellenvorrichtung veranlassen, konfiguriert zu werden, um verarbeitete Daten für den Server bereitzustellen, nachdem die Gesamtanzahl von Workern Daten an die Netzwerkschnittstellenvorrichtung gesendet hat.
  • Beispiel 14 beinhaltet ein oder mehrere Beispiele, wobei die Netzwerkschnittstellenvorrichtung eine Schaltung umfasst, um berechnete Ergebnisdaten zu speichern und mindestens ein Paket an einen Rechenknoten weiterzuleiten, der einen Worker mit den berechneten Ergebnisdaten ausführt.
  • Beispiel 15 beinhaltet ein oder mehrere Beispiele, die darauf gespeicherte Anweisungen umfassen, die bei Ausführung durch einen oder mehrere Prozessoren Folgendes veranlassen: Konfiguration der Netzwerkschnittstellenvorrichtung, um berechnete Ergebnisdaten zu speichern und mindestens ein Paket an einen Rechenknoten weiterzuleiten, der einen Worker mit den berechneten Ergebnisdaten durch Einfügen der berechneten Ergebnisdaten in ein Paket ohne Nutzlast ausführt.
  • Beispiel 16 beinhaltet ein oder mehrere Beispiele und beinhaltet ein Verfahren, das umfasst: Durchführen einer Paketnutzlastverarbeitung an einer Netzwerkschnittstellenvorrichtung, während die Aufrechterhaltung der Netzwerkverbindung an einen Server ausgelagert wird, und Weiterleiten von Paketen im Zusammenhang mit der Aufrechterhaltung der Netzwerkverbindung von dem Server an einen oder mehrere Rechenknoten, die Worker ausführen.
  • Beispiel 17 beinhaltet ein oder mehrere Beispiele, wobei die Paketnutzlastverarbeitung eines oder mehrere von Folgendem umfasst: eine Aggregationsphase eines Reduce-Scatter-Prozesses und/oder eine Allgather-Phase einer Multicast-Operation.
  • Beispiel 18 beinhaltet ein oder mehrere Beispiele, wobei das Paket eine Gesamtanzahl von Workern in einer Worker-Gruppe in dem Header identifiziert, und umfasst: Bereitstellen, durch die Netzwerkschnittstellenvorrichtung von verarbeiteten Daten für den Server, nachdem die Gesamtanzahl von Workern Daten an die Netzwerkschnittstellenvorrichtung gesendet hat.
  • Beispiel 19 beinhaltet ein oder mehrere Beispiele und beinhaltet, dass an der Netzwerkschnittstellenvorrichtung berechnete Ergebnisdaten gespeichert und mindestens ein Paket an einen Rechenknoten weitergeleitet wird, der einen Worker mit den berechneten Ergebnisdaten ausführt.
  • Beispiel 20 beinhaltet ein oder mehrere Beispiele, wobei die Netzwerkschnittstellenvorrichtung eines oder mehrere von Folgenden umfasst: Netzwerkschnittstellensteuerung (NIC), SmartNIC, Router, Switch, Weiterleitungselement, Infrastrukturverarbeitungseinheit (IPU) oder Datenverarbeitungseinheit (DPU).
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 17/515222 [0001]

Claims (21)

  1. Vorrichtung, umfassend: ein Switch, der umfasst: eine Schaltung, die, wenn betriebsbereit, zu Folgendem dient: Empfangen eines Pakets, das einen Header und eine Nutzlast umfasst, und in Verbindung mit der Durchführung einer Berechnung an der Paketnutzlast, Weiterleiten des Paket-Headers, aber nicht der Nutzlast, an einen Ziel-Endpunkt.
  2. Vorrichtung nach Anspruch 1, wobei der Ziel-Endpunkt des Pakets dazu dient, eine Verwaltung eines zuverlässigen Transports durchzuführen.
  3. Vorrichtung nach Anspruch 1, wobei die Schaltung umfasst: eine programmierbare Schaltung einer Datenebene, die eine Eingangspipeline und/oder Ausgangspipeline und eine oder mehrere Übereinstimmungsaktionsschaltungen umfasst, die dazu dienen, eine Verarbeitung der Nutzlast durchzuführen, wobei die programmierbare Schaltung der Datenebene eine Berechnung an der Paketnutzlast durchführen soll.
  4. Vorrichtung nach Anspruch 1, wobei das Paket dazu dient, eine Gesamtanzahl von Workern in einer Worker-Gruppe basierend auf dem Paket-Header zu identifizieren, und der Switch dazu dient, verarbeitete Daten für den Ziel-Endpunkt basierend auf den vom Switch erhaltenen Daten von der Gesamtanzahl von Workern bereitzustellen.
  5. Vorrichtung nach Anspruch 1, wobei der Switch eine Schaltung umfasst, die dazu dient, berechnete Ergebnisdaten aus der Durchführung einer Berechnung an der Paketnutzlast zu speichern, und eine Schaltung, die dazu dient, das mindestens eine Paket mit den berechneten Ergebnisdaten an einen Rechenknoten weiterzuleiten, der einen Worker ausführt.
  6. Vorrichtung nach Anspruch 5, wobei die Schaltung zum Speichern der berechneten Ergebnisdaten aus der Durchführung einer Berechnung an der Paketnutzlast und die Schaltung zum Weiterleiten mindestens eines Pakets mit den berechneten Ergebnisdaten an einen Rechenknoten, der einen Worker ausführt, dazu dient, die berechneten Ergebnisdaten in mindestens ein Paket, das von einem Server empfangen wird, einzufügen und das mindestens eine Paket, das von dem Server empfangen wird, mit den eingefügten berechneten Ergebnisdaten weiterzuleiten.
  7. Vorrichtung nach Anspruch 1, wobei der Switch umfasst: eine Schaltung, die dazu dient: ein Paket zu empfangen, das berechnete Ergebnisdaten umfasst, und die berechneten Ergebnisdaten zu speichern, ein zweites Pakets basierend auf den gespeicherten berechneten Ergebnisdaten und des mindestens einen empfangenen Headers zu bilden, und eine Übertragung des zweiten Pakets zu veranlassen.
  8. Vorrichtung nach Anspruch 1, wobei der Switch eines oder mehrere von Folgenden umfasst: Netzwerkschnittstellensteuerung (NIC), SmartNIC, Router, Weiterleitungselement, Infrastrukturverarbeitungseinheit (IPU) oder Datenverarbeitungseinheit (DPU).
  9. Vorrichtung nach Anspruch 1, umfassend einen Server zum Ausführen eines Parameterservers, der dazu dient, berechnete Ergebnisdaten aus der Durchführung einer Berechnung an der Paketnutzlast zu empfangen und die Verbindungsaufrechterhaltung und - verwaltung mit mindestens einem Rechenknoten durchzuführen, der einen Worker ausführt.
  10. Vorrichtung nach Anspruch 9, umfassend ein Rechenzentrum, das den mindestens einen Rechenknoten beinhaltet, der einen Worker und den Server ausführt, wobei der mindestens eine Rechenknoten über den Switch Daten für neuronales Netzwerktraining und/oder Inferenzoperationen an den Server senden soll.
  11. Vorrichtung nach einem der Ansprüche 1 bis 10, wobei die Berechnung auf der Paketnutzlast eines oder mehrere von Folgendem umfasst: Aggregationsoperation in einer Reduzierstreuphase, Schreiboperation in einer Allgather-Phase oder Leseoperation in einer Allgather-Phase und wobei die Aggregationsoperation eine oder mehrere Summierungs- oder min-max-Operationen umfasst.
  12. Computerlesbares Medium, das darauf gespeicherte Anweisungen umfasst, die bei Ausführung durch einen oder mehreren Prozessoren Folgendes veranlassen: Konfiguration einer Netzwerkschnittstellenvorrichtung, um: basierend auf dem Empfang eines Pakets von einem Worker, eine Paketnutzlastverarbeitung durchzuführen und die Verarbeitung des Transport-Headers und die Verbindungsaufrechterhaltung an einen Server auszulagern, wobei das Paket einen Worker angibt, der Daten zur Verarbeitung beiträgt.
  13. Computerlesbares Medium nach Anspruch 12, wobei die Paketnutzlastverarbeitung eines oder mehrere von Folgendem umfasst: Aggregationsoperation in einer Reduce-Scatter-Phase, Schreiboperation in einer Allgather-Phase oder Leseoperation in einer Allgather-Phase.
  14. Computerlesbares Medium nach Anspruch 12, wobei das Paket eine Gesamtanzahl von Workern in einer Worker-Gruppe basierend auf dem Paket-Header identifiziert und die Anweisungen die Netzwerkschnittstellenvorrichtung veranlassen, konfiguriert zu werden, um verarbeitete Daten für den Server basierend auf dem Empfang von Daten von der Gesamtanzahl von Workern durch die Netzwerkschnittstellenvorrichtung bereitzustellen.
  15. Computerlesbares Medium nach Anspruch 12, wobei die Netzwerkschnittstellenvorrichtung eine Schaltung umfasst, um berechnete Ergebnisdaten zu speichern und mindestens ein Paket an einen Rechenknoten weiterzuleiten, der einen Worker mit den berechneten Ergebnisdaten ausführt.
  16. Computerlesbares Medium nach einem der Ansprüche 12 bis 15, das darauf gespeicherte Anweisungen umfasst, die bei Ausführung durch einen oder mehrere Prozessoren Folgendes veranlassen: Konfiguration der Netzwerkschnittstellenvorrichtung, um berechnete Ergebnisdaten zu speichern und mindestens ein Paket an einen Rechenknoten weiterzuleiten, der einen Worker mit den berechneten Ergebnisdaten durch Einfügen der berechneten Ergebnisdaten in mindestens ein Paket ausführt.
  17. Verfahren, umfassend: Durchführen einer Paketnutzlastverarbeitung an einer Netzwerkschnittstellenvorrichtung, während die Aufrechterhaltung der Netzwerkverbindung an einen Server ausgelagert wird, und Weiterleiten von Paketen im Zusammenhang mit der Aufrechterhaltung der Netzwerkverbindung von dem Server an einen oder mehrere Rechenknoten, die Worker ausführen.
  18. Verfahren nach Anspruch 17, wobei die Paketnutzlastverarbeitung eines oder mehrere von Folgendem umfasst: Aggregationsoperation in einer Reduzierstreuphase, Schreiboperation in einer Allgather-Phase oder Leseoperation in einer Allgather-Phase und wobei die Aggregationsoperation eine oder mehrere von einer Summierungs- oder min-max-Operation umfasst.
  19. Verfahren nach Anspruch 17, wobei das Paket eine Gesamtanzahl von Workern in einer Worker-Gruppe basierend auf einem Paket-Header identifiziert und Folgendes umfasst: Bereitstellen von verarbeiteten Daten für den Server durch die Netzwerkschnittstellenvorrichtung basierend auf dem Empfang von Daten von der Gesamtanzahl von Workern.
  20. Verfahren nach Anspruch 17, umfassend: an der Netzwerkschnittstellenvorrichtung, Speichern von berechneten Ergebnisdaten, und Weiterleiten mindestens eines Pakets an einen Rechenknoten, der einen Worker mit den berechneten Ergebnisdaten ausführt.
  21. Verfahren nach einem der Ansprüche 17 bis 20, wobei die Netzwerkschnittstellenvorrichtung eines oder mehrere von Folgenden umfasst: Netzwerkschnittstellensteuerung (NIC), SmartNIC, Router, Switch, Weiterleitungselement, Infrastrukturverarbeitungseinheit (IPU) oder Datenverarbeitungseinheit (DPU).
DE112022002238.8T 2021-10-29 2022-09-01 Netzwerkschnittstellenvorrichtungs-basierte berechnungen Pending DE112022002238T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/515,222 US20220060418A1 (en) 2021-10-29 2021-10-29 Network interface device-based computations
US17/515,222 2021-10-29
PCT/US2022/042362 WO2023075930A1 (en) 2021-10-29 2022-09-01 Network interface device-based computations

Publications (1)

Publication Number Publication Date
DE112022002238T5 true DE112022002238T5 (de) 2024-03-14

Family

ID=80269999

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112022002238.8T Pending DE112022002238T5 (de) 2021-10-29 2022-09-01 Netzwerkschnittstellenvorrichtungs-basierte berechnungen

Country Status (4)

Country Link
US (1) US20220060418A1 (de)
CN (1) CN117716677A (de)
DE (1) DE112022002238T5 (de)
WO (1) WO2023075930A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220060418A1 (en) * 2021-10-29 2022-02-24 Intel Corporation Network interface device-based computations

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8228794B2 (en) * 2010-02-03 2012-07-24 Hewlett-Packard Development Company, L.P. Minimizing pathological flooding of a network
US10075567B1 (en) * 2016-02-08 2018-09-11 Barefoot Networks, Inc. Packet generation in the data plane of a forwarding element
US10362149B2 (en) * 2016-12-30 2019-07-23 Intel Corporation Intelligent packet aggregation
US11057318B1 (en) * 2019-08-27 2021-07-06 Innovium, Inc. Distributed artificial intelligence extension modules for network switches
US11706163B2 (en) * 2019-12-20 2023-07-18 The Board Of Trustees Of The University Of Illinois Accelerating distributed reinforcement learning with in-switch computing
US20220060418A1 (en) * 2021-10-29 2022-02-24 Intel Corporation Network interface device-based computations

Also Published As

Publication number Publication date
US20220060418A1 (en) 2022-02-24
WO2023075930A1 (en) 2023-05-04
CN117716677A (zh) 2024-03-15

Similar Documents

Publication Publication Date Title
DE112020007201T5 (de) Speicherzuordnung für verteilte Verarbeitungsvorrichtungen
EP4401381A2 (de) Empfängerbasierte präzisionsüberlastungssteuerung
DE102020113544A1 (de) Bedarfsgesteuerte paketwarteschlangen in einer netzwerkvorrichtung
DE112020001833T5 (de) Netzwerkschnittstelle für Datentransport in heterogenen Rechenumgebungen
DE112020006859T5 (de) Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb
DE102020109669A1 (de) Dienstgüte-verkehrsmanagement in hochgeschwindigkeitspaketverarbeitungssystemen
DE102021134581A1 (de) Auslagerung von entschlüsselungsoperationen
DE102020201834A1 (de) Technologien für netzvorrichtungslastausgleichseinrichtungen für beschleunigte funktionen-als-dienst
DE112020004673T5 (de) Mehrpfad-Paketdeskriptor-Zustellschema
DE102022104207A1 (de) Pooling von Netzwerkverarbeitungsressourcen
DE112013005090T5 (de) Steuernachrichtenübermittlung in einem mehrfach-Slot-Verbindungsschicht-Flit
WO2022132278A1 (en) Network interface device with flow control capability
DE112022002284T5 (de) Auslagerung der vermittlungsschicht 7 an eine infrastrukturverarbeitungseinheit für ein vermaschtes dienstnetz
DE102022126611A1 (de) Service-mesh-auslagerung an netzwerkvorrichtungen
DE102022103981A1 (de) Flusssteuerungstechnologien
DE102020201347A1 (de) Technologien zum abgleichen von sicherheitsanforderungen von funktion-als-dienst in edge-clouds
DE102022121268A1 (de) Überlastungssteuerung auf basis von netzwerktelemetrie
DE102022107778A1 (de) Adressübersetzung an einer zielnetzwerk-schnittstellenvorrichtung
DE102022129250A1 (de) Übertragungsrate basierend auf detektierter verfügbarer Bandbreite
DE102020130555A1 (de) Adaptiver datenversand basierend auf lastfunktionen
DE112022002377T5 (de) Paketformatanpassungstechnologien
DE102020133272A1 (de) Pufferzuweisung für Parallelverarbeitung von Daten
DE112022002238T5 (de) Netzwerkschnittstellenvorrichtungs-basierte berechnungen
DE102020119018A1 (de) Aufrechterhalten der Bandbreitennutzung in Anwesenheit von Paketverwürfen
US20240195749A1 (en) Path selection for packet transmission