DE102017120588A1 - Befehlssatzarchitektur für neuronale Netze - Google Patents

Befehlssatzarchitektur für neuronale Netze Download PDF

Info

Publication number
DE102017120588A1
DE102017120588A1 DE102017120588.8A DE102017120588A DE102017120588A1 DE 102017120588 A1 DE102017120588 A1 DE 102017120588A1 DE 102017120588 A DE102017120588 A DE 102017120588A DE 102017120588 A1 DE102017120588 A1 DE 102017120588A1
Authority
DE
Germany
Prior art keywords
tensor
processing unit
loop
calculation
neural network
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
DE102017120588.8A
Other languages
English (en)
Inventor
Ravi Narayanaswami
Dong Hyuk Woo
Olivier Temam
Harshit Khaitan
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE102017120588A1 publication Critical patent/DE102017120588A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]

Abstract

Computerimplementiertes Verfahren, das das Empfangen eines Befehls, der Datenwerte zum Ausführen einer Tensorberechnung spezifiziert, durch eine Verarbeitungseinheit enthält. In Ansprechen auf den Empfang des Befehls kann das Verfahren das Ausführen der Tensorberechnung durch Ausführen einer Schleifenverschachtelung, die mehrere Schleifen umfasst, durch die Verarbeitungseinheit enthalten, wobei eine Struktur der Schleifenverschachtelung auf der Grundlage eines oder mehrerer der Datenwerte des Befehls definiert ist. Die Tensorberechnung kann wenigstens ein Teil einer Berechnung einer Schicht eines neuronalen Netzes sein. Die durch den Befehl spezifizierten Datenwerte können einen Wert umfassen, der einen Typ der Schicht eines neuronalen Netzes spezifiziert, und die Struktur der Schleifenverschachtelung kann wenigstens teilweise durch den Typ der Schicht des neuronalen Netzes definiert sein.

