DE102021122785A1 - Flexibler beschleuniger für eine tensor-arbeitslast - Google Patents

Flexibler beschleuniger für eine tensor-arbeitslast Download PDF

Info

Publication number
DE102021122785A1
DE102021122785A1 DE102021122785.2A DE102021122785A DE102021122785A1 DE 102021122785 A1 DE102021122785 A1 DE 102021122785A1 DE 102021122785 A DE102021122785 A DE 102021122785A DE 102021122785 A1 DE102021122785 A1 DE 102021122785A1
Authority
DE
Germany
Prior art keywords
tensor
flexible
accelerator
dot product
workload
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
DE102021122785.2A
Other languages
English (en)
Inventor
Po An Tsai
Neal Crago
Angshuman Parashar
Joel Springer Emer
Stephen William Keckler
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.)
Nvidia Corp
Original Assignee
Nvidia 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 Nvidia Corp filed Critical Nvidia Corp
Publication of DE102021122785A1 publication Critical patent/DE102021122785A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/5235Multiplying only using indirect methods, e.g. quarter square method, via logarithmic domain
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Neurology (AREA)
  • Advance Control (AREA)

Abstract

Beschleuniger werden im Allgemeinen eingesetzt, um eine hohe Leistung und Energieeffizienz für Tensor-Algorithmen zu erzielen. Gegenwärtig ist ein Beschleuniger speziell auf die grundlegenden Eigenschaften des von ihm unterstützten Tensor-Algorithmus und der Tensor-Form ausgelegt und zeigt daher eine suboptimale Leistung, wenn er für andere Tensor-Algorithmen und Formen verwendet wird. Die vorliegende Offenbarung stellt einen flexiblen Beschleuniger für Tensor-Arbeitslasten bereit. Der flexible Beschleuniger kann ein flexibler Tensor-Beschleuniger oder ein FPGA sein, welcher bzw. welches ein dynamisch konfigurierbares Inter-PE-Netzwerk aufweist, welches verschiedene Tensor-Formen und verschiedene Tensor-Algorithmen unterstützt, einschließlich mindestens eines GEMM-Algorithmus, eines Algorithmus für ein 2D-CNN und eines Algorithmus für ein 3D-CNN, und/oder welcher bzw. welches eine flexible DPU aufweist, bei welcher eine Skalarproduktlänge ihrer Skalarprodukt-Untereinheiten abhängig von einem Soll-Rechendurchsatz konfigurierbar ist, welcher kleiner oder gleich einem maximalen Durchsatz der flexiblen DPU ist.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung bezieht sich auf Beschleuniger für Tensor-Arbeitslasten bzw. Workloads.
  • HINTERGRUND
  • Beschleunigerarchitekturen werden immer mehr zu einer beliebten Lösung, um hohe Leistung und Energieeffizienz für einen festen Satz von Algorithmen bereitzustellen. Insbesondere Tensor-Beschleuniger sind zu einer wesentlichen Einheit in vielen Plattformen geworden, von Servern bis hin zu mobilen Einrichtungen. Eine der wichtigsten Triebkräfte für die Einführung dieser Tensor-Beschleuniger ist die rasche Entwicklung von Algorithmen für neuronale Netze. Im Kern sind Tensor-Beschleuniger so konzipiert, dass sie einen der beiden beliebtesten Tensor-Algorithmen, die allgemeine Matrixmultiplikation (General Matrix Multiplication, GEMM) oder Faltung (Convolution, CONV), nativ unterstützen. Genauer gesagt, ist jeder Tensor-Beschleuniger auf die grundlegenden Eigenschaften eines bestimmten Algorithmus ausgelegt, den er unterstützt. So wird beispielsweise die Form der Eingabedaten und die Abbildung des Datenflusses des Algorithmus auf die Hardware mit der Hardware kodiert, um den Tensor-Beschleuniger an die angestrebte GEMM- oder CONV-Arbeitslast anzupassen.
  • Infolgedessen schränkt diese feste Natur des Tensor-Beschleunigers die Effektivität des Beschleunigers ein, wenn Algorithmen mit nicht nativen Eingabedatenformen und/oder Datenflussabbildungen ausgeführt werden. Beispielsweise erfordert die Ausführung einer CONV-Arbeitslast auf einem GEMM-Beschleuniger die Toeplitz-Datenlayouttransformation, die Daten replizieren und unnötige Datenbewegungen verursachen kann. Ein weiteres Beispiel: Wenn die Größen der Arbeitslast nicht gut mit den Hardware-Größen des Tensor-Beschleunigers übereinstimmen, leidet der Beschleuniger unter einer geringen Auslastung.
  • Es besteht die Notwendigkeit, diese Probleme und/oder andere Probleme im Zusammenhang mit dem Stand der Technik zu lösen.
  • ZUSAMMENFASSUNG
  • Ein Verfahren, ein computerlesbares Medium und ein System werden für einen flexiblen Beschleuniger für Tensor-Arbeitslasten offenbart. In einer Ausführungsform umfasst ein flexibler Tensor-Beschleuniger oder ein flexibles feldprogrammierbares Gate-Array (FPGA) ein dynamisch konfigurierbares Inter-PE-Netzwerk, wobei das Inter-PE-Netzwerk Konfigurationen für eine Vielzahl verschiedener Datenbewegungen unterstützt, um den flexiblen Tensor-Beschleuniger / das flexible FPGA in die Lage zu versetzen, an eine beliebige aus einer Vielzahl verschiedener Tensor-Formen und einen beliebigen aus einer Vielzahl verschiedener Tensor-Algorithmen angepasst zu werden, wobei die Vielzahl verschiedener Tensor-Algorithmen mindestens einen General Matrix Multiply (GEMM) Algorithmus, einen Algorithmus für ein zweidimensionales (2D) faltendes neuronales Netz (CNN) und einen Algorithmus für ein 3D-CNN aufweist.
  • In einer anderen Ausführungsform umfasst ein flexibler Tensor-Beschleuniger oder ein flexibles FPGA ein oder mehrere Tensor-Beschleuniger-/FPGA-Elemente, die dynamisch konfigurierbar sind, um eine oder mehrere Eigenschaften einer Tensor-Arbeitslast zu unterstützen, wobei das eine oder die mehreren Tensor-Beschleuniger-/FPGA-Elemente mindestens eine flexible Skalarprodukteinheit (Dot Product Unit, DPU) mit konfigurierbaren logischen Gruppierungen von Skalarprodukt-Untereinheiten und entsprechenden Unterakkumulatoren aufweisen, wobei eine Skalarproduktlänge jeder der Skalarprodukt-Untereinheiten auf der Grundlage eines Rechendurchsatzes für die flexible DPU konfigurierbar ist.
  • Figurenliste
    • 1A illustriert ein Verfahren zum Konfigurieren eines flexiblen Tensor-Beschleunigers gemäß einer Ausführungsform.
    • 1B zeigt ein Verfahren zum Konfigurieren eines flexiblen Tensor-Beschleunigers gemäß einer Ausführungsform.
    • 2 veranschaulicht eine Tensor-Beschleunigerarchitektur gemäß einer Ausführungsform.
    • 3 veranschaulicht eine hierarchische Tensor-Beschleunigerarchitektur gemäß einer Ausführungsform.
    • 4A zeigt gemäß einer Ausführungsform ein konfigurierbares Datenpfadelement, das eine flexible Skalarprodukteinheit (DPU) mit konfigurierbarer Skalarproduktlänge aufweist.
    • 4B illustriert gemäß einer Ausführungsform ein konfigurierbares Verarbeitungselement (PE) mit Puffern und DPUs, die über ein flexibles Netzwerk verbunden sind.
    • 4C zeigt gemäß einer Ausführungsform ein konfigurierbares Inter-PE-Netzwerk, das eine doppelt gefaltete Torus-Netzwerktopologie aufweist, die PEs verbindet.
    • Die 5A-C illustrieren gemäß einer Ausführungsform verschiedene Datenflüsse, die von dem flexiblen Tensor-Beschleuniger unterstützt werden.
    • Die 6A-B illustrieren gemäß einer Ausführungsform verschiedene Konfigurationen eines flexiblen Tensor-Beschleunigers zur Bildung eines GEMM.
    • Die 7A-C illustrieren gemäß einer Ausführungsform verschiedene Konfigurationen eines flexiblen Tensor-Beschleunigers zur Bildung einer CONV.
    • 8 illustriert gemäß einer Ausführungsform ein beispielhaftes Computersystem.
  • DETAILLIERTE BESCHREIBUNG
  • 1A illustriert ein Verfahren 100 zum Konfigurieren eines flexiblen Tensor-Beschleunigers gemäß einer Ausführungsform. Das Verfahren 100 kann von einer Einrichtung durchgeführt werden, die beispielsweise einen Hardwareprozessor aufweist, um den Tensor-Beschleuniger dynamisch für eine bestimmte Tensor-Arbeitslast zu konfigurieren, und somit kann der Tensor-Beschleuniger insofern flexibel sein, als er speziell für jede Tensor-Arbeitslast konfiguriert werden kann. Der Hardwareprozessor kann ein Mehrzweckprozessor sein (z.B. eine Zentraleinheit [CPU], eine Grafikverarbeitungseinheit (GPU), usw.), der in derselben Plattform wie der flexible Tensor-Beschleuniger vorhanden sein kann oder auch nicht. Es sei angemerkt, dass das Verfahren 100 natürlich mit jeder Computerhardware durchgeführt werden kann, die eine beliebige Kombination aus dem Hardwareprozessor, einem Computercode, der auf einem nicht flüchtigen Medium (z.B. einem Computerspeicher) gespeichert ist, und/oder kundenspezifischen Schaltungen (z.B. einem domänenspezifischen, spezialisierten Beschleuniger) aufweist.
  • Zusätzlich kann das Verfahren 100 in der Cloud durchgeführt werden, wobei der flexible Tensor-Beschleuniger optional auch in der Cloud arbeitet, um die Leistung einer Arbeitslast eines lokalen oder abgesetzten Tensor-Algorithmus zu verbessern. Dementsprechend können zahlreiche Instanzen des ausgestalteten flexiblen Tensor-Beschleunigers in der Cloud für mehrere verschiedene Tensor-Arbeitslasten existieren. Als weitere Option kann eine Instanz des flexiblen Tensor-Beschleunigers, die auf der Grundlage der Eigenschaft(en) einer bestimmten Tensor-Arbeitslast konfiguriert ist, von anderen Tensor-Arbeitslasten verwendet werden, die dieselbe(n) Eigenschaft(en) wie die bestimmte Tensor-Arbeitslast aufweisen.
  • Im Zusammenhang mit dem vorliegenden Verfahren 100, oder optional unabhängig von dem vorliegenden Verfahren 100, weist der flexible Tensor-Beschleuniger mindestens ein Inter-PE-Netzwerk von Verarbeitungselementen (PEs) auf, das Konfigurationen für eine Vielzahl verschiedener Datenbewegungen unterstützt. Durch diese Unterstützung kann der flexible Tensor-Beschleuniger an eine beliebige aus einer Vielzahl verschiedener Tensor-Formen und an einen beliebigen aus einer Vielzahl verschiedener Tensor-Algorithmen angepasst werden. In diesem Zusammenhang weist die Vielzahl verschiedener Tensor-Algorithmen mindestens einen GEMM-Algorithmus, einen Algorithmus für ein zweidimensionales (2D-) CNN und einen Algorithmus für ein dreidimensionales (3D-) CNN auf. In verschiedenen Ausführungsformen, wie es im Folgenden beschrieben ist, kann der flexible Tensor-Beschleuniger mit einer SIMD-Ausführungsmaschine (Single Instruction, Multiple Data) oder mit einem ADX-Befehl (Multi-Precision Add-Carry Instruction Extensions) implementiert sein. Wie es in verschiedenen Ausführungsformen im Folgenden beschrieben ist, kann der flexible Tensor-Beschleuniger zusätzliche konfigurierbare Elemente aufweisen, wie z.B. konfigurierbare Datenpfadelemente.
  • In Operation 101 des Verfahrens 100 werden eine oder mehrere Eigenschaften einer Tensor-Arbeitslast identifiziert. Die Tensor-Arbeitslast kann eine beliebige Arbeitslast (z. B. eine Task, eine Operation, eine Berechnung usw.) sein, die auf einer tensorartigen Datenstruktur beruht, einschließlich eindimensionaler (1D) Tensoren (z. B. Vektoren), zweidimensionaler (2D) Tensoren (z. B. Matrizen), dreidimensionaler (3D) Tensoren usw. In einer Ausführungsform kann die Tensor-Arbeitslast eine Arbeitslast sein, die von einem bestimmten Tensor-Algorithmus ausgeführt wird. In diesem Fall können die Eigenschaften der Tensor-Arbeitslast den speziellen Tensor-Algorithmus aufweisen, der die Tensor-Arbeitslast ausführt. Beispielsweise kann der Tensor-Algorithmus Teil einer Anwendung zum maschinellen Lernen sein, die die Tensor-Datenstruktur für das Training und den Betrieb eines Models eines neuronalen Netzes verwendet. In diesem Beispiel kann die Tensor-Arbeitslast das Training eines Modells eines neuronalen Netzes und/oder den Betrieb (die Inferenz) des Modells des neuronalen Netzes aufweisen. In einer Ausführungsform ist der Tensor-Algorithmus ein Algorithmus für ein faltendes neuronales Netz (CNN) (z. B. ein Algorithmus für ein 1 D-CNN, ein Algorithmus für ein 2D-CNN, ein Algorithmus für ein 3D-CNN usw.). In einer anderen Ausführungsform kann der Tensor-Algorithmus ein General Matrix Multiply (GEMM)-Algorithmus sein. Andere Arten von Tensor-Algorithmen sind ebenfalls denkbar, wie z.B. eine Matrizenrechnung oder eine Tensorkontraktion.
  • Die eine oder die mehreren Eigenschaften der Tensor-Arbeitslast können jedoch einen Datenfluss der Tensor-Arbeitslast aufweisen, wie z. B. einen Typ eines Datenflusses der Tensor-Arbeitslast. Der Typ des Datenflusses kann ein Store-and-Forward-Multicast/Reduction-Workflow, ein Skewed-Multicast/Reduction-Workflow oder ein Sliding-Window-Reuse-Workflow sein. In einer Ausführungsform können die Eigenschaften der Tensor-Arbeitslast den speziellen Tensor-Algorithmus aufweisen, der die Tensor-Arbeitslast ausführt. In einer anderen Ausführungsform können die Eigenschaften eine Form einer Eingabe und Ausgabe der Arbeitslast, wie z.B. eine Kachelform und -größe, die von der Arbeitslast verwendet wird, aufweisen.
  • In einer Ausführungsform können die eine oder die mehreren Eigenschaften der Tensor-Arbeitslast ohne Benutzereingabe (d. h. automatisch) durch Analyse der Tensor-Arbeitslast (oder des Tensor-Algorithmus) identifiziert werden. Zum Beispiel kann eine Struktur, ein Fluss und/oder Parameter der Tensor-Arbeitslast analysiert werden, um die eine oder die mehreren Eigenschaften der Tensor-Arbeitslast zu identifizieren (z.B. zu bestimmen). In einer anderen Ausführungsform können die eine oder die mehreren Eigenschaften der Tensor-Arbeitslast identifiziert werden, indem ein Hinweis auf die eine oder die mehreren Eigenschaften empfangen wird (z. B. in Form von Metadaten, eines Eingabestroms usw.). Beispielsweise kann eine Anforderung zum Konfigurieren des flexiblen Tensor-Beschleunigers für die Tensor-Arbeitslast (oder den Tensor-Algorithmus) den Hinweis der einen oder der mehreren Eigenschaften der Tensor-Arbeitslast aufweisen, der von einem Benutzer bei der Übermittlung der Anforderung eingegeben oder automatisch von einem separaten System bestimmt werden kann.
  • In Operation 102 wird eine Datenbewegung zwischen der Vielzahl von PEs, die in dem Inter-PE-Netzwerk des flexiblen Tensor-Beschleunigers enthalten sind, bestimmt, wobei die Datenbewegung die eine oder die mehreren Eigenschaften der Tensor-Arbeitslast (z.B. am effizientesten) unterstützt. In einer Ausführungsform kann die Datenbewegung toroidal sein.
  • Natürlich kann auch eine Konfiguration für andere Elemente des Tensor-Beschleunigers bestimmt werden, wobei die Konfiguration(en) darüber hinaus die eine oder die mehreren Eigenschaften der Tensor-Arbeitslast unterstützen. In einer Ausführungsform kann der Tensor-Beschleuniger eine Vielzahl von hierarchischen Schichten aufweisen. Darüber hinaus können bei dieser Ausführungsform die anderen Elemente des Tensor-Beschleunigers, für die, wie es vorab erwähnt ist, eine Konfiguration bestimmt ist, in einer oder mehreren der hierarchischen Schichten enthalten sein. Beispielsweise können das eine oder die mehreren Elemente des Tensor-Beschleunigers Puffer, Kommunikationskanäle und/oder Datenpfadelementverbindungen aufweisen.
  • Dementsprechend können in einer Ausführungsform das eine oder die mehreren Elemente des Tensor-Beschleunigers Datenpfadelemente des Tensor-Beschleunigers mit einer oder mehreren Funktionseinheiten aufweisen. Beispielsweise können die Datenpfadelemente mindestens eine Skalarprodukteinheit (DPU) aufweisen, die eine konfigurierbare Skalarproduktlänge aufweisen kann, wie es in 1B weiter unten näher beschrieben ist. Die Datenpfadelemente können in einer Datenpfadschicht der mehreren hierarchischen Schichten des Tensor-Beschleunigers enthalten sein. Beispielsweise kann eine Konfiguration für die Datenpfadelemente auf den einen oder den mehreren Eigenschaften der Tensor-Arbeitslast basieren, wobei die Konfiguration der Datenpfadelemente einen bestimmten Map-and-Reduce-Operationstyp bzw. Typ einer Operation zum Abbilden und Reduzieren und eine bestimmte Reduktionsoperationsgröße unterstützt.
  • Bei einigen beispielhaften Ausführungsformen weisen die konfigurierbaren Datenpfadelemente eine SIMD-Engine (Single Instruction, Multiple Data) oder einen ADX-Befehl (Multi-Precision Add-Carry Instruction Extensions) auf.
  • In einer anderen Ausführungsform können der eine oder die mehreren Elemente des Tensor-Beschleunigers die PEs des Tensor-Beschleunigers aufweisen. Die PEs des Tensor-Beschleunigers können Puffer und Datenpfad-Element-Verbindungen zwischen Datenpfad-Elementen des Tensor-Beschleunigers aufweisen. Die PEs können in einer Datenversorgungsschicht einer Vielzahl von hierarchischen Schichten des Tensor-Beschleunigers enthalten sein. Beispielsweise kann eine Konfiguration der Puffer und Datenpfad-Element-Verbindungen auf der Grundlage der einen oder der mehreren Eigenschaften der Tensor-Arbeitslast bestimmt werden, indem die Puffer und Datenpfad-Element-Verbindungen so konfiguriert werden, dass eine Wiederverwendung von Daten möglich ist.
  • Wie es oben erwähnt ist, weist der Tensor-Beschleuniger ein konfigurierbares Inter-PE-Netzwerk auf, das Verbindungen zwischen Verarbeitungselementen und dem globalen Puffer des Tensor-Beschleunigers bereitstellt. Das Inter-PE-Netzwerk kann in einer Inter-PE-Netzwerkschicht einer Vielzahl von hierarchischen Schichten des Tensor-Beschleunigers enthalten sein. Eine Konfiguration des globalen Puffers und der Verarbeitungselementverbindungen kann auf der Grundlage der einen oder der mehreren Eigenschaften der Tensor-Arbeitslast bestimmt werden, wobei die Konfiguration des globalen Puffers und der Verarbeitungselementverbindungen die eine oder die mehreren Eigenschaften der Tensor-Arbeitslast unterstützt.
  • In einer Ausführungsform können die Datenbewegung (und optional andere Elementkonfigurationen) zur Laufzeit bestimmt werden. In einer anderen Ausführungsform können die Datenbewegung (und optional andere Elementkonfigurationen) offline bestimmt werden, bevor der Tensor-Algorithmus mit der tatsächlich bereitgestellten Eingabe ausgeführt wird. Als weitere Option können die Datenbewegung und optional andere Konfigurationsdaten (z. B. in einer Datei) für den Tensor-Beschleuniger (z. B. in Echtzeit oder offline) auf der Grundlage der einen oder der mehreren Eigenschaften der Tensor-Arbeitslast zur Verwendung bei einer dynamischen Konfiguration des Beschleunigers (z. B. in Echtzeit oder offline) erzeugt werden.
  • In Operation 103 wird das Inter-PE-Netzwerk des flexiblen Tensor-Beschleunigers dynamisch konfiguriert, um die Datenbewegung zu unterstützen, wobei die dynamische Konfiguration den flexiblen Tensor-Beschleuniger an die eine oder die mehreren Eigenschaften der Tensor-Arbeitslast anpasst. In ähnlicher Weise können auch andere Elemente des Tensor-Beschleunigers dynamisch konfiguriert werden, basierend auf der Konfiguration, die für diese Elemente, wie es vorab beschrieben ist, bestimmt wurde. Der Begriff „dynamisch“ bezieht sich im vorliegenden Zusammenhang auf eine Änderung der Konfiguration des Tensor-Beschleunigers, die auf der einen oder den mehreren Eigenschaften der Tensor-Arbeitslast basiert. Optional kann das eine oder können die mehreren Elemente des Tensor-Beschleunigers zur Laufzeit dynamisch konfiguriert werden. Eine weitere Option ist, dass das eine oder die mehreren Elemente des Tensor-Beschleunigers offline konfiguriert werden können, bevor der Tensor-Algorithmus mit der tatsächlich bereitgestellten Eingabe ausgeführt wird. Als weitere Option kann der Tensor-Beschleuniger dynamisch (z. B. in Echtzeit oder offline) entsprechend den oben genannten Konfigurationsdaten konfiguriert werden. Zu diesem Zweck kann der Tensor-Beschleuniger eine flexible Architektur sein, in der zumindest die Datenbewegung zwischen der Vielzahl von PEs, die in dem Inter-PE-Netzwerk des Tensor-Beschleunigers enthalten sind, entsprechend der einen oder mehreren Eigenschaften der Tensor-Arbeitslast konfiguriert werden kann.
  • Dementsprechend kann das Verfahren 100 ein oder mehrere ausgewählte Elemente des Tensor-Beschleunigers in Übereinstimmung mit einer oder mit mehreren ausgewählten Eigenschaften der Tensor-Arbeitslast dynamisch konfigurieren. Dieses Verfahren 100 kann dementsprechend einen Tensor-Beschleuniger konfigurieren, der an die jeweilige Tensor-Arbeitslast angepasst ist.
  • Es sei angemerkt, dass, obwohl das Verfahren 100 im Zusammenhang mit einem Tensor-Beschleuniger beschrieben wird, andere Ausführungsformen in Betracht gezogen werden können, bei denen das Verfahren 100 in ähnlicher Weise auf andere Arten von in Hardware implementierten Beschleunigern angewendet werden kann. So kann jede der hier beschriebenen Ausführungsformen in ähnlicher Weise auf andere Arten von hardwarebasierten Beschleunigern angewendet werden.
  • Zu diesem Zweck kann in einer Ausführungsform das Verfahren 100 im Zusammenhang mit einem flexiblen feldprogrammierbaren Gate-Array (FPGA) anstelle eines Tensor-Beschleunigers durchgeführt werden. Im Allgemeinen können FPGAs zusätzlich zu den grundlegenden Nachschlagetabellen bzw. Look-Up Tables (LUTs) und Block Random Access Memories (BRAMs) Hardwareblöcke mit festen Funktionen aufweisen. Diese Hardwareblöcke können fest verdrahtete Logikeinheiten aufweisen, die auf einen Tensor-Algorithmus abzielen (auch als Tensor-Hardwareblöcke bezeichnet), wie z. B. eine Skalarprodukteinheit, die zwei Vektoren verarbeitet und eine Ausgabe erzeugt. Das Verfahren 100 kann angewendet werden, um ein flexibles FPGA zu konfigurieren.
  • Ähnlich wie der flexible Tensor-Beschleuniger weist das flexible FPGA mindestens ein Inter-PE-Netzwerk von PEs auf, das Konfigurationen für eine Vielzahl verschiedener Datenbewegungen unterstützt. Durch diese Unterstützung kann das flexible FPGA an eine beliebige aus einer Vielzahl verschiedener Tensor-Formen und an einen beliebigen aus einer Vielzahl verschiedener Tensor-Algorithmen angepasst werden. In diesem Zusammenhang weist die Mehrzahl der verschiedenen Tensor-Algorithmen mindestens einen GEMM-Algorithmus, einen Algorithmus für ein zweidimensionales bzw. 2D-CNN und einen Algorithmus für ein 3D-CNN auf.
  • Ähnlich wie der flexible Tensor-Beschleuniger kann das flexible FPGA konfiguriert werden, indem die eine oder die mehreren Eigenschaften der Tensor-Arbeitslast identifiziert werden (siehe Operation 101), eine Datenbewegung zwischen der Vielzahl von PEs, die in dem Inter-PE-Netzwerk des flexiblen FPGAs vorhanden sind, bestimmt wird, wobei die Datenbewegung die eine oder die mehreren Eigenschaften der Tensor-Arbeitslast unterstützt (siehe Operation 102), und indem das Inter-PE-Netzwerk des flexiblen FPGAs dynamisch konfiguriert wird, um die Datenbewegung zu unterstützen, wobei die dynamische Konfiguration das flexible FPGA an die eine oder die mehreren Eigenschaften der Tensor-Arbeitslast anpasst (siehe Operation 103).
  • 1B illustriert ein Verfahren 150 zum Konfigurieren eines flexiblen Tensor-Beschleunigers gemäß einer Ausführungsform. Das Verfahren 150 kann in Kombination mit oder unabhängig von dem Verfahren 100 der 1A durchgeführt werden. In jedem Fall können die oben für das Verfahren 100 gegebenen Definitionen auch für die Beschreibung des Verfahrens 150 gelten.
  • Das Verfahren 150 kann von einer Einrichtung durchgeführt werden, die beispielsweise einen Hardwareprozessor aufweist, um den Tensor-Beschleuniger für eine bestimmte Tensor-Arbeitslast dynamisch zu konfigurieren, und somit kann der Tensor-Beschleuniger insofern flexibel sein, als er speziell für jede Tensor-Arbeitslast konfiguriert werden kann. Der Hardwareprozessor kann ein Mehrzweckprozessor sein (z.B. eine Zentraleinheit [CPU], eine Grafikverarbeitungseinheit (GPU), usw.), der in derselben Plattform wie der flexible Tensor-Beschleuniger vorhanden sein kann oder auch nicht. Es sei darauf hingewiesen, dass das Verfahren 150 natürlich mit jeder Computerhardware durchgeführt werden kann, die eine beliebige Kombination aus dem Hardwareprozessor, einem Computercode, der auf einem nicht flüchtigen Medium (z.B. einem Computerspeicher) gespeichert ist, und/oder kundenspezifischen Schaltungen (z.B. einem domänenspezifischen, spezialisierten Beschleuniger) aufweist.
  • Zusätzlich kann das Verfahren 150 in der Cloud durchgeführt werden, wobei der flexible Tensor-Beschleuniger optional auch in der Cloud arbeitet, um die Leistung einer Arbeitslast eines lokalen oder abgesetzten Tensor-Algorithmus zu verbessern. Dementsprechend können zahlreiche Instanzen des konfigurierten flexiblen Tensor-Beschleunigers in der Cloud für mehrere verschiedene Tensor-Arbeitslasten existieren. Als weitere Option kann eine Instanz des flexiblen Tensor-Beschleunigers, die auf der Grundlage der Eigenschaft(en) einer bestimmten Tensor-Arbeitslast konfiguriert ist, von anderen Tensor-Arbeitslasten verwendet werden, die dieselbe(n) Eigenschaft(en) wie die bestimmte Tensor-Arbeitslast aufweisen.
  • Im Zusammenhang mit dem vorliegenden Verfahren 150 oder optional unabhängig von dem vorliegenden Verfahren 150 weist der flexible Tensor-Beschleuniger mindestens eine flexible DPU auf. In einer weiteren Ausführungsform kann die flexible DPU sogar unabhängig von dem flexiblen Tensor-Beschleuniger implementiert sein (z. B. kann die flexible DPU für andere Zwecke verwendet werden).
  • Die flexible DPU kann mehrere verschiedene angestrebte Rechendurchsätze unterstützen (die z. B. kleiner oder gleich dem zur Entwurfszeit bestimmten maximalen Durchsatz sind). Insbesondere weist die flexible DPU zumindest konfigurierbare logische Gruppierungen von Skalarprodukt-Untereinheiten und entsprechende Unterakkumulatoren auf, wobei eine Skalarproduktlänge jeder der Skalarprodukt-Untereinheiten auf der Grundlage eines bestimmten Rechendurchsatzes konfigurierbar ist. In einer Ausführungsform kann jede logische Gruppe der einen oder der mehreren logischen Gruppen eine Skalarprodukt-Untereinheit und einen entsprechenden Unterakkumulator aufweisen. In einer anderen Ausführungsform kann durch die Skalarproduktlänge jeder der Skalarprodukt-Untereinheiten, wenn sie kombiniert sind, der bestimmte Rechendurchsatz erreicht werden. In einer weiteren Ausführungsform können diese Skalarprodukt-Untereinheiten mit der gleichen Skalarproduktlänge konfiguriert sein.
  • Die Unterstützung mehrerer verschiedener angestrebter Rechendurchsätze ermöglicht es dem flexiblen Tensor-Beschleuniger, an eine beliebige aus einer Vielzahl verschiedener Tensor-Formen und dementsprechend an eine beliebige aus einer Vielzahl verschiedener Tensor-Arbeitslasten angepasst zu werden. Wie es in verschiedenen Ausführungsformen im Folgenden beschrieben ist, kann der flexible Tensor-Beschleuniger auch zusätzliche konfigurierbare Elemente, wie z. B. konfigurierbare Datenpfadelemente, Verarbeitungselemente und/oder ein konfigurierbares Inter-PE-Netzwerk, aufweisen. In verschiedenen Ausführungsformen, wie es im Folgenden beschrieben ist, kann der flexible Tensor-Beschleuniger mit einer SIMD-Ausführungsmaschine (Single Instruction, Multiple Data) oder einem ADX-Befehl (Multi-Precision Add-Carry Instruction Extensions) implementiert werden.
  • In Operation 151 des Verfahrens 150 werden eine oder mehrere Eigenschaften einer Tensor-Arbeitslast identifiziert. Die Tensor-Arbeitslast kann jede Arbeitslast (z. B. Task, Operation, Berechnung usw.) sein, die auf einer Datenstruktur vom Tensor-Typ beruht, einschließlich eindimensionaler (1D-) Tensoren (z. B. Vektoren), zweidimensionaler (2D-) Tensoren (z. B. Matrizen), dreidimensionaler (3D-) Tensoren, usw. In einer Ausführungsform kann die Tensor-Arbeitslast eine Arbeitslast sein, die von einem bestimmten Tensor-Algorithmus ausgeführt wird. In diesem Fall können die Eigenschaften der Tensor-Arbeitslast den speziellen Tensor-Algorithmus aufweisen, der die Tensor-Arbeitslast ausführt. Beispielsweise kann der Tensor-Algorithmus Teil einer Anwendung zum maschinellen Lernen sein, die die Datenstruktur eines Tensor-Typs für das Training und den Betrieb eines Modells eines neuronalen Netzes verwendet. In diesem Beispiel kann die Tensor-Arbeitslast das Training eines Modelles eines neuronalen Netzes und/oder den Betrieb des Modelles eines neuronalen Netzes aufweisen. In einer Ausführungsform ist der Tensor-Algorithmus ein Algorithmus für ein CNN (z. B. Algorithmus für ein 1 D-CNN, ein Algorithmus für ein 2D-CNN, ein Algorithmus für ein 3D-CNN usw.). In einer anderen Ausführungsform kann der Tensor-Algorithmus ein GEMM-Algorithmus sein. Andere Arten von Tensor-Algorithmen sind ebenfalls denkbar, wie z.B. eine Matrizenberechnung oder eine Tensor-Kontraktion.
  • Die eine oder die mehreren Eigenschaften der Tensor-Arbeitslast können jedoch einen Datenfluss der Tensor-Arbeitslast aufweisen, wie z.B. einen Typ des Datenflusses der Tensor-Arbeitslast. Der Typ des Datenflusses kann ein Store-and-Forward-Multicast/Reduction-Workflow, ein Skewed-Multicast/Reduction-Workflow oder ein Sliding-Window-Reuse-Workflow sein. In einer Ausführungsform können die Eigenschaften der Tensor-Arbeitslast den speziellen Tensor-Algorithmus aufweisen, der die Tensor-Arbeitslast ausführt. In einer anderen Ausführungsform können die Eigenschaften eine Form einer Eingabe und Ausgabe der Arbeitslast aufweisen, wie z.B. eine Kachelform und -größe, die von der Arbeitslast verwendet wird.
  • In Operation 152 werden ein oder mehrere Elemente des Tensor-Beschleunigers dynamisch konfiguriert, basierend auf der einen oder den mehreren Eigenschaften der Tensor-Arbeitslast, was zumindest ein dynamisches Konfigurieren einer flexiblen DPU einschließt. Bei der vorliegenden Operation wird die flexible DPU dynamisch konfiguriert, indem ein Soll-Rechendurchsatz für die flexible DPU bestimmt wird, der kleiner oder gleich einem maximalen Durchsatz der flexiblen DPU ist, und eine oder mehrere logische Gruppen von Skalarprodukt-Untereinheiten und entsprechenden Unterakkumulatoren konfiguriert werden, wobei eine Skalarproduktlänge jeder der Skalarprodukt-Untereinheiten auf der Grundlage des Soll-Rechendurchsatzes konfiguriert wird.
  • Der Soll-Rechendurchsatz kann auf der Grundlage der einen oder der mehreren Eigenschaften der Tensor-Arbeitslast bestimmt werden, wie z. B. der Form einer Eingabe und einer Ausgabe der Tensor-Arbeitslast. Wie es vorab erwähnt ist, kann jede logische Gruppe eine Skalarprodukt-Untereinheit und einen entsprechenden Unterakkumulator aufweisen. In diesem Fall kann die Skalarproduktlänge jeder der Skalarprodukt-Untereinheiten dynamisch so konfiguriert werden, dass sie in Kombination den Soll-Rechendurchsatz erreichen, der kleiner oder gleich dem maximal möglichen Durchsatz ist. Optional können diese Skalarprodukt-Untereinheiten dynamisch so konfiguriert werden, dass sie dieselbe Skalarproduktlänge aufweisen.
  • Natürlich können auch andere Elemente des Tensor-Beschleunigers dynamisch konfiguriert werden, basierend auf bestimmten Konfigurationen für die Elemente, wobei die Konfiguration(en) darüber hinaus die eine oder die mehreren Eigenschaften der Tensor-Arbeitslast unterstützen. In einer Ausführungsform kann der Tensor-Beschleuniger eine Vielzahl von hierarchischen Schichten aufweisen. Darüber hinaus können bei dieser Ausführungsform die anderen Elemente des Tensor-Beschleunigers, die, wie es oben erwähnt ist, dynamisch konfiguriert werden, in einer oder mehreren der hierarchischen Schichten vorhanden sein. Zum Beispiel kann das eine oder können die mehreren Elemente des Tensor-Beschleunigers Puffer, Kommunikationskanäle und/oder Datenpfad-Elementverbindungen aufweisen.
  • Dementsprechend können in einer Ausführungsform das eine oder die mehreren Elemente des Tensor-Beschleunigers Datenpfadelemente des Tensor-Beschleunigers mit einer oder mehreren Funktionseinheiten aufweisen. Beispielsweise können die Datenpfadelemente mindestens eine Skalarprodukteinheit (DPU) mit konfigurierbarer Skalarproduktlänge aufweisen. Die Datenpfadelemente können in einer Datenpfadschicht der mehreren hierarchischen Schichten des Tensor-Beschleunigers vorhanden sein. Beispielsweise kann eine Konfiguration für die Datenpfadelemente auf der einen oder den mehreren Eigenschaften der Tensor-Arbeitslast basieren, wobei die Konfiguration der Datenpfadelemente einen bestimmten Abbildungs- und Reduktions-Operationstyp und eine bestimmte Reduktionsoperationsgröße unterstützt.
  • Bei einigen beispielhaften Ausführungsformen weisen die konfigurierbaren Datenpfadelemente eine SIMD-Engine (Single Instruction, Multiple Data) oder eine ADX-Anweisung (Multi-Precision Add-Carry Instruction Extensions) auf.
  • In einer anderen Ausführungsform können das eine oder die mehreren Elemente des Tensor-Beschleunigers die PEs des Tensor-Beschleunigers aufweisen. Die PEs des Tensor-Beschleunigers können Puffer und Datenpfad-Element-Verbindungen zwischen Datenpfad-Elementen des Tensor-Beschleunigers aufweisen. Die PEs können in einer Datenversorgungsschicht einer Vielzahl von hierarchischen Schichten des Tensor-Beschleunigers vorhanden sein. Beispielsweise kann eine Konfiguration der Puffer und Datenpfad-Element-Verbindungen auf der Grundlage der einen oder der mehreren Eigenschaften der Tensor-Arbeitslast bestimmt werden, indem die Puffer und Datenpfad-Element-Verbindungen so konfiguriert werden, dass eine Wiederverwendung von Daten möglich ist.
  • In einer weiteren Ausführungsform können das eine oder die mehreren Elemente des Tensor-Beschleunigers ein Inter-PE-Netzwerk des Tensor-Beschleunigers aufweisen, das den globalen Puffer und die Verarbeitungselemente des Tensor-Beschleunigers verbindet. Das Inter-PE-Netzwerk kann in einer Inter-PE-Netzwerkschicht einer Vielzahl von hierarchischen Schichten des Tensor-Beschleunigers vorhanden sein. Zum Beispiel kann eine Konfiguration des globalen Puffers und der Verarbeitungselementverbindungen auf der Grundlage der einen oder mehreren Eigenschaften der Tensor-Arbeitslast bestimmt werden, wobei die Konfiguration des globalen Puffers und der Verarbeitungselementverbindungen die eine oder die mehreren Eigenschaften der Tensor-Arbeitslast unterstützt.
  • In einer Ausführungsform kann/können das/die Element(e) des Tensor-Beschleunigers dynamisch zur Laufzeit konfiguriert werden. In einer anderen Ausführungsform kann/können das/die Element(e) offline dynamisch konfiguriert werden, bevor der Tensor-Algorithmus mit der tatsächlich bereitgestellten Eingabe ausgeführt wird. Als weitere Option können Konfigurationsdaten (z. B. in einer Datei) für den Tensor-Beschleuniger (z. B. in Echtzeit oder offline) auf der Grundlage der einen oder mehreren Eigenschaften der Tensor-Arbeitslast erzeugt werden, um den Tensor-Beschleuniger (z. B. in Echtzeit oder offline) dynamisch konfigurieren zu können. Zu diesem Zweck kann der Tensor-Beschleuniger eine flexible Architektur aufweisen, wobei mindestens eine flexible DPU konfiguriert sein kann, um einen Soll-Rechendurchsatz zu unterstützen.
  • Dementsprechend kann das Verfahren 150 ein oder mehrere ausgewählte Elemente des Tensor-Beschleunigers in Übereinstimmung mit einer oder mehreren ausgewählten Eigenschaften der Tensor-Arbeitslast dynamisch konfigurieren. Dieses Verfahren 150 kann dementsprechend einen Tensor-Beschleuniger so konfigurieren, dass er an die jeweilige Tensor-Arbeitslast angepasst ist.
  • Es sei angemerkt, dass, obwohl das Verfahren 150 im Zusammenhang mit einem Tensor-Beschleuniger beschrieben wird, andere Ausführungsformen in Betracht gezogen werden können, bei denen das Verfahren 150 in ähnlicher Weise auf andere Typen von in Hardware implementierten Beschleunigern angewendet werden kann. So kann jede der hier beschriebenen Ausführungsformen in ähnlicher Weise auf andere Typen von hardwarebasierten Beschleunigern angewendet werden.
  • Zu diesem Zweck kann in einer Ausführungsform das Verfahren 150 im Zusammenhang mit einem flexiblen feldprogrammierbaren Gate-Array (FPGA) anstelle eines Tensor-Beschleunigers durchgeführt werden. Das Verfahren 100 kann angewendet werden, um ein flexibles FPGA zu konfigurieren.
  • Ähnlich wie der flexible Tensor-Beschleuniger weist das flexible FPGA mindestens eine flexible DPU auf, die mehrere verschiedene Soll-Rechendurchsätze über konfigurierbare logische Gruppierungen von Skalarprodukt-Untereinheiten und entsprechende Unterakkumulatoren unterstützt, wobei eine Skalarproduktlänge jeder der Skalarprodukt-Untereinheiten auf der Grundlage eines bestimmten Soll-Rechendurchsatzes konfigurierbar ist. Durch die Unterstützung mehrerer unterschiedlicher Soll-Rechendurchsätze kann das flexible FPGA an eine beliebige aus einer Vielzahl unterschiedlicher Tensor-Formen und dementsprechend an eine beliebige aus einer Vielzahl unterschiedlicher Tensor-Arbeitslasten angepasst werden.
  • Ähnlich wie der flexible Tensor-Beschleuniger kann das flexible FPGA durch Identifizieren der einen oder mehreren Eigenschaften der Tensor-Arbeitslast (siehe Operation 151) und dynamisches Konfigurieren eines oder mehrerer Elemente des FPGAs auf der Grundlage der einen oder mehreren Eigenschaften der Tensor-Arbeitslast konfiguriert werden, was zumindest ein dynamisches Konfigurieren der flexiblen DPU durch Bestimmen eines Soll-Rechendurchsatzes für die flexible DPU und ein Konfigurieren einer oder mehrerer logischer Gruppen von Skalarprodukt-Untereinheiten und entsprechender Unterakkumulatoren einschließt, wobei eine Skalarproduktlänge jeder der Skalarprodukt-Untereinheiten auf der Grundlage des Soll-Rechendurchsatzes konfiguriert wird (siehe Operation 152).
  • Weitere illustrative Informationen werden nun in Bezug auf verschiedene optionale Architekturen und Merkmale dargelegt, mit denen der vorstehende Rahmen je nach den Wünschen des Benutzers implementiert werden kann. Es sei ausdrücklich darauf hingewiesen, dass die folgenden Informationen nur zur Veranschaulichung dienen und in keiner Weise als einschränkend anzusehen sind. Jedes der folgenden Merkmale kann optional mit oder ohne Ausschluss anderer beschriebener Merkmale vorhanden sein.
  • 2 veranschaulicht eine flexible Tensor-Beschleunigerarchitektur 200 gemäß einer Ausführungsform. Die Flexibilität der Tensor-Beschleunigerarchitektur 200 kann durch die Fähigkeit realisiert sein, die Tensor-Beschleunigerarchitektur 200 für eine bestimmte Arbeitslast eines bestimmten (Ziel-)Tensor-Algorithmus zu konfigurieren. Zum Beispiel kann die Tensor-Beschleunigerarchitektur 200 gemäß dem Verfahren 100 der 1 konfiguriert werden.
  • Wie es dargestellt ist, besteht die Architektur 200 aus mehreren Elementen, die einen globalen Puffer 201, eine Anzahl von PEs 202 und ein On-Chip-Netzwerk 203 (d. h. ein Inter-PE-Netzwerk) einschließen. Der globale Puffer 201 ist ein großer On-Chip-Puffer, der dazu dient, die Datenlokalität auszunutzen und die Off-Chip-Speicherbandbreite zu erhöhen. Das PE 202 ist das Kernberechnungselement, das die Eingaben puffert, einen Datenpfad 204 zur Durchführung der Tensor-Operation verwendet und das Ergebnis in einem Akkumulatorpuffer speichert. Das On-Chip-Netzwerk 203 verbindet die PEs 202 und den globalen Puffer 201 miteinander und ist auf die Anschlussanforderungen des Tensor-Algorithmus spezialisiert.
  • Tensor-Beschleuniger sind oft für Kachelberechnungen ausgelegt, bei denen die Eingabe- und Ausgabedatensätze in kleinere Teile partitioniert werden, so dass diese Teile gut in die Speicherhierarchie passen. Kacheln werden oft aufgeteilt oder über PEs 202 in einem Beschleuniger geteilt, um die Wiederverwendung von Daten zu nutzen. Der globale Speicher stellt die Kacheln zunächst den PEs 202 zur Verfügung, die dann über das On-Chip-Netzwerk 203 Kacheln untereinander austauschen können.
  • Wie es bereits erwähnt ist, kann die Tensor-Beschleunigerarchitektur 200 für eine bestimmte Arbeitslast eines bestimmten Tensor-Algorithmus konfiguriert werden. Dies kann durch dynamisches Konfigurieren eines oder mehrerer der oben genannten Elemente des Tensor-Beschleunigers in Übereinstimmung mit einem oder mehreren Merkmalen des Arbeitsablaufs des Tensor-Algorithmus erreicht werden. Im Allgemeinen weist der Arbeitsablauf Merkmale wie eine Kachelform und einen Datenfluss auf. Die Kachelform bezieht sich auf die Größen der Eingabe- und Ausgabedaten der Kacheln, die in der Arbeitsablauf-Berechnung verwendet werden, die regelmäßig sein können (z. B. quadratische Größen), um Speicherkapazität, Bandbreite und Wiederverwendung von Kacheldaten abzustimmen. Der Datenfluss bezieht sich auf den Zeitplan, wo sich die Kacheldaten in der Hardware befinden und wie diese Daten zu einem bestimmten Zeitpunkt der Programmausführung für die Berechnung verwendet werden sollen.
  • 3 zeigt eine hierarchische Tensor-Beschleunigerarchitektur 300 gemäß einer Ausführungsform. Die hierarchische Tensor-Beschleunigerarchitektur 300 kann im Zusammenhang mit der flexiblen Tensor-Beschleunigerarchitektur 200 der 2 implementiert sein. Insbesondere können die Elemente der flexiblen Tensor-Beschleunigerarchitektur 200 der 2 in einer Vielzahl von hierarchischen Schichten angeordnet sein, wie es hier beschrieben ist.
  • Anstatt ein allgemeines Alles-zu-Alles-Netzwerk zu integrieren, kann die Flexibilität durch eine Segmentierung des Tensor-Beschleunigerentwurfs in eine mehrstufige Hierarchie bereitgestellt werden. Jede Ebene (d. h. Schicht) in der Hierarchie bearbeitet eine bestimmte Aufgabe, und jede Ebene oder eine ausgewählte Teilmenge der Ebenen kann so gestaltet sein, dass sie auf einen kleinen Bereich von Aktivitäten abzielt, die für die algorithmische Domäne (d. h. den Ziel-Tensor-Algorithmus) relevant sind. Die Ebenen der Hierarchie bilden zusammen einen äußerst flexiblen domänenspezifischen Beschleuniger. Jede Aufgabengröße bzw. Aufgabendimension kann einen vereinfachten Entwurfsraum für zusätzliche Flexibilität aufweisen, der auf der Zielmenge von Algorithmen basiert.
  • In der vorliegenden Ausführungsform ist die Architektur des Tensor-Beschleunigers 300 in drei Schichten unterteilt, die jeweils ein grundlegendes Entwurfselement darstellen: einen Datenpfad 301, eine Datenversorgung 302 (lokale Puffer und ein Netzwerk) und ein On-Chip-Netzwerk 303 (d. h. ein Inter-PE-Netzwerk). Elemente des Datenpfads 301 implementieren die für den Beschleuniger erforderlichen Kernoperationen, wobei den Funktionseinheiten Flexibilität hinzugefügt werden kann, um den Umfang von Algorithmen zu erweitern. Elemente zur Datenversorgung 302 implementieren PEs und bestehen aus lokalen Puffern und Verbindungen zu den Elementen des Datenpfads 301, wobei die Flexibilität der Puffer und der Verbindungen die Wiederverwendung von Daten ermöglicht. Ein Element des On-Chip-Netzwerks 303 verbindet die PEs untereinander und mit dem globalen Puffer, wobei eine erhöhte und dennoch maßgeschneiderte Konnektivität mehrere Datenflüsse und Kachelformen mit geringen Hardwarekosten ermöglichen kann.
  • Jede Ebene der Hierarchie kann zur Laufzeit konfiguriert werden, um mehrere Betriebsmodi zu unterstützen. Insgesamt zielt diese flexible, hierarchische Tensor-Beschleunigerarchitektur 300 auf eine viel breitere Menge von Algorithmen ab als feste Kachel-Beschleuniger, ohne dass teure generalisierte Hardware benötigt wird.
  • 4A zeigt ein konfigurierbares Datenpfadelement 400, das eine flexible Skalarprodukteinheit (DPU) mit konfigurierbarer Skalarproduktlänge gemäß einer Ausführungsform aufweist. Das Datenpfadelement kann in der Schicht des Datenpfads 301 der hierarchischen Tensor-Beschleunigerarchitektur 300 der 3 enthalten sein.
  • Beginnend auf der Ebene der Datenpfadhierarchie ist eine 1D-Tensoroperation: eine Map-and-Reduce-Operation (z. B. ein Skalarprodukt zwischen zwei Vektoren). Die Map-and-Reduce-Operation nimmt zwei 1D-Teileingaben entgegen und gibt ein skalares Teilergebnis aus, das für weitere Berechnungen wiederverwendet werden kann. Die Kachelform der 1D-Eingabekacheln entspricht der Größe des Reduktionsbaums bzw. Reduction-Trees, die je nach dem spezifischen zu lösenden Problem variiert (z. B. weist eine Tiefenweise CONV eine Reduktionsgröße von 1 auf). Auf der Ebene der DatenpfadHierarchie gibt es zwei Achsen, die Flexibilität bieten können: der Abbildungs- und Reduktions-Operationstyp bzw. Map-and-Reduce-Operationstyp und die Größe der Reduktionsoperation. Die Abbildungs-Operation kann eine Vielzahl von Operatoren unterstützen (z. B. MAC, Min/Max usw.), um eine größere Menge von algorithmischen Domänen zu ermöglichen, während eine variable Reduktionsgröße eine Vielzahl von Kachelformen ermöglichen kann.
  • Der flexible Tensor-Beschleuniger konzentriert sich auf die Ermöglichung einer Vielzahl von Kachelformen und implementiert eine flexible Skalarprodukteinheit für die Datenpfad-Hierarchieebene. Das Skalarprodukt ist die primitive Reduktionsoperation für viele Tensoroperationen in einer Vielzahl von algorithmischen Domänen, einschließlich GEMM und CONV. 4A zeigt die Architektur der Skalarprodukteinheit, die die zwei Kachel-Eingabedaten elementweise multipliziert, bevor sie eine Reduktion mit Hilfe des Addiererbaums durchführt. Eine Akkumulation kann durch Übergabe eines skalaren Teilergebnisses als Eingabe an den Addiererbaum und eine Speicherung des skalaren Teilergebnisses in einer kleinen Akkumulatorregisterdatei erfolgen.
  • Wie es dargestellt ist, kann die flexible Skalarprodukteinheit mehrere Skalarprodukte unter Verwendung von separaten Addiererbäumen und Akkumulatorregistern durchführen. Die Flexibilität auf der Datenpfadebene wird durch die Kombination mehrerer Skalarprodukte ermöglicht, wodurch die Länge der Skalarproduktoperation mit einer einzigen größeren Skalarprodukteinheit erhöht wird. Diese Konfigurierbarkeit wird durch zusätzliche Addiererbaumstufen ermöglicht, um kleinere Reduktionen miteinander zu kombinieren, sowie durch eine Multiplexerlogik zur Auswahl des richtigen Datenflusses. Wenn beispielsweise die Addiererbäume miteinander kombiniert werden, um ein größeres Skalarprodukt zu erzeugen, wird nur ein Akkumulatorein- und -ausgang benötigt, der mit Hilfe der Steuerlogik ausgewählt wird.
  • In einer beispielhaften Ausführungsform können zwei 4-Wege-Reduktionen mit minimaler Logik leicht zu 8-Wege-Reduktionen kombiniert werden, was eine bessere Ausnutzung ermöglicht. In einer anderen beispielhaften Ausführungsform kann die Unterstützung von 2-Potenz-Reduktionsbreiten ausreichen, ohne dass die Auslastung bei realen Arbeitslasten beeinträchtigt wird. Ein kleinerer Reduktionsbaum (z. B. 2-Wege) kann nicht verwendet werden, da Arbeitslasten, die diese kleinen Reduktionsbäume nutzen können, im Allgemeinen eine begrenzte Speicherbandbreite aufweisen und nicht von einer solch feinen Granularität profitieren.
  • Diese Flexibilität ermöglicht es, dass die Datenpfadeinheit als logisch verschiedene Gruppen von Skalarprodukteinheiten und Akkumulatoren konfiguriert werden. Zum Beispiel mit der gleichen Anzahl von Multiplizierern und Akkumulatoren. In 4A ist die Hardware als eine DP-Einheit mit einer Länge von 8 und einer Akkumulatorgröße von 2 zu sehen. Oder es kann als zwei Gruppen von DP-Einheiten mit einer Länge von 4 und einer Akkumulatorgröße von 1 betrachtet werden. Der Umfang einer Menge von logischen Akkumulatoren hängt also davon ab, wie die DP-Einheit konfiguriert ist.
  • 4B zeigt gemäß einer Ausführungsform ein konfigurierbares Verarbeitungselement (PE) 410 mit Puffern und DPUs, die über ein flexibles Netzwerk verbunden sind. Das PE 410 kann in der Schicht der Datenversorgung 302 der hierarchischen Tensor-Beschleunigerarchitektur 300 der 3 vorhanden sein.
  • Die PE- (Datenversorgungs-) Hierarchieebene fügt der Tensor-Operation eine weitere Dimension hinzu, indem Datenpuffer und mehrere Skalarprodukteinheiten eingeführt werden. Diese zweite Dimension kann auf verschiedene Weise für verschiedene Algorithmen genutzt werden, wobei die Datenpuffer für die gemeinsame Nutzung von Daten über Zeit und Raum hinweg eingesetzt werden. So kann beispielsweise eine 1 D-Faltung mit Hilfe eines gleitenden Fensters Eingangsaktivierungen über der Zeit wiederverwenden. In ähnlicher Weise kann eine allgemeine Matrix-Vektor-Multiplikation (GEMV) einen Zeilenvektor auf mehrere Skalarprodukteinheiten verteilen, die jeweils mit einer anderen Matrixspalte arbeiten. Auf der PE-Ebene gibt es zwei Flexibilitätsachsen. Erstens ermöglichen die Puffer selbst die Wiederverwendung von Daten, so dass die Größe des Puffers die Möglichkeit der Wiederverwendung im Laufe der Zeit beeinflusst. Zweitens ermöglicht die Anschlussmöglichkeit der Datenpuffer an die Menge flexibler Skalarprodukteinheiten eine zusätzliche Wiederverwendung von Daten über Multicast bzw. eine Mehrpunktverbindung.
  • Sowohl die Größe der Puffer als auch die Anschlussmöglichkeit können beim Ausbilden des flexiblen PE genutzt werden, da sie der Schlüssel zur Ermöglichung alternativer Datenflüsse und Kachelformen sind. 4B zeigt die Organisation des flexiblen PE, das über mehrere (N) Skalarprodukteinheiten verfügt, die über ein flexibles Multicast-Netzwerk mit zwei Eingangsoperandenpuffern verbunden sind. Jeder Eingangspuffer ist so ausgelegt, dass er eine native Eingangsbreite aufweist, die der maximalen 1D-Kachelgröße (Reduktionsgröße) der Skalarprodukteinheit entspricht. Die beiden Operandenpuffer sind asymmetrisch ausgelegt. Ein Eingangspuffer weist mehr Bänke auf und hat mehrere Leseanschlüsse, so dass jede Skalarprodukteinheit in jedem Zyklus einen individuellen Eintrag erhalten kann (hauptsächlich Unicast bzw. Punkt-zu-Punkt). Der andere Eingangspuffer weist weniger Bänke auf und dient in erster Linie dem Multicast bzw. einet Mehrfachübertragung von Daten zu mehreren Skalarprodukteinheiten.
  • Kleine Adressgeneratoren sind so konfiguriert, dass sie aus den Eingangspuffern mittels einer Menge von Mustern die gewünschte Kachelform und den gewünschten Datenfluss ermitteln. Das flexible Netzwerk unterstützt eine begrenzte Anschlussmöglichkeit bzw. Konnektivität, um die Komplexität zu reduzieren und die gewünschten Muster von GEMM- und CONV-Tensor-Operationen zu ermöglichen. Das Netzwerk kann entweder so konfiguriert werden, dass i) eine einzelne 1 D-Kachel aus einem Puffer mehrfach versendet wird (multicast), N individuelle 1 D-Kacheln aus dem anderen Puffer einfach (Unicast) übertragen werden, so dass das PE pro Zyklus eine GEMV-Operation durchführen kann; dass ii) ein gruppierter Multicast ausgeführt wird, um zwei Paare von 1D-Kacheln aus zwei Puffern zu verteilen; oder dass iii) vier 1 D-Kacheln aus beiden Puffern an die Skalarprodukteinheiten übertragen werden (Unicast). Das Multicast-Ziel muss zusammen mit der Skalarprodukteinheit konfiguriert werden. Der Multicast-Puffer ist auch so bemessen, dass er das zeitlich gleitende Fenster zur Wiederverwendung für die 1D-Faltung erfasst. Beispielsweise benötigt eine 1D-Faltung mit Q=8, S=3 und C=8 80 Einträge ((8+3-1).8). Dieser Puffer kann so bemessen sein, dass er das gleitende Fenster für 1D für verschiedene Filtergrößen und Schrittmuster in CNN-Arbeitslasten erfasst und eine doppelte Pufferung ermöglicht.
  • 4C zeigt gemäß einer Ausführungsform ein konfigurierbares Inter-PE-Netzwerk 420, das eine doppelt gefaltete Torus-Netzwerktopologie aufweist, die PEs verbindet. Das Inter-PE-Netzwerk 420 kann in der Schicht des Inter-PE-Netzwerks 303 der hierarchischen Tensor-Beschleunigerarchitektur 300 der 3 vorhanden sein.
  • Die letzte Ebene der Hierarchie ist das Inter-PE-Netzwerk, das die Menge von PEs und den globalen Puffer verbindet. Durch dieses Inter-PE-Netzwerk ermöglicht der flexible Tensor-Beschleuniger mehr Datenflüsse und Hardware-Kachelformen als andere Beschleuniger. In einer Ausführungsform können Tensor-Operationen eines höheren Rangs durch Zusammensetzen einer Reihe von Operationen mit niedrigerem Rang und einer ermöglichten Datenwiederverwendung implementiert werden. So kann beispielsweise ein GEMM-Beschleuniger durch Zusammensetzen mehrerer GEMV-PEs implementiert werden, die sich die 2D-Eingabekacheln über alle PEs hinweg teilen. Ein 2D-CONV-Beschleuniger kann durch die Zusammensetzung mehrerer 1D-CONV-PEs implementiert werden, die sich die Eingangsaktivierungen teilen, um ein gleitendes Fenster für 2D zu nutzen. Die Schlüsselachse der Flexibilität für das Inter-PE-Netzwerk ist die Konnektivität des Netzwerks, um eine Vielzahl von Zusammensetzungen zu ermöglichen.
  • In der vorliegenden Ausführungsform der 4C verwendet der flexible Tensor-Beschleuniger Sätze von 1D-Peer-to-Peer-Ringnetzen, die den Datenaustausch zwischen benachbarten PEs ermöglichen. Zusammen implementieren die Ringnetzwerke eine 2D-gefaltete Torustopologie, die Komplexität und Konnektivität ausbalanciert. Das Netzwerk verbindet die Bänke des globalen Puffers mit den Edge-PEs. Das Netzwerk wird zur Laufzeit konfiguriert und unterstützt sowohl ein Store-and-Forward-Multicast als auch eine Peer-to-Peer-Kommunikation, um unterschiedliche Datenflüsse und Kachelformen für GEMM und CONV zu ermöglichen. Mehrere PEs können zusammenarbeiten, um viel größere 2D- und 3D-Tensoroperationen zu berechnen. Durch ein dynamisches Konfigurieren der Gruppierung von PEs für 2-Rang-Operationen zu einem Tensor-Beschleuniger für größere Ränge unterstützt der flexible Tensor-Beschleuniger konfigurierbare Hardwarekacheln und Operationen mit verschiedenen Datenflüssen, im Gegensatz zu früheren Beschleunigern, die eine feste Hardwarekachel mit vorgefertigten Datenflüssen für bestimmte Tensor-Algorithmen implementieren.
  • Das 2D-Torus-Inter-PE-Netzwerk in dem flexiblen Tensor-Beschleuniger ist in der Lage, drei verschiedene Typen von Datenflüssen über flexible Ringe zu unterstützen: Store-and-Forward-Multicast/Reduction, Skewed-Multicast/Reduction und Sliding-Window-Reuse, wie es im Folgenden im Detail beschrieben wird.
  • Dieses 2D-Torus-Netzwerk ermöglicht eine torusförmige Datenbewegung zwischen PEs, um verschiedene Datenflüsse zu unterstützen, was (a) Store-and-Forward-Multicast und -Reduktion über mehrere PEs, (b) Skewed/Rotational Multicast und -Reduktion, (c) eine Datenwiederverwendung bei gleitendem Fenster für 2D-CONV und (d) eine Datenwiederverwendung bei gleitendem Fenster für 3D-CONV einschließt.
  • Die Unterstützung aller Muster mittels eines Netzwerks ist die Neuheit beim Inter-PE-Netzwerk. Es gibt frühere Systeme für (a), (b) und (c). Aber keines hat (d) erfüllt, und keines hat ein Netzwerk zur Unterstützung aller Datenflüsse vorgeschlagen.
  • Store-and-Forward Multicast/Reduction bzw. Speichern und Weiterleiten, Multicast/Reduzierung
  • Store-and-Forward-Datenflüsse auf dem flexiblen Tensor-Beschleuniger nutzen das Inter-PE-Netzwerk als ein unidirektionales Netz. Operanden und Teilsummen werden von einem PE zu dem nächsten PE weitergeleitet, so dass die Daten im Laufe der Zeit über mehrere PEs hinweg von Punkt zu Gruppe weitergeleitet (multicast) oder räumlich reduziert werden. Während bei Beschleunigern nach dem Stand der Technik Speicher- und Weiterleitungs-Datenströme eingesetzt werden (z. B. leitet das systolische Array der Tensor Processing Unit [TPU] Eingangsaktivierungen per Speicher- und Weiterleitung in jede Zeile weiter und reduziert Teilsummen in jeder Spalte), bietet der flexible Tensor-Beschleuniger der vorliegenden Ausführungsform eine unbegrenzte Anzahl von Speicher- und Weiterleitungsmöglichkeiten unter Verwendung der erweiterten Konnektivität, die durch die 2D-Torustopologie bereitgestellt wird. So ist der flexible Tensor-Beschleuniger nicht auf die Speicherung und Weiterleitung in nur einer Dimension über Zeilen oder Spalten von PEs beschränkt, sondern kann stattdessen Operanden über alle PEs hinweg gemeinsam nutzen. Diese mehrdimensionale Unterstützung ist besonders nützlich, wenn der flexible Tensor-Beschleuniger für die effiziente Ausführung unregelmäßiger GEMM-Arbeitslasten konfiguriert wird, wie es im Folgenden beschrieben ist.
  • Skewed Multicasting/Reduction bzw. Verzerrte Mehrfachübertragung/Reduzierung
  • Skewed bzw. verzerrte Datenflüsse nutzen Peer-to-Peer-Netzwerke zum Austausch von Daten zwischen PEs über der Zeit für eine effizientere Wiederverwendung von Daten. 5A zeigt einen nicht-verzerrten Datenfluss und 5B zeigt einen verzerrten Datenfluss, was deutlich macht, wie beide unterschiedliche Ansätze für eine Mehrfachübertragung von B-Elementen zu vier PEs über mehrere Zyklen verwenden. Bei dem in 5A dargestellten nicht-verzerrten Datenfluss wird in jedem Zyklus ein einzelnes B-Element über ein festes Multicast-Netzwerk an die PEs gesendet. Bei dem in 5B dargestellten verzerrten Datenfluss liest jedes PE in dem ersten Zyklus ein B-Element. Die B-Elemente werden dann in den folgenden Zyklen über den Datenaustausch zwischen benachbarten PEs per Multicast übertragen. In beiden Datenflüssen wird A über vier Zyklen hinweg gleich gehalten, und die B-Elemente werden im Multicast-Verfahren an alle vier PEs übertragen. Der Hauptunterschied zwischen den beiden Datenflüssen besteht darin, dass verzerrte Datenflüsse eine Eins-zu-Eins-Kommunikation für eine Multicast-Übertragung bzw. Mehrfachübertragung nutzen, was effizienter ist als ein festes Multicast-Netzwerk, das eine Eins-zu-Viele-Kommunikation implementiert.
  • 5C veranschaulicht, wie skewed Datenflüsse auch bei Teilsummenreduktionen verwendet werden können. In diesem Beispiel wird B gleich gehalten, und in jedem Zyklus erhalten die vier PEs neue A-Elemente, die nicht über Zeilen/Spalten geteilt werden. Anstatt die Teilsumme zu speichern, geben die PEs die Teilsumme an ihren Nachbarn weiter, der sie als Eingabe verwendet und im nächsten Zyklus reduziert. Nach einer vollen Rotation von vier Zyklen sind im Akkumulator jeder PE vier individuelle Ausgaben gespeichert.
  • Diese skewed Datenflüsse verallgemeinern den Puffer teilenden Datenfluss bzw. Buffer Sharing Dataflow (BSD) aus dem Stand der Technik, der nur das Teilen von Operanden und keine Reduktionen unterstützt. Darüber hinaus ist der Peer-to-Peer-Datenaustausch und die Rotation in dem 2D-Ring-Netzwerk des flexiblen Tensor-Beschleunigers effizienter als das Maschen-Netzwerk in Tangram aufgrund der großen Entfernung zwischen den Randknoten.
  • Wie es vorab erwähnt ist, unterstützt der flexible Tensor-Beschleuniger eine Vielzahl von Tensor-Algorithmen mit unterschiedlichen Kachelformen und unterschiedlichen Datenflüssen, indem er die Flexibilität der Datenübertragungsnetzwerke nutzt. Während die obigen Ausführungsformen beschreiben, wie diese Netzwerke konfiguriert werden können, um eine vielfältige Menge von Datenflüssen zu unterstützen, beschreiben die Ausführungsformen der 6A-B und 7A-C, wie diese Datenflüsse bei verschiedenen Tensor-Arbeitslasten verwendet werden.
  • Der flexible Tensor-Beschleuniger, der als ein GEMM-Beschleuniger konfiguriert ist.
  • Unter Verwendung der beiden vorab beschriebenen Datenflüsse kann der flexible Tensor-Beschleuniger verschiedene GEMM-Kernel unterstützen. Die PEs des flexiblen Tensor-Beschleunigers werden zunächst als GEMV-PEs konfiguriert, und abhängig von den dimensionalen Parametern der GEMM wird das Gesamtsystem dann so konfiguriert, dass es unterschiedliche Datenflüsse für unterschiedliche Operanden verwendet.
  • Konfiguration eines regulären GEMM-Beschleunigers
  • Für reguläre (quadratische Kachelform) GEMMs nimmt der flexible Tensor-Beschleuniger einen gewichtsgleichen Datenfluss an. Verschiedene Eingangsaktivierungen werden durch die Zeilen der PEs unter Verwendung eines Store-and-Forward-Datenflusses geleitet, und Teilsummen werden durch die Spalten der PEs unter Verwendung eines skewed Reduzierungsdatenflusses reduziert.
  • Konfigurieren eines unregelmäßigen GEMM-Beschleunigers
  • Für unregelmäßige GEMMs nutzt der flexible Tensor-Beschleuniger die 2D-Torus-Konnektivität, um die gemeinsame Datennutzung zu erweitern und eine nicht-quadratische Kachelform zu imitieren. Der beste Beschleunigerentwurf für eine unregelmäßige GEMM-Arbeitslast stimmt die Hardwaregrößen mit der Arbeitslastgröße ab, wie es in 6A gezeigt ist. 6B zeigt, dass der flexible Tensor-Beschleuniger diesen Datenfluss ermöglicht, indem er die Matrix auf das 2D-Torus-Netzwerk faltet, so dass zwei Reihen von vier PEs effektiv als eine einzige Reihe von acht PEs arbeiten. Auf diese Weise kann ein Operand A (Eingangsaktivierungen) über Store-and-Forward über mehrere PEs verteilt werden. Der flexible Tensor-Beschleuniger kombiniert zwei Sätze gefalteter Datenströme, um eine Zwei-Wege-Reduktion zu erzeugen, wobei die Ausgabe wie bei einem kundenspezifischen 8x2-PE-Array erzeugt wird.
  • Einige kürzlich vorgeschlagene GEMM-Beschleuniger nach dem Stand der Technik sind ebenfalls so konzipiert, dass sie unregelmäßige GEMMs unterstützen (z. B. durch die Verwendung eines omnidirektionalen systolischen Subarrays und zweier Sätze bidirektionaler Ringbusse, um Eingangsaktivierungen und Teilsummen über Subarrays [kleine GEMM-PEs] hinweg zu teilen), allerdings verwenden diese Beschleuniger einen 1 D-Ringbus und erweitern nur die Store-and-Forward/Reduction-Fähigkeit. Der hier beschriebene flexible Tensor-Beschleuniger nutzt jedoch den 2D-Torus, um mehr Muster für Datenflüsse und Verteilungen zu ermöglichen, wie es vorab in Bezug auf die verschiedenen unterstützten Datenflüsse beschrieben ist.
  • In den vorherigen Beispielen wurde zur Veranschaulichung ein gewichts (B)-gleicher Datenfluss gezeigt. Es sei jedoch angemerkt, dass der flexible Tensor-Beschleuniger auch so konfiguriert werden kann, dass er einen Eingabe- (A-)-gleichen Datenfluss verwendet, indem der Datenfluss und die Netzwerknutzung zwischen Gewichten und Eingaben vertauscht werden.
  • Der flexible Tensor-Beschleuniger, der als CONV-Beschleuniger konfiguriert ist.
  • Der flexible Tensor-Beschleuniger kann auch als ein CONV-Beschleuniger konfiguriert werden. Der Hauptunterschied zwischen einem GEMM-Beschleuniger und einem CONV-Beschleuniger besteht darin, dass der Beschleuniger die Faltungswiederverwendung (d.h. ein gleitendes Fenster) bei den Eingangsaktivierungen nutzen kann. Der flexible Tensor-Beschleuniger implementiert 2D-CONV, indem zunächst jedes PE als 1 D-CONV-PE konfiguriert wird und mehrere PEs miteinander verbunden werden, um einen 2D-Faltungskernel zu berechnen. Diese PEs teilen sich Daten mit ihren Nachbarn, um eine große monolithische mathematische Maschine für ein 2D/3D-Faltung zu schaffen.
  • Konfigurieren eines regulären CONV-Beschleunigers
  • Ähnlich wie bei GEMM passt der flexible Tensor-Beschleuniger einen gewichtsgleichen Datenfluss für eine reguläre CONV (quadratische Ein- /Ausgabekanäle) an. Jedes PE verwendet den Multicast-Puffer, um eine Zeile der Eingangsaktivierungsvektoren zu speichern, einschließlich der Eingangshalos, und verwendet den Unicast-Puffer, um Vektoren von Gewichten zu speichern, wie es in 7A gezeigt ist. Bei einer 1D-CONV mit einer Filterbreite von 3 führt jedes PE des flexiblen Tensor-Beschleunigers drei Durchläufe durch den Eingangsaktivierungspuffer durch und nutzt dabei die Wiederverwendung des gleitenden Fensters bei 1D.
  • Wenn alle 1D-CONV-PEs mit der aktuellen Zeile (Epoche) fertig sind, nutzen sie den Cross-PE-Ring, um die Zeilen mit ihren Nachbarn auszutauschen. 7B zeigt diesen Datenfluss. Bei einer 2D-Faltung mit einer Filterhöhe von 3 gibt es drei Epochen, um die Zeilen der Eingangsaktivierung weiterzugeben. Dieser Datenaustausch muss nicht auf Zeilengranularität erfolgen, da das PE mit dem Austausch von Elementdaten beginnen kann, bevor die aktuelle Zeile abgearbeitet worden ist. Bei CONV-Kernen mit einer Schrittweite von mehr als eins verwirft der flexible Tensor-Beschleuniger einfach Zeilen ohne Wiederverwendung des gleitenden Fensters.
  • Der flexible Tensor-Beschleuniger kann auch 3D-CONV nativ unterstützen, indem er den Datenfluss des gleitenden Fensters in die dritte Dimension erweitert. Sobald eine Gruppe von 1D-CONV-PEs mit allen Epochen fertig ist, können sie die Eingabeaktivierungsebene an eine nahegelegene PE-Gruppe weitergeben, wobei das gleitende Fenster in der anderen Dimension genutzt wird.
  • Konfigurieren eines irregulären CONV-Beschleunigers
  • Irreguläre CONV-Kernel wie die tiefenweise CONV weisen eine viel geringere Datenwiederverwendung als eine reguläre CONV auf. Um diese Arbeitslasten zu unterstützen, tauscht der flexible Tensor-Beschleuniger daher die Puffernutzung bei jedem 1D-CONV-PE, wie es in 7C gezeigt ist. Die Gewichte verwenden den Multicast-Puffer, während die Eingangsaktivierungen den Unicast-Puffer verwenden. Bei jedem Zyklus wird ein einzelner Gewichtsvektor an alle Skalarprodukteinheiten im Multicast-Verfahren übertragen, und mehrere Eingangsaktivierungselemente werden aus dem Unicast-Puffer gelesen. Bei einer Eingangskanalgröße von weniger als 8 (z. B. bei der tiefenweisen Faltung) teilt FlexMath das flexible Skalarprodukt in zwei Einheiten auf, um die kleinere Reduktionslänge zu unterstützen.
  • Bei der tiefenweisen Faltung verbindet der flexible Tensor-Beschleuniger mehr 1D-PEs als die Breite des Systems. 16 Reihen von Eingangsaktivierungen können auf einem flexiblen 4x4-Tensor-Beschleunigersystem gefaltet werden, ähnlich wie eine unregelmäßige GEMM gefaltet wird. Durch diese Faltung kann der flexible Tensor-Beschleuniger die Wiederverwendung von Daten des gleitenden Fensters bei der tiefenweisen Faltung nutzen.
  • Der Datenfluss des gleitenden Fensters, der das Ringnetzwerk des flexiblen Tensor-Beschleunigers verwendet, ähnelt einigen CONV-Beschleunigern des Standes der Technik. Der Stand der Technik geht jedoch von Single-MAC-PEs aus, während bei anderem Stand der Technik mehrere Filterreihen abgebildet werden, was häufig zu einer geringeren Auslastung führt. Auch die Art und Weise, wie der flexible Tensor-Beschleuniger Zeilen zwischen PEs weiterleitet, um die Teilsumme in dem Akkumulator zu akkumulieren, verallgemeinert den Weitergabe-Datenfluss zwischen PEs gegenüber dem Stand der Technik. Der flexible Tensor-Beschleuniger ist flexibler in Bezug auf die unterstützten Ausgabedimensionen, da die Breite durch die Größe des PE-Puffers bestimmt wird und die Höhe mithilfe des 2D-Torus-Netzwerks angepasst werden kann. Darüber hinaus unterstützt der flexible Tensor-Beschleuniger eine 3D-CONV nativ, während der Stand der Technik dies nicht kann. Dies liegt daran, dass jedes PE ein lokales gleitendes Fenster aufweist, das für eine 1D-CONV wiederverwendet wird, und dass das 2D Torus-Netzwerk die Dimension der Faltung darüber hinaus bei 2D- und 3D-CONV erweitert.
  • Konfigurieren des flexiblen Tensor-Beschleunigers für andere Tensor-Arbeitslasten
  • Der flexible Tensor-Beschleuniger kann so konfiguriert werden, dass er andere Tensor-Arbeitslasten unterstützt, z. B. solche, die sich aus 1- und 2-Rang-Operationen zusammensetzen können. Das beste Abbilden bzw. Mapping und die beste Konfiguration hängen von den Parametern der Arbeitslast ab, an die der flexible Tensor-Beschleuniger angepasst werden kann. Während die Abbildung für die angestrebte Arbeitslast manuell erstellt werden kann, indem die Flexibilität des flexiblen Tensor-Beschleunigers genutzt wird, können auch automatische Abbildungs-Suchwerkzeuge verwendet werden, um die besten Abbildungen für komplexe Tensor-Algorithmen zu finden.
  • Schlussfolgerung
  • Tensor-Algorithmen verwenden einen vielfältigen Satz von Tensor-Operationen. Moderne Tensor-Beschleuniger sind jedoch darauf ausgelegt, Tensor-Operationen für Kacheln fester Größe, entweder bezüglich GEMM oder CONV, möglichst effizient auszuführen. Jede Nichtübereinstimmung zwischen dem Algorithmus und der nativen (Tensor-Beschleuniger-) Hardware für eine Kachel führt zu Ineffizienz, wie z. B. unnötigen Datenbewegungen oder geringer Auslastung. Die oben beschriebenen Ausführungsformen stellen einen flexiblen Tensor-Beschleuniger bereit, der eine Hierarchie eines konfigurierbaren Datenübermittlungsnetzwerks nutzt, um eine flexible gemeinsame Datennutzung für verschiedene Tensor-Arbeitslasten zu ermöglichen. Der flexible Tensor-Beschleuniger führt sowohl GEMM als auch CONV effizient aus und erhöht die Beschleunigerauslastung für unregelmäßige Tensor-Operationen. Infolgedessen verbessert der flexible Tensor-Beschleuniger die NN-Latenzzeit von Ende zu Ende gegenüber einem starren GEMM-Beschleuniger für eine feste Kachel und ist energie- und flächeneffizienter als ein starrer CONV-Beschleuniger.
  • 8 zeigt ein beispielhaftes System 800 gemäß einer Ausführungsform. Optional kann das System 800 so implementiert sein, dass es jedes der in den obigen Ausführungsformen beschriebenen Verfahren, Prozesse, Operationen usw. ausführen kann. Optional kann das System 800 in einem Rechenzentrum implementiert sein, um eine der oben beschriebenen Ausführungsformen in der Cloud auszuführen.
  • Wie es dargestellt ist, ist ein System 800 bereitgestellt, das mindestens einen Zentralprozessor 801 aufweist, der mit einem Kommunikationsbus 802 verbunden ist. Das System 800 weist auch einen Hauptspeicher 804 auf [z.B. einen Direktzugriffsspeicher (RAM), usw.]. Das System 800 weist auch einen Grafikprozessor 806 und optional eine Anzeige 808 auf.
  • Das System 800 kann auch einen Sekundärspeicher 810 aufweisen. Der Sekundärspeicher 810 weist beispielsweise ein Solid-State-Laufwerk (SSD), einen Flash-Speicher, ein Wechselspeicherlaufwerk usw. auf. Das Wechselspeicherlaufwerk liest und/oder schreibt auf bekannte Weise von einer Wechselspeichereinheit.
  • Computerprogramme oder Computersteuerungslogikalgorithmen können in dem Hauptspeicher 804, in dem Sekundärspeicher 810 und/oder in jedem anderen Speicher gespeichert werden. Solche Computerprogramme ermöglichen es dem System 800, wenn sie ausgeführt werden, verschiedene Funktionen auszuführen (wie es z.B. vorab dargelegt ist). Der Speicher 804, der Speicher 810 und/oder jeder andere Speicher sind mögliche Beispiele für nicht-flüchtige computerlesbare Medien.
  • Das System 800 kann auch ein oder mehrere Kommunikationsmodule 812 aufweisen. Das Kommunikationsmodul 812 kann so betrieben werden, dass es die Kommunikation zwischen dem System 800 und einem oder mehreren Netzwerken und/oder mit einer oder mehreren Einrichtungen über eine Vielzahl von möglichen Standard- oder proprietären Kommunikationsprotokollen (z. B. über Bluetooth, Near Field Communication (NFC), zellulare Kommunikation usw.) ermöglicht.
  • Wie es ebenfalls dargestellt ist, kann das System 800 optional auch eine oder mehrere Eingabeeinrichtungen 814 aufweisen. Bei den Eingabeeinrichtungen 814 kann es sich um kabelgebundene oder drahtlose Eingabeeinrichtungen handeln. Bei anderen Ausführungen kann jede Eingabeeinrichtung 814 eine Tastatur, ein Touchpad, einen Touchscreen, eine Spielsteuerung (z.B. für eine Spielkonsole), eine Fernbedienung (z.B. für eine Set-Top-Box oder einen Fernseher) oder jede andere Einrichtung aufweisen, die von einem Benutzer verwendet werden kann, um Eingaben für das System 800 bereitzustellen.