Description

  • HINTERGRUND
  • Diese Patentschrift bezieht sich auf einen Befehlssatz für die Berechnung tiefer neuronaler Netze („DNN“).
  • Neuronale Netze sind Maschinenlernmodelle, die eine oder mehrere Schichten von Modellen nutzen, um für eine empfangene Eingabe eine Ausgabe, z. B. eine Klassifikation, zu erzeugen. Einige neuronale Netz enthalten außer einer Ausgabeschicht eine oder mehrere verborgene Schichten. Die Ausgabe jeder verborgenen Schicht wird als Eingabe in die nächste Schicht in dem Netz, d. h. in die nächste verborgene Schicht oder in die Ausgabeschicht des Netzes, verwendet. Jede Schicht des Netzes erzeugt aus einer empfangenen Eingabe in Übereinstimmung mit aktuellen Werten eines jeweiligen Satzes von Parametern eine Ausgabe.
  • Einige neuronale Netze enthalten eine oder mehrere Faltungsschichten eines neuronalen Netzes. Jede Faltungsschicht eines neuronalen Netzes besitzt einen zugeordneten Satz von Kernels. Jeder Kernel enthält Werte, die durch ein durch einen Nutzer erzeugtes Modell eines neuronalen Netzes festgesetzt werden. In einigen Implementierungen identifizieren Kernel bestimmte Bildumrisse, Bildformen oder Bildfarben. Kernel können als eine Matrixstruktur von Gewichtseingaben dargestellt werden. Außerdem kann jede Faltungsschicht einen Satz von Aktivierungseingaben verarbeiten. Der Satz von Aktivierungseingaben kann ebenfalls als eine Matrixstruktur dargestellt werden.
  • ZUSAMMENFASSUNG
  • Ein innovativer Aspekt des in dieser Patentschrift beschriebenen Gegenstands kann in einem computerimplementierten Verfahren verkörpert werden. Das Verfahren enthält das Empfangen eines Befehls, der Parameter zum Ausführen einer Tensorberechnung spezifiziert, durch eine Verarbeitungseinheit. In Ansprechen auf das Empfangen des Befehls kann das Verfahren das Ausführen der Tensorberechnung durch Ausführen einer Schleifenverschachtelung, die mehrere Schleifen umfasst, durch die Verarbeitungseinheit enthalten, wobei eine Struktur der Schleifenverschachtelung auf der Grundlage eines oder mehrerer der Parameter des Befehls definiert ist. Diese und andere Implementierungen können jeweils optional ein oder mehrere der folgenden Merkmale enthalten. Zum Beispiel kann die Tensorberechnung wenigstens ein Teil einer Berechnung einer Schicht eines neuronalen Netzes sein. Die durch den Befehl spezifizierten Parameter können einen Parameter umfassen, der einen Typ der Schicht eines neuronalen Netzes spezifiziert, und die Struktur der Schleifenverschachtelung kann wenigstens teilweise durch den Typ der Schicht eines neuronalen Netzes definiert sein. Dadurch kann auf das Ausführen einer Schleifenverschachtelung, die mehrere Schleifen umfasst, als Ausführen eines Durchlaufs über Elemente eines Tensors in einer durch eine Struktur verschachtelter Schleifen spezifizierten Reihenfolge Bezug genommen werden, wobei die Struktur z. B. jeweils durch eine Tiefe der Schleifenverschachtelung und durch einen Anfangs- und einen Endindex, durch den Schritt und durch die Richtung jeder Schleife spezifiziert ist.
  • In einigen Implementierungen ist die Tensorberechnung wenigstens ein Teil einer Berechnung einer Schicht eines neuronalen Netzes. In einigen Implementierungen umfassen die durch den Befehl spezifizierten Datenwerte wenigstens einen Wert, der einen Typ der Schicht eines neuronalen Netzes spezifiziert, wobei die Struktur der Schleifenverschachtelung wenigstens teilweise durch den Typ der Schicht eines neuronalen Netzes definiert ist. In einigen Implementierungen veranlasst der Befehl, dass die Verarbeitungseinheit wenigstens auf ein Element einer Dimension eines Tensors zugreift, wobei das Element teilweise wenigstens ein Index ist, der beim Ausführen einer Schleifenverschachtelung während der Ausführung der Tensorberechnung verwendet wird. In einigen Implementierungen veranlasst der Befehl, dass die Verarbeitungseinheit wenigstens auf eine Speicheradresse einer Anordnung in einem Speichermedium zugreift, wobei die Speicheradresse der Anordnung eine Variable umfasst, die während der Ausführung der Tensorberechnung durch die Verarbeitungseinheit gelesen wird.
  • In einigen Implementierungen umfasst das Ausführen der Tensorberechnung das Bereitstellen wenigstens eines Steuersignals für eine Tensordurchlaufeinheit (TTU) durch eine Verarbeitungseinheit, um zu veranlassen, dass die TTU Schleifenindizes aussendet, die beim Ausführen der Schleifenverschachtelung während der Ausführung der Tensorberechnung verwendet werden. In einigen Implementierungen umfasst das Verfahren ferner das Bereitstellen wenigstens eines Steuersignals für die TTU, um eine Array-Bezugnahme der TTU zu veranlassen, um für ein Array-Element, auf das Bezug genommen wird, eine Adresse zu erzeugen, die beim Ausführen der Schleifenverschachtelung während der Ausführung der Tensorberechnung verwendet wird, durch die Verarbeitungseinheit. In einigen Implementierungen gibt der Befehl einen ersten TTU-Zähler an, der mit einem zweiten TTU-Zähler summiert wird, um für eine der TTU zugeordnete Array-Bezugnahme eine Adresse zu erzeugen.
  • In einigen Implementierungen umfasst das Ausführen der Tensorberechnung das Ausführen einer ersten Synchronisationsprozedur, die einen oder mehrere Operanden managt, die der Ausführung der Tensorberechnung zugeordnet sind, durch die Verarbeitungseinheit, wobei das Managen eines Operanden das Blockieren einer oder mehrerer Schleifenverschachtelungen auf der Grundlage einer Synchronisationsmerkerbedingung umfasst. In einigen Implementierungen umfasst das Ausführen der Tensorberechnung das Ausführen einer zweiten Synchronisationsprozedur, die das Inkrementieren eines einer Eigenschaft der Schleifenverschachtelung zugeordneten Zählers managt, durch die Verarbeitungseinheit.
  • Ein anderer innovativer Aspekt des in dieser Patentschrift beschriebenen Gegenstands kann in einem elektronischen System verkörpert werden, das umfasst: eine Verarbeitungseinheit, die in dem elektronischen System angeordnet ist, wobei die Verarbeitungseinheit eine oder mehrere Verarbeitungseinrichtungen enthält; und eine oder mehrere maschinenlesbare Speichereinrichtungen zum Speichern von Befehlen, die durch die eine oder die mehreren Verarbeitungseinrichtungen ausführbar sind, um Operationen auszuführen, die umfassen: Empfangen eines Befehls, der Datenwerte zum Ausführen einer Tensorberechnung spezifiziert, durch die Verarbeitungseinheit; und Ausführen der Tensorberechnung durch Ausführen einer Schleifenverschachtelung, die mehrere Schleifen umfasst, in Ansprechen auf das Empfangen des Befehls durch die Verarbeitungseinheit, wobei eine Struktur der Schleifenverschachtelung auf der Grundlage eines oder mehrerer der Datenwerte des Befehls definiert ist.
  • Ein abermals anderer innovativer Aspekt des in dieser Patentschrift beschriebenen Gegenstands kann in einem nichttransitorischen computerlesbaren Speichermedium verkörpert werden, das Befehle umfasst, die durch eine Verarbeitungseinheit ausführbar sind, was bei dieser Ausführung veranlasst, dass die Verarbeitungseinheit Operationen ausführt, die umfassen: Empfangen eines Befehls, der Datenwerte zum Ausführen einer Tensorberechnung spezifiziert, durch die Verarbeitungseinheit; und in Ansprechen auf das Empfangen des Befehls, Ausführen der Tensorberechnung durch Ausführen einer Schleifenverschachtelung, die mehrere Schleifen umfasst, wobei eine Struktur der Schleifenverschachtelung auf der Grundlage eines oder mehrerer der Datenwerte des Befehls definiert ist, durch die Verarbeitungseinheit.
  • Andere Implementierungen dieses und anderer Aspekte enthalten entsprechende Systeme, Vorrichtungen und Computerprogramme, die dafür konfiguriert sind, die Tätigkeiten der Verfahren, die in Computerspeichereinrichtungen codiert sind, auszuführen. Ein System eines oder mehrerer Computer kann aufgrund von Software, Firmware, Hardware oder einer Kombination von ihnen, die in dem System installiert ist, so konfiguriert sein, dass im Betrieb veranlasst wird, dass das System die Tätigkeiten ausführt. Ein oder mehrere Computerprogramme können aufgrund dessen, dass sie Befehle besitzen, so konfiguriert sein, dass sie, wenn sie durch die Datenverarbeitungsvorrichtung ausgeführt werden, veranlassen, dass die Vorrichtung die Tätigkeiten ausführt.
  • Der in dieser Patentschrift beschriebene Gegenstand kann in bestimmten Ausführungsformen implementiert werden, um einen oder mehrere der folgenden Vorteile zu verwirklichen. Eine Verarbeitungseinheit kann Programme initiieren, um tief verschachtelte Schleifen mit einem Befehl zu iterieren. Die Verarbeitungseinheit kann empfangene Befehle ausführen, die mit Datenwerten codiert sind, um eine Tensorberechnung auszuführen. Die Berechnungsbandbreite der Verarbeitungseinheit wird durch Verringern der Anzahl der Befehle, die der Prozessor ausführen muss, wenn er einen Tensor durchläuft, um eine oder mehrere Berechnungen ausführen, erhöht. Befehle zum Ausführen von Tensorberechnungen für eine gegebene Schicht eines neuronalen Netzes können unter einem oder mehreren Computersystemen eines beispielhaften Hardwarecomputersystems codiert und verteilt sein. Die Verteilung der codierten Befehle auf die verschiedenen Computersysteme ermöglicht eine erhöhte Rechenbandbreite innerhalb eines einzelnen Systems. Da ein einzelnes System nur für eine Teilmenge der für einen gegebenen Tensor notwendigen Gesamtberechnungen verantwortlich ist, wird die Befehlsmenge in einem Computersystem verringert.
  • Die Einzelheiten einer oder mehrerer Implementierungen des in dieser Patentschrift beschriebenen Gegenstands sind in den beigefügten Zeichnungen und in der folgenden Beschreibung dargelegt. Andere potentielle Merkmale, Aspekte und Vorteile des Gegenstands gehen aus der Beschreibung, aus den Zeichnungen und aus den Ansprüchen hervor.
  • Figurenliste
    • 1 ist ein Blockschaltplan eines beispielhaften Computersystems.
    • 2 stellt eine beispielhafte Tensordurchlaufeinheit dar.
    • 3 stellt eine beispielhafte Tabelle dar, die Opcodes und entsprechende Operationen, die wenigstens teilweise durch das beispielhafte Computersystem aus 1 ausgeführt werden, enthält.
    • 4A stellt einen beispielhaften Aktivierungstensor, einen beispielhaften Gewichtstensor und einen beispielhaften Ausgabetensor dar.
    • 4B stellt eine beispielhafte Schleifenverschachtelung dar, die durch eine Verarbeitungseinheit des beispielhaften Computersystems aus 1 ausgeführt werden kann.
    • 5 ist ein Ablaufplan, der ein Beispiel eines Prozesses zum Ausführen von Tensorberechnungen aufgrund eines computerimplementierten Verfahrens darstellt.
  • Gleiche Bezugszeichen und Bezeichnungen in den verschiedenen Zeichnungen geben gleiche Elemente an.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Der in dieser Patentschrift beschriebene Gegenstand bezieht sich auf einen computerimplementierten Prozess oder auf ein computerimplementiertes Verfahren zum Beschleunigen von Maschinenlern-Folgerungsarbeitsaufgaben, so dass eine Verarbeitungseinheit, die die Arbeitsaufgabe ausführt, eine hohe Leistung erzielen kann, während sie Berechnungen ausführt. Die Prozesse und Verfahren, die in dieser Patentschrift beschrieben sind, können innerhalb von Hardwarecomputersystemen ausgeführt werden, die als ein Satz von Kacheln organisiert sind, von denen jede selbstständig ist und wenigstens einen Teil der durch eine Schicht eines neuronalen Netzes geforderten Berechnung unabhängig ausführen kann.
  • Ein innerhalb eines neuronalen Netzes ausgeführter Rechenprozess kann aus einer Multiplikation eines Eingabetensors mit einem Parameter/Gewichtstensor in einem oder in mehreren Zyklen und aus dem Ausführen einer Addition der Produkte über viele Zyklen bestehen. Eine Eingabegewichtsmultiplikation kann dann als die Summe des Produkts jedes Gewichtselements, multipliziert mit einer Zeile des Eingabetensors oder der Eingabematrix, geschrieben werden. Tiefe neuronale Netze (DNNs) enthalten mehrere Schichten, die einander speisen. Schlussfolgerungsarbeitsaufgaben, die Tensorberechnungen für eine gegebene Schicht enthalten, werden durch die in dieser Patentschrift beschriebenen Verfahren beschleunigt. Außerdem kann sich der in dieser Patentschrift beschriebene Gegenstand auf ein Bilderkennungs- und/oder Klassifizierungs-Verfahren/System unter Verwendung der offenbarten Techniken und auf offenbarte Hardware unter Verwendung einer Befehlssatzarchitektur eines neuronalen Netzes beziehen.
  • Allgemein kann eine verschachtelte Schleife verwendet werden, wenn ein Softwarealgorithmus Tensorberechnungen durch Verarbeiten eines N-dimensionalen Tensors ausführt, wobei jede Schleife für das Durchlaufen jeder Dimension des N-dimensionalen Tensors verantwortlich ist. Ein mehrdimensionaler Tensor kann eine Matrix oder mehrdimensionale Matrizen sein. Jede Dimension des N-dimensionalen Tensors kann ein oder mehrere Elemente enthalten, wobei jedes Element einen jeweiligen Datenwert speichern kann. Zum Beispiel kann ein Tensor eine Variable in einem Programm sein, wobei die Variable drei Dimensionen besitzen kann. Die erste Dimension kann eine Länge von dreihundert Elementen besitzen, die zweite Dimension kann eine Länge von tausend Elementen besitzen und die dritte Dimension kann eine Länge von zwanzig Elementen besitzen.
  • Das Durchlaufen des Tensors in einer verschachtelten Schleife erfordert eine Berechnung eines Speicheradressenwerts eines Elements, um den entsprechenden Datenwert des Elements zu laden oder zu speichern. Zum Beispiel ist eine For-Schleife eine verschachtelte Schleife, wobei drei Schleifen, die durch drei Schleifenindexvariablen verfolgt werden, verschachtelt sein können, um den dreidimensionalen Tensor zu durchlaufen. In einigen Fällen kann ein Prozessor eine Schleifenschrankenbedingung wie etwa das Einstellen einer Schleifenschranke einer Innenschleife mit einer Indexvariable einer äußeren Schleife ausführen müssen. Zum Beispiel kann das Programm beim Bestimmen, ob aus der innersten Schleife einer verschachtelten Schleife ausgetreten werden soll, den aktuellen Wert der Schleifenindexvariable der innersten Schleife mit dem aktuellen Wert der Schleifenindexvariable der äußersten Schleife der verschachtelten Schleife vergleichen.
  • Rechenaufgaben, die dem Durchlaufen eines dreidimensionalen Tensors zugeordnet sind, können eine erhebliche Anzahl von Befehlen wie etwa Verzweigungsbefehlen und Ganzzahlarithmetikbefehlen erfordern. Wenn jede Schleifenschranke klein ist und die Anzahl der Schleifen groß ist, können die Berechnungen für eine Speicheradressenberechnung und für einen Tensordimensionsdurchlauf einen erheblichen Anteil der Gesamtausführungszeit einnehmen und die Gesamtleistung ernsthaft verschlechtern. Wie im Folgenden ausführlicher beschrieben ist, können Verfahren, die durch eine Verarbeitungseinheit ausführbar sind, die Befehle empfängt, die mit Datenwerten zum Ausführen einer Tensorberechnung codiert sind, die Rechenbandbreite der Verarbeitungseinheit durch Verringern der Befehle, die der Prozessor ausführen muss, wenn er einen Tensor durchläuft, um eine oder mehrere Berechnungen auszuführen, erhöhen. In einigen Implementierungen bezieht sich die Rechenbandbreite z. B. auf die maximale Rate von Operationen, die an einem Tensor ausgeführt werden können, oder auf eine Anzahl von Operationen, die an einem Tensor ausgeführt werden können.
  • Befehle zum Ausführen von Tensorberechnungen für eine gegebene Schicht können zwischen einem oder mehreren Computersystemen (die im Folgenden als Rechenkacheln beschrieben sind) innerhalb eines beispielhaften Hardwarecomputersystems codiert und verteilt sein. Die Verteilung der codierten Befehle auf die verschiedenen Rechenkacheln ermöglicht eine erhöhte Rechenbandbreite innerhalb einer einzelnen Kachel. Darüber hinaus verarbeitet eine Verarbeitungseinheit einer Rechenkachel (im Vergleich zu aktuellen Systemen) dadurch, dass Berechnungen auf mehrere Rechenkacheln verteilt werden, eine verringerte Anzahl von Befehlen, wenn sie den Tensor durchläuft. Dabei bezieht sich das Verarbeiten eines Befehls z. B. auf das Ausführen eines oder mehrerer Befehle durch eine Verarbeitungseinheit einer Rechenkachel. Die Befehlsmenge in einer Rechenkachel kann verringert sein, da die einzelne Kachel nur für eine Teilmenge der für einen gegebenen Tensor notwendigen Gesamtberechnungen verantwortlich ist.
  • Zusätzliche Einzelheiten und Beschreibungen in Bezug auf Hardwarecomputersysteme zum Beschleunigen von Tensorberechnungen eines neuronalen Netzes einschließlich Skalarprodukt- und Matrixmultiplikationen für Schlussfolgerungsarbeitsaufgaben eines neuronalen Netzes sind in der US-Patentanmeldung Nr. 15/335.769 mit dem Titel „Neural Network Compute Tile“, eingereicht am 27. Oktober 2016, beschrieben. Die gesamte Offenbarung der US-Patentanmeldung Nr. 15/335.769 ist hier in ihrer Gesamtheit ausdrücklich durch Literaturhinweis eingefügt.
  • 1 zeigt einen Blockschaltplan eines beispielhaften Computersystems 100 zum Durchlaufen eines oder mehrerer Tensoren, um Berechnungen für eine Schicht eines neuronalen Netzes auszuführen. Wie gezeigt ist, enthält das Computersystem 100 eine Verarbeitungseinheit 102, ein Speichermedium 104, eine Tensordurchlaufeinheit (TTU) 106, einen Multiplikationsadditionsoperator (MAC-Operator) 108 und eine Aktivierungseinheit 110. Obgleich eine einzelne TTU gezeigt ist, kann das System 100 zwei oder mehr TTUs 106 enthalten, um Tensordurchlaufoperationen sowie Speicherzugriffsoperationen zu verarbeiten, wenn zum Verarbeiten von Tensorberechnungen für eine gegebene Schicht eines neuronalen Netzes eine oder mehrere Rechenkacheln verwendet werden. Gleichfalls kann das System 100 mehrere MAC-Operatoren 108 enthalten, obgleich ein einzelner MAC gezeigt ist.
  • Die Verarbeitungseinheit 102 ist zum Verarbeiten von Befehlen zur Ausführung innerhalb des Computersystems 100 einschließlich von Befehlen oder Programmcode, die in dem Speichermedium 104 gespeichert sind, oder von anderen Befehlen/Code, die in einer anderen Speichereinrichtung gespeichert sind, konfiguriert. Die Verarbeitungseinheit 102 kann einen oder mehrere Prozessoren enthalten. Das Speichermedium 104 kann eine oder mehrere Speicherbänke oder Speichereinheiten einschließlich einer ersten Bank 112 zum Speichern von Aktivierungen und einer zweiten Bank 114 zum Speichern von Gewichten enthalten. In einigen Implementierungen ist das Speichermedium 104 eine nichtflüchtige Speichereinheit oder nichtflüchtige Speichereinheiten. In einigen anderen Implementierungen ist das Speichermedium 104 eine nichtflüchtige Speichereinheit oder nichtflüchtige Speichereinheiten wie etwa z. B. Nur-Lese-Speicher (ROM) und/oder elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM). Außerdem kann das Speichermedium 104 eine andere Form eines computerlesbaren Mediums wie etwa eine Disketteneinrichtung, eine Festplatteneinrichtung, eine optische Platteneinrichtung oder eine Bandeinrichtung, ein Flash-Speicher oder eine andere ähnliche Festkörperspeichereinrichtung oder eine Anordnung von Einrichtungen einschließlich Einrichtungen in einem Speicherbereichsnetz oder in anderen Konfigurationen sein.
  • Wenn der Befehlssatz 103 durch die Verarbeitungseinheit 102 ausgeführt wird, veranlasst er, dass die Verarbeitungseinheit 102 eine oder mehrere Aufgaben ausführt, die z. B. das Speichern von Aktivierungen an Speicheradressplätzen der ersten Bank 112 und das Speichern von Gewichten an Speicheradressplätzen der zweiten Bank 114 enthalten. Darüber hinaus können Befehle 103 ebenfalls veranlassen, dass die Verarbeitungseinheit 102 auf die gespeicherten Daten von der ersten Bank 112 und von der zweiten Bank 114 zugreift und die Daten, auf die zugegriffen wurde, für den MAC-Operator 108 bereitstellt. Wie im Folgenden ausführlicher beschrieben ist, kann der MAC-Operator 108 mehrere Operationen ausführen, die das Multiplizieren einer Aktivierung mit einem Gewicht, um entweder eine oder mehrere Partialsummen zu erzeugen oder um entweder eine oder mehrere Ausgabeaktivierungen, die für die Aktivierungseinheit 110 bereitgestellt werden, zu erzeugen, enthalten können.
  • Allgemein verarbeitet das Computersystem 100 einen oder mehrere Befehle, die in dem Befehlssatz 103 enthalten sind, um eine Ausgabe 116 zu erzeugen. Der Befehlssatz 103 kann wenigstens einen eines Tensoroperationsbefehls (tensorop-Befehls) und eines Direktspeicherzugriffsoperationsbefehls (DMAop-Befehls) enthalten. Das Computersystem 100 kann dafür konfiguriert sein, wenigstens einen tensorop- und wenigstens einen DMAop-Befehl auszuführen, um Tensorberechnungen auszuführen, die mehrere Berechnungen der linearen Algebra enthalten.
  • In einigen Implementierungen enthält das Ausführen von Tensorberechnungen das Ausführen eines DMAop-Befehls, um auf Speicheradressplätze, die Elementen einer bestimmten Dimension eines Tensors entsprechen, zuzugreifen, wobei wenigstens ein Speicheradressplatz Datenwerte für ein Element des Tensors speichert. Ferner können Tensorberechnungen das Ausführen einer tensorop zum Durchlaufen von Elementen entlang einer bestimmten Dimension des Tensors enthalten. In einigen Implementierungen entspricht das Ausführen einer Tensorberechnung dem Multiplizieren von Datenwerten für Elemente eines Aktivierungstensors mit Datenwerten für Elemente eines Parameters oder Gewichtstensors, um Ausgabewerte für eine Schicht eines neuronalen Netzes zu erzeugen.
  • Wie gezeigt ist, kann die TTU 106 einen Befehlspuffer 124 enthalten. Obgleich ein einzelner Befehlspuffer 124 gezeigt ist, kann das Computersystem 100 mehrere Befehlspuffer 124 enthalten. Darüber hinaus kann das System 100 mehrere TTUs 106 enthalten und kann jede TTU 106 einen oder mehreren Befehlspuffer 124 enthalten. In einigen Implementierungen können die verschiedenen Befehlspuffer 124 innerhalb des Systems 100 einen tensorop-Befehlspuffer und einen DMAop-Befehlspuffer enthalten. Wie im Folgenden ausführlicher beschrieben ist, können die durch das System 100 empfangenen und durch die Verarbeitungseinheit 102 ausgeführten Befehle einen tensorop-Befehl oder den DMAop-Befehl enthalten. In einigen Implementierungen werden die empfangenen Befehle vor der Ausführung durch die Verarbeitungseinheit 102 in dem Befehlspuffer 124 gespeichert.
  • Wie im Folgenden anhand von 4 ausführlicher diskutiert wird, können Aktivierungen an jeweilige Speicheradressplätze, die Elementen eines Eingabetensors entsprechen, in die erste Bank 112 vorgeladen werden. Gleichfalls können Gewichte an jeweilige Speicheradressplätze, die Elementen eines Gewichtstensors entsprechen, in die zweite Bank 114 vorgeladen werden. In einigen Implementierungen werden Befehle, Aktivierungen und Gewichte für das System 100 von einer externen Steuereinrichtung oder von einer Steuereinrichtung einer höheren Ebene, die einem Hardwarecomputersystem eines neuronalen Netzes zugeordnet ist, bereitgestellt.
  • Allgemein bestimmt die Tensordurchlaufeinheit 106 die Speicheradresse des Elements, so dass die Verarbeitungseinheit 102 auf das Speichermedium 104 zugreifen kann, um Daten zu lesen, die den Wert des bestimmten Elements darstellen, wenn die Verarbeitungseinheit 102 einen oder mehrere Befehle ausführt, um auf ein bestimmtes Element eines Tensors zuzugreifen. Zum Beispiel können in dem Speichermedium 104 gespeicherte Befehle Programmcode für ein Programm einer verschachtelten Schleife enthalten, das durch die Verarbeitungseinheit 102 ausgeführt werden kann.
  • Das Programm einer verschachtelten Schleife kann mehrere Variablen enthalten, die einen Bereich von Werten besitzen können, die auf der Grundlage von Datenwerten, die durch den Befehlssatz 103 bereitgestellt werden, bestimmt werden. Die Verarbeitungseinheit 102 kann den Programmcode für das Programm einer verschachtelten Schleife ausführen, um zu veranlassen, dass die TTU 106 auf Speicheradressplätze zugreift, die jeweiligen Elementen wenigstens zweidimensionaler Arrays entsprechen. Zum Beispiel können die mehreren Variablen Datenwerte zum Instantiieren einer beispielhaften tiefen Schleifenverschachtelung, die mehrere innere und äußere Schleifen enthält, enthalten. In einigen Implementierungen ermöglichen die mehreren Variablen und Datenwerte, dass die TTU 106 eine tiefe Schleifenverschachtelung wie etwa eine im Folgenden anhand von 4B beschriebene Schleifenverschachtelung (z. B. eine tiefe Schleifenverschachtelung 402) instantiiert.
  • Auf der Grundlage der aktuellen Indexvariablenwerte, die der verschachtelten Schleife zugeordnet sind, kann die TTU 106 einen Offsetwert bestimmen, der einen Offset von einem ersten Element der mehrdimensionalen Array-Variablen darstellt. Daraufhin kann die Verarbeitungseinheit 102 unter Verwendung des Offset-Werts und von dem Speichermedium auf das bestimmte Element der zweidimensionalen Array-Variablen zugreifen.
  • Die Tensordurchlaufeinheit 106 ist dafür konfiguriert, einen Status zu bestimmen, der einem oder mehreren Tensoren zugeordnet ist. Der Status kann Schleifenschrankenwerte, aktuelle Schleifenindexvariablenwerte, Dimensionsmultiplikatoren zum Berechnen eines Speicheradressenwerts und/oder Programmzählerwerte zum Behandeln von Verzweigungsschleifenschranken enthalten. Die Tensordurchlaufeinheit 106 enthält Tensorstatuselemente 122 und eine Arithmetik-Logik-Einheit. Jedes der Tensorstatuselemente 122 kann ein Speicherelement, z. B. ein Register oder irgendeine andere geeignete Speicherschaltungsanordnung, sein. In einigen Implementierungen können die Tensorstatuselemente 122 physikalisch oder logisch in verschiedenen Gruppen angeordnet sein.
  • In einigen Implementierungen kann eine Gruppe der Tensorstatuselemente 122 physikalisch oder logisch in einem mehrdimensionalen Array angeordnet sein. Zum Beispiel kann jede Gruppe der Tensorstatuselemente 122 physikalisch oder logisch in einem zweidimensionalen Array angeordnet sein. Die Arithmetik-Logik-Einheit enthält eine oder mehrere Arithmetik-Logik-Einheiten (ALUs), die dafür konfiguriert sind, arithmetische und logische Operationen auszuführen. Die Arithmetik-Logik-Einheit kann z. B. eine digitale Schaltungsanordnung enthalten, die dafür konfiguriert ist, eine Addition, eine Subtraktion, eine Multiplikation, eine Division, ein logisches UND, ein logisches ODER oder irgendwelche anderen geeigneten arithmetischen und logischen Operationen auszuführen.
  • 2 zeigt einen beispielhaften Satz von Tensorstatuselementen 200 einer Tensordurchlaufeinheit. Die Tensorstatuselemente 200 können den Tensorstatuselementen 122 der Tensordurchlaufeinheit 106 entsprechen. Die Tensordurchlaufeinheit 200 enthält eine Gruppe von Tensorindexelementen 202, eine Gruppe von Tensorschrankenelementen 204 und eine Gruppe von Dimensionsmultiplikatorelementen 206. Die Tensorindexelemente 202 können physikalisch oder logisch als ein 2D-Array mit M Zeilen und N Spalten angeordnet sein, wobei M und N ganze Zahlen größer oder gleich eins sind. In einigen Implementierungen kann jede Zeile der Tensorindexelemente 202 Tensorindexinformationen für einen Tensor darstellen. Zum Beispiel kann die Tensordurchlaufeinheit Zeilen 202a und 202b zuweisen, um die Tensorindexinformationen für die Array-Variable V1 bzw. V2 zu verfolgen, falls ein Programm zwei Array-Variablen V1 und V2 definiert. In einigen Implementierungen kann jede Spalte der Tensorindexelemente 202 Tensorindexinformationen für Indexvariablenwerte einer verschachtelten Schleife, die einem Tensor zugeordnet sind, darstellen. Zum Beispiel kann die Tensordurchlaufeinheit das Tensorindexelement X1,1, X1,2 und X1,3 zuweisen, um in dieser Reihenfolge die Indexvariable i, j und k der verschachtelten Schleife zu verfolgen, falls das Programm eine verschachtelte Schleife mit drei Schleifen zum Zugreifen auf die Variable V1 definiert, wobei jede Schleife der verschachtelten Schleife durch Indexvariable i, j und k der verschachtelten Schleife indiziert ist.
  • Die Tensorschrankenelemente 204 können physikalisch oder logisch als ein 2D-Array mit denselben Dimensionen wie die Tensorindexelemente 202 angeordnet sein, wobei jedes Element der Tensorschrankenelemente 204 ein entsprechendes Element in den Tensorindexelementen 202 besitzt. In einigen Implementierungen kann jede Zeile der Tensorschrankenelemente 204 Tensorschrankeninformationen für einen Tensor darstellen. Zum Beispiel kann die Tensordurchlaufeinheit die Zeilen 204a und 204b zuweisen, um die Tensorschrankeninformationen für die Array-Variablen V1 bzw. V2 zu verfolgen, falls das Programm zwei Array-Variablen V1 und V2 definiert.
  • Die Dimensionsmultiplikatorelemente 206 können physikalisch oder logisch als ein 2D-Array mit denselben Dimensionen wie die Tensorindexelemente 202 angeordnet sein, wobei jedes Element der Dimensionsmultiplikatorelemente 206 ein entsprechendes Element in den Tensorindexelementen 202 besitzt. In einigen Implementierungen kann jede Zeile der Dimensionsmultiplikatorelemente 206 Dimensionsmultiplikatorinformationen für einen Tensor darstellen. Zum Beispiel kann die Tensordurchlaufeinheit die Zeilen 206a und 206b zuweisen, um die Dimensionsmultiplikatorinformationen für die Array-Variablen V1 bzw. V2 zu verfolgen, falls das Programm zwei Array-Variablen V1 und V2 definiert.
  • In einigen Implementierungen können alternative Ausführungsformen eine TTU 106 enthalten, die anstelle der Multiplikatorfunktion eine Addiererfunktion nutzt, anstatt einen Multiplikator zum Multiplizieren eines Tensorindexwerts gegenüber einem Dimensionsmultiplikator zu verwenden. In diesen Ausführungsformen kann die Verarbeitungseinheit 102 Programmcode ausführen, um für die TTU 106 bereits multiplizierte Zahlen (z. B. für den Anfangs-, für den End- und für den Schrittwert einer bestimmten Schleife) bereitzustellen.
  • Tiefe neuronale Netze (DNNs) enthalten mehrere Schichten, die einander speisen. In einigen Implementierungen kann ein beispielhaftes neuronales Netz eine oder mehrere der folgenden Schichttypen enthalten: eine Faltungsschicht (z. B. in Tiefenrichtung), eine Reduktionsschicht, eine vollständig verbundene Schicht (FC-Schicht), eine Klassifiziererschicht, eine Schicht für elementweise Multiplikation oder eine Pooling-Schicht (z. B. Durchschnitt und Maximum). In einigen Implementierungen können Berechnungen mit kleinen (z. B. einer oder zwei) Eingabetiefen und kleinen Ausgabetiefen Schichten zugeordnet sein, die eine flache Kernel-Eigenschaft haben, die eine Eigenschaft einer vorhandenen Schicht wie etwa einer vollständig verbundenen Schicht oder einer Faltungsschicht sein kann. Allgemein können Tensorberechnungen, die innerhalb des Systems 100 für eine erste Schicht (z. B. für eine Faltungsschicht) stattfinden, Ausgabeaktivierungen erzeugen, die nachfolgend als Eingabeaktivierungen für eine zweite Schicht (z. B. für eine Pooling-Schicht), die sich von der ersten Schicht unterscheidet, bereitgestellt werden.
  • In einigen Implementierungen können zwei oder mehr Computersysteme 100 als ein Satz von Rechenkacheln konfiguriert sein. In diesen Implementierungen führt jede Rechenkachel einen Teil der Berechnungen, die zum Verarbeiten von Schlussfolgerungsarbeitsaufgaben für eine gegebene Schicht erforderlich sind, unabhängig aus. Daraufhin werden Ausgaben der Berechnungen zu einer anderen Kachel verschoben, die die Ausgaben benötigt, um Folgeberechnungen für die gegebene Schicht auszuführen. Darüber hinaus kann eine Schicht eines neuronalen Netzes durch einen Systementwickler auf eine gewünschte Weise unterteilt sein und kann jede Partition in der Weise auf eine Kachel abgebildet sein, dass ein Teil der Berechnungen einer bestimmten Schichtpartition entspricht.
  • Wieder anhand von 1 empfängt das System 100 in einigen Implementierungen über den Befehl 103 wenigstens einen Befehl, der mehrere Operationen codiert, die durch das System 100 ausgeführt werden können, um wenigstens einen Teil der für eine gegebene Schicht eines neuronalen Netzes erforderlichen Tensorberechnungen auszuführen. Der Befehl und die codierten Operationen können den Typ der Schicht, die Struktur des Aktivierungstensors und die Struktur des Gewichtstensors spezifizieren. Darüber hinaus können codierte Operationen veranlassen, dass die Verarbeitungseinheit 102 Programmcode ausführt, um eine Schleifenverschachtelungsstruktur zu erzeugen, die wenigstens teilweise durch den Schichttyp des neuronalen Netzes definiert ist. Hinsichtlich codierter Operationen kann der Befehlssatz 103 wenigstens einen eines Tensoroperationsbefehls (tensorop-Befehls) oder eines Direktspeicherzugriffsoperations-Befehls (DMAop-Befehls) enthalten. Außerdem kann der Befehlssatz 103 einen oder mehrere weitere Befehle enthalten, die eine Vielzahl verschiedener Operationen wie etwa Synchronisationsoperationen, Sperroperationen und Fencing-Operationen (im Folgenden beschrieben) codieren.
  • 3 stellt eine Tabelle 300 dar, die Opcodes und entsprechende Operationen, die wenigstens teilweise durch das System 100 ausgeführt werden, enthält. Die Tabelle 300 enthält Operationen 302, Operationen 304 und Operationen 308. Wie durch die Tabelle 300 gezeigt ist, kann das System 100 mehrere Operationen ausführen, die z. B. durch einen einzelnen durch den Befehlssatz 103 bereitgestellten Befehl codiert sind. Allgemein kann der Befehlssatz 103 eine standardisierte Struktur enthalten, die Opcodes verwendet, um die Typen von Operationen zu definieren, die für eine bestimmte Berechnungsfolge innerhalb des Systems 100 stattfinden sollen. Ein einziger Opcode kann einem bestimmten Operationstyp entsprechen. In einigen Implementierungen werden codierte Operationen in Form eines oder mehrerer Befehle, Eingabeaktivierungen und Gewichte für das System 100 von einer Einrichtung für externe Eingabe/Ausgabe (E/A) oder von einer Controllereinrichtung höherer Ebene, die einem Hardwarecomputersystem eines neuronalen Netzes zugeordnet ist, bereitgestellt. Um Befehle, Aktivierungen und Gewichte von einer beispielhaften E/A-Einrichtung oder zwischen mehreren Rechenkacheln (z. B. mehreren Systemen 100) eines Hardwarecomputersystems zu übergeben, können ein oder mehrere Datenbusse verwendet werden.
  • Wie durch die Tabelle 300 gezeigt ist, sind die Operationen 302 codierte Tensoroperationen, die eine oder mehrere tensorops mit entsprechenden Opcodes enthalten können. In einigen Implementierungen können ein einzelner Befehl oder ein Befehlssatz mehrere Teilbefehle enthalten, die Codierungen in Form von Opcodes, die eine bestimmte tensorop angeben, definieren. Zum Beispiel können die Teilbefehle auf eine oder mehrere Rechenkacheln verteilt werden, um zu veranlassen, dass die Kacheln für Berechnungen, die einer bestimmten Schicht des neuronalen Netzes entsprechen, tensorops ausführen. Ein tensorop-Teilbefehl kann z. B. Opcodes für wenigstens eine der oben erwähnten Schichten enthalten: Faltung, FC, Pooling, Reduktion oder elementweise Multiplikation. Der tensorop-Teilbefehl kann so konfiguriert sein, dass alle Tensorberechnungen, die innerhalb einer Rechenkachel/eines Computersystems 100 stattfinden, die notwendigen Codierungen von dem tensorop-Teilbefehl besitzen.
  • Allgemein besitzen Tensorberechnungen, die innerhalb des Systems 100 stattfinden, die notwendigen Codierungen, die durch von dem Befehlssatz 103 empfangene Befehle spezifiziert sind. Wenn mehrere Systeme 100 als ein Satz von Rechenkacheln angeordnet sind, können die tensorop-Teilbefehle und tensorop-Codierungen ermöglichen, dass verschiedene Rechenkacheln verschiedene Befehle ausführen. In einigen Implementierungen können verschiedene Teilbefehle Tensorberechnungen für eine bestimmte Aufteilung einer Schicht eines neuronalen Netzes entsprechen. Ferner ermöglicht die tensorop-Codierung, dass die TTU 106 über ein Haupt-TTU-Schleifenverschachtelungsfeld, das eine gewünschte TTU-Tensoroperation angibt, die Schleifenindizes an die Verarbeitungseinheit 102 aussendet. Außerdem ermöglicht die tensorop-Codierung, dass eine TTU 106 auf der Grundlage einer TTU-Schleifen-Maske, die angibt, welche Zähler miteinander addiert werden, um die Adresse zu berechnen, die Speicheradresse für ein bestimmtes Array/Tensor-Element erzeugt. Außerdem kann die tensorop-Codierung mehrere TTU-Schleifenverschachtelungsbefehle bereitstellen, die durch die Verarbeitungseinheit 102 ausführbar sind, um einen Eingabeaktivierungstensor, einen Gewichtstensor und einen Ausgabeaktivierungstensor zu durchlaufen.
  • In einigen Implementierungen kann jede Rechenkachel eine selbstständige Einheit sein, die Befehle unabhängig ausführt, wenn zwei oder mehr Computersysteme 100 als ein Satz von Rechenkacheln konfiguriert sind. Allgemein führt eine Rechenkachel Befehle aus, die zwei Typen von Operationen definieren: tensorops und DMAops. In einigen Implementierungen können die verschiedenen Operationen durch unabhängige Steuereinheiten innerhalb des Computersystems 100, die an Daten über einen Synchronisationsmerker synchronisieren, ausgeführt werden. Obgleich die Steuereinheiten unabhängig sind, kann es aber Abhängigkeiten geben, die aufrechterhalten werden müssen, wobei z. B. die tensorop eine Schleife in der Schleifenverschachtelung erst ausführen darf, wenn sie die Daten besitzt, die für die Schleifenverschachtelung z. B. an einem Speicherplatz des Speichermediums 104 notwendig sind. Die erforderlichen Daten können in dem Speichermedium 104 durch eine DMAop oder durch eine andere Operation angeordnet werden.
  • Allgemein findet die Datensynchronisation innerhalb des Systems 100 über Synchronisationsmerkeroperationen statt. In einigen Implementierungen besitzt das System 100 eine Registerdatei, die einen Synchronisationsmerkereintrag pro virtuellem Schreibport enthält. Zum Beispiel kann eine tensorop zwei oder mehr Tensorbezugnahmen besitzen, die Partialsummen (die in die zweite Bank 114 geschrieben werden) und Aktivierungen (die in die erste Bank 112 geschrieben werden) sein können. In dieser Implementierung kann es für jede Partialsumme und für die Aktivierungen ein Synchronisationsmerkerregister geben. Darüber hinaus kann die Verarbeitungseinheit 102 während der Ausführung eines gegebenen Befehlssatzes eine Dimension einer Tensorbezugnahme auswählen, die für ein bestimmtes Synchronisationsmerkerregister ein Inkrement auslöst. Darüber hinaus kann die Verarbeitungseinheit 102 die Tiefe einer Schleifenverschachtelung auswählen, in der beim Auswählen von Synchronisationsmerkerregistern für einen geforderten Zählwert zu warten ist. Dies stellt sicher, dass die Datenabhängigkeiten nicht verletzt werden. Darüber hinaus werden ein oder mehrere Threads blockiert, falls die geforderten Synchronisationsmerkerzählwerte in ausgewählten Synchronisationsmerkerregistern noch nicht erreicht sind.
  • Die tensorop-Codierung kann z. B. das Blockieren einer Schleifenverschachtelung auf der Grundlage einer oder mehrerer Synchronisationsmerkerbedingungen ermöglichen. In einigen Implementierungen kann die TTU 106 wegen der folgenden Bedingungen blockiert werden: 1) Eine vorgegebene Synchronisationsmerkerbedingung ist nicht erfüllt (z. B. sind Synchronisationsmerkerzählwerte nicht größer als ein Schwellenzählwert); oder 2) in einer bestimmten Stufe einer Befehlspipeline wird eine Gefahr detektiert. Außerdem ermöglicht die tensorop-Codierung das Konfigurieren des MAC-Operators 108 zum Empfangen eines bestimmten Datenwerts (z. B. Aktivierung oder Gewicht) mit einer gewünschten Bitbreite und erlaubt sie die Auswahl einer gewünschten Funktion, die durch die Aktivierungseinheit 110 ausgeführt werden soll.
  • Die durch die tensorop-Codierung definierten Synchronisationsmerkerbedingungen können veranlassen, dass die Verarbeitungseinheit 102 des Systems 100 wenigstens eine einer Synchronisationsbeobachteroperation und einer Synchronisationserzeugeroperation ausführt. Während der Ausführung einer tensorop durch die Verarbeitungseinheit 102 kann die Synchronisationsbeobachteroperation verwendet werden, um für die Verarbeitungseinheit 102 die Tatsache, in welcher Schleifeniteration zu synchronisieren ist, den Synchronisationsmerkerzählwert, der erforderlich ist, bevor zugelassen wird, dass eine Schleife iteriert wird, und wie viel der erwartete Synchronisationsmerkerzählwert für die nächste Iteration zu inkrementieren ist, anzugeben.
  • Wie durch Tabelle 300 gezeigt ist, können die codierten Direktspeicherzugriffsoperations-Befehle eine oder mehrere DMAops enthalten. Durch den Befehlssatz 103 spezifizierte DMA-Operationen veranlassen, dass die Verarbeitungseinheit 102 Daten so, wie es erforderlich ist, um die Ausführung einer bestimmten tensorop durch das System 100 zu bewirken, verschiebt. In einigen Implementierungen muss die Übertragungsgröße der Daten ein Vielfaches des breiteren Betriebsmittels sein, falls Daten zwischen zwei Speicherbetriebsmitteln mit ungleichen Breiten (z. B. einer breiten Speichereinheit und einer schmalen Speichereinheit) verschoben werden. Vorausgesetzt, eine DMAop verschiebt Daten zu/von einem breiten Speicher (W-mem), muss z. B. die Größe der Übertragung ein Vielfaches der Breite des breiten Speichers sein. Gleichfalls muss die Größe der Übertragung der Daten für eine DMAop, die Daten zu/von einem schmalen Speicher (N-mem) verschiebt, ein Vielfaches der Breite des schmalen Speichers sein.
  • Die Bezeichnungen breit und schmal, die überall in der Patentschrift zur Beschreibung von Attributen einer Speichereinheit verwendet sind, beziehen sich allgemein auf eine näherungsweise Größe der Breite (Bits/Bytes) einer oder mehrerer Speichereinheiten. In einigen Implementierungen sind die Speicherbreite der ersten Bank 112 und die Speicherbreite der zweiten Bank 114 nicht durch eine spezifische Anzahl von Bits wie etwa z. B. 16 Bit definiert. Allgemein gibt es in jeder Instantiierung des Systems 100 zwei verschiedene Typen von Speichern und sind schmal/breit relative Begriffe, die zur Angabe einer Eigenschaft des Speichers, die nicht absolut ist, verwendet werden. In einigen beispielhaften Implementierungen enthält die erste Bank 112 eine oder mehrere schmale Speichereinheiten und enthält die zweite Bank 114 eine oder mehrere breite Speichereinheiten.
  • Wie oben beschrieben wurde, können Befehle, die durch das System 100 empfangen und durch die Verarbeitungseinheit 102 ausgeführt werden, den tensorop-Befehl und den DMAop-Befehl enthalten. Die empfangenen Befehle können vor Ausführung durch die Verarbeitungseinheit 102 in dem Befehlspuffer 124 gespeichert werden. Wie in Tabelle 300 gezeigt ist, sind die Operationen 304 DMA-Operationen, die Befehlsuntertypen (die z. B. einen ‚Schreibe-zu‘-Pufferplatz) enthalten können, die die Folgenden enthalten: 1) Puffer eingehender Befehle; 2) Puffer ausgehender Befehle; 3) Puffer für DMA-Befehle mit schmaler Breite; 4) Puffer für DMA-Befehle mit breiter Breite; und 5) Ringbus-DMA-Befehlspuffer.
  • Nun anhand von Tabelle 300 veranlasst die Ausführung der DMAop.in-Operation durch die Verarbeitungseinheit 102, dass das System 100 (über einen beispielhaften Datenbus) Eingabeaktivierungen und andere Daten von dem Befehlssatz 103 empfängt und die Aktivierungen in der ersten Bank 112 speichert. Wie im Folgenden ausführlicher beschrieben wird, werden die Eingabeaktivierungen in der ersten Bank 112 an Speicheradressplätzen gespeichert, die jeweiligen Elementen eines Aktivierungstensors entsprechen. Die Ausführung der DMAop.out-Operation durch die Verarbeitungseinheit 102 veranlasst, dass das System 100 Daten (z. B. Ausgabeaktivierungen) von der ersten Bank 112 liest und Daten auf einen beispielhaften Bus schreibt, um die Daten aus dem System 100 auszugeben. Die Verarbeitungseinheit 102 kann die DMAop.N-W-Operation ausführen, um Daten von der ersten Bank 112 (schmaler Speicher) zu der zweiten Bank 114 (breiter Speicher) zu verschieben. Gleichfalls kann die Verarbeitungseinheit 102 die DMAop.W-N-Operation ausführen, um Daten von der zweiten Bank 114 (breiter Speicher) zu der ersten Bank 112 (schmaler Speicher) zu verschieben.
  • Nachdem die Verarbeitungseinheit 102 die Daten von dem Befehlssatz 103 (über einen beispielhaften Datenbus) ausgelesen hat, kann sie die DMAop.R-bus-Operation ausführen, um Daten (z. B. Gewichte/Parameter) in die zweite Bank 114 zu schreiben. Außerdem kann die Ausführung der DMAop.R-bus-Operation veranlassen, dass die Verarbeitungseinheit 102 Daten (z. B. Gewichte), die an Speicheradressplätzen der zweiten Bank 114 gespeichert sind, liest/auf sie zugreift und die Daten in der Weise auf den beispielhaften Datenbus schreibt, dass die Daten von dem System 100 ausgegeben werden können. In einigen Implementierungen ist der beispielhafte Datenbus ein Ringbus, der mehrere Computersysteme 100 in einer Ringstruktur verbindet. Außer der Tatsache, dass er die mehreren Systeme 100 in einem Ring verbindet, kann der Ringbus außerdem die mehreren Systeme 100 mit einer Einrichtung für externe E/A oder mit einer Steuereinrichtung einer höheren Ebene verbinden. Zusätzliche Einzelheiten und Beschreibungen in Bezug auf Hardwarecomputersysteme zum Beschleunigen von Tensorberechnungen eines neuronalen Netzes einschließlich Datenbusoptionen zum Verbinden von Rechenkacheln sind ebenfalls in der US-Patentanmeldung Nr. 15/335,769 mit dem Titel „Neural Network Compute Tile“, eingereicht am 27. Oktober 2016, beschrieben.
  • In einigen Implementierungen kann für einen gegebenen Satz von Rechenkacheln wenigstens eine Rechenkachel des Satzes von Rechenkacheln eine Klassifiziererkachel sein. Die Klassifiziererkachel kann dafür konfiguriert sein, auf Datenwerte, die Tensorberechnungen zugeordnet sind, die für eine bestimmte Schicht eines neuronalen Netzes aufgetreten sind, eine Funktion anzuwenden. Zum Beispiel kann eine FC-Schicht über Kacheln unterteilt sein, so dass jede Kachel eine Teilmenge von Ausgaben erzeugt und die Ausgaben in der zweiten Bank 114 speichert. Allgemein kann eine DMAop verwendet werden, um die linearen Ausgaben von Speicheradressplätzen des zweiten Speichers 114 von einer ersten Rechenkachel und über den Datenringbus zu einer zweiten Kachel (z. B. Klassifiziererkachel) zu verschieben. Die Klassifiziererkachel wendet daraufhin auf jede lineare Ausgabe wenigstens eine Funktion (z. B. eine Softmax-Funktion) an und stellt die Ergebnisse nach der Funktion für die Steuereinrichtung einer höheren Ebene oder für die Einrichtung für externe E/A bereit.
  • Wieder anhand von Tabelle 300 entsprechen in einigen Implementierungen DMAop.infeed und DMAop.outfeed Operationen, die sowohl einer externen Controllereinrichtung als auch dem System 100 zugeordnet sind. Allgemein wird die DMAop.infeed-Operation bei dem externen Controller initiiert und veranlasst sie, dass der Controller für einen beispielhaften Datenbus (z. B. für den Ringbus) sowohl Eingabeaktivierungen als auch Gewichte bereitstellt. Der Datenbus kann für das Multicasting eines Datenstroms (z. B. einer Bitmap), der angibt, welche Rechenkachel in einer Mehrkachelanordnung die Aktivierungen und Gewichte verarbeiten sollte, konfiguriert sein. Dementsprechend kann die Verarbeitungseinheit 102 einer bestimmten Empfangskachel somit einen Teil der DMAop.infeed-Operation ausführen, um Aktivierungen und Gewichte/Parameter von dem externen Controller in die Speicherbänke der Rechenkachel (System 100) zu verschieben. Gleichfalls kann die Verarbeitungseinheit 102 in einigen Implementierungen daraufhin einen Teil der DMAop.outfeed-Operation ausführen, um Ergebnisse (Ausgaben) einer beispielhaften Schlussfolgerungsarbeitsaufgabe von den Speicherbänken 112, 114 in der Rechenkachel zu der Klassifiziererkachel und von der Klassifiziererkachel zu dem externen Controller zu verschieben. Darüber hinaus kann der externe Controller außerdem einen Teil der DMAop.outfeed-Operation ausführen, um Schlussfolgerungsarbeitsaufgabenergebnisse zu einer beispielhaften Einrichtung für externe E/A zu verschieben.
  • Die Operationen 306 sind tilefenceop- und scalarfenceop-Operationen, die durch die Verarbeitungseinheit 102 ausgeführt werden können, um die Ausgabe neuer Befehle zu managen, während andere Operationen durch das System 100 ausgeführt werden. Die Ausführung des tilefenceop-Befehls durch die Verarbeitungseinheit 102 veranlasst, dass das System 100 sperrt oder verhindert, dass irgendwelche neuen Befehle an das System 100 ausgegeben werden, bis alle anstehenden Befehle in den jeweiligen Befehlspuffern des Systems 100 stillgelegt wurden. Außerdem wirkt der scalarfenceop-Befehl mit dem tilefenceop-Befehl zusammen, um die Ausgabe neuer Befehle zu verhindern, während anstehende Befehle durch die Verarbeitungseinheit 102 ausgeführt werden. Zum Beispiel kann der tilefenceop-Befehl veranlassen, dass die Verarbeitungseinheit 102 eine Sync-Merker-Zählwertmetrik beobachtet, die dem tilefenceop zugeordnet ist. Die Verarbeitungseinheit 102 kann den scalarfenceop-Befehl ausführen, um die Ausgabe neuer Befehle zu verhindern, bis eine Schwellenwert-Zählwertmetrik von tilefenceop erreicht ist.
  • 4A stellt einen beispielhaften Eingabeaktivierungstensor 404, beispielhafte Gewichtstensoren 406 und einen beispielhaften Ausgabetensor 408 dar. 4B stellt eine beispielhafte tiefe Schleifenverschachtelung 402 dar, die durch die Verarbeitungseinheit 102 ausgeführt werden kann, um Tensorberechnungen auszuführen, die sich auf Skalarproduktberechnungen oder auf die Matrixmultiplikation beziehen. In 4A können Berechnungen die Multiplikation des Aktivierungstensors 404 mit einem Parameter/Gewichts-Tensor 406 in einem oder in mehreren Rechenzyklen enthalten, um Ausgaben/Ergebnisse in Form des Ausgabetensors 408 zu erzeugen.
  • Jeder Tensor 404, 406, 408 kann mehrere Datenelemente enthalten, die in einem Zeile-Spalte-Format über die x-, y- und z-Dimensions-Ebene angeordnet sind. Aktivierungen können von jeweiligen Speicheradressplätzen der ersten Bank 112 gelesen werden, die Elementen des Aktivierungstensors 404 entsprechen. Gleichfalls können Gewichte von der zweiten Bank 114 in jeweiligen Speicheradressplätzen gelesen werden, die Elementen eines Gewichtstensors entsprechen. In einigen Implementierungen kann die Verarbeitungseinheit 102 Programmcode ausführen, der in bestimmten Speichereinheiten des Speichermediums 104 (z. B. ROM/EEPROM-Speichereinheiten) für ein Programm einer verschachtelten Schleife gespeichert ist, um zu veranlassen, dass die TTU 106 auf Speicheradressplätze, die jeweiligen Elementen des Aktivierungstensors 404 und des Gewichtstensors 406 entsprechen, zugreift. Die Verarbeitungseinheit 102 kann eine oder mehrere Tensorberechnungen, teilweise durch Ausführen eines Schleifenverschachtelungsprogramms, ausführen, um mehrere Schleifen zu instantiieren, die Tensorelemente für eine gegebene Dimension durchlaufen.
  • Während die TTU 106 Multiplikationsoperationen des Aktivierungstensors 404 und des Gewichtstensors 406 einschließlich einer einzelnen Aktivierung von einem x-dimensionalen Datenelement in dem Tensor 404 durchläuft, wird sie einzeln z. B. mit einer Zeile von Gewichten (mehreren Datenelementen) in der kx-Dimension eines bestimmten Gewichtstensors 406 multipliziert. Diese Multiplikationsoperationen können eine Zeile von Ausgaben erzeugen, die einer ersten x-Zeile in der zo-Dimension des Ausgabetensors 408 entsprechen. Allgemein kann der MAC-Operator 108 Tensorberechnungen ausführen, die arithmetische Operationen enthalten, die sich auf Skalarproduktberechnungen beziehen. Eingabeaktivierungen werden aus der ersten Bank 112 eine nach der anderen für den jeweiligen Zugriff durch einen einzelnen MAC-Operator 108 bereitgestellt. Der MAC-Operator 108 multipliziert die Eingabeaktivierung mit einem Gewicht, auf das von der zweiten Bank 114 zugegriffen wird, um einen einzelnen Ausgabeaktivierungswert zu erzeugen, der einem jeweiligen Datenelement des Ausgabetensors 408 entspricht.
  • In 4B ist eine beispielhafte tiefe Schleifenverschachtelung 402 gezeigt, wobei sie eine MAC-Operation in der innersten Schleife (zo) enthält. Eingabedimensionen, die dem Aktivierungstensor 404 entsprechen, sind als [x, y, zi] angegeben, Filterdimensionen, die dem Gewichtstensor 406 entsprechen, sind als [x, y, zi, zo] angegeben und Ausgabedimensionen, die dem Ausgabetensor 408 entsprechen, sind als [x, y, zo] angegeben. Somit spezifiziert die tiefe Schleifenverschachtelung 402 einen Ausgabetensor 408, der durch die Ausgabe [x][y][zo] angegeben ist, der auf Berechnungen beruht, die sich über die verschiedenen Dimensionen des Tensors 404, 406 erstrecken. Allgemein stellt die tiefe Schleifenverschachtelung 402 einen Softwarealgorithmus bereit, der durch das System 100 ausgeführt werden kann, um durch Verarbeitung einer verschachtelten Schleife zum Durchlaufen N-dimensionaler Tensoren Tensorberechnungen auszuführen. In einem beispielhaften Rechenprozess kann jede Schleife für das Durchlaufen bestimmter Dimensionen entsprechender N-dimensionaler Tensoren verantwortlich sein. Somit stellt die tiefe Schleifenverschachtelung 402 einen Ausdruck der einen oder mehreren Tensorberechnungen bereit, die gleichzeitig innerhalb mehrerer Rechenkacheln ausgeführt werden können.
  • In alternativen Implementierungen kann es andere Reihenfolgen der tiefen Schleifenverschachtelung 402 geben, die Änderungen des Ausgabetensors 408 erzeugen. Das System 100 kann Befehle zum Instantiieren einer tiefen Schleifenverschachtelung 402 empfangen, die einen Bereich von Datenwerten enthalten, um das Durchlaufen des Aktivierungstensors 404 und der Gewichtstensoren 406 in irgendeiner Reihenfolge zu ermöglichen. In dem System 100 können eine oder mehrere Schleifen räumlich aufgerollt werden. In einigen Implementierungen können die xx- und yy-Schleifenverschachtelungen über eine oder mehrere Rechenkacheln aufgerollt werden, wodurch ermöglicht wird, dass verschiedene Rechenkacheln Schlussfolgerungsarbeitsaufgaben verarbeiten, die verschiedenen Schichtpartitionen zugeordnet sind. In einer beispielhaften tiefen Schleifenverschachtelung 402 kann es in jedem Zyklus einen Aktivierungslesevorgang und alle zi · kx · ky Zyklen einen Partialsummenlesevorgang geben.
  • Die Struktur der Schleifenverschachtelung (z. B. die Anzahl innerer und äußerer Schleifen) kann auf der Grundlage eines oder mehrerer der Datenwerte der über den Befehlssatz 103 für das System 100 bereitgestellten Befehle definiert werden. Beispielhafte Berechnungen, die innerhalb einer Faltungsschicht stattfinden, können als Grundlage zur Beschreibung einer Ausführung eines Befehls, der Operationen zum Berechnen von Schlussfolgerungsarbeitsaufgaben für eine gegebene Schicht codiert, verwendet werden. Faltungsschichtberechnungen können eine zweidimensionale räumliche Faltung (räumliche 2D-Faltung) dreidimensionaler Tensoren (3D-Tensoren) enthalten. Berechnungen der Faltungsschicht können das Ausführen einer räumlichen 2D-Faltung zwischen einem 3D-Aktivierungstensor 404 und wenigstens einem 3D-Filter (Gewichtstensor 406) umfassen.
  • Für diese Berechnung gibt es eine Summe der Skalarprodukte entlang der Tiefendimension. Die Faltung eines 3D-Filters 406 über die 3D-Eingabe erzeugt eine räumliche 2D-Ebene. Wie gezeigt ist, kann es mehrere 3D-Filter geben, mit denen der 3D-Eingabetensor 404 gefaltet werden muss. Berechnungen führen zu einer 3D-Tensorausgabe 408. Obgleich Berechnungen für eine Faltungsschicht beschrieben sind, können auf der Grundlage der in dieser Patentschrift beschriebenen Lehren ebenfalls ein oder mehrere Befehle erzeugt werden, die Rechenoperationen für andere Schichten eines neuronalen Netzes codieren.
  • Allgemein stellen die Operatoren durch jede gemeinsame Nutzung einer einzelnen Aktivierungseingabe, um ihre jeweiligen Berechnungen auszuführen, zusammen eine Einzelbefehls-Mehrdaten-Funktionalität (SIMD-Funktionalität) bereit, wenn eine einzelne Rechenkachel mehrere MAC-Operatoren 108 enthält. SIMD bedeutet allgemein, dass alle parallelen Einheiten (mehrere MAC-Operatoren 108 in einem einzelnen System 100) denselben Befehl (auf der Grundlage der tiefen Schleifenverschachtelung) gemeinsam nutzen, dass aber jeder MAC-Operator 108 den Befehl an anderen Datenelementen des Tensors 404 und 406 ausführt. In einem grundlegenden Beispiel erfordert das elementweise Addieren der Arrays [1, 2, 3, 4] und [5, 6, 7, 8] in einem Zyklus, um das Array [6, 8, 10, 12] zu erhalten, üblicherweise vier Arithmetikeinheiten, um die Operation an jedem Element auszuführen. Durch Verwendung der SIMD können die vier Einheiten denselben Befehl (z. B. „add“) gemeinsam nutzen, um Berechnungen parallel auszuführen. Ein einzelner Befehl, der tensorops in Form einer Schleifenverschachtelung codiert, kann für ein oder mehrere Systeme 100 bereitgestellt werden, um Schlussfolgerungsarbeitsaufgaben zu berechnen, denen bestimmte Datenelemente mehrdimensionaler Tensoren zugeordnet sind. Somit stellt das System 100 in Tensorberechnungen gegenüber früheren Verfahren eine verbesserte Beschleunigung und eine verbesserte Parallelität bereit.
  • Beschleunigerfunktionen des Systems 100 entsprechen wenigstens zwei Typen der Parallelität. Der erste Typ der Parallelität wird durch das räumliche Aufrollen der innersten Schleife der tiefen Verschachtelungsschleife 402 gezeigt. Da das System 100 die SIMD-Funktionalität enthält, kann die innerste Schleifenschranke der tiefen Schleifenverschachtelung 402 auf die Anzahl der MAC-Operatoren 108 in einer linearen Einheit (z. B. in einer Zelle mehrerer MACs) festgesetzt werden. Der zweite Aspekt der Parallelität wird dadurch gezeigt, dass es Konfigurationen gibt, in denen mehrere Rechenkacheln jeweils die tiefe Schleifenverschachtelung 402, aber an verschiedenen Teilen von Tensorberechnungen für eine bestimmte Schicht des neuronalen Netzes, ausführen. In einer Beschleunigereinrichtung kann es eine konfigurierbare Anzahl von Kacheln zusammen mit einer konfigurierbaren Anzahl von MAC-Operationen innerhalb jeder Kachel geben.
  • In einigen Implementierungen kann ein Programmierer oder Entwickler entscheiden, eine bestimmte Schleifenverschachtelung zu detaillieren oder zu konstruieren, um z. B. die Aktivierungseingabebandbreite zu verringern und die Partialsummenlesebandbreite zu erhöhen. Dies kann dadurch erfolgen, dass die tiefe Schleifenverschachtelung 402 auf alternative Weise geschrieben oder konstruiert wird. Die tiefen Schleifenverschachtelungen, die in dieser Patentschrift zur Beschleunigung von Tensorberechnungen beschrieben sind, sind recht flexibel und können auf Wunsch so organisiert werden, dass sie für einen bestimmten Problemsatz passen. Das neuronale Netz und die Rechenkachel (das System 100), die in dieser Patentschrift beschrieben sind, können bis zu einer Rechenstruktur einer Verschachtelung von acht tiefen Schleifen unterstützen, so dass Eingaben und Ausgaben wie von dem Entwickler gewünscht so gekachelt werden können, dass sie die Ortsverhältnisse am besten nutzen und die Gesamtbandbreitenanforderungen verringern.
  • 5 ist ein Ablaufplan, der einen beispielhaften Prozess 500 zum Ausführen von Tensorberechnungen unter Verwendung des Computersystems 100 zum Ausführen einer oder mehrerer durch Befehle codierter Operationen darstellt. Im Block 502 empfängt die Verarbeitungseinheit 102 einen Befehl, der Datenwerte für die Ausführung von Tensorberechnungen im System 100 spezifiziert.
  • Im Block 504 führt die Verarbeitungseinheit 102 in Ansprechen auf den Empfang des Befehls durch Ausführen einer Schleifenverschachtelung, die mehrere Schleifen enthält, Tensorberechnungen aus. Wie oben diskutiert wurde, kann die Verarbeitungseinheit 102 auf Befehle (die von dem Befehlssatz 103 zugeordneten Befehlen verschieden sind) zugreifen, um Programmcode für ein verschachteltes Schleifenprogramm auszuführen. Daraufhin kann die Verarbeitungseinheit 102 den Programmcode ausführen, um zu veranlassen, dass die TTU 106 auf Speicheradressplätze zugreift, die jeweiligen Elementen des Aktivierungstensors 404 und des Gewichtstensors 406 entsprechen.
  • Im Block 506 kann der Befehlssatz 103 für Implementierungen, in denen die Schleifenverschachtelung eine definierte Struktur besitzt, die auf einem Schichttyp beruht, spezifische Datenwerte (z. B. einen oder mehrere Opcodes) enthalten, die den Schichttyp und die Schleifenverschachtelungsstruktur für die Schicht angeben. Zum Beispiel kann der Befehlssatz 103, wie durch die Operationen 302 aus 3 angegeben ist, einen oder mehrere Opcodes enthalten, die tensorops für Tensorberechnungen für Faltungs- und FC-Schichten (z. B. Opcode 0) entsprechen. Somit kann die Verarbeitungseinheit 102 daraufhin unter Verwendung von Datenwerten, die einem durch den Befehlssatz 103 bereitgestellten tensorop-Befehl zugeordnet sind, auf der Grundlage der Datenwerte des Befehls die Schleifenverschachtelungsstruktur definieren. Wenn die Schleifenverschachtelungsstruktur definiert worden ist, führt die Verarbeitungseinheit 102 teilweise durch Ausführen eines Schleifenverschachtelungsprogramms eine oder mehrere Tensorberechnungen aus, um Schleifen zu instantiieren, die Tensorelemente für eine gegebene Dimension des Aktivierungstensors 404 und des Gewichtstensors 406 durchlaufen.
  • Im Block 508 veranlasst die Verarbeitungseinheit 102, dass einzelne Ausgabeaktivierungen 116 in jeweilige Datenelemente des Ausgabetensors 408 geschrieben werden. Außerdem kann die Verarbeitungseinheit 102 im Block 508 die DMAop.outfeed-Operation ausführen, um zu veranlassen, dass die Ergebnisse der Tensorberechnungen für die nachfolgenden Tensorberechnungen in eine oder in mehrere Rechenkacheln geschrieben werden. Alternativ kann die DMAop.outfeed-Operation die Ergebnisse (Ausgaben) der Schlussfolgerungsarbeitsaufgabe aus den Speicherbänken 112, 114 in einer ersten Rechenkachel in die Klassifiziererkachel (z. B. zweite Rechenkachel) und von der Klassifiziererkachel in den externen Controller und in die Einrichtung für externe E/A verschieben.
  • Ausführungsformen des Gegenstands und der Funktionsoperationen, die in dieser Patentschrift beschrieben sind, können in einer digitalen elektronischen Schaltungsanordnung, in konkret verkörperter Computersoftware oder Computerfirmware, in Computerhardware einschließlich der Strukturen, die in dieser Patentschrift offenbart sind, und ihrer strukturellen Entsprechungen oder in Kombinationen einer oder mehrerer von ihnen implementiert werden. Ausführungsformen des in dieser Patentschrift beschriebenen Gegenstands können als ein oder mehrere Computerprogramme, d. h. als ein oder mehrere Module von Computerprogrammbefehlen, die in einem konkreten nichttransitorischen Programmträger zur Ausführung z. B. durch eine Datenverarbeitungsvorrichtung oder zum Steuern von dessen Betrieb codiert sind, implementiert werden. Alternativ oder zusätzlich können die Programmbefehle in einem künstlich erzeugten ausgebreiteten Signal, z. B. in einem maschinengenerierten elektrischen, optischen oder elektromagnetischen Signal codiert sein, das zum Codieren von Informationen zur Sendung an eine geeignete Empfängervorrichtung zur Ausführung durch eine Datenverarbeitungseinrichtung erzeugt wird. Das Computerspeichermedium kann eine maschinenlesbare Speichereinrichtung, ein maschinenlesbares Speichersubstrat, eine Schreib-Lese-Speichereinrichtung oder eine Speichereinrichtung mit seriellem Zugriff oder eine Kombination eines oder mehrerer von ihnen sein.
  • Ein Computerprogramm (das auch als ein Programm, als Software, als Softwareanwendung, als ein Modul, als ein Softwaremodul, als ein Skript oder als Code bezeichnet oder beschrieben werden kann) kann in irgendeiner Form einer Programmiersprache einschließlich kompilierter oder interpretierter Sprachen oder deklarativer oder prozeduraler Sprachen, geschrieben sein; und kann in irgendeiner Form einschließlich als selbstständiges Programm oder als ein Modul, als eine Komponente, als ein Unterprogramm oder als eine andere Einheit, die zur Verwendung in einer Computerumgebung geeignet ist, eingesetzt werden. Ein Computerprogramm kann, muss aber nicht einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Abschnitt einer Datei, die andere Programme oder Daten, z. B. ein oder mehrere Skripte, die in einem Markup-Sprachen-Dokument gespeichert sind, hält, in einer einzelnen Datei, die für das fragliche Programm vorgesehen ist, oder in mehreren koordinierten Dateien, z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Abschnitte von Code speichern, gespeichert sein. Ein Computerprogramm kann dafür eingesetzt werden, in einem Computer oder in mehreren Computern, die sich an einem Standort befinden oder die über mehrere Standorte verteilt sind und durch ein Datenkommunikationsnetz miteinander verbunden sind, ausgeführt zu werden.
  • Die in dieser Patentschrift beschriebenen Prozesse und Logikabläufe können durch einen oder mehrere programmierbare Computer ausgeführt werden, die ein oder mehrere Computerprogramme ausführen, um durch Bearbeiten von Eingabedaten und Erzeugen einer Ausgabe Funktionen auszuführen. Die Prozesse und Logikabläufe können ebenfalls durch eine Speziallogikschaltungsanordnung, z. B. durch eine FPGA (frei programmierbare logische Anordnung), eine ASIC (anwendungsspezifische integrierte Schaltung), eine GPGPU (Universalgraphikverarbeitungseinheit) oder einen anderen Prozessortyp, ausgeführt werden und die Vorrichtungen durch diese implementiert werden.
  • Computer, die für die Ausführung eines Computerprogramms geeignet sind, enthalten beispielhaft Mehrzweck- oder Spezialmikroprozessoren oder beide oder irgendeine andere Art einer Zentraleinheit bzw. können darauf beruhen. Allgemein empfängt eine Zentraleinheit Befehle und Daten von einem Nur-Lese-Speicher oder von einem Schreib-Lese-Speicher oder von beiden. Die wesentlichen Elemente eines Computers sind eine Zentraleinheit zum Ausführen oder Durchführen von Befehlen und eine oder mehrere Speichereinrichtungen zum Speichern von Befehlen und Daten. Allgemein enthält ein Computer ebenfalls Daten von einer oder mehreren Massenspeichereinrichtungen zum Speichern von Daten, z. B. magnetischen, magnetooptischen Platten oder optischen Platten, oder ist er zum Empfangen von Daten von ihnen oder zum Senden von Daten an sie funktional gekoppelt oder beides. Allerdings braucht ein Computer solche Einrichtungen nicht aufzuweisen. Darüber hinaus kann ein Computer in eine andere Einrichtung, z. B. in ein Mobiltelephon, in einen Personal Digital Assistant (PDA), in einen mobilen Audio- oder Videoplayer, in eine Spielekonsole, in einen Empfänger des globalen Positionsbestimmungssystems (GPS) oder in eine tragbare Speichereinrichtung, z. B. ein Universal-Serial-Bus-Flash-Laufwerk (USB-Flash-Laufwerk), um nur einige zu nennen, eingebettet sein.
  • Computerlesbare Medien, die zum Speichern von Computerprogrammbefehlen und Daten geeignet sind, enthalten alle Formen von nichtflüchtigem Speicher, Medien und Speichereinrichtungen einschließlich beispielhaft Halbleiterspeichereinrichtungen, z. B. EPROM, EEPROM und Flash-Speichereinrichtungen; Magnetplatten, z. B. interne Festplatten oder Wechselplatten; magnetooptische Platten; und CD-ROM- und DVD-ROM-Platten. Der Prozessor und der Speicher können durch eine Speziallogikschaltungsanordnung ergänzt oder in sie integriert sein.
  • Ausführungen des in dieser Patentschrift beschriebenen Gegenstands können in einem Computersystem implementiert werden, das eine Backend-Komponente, z. B. als einen Datenserver, enthält oder das eine Middleware-Komponente, z. B. einen Anwendungsserver, enthält oder das eine Frontend-Komponente, z. B. einen Client-Computer mit einer graphischen Nutzerschnittstelle oder mit einem Webbrowser, über die bzw. den ein Nutzer mit einer Implementierung des in dieser Patentschrift beschriebenen Gegenstands interagieren kann, enthält oder das irgendeine Kombination einer oder mehrerer solcher Backend-, Middleware- oder Frontend-Komponenten enthält. Die Komponenten des Systems können durch irgendeine Form oder durch irgendein Medium der digitalen Datenkommunikation, z. B. durch ein Kommunikationsnetz, miteinander verbunden sein. Beispiele für Kommunikationsnetze enthalten ein lokales Netz („LAN“) und ein Weitverkehrsnetz („WAN“), z. B. das Internet.
  • Das Computersystem kann Clients und Server enthalten. Allgemein sind ein Client und ein Server fern voneinander und üblicherweise interagieren sie über ein Kommunikationsnetz. Die Beziehung von Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern ausgeführt werden und die eine Client-Server-Beziehung zueinander besitzen.
  • Weitere Implementierungen sind in den folgenden Beispielen zusammengefasst
  • Beispiel 1: Computerimplementiertes Verfahren, das umfasst: Empfangen eines Befehls, der Datenwerte zum Ausführen einer Tensorberechnung spezifiziert, durch eine Verarbeitungseinheit; und Ausführen der Tensorberechnung durch Ausführen einer Schleifenverschachtelung, die mehrere Schleifen umfasst, in Ansprechen auf den Empfang des Befehls durch die Verarbeitungseinheit, wobei eine Struktur der Schleifenverschachtelung auf der Grundlage eines oder mehrerer der Datenwerte des Befehls definiert ist.
  • Beispiel 2: Verfahren nach Beispiel 1, wobei die Tensorberechnung wenigstens ein Teil einer Berechnung einer Schicht eines neuronalen Netzes ist.
  • Beispiel 3: Verfahren nach Beispiel 2, wobei die durch den Befehl spezifizierten Datenwerte wenigstens einen Wert umfassen, der einen Typ der Schicht eines neuronalen Netzes spezifiziert, und wobei die Struktur der Schleifenverschachtelung wenigstens teilweise durch den Typ der Schicht eines neuronalen Netzes definiert ist.
  • Beispiel 4: Verfahren nach Beispiel 2 oder 3, wobei der Befehl veranlasst, dass die Verarbeitungseinheit wenigstens auf ein Element einer Dimension eines Tensors zugreift, wobei das Element ein Teil wenigstens eines Index ist, der beim Ausführen der Schleifenverschachtelung während der Ausführung der Tensorberechnung verwendet wird.
  • Beispiel 5: Verfahren nach Beispiel 2 oder 3, wobei der Befehl veranlasst, dass die Verarbeitungseinheit wenigstens auf eine Speicheradresse eines Arrays in einem Speichermedium zugreift, wobei die Speicheradresse des Arrays eine Variable umfasst, die durch die Verarbeitungseinheit während der Ausführung der Tensorberechnung gelesen wird.
  • Beispiel 6: Verfahren nach Beispiel 5, wobei das Ausführen der Tensorberechnung das Bereitstellen wenigstens eines Steuersignals für eine Tensordurchlaufeinheit (TTU) durch die Verarbeitungseinheit umfasst, um zu veranlassen, dass die TTU Schleifenindizes aussendet, die beim Ausführen der Schleifenverschachtelung während der Ausführung der Tensorberechnung verwendet werden.
  • Beispiel 7: Verfahren nach Beispiel 5, das ferner das Bereitstellen wenigstens eines Steuersignals für die TTU durch die Verarbeitungseinheit umfasst, um eine Array-Bezugnahme der TTU zu veranlassen, um eine Adresse für ein Array-Element, auf das Bezug genommen wird, zu erzeugen, das beim Ausführen der Schleifenverschachtelung während der Ausführung der Tensorberechnung verwendet wird.
  • Beispiel 8: Verfahren nach Beispiel 7, wobei der Befehl einen ersten TTU-Zähler angibt, der mit einem zweiten TTU-Zähler summiert wird, um eine Adresse für eine der TTU zugeordnete Array-Bezugnahme zu erzeugen.
  • Beispiel 9: Verfahren nach einem der Ansprüche 1 bis 8, wobei das Ausführen der Tensorberechnung das Ausführen einer ersten Synchronisationsprozedur, die einen oder mehrere Operanden managt, die der Ausführung der Tensorberechnung zugeordnet sind, durch die Verarbeitungseinheit umfasst, wobei das Managen eines Operanden das Blockieren einer oder mehrerer Schleifenverschachtelungen auf der Grundlage einer Synchronisationsmerkerbedingung umfasst.
  • Beispiel 10: Verfahren nach Beispiel 9, wobei das Ausführen der Tensorberechnung das Ausführen einer zweiten Synchronisationsprozedur, die das Inkrementieren eines Zählers, der einer Eigenschaft der Schleifenverschachtelung zugeordnet ist, managt, durch die Verarbeitungseinheit umfasst.
  • Beispiel 11: Elektronisches System, das umfasst: eine Verarbeitungseinheit, die in dem elektronischen System angeordnet ist, wobei die Verarbeitungseinheit eine oder mehrere Verarbeitungseinrichtungen enthält; und eine oder mehrere maschinenlesbare Speichereinrichtungen zum Speichern von Befehlen, die durch die eine oder die mehreren Verarbeitungseinrichtungen ausführbar sind, um Operationen auszuführen, die umfassen: Empfangen eines Befehls, der Datenwerte zum Ausführen einer Tensorberechnung spezifiziert, durch die Verarbeitungseinheit; und Ausführen der Tensorberechnung durch Ausführen einer Schleifenverschachtelung, die mehrere Schleifen umfasst, in Ansprechen auf den Empfang des Befehls durch die Verarbeitungseinheit, wobei eine Struktur der Schleifenverschachtelung auf der Grundlage eines oder mehrerer der Datenwerte des Befehls definiert ist.
  • Beispiel 12: Elektronisches System nach Beispiel 11, wobei die Tensorberechnung wenigstens ein Teil einer Berechnung einer Schicht eines neuronalen Netzes ist.
  • Beispiel 13: Elektronisches System nach Beispiel 12, wobei die durch den Befehl spezifizierten Datenwerte wenigstens einen Wert umfassen, der einen Typ der Schicht eines neuronalen Netzes spezifiziert, und wobei die Struktur der Schleifenverschachtelung wenigstens teilweise durch den Typ der Schicht eines neuronalen Netzes definiert ist.
  • Beispiel 14: Elektronisches System nach Beispiel 12 oder 13, wobei der Befehl veranlasst, dass die Verarbeitungseinheit wenigstens auf ein Element einer Dimension eines Tensors zugreift, wobei das Element ein Teil wenigstens eines Index ist, der beim Ausführen der Schleifenverschachtelung während der Ausführung der Tensorberechnung verwendet wird.
  • Beispiel 15: Elektronisches System nach Beispiel 12 oder 13, wobei der Befehl veranlasst, dass die Verarbeitungseinheit wenigstens auf eine Speicheradresse eines Arrays in einem Speichermedium zugreift, wobei die Speicheradresse des Arrays eine Variable umfasst, die durch die Verarbeitungseinheit während der Ausführung der Tensorberechnung gelesen wird.
  • Beispiel 16: Elektronisches System nach Beispiel 15, wobei das Ausführen der Tensorberechnung das Bereitstellen wenigstens eines Steuersignals für eine Tensordurchlaufeinheit (TTU) durch die Verarbeitungseinheit umfasst, um zu veranlassen, dass die TTU Schleifenindizes aussendet, die beim Ausführen der Schleifenverschachtelung während der Ausführung der Tensorberechnung verwendet werden.
  • Beispiel 17: Nichttransitorisches computerlesbares Speichermedium, das Befehle umfasst, die durch eine Verarbeitungseinheit ausführbar sind, die bei dieser Ausführung veranlassen, dass die Verarbeitungseinheit Operationen ausführen, die umfassen: Empfangen eines Befehls, der Datenwerte zum Ausführen einer Tensorberechnung spezifiziert, durch die Verarbeitungseinheit; und Ausführen der Tensorberechnung durch Ausführen einer Schleifenverschachtelung, die mehrere Schleifen umfasst, in Ansprechen auf den Empfang des Befehls durch die Verarbeitungseinheit, wobei eine Struktur der Schleifenverschachtelung auf der Grundlage eines oder mehrerer der Datenwerte des Befehls definiert ist.
  • Beispiel 18: Nichttransitorisches computerlesbares Speichermedium nach Beispiel 17, wobei die Tensorberechnung wenigstens ein Teil einer Berechnung einer Schicht eines neuronalen Netzes ist.
  • Beispiel 19: Nichttransitorisches computerlesbares Speichermedium nach Beispiel 18, wobei die durch den Befehl spezifizierten Datenwerte wenigstens einen Wert umfassen, der einen Typ der Schicht eines neuronalen Netzes spezifiziert, und wobei die Struktur der Schleifenverschachtelung wenigstens teilweise durch den Typ der Schicht eines neuronalen Netzes definiert ist.
  • Beispiel 20: Nichttransitorisches computerlesbares Speichermedium nach Beispiel 18, wobei der Befehl veranlasst, dass die Verarbeitungseinheit wenigstens auf ein Element einer Dimension eines Tensors zugreift, wobei das Element ein Teil wenigstens eines Index ist, der beim Ausführen der Schleifenverschachtelung während der Ausführung der Tensorberechnung verwendet wird.
  • Obgleich diese Patentschrift viele spezifische Implementierungseinzelheiten enthält, sind diese nicht als Beschränkungen des Schutzumfangs irgendeiner Erfindung oder des Schutzumfangs dessen, was beansprucht werden kann, sondern vielmehr als Beschreibungen von Merkmalen, die spezifisch für bestimmte Ausführungsformen bestimmter Erfindungen sein können, zu verstehen. Bestimmte Merkmale, die in dieser Patentschrift im Kontext getrennter Ausführungsformen beschrieben sind, können ebenfalls zusammen in einer einzelnen Ausführungsform implementiert werden. Umgekehrt können verschiedene Merkmale, die im Kontext einer einzelnen Ausführungsform beschrieben sind, ebenfalls in mehreren Ausführungsformen getrennt oder in irgendeiner geeigneten Teilkombination implementiert werden. Obgleich Merkmale oben in der Weise beschrieben sein können, dass sie in bestimmten Kombinationen wirken und anfangs sogar in der Weise beansprucht sind, können darüber hinaus ein oder mehrere Merkmale aus einer beanspruchten Kombination in einigen Fällen aus der Kombination ausgeschlossen werden und kann die beanspruchte Kombination auf eine Teilkombination oder auf Varianten einer Teilkombination gerichtet sein.
  • Obgleich Operationen in den Zeichnungen in einer bestimmten Reihenfolge gezeigt sind, ist dies ähnlich nicht so zu verstehen, dass es erfordert, dass diese Operationen in einer bestimmten gezeigten Reihenfolge oder in einer sequentiellen Ordnung ausgeführt werden oder dass alle dargestellten Operationen ausgeführt werden, um wünschenswerte Ergebnisse zu erzielen. In bestimmten Umständen können Multitasking und Parallelverarbeitung vorteilhaft sein. Darüber hinaus ist die Trennung verschiedener Systemmodule und Systemkomponenten in den oben beschriebenen Ausführungsformen nicht so zu verstehen, dass eine solche Trennung in allen Ausführungsformen erforderlich ist, und können die beschriebenen Programmkomponenten und Systeme selbstverständlich allgemein in ein einzelnes Softwareprodukt integriert oder in mehrere Softwareprodukte gepackt sein.
  • Es sind bestimmte Ausführungsformen des Gegenstands beschrieben worden. Andere Ausführungsformen liegen im Schutzumfang der folgenden Ansprüche. Zum Beispiel können die in den Ansprüchen dargestellten Tätigkeiten in einer anderen Reihenfolge ausgeführt werden und weiterhin wünschenswerte Ergebnisse erzielen. Als ein Beispiel erfordern die in den beigefügten Figuren gezeigten Prozesse nicht notwendig die bestimmte gezeigte Reihenfolge oder sequentielle Ordnung, um wünschenswerte Ergebnisse zu erzielen. In bestimmten Implementierungen können Multitasking und Parallelverarbeitung vorteilhaft sein.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 15335769 [0020, 0051]