Claims (46)

  1. Verfahren zum Konfigurieren einer flexiblen Skalarprodukteinheit, DPU, umfassend: in einer Einrichtung: Bestimmen eines Soll-Rechendurchsatzes für die flexible DPU, welcher kleiner als oder gleich einem maximalen Durchsatz der flexiblen DPU ist; und Konfigurieren einer oder mehrerer logischer Gruppen von Skalarprodukt-Untereinheiten und entsprechender Unterakkumulatoren, wobei eine Skalarproduktlänge jeder der Skalarprodukt-Untereinheiten abhängig von dem Soll-Rechendurchsatz konfiguriert wird.
  2. Verfahren nach Anspruch 1, wobei jede logische Gruppe der einen oder der mehreren logischen Gruppen eine Skalarprodukt-Untereinheit und einen entsprechenden Unterakkumulator aufweist.
  3. Verfahren nach Anspruch 1 oder 2, wobei die Skalarproduktlänge jeder der Skalarprodukt-Untereinheiten in Kombination den Soll-Rechendurchsatz erreicht.
  4. Verfahren nach Anspruch 3, wobei die Skalarprodukt-Untereinheiten mit derselben Skalarproduktlänge konfiguriert werden.
  5. Verfahren zum Konfigurieren eines flexiblen Tensor-Beschleunigers, umfassend: Identifizieren einer oder mehrerer Eigenschaften einer Tensor-Arbeitslast; und dynamisches Konfigurieren eines oder mehrerer Elemente eines Tensor-Beschleunigers abhängig von der einen oder den mehreren Eigenschaften der Tensor-Arbeitslast, was zumindest ein dynamisches Konfigurieren einer flexiblen Skalarprodukteinheit, DPU, einschließt, durch: Bestimmen eines Soll-Rechendurchsatzes für die flexible DPU, welcher kleiner als oder gleich einem maximalen Durchsatz der flexiblen DPU ist, und Konfigurieren einer oder mehrerer logischer Gruppen von Skalarprodukt-Untereinheiten und entsprechender Unterakkumulatoren, wobei eine Skalarproduktlänge jeder der Skalarprodukt-Untereinheiten abhängig von dem Soll-Rechendurchsatz konfiguriert wird.
  6. Verfahren nach Anspruch 5, wobei jede logische Gruppe der einen oder der mehreren logischen Gruppen eine Skalarprodukt-Untereinheit und einen entsprechenden Unterakkumulator aufweist.
  7. Verfahren nach Anspruch 5 oder 6, wobei die Skalarproduktlänge jeder der Skalarprodukt-Untereinheiten in Kombination den Soll-Rechendurchsatz erreicht.
  8. Verfahren nach Anspruch 7, wobei die Skalarprodukt-Untereinheiten mit derselben Skalarproduktlänge konfiguriert werden.
  9. Verfahren nach einem der Ansprüche 5 bis 8, wobei eine Konfiguration der flexiblen DPU einer Form einer Eingabe und einer Ausgabe der Tensor-Arbeitslast entspricht.
  10. Verfahren nach einem der Ansprüche 5 bis 9, wobei die Tensor-Arbeitslast eine Arbeitslast eines Tensor-Algorithmus ist.
  11. Verfahren nach Anspruch 10, wobei der Tensor-Algorithmus ein General Matrix Multiply (GEMM) -Algorithmus ist.
  12. Verfahren nach Anspruch 10 oder 11, wobei der Tensor-Algorithmus einer ist von: einem Algorithmus für ein eindimensionales (1D) faltendes neuronales Netzwerk (CNN), einem Algorithmus für ein zweidimensionales (2D) CNN, oder einem Algorithmus für ein dreidimensionales (3D) CNN.
  13. Verfahren nach einem der Ansprüche 5 bis 12, wobei das eine oder die mehreren Elemente des Tensor-Beschleunigers zur Laufzeit dynamisch konfiguriert werden.
  14. Verfahren nach einem der Ansprüche 5 bis 13, wobei das eine oder die mehreren Elemente des Tensor-Beschleunigers in einer oder mehreren hierarchischen Schichten des Tensor-Beschleunigers vorhanden sind, und wobei das dynamische Konfigurieren ein Konfigurieren einschließt von zumindest einem von: Puffern, einem On-Chip-Netzwerk oder Datenpfad-Element-Verbindungen.
  15. Verfahren nach einem der Ansprüche 5 bis 14, wobei das eine oder die mehreren Elemente des Tensor-Beschleunigers Datenpfadelemente des Tensor-Beschleunigers mit einer oder mehreren Funktionseinheiten aufweisen, wobei die Datenpfadelemente die flexible DPU aufweisen.
  16. Verfahren nach einem der Ansprüche 5 bis 15, wobei das eine oder die mehreren Elemente des Tensor-Beschleunigers Verarbeitungselemente des Tensor-Beschleunigers mit Puffern und Datenpfad-Elementverbindungen zwischen Datenpfadelementen des Tensor-Beschleunigers aufweisen.
  17. Verfahren nach Anspruch 16, wobei die Puffer und Datenpfad-Elementverbindungen abhängig von der einen oder den mehreren Eigenschaften der Tensor-Arbeitslast konfiguriert werden, durch: Konfigurieren der Puffer und Datenpfad-Elementverbindungen, um eine Datenwiederverwendung zu ermöglichen.
  18. Verfahren nach einem der Ansprüche 5 bis 17, wobei das eine oder die mehreren Elemente des Tensor-Beschleunigers ein Inter-PE-Netzwerk des Tensor-Beschleunigers mit einem globalen Puffer und Verarbeitungselementverbindungen zwischen Verarbeitungselementen des Tensor-Beschleunigers aufweisen.
  19. Verfahren nach Anspruch 18, wobei der globale Puffer und die Verarbeitungselementverbindungen abhängig von der einen oder den mehreren Eigenschaften der Tensor-Arbeitslast konfiguriert werden, durch: Konfigurieren des globalen Puffers und der Verarbeitungselementverbindungen, um die eine oder die mehreren Eigenschaften der Tensor-Arbeitslast zu unterstützen.
  20. Verfahren nach einem der Ansprüche 5 bis 19, wobei der flexible Tensor-Beschleuniger mit einer SIMD-Ausführungsmaschine, welche einen einzelnen Befehl für mehrere Daten ausführt, implementiert ist.
  21. Verfahren nach einem der Ansprüche 5 bis 20, wobei der flexible Tensor-Beschleuniger mit einem ADX-Befehl aus einer Befehlssatzerweiterung für Langzahlarithmetik implementiert ist.
  22. Nicht-flüchtiges computerlesbares Medium, welches Computerbefehle zum Konfigurieren eines flexiblen Tensor-Beschleunigers speichert, welche, wenn sie von einem oder mehreren Prozessoren einer Einrichtung ausgeführt werden, die Einrichtung veranlassen: eine oder mehrere Eigenschaften einer Tensor-Arbeitslast zu identifizieren; und ein oder mehrere Elemente eines Tensor-Beschleunigers abhängig von der einen oder den mehreren Eigenschaften der Tensor-Arbeitslast dynamisch zu konfigurieren, was zumindest ein dynamisches Konfigurieren einer flexiblen Skalarprodukteinheit (DPU) einschließt, durch: Bestimmen eines Soll-Rechendurchsatzes für die flexible DPU, welcher kleiner als oder gleich einem maximalen Durchsatz der flexiblen DPU ist, und Konfigurieren einer oder mehrerer logischer Gruppen von Skalarprodukt-Untereinheiten und entsprechender Unterakkumulatoren, wobei eine Skalarproduktlänge jeder der Skalarprodukt-Untereinheiten abhängig von dem Soll-Rechendurchsatz konfiguriert wird.
  23. Nicht-flüchtiges computerlesbares Medium nach Anspruch 22, wobei jede logische Gruppe der einen oder der mehreren logischen Gruppen eine Skalarprodukt-Untereinheit und einen entsprechenden Unterspeicher aufweist.
  24. Nicht-flüchtiges computerlesbares Medium nach Anspruch 22 oder 23, wobei die Skalarproduktlänge jeder der Skalarprodukt-Untereinheiten in Kombination den Soll-Rechendurchsatz erreicht.
  25. Nicht-flüchtiges computerlesbares Medium nach Anspruch 24, wobei die Skalarprodukt-Untereinheiten mit derselben Skalarproduktlänge konfiguriert werden.
  26. Nicht-flüchtiges computerlesbares Medium nach einem der Ansprüche 22 bis 25, wobei eine Konfiguration der flexiblen DPU einer Form einer Eingabe und einer Ausgabe der Tensor-Arbeitslast entspricht.
  27. Nicht-flüchtiges computerlesbares Medium nach einem der Ansprüche 22 bis 25, wobei die Tensor-Arbeitslast eine Arbeitslast eines Tensor-Algorithmus ist.
  28. Nicht-flüchtiges computerlesbares Medium nach Anspruch 27, wobei der Tensor-Algorithmus ein General Matrix Multiply (GEMM) -Algorithmus ist.
  29. Nicht-flüchtiges computerlesbares Medium nach Anspruch 27 oder 28, wobei der Tensor-Algorithmus einer ist von: einem Algorithmus für ein eindimensionales (1D) faltendes neuronales Netzwerk (CNN), einem Algorithmus für ein zweidimensionales (2D) CNN, oder einem Algorithmus für ein dreidimensionales (3D) CNN.
  30. Flexibler Tensor-Beschleuniger, umfassend: ein oder mehrere Tensor-Beschleunigerelemente, welche dynamisch konfigurierbar sind, um eine oder mehrere Eigenschaften einer Tensor-Arbeitslast zu unterstützen, wobei das eine oder die mehreren Tensor-Beschleunigerelemente zumindest eine flexible Skalarprodukteinheit (DPU) mit konfigurierbaren logischen Gruppierungen von Skalarprodukt-Untereinheiten und entsprechenden Unterakkumulatoren aufweisen, wobei eine Skalarproduktlänge jeder der Skalarprodukt-Untereinheiten abhängig von einem Soll-Rechendurchsatz für die flexible DPU konfigurierbar ist, welcher kleiner als oder gleich einem maximalen Durchsatz der flexiblen DPU ist.
  31. Flexibler Tensor-Beschleuniger nach Anspruch 30, wobei jede logische Gruppierung der einen oder mehreren logischen Gruppierungen eine Skalarprodukt-Untereinheit und einen entsprechenden Unterakkumulator aufweist.
  32. Flexibler Tensor-Beschleuniger nach Anspruch 30 oder 31, wobei die Skalarproduktlänge jeder der Skalarprodukt-Untereinheiten konfigurierbar ist, so dass in Kombination der Soll-Rechendurchsatz erreicht wird.
  33. Flexibler Tensor-Beschleuniger nach Anspruch 32, wobei die Skalarprodukt-Untereinheiten konfigurierbar sind, um dieselbe Skalarproduktlänge aufzuweisen.
  34. Flexibler Tensor-Beschleuniger nach einem der Ansprüche 30 bis 33, wobei eine Konfiguration der flexiblen DPU einer Form einer Eingabe und einer Ausgabe der Tensor-Arbeitslast entspricht.
  35. Flexibler Tensor-Beschleuniger nach einem der Ansprüche 30 bis 34, wobei das eine oder die mehreren Tensor-Beschleunigerelemente Datenpfadelemente mit einer oder mehreren Funktionseinheiten aufweisen, wobei die Datenpfadelemente die flexible DPU aufweisen.
  36. Flexibler Tensor-Beschleuniger nach einem der Ansprüche 30 bis 35, wobei das eine oder die mehreren Tensor-Beschleunigerelemente Verarbeitungselemente mit Puffern und Datenpfad-Elementverbindungen zwischen Datenpfadelementen aufweisen.
  37. Flexibler Tensor-Beschleuniger nach Anspruch 36, wobei die Puffer und die Datenpfad-Elementverbindungen dynamisch konfigurierbar sind, um eine Wiederverwendung von Daten zu ermöglichen.
  38. Flexibler Tensor-Beschleuniger nach einem der Ansprüche 30 bis 37, wobei das eine oder die mehreren Tensor-Beschleunigerelemente ein Inter-PE-Netzwerk mit einem globalen Puffer und Verarbeitungselementverbindungen zwischen Verarbeitungselementen aufweisen.
  39. Flexibler Tensor-Beschleuniger nach Anspruch 38, wobei der globale Puffer und die Verarbeitungselementverbindungen dynamisch konfigurierbar sind, um die eine oder die mehreren Eigenschaften der Tensor-Arbeitslast zu unterstützen.
  40. Flexibles feldprogrammierbares Gate-Array (FPGA), umfassend: ein oder mehrere FPGA-Elemente, welche dynamisch konfigurierbar sind, um eine oder mehrere Eigenschaften einer Tensor-Arbeitslast zu unterstützen, wobei das eine oder die mehreren FPGA-Elemente zumindest eine flexible SkalarproduktEinheit (DPU) mit konfigurierbaren logischen Gruppierungen von Skalarprodukt-Untereinheiten und entsprechenden Unterakkumulatoren aufweisen, wobei eine Skalarproduktlänge jeder der Skalarprodukt-Untereinheiten abhängig von einem Soll-Rechendurchsatz für die flexible DPU konfigurierbar ist, welcher kleiner als oder gleich einem maximalen Durchsatz der flexiblen DPU ist.
  41. Flexibles FPGA nach Anspruch 40, wobei jede logische Gruppierung der einen oder der mehreren logischen Gruppierungen eine Skalarprodukt-Untereinheit und einen entsprechenden Unterakkumulator aufweist.
  42. Flexibles FPGA nach Anspruch 40 oder 41, wobei die Skalarproduktlänge jeder der Skalarprodukt-Untereinheiten konfigurierbar ist, so dass in Kombination der Soll-Rechendurchsatz erreicht wird.
  43. Flexibles FPGA nach Anspruch 42, wobei die Skalarprodukt-Untereinheiten so konfigurierbar sind, dass sie dieselbe Skalarproduktlänge aufweisen.
  44. Flexibles FPGA nach einem der Ansprüche 40 bis 43, wobei eine Konfiguration der flexiblen DPU einer Form einer Eingabe und einer Ausgabe der Tensor-Arbeitslast entspricht.
  45. Flexibles FPGA nach einem der Ansprüche 40 bis 44, wobei das eine oder die mehreren FPGA-Elemente FPGA-Hardwareblöcke aufweisen.
  46. Flexibles FPGA nach einem der Ansprüche 40 bis 45, wobei Verbindungen zwischen dem einen oder den mehreren konfigurierbaren FPGA-Elementen dynamisch konfigurierbar sind.