Claims (20)

  1. Computerimplementiertes Verfahren, das umfasst: Empfangen eines Befehls, der Datenwerte zum Ausführen einer Tensorberechnung spezifiziert, durch eine Verarbeitungseinheit; und Ausführen der Tensorberechnung durch Ausführen einer Schleifenverschachtelung, die mehrere Schleifen umfasst, in Ansprechen auf den Empfang des Befehls durch die Verarbeitungseinheit, wobei eine Struktur der Schleifenverschachtelung auf der Grundlage eines oder mehrerer der Datenwerte des Befehls definiert ist.
  2. Verfahren nach Anspruch 1, wobei die Tensorberechnung wenigstens ein Teil einer Berechnung einer Schicht eines neuronalen Netzes ist.
  3. Verfahren nach Anspruch 2, wobei die durch den Befehl spezifizierten Datenwerte wenigstens einen Wert umfassen, der einen Typ der Schicht eines neuronalen Netzes spezifiziert, und wobei die Struktur der Schleifenverschachtelung wenigstens teilweise durch den Typ der Schicht eines neuronalen Netzes definiert ist.
  4. Verfahren nach Anspruch 2, wobei der Befehl veranlasst, dass die Verarbeitungseinheit wenigstens auf ein Element einer Dimension eines Tensors zugreift, wobei das Element ein Teil wenigstens eines Index ist, der beim Ausführen der Schleifenverschachtelung während der Ausführung der Tensorberechnung verwendet wird.
  5. Verfahren nach Anspruch 2, wobei der Befehl veranlasst, dass die Verarbeitungseinheit wenigstens auf eine Speicheradresse eines Arrays in einem Speichermedium zugreift, wobei die Speicheradresse des Arrays eine Variable umfasst, die durch die Verarbeitungseinheit während der Ausführung der Tensorberechnung gelesen wird.
  6. Verfahren nach Anspruch 5, wobei das Ausführen der Tensorberechnung das Bereitstellen wenigstens eines Steuersignals für eine Tensordurchlaufeinheit (TTU) durch die Verarbeitungseinheit umfasst, um zu veranlassen, dass die TTU Schleifenindizes aussendet, die beim Ausführen der Schleifenverschachtelung während der Ausführung der Tensorberechnung verwendet werden.
  7. Verfahren nach Anspruch 5, das ferner das Bereitstellen wenigstens eines Steuersignals für die TTU durch die Verarbeitungseinheit umfasst, um eine Array-Bezugnahme der TTU zu veranlassen, um eine Adresse für ein Array-Element, auf das Bezug genommen wird, zu erzeugen, das beim Ausführen der Schleifenverschachtelung während der Ausführung der Tensorberechnung verwendet wird.
  8. Verfahren nach Anspruch 7, wobei der Befehl einen ersten TTU-Zähler angibt, der mit einem zweiten TTU-Zähler summiert wird, um eine Adresse für eine der TTU zugeordnete Array-Bezugnahme zu erzeugen.
  9. Verfahren nach einem der Ansprüche 1 bis 8, wobei das Ausführen der Tensorberechnung das Ausführen einer ersten Synchronisationsprozedur, die einen oder mehrere Operanden managt, die der Ausführung der Tensorberechnung zugeordnet sind, durch die Verarbeitungseinheit umfasst, wobei das Managen eines Operanden das Blockieren einer oder mehrerer Schleifenverschachtelungen auf der Grundlage einer Synchronisationsmerkerbedingung umfasst.
  10. Verfahren nach Anspruch 9, wobei das Ausführen der Tensorberechnung das Ausführen einer zweiten Synchronisationsprozedur, die das Inkrementieren eines Zählers, der einer Eigenschaft der Schleifenverschachtelung zugeordnet ist, managt, durch die Verarbeitungseinheit umfasst.
  11. Elektronisches System, das umfasst: eine Verarbeitungseinheit, die in dem elektronischen System angeordnet ist, wobei die Verarbeitungseinheit eine oder mehrere Verarbeitungseinrichtungen enthält; und eine oder mehrere maschinenlesbare Speichereinrichtungen zum Speichern von Befehlen, die durch die eine oder die mehreren Verarbeitungseinrichtungen ausführbar sind, um Operationen auszuführen, die umfassen: Empfangen eines Befehls, der Datenwerte zum Ausführen einer Tensorberechnung spezifiziert, durch die Verarbeitungseinheit; und Ausführen der Tensorberechnung durch Ausführen einer Schleifenverschachtelung, die mehrere Schleifen umfasst, in Ansprechen auf den Empfang des Befehls durch die Verarbeitungseinheit, wobei eine Struktur der Schleifenverschachtelung auf der Grundlage eines oder mehrerer der Datenwerte des Befehls definiert ist.
  12. Elektronisches System nach Anspruch 11, wobei die Tensorberechnung wenigstens ein Teil einer Berechnung einer Schicht eines neuronalen Netzes ist.
  13. Elektronisches System nach Anspruch 12, wobei die durch den Befehl spezifizierten Datenwerte wenigstens einen Wert umfassen, der einen Typ der Schicht eines neuronalen Netzes spezifiziert, und wobei die Struktur der Schleifenverschachtelung wenigstens teilweise durch den Typ der Schicht eines neuronalen Netzes definiert ist.
  14. Elektronisches System nach Anspruch 12, wobei der Befehl veranlasst, dass die Verarbeitungseinheit wenigstens auf ein Element einer Dimension eines Tensors zugreift, wobei das Element ein Teil wenigstens eines Index ist, der beim Ausführen der Schleifenverschachtelung während der Ausführung der Tensorberechnung verwendet wird.
  15. Elektronisches System nach Anspruch 12, wobei der Befehl veranlasst, dass die Verarbeitungseinheit wenigstens auf eine Speicheradresse eines Arrays in einem Speichermedium zugreift, wobei die Speicheradresse des Arrays eine Variable umfasst, die durch die Verarbeitungseinheit während der Ausführung der Tensorberechnung gelesen wird.
  16. Elektronisches System nach Anspruch 15, wobei das Ausführen der Tensorberechnung das Bereitstellen wenigstens eines Steuersignals für eine Tensordurchlaufeinheit (TTU) durch die Verarbeitungseinheit umfasst, um zu veranlassen, dass die TTU Schleifenindizes aussendet, die beim Ausführen der Schleifenverschachtelung während der Ausführung der Tensorberechnung verwendet werden.
  17. Nichttransitorisches computerlesbares Speichermedium, das Befehle umfasst, die durch eine Verarbeitungseinheit ausführbar sind, die bei dieser Ausführung veranlassen, dass die Verarbeitungseinheit Operationen ausführen, die umfassen: Empfangen eines Befehls, der Datenwerte zum Ausführen einer Tensorberechnung spezifiziert, durch die Verarbeitungseinheit; und Ausführen der Tensorberechnung durch Ausführen einer Schleifenverschachtelung, die mehrere Schleifen umfasst, in Ansprechen auf den Empfang des Befehls durch die Verarbeitungseinheit, wobei eine Struktur der Schleifenverschachtelung auf der Grundlage eines oder mehrerer der Datenwerte des Befehls definiert ist.
  18. Nichttransitorisches computerlesbares Speichermedium nach Anspruch 17, wobei die Tensorberechnung wenigstens ein Teil einer Berechnung einer Schicht eines neuronalen Netzes ist.
  19. Nichttransitorisches computerlesbares Speichermedium nach Anspruch 18, wobei die durch den Befehl spezifizierten Datenwerte wenigstens einen Wert umfassen, der einen Typ der Schicht eines neuronalen Netzes spezifiziert, und wobei die Struktur der Schleifenverschachtelung wenigstens teilweise durch den Typ der Schicht eines neuronalen Netzes definiert ist.
  20. Nichttransitorisches computerlesbares Speichermedium nach Anspruch 18, wobei der Befehl veranlasst, dass die Verarbeitungseinheit wenigstens auf ein Element einer Dimension eines Tensors zugreift, wobei das Element ein Teil wenigstens eines Index ist, der beim Ausführen der Schleifenverschachtelung während der Ausführung der Tensorberechnung verwendet wird.