DE102021122785.2A 2020-09-15 2021-09-02 Flexibler beschleuniger für eine tensor-arbeitslast Pending DE102021122785A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063078793P 2020-09-15 2020-09-15
US63/078,793 2020-09-15
US17/343,597 2021-06-09
US17/343,597 US20220083314A1 (en) 2020-09-15 2021-06-09 Flexible accelerator for a tensor workload

Publications (1)

Publication Number Publication Date
DE102021122785A1 true DE102021122785A1 (de) 2022-03-17

Family

ID=80351698

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021122785.2A Pending DE102021122785A1 (de) 2020-09-15 2021-09-02 Flexibler beschleuniger für eine tensor-arbeitslast

Country Status (2)

Country Link
US (1) US20220083314A1 (de)
DE (1) DE102021122785A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220321403A1 (en) * 2021-04-02 2022-10-06 Nokia Solutions And Networks Oy Programmable network segmentation for multi-tenant fpgas in cloud infrastructures
WO2024000464A1 (zh) * 2022-06-30 2024-01-04 华为技术有限公司 一种张量计算的分块策略生成方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11049013B1 (en) * 2018-04-20 2021-06-29 Perceive Corporation Encoding of weight values stored on neural network inference circuit

Also Published As

Publication number Publication date
US20220083314A1 (en) 2022-03-17