DE102017120588.8A 2016-10-27 2017-09-07 Befehlssatzarchitektur für neuronale Netze Pending DE102017120588A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15/336,216 2016-10-27
US15/336,216 US9959498B1 (en) 2016-10-27 2016-10-27 Neural network instruction set architecture
US15/455,685 2017-03-10
US15/455,685 US9836691B1 (en) 2016-10-27 2017-03-10 Neural network instruction set architecture

Publications (1)

Publication Number Publication Date
DE102017120588A1 true DE102017120588A1 (de) 2018-05-03

Family

ID=60452227

Family Applications (2)

Application Number Title Priority Date Filing Date
DE102017120588.8A Pending DE102017120588A1 (de) 2016-10-27 2017-09-07 Befehlssatzarchitektur für neuronale Netze
DE202017105403.9U Active DE202017105403U1 (de) 2016-10-27 2017-09-07 Befehlssatzarchitektur für neuronale Netze

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE202017105403.9U Active DE202017105403U1 (de) 2016-10-27 2017-09-07 Befehlssatzarchitektur für neuronale Netze

Country Status (10)

Country Link
US (4) US9959498B1 (de)
EP (2) EP3532996A1 (de)
JP (3) JP6921951B2 (de)
KR (3) KR20230058539A (de)
CN (1) CN108009627A (de)
DE (2) DE102017120588A1 (de)
GB (1) GB2558980A (de)
HK (1) HK1254701A1 (de)
SG (1) SG11201903631XA (de)
WO (1) WO2018080628A1 (de)