Similar Documents

Publication Publication Date Title
DE102021123703A1 (de) Flexibler beschleuniger für eine tensor-arbeitslast
DE102020122174A1 (de) Berechne-in/nahe speicher- (cim) schaltungsarchitektur für vereinheitlichte matrix-matrix- und matrix-vektor-berechnungen
DE102021122785A1 (de) Flexibler beschleuniger für eine tensor-arbeitslast
CN108510064B (zh) 包括多个核心处理模块的人工神经网络的处理系统及方法
DE112017000855B4 (de) Energiesparender zeitlich gemultiplexter neurosynaptischer Kern zum Implementieren neuronaler Netze
DE69837335T2 (de) Vielfach-array-prozessor und verbindungssystem
DE102017120588A1 (de) Befehlssatzarchitektur für neuronale Netze
DE102008022080B4 (de) Nachrichten-Warteschlangensystem für eine parallel integrierte Schaltkreisarchitektur und zugehöriges Betriebsverfahren
DE202018101330U1 (de) Transportieren von Matrizen neuronaler Netze in Hardware
DE202018100938U1 (de) Parallelverarbeitung von Reduktions- und Rundsendeoperationen an großen Datensätzen nichtskalarer Daten
DE112016002298T5 (de) Vorabruf von gewichten zur verwendung in einem neuronalen netzwerkprozessor
DE202018104609U1 (de) Neuronalnetzbeschleuniger mit Parametern, die sich auf einem Chip befinden
DE69827589T2 (de) Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
DE202016107446U1 (de) Rotation von Daten für Berechnungen in neuronalen Netzwerken
DE102018103598A1 (de) Permutieren in einem Matrix-Vektor-Prozessor
DE112020004625T5 (de) Transponierte faltung mit systolischem array
DE102020113347A1 (de) Ausführung von containerisierten prozessen innerhalb der beschränkungen der verfügbaren host-knoten
DE202016107443U1 (de) Berechnen von Faltungen mithilfe eines neuronalen Netzwerkprozessors
DE602004009324T2 (de) Integrierte datenverarbeitungsschaltung mit mehreren programmierbaren prozessoren
DE3049437A1 (de) Matrixanordnung einer vielzahl von verarbeitungselementen fuer parallelprozessoren
DE102017113735B4 (de) Statistische Operationen auf einem zweidimensionalen Bildprozessor
DE112020007010T5 (de) Inferenzmaschinen-schaltungsarchitektur
DE102010044529A1 (de) Autonome Subsystem-Architektur
DE112010003810T5 (de) Verfahren, Programm und paralleles Computersystem für die Planung elner Vielzahl von Berechnungsverfahren einschließlich All-to-All Kommunikation (A2A) zwischen einer Vielzahl von Knoten (Prozessoren), die ein Netzwerk formen
DE112011104770B4 (de) Apparat und Verfahren zum gemeinsamen Vektoreinheit Benutzen

Legal Events

Date Code Title Description
R012 Request for examination validly filed