Families Citing this family (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10360163B2 (en) 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
US9959498B1 (en) 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
US10175980B2 (en) 2016-10-27 2019-01-08 Google Llc Neural network compute tile
WO2018126073A1 (en) * 2016-12-30 2018-07-05 Lau Horace H Deep learning hardware
US10365987B2 (en) 2017-03-29 2019-07-30 Google Llc Synchronous hardware event collection
US9875167B1 (en) 2017-03-29 2018-01-23 Google Inc. Distributed hardware tracing
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
US10684955B2 (en) 2017-04-21 2020-06-16 Micron Technology, Inc. Memory devices and methods which may facilitate tensor memory access with memory maps based on memory operations
US10817293B2 (en) * 2017-04-28 2020-10-27 Tenstorrent Inc. Processing core with metadata actuated conditional graph execution
US11113051B2 (en) * 2017-04-28 2021-09-07 Tenstorrent Inc. Processing core with metadata actuated conditional graph execution
US11138494B2 (en) * 2017-05-02 2021-10-05 International Business Machines Corporation Storage controller acceleration for neural network training and inference
US10565285B2 (en) * 2017-12-18 2020-02-18 International Business Machines Corporation Processor and memory transparent convolutional lowering and auto zero padding for deep neural network implementations
US10747631B2 (en) * 2018-01-19 2020-08-18 DinoplusAI Holdings Limited Mission-critical AI processor with record and replay support
US10445638B1 (en) * 2018-02-28 2019-10-15 Amazon Technologies, Inc. Restructuring a multi-dimensional array
US20190318229A1 (en) * 2018-04-12 2019-10-17 Advanced Micro Devices, Inc. Method and system for hardware mapping inference pipelines
US11222257B1 (en) 2018-04-20 2022-01-11 Perceive Corporation Non-dot product computations on neural network inference circuit
US11049013B1 (en) * 2018-04-20 2021-06-29 Perceive Corporation Encoding of weight values stored on neural network inference circuit
US11210586B1 (en) 2018-04-20 2021-12-28 Perceive Corporation Weight value decoder of neural network inference circuit
US11403530B1 (en) 2018-04-20 2022-08-02 Perceive Corporation Using quinary weights with neural network inference circuit designed for ternary weights
US11531868B1 (en) 2018-04-20 2022-12-20 Perceive Corporation Input value cache for temporarily storing input values
US11783167B1 (en) 2018-04-20 2023-10-10 Perceive Corporation Data transfer for non-dot product computations on neural network inference circuit
US11568227B1 (en) 2018-04-20 2023-01-31 Perceive Corporation Neural network inference circuit read controller with multiple operational modes
US11586910B1 (en) 2018-04-20 2023-02-21 Perceive Corporation Write cache for neural network inference circuit
US20190332925A1 (en) * 2018-04-30 2019-10-31 International Business Machines Corporation Neural hardware accelerator for parallel and distributed tensor computations
US10887182B1 (en) * 2018-05-10 2021-01-05 Hrl Laboratories, Llc System and method for pairwise network alignment
CN110490295B (zh) * 2018-05-15 2022-04-05 华为技术有限公司 一种数据处理方法及处理装置
US11443176B2 (en) * 2018-05-17 2022-09-13 International Business Machines Corporation Acceleration of convolutional neural networks on analog arrays
US11449363B2 (en) * 2018-05-31 2022-09-20 Neuralmagic Inc. Systems and methods for improved neural network execution
US20190392287A1 (en) * 2018-06-22 2019-12-26 Samsung Electronics Co., Ltd. Neural processor
US11205125B2 (en) 2018-06-29 2021-12-21 International Business Machines Corporation Scheduler and simulator for an area-efficient, reconfigurable, energy-efficient, speed-efficient neural network
US20200019836A1 (en) * 2018-07-12 2020-01-16 International Business Machines Corporation Hierarchical parallelism in a network of distributed neural network cores
US10956315B2 (en) * 2018-07-24 2021-03-23 Micron Technology, Inc. Memory devices and methods which may facilitate tensor memory access
EP3732630A1 (de) * 2018-08-03 2020-11-04 Google LLC Verteilung von tensorberechnungen über rechenvorrichtungen
US20210295174A1 (en) * 2018-08-09 2021-09-23 Board Of Trustees Of Michigan State University Systems and methods for providing flexible, multi-capacity models for use of deep neural networks in mobile devices
CN110825530B (zh) * 2018-08-10 2022-12-23 昆仑芯(北京)科技有限公司 用于人工智能芯片的指令执行方法和装置
CN112732601A (zh) * 2018-08-28 2021-04-30 中科寒武纪科技股份有限公司 数据预处理方法、装置、计算机设备和存储介质
US11586417B2 (en) * 2018-09-28 2023-02-21 Qualcomm Incorporated Exploiting activation sparsity in deep neural networks
WO2020077565A1 (zh) * 2018-10-17 2020-04-23 北京比特大陆科技有限公司 数据处理方法、装置、电子设备及计算机可读存储介质
KR102637733B1 (ko) 2018-10-31 2024-02-19 삼성전자주식회사 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법
US11520561B1 (en) * 2018-11-28 2022-12-06 Amazon Technologies, Inc. Neural network accelerator with compact instruct set
US11263011B2 (en) 2018-11-28 2022-03-01 International Business Machines Corporation Compound instruction set architecture for a neural inference chip
US11604973B1 (en) 2018-12-05 2023-03-14 Perceive Corporation Replication of neural network layers
CN111291240B (zh) * 2018-12-06 2023-12-08 华为技术有限公司 处理数据的方法和数据处理装置
CN110033091B (zh) 2018-12-13 2020-09-01 阿里巴巴集团控股有限公司 一种基于模型进行预测的方法和装置
US20200202198A1 (en) * 2018-12-21 2020-06-25 Waymo Llc Neural network processor
CN109670158B (zh) * 2018-12-27 2023-09-29 北京及客科技有限公司 一种用于根据资讯数据生成文本内容的方法与设备
US20200234129A1 (en) * 2019-01-22 2020-07-23 Nvidia Corporation Techniques for removing masks from pruned neural networks
US11347297B1 (en) 2019-01-23 2022-05-31 Perceive Corporation Neural network inference circuit employing dynamic memory sleep
US11961007B2 (en) * 2019-02-06 2024-04-16 Qualcomm Incorporated Split network acceleration architecture
CN109902819B (zh) * 2019-02-12 2023-04-18 Oppo广东移动通信有限公司 神经网络计算方法、装置、移动终端及存储介质
CN111563587B (zh) * 2019-02-14 2022-12-09 上海寒武纪信息科技有限公司 一种神经网络模型的拆分方法及相关产品
US11748599B2 (en) * 2019-02-21 2023-09-05 Texas Instruments Incorporated Super-tiling in neural network processing to enable analytics at lower memory speed
EP3716154A1 (de) * 2019-03-27 2020-09-30 GrAl Matter Labs S.A.S. Neuromorphes verarbeitungssystem und verfahren zum betrieb davon
CN111831337B (zh) * 2019-04-19 2022-11-29 安徽寒武纪信息科技有限公司 数据同步方法及装置以及相关产品
CN112347186B (zh) * 2019-08-09 2023-02-28 安徽寒武纪信息科技有限公司 数据同步方法及装置以及相关产品
CN110046705B (zh) * 2019-04-15 2022-03-22 广州异构智能科技有限公司 用于卷积神经网络的装置
CN110059805B (zh) * 2019-04-15 2021-08-31 广州异构智能科技有限公司 用于二值阵列张量处理器的方法
CN110033086B (zh) * 2019-04-15 2022-03-22 广州异构智能科技有限公司 用于神经网络卷积运算的硬件加速器
CN110033085B (zh) * 2019-04-15 2021-08-31 广州异构智能科技有限公司 张量处理器
US11671111B2 (en) 2019-04-17 2023-06-06 Samsung Electronics Co., Ltd. Hardware channel-parallel data compression/decompression
US11880760B2 (en) 2019-05-01 2024-01-23 Samsung Electronics Co., Ltd. Mixed-precision NPU tile with depth-wise convolution
CN110147253B (zh) * 2019-05-16 2020-10-20 湖南毂梁微电子有限公司 一种基于延迟栅栏同步操作指令的多核处理器同步方法
CN112395002B (zh) * 2019-08-14 2023-04-18 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
US11941533B1 (en) 2019-05-21 2024-03-26 Perceive Corporation Compiler for performing zero-channel removal
KR102192325B1 (ko) * 2019-06-04 2020-12-28 (주)딥엑스 인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치
KR102351087B1 (ko) * 2019-06-04 2022-01-14 주식회사 딥엑스 인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치
US11354564B2 (en) * 2019-06-27 2022-06-07 Intel Corporation Tuning of loop orders in blocked dense basic linear algebra subroutines
US20210064987A1 (en) * 2019-09-03 2021-03-04 Nvidia Corporation Processor and system to convert tensor operations in machine learning
US20210081841A1 (en) * 2019-09-12 2021-03-18 Viani Systems, Inc. Visually creating and monitoring machine learning models
US20210103803A1 (en) * 2019-10-08 2021-04-08 Apple Inc. Multi-Mode Planar Engine For Neural Processor
US20210110243A1 (en) * 2019-10-10 2021-04-15 Hewlett Packard Enterprise Development Lp Deep learning accelerator system interface
JP7462140B2 (ja) 2019-10-29 2024-04-05 国立大学法人 熊本大学 ニューラルネットワーク回路及びニューラルネットワーク演算方法
KR20210093127A (ko) * 2020-01-17 2021-07-27 에스케이하이닉스 주식회사 Aim 장치
US11314674B2 (en) 2020-02-14 2022-04-26 Google Llc Direct memory access architecture with multi-level multi-striding
CN113391842A (zh) * 2020-03-13 2021-09-14 华为技术有限公司 一种单指令多数据simd指令的生成、处理方法以及相关设备
US11568249B2 (en) 2020-04-07 2023-01-31 International Business Machines Corporation Automated decision making for neural architecture search
CN111506520B (zh) 2020-07-01 2020-09-22 腾讯科技(深圳)有限公司 一种地址生成的方法、相关装置以及存储介质
US11954580B2 (en) 2020-09-16 2024-04-09 Meta Platforms, Inc. Spatial tiling of compute arrays with shared control
US20220092408A1 (en) * 2020-09-23 2022-03-24 Facebook, Inc. Neural network weight distribution using a tree direct-memory access (dma) bus
US11526965B2 (en) * 2020-09-28 2022-12-13 Robert Bosch Gmbh Multiplicative filter network
CN114444675A (zh) * 2020-10-30 2022-05-06 北京晶视智能科技有限公司 一种硬件加速器
KR20230152186A (ko) * 2020-11-02 2023-11-02 주식회사 딥엑스 인공신경망모델을 기초로 메인 메모리의 데이터 이동을 제어하는 메모리 컨트롤러
US11704562B1 (en) 2020-11-04 2023-07-18 Meta Platforms, Inc. Architecture for virtual instructions
US11709783B1 (en) 2020-11-11 2023-07-25 Meta Platforms, Inc. Tensor data distribution using grid direct-memory access (DMA) controller
US11922306B2 (en) 2020-12-28 2024-03-05 Meta Platforms, Inc. Tensor controller architecture
US11790611B2 (en) 2020-12-30 2023-10-17 Meta Platforms, Inc. Visual editor for designing augmented-reality effects that utilize voice recognition
TW202230229A (zh) * 2021-01-21 2022-08-01 創惟科技股份有限公司 基於卷積神經網路的運算電路、資料處理方法及電腦可讀取儲存媒體
US11269632B1 (en) 2021-06-17 2022-03-08 International Business Machines Corporation Data conversion to/from selected data type with implied rounding mode
US11693692B2 (en) 2021-06-17 2023-07-04 International Business Machines Corporation Program event recording storage alteration processing for a neural network accelerator instruction
US11797270B2 (en) 2021-06-17 2023-10-24 International Business Machines Corporation Single function to perform multiple operations with distinct operation parameter validation
US11669331B2 (en) 2021-06-17 2023-06-06 International Business Machines Corporation Neural network processing assist instruction
US11675592B2 (en) 2021-06-17 2023-06-13 International Business Machines Corporation Instruction to query for model-dependent information
US11734013B2 (en) 2021-06-17 2023-08-22 International Business Machines Corporation Exception summary for invalid values detected during instruction execution
US11915001B1 (en) * 2022-12-26 2024-02-27 Rebellions Inc. Neural processor and method for fetching instructions thereof

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS4874139A (de) 1971-12-29 1973-10-05
JPS5364439A (en) 1976-11-20 1978-06-08 Agency Of Ind Science & Technol Linear coversion system
JPS58134357A (ja) * 1982-02-03 1983-08-10 Hitachi Ltd ベクトルプロセッサ
US5138695A (en) * 1989-10-10 1992-08-11 Hnc, Inc. Systolic array image processing system
US5325464A (en) * 1990-05-22 1994-06-28 International Business Machines Corporation Pyramid learning architecture neurocomputer
WO1991019267A1 (en) 1990-06-06 1991-12-12 Hughes Aircraft Company Neural network processor
AU658066B2 (en) 1992-09-10 1995-03-30 Deere & Company Neural network based control system
US6243734B1 (en) 1998-10-30 2001-06-05 Intel Corporation Computer product and method for sparse matrices
JP2001117900A (ja) 1999-10-19 2001-04-27 Fuji Xerox Co Ltd ニューラルネットワーク演算装置
US20020044695A1 (en) 2000-05-05 2002-04-18 Bostrom Alistair K. Method for wavelet-based compression of video images
JP2003244190A (ja) * 2002-02-19 2003-08-29 Matsushita Electric Ind Co Ltd データフロー制御スイッチ用プロセッサ及びデータフロー制御スイッチ
US7016529B2 (en) 2002-03-15 2006-03-21 Microsoft Corporation System and method facilitating pattern recognition
US7493498B1 (en) 2002-03-27 2009-02-17 Advanced Micro Devices, Inc. Input/output permission bitmaps for compartmentalized security
US7426501B2 (en) 2003-07-18 2008-09-16 Knowntech, Llc Nanotechnology neural network methods and systems
US7818729B1 (en) 2003-09-15 2010-10-19 Thomas Plum Automated safe secure techniques for eliminating undefined behavior in computer software
EP1709572A2 (de) * 2004-01-13 2006-10-11 New York University Verfahren, system, speichermedium und datenstruktur zur bilderkennung unter verwendung einer multilinearen unabhängigen komponentenanalyse
CN101441441B (zh) 2007-11-21 2010-06-30 新乡市起重机厂有限公司 起重机智能防摇控制系统的设计方法
JP4513865B2 (ja) * 2008-01-25 2010-07-28 セイコーエプソン株式会社 並列演算装置および並列演算方法
EP2283578A1 (de) * 2008-05-21 2011-02-16 Nxp B.V. Datenhandhabungssystem mit speicherbänken und datenneuanordnung
US8321652B2 (en) 2008-08-01 2012-11-27 Infineon Technologies Ag Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks
EP2290563B1 (de) 2009-08-28 2017-12-13 Accenture Global Services Limited Inhaltszugriff in einem Netzwerk
US8595467B2 (en) 2009-12-29 2013-11-26 International Business Machines Corporation Floating point collect and operate
US8457767B2 (en) 2010-12-31 2013-06-04 Brad Radl System and method for real-time industrial process modeling
US8977629B2 (en) 2011-05-24 2015-03-10 Ebay Inc. Image-based popularity prediction
US8812414B2 (en) 2011-05-31 2014-08-19 International Business Machines Corporation Low-power event-driven neural computing architecture in neural networks
US8909576B2 (en) 2011-09-16 2014-12-09 International Business Machines Corporation Neuromorphic event-driven neural computing architecture in a scalable neural network
US9165243B2 (en) * 2012-02-15 2015-10-20 Microsoft Technology Licensing, Llc Tensor deep stacked neural network
US9292787B2 (en) * 2012-08-29 2016-03-22 Microsoft Technology Licensing, Llc Computer-implemented deep tensor neural network
US9201828B2 (en) 2012-10-23 2015-12-01 Analog Devices, Inc. Memory interconnect network architecture for vector processor
US9921832B2 (en) 2012-12-28 2018-03-20 Intel Corporation Instruction to reduce elements in a vector register with strided access pattern
CN104463209B (zh) 2014-12-08 2017-05-24 福建坤华仪自动化仪器仪表有限公司 一种基于bp神经网络的pcb板上数字代码识别方法
US10013652B2 (en) 2015-04-29 2018-07-03 Nuance Communications, Inc. Fast deep neural network feature transformation via optimized memory bandwidth utilization
US10489703B2 (en) 2015-05-20 2019-11-26 Nec Corporation Memory efficiency for convolutional neural networks operating on graphics processing units
US20160358069A1 (en) * 2015-06-03 2016-12-08 Samsung Electronics Co., Ltd. Neural network suppression
US10366050B2 (en) * 2015-10-08 2019-07-30 Via Alliance Semiconductor Co., Ltd. Multi-operation neural network unit
US10380479B2 (en) * 2015-10-08 2019-08-13 International Business Machines Corporation Acceleration of convolutional neural network training using stochastic perforation
JP6750203B2 (ja) * 2015-10-20 2020-09-02 富士通株式会社 畳み込みニューラルネットワークの演算方法及び演算プログラム、情報処理装置
US9904874B2 (en) * 2015-11-05 2018-02-27 Microsoft Technology Licensing, Llc Hardware-efficient deep convolutional neural networks
US9875104B2 (en) 2016-02-03 2018-01-23 Google Llc Accessing data in multi-dimensional tensors
US10552119B2 (en) * 2016-04-29 2020-02-04 Intel Corporation Dynamic management of numerical representation in a distributed matrix processor architecture
US10817802B2 (en) * 2016-05-07 2020-10-27 Intel Corporation Apparatus for hardware accelerated machine learning
CN106023065B (zh) * 2016-05-13 2019-02-19 中国矿业大学 一种基于深度卷积神经网络的张量型高光谱图像光谱-空间降维方法
CN106127297B (zh) * 2016-06-02 2019-07-12 中国科学院自动化研究所 基于张量分解的深度卷积神经网络的加速与压缩方法
US10175980B2 (en) 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US10360163B2 (en) 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
US9959498B1 (en) 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
US10733505B2 (en) 2016-11-10 2020-08-04 Google Llc Performing kernel striding in hardware
US10037490B2 (en) 2016-12-13 2018-07-31 Google Llc Performing average pooling in hardware
CN106529511B (zh) * 2016-12-13 2019-12-10 北京旷视科技有限公司 图像结构化方法及装置
US20180189675A1 (en) 2016-12-31 2018-07-05 Intel Corporation Hardware accelerator architecture and template for web-scale k-means clustering
US11164071B2 (en) 2017-04-18 2021-11-02 Samsung Electronics Co., Ltd. Method and apparatus for reducing computational complexity of convolutional neural networks
US10572409B1 (en) 2018-05-10 2020-02-25 Xilinx, Inc. Sparse matrix processing circuitry

Also Published As

Publication number Publication date
US20180121786A1 (en) 2018-05-03
DE202017105403U1 (de) 2017-12-06
JP7158543B2 (ja) 2022-10-21
JP2021184276A (ja) 2021-12-02
EP4235509A2 (de) 2023-08-30
KR20230058539A (ko) 2023-05-03
KR102525080B1 (ko) 2023-04-24
GB201715031D0 (en) 2017-11-01
CN108009627A (zh) 2018-05-08
JP6921951B2 (ja) 2021-08-18
US20220318594A1 (en) 2022-10-06
US9836691B1 (en) 2017-12-05
WO2018080628A1 (en) 2018-05-03
JP2022188245A (ja) 2022-12-20
US11379707B2 (en) 2022-07-05
EP3532996A1 (de) 2019-09-04
US20180197068A1 (en) 2018-07-12
GB2558980A (en) 2018-07-25
KR20220048043A (ko) 2022-04-19
JP2019533868A (ja) 2019-11-21
SG11201903631XA (en) 2019-05-30
HK1254701A1 (zh) 2019-07-26
US9959498B1 (en) 2018-05-01
KR102385349B1 (ko) 2022-04-11
EP4235509A3 (de) 2023-09-20
KR20190068616A (ko) 2019-06-18

Similar Documents

Publication Publication Date Title
DE102017120588A1 (de) Befehlssatzarchitektur für neuronale Netze
DE202018104609U1 (de) Neuronalnetzbeschleuniger mit Parametern, die sich auf einem Chip befinden
DE102020118004A1 (de) Verfahren und vorrichtungen zum kachelförmigen durchlaufen eines tensors für faltungsoperationen
DE102008034519B4 (de) Aufgeteilte Datenstruktur, und Verfahren zum Laden einer Partikel-basierten Simulation unter Verwendung der aufgeteilten Datenstruktur in GPU, usw.
DE102017121825A1 (de) Rechenkachel für neuronale Netze
DE102018103598A1 (de) Permutieren in einem Matrix-Vektor-Prozessor
DE112016002292T5 (de) Stapel-verarbeitung in einem neuronalen netzwerkprozessor
DE112016002296T5 (de) Vektor-recheneinheit in einem neuronalen netzwerkprozessor
DE112016002298T5 (de) Vorabruf von gewichten zur verwendung in einem neuronalen netzwerkprozessor
DE112019002981T5 (de) Parallelberechnungsarchitektur mit rekonfigurierbarer kernebenen- und vektorebenen-parallelität
DE202016107436U1 (de) Neuronaler Netzwerkprozessor
DE202016107446U1 (de) Rotation von Daten für Berechnungen in neuronalen Netzwerken
DE102012216029A1 (de) Ein skalierbares anpassungsfähiges map-reduce-rahmenwerk mit verteilten daten
DE102009038454A1 (de) System und Verfahren zum Reduzieren einer Ausführungsdivergenz in Parallelverarbeitungsarchitekturen
DE102013020614A1 (de) Mit Mehrfachauflösung konsistente Rastereinteilung
DE202008018183U1 (de) Computerprogrammprodukt zum Aufbau einer Datenstruktur, die bei einer nächste-Teilchen- Suche verwendet wird, Speichermedium mit dem gespeicherten Proramm und ein solches Speichermedium aufweisendes Computersystem
DE102013020968A1 (de) Technik zum Zugreifen auf einen inhaltsadressierbaren Speicher
DE102017213160B4 (de) Kompilierung für knotenvorrichtungs-GPU-basierte Parallelverarbeitung
DE112019005048T5 (de) Hyperparameteroptimierungsverfahren, -vorrichtung und -programm
DE102010028364A1 (de) System, Verfahren und Computerprogrammprodukt zum Zerlegen einer Stichprobenentnahme-Aufgabe in eine Mehrzahl von Aufträgen
DE112020001774T5 (de) Datensatzabhängiges niedrigrang-zerlegen von neuronalen netzwerken
DE102013019333A1 (de) Registerzuweisung für als cluster vorliegende mehrebenen-registerdaten
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
DE112021004537T5 (de) Speicherorientierter beschleuniger für neuronale netze für bereitstellbare inferenzsysteme
DE102014225039A1 (de) Verfahren und Vorrichtung zum Bereitstellen von spärlichen Gauß-Prozess-Modellen zur Berechnung in einem Motorsteuergerät

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D.STAATES DELAWARE), MOUNT, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R016 Response to examination communication