DE112020004277T5 - Auf maschinellem Lernen basierendes Architektur-Suchverfahren für ein neuronales Netzwerk - Google Patents

Auf maschinellem Lernen basierendes Architektur-Suchverfahren für ein neuronales Netzwerk Download PDF

Info

Publication number
DE112020004277T5
DE112020004277T5 DE112020004277.4T DE112020004277T DE112020004277T5 DE 112020004277 T5 DE112020004277 T5 DE 112020004277T5 DE 112020004277 T DE112020004277 T DE 112020004277T DE 112020004277 T5 DE112020004277 T5 DE 112020004277T5
Authority
DE
Germany
Prior art keywords
neural network
memory
processor
training
data
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
DE112020004277.4T
Other languages
English (en)
Inventor
Arash Vahdat
Arun Mohanray Mallya
Ming-Yu Liu
Jan Kautz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE112020004277T5 publication Critical patent/DE112020004277T5/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
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • 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
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B13/00Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion
    • G05B13/02Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric
    • G05B13/0265Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric the criterion being a learning criterion
    • G05B13/027Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric the criterion being a learning criterion using neural networks only
    • 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/047Probabilistic or stochastic networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)

Abstract

In mindestens einem Ausführungsbeispiel werden eine Suche nach differenzierbaren neuronalen Architekturen und Verstärkungslernen in einem Framework kombiniert, um Netzwerkarchitekturen mit gewünschten Eigenschaften wie hoher Genauigkeit, geringer Latenz oder beidem zu entdecken. In mindestens einem Ausführungsbeispiel verhindert eine auf Generalisierungsfehlern basierende Zielfunktion für die Suche die Auswahl von Architekturen, die zur Überanpassung neigen.

Description

  • Querverweis auf verwandte Anmeldungen
  • Diese Anmeldung beansprucht Priorität für die am 10. September 2019 eingereichte US-Patentanmeldung Nr. 16/566,797 mit dem Titel „A Machine-learning-based Architecture Search Method for a Neural Network“, deren gesamter Inhalt hier durch Bezugnahme in vollem Umfang und für alle Zwecke aufgenommen wird.
  • Gebiet
  • Mindestens ein Ausführungsbeispiel bezieht sich auf Verarbeitungsressourcen, die für die Suche nach einer Netzwerkarchitektur verwendet werden. Zum Beispiel bezieht sich mindestens ein Ausführungsbeispiel auf Prozessoren oder Rechensysteme, die zum Erlernen einer Netzwerkarchitektur für ein neuronales Netzwerk verwendet werden.
  • Hintergrund
  • Neuronale Netzwerke sind ein wichtiger Entwicklungsbereich der Informatik und nützlich bei der Lösung vieler schwieriger technischer Probleme wie Bilderkennung, Muster-Matching, Spracherkennung und Maschinensteuerung. Die Implementierung eines neuronalen Netzwerks beinhaltet im Allgemeinen die Ausführung eines Netzwerks gemäß einer Reihe von Architekturparametern und das anschließende Trainieren eines Netzwerks, um ein bestimmtes Ergebnis unter Verwenden von Trainingsdaten oder eines berechneten Belohnungswerts zu erzielen. Das Bestimmen einer geeigneten Architektur des neuronalen Netzwerks ist eine wichtige Voraussetzung, da eine falsche Architektur dazu führen kann, dass das System übergeneralisiert, überanpasst oder sogar überhaupt nicht zu einer Lösung konvergiert. Das Bestimmen von brauchbaren Architekturparametern kann eine besondere Herausforderung darstellen, da die Techniken zur Architektursuche oft auf Versuch und Irrtum basieren. Daher ist die Entwicklung automatisierter Verfahren zur Suche nach Netzarchitekturen ein wichtiges Problem.
  • Figurenliste
  • Verschiedene Techniken werden unter Bezugnahme auf die Zeichnungen beschrieben, in denen Folgendes gezeigt wird:
    • 1 zeigt ein Beispiel für eine Zellstruktur mit gepaarter Eingabe, gemäß einem Ausführungsbeispiel;
    • 2 zeigt ein Beispiel für eine Normalzelle und eine Reduzierzelle, gemäß einem Ausführungsbeispiel;
    • 3 zeigt ein Beispiel für einen Validierungsverlust bei der Suche, gemäß einem Ausführungsbeispiel;
    • 4 zeigt Ergebnisse von Ablationsversuchen, gemäß einem Ausführungsbeispiel;
    • 5 zeigt ein Beispiel für eine latenzbasierte Architektursuche, gemäß einem Ausführungsbeispiel;
    • 6 zeigt ein Beispiel für eine Normal- und Reduzierzelle, gemäß einem Ausführungsbeispiel;
    • 7 zeigt ein Beispiel von Netzwerkarchitektur-Suchergebnissen, gemäß einem Ausführungsbeispiel;
    • 8 zeigt ein Beispiel für Suchergebnisse der Netzwerkarchitektur in einer mobilen Umgebung, gemäß einem Ausführungsbeispiel;
    • 9 zeigt ein Beispiel von ImageNet-Ergebnissen, die mit Architekturen erhalten wurden, die gemäß einem Ausführungsbeispiel unter Verwenden verschiedener operativer Suchräume und Schichtenkonnektivität gesucht wurden;
    • 10 zeigt ein Beispiel für die Ergebnisse eines Ablationsexperiments, gemäß einem Ausführungsbeispiel;
    • 11 zeigt ein Beispiel für eine Beziehung zwischen GPU-Speicherverwendung und Zeit, die während der Suche verwendet wird, gemäß einem Ausführungsbeispiel;
    • 12 zeigt ein Beispiel für die ImageNet-Leistung der besten Modelle, gemittelt über fünf Evaluierungsläufe, gemäß einem Ausführungsbeispiel;
    • 13 zeigt ein Beispiel von Zellmodellen, die in ImageNet entdeckt wurden, gemäß einem Ausführungsbeispiel;
    • 14 zeigt ein Beispiel für Zellmodelle, die in CIFAR-10 (einem Testdatensatz für maschinelles Lernen) entdeckt wurden, gemäß einem Ausführungsbeispiel;
    • 15 zeigt ein Beispiel für zufällig vorgeschlagene Zellmodelle in ImageNet, gemäß einem Ausführungsbeispiel;
    • 16 zeigt ein Beispiel für einen Prozess, der als Ergebnis der Ausführung durch ein Computersystem eine neuronale Netzwerkarchitektur für ein bestimmtes Problem identifiziert, gemäß einem Ausführungsbeispiel;
    • 17A zeigt eine Inferenz- und/oder Trainingslogik, gemäß mindestens einem Ausführungsbeispiel;
    • 17B zeigt eine Inferenz- und/oder Trainingslogik, gemäß mindestens einem Ausführungsbeispiel;
    • 18 zeigt das Trainieren und den Einsatz eines neuronalen Netzwerks, gemäß mindestens einem Ausführungsbeispiel;
    • 19 zeigt ein beispielhaftes Datenzentrumssystem, gemäß mindestens einem Ausführungsbeispiel;
    • 20A zeigt ein Beispiel eines autonomen Fahrzeugs, gemäß mindestens einem Ausführungsbeispiel;
    • 20B zeigt ein Beispiel für Kamerapositionen und Sichtfelder für das autonome Fahrzeug von 20A, gemäß mindestens einem Ausführungsbeispiel;
    • 20C ist ein Blockdiagramm, das eine beispielhafte Systemarchitektur für das autonome Fahrzeug von 20A zeigt, gemäß mindestens einem Ausführungsbeispiel;
    • 20D ist ein Diagramm, das ein System zur Kommunikation zwischen Cloudbasierten Servern und dem autonomen Fahrzeug von 20A zeigt, gemäß mindestens einem Ausführungsbeispiel;
    • 21 ist ein Blockdiagramm, das ein Computersystem zeigt, gemäß mindestens einem Ausführungsbeispiel;
    • 22 ist ein Blockdiagramm, das ein Computersystem zeigt, gemäß mindestens einem Ausführungsbeispiel;
    • 23 zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel;
    • 24 zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel;
    • 25A zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel;
    • 25B zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel;
    • 25C zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel;
    • 25D zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel;
    • 25E und 25F zeigen ein gemeinsam genutztes Programmiermodell, gemäß mindestens einem Ausführungsbeispiel;
    • 26 zeigt exemplarische integrierte Schaltungen und assoziierte Grafikprozessoren, gemäß mindestens einem Ausführungsbeispiel;
    • 27A und 27B zeigen exemplarische integrierte Schaltungen und assoziierte Grafikprozessoren, gemäß mindestens einem Ausführungsbeispiel;
    • 28A und 28B zeigen zusätzliche beispielhafte Grafikprozessorlogik, gemäß mindestens einem Ausführungsbeispiel;
    • 29 zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel;
    • 30A zeigt einen Parallelprozessor, gemäß mindestens einem Ausführungsbeispiel;
    • 30B zeigt eine Partitionseinheit, gemäß mindestens einem Ausführungsbeispiel;
    • 30C zeigt einen Verarbeitungscluster, gemäß mindestens einem Ausführungsbeispiel;
    • 30D zeigt einen Grafik-Multiprozessor, gemäß mindestens einem Ausführungsbeispiel;
    • 31 zeigt ein Multi-Grafikverarbeitungssystem (GPU), gemäß mindestens einem Ausführungsbeispiel;
    • 32 zeigt einen Grafikprozessor, gemäß mindestens einem Ausführungsbeispiel;
    • 33 ist ein Blockdiagramm, das eine Prozessor-Mikroarchitektur für einen Prozessor zeigt, gemäß mindestens einem Ausführungsbeispiel;
    • 34 zeigt einen Deep Leaming-Anwendungsprozessor, gemäß mindestens einem Ausführungsbeispiel;
    • 35 ist ein Blockdiagramm, das einen beispielhaften neuromorphen Prozessor zeigt, gemäß mindestens einem Ausführungsbeispiel;
    • 36 zeigt mindestens Teile eines Grafikprozessors, gemäß mindestens einem Ausführungsbeispiel;
    • 37 zeigt mindestens Teile eines Grafikprozessors, gemäß mindestens einem Ausführungsbeispiel;
    • 38 zeigt mindestens Teile eines Grafikprozessors, gemäß einem oder mehreren Ausführungsbeispielen;
    • 39 ist ein Blockdiagramm einer Grafikverarbeitungs-Engine eines Grafikprozessors, gemäß mindestens einem Ausführungsbeispiel.
    • 40 ist ein Blockdiagramm von mindestens Teilen eines Grafikprozessorkerns, gemäß mindestens einem Ausführungsbeispiel;
    • 41A und 41B zeigen eine Thread-Ausführungslogik, die ein Array von Verarbeitungselementen eines Grafikprozessorkems umfasst, gemäß mindestens einem Ausführungsbeispiel;
    • 42 zeigt eine Parallelverarbeitungseinheit („PPU“), gemäß mindestens einem Ausführungsbeispiel;
    • 43 zeigt einen allgemeinen Verarbeitungscluster („GPC“), gemäß mindestens einem Ausführungsbeispiel;
    • 44 zeigt eine Speicherpartitionseinheit einer Parallelverarbeitungseinheit („PPU“), gemäß mindestens einem Ausführungsbeispiel; und
    • 45 zeigt einen Streaming-Multiprozessor, gemäß mindestens einem Ausführungsbeispiel.
  • Detaillierte Beschreibung
  • In mindestens einem Ausführungsbeispiel wird ein Verfahren zur Suche nach Netzwerkarchitekturen durchgeführt, das sowohl differenzierbare als auch nicht differenzierbare Zielfunktionen unterstützt. Die Entdeckung einer neuen Architektur, die ein bestimmtes Kriterium erfüllt, beinhaltet oft einen langwierigen und kostspieligen manuellen Prozess der Versuch-und-Irrtum-Suche in einem exponentiell großen Raum von Hyperparametem. Zum Beispiel ist die Entdeckung einer neuen Architektur wie Inception, ResNet und DenseNet oft mit einem langwierigen und kostspieligen Prozess der Versuch-und-Irrtum-Suche in einem exponentiell großen Raum von Hyperparametem verbunden. In mindestens einem Ausführungsbeispiel entdeckt ein automatisierter Prozess für neuronale Architektursuche („NAS“) neue Netzwerke und kann leicht Architekturen für neue Problembereiche und Kriterien finden.
  • In mindestens einem Ausführungsbeispiel zeigen differenzierbare neuronale Architektursuchverfahren („DNAS“) vielversprechende Ergebnisse und reduzieren gleichzeitig die Suchkosten. In mindestens einem Ausführungsbeispiel gehen diese Ansätze jedoch davon aus, dass ein Ziel in Bezug auf die Architekturparameter differenzierbar ist. In mindestens einem Ausführungsbeispiel geht ein NAS-Ansatz davon aus, dass ein Ziel in Bezug auf die Architekturparameter differenzierbar ist, und stützt sich bei der Suche auf eine kontinuierliche Relaxation (engl. relaxation, dt. auch Verringerung) diskreter Variablen, was zu zusätzlichen Vorgaben führen kann. In mindestens einem Ausführungsbeispiel besteht ein Ziel der neuronalen Architektursuche darin, einen Prozess zur Entdeckung neuer Netzwerke zu automatisieren, so dass er für neue Problembereiche und Kriterien einfach durchgeführt werden kann.
  • In mindestens einem Ausführungsbeispiel umfassen die hierin beschriebenen Techniken ein generisches Framework, das eine Lücke zwischen mehreren früheren Ansätzen schließt. In mindestens einem Ausführungsbeispiel können die hierin beschriebenen Techniken verwendet werden, um eine Architektur unter Verwenden einer nicht differenzierbaren Zielfunktion zu suchen, was mit differenzierbaren Architektur-Suchmodellen nicht möglich war. In mindestens einem Ausführungsbeispiel basieren die RL-basierten Ansätze auf nicht differenzierbaren Zielfunktionen; die hier beschriebenen Techniken liefern jedoch Gradientenschätzer, die im Vergleich zu anderen RL-basierten Ansätzen eine geringere Varianz aufweisen. In mindestens einem Ausführungsbeispiel tauschen die hier beschriebenen Techniken die Gradientenvarianz gegen die Effizienz ein, ohne eine Vorgabe einzuführen. In mindestens einem Ausführungsbeispiel verwenden die hierin beschriebenen Techniken eine Zielfunktion für die Architektursuche basierend auf einem Generalisierungsfehler (engl. generalization error). In mindestens einem Ausführungsbeispiel ist diese Zielfunktion im Vergleich zu üblicherweise verwendeten auf Training/Validierung basierenden Zielfunktionen überlegen. In mindestens einem Ausführungsbeispiel können die hierin beschriebenen Techniken mit differenzierbaren und nicht differenzierbaren Funktionen suchen und erfordern keine genaue Approximation von nicht differenzierbaren Termen in einer Zielfunktion.
  • In mindestens einem Ausführungsbeispiel können die hierin beschriebenen Techniken für eine hardwarebewusste Architektursuche verwendet werden. In mindestens einem Ausführungsbeispiel besteht ein Ziel dieser Techniken darin, eine neuronale Architektur für eine bestimmte Aufgabe so zu designen, dass sie eine verbesserte Genauigkeit erreicht und gleichzeitig ausreichend schnell läuft. In mindestens einem Ausführungsbeispiel kann der Benutzer unter Verwenden der hierin beschriebenen Techniken Netzwerkarchitekturen erstellen, die an eine bestimmte Hardware ausgebildet sind. In mindestens einem Ausführungsbeispiel stellen die hierin beschriebenen Techniken ein einheitliches Framework für NAS („UNAS“) bereit, das eine Lücke zwischen differenzierbarer und RL-basierter Architektursuche überbrückt.
  • In mindestens einem Ausführungsbeispiel zielt die Suche nach neuronalen Netzwerken darauf ab, Netzwerkarchitekturen mit gewünschten Eigenschaften wie hoher Genauigkeit, geringer Latenz oder beidem zu finden. In mindestens einem Ausführungsbeispiel zeigen Techniken, die auf differenzierbarer neuronaler Architektursuche basieren, vielversprechende Ergebnisse, während die Suchkosten um mehrere Größenordnungen niedriger sind als bei NAS auf der Basis von Verstärkungslemen. In mindestens einem Ausführungsbeispiel ermöglichen die hier beschriebenen Techniken NAS mit unterschiedlichen Zielfunktionen, die sowohl differenzierbare Funktionen wie den Kreuzentropie-Klassifikationsverlust als auch nicht differenzierbare Funktionen wie die Netzwerklatenz umfassen. In mindestens einem Ausführungsbeispiel ermöglichen die hier beschriebenen Techniken auch einen Kompromiss zwischen dem Rauschen des Suchgradienten und der Sucheffizienz (in Bezug auf GPU-Speicher und Stunden). In mindestens einem Ausführungsbeispiel bieten die hier beschriebenen Techniken eine neue Zielfunktion für die Suche basierend auf dem Generalisierungsfehler, die die Auswahl von Architekturen verhindert, die zu einer Überanpassung neigen. In mindestens einem Ausführungsbeispiel zeigen umfangreiche Experimente unter Verwenden der CIFAR-10- und ImageNet-Datensätze, dass UNAS bei ImageNet im Vergleich zu Architekturen, die in ähnlichen Suchräumen gesucht werden, die höchste Genauigkeit erhält.
  • In Anbetracht dieser Offenbarung können bestimmte Ausführungsbeispiele in der Lage sein, bestimmte Vorteile zu erzielen, die einige oder alle der folgenden umfassen: (1) Ermöglichung der Suche nach Architekturen unter Verwenden sowohl differenzierbarer Zielfunktionen (z. B. Cross-Entropie-Verlust) als auch nicht differenzierbarer Funktionen (z. B. Netzwerklatenz); (2) Ausgleich von Gradientenrauschen gegen Sucheffizienz (in Bezug auf GPU-Speicher und -Stunden) ohne Einführung einer zusätzlichen Vorgabe; und (3) eine neue Zielfunktion basierend auf einem Generalisierungsfehler, der empirisch gezeigt hat, dass er Architekturen findet, die weniger anfällig für Überanpassung sind.
  • In mindestens einem Ausführungsbeispiel der differenzierbaren Architektursuche wird eine Zelle durch einen gerichteten azyklischen Graphen repräsentiert, wobei jeder Knoten in einem Graphen eine verborgene Darstellung (wie Merkmalskarten in CNNs) bezeichnet und jede gerichtete Kante eine Operation darstellt, die einen Zustand eines Eingabeknotens transformiert. In mindestens einem Ausführungsbeispiel ist ein n-ter Knoten xn initial mit seinen Vorgängern verbunden (d.h. x<n) und sein Inhalt wird berechnet durch xn = Σm<n Om,n (xm), wobei Om,n eine auf xm angewandte Operation ist. In mindestens einem Ausführungsbeispiel besteht dann ein Ziel der Architektursuche darin, Om,n für jede Kante m, n zu finden. In mindestens einem Ausführungsbeispiel wird eine Menge aller möglichen Operationen, die auf eine Kante e : = (m, n) angewendet werden können, unter Verwenden von { O e ( 1 ) , O e ( 2 ) , , O e ( K ) } ,
    Figure DE112020004277T5_0001
    wobei K eine Anzahl von Operationen ist, kann dieses diskrete Zuordnungsproblem als eine gemischte Operation formuliert werden, die mit O e ( x m ) = k = 1 K z e ( k ) O e ( k ) ( x m )
    Figure DE112020004277T5_0002
    bezeichnet wird, wobei z e = { z e ( 1 ) , z e ( 2 ) , , z e ( K ) }
    Figure DE112020004277T5_0003
    { z e ( 1 ) , z e ( 2 ) , z e ( K ) }
    Figure DE112020004277T5_0004
    ein One-Hot-Binärvektor ist (d.h. z e ( k ) { 0,1 }
    Figure DE112020004277T5_0005
    ), wobei eine einzelne Eins eine ausgewählte Operation anzeigt. In mindestens einem Ausführungsbeispiel wird davon ausgegangen, dass ein Satz von Operationen auch eine Null-Operation umfasst, die das Weglassen von Kanten in einer Zelle und damit auch das Lernen von Konnektivität ermöglicht.
  • In mindestens einem Ausführungsbeispiel wird eine Zellarchitektur bestimmt, die eine Menge aller Operationszuweisungen für alle Kanten, bezeichnet durch z = {ze}, enthält. In mindestens einem Ausführungsbeispiel besteht daher ein Ziel der Architektursuche darin, eine Verteilung über die Architekturparameter z zu finden, die den erwarteten Verlust E p ϕ ( z ) [ L ( z ) ]
    Figure DE112020004277T5_0006
    minimiert, wobei pϕ eine Φ-parametrisierte Verteilung über z ist und L(z) eine Verlustfunktion ist, die die Leistung der durch z spezifizierten Architektur unter Verwenden eines Leistungsmaßes wie dem Klassifikationsverlust misst.
  • In mindestens einem Ausführungsbeispiel ist die Architekturverteilung eine faktorielle Verteilung in der Form pϕ (z) = Πe pϕe (ze), wobei pϕe (ze) eine ϕe-parametrisierte kategoriale Verteilung ist, die über einen Hot-Vektor ze definiert ist. In mindestens einem Ausführungsbeispiel schlägt SNAS vor, die Gumbel-Softmax-Relaxierung zur Optimierung des erwarteten Verlusts zu verwenden, und in diesem Fall wird die kategoriale Verteilung pϕ(z) durch eine Gumbel-Softmax-Verteilung pϕ(ζ) ersetzt, wobei ζ eine kontinuierliche Relaxation des Architekturparameters (z) bezeichnet. In mindestens einem Ausführungsbeispiel geht SNAS davon aus, dass der Verlust
    Figure DE112020004277T5_0007
    (z) in Bezug auf z differenzierbar ist, und verwendet den Trick der Neuparametrisierung, um den Erwartungswert des reduzierten Verlusts E p ϕ ( ζ ) [ L ( ζ ) ]
    Figure DE112020004277T5_0008
    zu minimieren.
  • In mindestens einem Ausführungsbeispiel wird ein allgemeines Framework zur Optimierung des erwarteten Verlusts E p ϕ ( z ) [ L ( z ) ]
    Figure DE112020004277T5_0009
    bereitgestellt. In mindestens einem Ausführungsbeispiel wird eine Formulierung der Verlustfunktion L vorgestellt.
  • In mindestens einem Ausführungsbeispiel ist ein generischer Ansatz zur Optimierung des erwarteten Verlusts der REINFORCE-Gradientenschätzer ϕ E p ϕ ( z ) [ L ( z ) ] = E p ϕ ( z ) [ L ( z ) ϕ log p ϕ ( z ) ]
    Figure DE112020004277T5_0010
    der sogar auf eine Verlustfunktion L(z) angewendet werden kann, die nicht in Bezug auf z differenzierbar ist. In mindestens einem Ausführungsbeispiel kann dieser Schätzer jedoch unter einer hohen Varianz leiden, so dass eine große Anzahl trainierter Architektur-Samples erforderlich sein kann, um seine Varianz zu verringern, was ihn extrem rechenintensiv macht. In mindestens einem Ausführungsbeispiel kann der REINFORCE-Schätzer in Gl. 1 wie folgt umgeschrieben werden ϕ E p ϕ ( z ) [ L ( z ) ] = E p ϕ ( z ) [ ( L ( z ) c ( z ) ) ϕ log p ϕ ( z ) ] + ϕ E p ϕ ( z ) [ c ( z ) ]
    Figure DE112020004277T5_0011
    wobei c(z) eine Steuervariable ist. In mindestens einem Ausführungsbeispiel hat der Gradientenschätzer in Gl. 2 eine geringere Varianz als Gl. 1, wenn c(z) mit L(z) korreliert ist,und ϕ E p ϕ ( z ) [ c ( z ) ]
    Figure DE112020004277T5_0012
    einen Gradientenschätzer mit geringer Varianz hat. In mindestens einem Ausführungsbeispiel kann ohne Verlust der Allgemeingültigkeit angenommen werden, dass die Verlustfunktion in
    Figure DE112020004277T5_0013
    (z) =
    Figure DE112020004277T5_0014
    d(z) +
    Figure DE112020004277T5_0015
    n(z) zerlegt wird, wobei
    Figure DE112020004277T5_0016
    d(z) Terme enthält, die in Bezug auf z differenzierbar sind, und
    Figure DE112020004277T5_0017
    n(z) nicht differenzierbare Terme umfasst. In mindestens einem Ausführungsbeispiel wird eine Basislinienfunktion in Form von c(z) = cd(z) + cn(z) dargestellt, wobei cd(z) und cn(z) für
    Figure DE112020004277T5_0018
    d(z) bzw.
    Figure DE112020004277T5_0019
    n(z) stehen. In mindestens einem Ausführungsbeispiel wird eine Basislinie so designt, dass der Term ϕ E p ϕ ( z ) [ c ( z ) ]
    Figure DE112020004277T5_0020
    in Gl. 2 mit Hilfe eines Tricks zur Neuparametrisierung mit geringer Varianz approximiert werden kann.
  • In mindestens einem Ausführungsbeispiel wird eine Gradientenabschätzung für den differenzierbaren Verlust
    Figure DE112020004277T5_0021
    d vorgestellt. In mindestens einem Ausführungsbeispiel wird in Anlehnung an REBAR zur Konstruktion einer Steuervariablen für
    Figure DE112020004277T5_0022
    d eine stochastische kontinuierliche Relaxation rφ (ζ|z) verwendet, die Samples aus einer bedingten Gumbel-Softmax-Verteilung bei einem gegebenen Architektur-Sample z verwendet. In mindestens einem Ausführungsbeispiel kann ζ als eine glatte Architektur betrachtet werden, die basierend auf z definiert ist. In mindestens einem Ausführungsbeispiel ist sie hoch mit z korreliert (wie in REBAR). In mindestens einem Ausführungsbeispiel kann der Gradient in Gleichung 2 mit der Definition c d ( z ) : = E r ϕ ( ζ | z ) [ L d ( ζ ) ]
    Figure DE112020004277T5_0023
    wie folgt geschrieben werden: ϕ E p ϕ ( z ) [ L d ( z ) ] = E p ϕ ( z ) [ ( L d ( z ) c d ( z ) ) ϕ log p ϕ ( z ) ] ( i ) reinforce E p ϕ ( z ) [ ϕ c d ( z ) ] ( ii ) correction + ϕ E p ϕ ( z ) [ c ( z ) ] ( iii ) Gumbel Softmax
    Figure DE112020004277T5_0024
  • In mindestens einem Ausführungsbeispiel besteht der Gradientenschätzer in Gl. 3 aus drei Termen. In mindestens einem Ausführungsbeispiel ist (i) ein Verstärkungsterm, der unter Verwenden eines Monte-Carlo-Verfahrens durch Sampling von z ~ pΦ (z) und anschließendes Sampling von ζ ~ rφ (ζ|z) abgeschätzt wird. In mindestens einem Ausführungsbeispiel ist (ii) ein Korrekturterm aufgrund der Abhängigkeit von cd(z) von Φ. In mindestens einem Ausführungsbeispiel wird dieser Term approximiert, indem ein Umparametrisierungstrick für das bedingte Gumbel-Softmax rφ (ζ|z) verwendet wird. In mindestens einem Ausführungsbeispiel kann (iii) geschrieben werden als E p ϕ ( z ) [ c d ( z ) ] = E p ϕ ( z ) [ E r ϕ ( ζ | z ) [ L d ( ζ ) ] ] = E p ϕ ( ζ ) [ L d ( ζ ) ] ,
    Figure DE112020004277T5_0025
    der der Erwartungswert des Verlustes ist, der nach der Gumbel-Softmax-Verteilung pΦ (ζ) evaluiert wird. In mindestens einem Ausführungsbeispiel wird sein Gradient unter Verwenden eines Neuparametrisierungstricks mit geringer Varianz berechnet. In mindestens einem Ausführungsbeispiel werden in der Praxis zwei Evaluierungen von Funktionen zum Abschätzen des Gradienten in Gl. 3 verwendet, eine zur Berechnung von
    Figure DE112020004277T5_0026
    d(z) und eine für
    Figure DE112020004277T5_0027
    d(ζ). In mindestens einem Ausführungsbeispiel werden die Gradienten unter Verwenden einer automatischen Differenzierungsbibliothek berechnet.
  • In mindestens einem Ausführungsbeispiel vereinigt Gl. 3 die differenzierbare Architektursuche mit auf Richtlinien-Gradienten basierenden Verfahren. In mindestens einem Ausführungsbeispiel ist dieser Schätzer unverzerrt und verwendet die Gumbel-Softmax-Schätzung des differenzierbaren Verlusts zur Verringerung der Varianz einer Abschätzung. In mindestens einem Ausführungsbeispiel ist unter diesem Framework leicht zu erkennen, dass SNAS eine voreingenommene Abschätzung eines Richtlinien-Gradienten ist, da es nur (iii) für die Suche verwendet. In mindestens einem Ausführungsbeispiel basiert NAS jedoch auf einer konstanten Steuervariablen (cd(z) = C), was lediglich die Berechnung von (i) erfordert.
  • In mindestens einem Ausführungsbeispiel wird eine Gradientenabschätzung für nicht differenzierbare Verluste
    Figure DE112020004277T5_0028
    n vorgestellt. In mindestens einem Ausführungsbeispiel kann der Gradientenschätzer in Gl. 3 nicht auf den nichtdifferenzierbaren Verlust
    Figure DE112020004277T5_0029
    n (z) angewendet werden, da der Reparametrisierungstrick nur auf differenzierbare Funktionen anwendbar ist. In mindestens einem Ausführungsbeispiel wird für
    Figure DE112020004277T5_0030
    n (z) RELAX verwendet, das diese Einschränkung aufhebt, indem die Basisfunktion c n ( z ) : = E r ϕ ( ζ | z )
    Figure DE112020004277T5_0031
    definiert wird, wobei g(.) eine Surrogatfunktion (z. B. ein neuronales Netzwerk) ist, die so trainiert wird, dass sie mit
    Figure DE112020004277T5_0032
    n (z) korreliert. In mindestens einer Ausführungsform handelt es sich bei der Ersatzfunktion um ein neuronales Netzwerk, das einen nicht differenzierbaren Verlust, wie z. B. die Latenzzeit, abschätzt. In mindestens einem Ausführungsbeispiel erhält man einen Gradientenschätzer für
    Figure DE112020004277T5_0033
    n durch Ersetzen von cd in Gl. 3 durch cn. In mindestens einem Ausführungsbeispiel besteht jedoch ein Unterschied darin, dass hier ein Umparametrisierungstrick auf E r ϕ ( ζ | z ) [ g ( ζ ) ]
    Figure DE112020004277T5_0034
    angewendet wird in (ii) und in ähnlicher Weise auf E p ϕ ( ζ ) [ g ( ζ ) ]
    Figure DE112020004277T5_0035
    in (iii).
  • In mindestens einem Ausführungsbeispiel wird in RELAX g (ζ) trainiert, um eine Varianz eines Abschätzers zu minimieren. In mindestens einem Ausführungsbeispiel erfordert dies jedoch ein Backpropagating durch eine Gradientenfunktion, was langsam sein kann. In mindestens einem Ausführungsbeispiel trainiert ein Ausführungsbeispiel g durch Minimierung von |g(z) -
    Figure DE112020004277T5_0036
    n (z) | während der Architektursuche. In mindestens einem Ausführungsbeispiel entspricht dies im Falle der Latenz einem Trainieren von g zur Vorhersage der Latenz. In mindestens einem Ausführungsbeispiel zeigen Experimente an, dass ein einfaches, vollständig verbundenes Netz die Latenzzeit mit einer angemessenen Genauigkeit vorhersagen kann.
  • In mindestens einem Ausführungsbeispiel ist RELAX allgemeiner als REBAR, da es zur Minimierung der Erwartung der differenzierbaren Verlustfunktion
    Figure DE112020004277T5_0037
    d (z) verwendet werden kann. In mindestens einem Ausführungsbeispiel erfordert dies die Fähigkeit zur Approximation von
    Figure DE112020004277T5_0038
    d (z) unter Verwenden von g. In mindestens einem Ausführungsbeispiel zeigen vorläufige Experimente zur Verwendung von RELAX zur Minimierung des Klassifikationsverlustes als
    Figure DE112020004277T5_0039
    d (z) an, dass es sehr schwierig ist, den Klassifikationsverlust für ein Netzwerk durch ein anderes Netzwerk vorherzusagen.
  • In mindestens einem Ausführungsbeispiel wird ein zweistufiges Trainieren von Architekturparametern und Netzwerkparametern vorgeschlagen. In mindestens einem Ausführungsbeispiel werden bei der Architekturaktualisierung entweder der Trainingsverlust oder der Validierungsverlust bei den aktuellen Netzwerkparametern w verwendet, um die Architekturparameter zu aktualisieren, unter Verwenden von m i n ϕ E p ϕ ( z ) [ L t r a i n ( z , w ) ] o r m i n ϕ E p ϕ ( z ) [ L v a l ( z , w ) ] .
    Figure DE112020004277T5_0040
  • In mindestens einem Ausführungsbeispiel werden die Netzparameter w anhand von gegebenen Samples durch Minimierung des folgenden Ausdrucks aktualisiert: m i n ϕ E p ϕ ( z ) [ L t r a i n ( z , w ) ]
    Figure DE112020004277T5_0041
  • In mindestens einem Ausführungsbeispiel werden die Parameter ϕ und w iterativ durch einen einzigen Gradientenschritt in Gl. 5 und Gl. 6 aktualisiert. Es hat sich gezeigt, dass wir durch die gemeinsame Nutzung von Netzwerkparametern für alle Architekturinstanzen eine Beschleunigung der Suche um mehrere Größenordnungen erreichen. In mindestens einem Ausführungsbeispiel geht dies jedoch mit der Aktualisierung von Architekturparametern bei suboptimalem ω einher. In mindestens einem Ausführungsbeispiel bedeutet dies, dass die Entscheidung für eine Architektur ohne Berücksichtigung ihrer optimalen Leistung getroffen wird.
  • In mindestens einem Ausführungsbeispiel basiert eine Zielfunktion zur Überanpassung auf dem Generalisierungsfehler einer Architektur. In mindestens einem Ausführungsbeispiel liegt der Grundgedanke dahinter, dass eine ausgewählte Architektur nicht nur im Trainingssatz gut abschneiden sollte, sondern auch gleich gut auf Beispiele im Validierungssatz generalisieren sollte, selbst wenn die Netzwerkparameter noch nicht optimiert sind. In mindestens einem Ausführungsbeispiel wird dadurch verhindert, dass die Suche Architekturen entdeckt, die nicht gut verallgemeinern können. In mindestens einem Ausführungsbeispiel definieren wir die Zielfunktion für Φ als m i n ϕ L gen ( z , w ) = E p ϕ ( z ) [ L train ( z , w ) + λ | L val ( z , w ) L train ( z , w ) | ] ,
    Figure DE112020004277T5_0042
    wobei λ ein Skalar ist, der den Trainingsverlust und den Generalisierungsfehler ausgleicht. In mindestens einem Ausführungsbeispiel funktioniert λ = 0.5 oft gut in Experimenten. In mindestens einem Ausführungsbeispiel wird beim Trainieren zwischen der Aktualisierung von φ unter Verwenden von Gl. 7 und der Aktualisierung von ω unter Verwenden von Gl. 6 iteriert. In mindestens einem Ausführungsbeispiel wird bei jeder Parameteraktualisierung eine einfache Gradientenabstiegsaktualisierung durchgeführt.
  • In mindestens einem Ausführungsbeispiel besteht das Ziel darin, eine Architektur zu finden, die sowohl eine geringe Latenz als auch eine hohe Genauigkeit aufweist. In mindestens einem Ausführungsbeispiel kann die Latenz des durch z spezifizierten Netzes bei jeder Parameteraktualisierung gemessen werden. In mindestens einem Ausführungsbeispiel, das die Latenz des Netzwerks unter Verwenden von
    Figure DE112020004277T5_0043
    lat(z) repräsentiert, ergänzen wir die Zielfunktion in Gl. 7 mit E p ϕ ( z ) [ λ l a t L l a t ( z ) ] ,
    Figure DE112020004277T5_0044
    wobei λlat eine skalare Abwägung zwischen Architekturverlust und Latenzverlust ist. In mindestens einem Ausführungsbeispiel kann
    Figure DE112020004277T5_0045
    lat(z), obwohl es in Bezug auf z nicht differenzierbar ist, durch Verwendung einer Surrogatfunktion approximiert werden, so dass RELAX zur Optimierung dieses Terms verwendet werden kann.
  • In mindestens einem Ausführungsbeispiel beinhalten beide Ziele in Gl. 7 und Gl. 6 Erwartungen in Bezug auf pΦ (z). In mindestens einem Ausführungsbeispiel wird für die Gradientenabschätzung, wie in Abschnitt 3.1 gezeigt, die Monte-Carlo-Abschätzung durch Ziehen von Samples aus pΦ(z) berechnet. In mindestens einem Ausführungsbeispiel können wir, da wir den Trainings-/Validierungsverlust in einer Zielfunktion unter Verwenden eines Mini-Batches von Daten berechnen, die Anzahl der Architektur-Samples auf einen Wert zwischen eins und einer Anzahl von Samples im Mini-Batch (wie z. B. die Batch-Größe) festlegen. In diesem Abschnitt wird die Auswirkung der Auswahl einer Anzahl von Architektur-Samples auf die Varianz und Effizienz der Suche in einem Ausführungsbeispiel untersucht.
  • In mindestens einem Ausführungsbeispiel wird die Größe des Architektur-Samples auf eine Batch-Größe festgelegt. In mindestens einem Ausführungsbeispiel entspricht diese Option der gleichzeitigen Untersuchung vieler Architekturen mit gemeinsam genutztem ω zur Aktualisierung von Φ. In mindestens einem Ausführungsbeispiel hat dies eine geringere Gradientenvarianz für die Aktualisierung von Φ zur Folge, da in mindestens einem Ausführungsbeispiel viele z -Samples für die Abschätzung eines Gradienten verwendet werden. In mindestens einem Ausführungsbeispiel ist dieser Ansatz jedoch rechen- und speicherintensiv, da er gemischte Rechenoperationen in Zellen erfordert.
  • In mindestens einem Ausführungsbeispiel wird ein einziges Architektur-Sample verwendet. In mindestens einem Ausführungsbeispiel kann die Gradientenvarianz durch die Verwendung eines einzigen Architektur-Samples gegen die Effizienz eingetauscht werden. In mindestens einem Ausführungsbeispiel kann eine Monte-Carlo-Abschätzung mit einem einzigen Sample von E p ϕ ( z ) [ L ( z ) ]
    Figure DE112020004277T5_0046
    effizient berechnet werden, da für jede gemischte Operation in einer Zelle nur die Berechnung einer einzigen Operation erforderlich ist. In mindestens einem Ausführungsbeispiel kann dies die Anforderungen an Speicher und Rechenleistung für die Evaluierung von Verlusten bei jeder Parameteraktualisierung verringern. In mindestens einem Ausführungsbeispiel gilt dies jedoch nur für die Erwartung mit diskreten Architektur-Samples, und es ist nicht klar, ob eine ähnliche Verbesserung für die Erwartung mit kontinuierlichen Gumbel-Softmax-Samples erzielt werden kann. In mindestens einem Ausführungsbeispiel wird in Anhang A ein einfacher Ansatz zur Verringerung der rechnerischen und speichertechnischen Anforderungen von reduzierten gemischten Operationen vorgestellt. In mindestens einem Ausführungsbeispiel werden verschiedene Werte der Gumbel-Softmax-Temperatur auf verschiedene Faktoren in p (ζ) angewandt.
  • 1 zeigt gemäß einem Ausführungsbeispiel ein Beispiel für eine Zellstruktur mit gepaarter Eingabe (engl. pared-input). In mindestens einem Ausführungsbeispiel stellt eine Zellstruktur mit gepaarter Eingabe sicher, dass jeder Knoten einer voraussichtlichen Architektur von zwei vorhergehenden Knoten abhängt. In mindestens einem Ausführungsbeispiel wird dadurch sichergestellt, dass ein Algorithmus zur Architektursuche eine einigermaßen sparsame Architektur erzeugt. In mindestens einem Ausführungsbeispiel, links in 1, ist ein kleiner Graph mit 4 Knoten dargestellt. In mindestens einem Ausführungsbeispiel, in der Mitte von 1, ist z = {ze} die Operationszuweisung für eingehende Kanten zum Knoten 3 dargestellt. In mindestens einem Ausführungsbeispiel, rechts in 1, sind Eingabe- und Operationsselektoren für diese Kanten dargestellt. In mindestens einem Ausführungsbeispiel wird eine schattierte Matrix auf z durch das äußere Produkt
    Figure DE112020004277T5_0047
    parametrisiert.
  • In mindestens einem Ausführungsbeispiel kann das Trainieren einer oben eingeführten Zellstruktur zu einer dicht verbundenen Zelle führen, in der jeder Knoten von einer Ausgabe aller vorherigen Knoten abhängt. In mindestens einem Ausführungsbeispiel ist es erforderlich, dass jeder Knoten in einer Zelle in der Reihenfolge der Eingaben nur mit zwei anderen Knoten verbunden sein kann, um eine geringe Konnektivität zu erreichen. In mindestens einem Ausführungsbeispiel verwendet DARTS eine Heuristik, um die Anzahl der Eingaben auf zwei zu beschränken, indem die Operationen mit den größten Gewichten ausgewählt werden. In mindestens einem Ausführungsbeispiel entdeckt SNAS unerwartet eine Zelle mit nur zwei Eingaben pro Knoten.
  • In mindestens einem Ausführungsbeispiel wird zur expliziten Herbeiführung von Spärlichkeit ein Operationszuweisungsproblem auf Kanten umformuliert, indem zwei Auswahlprobleme verwendet werden: i) ein Eingabeselektor, der zwei Knoten aus den vorherigen Knoten auswählt, und ii) ein Operationsselektor, der zwei Operationen auswählt, die auf jede ausgewählte Eingabe angewendet werden. In mindestens einem Ausführungsbeispiel wird diese Struktur als Zelle mit gepaarten Eingaben bezeichnet, da sie sicherstellt, dass der Inhalt jedes Knotens nur von zwei vorherigen Knoten abhängt, ohne sich auf eine Heuristik nach der Suche zu stützen. In mindestens einem Ausführungsbeispiel werden
    Figure DE112020004277T5_0048
    und
    Figure DE112020004277T5_0049
    eingeführt, zwei One-Hot-Vektoren für einen n-ten Knoten, die Eingabeselektoren repräsentieren, sowie zwei One-Hot-Vektoren on und on, die Operationsselektoren bezeichnen. In mindestens einem Ausführungsbeispiel wird eine Architektur durch die Mengen
    Figure DE112020004277T5_0050
    wobei N eine Anzahl von Knoten in einer Zelle ist. In mindestens einem Ausführungsbeispiel lässt sich diese Formulierung unter Verwenden des äußeren Produkts
    Figure DE112020004277T5_0051
    wie in 1 gezeigt, leicht in ein Operationszuweisungsproblem auf Kanten (d. h. {ze}) in Abschnitt 2 umwandeln. In mindestens einem Ausführungsbeispiel wird ein Produkt kategorischer Verteilungen in der Form
    Figure DE112020004277T5_0052
    verwendet, um eine Verteilung über Architekturparameter zu repräsentieren. In mindestens einem Ausführungsbeispiel wird zur Vereinfachung der Schreibweise auf diese Verteilung durch pΦ (z) Bezug genommen.
  • In mindestens einem Ausführungsbeispiel besteht ein Problem bei einer Struktur mit gepaarten Eingaben darin, dass die Architektursuche aufgrund eines symmetrischen Ausdrucks in unserer Umformulierung
    Figure DE112020004277T5_0053
    für beide eingehenden Kanten eines Knotens dasselbe Eingabe- und Operationspaar wählen kann. In mindestens einem Ausführungsbeispiel wird, um dies zu verhindern, ein Architektur-Strafterm zur Zielfunktion hinzugefügt, indem
    Figure DE112020004277T5_0054
    verwendet wird, wobei λarch ein Abwägungsparameter ist (λarch = 0.2). In mindestens einem Ausführungsbeispiel wird ein Term innerhalb der Summation zu Eins, wenn eine gleiche Eingabe und Operation auf einer Kante gewählt wird.
  • In mindestens einem Ausführungsbeispiel werden die hier beschriebenen Techniken in einem vorgeschlagenen UNAS Framework auf ein Problem der Architektursuche zur Bildklassifizierung angewendet. In mindestens einem Ausführungsbeispiel wird ein in DARTS eingeführter Versuchsaufbau mit geringfügigen, nachstehend beschriebenen Änderungen verwendet. In mindestens einem Ausführungsbeispiel sucht ein Computersystem in einer Suchphase nach einer Zelle und verwendet dabei ein Netzwerk mit einer geringen Anzahl von Merkmalskarten und/oder Schichten. In mindestens einem Ausführungsbeispiel wird bei einer stochastischen Darstellung einer Architektur eine finale Zelle erhalten, indem eine Eingabe/Operation gewählt wird, die für jeden Knoten die höchste Wahrscheinlichkeit aufweist. In mindestens einem Ausführungsbeispiel wird in der Evaluierungsphase eine Zelle in ein größeres Netzwerk gestapelt, das von Grund auf neu trainiert wird.
  • In mindestens einem Ausführungsbeispiel werden die Ergebnisse der Architektursuche für den CIFAR-10-Datensatz im Folgenden dargestellt. In mindestens einem Ausführungsbeispiel verbessern ausgefeiltere Ansätze wie das Offline-Training die Vorhersagequalität von g. In mindestens einem Ausführungsbeispiel besteht jedoch ein wichtiger Vorteil der hier beschriebenen Techniken darin, dass die Gradientenabschätzung auch dann noch unverzerrt ist, wenn g nicht genau ist. Im Gegensatz dazu erfordern verschiedene Beispiele von ProxylessNAS und FBNet eine genaue Funktion zum Abschätzen der Latenz, da diese Funktion zur Minimierung der Latenz verwendet wird.
  • 2 zeigt ein Beispiel für eine Normalzelle 202 und eine Reduzierzelle 204 gemäß einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel ist die Normalzelle 202 ein Beispiel für eine Normalzelle, die durch die hierin beschriebenen Techniken unter Verwenden eines CIFAR-10-Datensatzes erzeugt wurde. In mindestens einem Ausführungsbeispiel ist die Normalzelle 204 ein Beispiel für eine Reduzierzelle, die mit den hier beschriebenen Techniken unter Verwenden eines CIFAR-10-Datensatzes hergestellt wurde. 3 zeigt gemäß einem Ausführungsbeispiel ein Beispiel für einen Validierungsverlust bei der Suche. In mindestens einem Ausführungsbeispiel wird der in 3 dargestellte Validierungsverlust beim Trainieren mit einem CIFAR-10-Datensatz erzeugt.
  • In mindestens einem Ausführungsbeispiel werden bei Ablationsexperimenten die Such- und Evaluierungsphasen viermal Ende-zu-Ende durchlaufen, und Mittelwert und Standardabweichung der finalen Testgenauigkeit werden berichtet. In mindestens einem Ausführungsbeispiel werden differenzierbare Verlustfunktionen in Bezug auf z berücksichtigt. In mindestens einem Ausführungsbeispiel sind die verschiedenen Basislinien in 4 zusammengefasst.
  • In mindestens einem Ausführungsbeispiel ist eine Basislinie für ein Trainingsziel in 4 zusammengefasst. In mindestens einem Ausführungsbeispiel wird in einer ersten Gruppe in der in 4 gezeigten Tabelle eine Anzahl von Architektur-Samples auf eine Batchgröße (B) festgelegt, und Gumbel-Softmax wird verwendet, um den Architekturverlust zu minimieren. In mindestens einem Ausführungsbeispiel für diese Gruppe wird eine Zielfunktion für die Aktualisierung von Φ zwischen der Erwartung von Ltrain, Lval, und Lgen variiert. In mindestens einem Ausführungsbeispiel führt die Architektursuche mit Generalisierungsverlust zu einem besseren Modell, indem eine Überanpassung der Daten an die entdeckte Architektur vermieden wird. In mindestens einem Ausführungsbeispiel ist dies darauf zurückzuführen, dass bei der Aktualisierung von Φ ein suboptimales ω verwendet wird, das die wahre Generalisierung der Architektur nicht erfasst. In mindestens einem Ausführungsbeispiel ist der Validierungsverlust bei der Architektursuche unter Verwenden verschiedener Verlustfunktionen in 3 dargestellt. In mindestens einem Ausführungsbeispiel verhindert selbst die Aktualisierung der Architekturparameter unter Verwenden von Validierungsverlusten nicht die Überanpassung des Netzes.
  • In mindestens einem Ausführungsbeispiel stellt sich die Frage, ob ein Generalisierungsverlust für ein ursprüngliches RL-basiertes NAS erforderlich ist, das die Architekturparameter unter Verwenden von optimalem ω aktualisiert. In mindestens einem Ausführungsbeispiel wird ein ENAS-ähnliches Trainieren untersucht, bei dem die Netzparameter ω bei jedem Φ-Update für eine halbe Epoche aktualisiert werden. In mindestens einem Ausführungsbeispiel erhalten Architekturen, die durch Generalisierungsverluste gefunden wurden, im Durchschnitt einen Testfehler von 2,92 %, während diejenigen, die durch auf Validierungsverlusten basierende Suche gefunden wurden, 3,12 % erreichen. In mindestens einem Ausführungsbeispiel ist dies ein starker Beweis dafür, dass Architektur-Suchmodelle die Generalisierung berücksichtigen sollten.
  • Eine Basislinie für die Abschätzung von Gradienten gemäß mindestens einem Ausführungsbeispiel ist in 4 zusammengefasst. In mindestens einem Ausführungsbeispiel wird in der zweiten Gruppe das Suchziel auf E [ L gen ( z , w ) ]
    Figure DE112020004277T5_0055
    festgelegt, und es werden verschiedene Gradientenschätzer untersucht, die Folgendes umfassen: Gumbel-Softmax, untersucht in einer ersten Gruppe, REINFORCE (Gl. 2) mit exponentiell gleitendem Durchschnitt des Verlustes als Basislinie und REBAR (Gl. 3). In mindestens einem Ausführungsbeispiel erzielt der REBAR-Gradientenschätzer mit Generalisierungsfehler die besten Ergebnisse. In mindestens einem Ausführungsbeispiel erzielt der REINFORCE-Schätzer, der normalerweise nicht direkt mit DNAS-Verfahren verglichen wird, ebenfalls konkurrenzfähige Ergebnisse.
  • In mindestens einem Ausführungsbeispiel ist eine Anzahl von Architektur-Samples in 4 zusammengefasst. In mindestens einem Ausführungsbeispiel wird in einer letzten Gruppe eine Anzahl von Architektur-Samples auf eins gesetzt (d.h. alle Samples in einem Mini-Batch haben dieselbe Architektur). In mindestens einem Ausführungsbeispiel führt die Verwendung eines einzigen Architektur-Samples im Vergleich zu einer vorherigen Gruppe zu einer schlechteren Architektur sowohl für REINFORCE als auch für REBAR. In mindestens einem Ausführungsbeispiel zeigt Gumbel-Softmax eine geringere Empfindlichkeit gegenüber der Größe des Samples.
  • In mindestens einem Ausführungsbeispiel wird ein vorgeschlagenes Framework für die Suche nach einer Architektur mit geringer Latenz verwendet. In mindestens einem Ausführungsbeispiel wird RELAX mit einem einfachen vollständig vernetzten Netzwerk als Surrogatfunktion g verwendet. In mindestens einem Ausführungsbeispiel besteht ein Netzwerk aus 5 Schichten mit 200 Einheiten in jeder Schicht mit tanh-Aktivierung.
  • In mindestens einem Ausführungsbeispiel wird für die Latenzoptimierung bei jeder Φ-Aktualisierung ein einzelnes Architektur-Sample verwendet, da es uns ermöglicht, die Latenz eines Netzes zu messen, während wird
    Figure DE112020004277T5_0056
    (z) berechnen. In mindestens einem Ausführungsbeispiel wird eine Historie von 5.000 gemessenen Latenzwerten, gepaart mit Architektur-Samples, zum Trainieren der Parameter von g verwendet.
  • 5 zeigt ein Beispiel für eine auf Latenz basierende Architektursuche gemäß einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel erzeugen die hierin beschriebenen Techniken unter Verwenden von CIFAR-10-Daten eine Beziehung zwischen Latenz und Genauigkeit, wie in einem ersten Diagramm 502 dargestellt. In mindestens einem Ausführungsbeispiel erzeugen die hierin beschriebenen Techniken unter Verwenden von CIFAR-10-Daten eine Beziehung zwischen der vorhergesagten Latenz und der tatsächlichen Genauigkeit, wie in einem zweiten Diagramm 504 dargestellt.
  • 6 zeigt ein beispielhaftes Ausführungsbeispiel einer Normal- und Reduzierzelle. In mindestens einem Ausführungsbeispiel ist die Normalzelle 602 ein Beispiel für eine Normalzelle, die durch die hierin beschriebenen Techniken bei Verwendung eines ImageNet-Datensatzes erzeugt wurde. In mindestens einem Ausführungsbeispiel ist die Normalzelle 604 ein Beispiel für eine Reduzierzelle, die durch hierin beschriebene Techniken unter Verwenden eines ImageNet-Datensatzes erzeugt wurde.
  • In mindestens einem Ausführungsbeispiel wird eine Suche nach Modellen mit unterschiedlicher Latenz durchgeführt, indem der Latenzverlustkoeffizient λlat in der Menge {0,3;3;30} variiert wird. In mindestens einem Ausführungsbeispiel wird auf der linken Seite von 5 die finale Genauigkeit der Modelle im Vergleich zu ihrer Latenzzeit dargestellt. Im Vergleich zu REINFORCE wird eine verbesserte Latenzzeit bei ähnlicher Genauigkeit erreicht. In mindestens einem Ausführungsbeispiel wird auf der rechten Seite von 5 die Ausgabe von g für ungesehene Architekturen im Vergleich zu den für die Architekturen gemessenen wahren Latenzwerten dargestellt. In mindestens einem Ausführungsbeispiel weist eine Surrogatfunktion g einen Pearson-Korrelationskoeffizienten von 0,54 mit der tatsächlichen Latenzzeit auf.
  • In mindestens einem Ausführungsbeispiel, in 7, wird unsere beste Zelle, die unter Verwenden von Generalisierungsverlust und REBAR entdeckt wurde, wie in 2 dargestellt, mit früheren Arbeiten verglichen, die einen ähnlichen Suchraum verwenden. In mindestens einem Ausführungsbeispiel wird das Evaluierungsnetzwerk viermal trainiert und Mittelwert und Standardabweichung des Testfehlers angegeben. In mindestens einem Ausführungsbeispiel erreicht UNAS eine mit DARTS vergleichbare Leistung. In mindestens einem Ausführungsbeispiel unterscheidet sich das Suchziel vom Ansatz zweiter Ordnung von DARTS, der die Abhängigkeit von ω-Aktualisierungen von kontinuierlichen Architekturaktualisierungen berücksichtigt, die eine Berechnung des Hessian-Vektors erfordern. In mindestens einem Ausführungsbeispiel ist das von DARTS erforderliche Post-Search Cell Pruning nicht erforderlich.
  • 7 zeigt gemäß einem Ausführungsbeispiel ein Beispiel für die Ergebnisse einer Netzwerkarchitektur-Suche. In mindestens einem Ausführungsbeispiel werden die Ergebnisse auf dem ImageNet-Datensatz in drei verschiedenen Einstellungen dargestellt und evaluiert: (i) zufällig generierte Architekturen werden evaluiert und setzen eine überraschend starke Basislinie, (ii) eine aufCIFAR-10 entdeckte Zelle und (iii) die direkte Suche nach Zellen auf ImageNet. In mindestens einem Ausführungsbeispiel wird der Suchraum, da die direkte Suche in ImageNet aufwändig ist, auf drei Operationen reduziert, einschließlich Skip Connection, separierbare 3×3-Faltung in der Tiefe und Max Pooling. In mindestens einem Ausführungsbeispiel deuten frühere Arbeiten zu ResNets, DenseNets sowie neuere RandWire-Ergebnisse darauf hin, dass es möglich sein sollte, eine hohe Genauigkeit zu erreichen, indem nur diese drei Operationen verwendet werden. In mindestens einem Ausführungsbeispiel zeigt 8 eine Zusammenfassung der Ergebnisse.
  • 8 zeigt gemäß einem Ausführungsbeispiel ein Beispiel für die Suchergebnisse einer Netzwerkarchitektur in einer mobilen Umgebung. In mindestens einem Ausführungsbeispiel werden die in 8 gezeigten Ergebnisse unter Verwenden eines ImageNet-Datensatzes erzeugt. In mindestens einem Ausführungsbeispiel wird eine starke zufällige Basislinie bereitgestellt, angezeigt durch „Random Cell“ in 8, die die meisten früheren NAS-Verfahren übertrifft. In mindestens einem Ausführungsbeispiel werden die Zufallszellen wie folgt generiert: Jeder Knoten wählt nach dem Zufallsprinzip zwei Knoten als Eingabe (ohne Ersetzung) aus den verfügbaren Eingaben (z. B. zwei vorhergehende Schichten und vorhergehende Knoten in einer Zelle) und betreibt auch Sampling-Operationen an diesen Kanten nach dem Zufallsprinzip (mit Ersetzung). In mindestens einem Ausführungsbeispiel werden insgesamt 10 Netzwerke trainiert, die aus zufällig generierten Normal- und Reduzierzellen ausgeführt werden. In mindestens einem Ausführungsbeispiel liegen die Top-1- und Top-5-Fehler des Netzwerks bei 25,55 % bzw. 8,06 % (siehe 13-15 für die Zellstruktur). In mindestens einem Ausführungsbeispiel wird die Leistung einer zufällig entdeckten Zelle im ImageNet vorgestellt. In mindestens einem Ausführungsbeispiel zeigt die hohe Leistung dieser Basislinie an, dass ein assoziierter Suchraum von überragender Bedeutung ist.
  • In mindestens einem Ausführungsbeispiel ergibt die direkte Suche in ImageNet-Daten die Zelle in 6, die flacher ist als die in CIFAR-10 entdeckte Zelle und Ähnlichkeit mit dem ResNet-Modul aufweist. In mindestens einem Ausführungsbeispiel werden im Folgenden Details zur Suche und Evaluierung angegeben. In mindestens einem Ausführungsbeispiel, wie in 8 zu sehen, erhält die Zelle, die auf CIFAR-10 in einem 7-op-Suchraum gesucht wird, ähnlich wie DARTS und SNAS, einen Top-1-Fehler von 25,14 %, der signifikant niedriger ist als andere frühere Ansätze. In mindestens einem Ausführungsbeispiel ergibt eine UNAS-Zelle, die auf ImageNet gesucht wird, den zweitniedrigsten Fehler insgesamt und erhält einen Top-1- und Top-5-Fehler von 24,74 % bzw. 7,63 % zu einem Bruchteil der Kosten (0,6 %), die für das beste AmoebaNet-C erforderlich sind. In mindestens einem Ausführungsbeispiel übertreffen die UNAS-Zellen die Ergebnisse einer zufällig gesuchten Zelle. In mindestens einem Ausführungsbeispiel konnten wir durch die direkte Suche nach einer Aufgabe anstelle einer Übertragung eine höhere Genauigkeit erhalten. In mindestens einem Ausführungsbeispiel weist AmoebaNet-C den geringsten Fehler auf, was zum Teil auf eine sehr groß angelegte evolutionäre Suche in einem exponentiell großen Architekturraum zurückzuführen ist, und außerdem wurde AmoebaNet-C von Hand ausgewählt und eingestellt, während UNAS die finale Ausgabe der Suche war.
  • In mindestens einem Ausführungsbeispiel wird die Arbeit in einem anderen Suchraum verglichen. In mindestens einem Ausführungsbeispiel, in 9, wird ein UNAS-Netz mit solchen verglichen, die in verschiedenen Schichten und Suchräumen verwendet werden. In mindestens einem Ausführungsbeispiel deuten andere Arbeiten darauf hin, dass diese Einstellungen die Genauigkeit und den Rechenaufwand beeinflussen können. In RandWire beispielsweise kann die Konnektivität der Netzwerkschichten durch einen Zufallsgraphengenerator erzeugt werden, während andere Ansätze einen festen Konnektivitätsgraphen verwenden. In mindestens einem Ausführungsbeispiel verbindet UNAS jede Schicht mit den beiden vorhergehenden Schichten. MnasNet und ProxylessNAS verbinden jede Schicht mit der vorhergehenden und verwenden eine mobile invertierte Engpassfaltung. MnasNet-A3 verwendet eine Squeeze-and-Excitation-Schicht in seinem Suchraum. In mindestens einem Ausführungsbeispiel erhält UNAS eine vergleichbare Genauigkeit, auch wenn der leistungsstarke mobile invertierte Flaschenhals nicht in unserem Suchraum liegt.
  • 9 zeigt ein beispielhaftes Ergebnis für ImageNet, das mit Architekturen erhalten wurde, die gemäß einem Ausführungsbeispiel einen anderen operativen Suchraum und eine andere Schichtkonnektivität verwenden. In mindestens einem Ausführungsbeispiel werden die Such- und Evaluierungsphasen fünfmal Ende-zu-Ende auf ImageNet ausgeführt, und der Mittelwert und die Standardabweichung einer finalen Validierungsgenauigkeit werden in 10 angegeben, wobei ein Thee-Operation-Suchraum verwendet wird. 10 zeigt gemäß einem Ausführungsbeispiel ein Beispiel für die Ergebnisse eines Ablationsexperiments. In mindestens einem Ausführungsbeispiel liefern der Generalisierungsverlust, der REBAR-Schätzer und mehrere Architektur-Samples die beste Genauigkeit.
  • In mindestens einem Ausführungsbeispiel vereinigt UNAS differenzierbare und RLbasierte NAS. In mindestens einem Ausführungsbeispiel verwendet UNAS einen Gradienten einer Zielfunktion für die Suche, ohne eine Vorgabe aufgrund einer kontinuierlichen Relaxation einzuführen. In mindestens einem Ausführungsbeispiel ist das Suchziel von UNAS im Gegensatz zu früheren DNAS-Verfahren nicht auf differenzierbare Verlustfunktionen beschränkt, da es auch nicht-differenzierbare Verlustfunktionen verwenden kann. In mindestens einem Ausführungsbeispiel wird eine neue Zielfunktion für die Suche basierend auf dem Generalisierungsfehler verwendet, die die zuvor vorgeschlagenen Trainings- oder Validierungsverlustfunktionen übertrifft.
  • In mindestens einem Ausführungsbeispiel wird die Verteilung über die Architekturparameter unter Verwenden einer faktoriellen Verteilung p(z) = Πe Pe (ze) repräsentiert, wobei ze eine einer e-ten Kante zugeordnete Operation darstellt. In mindestens einem Ausführungsbeispiel ist für die Gumbel-Softmax-Verteilung in ähnlicher Weise eine faktorielle Verteilung definiert durch p(ζ) = Πe pee, Te), wobei Te eine Temperatur ist, die zur Relaxation jeder Variablen verwendet wird. In mindestens einem Ausführungsbeispiel wird jedoch anstelle der Verwendung eines gemeinsamen Temperaturparameters (T) für die Kanten in der Zelle (Te) eine stochastische Temperatur verwendet, die für jede Kante unter Verwenden einer Bernoulli-Verteilung gesampelt wird: T e = { 0 mit Warhscheinlichkeit 1 q T mit Wahrscheinlichkeit q
    Figure DE112020004277T5_0057
    wobei q eine Wahrscheinlichkeit für die Verwendung der Temperatur T ist. In mindestens einem Ausführungsbeispiel ist ein mit Te = 0 gezogenes Gumbel-Softmax-Sample tatsächlich ein diskretes Sample, da eine Gumbel-Softmax-Verteilung im Grenzwert von Te = 0 zu einer kategorialen Verteilung wird. In mindestens einem Ausführungsbeispiel werden für mit Te = 0 gezogene Samples (d. h. Kanten mit binären Operationszuweisungsvektoren) die Speicher- und Rechenanforderungen reduziert, indem eine einzige Operation berechnet wird, die durch One-Hot-ζe spezifiziert ist. In mindestens einem Ausführungsbeispiel steuert q die durchschnittliche Anzahl der gemischten Operationen, die diskret werden, sowie den für die Suche erforderlichen Speicher- und Zeitbedarf der GPU.
  • In mindestens einem Ausführungsbeispiel führt das Sampling eines Temperaturparameters aus einer bimodalen Verteilung, wie oben gezeigt, nicht zu einer Vorgabe für einen Gradientenschätzer in Gl. 3. In mindestens einem Ausführungsbeispiel erhöht es jedoch potenziell die Varianz eines Abschätzers, da ein Gradientenbeitrag von reparametrisierten Samples bei Te = 0 zu Null wird und eine Gradientenabschätzung auf dem REINFORCE-Term beruht.
  • In mindestens einem Ausführungsbeispiel kann dieselbe Idee auf eine Zelle mit gepaarten Eingaben angewendet werden, indem für jede Eingabe und jeden Betriebsselektor eine andere Temperatur verwendet wird. 11 zeigt den erforderlichen Speicherplatz und die Zeit für die Suche nach einer Architektur mit verschiedenen Werten von q im Bereich {0,2;0,4;0,6;0,8;1,0} unter Verwenden von REBAR. Interessanterweise wurde bei der Suche eine Architektur mit ähnlichem Testfehler in einem Bereich von 3,0±0,05% gefunden. Allerdings können GPU-Speicher und Zeit signifikant reduziert werden, indem kleinere q verwendet werden.
  • 11 zeigt ein beispielhaftes Verhältnis zwischen der Verwendung von GPU-Speicher und der während der Suche verwendeten Zeit gemäß einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel können der GPU-Speicher und die während der Suche verbrauchte Zeit durch Sampling verschiedener Temperaturen für verschiedene Faktoren in der Architekturverteilung p(ζ), wie in Gl. 8 gezeigt, reduziert werden. In mindestens einem Ausführungsbeispiel wird q von 0,2 bis 1,0 inkrementiert, und zwar in Schritten von 0,2 von links nach rechts. In mindestens einem Ausführungsbeispiel nehmen mit steigendem q sowohl die GPU-Zeit als auch der für die Architektursuche erforderliche Speicherplatz zu.
  • Suchraum:
  • In mindestens einem Ausführungsbeispiel werden 7 Operationen bei der Suche in CIFAR-10 verwendet:
    1. skip_ connect: Identitätsverbindung
    2. sep_conv_3x3: tiefenmäßig trennbare 3x3-Faltung
    3. max_pool_3x3: Max-Pooling mit 3x3-Kerne
    4. dil_conv_3x3: dilatierte tiefenweise-separierbare 3x3-Faltung
    5. sep_conv_5x5: tiefenmäßig trennbare 5x5-Faltung
    6. avg_pool_3x3: Durchschnitts-Pooling mit 3x3-Kernel
    7. sep_conv_7x7: tiefenmäßig trennbare 7x7-Faltung
  • In mindestens einem Ausführungsbeispiel werden in ImageNet, um die Suche überschaubar zu machen, die ersten drei Operationen verwendet. In mindestens einem Ausführungsbeispiel verwenden die Operationen einen Stride von 1, wenn sie Teil der Normalzelle sind, und einen Stride von 2, wenn sie Teil der Reduzierzelle sind. In mindestens einem Ausführungsbeispiel wird den Eingaben eine geeignete Auflage hinzugefügt, um die räumlichen Dimensionen zu erhalten. In mindestens einem Ausführungsbeispiel besteht jede Faltung aus einem (ReLU-Conv-BN)-Block, und in der Tiefe trennbare Faltungen werden immer zweimal angewendet, was mit früheren Arbeiten übereinstimmt.
  • CIFAR-10
  • Der CIFAR-10-Datensatz besteht aus 50.000 Trainingsbildern und 10.000 Testbildern. In mindestens einem Ausführungsbeispiel werden während der Suche 45.000 Bilder aus dem ursprünglichen Trainingssatz als Trainingssatz und die restlichen als Validierungssatz verwendet. In mindestens einem Ausführungsbeispiel wird in der finalen Evaluierungsphase ein ursprünglicher Split verwendet. In mindestens einem Ausführungsbeispiel wird während der Architektursuche ein Netzwerk durch Stapeln von 8 Zellen mit 4 versteckten Knoten ausgeführt. In mindestens einem Ausführungsbeispiel werden die Zellen in Blöcken von 2-2-2 Normalzellen mit dazwischen liegenden Reduktionszellen gestapelt, ähnlich wie bei DARTS. In mindestens einem Ausführungsbeispiel werden die Netzwerke unter Verwenden von 4 Tesla V100 GPUs mit einer Batchgröße von 192 für 100 Epochen trainiert. In mindestens einem Ausführungsbeispiel werden in den ersten 15 Epochen nur die Netzwerkparameter (ω) trainiert, während die Architekturparameter (Φ) eingefroren werden. In mindestens einem Ausführungsbeispiel verhindert diese Vortrainingsphase, dass die Suche Operationen ignoriert, die normalerweise langsamer zu trainieren sind. In mindestens einem Ausführungsbeispiel werden die Architekturparameter unter Verwenden eines Adam-Optimierers mit einem Plan für die Kosinus-Lernrate trainiert, der mit 3 × 10-3 beginnt und auf 3 ×10-4 heruntergekühlt wird. In mindestens einem Ausführungsbeispiel werden die Netzwerkparameter auch unter Verwenden eines Adam-Optimierers mit einem Kosinus-Lernratenplan trainiert, der mit 9 × 10-4 beginnt und bis auf 1× 10-4 heruntergekühlt wird.
  • ImageNet:
  • In mindestens einem Ausführungsbeispiel wird ein 14-Schichten-Netz mit 16 initialen Kanälen für die Suche über 8 V100-GPUs verwendet, die etwa 2,5 Tage benötigen. In mindestens einem Ausführungsbeispiel wird eine Lernrate von 3 ×10-4 mit SGD verwendet, um die Netzwerkparameter eines Mixed-Op-Netzwerks zu lernen. In mindestens einem Ausführungsbeispiel werden die Architekturparameter mit einer Lernrate von 3 × 10-4 unter Verwenden von Adam trainiert. In mindestens einem Ausführungsbeispiel wird das Trainieren über 8 GPUs parallelisiert, ohne die Lernrate zu skalieren. In mindestens einem Ausführungsbeispiel werden für die ersten 5 Epochen nur die Netzwerkparameter (ω) trainiert. In mindestens einem Ausführungsbeispiel werden λ = 0.5 und λarch = 0,2 verwendet, wie bei CIFAR-10, und eine Gumbel-Softmax-Temperatur von 0,4. In mindestens einem Ausführungsbeispiel wird ein Abklingen der Gewichtung von 3 ×10-4 bei den Gewichtungsparametern und von 1 ×10-6 bei den Architekturparametern verwendet. In mindestens einem Ausführungsbeispiel werden 90 % des ImageNet Trainingssatzes zum Trainieren von Gewichtungsparametern verwendet, während ein Rest als Validierungssatz zum Trainieren von Architekturparametern verwendet wird.
  • Architecture Evaluation Settings
  • CIFAR-10
  • In mindestens einem Ausführungsbeispiel wird ein finales Netzwerk durch Stapeln von insgesamt 20 Zellen ausgeführt. In mindestens einem Ausführungsbeispiel werden die Netzwerke auf 4 V100 GPUs mit einer Batchgröße von 224 für 300 Epochen trainiert. In mindestens einem Ausführungsbeispiel wird SGD mit einem Impuls von 0,9 verwendet. In mindestens einem Ausführungsbeispiel wird ein Plan für die Kosinus-Lernrate verwendet, der mit 8.7 ×10-2 beginnt und bis auf Null heruntergekühlt wird. In mindestens einem Ausführungsbeispiel wird, ähnlich wie bei DARTS, ein Pfadabbruch mit einer Wahrscheinlichkeit von 0,2 und ein Ausschnitt von 16 Pixeln als Regularisierung verwendet.
  • ImageNet
  • In mindestens einem Ausführungsbeispiel werden für die Augmentierung der Daten dieselben Einstellungen wie bei DARTS verwendet. In mindestens einem Ausführungsbeispiel werden die Trainingsbilder nach dem Zufallsprinzip auf eine Größe von 224×224 px beschnitten, horizontal gespiegelt und mit einem Farbzittern versehen. In mindestens einem Ausführungsbeispiel wird bei der Evaluierung ein einzelner Zentrumsausschnitt der Größe 224×224 px verwendet, nachdem die Bildgröße auf 256×256 px geändert wurde.
  • In mindestens einem Ausführungsbeispiel wird für die finale Evaluierung ein Netzwerk mit 14 Schichten für 250 Epochen trainiert, wobei die initiale Anzahl der Kanäle so gewählt wird, dass die Multiplikation des Netzwerks <600M ist. Für die in 8 und 9 dargestellten Ergebnisse werden Netzwerke basierend auf SGD mit einem Impuls von 0,9, einer Basis-Lernrate von 0,1, einem Abklingen der Gewichte von 3 ×10-5 und einer Batchgröße von 128 pro GPU trainiert. In mindestens einem Ausführungsbeispiel wird ein Modell in Übereinstimmung mit früheren Arbeiten 250 Epochen lang trainiert, wobei die Lernrate am Ende des Trainings unter Verwenden eines Kosinus-Lernraten-Abklingens auf 0 geglüht wird. In mindestens einem Ausführungsbeispiel wird das Trainieren auf 8 V100-GPUs unter Verwenden einer linearen Skalierungsregel skaliert, wobei die Lernrate für die ersten 5 Epochen aufgewärmt wird.
  • 12 zeigt ein Beispiel für die ImageNet-Leistung der besten Modelle, gemittelt über fünf Evaluierungsläufe, gemäß einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel zeigt 12 die Ergebnisse, die erhalten wurden, wenn nur die besten Modelle fünfmal mit verschiedenen zufälligen Seeds trainiert wurden. In mindestens einem Ausführungsbeispiel betrugen die niedrigsten Fehler, die über 5 Läufe erhalten wurden, 24,74% und 7,63% für die Top-1- bzw. Top-5-Fehler, unter Verwenden einer in ImageNet gesuchten Zelle.
  • 13 zeigt ein beispielhaftes Ausführungsbeispiel von Zellmodellen, die in ImageNet entdeckt wurden. In mindestens einem Ausführungsbeispiel wird eine in ImageNet entdeckte Zelle mit der besten Leistung als eine Normalzelle 1302 und eine Reduzierzelle 1304 gezeigt. 14 zeigt ein beispielhaftes Ausführungsbeispiel von Zellmodellen, die gemäß einem Ausführungsbeispiel in CIFAR-10 entdeckt wurden. In mindestens einem Ausführungsbeispiel wird eine in CIFAR-10 entdeckte Zelle mit der besten Leistung als Normalzelle 1402 und als Reduzierzelle 1404 gezeigt. 15 zeigt ein Beispiel für zufällig vorgeschlagene Zellmodelle in ImageNet gemäß einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel wird eine zufällig vorgeschlagene Zelle mit der besten Leistung auf Imagenet als Normalzelle 1502 und eine Reduzierzelle 1504 gezeigt.
  • 16 zeigt beispielhaft einen Prozess 1600, der gemäß einem Ausführungsbeispiel eine Architektur eines neuronalen Netzwerks für ein bestimmtes Problem identifiziert, nachdem es von einem Computersystem ausgeführt wurde. In mindestens einem Ausführungsbeispiel wird in Block 1602 ein Netzwerkarchitektur-Suchproblem als eine Menge von Optionen formuliert, die als eine lineare Gleichung optimiert werden können. In mindestens einem Ausführungsbeispiel werden in Block 1604 Kombinationen eingeschränkt, indem eine Zelle mit gepaarten Eingaben verwendet wird, die eine Anzahl von Verbindungen und Operationen begrenzt, die auf jede Zelle angewendet werden. In mindestens einem Ausführungsbeispiel erzwingt dies Spärlichkeit in dem entdeckten resultierenden Netzwerk.
  • In mindestens einem Ausführungsbeispiel wird im Entscheidungsblock 1606, wenn ein Verlust differenzierbar ist, wie z.B. die Genauigkeit des Netzwerks, die Ausführung zum Block 1608 fortgesetzt und REBAR wird verwendet, um einen Gradienten abzuschätzen. In mindestens einem Ausführungsbeispiel wird, wenn der Verlust nicht differenzierbar ist, wie z. B. die Latenz, mit Block 1610 fortgefahren, und RELAX wird zum Abschätzen eines Gradienten verwendet. In mindestens einem Ausführungsbeispiel berechnet das System in Block 1612 ein Ziel basierend auf dem Generalisierungsfehler eines Netzwerks. In mindestens einem Ausführungsbeispiel wird der Generalisierungsfehler als Differenz zwischen einem Trainingsverlust und einem Validierungsverlust bestimmt. In mindestens einem Ausführungsbeispiel umfasst ein Testdatensatz einen ersten Teil, der zum Trainieren verwendet wird, was einen Trainingsverlust erzeugt, und einen zweiten Teil, der zur Validierung (aber nicht zum Trainieren) verwendet wird, was einen Validierungsverlust erzeugt. In mindestens einem Ausführungsbeispiel wird in Block 1614 basierend auf einem bestimmten Gradienten und einem auf dem Generalisierungsfehler basierenden Ziel die Netzwerkarchitektur bestimmt.
  • In mindestens einem Ausführungsbeispiel enthält ein autonomes Fahrzeug ein Computersystem, das ein neuronales Netzwerk implementiert. In mindestens einem Ausführungsbeispiel wird eine Architektur für das neuronale Netzwerk generiert, indem die oben beschriebenen Techniken verwendet werden. In mindestens einem Ausführungsbeispiel umfasst das autonome Fahrzeug eine Kamera, die Bilder erhält, die zur Steuerung des Fahrzeugs verwendet werden. In mindestens einem Ausführungsbeispiel werden die Bilder durch das neuronale Netzwerk verarbeitet, um Objekte in der Nähe des autonomen Fahrzeugs zu identifizieren und/oder zu lokalisieren. In mindestens einem Ausführungsbeispiel generiert das neuronale Netzwerk ein oder mehrere Fahrzeugsteuersignale, wie z.B. ein Bremssignal, ein Drosselklappensignal oder ein Abbiegekontrollsignal. In mindestens einem Ausführungsbeispiel.
  • Inferenz- und Trainingslogik
  • 17A zeigt eine Inferenz- und/oder Trainingslogik 1715, die verwendet wird, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird weiter unten in Verbindung mit 17A und/oder 17B beschrieben.
  • In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 ohne Einschränkung einen Code- und/oder Datenspeicher 1701 umfassen, um Vorwärts- und/oder Ausgabewichtungen und/oder Eingabe-/Ausgabedaten und/oder andere Parameter zu speichern, um Neuronen oder Schichten eines neuronalen Netzwerks zu konfigurieren, das für das Inferenzieren in Aspekten einer oder mehrerer Ausführungsbeispiele trainiert und/oder verwendet wird. In mindestens einem Ausführungsbeispiel kann die Trainingslogik 1715 einen Code- und/oder Datenspeicher 1701 umfassen oder mit diesem gekoppelt sein, um einen Graphencode oder eine andere Software zu speichern, die das Timing und/oder die Reihenfolge steuert, in der die Gewichtung und/oder andere Parameterinformationen geladen werden, um die Logik zu konfigurieren, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten (zusammenfassend als arithmetische Logikeinheiten (ALUs) bezeichnet). In mindestens einem Ausführungsbeispiel lädt Code, wie z. B. Graphencode, basierend auf einer Architektur eines neuronalen Netzwerks, dem der Code entspricht, Gewichte oder andere Parameterinformationen in Prozessor-ALUs. In mindestens einem Ausführungsbeispiel speichert Code und/oder Datenspeicher 1701 Gewichtungsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzwerks, das während der Vorwärtspropagierung von Eingabe-/Ausgabedaten und/oder Gewichtungsparametern während des Trainings und/oder Inferenzierens unter Verwenden von Aspekten einer oder mehrerer Ausführungsbeispiele trainiert oder in Verbindung mit einer oder mehrerer Ausführungsbeispiele verwendet wird. In mindestens einem Ausführungsbeispiel kann jeder Teil des Code- und/oder Datenspeichers 1701 in einem anderen On-Chip- oder Off-Chip-Datenspeicher enthalten sein, einschließlich des L1-, L2- oder L3-Cachespeichers oder Systemspeichers eines Prozessors.
  • In mindestens einem Ausführungsbeispiel kann jeder Teil des Codes und/oder des Datenspeichers 1701 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logikgeräten oder Schaltungen sein. In mindestens einem Ausführungsbeispiel kann es sich bei dem Code- und/oder Code- und/oder Datenspeicher 1701 um einen Cache-Speicher, einen dynamischen zufällig adressierbaren Speicher („DRAM“), einen statischen zufällig adressierbaren Speicher („SRAM“), einen nichtflüchtigen Speicher (z.B. Flash-Speicher) oder einen anderen Speicher handeln. In mindestens einem Ausführungsbeispiel kann die Wahl, ob der Code- und/oder Code- und/oder Datenspeicher 1701 beispielsweise intern oder extern zu einem Prozessor ist oder aus DRAM, SRAM, Flash oder einem anderen Speichertyp besteht, von dem verfügbaren Speicher auf dem Chip im Vergleich zu dem außerhalb des Chips, den erforderlichen Anforderungen an die Batchgröße der zum Inferenzieren und/oder Trainieren eines neuronalen Netzwerks verwendeten Daten oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 ohne Einschränkung einen Code- und/oder Datenspeicher 1705 umfassen, um Rückwärts- und/oder Ausgabegewichts- und/oder Eingabe-/Ausgabedaten zu speichern, die Neuronen oder Schichten eines neuronalen Netzwerks entsprechen, das in Aspekten einer oder mehrerer Ausführungsbeispiele trainiert und/oder zum Inferieren verwendet wird. In mindestens einem Ausführungsbeispiel speichert der Code- und/oder Datenspeicher 1705 Gewichtungsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzwerks, das während der Rückwärtspropagierung von Eingabe-/Ausgabedaten und/oder Gewichtungsparametern während des Trainings und/oder Inferenzierens unter Verwenden von Aspekten einer oder mehrerer Ausführungsbeispiele trainiert oder in Verbindung mit einer oder mehrerer Ausführungsbeispiele verwendet wird. In mindestens einem Ausführungsbeispiel kann die Trainingslogik 1715 einen Code- und/oder Datenspeicher 1705 umfassen oder mit diesem gekoppelt sein, um einen Graphencode oder eine andere Software zu speichern, die das Timing und/oder die Reihenfolge steuert, in der die Gewichtung und/oder andere Parameterinformationen geladen werden, um die Logik zu konfigurieren, einschließlich Ganzzahl- und/oder Gleitkomma-Einheiten (zusammenfassend als arithmetische Logikeinheiten (ALUs) bezeichnet). In mindestens einem Ausführungsbeispiel lädt Code, wie z. B. Graphencode, basierend auf einer Architektur eines neuronalen Netzwerks, dem der Code entspricht, Gewichte oder andere Parameterinformationen in Prozessor-ALUs. In mindestens einem Ausführungsbeispiel kann jeder Teil des Codes und/oder des Datenspeichers 1705 in einem anderen On-Chip- oder Off-Chip-Datenspeicher enthalten sein, einschließlich des L1-, L2- oder L3-Cachespeichers oder Systemspeichers eines Prozessors. In mindestens einem Ausführungsbeispiel kann ein beliebiger Teil des Codes und/oder des Datenspeichers 1705 intern oder extern in einem oder mehreren Prozessoren oder anderen Hardware-Logikgeräten oder Schaltungen enthalten sein. In mindestens einem Ausführungsbeispiel kann der Code- und/oder Datenspeicher 1705 ein Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z. B. Flash-Speicher) oder ein anderer Speicher sein. In mindestens einem Ausführungsbeispiel kann die Wahl, ob der Code- und/oder Datenspeicher 1705 beispielsweise intern oder extern zu einem Prozessor ist oder DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, von dem verfügbaren Speicher auf dem Chip gegenüber dem außerhalb des Chips, den erforderlichen Anforderungen an die Batchgröße von Trainings- und/oder Inferenzierungsfunktionen, die durchgeführt werden, der Batchgröße von Daten, die zum Inferenzieren und/oder Trainieren eines neuronalen Netzwerks verwendet werden, oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einem Ausführungsbeispiel können der Code- und/oder Datenspeicher 1701 und der Code- und/oder Datenspeicher 1705 separate Speicherstrukturen sein. In mindestens einem Ausführungsbeispiel können Code- und/oder Datenspeicher 1701 und Code- und/oder Datenspeicher 1705 dieselbe Speicherstruktur sein. In mindestens einem Ausführungsbeispiel können der Code- und/oder Datenspeicher 1701 und der Code- und/oder Datenspeicher 1705 teilweise dieselbe Speicherstruktur und teilweise separate Speicherstrukturen sein. In mindestens einem Ausführungsbeispiel kann jeder Teil des Code- und/oder Datenspeichers 1701 und des Code- und/oder Datenspeichers 1705 in einem anderen On-Chip- oder Off-Chip-Datenspeicher enthalten sein, einschließlich des L1-, L2- oder L3-Caches eines Prozessors oder des Systemspeichers.
  • In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 ohne Einschränkung eine oder mehrere arithmetische Logikeinheit(en) („ALU(s)“) 1710, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten, enthalten, um logische und/oder mathematische Operationen basierend auf, zumindest teilweise, oder angezeigt durch, Trainings- und/oder Inferenzcode (z.B, Graphencode), deren Ergebnis in einem Aktivierungsspeicher 1720 gespeicherte Aktivierungen (z. B. Ausgabewerte von Schichten oder Neuronen innerhalb eines neuronalen Netzwerks) erzeugen kann, die Funktionen von Eingabe-/Ausgabe- und/oder Gewichtungsparameterdaten sind, die in Code- und/oder Datenspeicher 1701 und/oder Code- und/oder Datenspeicher 1705 gespeichert sind. In mindestens einem Ausführungsbeispiel werden in einem Aktivierungsspeicher 1720 gespeicherte Aktivierungen gemäß linearer algebraischer und/oder matrixbasierter Mathematik generiert, die von ALU(s) 1710 als Reaktion auf Ausführungsbefehle oder anderen Code ausgeführt wird, wobei in Code- und/oder Datenspeicher 1705 und/oder Daten 1701 gespeicherte Gewichtungswerte als Operanden zusammen mit anderen Werten, wie z. B. Vorgabewerten, Gradienteninformationen, Impulswerten oder anderen Parametern oder Hyperparametern, verwendet werden, von denen beliebige oder alle in Code- und/oder Datenspeicher 1705 oder Code- und/oder Datenspeicher 1701 oder einem anderen Speicher auf oder außerhalb des Chips gespeichert sein können.
  • In mindestens einem Ausführungsbeispiel sind ALU(s) 1710 in einem oder mehreren Prozessoren oder anderen logischen Hardware-Geräten oder -Schaltungen enthalten, während in einem anderen Ausführungsbeispiel ALU(s) 1710 extern zu einem Prozessor oder einem anderen logischen Hardware-Gerät oder einer Schaltung sein können, die sie verwenden (z. B. ein Co-Prozessor). In mindestens einem Ausführungsbeispiel können ALUs 1710 in den Ausführungseinheiten eines Prozessors oder in einer Gruppe von ALUs enthalten sein, auf die die Ausführungseinheiten eines Prozessors zugreifen können, entweder innerhalb desselben Prozessors oder verteilt auf verschiedene Prozessoren unterschiedlichen Typs (z. B. zentrale Verarbeitungseinheiten, Grafikverarbeitungseinheiten, feste Funktionseinheiten usw.). In mindestens einem Ausführungsbeispiel können sich der Datenspeicher 1701, der Code- und/oder Datenspeicher 1705 und der Aktivierungsspeicher 1720 auf demselben Prozessor oder einem anderen logischen Hardware-Gerät oder einer Schaltung befinden, während sie sich in einem anderen Ausführungsbeispiel in verschiedenen Prozessoren oder anderen logischen Hardware-Geräten oder Schaltungen oder in einer Kombination aus gleichen und verschiedenen Prozessoren oder anderen logischen Hardware-Geräten oder Schaltungen befinden können. In mindestens einem Ausführungsbeispiel kann jeder Teil des Aktivierungsspeichers 1720 in einem anderen On-Chip- oder Off-Chip-Datenspeicher enthalten sein, einschließlich des L1-, L2- oder L3-Cachespeichers oder des Systemspeichers eines Prozessors. Darüber hinaus kann der Code zum Inferenzieren und/oder Trainieren zusammen mit anderem Code gespeichert werden, auf den ein Prozessor oder eine andere Hardwarelogik oder Schaltung zugreifen kann und der unter Verwenden der Abruf-, Dekodier-, Planer-, Ausführungs-, Ausscheidungs- und/oder anderer logischer Schaltungen eines Prozessors geholt und/oder verarbeitet wird.
  • In mindestens einem Ausführungsbeispiel kann der Aktivierungsspeicher 1720 ein Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z. B. Flash-Speicher) oder ein anderer Speicher sein. In mindestens einem Ausführungsbeispiel kann der Aktivierungsspeicher 1720 vollständig oder teilweise innerhalb oder außerhalb eines oder mehrerer Prozessoren oder anderer logischer Schaltungen liegen. In mindestens einem Ausführungsbeispiel kann die Entscheidung, ob der Aktivierungsspeicher 1720 beispielsweise innerhalb oder außerhalb eines Prozessors liegt oder DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, von dem verfügbaren Speicher auf dem Chip oder außerhalb des Chips, den Anforderungen an die Batchgröße der zum Inferenzieren und/oder Trainieren eines neuronalen Netzwerks verwendeten Daten oder einer Kombination dieser Faktoren abhängen. In mindestens einem Ausführungsbeispiel kann die in 17A dargestellte Inferenz- und/oder Trainingslogik 1715 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung („ASIC“) verwendet werden, wie z. B. der Tensorflow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem NervanaRO-Prozessor (z. B. „Lake Crest“) von Intel Corp. In mindestens einem Ausführungsbeispiel kann die in 17A gezeigte Inferenz- und/oder Trainingslogik 1715 in Verbindung mit Hardware der Zentraleinheit („CPU“), der Grafikverarbeitungseinheit („GPU“) oder anderer Hardware, wie z. B. feldprogrammierbaren Gate-Arrays („FPGAs“), verwendet werden.
  • 17B zeigt Inferenz- und/oder Trainingslogik 1715, gemäß mindestens einem Ausführungsbeispiel verschieden. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 ohne Einschränkung eine Hardwarelogik umfassen, in der Rechenressourcen in Verbindung mit Gewichtungswerten oder anderen Informationen, die einer oder mehreren Schichten von Neuronen innerhalb eines neuronalen Netzwerks entsprechen, dediziert oder anderweitig exklusiv verwendet werden. In mindestens einem Ausführungsbeispiel kann die in 17B dargestellte Inferenz- und/oder Trainingslogik 1715 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung (ASIC) verwendet werden, wie z. B. der Tensorflow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem NervanaRO-Prozessor (z. B. „Lake Crest“) von Intel Corp. In mindestens einem Ausführungsbeispiel kann die in 17B gezeigte Inferenz- und/oder Trainingslogik 1715 in Verbindung mit Hardware der Zentraleinheit (CPU), der Grafikverarbeitungseinheit (GPU) oder anderer Hardware wie FPGAs (Field Programmable Gate Arrays) verwendet werden. In mindestens einem Ausführungsbeispiel umfasst die Inferenz- und/oder Trainingslogik 1715 ohne Einschränkung einen Code- und/oder Datenspeicher 1701 und einen Code- und/oder Datenspeicher 1705, die zum Speichern von Code (z. B. Graphencode), Gewichtungswerten und/oder anderen Informationen, einschließlich Vorgabewerten, Gradienteninformationen, Impulswerten und/oder anderen Parameter- oder Hyperparameterinformationen, verwendet werden können. In mindestens einem Ausführungsbeispiel, das in 17B gezeigt wird, ist jeder der Code- und/oder Datenspeicher 1701 und der Code- und/oder Datenspeicher 1705 mit einer dedizierten Rechenressource assoziiert, wie z.B. der Rechenhardware 1702 bzw. der Rechenhardware 1706. In mindestens einem Ausführungsbeispiel umfasst jede der Rechenhardware 1702 und Rechenhardware 1706 eine oder mehrere ALUs, die mathematische Funktionen, wie lineare algebraische Funktionen, nur auf Informationen ausführen, die im Code- und/oder Datenspeicher 1701 bzw. im Code- und/oder Datenspeicher 1705 gespeichert sind, und deren Ergebnis im Aktivierungsspeicher 1720 gespeichert wird.
  • In mindestens einem Ausführungsbeispiel entsprechen jeder der Code- und/oder Datenspeicher 1701 und 1705 und die entsprechende Rechenhardware 1702 bzw. 1706 verschiedenen Schichten eines neuronalen Netzwerks, so dass die sich aus einem „Speicher-/Rechenpaar 1701/1702“ aus Code- und/oder Datenspeicher 1701 und Rechenhardware 1702 ergebende Aktivierung als Eingabe für das nächste „Speicher-/Rechenpaar 1705/1706“ aus Code- und/oder Datenspeicher 1705 und Rechenhardware 1706 bereitgestellt wird, um die konzeptionelle Organisation eines neuronalen Netzwerks zu spiegeln. In mindestens einem Ausführungsbeispiel kann jedes der Speicher-/Rechenpaare 1701/1702 und 1705/1706 mehr als einer Schicht des neuronalen Netzwerks entsprechen. In mindestens einem Ausführungsbeispiel können zusätzliche Speicher-/Rechenpaare (nicht dargestellt) im Anschluss an oder parallel zu den Speicher-Rechenpaaren 1701/1702 und 1705/1706 in der Inferenz- und/oder Trainingslogik 1715 enthalten sein.
  • Training und Einsatz von neuronalen Netzwerken
  • 18 zeigt gemäß mindestens einem Ausführungsbeispiel das Trainieren und den Einsatz eines Deep Neural Networks. In mindestens einem Ausführungsbeispiel wird ein untrainiertes neuronales Netzwerk 1808 unter Verwenden eines Trainingsdatensatzes 1802 trainiert. In mindestens einem Ausführungsbeispiel ist das Trainings-Framework 1804 ein PyTorch-Framework, während in anderen Ausführungsbeispielen das Trainings-Framework 1804 ein Tensorflow-, Boost-, Caffe-, Microsoft Cognitive Toolkit/CNTK-, MXNet-, Chainer-, Keras-, Deepleaming4j- oder anderes Trainings-Framework ist. In mindestens einem Ausführungsbeispiel trainiert das Trainings-Framework 1804 ein untrainiertes neuronales Netzwerk 1806 und ermöglicht es, dieses unter Verwenden der hierin beschriebenen Verarbeitungsressourcen zu trainieren, um ein trainiertes neuronales Netzwerk 1808 zu generieren. In mindestens einem Ausführungsbeispiel können die Gewichte zufällig oder durch Vortraining unter Verwenden eines Deep Belief Network ausgewählt werden. In mindestens einem Ausführungsbeispiel kann das Trainieren entweder überwacht, teilweise überwacht oder unüberwacht durchgeführt werden.
  • In mindestens einem Ausführungsbeispiel wird ein untrainiertes neuronales Netzwerk 1806 unter Verwenden von beaufsichtigtem Lernen trainiert, wobei der Trainingsdatensatz 1802 eine Eingabe umfasst, die mit einer gewünschten Ausgabe für eine Eingabe gepaart ist, oder wobei der Trainingsdatensatz 1802 eine Eingabe mit einer bekannten Ausgabe enthält und eine Ausgabe des neuronalen Netzwerks 1806 manuell eingestuft wird. In mindestens einem Ausführungsbeispiel wird das untrainierte neuronale Netzwerk 1806 auf überwachte Weise trainiert, verarbeitet Eingaben aus dem Trainingsdatensatz 1802 und vergleicht die resultierenden Ausgaben mit einem Satz von erwarteten oder gewünschten Ausgaben. In mindestens einem Ausführungsbeispiel werden die Fehler dann durch das untrainierte neuronale Netzwerk 1806 zurückpropagiert. In mindestens einem Ausführungsbeispiel passt das Trainings-Framework 1804 die Gewichte an, die das untrainierte neuronale Netzwerk 1806 steuern. In mindestens einem Ausführungsbeispiel enthält das Framework 1804 Werkzeuge, um zu überwachen, wie gut das untrainierte neuronale Netzwerk 1806 zu einem Modell konvergiert, wie z.B. dem trainierten neuronalen Netzwerk 1808, das geeignet ist, basierend auf bekannten Eingabedaten, wie z.B. neuen Daten 1812, korrekte Antworten zu generieren, wie z.B. im Ergebnis 1814. In mindestens einem Ausführungsbeispiel trainiert das Trainings-Framework 1804 das untrainierte neuronale Netzwerk 1806 wiederholt, während es die Gewichte anpasst, um eine Ausgabe des untrainierten neuronalen Netzwerks 1806 unter Verwenden einer Verlustfunktion und eines Anpassungsalgorithmus, wie z. B. des stochastischen Gradientenabstiegs, zu verbessern. In mindestens einem Ausführungsbeispiel trainiert das Trainings-Framework 1804 das untrainierte neuronale Netzwerk 1806, bis das untrainierte neuronale Netzwerk 1806 eine gewünschte Genauigkeit erreicht. In mindestens einem Ausführungsbeispiel kann das trainierte neuronale Netzwerk 1808 dann eingesetzt werden, um eine beliebige Anzahl von maschinellen Lemoperationen zu implementieren.
  • In mindestens einem Ausführungsbeispiel wird das untrainierte neuronale Netzwerk 1806 durch unbeaufsichtigtes Lernen trainiert, wobei das untrainierte neuronale Netzwerk 1806 versucht, sich selbst unter Verwenden unmarkierter Daten zu trainieren. In mindestens einem Ausführungsbeispiel umfasst der Trainingsdatensatz 1802 für unbeaufsichtigtes Lernen Eingabedaten ohne assoziierte Ausführungsdaten oder „Grundwahrheitsdaten“. In mindestens einem Ausführungsbeispiel kann das untrainierte neuronale Netzwerk 1806 Gruppierungen innerhalb des Trainingsdatensatzes 1802 lernen und bestimmen, wie einzelne Eingaben mit dem untrainierten Datensatz 1802 in Beziehung stehen. In mindestens einem Ausführungsbeispiel kann unüberwachtes Trainieren verwendet werden, um eine selbstorganisierende Karte zu generieren, die eine Art trainiertes neuronales Netzwerk 1808 ist, das in der Lage ist, Operationen durchzuführen, die bei der Reduzierung der Dimensionalität neuer Daten 1812 nützlich sind. In mindestens einem Ausführungsbeispiel kann unüberwachtes Trainieren auch dazu verwendet werden, Anomalie-Erkennung durchzuführen, was die Identifizierung von Datenpunkten in einem neuen Datensatz 1812 ermöglicht, die von normalen Mustern des neuen Datensatzes 1812 abweichen.
  • Mindestens in einem Ausführungsbeispiel kann halbüberwachtes Lernen verwendet werden, eine Technik, bei der der Trainingsdatensatz 1802 eine Mischung aus markierten und unmarkierten Daten enthält. In mindestens einem Ausführungsbeispiel kann das Trainings-Framework 1804 verwendet werden, um inkrementelles Lernen durchzuführen, z.B. durch übertragene Lerntechniken. In mindestens einem Ausführungsbeispiel ermöglicht das inkrementelle Lernen dem trainierten neuronalen Netzwerk 1808, sich an neue Daten 1812 anzupassen, ohne das Wissen zu vergessen, das dem Netzwerk während des initialen Trainings eingeflößt wurde.
  • Datenzentrum
  • 19 zeigt ein beispielhaftes Datenzentrum 1900, bei dem mindestens ein Ausführungsbeispiel verwendet werden kann. In mindestens einem Ausführungsbeispiel enthält das Datenzentrum 1900 eine Datenzentrum-Infrastrukturschicht 1910, eine Framework-Schicht 1920, eine Software-Schicht 1930 und eine Anwendungsschicht 1940.
  • In mindestens einem Ausführungsbeispiel, wie in 19 gezeigt, kann die Datenzentrum-Infrastrukturschicht 1910 einen Ressourcen-Orchestrator 1912, gruppierte Rechenressourcen 1914 und Knoten-Rechenressourcen („Knoten C.R.s“) 1916(1)-1916(N) umfassen, wobei „N“ eine beliebige ganze, positive Zahl repräsentiert. In mindestens einem Ausführungsbeispiel können die Knoten-C.R.s 1916(1)-1916(N) eine beliebige Anzahl von zentralen Verarbeitungseinheiten („CPUs“) oder anderen Prozessoren (einschließlich Beschleunigern, feldprogrammierbaren Gate Arrays (FPGAs), Grafikprozessoren usw.), Speichergeräten (z. B, dynamischer Festwertspeicher), Speichergeräte (z. B. Festkörper- oder Festplattenlaufwerke), Netzwerk-Eingabe/Ausgabe-Geräte („NW I/O“), Netzwerk-Switches, virtuelle Maschinen („VMs“), Leistungsmodule und Kühlmodule usw. In mindestens einem Ausführungsbeispiel können ein oder mehrere Knoten-C.R.s unter den Knoten-C.R.s 1916(1)-1916(N) ein Server sein, der über eine oder mehrere der oben erwähnten Rechenressourcen verfügt.
  • In mindestens einem Ausführungsbeispiel können die gruppierten Rechenressourcen 1914 separate Gruppierungen von Knoten-C.R.s umfassen, die in einem oder mehreren Schränken (nicht gezeigt) untergebracht sind, oder viele Schränke, die in Datenzentren an verschiedenen geografischen Standorten untergebracht sind (ebenfalls nicht gezeigt). Separate Gruppierungen von Knoten-C.R.s innerhalb gruppierter Rechenressourcen 1914 können gruppierte Rechen-, Netzwerk-, Speicher- oder Ablage-Ressourcen umfassen, die zur Unterstützung einer oder mehrerer Arbeitslasten konfiguriert oder allokiert sein können. In mindestens einem Ausführungsbeispiel können mehrere Knoten-C.R.s, die CPUs oder Prozessoren enthalten, in einem oder mehreren Schränken gruppiert werden, um Rechenressourcen zur Unterstützung eines oder mehrerer Arbeitslasten bereitzustellen. In mindestens einem Ausführungsbeispiel können ein oder mehrere Schränke auch eine beliebige Anzahl von Leistungsmodulen, Kühlmodulen und Netzwerk-Switches in beliebiger Kombination enthalten.
  • In mindestens einem Ausführungsbeispiel kann der Ressourcen-Orchestrator 1912 einen oder mehrere Knoten-C.R.s 1916(1)-1916(N) und/oder gruppierte Rechenressourcen 1914 konfigurieren oder anderweitig steuern. In mindestens einem Ausführungsbeispiel kann der Ressourcen-Orchestrator 1912 eine Verwaltungseinheit für die Software-Design-Infrastruktur („SDI“) des Datenzentrums 1900 umfassen. In mindestens einem Ausführungsbeispiel kann der Ressourcen-Orchestrator Hardware, Software oder eine Kombination davon enthalten.
  • In mindestens einem Ausführungsbeispiel, wie in 19 gezeigt, umfasst die Framework-Schicht 1920 einen Aufgabenplaner 1932, einen Konfigurationsmanager 1934, einen Ressourcenmanager 1936 und ein verteiltes Dateisystem 1938. In mindestens einem Ausführungsbeispiel kann die Framework-Schicht 1920 ein Framework zur Unterstützung der Software 1932 der Software-Schicht 1930 und/oder einer oder mehrerer Anwendungen 1942 der Anwendungsschicht 1940 umfassen. In mindestens einem Ausführungsbeispiel kann die Software 1932 oder die Anwendung(en) 1942 jeweils web-basierte Dienstsoftware oder Anwendungen umfassen, wie sie von Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt werden. In mindestens einem Ausführungsbeispiel kann die Framework-Schicht 1920 eine Art von freiem und quelloffenem Software-Webanwendungs-Framework wie Apache SparkTM (nachfolgend „Spark“) sein, das das verteilte Dateisystem 1938 für die Verarbeitung großer Datenmengen (z. B. „Big Data“) verwenden kann, ist aber nicht darauf beschränkt. In mindestens einem Ausführungsbeispiel kann der Aufgabenplaner 1932 einen Spark-Treiber enthalten, um die Planung von Arbeitslasten zu erleichtern, die von verschiedenen Schichten des Datenzentrums 1900 unterstützt werden. In mindestens einem Ausführungsbeispiel kann der Konfigurationsmanager 1934 in der Lage sein, verschiedene Schichten wie die Softwareschicht 1930 und die Framework-Schicht 1920, die Spark und das verteilte Dateisystem 1938 umfasst, zu konfigurieren, um die Verarbeitung großer Datenmengen zu unterstützen. In mindestens einem Ausführungsbeispiel kann der Ressourcenmanager 1936 in der Lage sein, geclusterte oder gruppierte Rechenressourcen zu verwalten, die zur Unterstützung des verteilten Dateisystems 1938 und des Aufgabenplaners 1932 zugeordnet sind oder werden. In mindestens einem Ausführungsbeispiel können geclusterte oder gruppierte Rechenressourcen die gruppierte Rechenressource 1914 in der Datenzentrum-Infrastrukturschicht 1910 umfassen. In mindestens einem Ausführungsbeispiel kann der Ressourcenmanager 1936 mit dem Ressourcenorchestrator 1912 koordiniert werden, um diese zugeordneten oder zugewiesenen Rechenressourcen zu verwalten.
  • In mindestens einem Ausführungsbeispiel kann die in der Softwareschicht 1930 enthaltene Software 1932 Software umfassen, die von mindestens Teilen der Knoten C.R.s 1916(1)-1916(N), gruppierten Rechenressourcen 1914 und/oder dem verteilten Dateisystem 1938 der Framework-Schicht 1920 verwendet wird. Eine oder mehrere Arten von Software können Internet-Webseiten-Such-Software, E-Mail-Virus-Scan-Software, Datenbank-Software und Streaming-Video-Content-Software umfassen, sind aber nicht darauf beschränkt.
  • In mindestens einer Ausführungsbeispiel kann (können) die in der Anwendungsschicht 1940 enthaltene(n) Anwendung(en) 1942 eine oder mehrere Arten von Anwendungen umfassen, die von mindestens Teilen der Knoten C.R.s 1916(1) 1916(N), der gruppierten Rechenressourcen 1914 und/oder des verteilten Dateisystems 1938 der Framework-Schicht 1920 verwendet werden. Eine oder mehrere Arten von Anwendungen können eine beliebige Anzahl von Genomanwendungen, kognitiven Berechnungen und Anwendungen für maschinelles Lernen umfassen, einschließlich Software zum Trainieren oder Inferenzieren, Framework-Software für maschinelles Lernen (z.B., PyTorch, TensorFlow, Caffe, etc.) oder andere maschinelle Lemanwendungen, die in Verbindung mit einer oder mehreren Ausführungsbeispielen verwendet werden.
  • In mindestens einem Ausführungsbeispiel kann ein beliebiger Konfigurationsmanager 1934, Ressourcenmanager 1936 und Ressourcenorchestrator 1912 eine beliebige Anzahl und Art von selbstmodifizierenden Aktionen basierend auf einer beliebigen Menge und Art von Daten implementieren, die in einer technisch geeigneten Weise erfasst wurden. In mindestens einem Ausführungsbeispiel können selbstmodifizierende Aktionen einen Betreiber eines Datenzentrums 1900 davon entlasten, möglicherweise schlechte Konfigurationsentscheidungen zu treffen und möglicherweise nicht ausgelastete und/oder schlecht funktionierende Teile eines Datenzentrums zu vermeiden.
  • In mindestens einem Ausführungsbeispiel kann das Datenzentrum 1900 Hilfsmittel, Dienste, Software oder andere Ressourcen enthalten, um ein oder mehrere maschinelle Lernmodelle zu trainieren oder Informationen vorherzusagen oder zu inferieren, indem ein oder mehrere maschinelle Lernmodelle gemäß einem oder mehreren hierin beschriebenen Ausführungsbeispielen verwendet werden. Zum Beispiel kann in mindestens einem Ausführungsbeispiel ein maschinelles Lernmodell trainiert werden, indem Gewichtungsparameter gemäß einer Architektur eines neuronalen Netzwerks unter Verwenden von Software und Rechenressourcen berechnet werden, die oben in Bezug auf das Datenzentrum 1900 beschrieben wurden. In mindestens einem Ausführungsbeispiel können trainierte maschinelle Lernmodelle, die einem oder mehreren neuronalen Netzwerken entsprechen, verwendet werden, um Informationen zu inferieren oder vorherzusagen, wobei die oben beschriebenen Ressourcen in Bezug auf das Datenzentrum 1900 verwendet werden, indem Gewichtungsparameter verwendet werden, die durch eine oder mehrere hierin beschriebene Trainingstechniken berechnet werden.
  • In mindestens einem Ausführungsbeispiel kann das Datenzentrum CPUs, anwendungsspezifische integrierte Schaltungen (ASICs), GPUs, FPGAs oder andere Hardware verwenden, um Trainieren und/oder Inferenzieren unter Verwenden der oben beschriebenen Ressourcen durchzuführen. Darüber hinaus können eine oder mehrere der oben beschriebenen Software- und/oder Hardwareressourcen als Dienst konfiguriert sein, um Benutzern das Trainieren oder Inferenzieren von Informationen zu ermöglichen, wie z. B. Bilderkennung, Spracherkennung oder andere Dienste der künstlichen Intelligenz.
  • Die Inferenz- und/oder Trainingslogik 1715 wird verwendet, um Inferenzieren und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 im System 19 zum Inferenzieren oder für Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwenden von Trainingsoperationen des neuronalen Netzwerks, Funktionen und/oder Architekturen des neuronalen Netzwerks oder hierin beschriebenen Anwendungsfällen des neuronalen Netzwerks berechnet wurden.
  • Autonomes Fahrzeug
  • 20A zeigt ein Beispiel eines autonomen Fahrzeugs 2000 gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann das autonome Fahrzeug 2000 (hier alternativ als „Fahrzeug 2000“ bezeichnet) ohne Einschränkung ein Personenfahrzeug sein, wie z.B. ein Pkw, ein Lkw, ein Bus und/oder eine andere Art von Fahrzeug, das einen oder mehrere Fahrgäste aufnimmt. In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 ein Sattelschlepper sein, der für den Transport von Gütern verwendet wird. In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 ein Flugzeug, ein Roboterfahrzeug oder eine andere Art von Fahrzeug sein.
  • Autonome Fahrzeuge können in Form von Automatisierungsstufen beschrieben werden, die von der National Highway Traffic Safety Administration („NHTSA“), einer Abteilung des US-Verkehrsministeriums, und der Society of Automotive Engineers („SAE“) „Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles“ (z. B. Standard Nr. J3016-201806, veröffentlicht am 15. Juni 2018, Standard Nr. J3016-201609, veröffentlicht am 30. September 2016, sowie frühere und zukünftige Versionen dieses Standards) definiert werden. In einem oder mehreren Ausführungsbeispielen kann das Fahrzeug 2000 eine Funktionalität gemäß einem oder mehreren der Level 1 - Level 5 der autonomen Fahrstufen aufweisen. Zum Beispiel kann das Fahrzeug 2000 in mindestens einem Ausführungsbeispiel je nach Ausführungsbeispiel zu einer bedingten Automatisierung (Level 3), einer hohen Automatisierung (Level 4) und/oder einer vollständigen Automatisierung (Level 5) fähig sein.
  • In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 ohne Einschränkung Komponenten wie ein Fahrgestell, eine Fahrzeugkarosserie, Räder (z.B. 2, 4, 6, 8, 18, usw.), Reifen, Achsen und andere Fahrzeugkomponenten enthalten. In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 ohne Einschränkung ein Antriebssystem 2050 umfassen, wie z.B. einen Verbrennungsmotor, ein Hybrid-Elektro-Kraftwerk, einen vollelektrischen Motor und/oder einen anderen Antriebssystemtyp. In mindestens einem Ausführungsbeispiel kann das Antriebssystem 2050 mit einem Antriebsstrang des Fahrzeugs 2000 verbunden sein, der ohne Einschränkung ein Getriebe enthalten kann, um den Antrieb des Fahrzeugs 2000 zu ermöglichen. In mindestens einem Ausführungsbeispiel kann das Antriebssystem 2050 in Reaktion auf das Empfangen von Signalen von einer Drosselklappe/Beschleunigungseinrichtung(en) 2052 gesteuert werden.
  • In mindestens einem Ausführungsbeispiel wird ein Lenksystem 2054, das ohne Einschränkung ein Lenkrad umfassen kann, verwendet, um ein Fahrzeug 2000 (z.B. entlang eines gewünschten Weges oder einer Route) zu lenken, wenn ein Antriebssystem 2050 betrieben wird (z.B. wenn das Fahrzeug in Bewegung ist). In mindestens einem Ausführungsbeispiel kann ein Lenksystem 2054 Signale von Lenkaktuator(en) 2056 empfangen. Das Lenkrad kann optional für die Funktionalität der Vollautomatisierung (Level 5) sein. In mindestens einem Ausführungsbeispiel kann ein Bremssensorsystem 2046 verwendet werden, um Fahrzeugbremsen in Reaktion auf empfangene Signale von Bremsaktuator(en) 2048 und/oder Bremssensoren zu betreiben.
  • In mindestens einem Ausführungsbeispiel liefern Steuergeräte 2036, die ohne Einschränkung ein oder mehrere System-on-a-Chips („SoCs“) (in 20A nicht dargestellt) und/oder Grafikverarbeitungseinheiten („GPU(s)“) umfassen können, Signale (z. B. repräsentativ für Befehle) an eine oder mehrere Komponenten und/oder Systeme des Fahrzeugs 2000. In mindestens einem Ausführungsbeispiel kann (können) das (die) Steuergerät(e) 2036 beispielsweise Signale zum Betreiben der Fahrzeugbremsen über die Bremsaktuatoren 2048, zum Betreiben des Lenksystems 2054 über den (die) Lenkaktuator(en) 2056 und zum Betreiben des Antriebssystems 2050 über das (die) Gaspedal/Beschleunigungspedal(e) 2052 senden. Das (die) Steuergerät(e) 2036 kann (können) ein oder mehrere integrierte (z. B, integrierte) Rechengeräte (z.B. Supercomputer) enthalten, die Sensorsignale verarbeiten und Betriebsbefehle (z.B. Signale, die Befehle repräsentieren) ausgeben, um autonomes Fahren zu ermöglichen und/oder einen menschlichen Fahrer beim Fahren des Fahrzeugs 2000 zu unterstützen. In mindestens einem Ausführungsbeispiel kann/können das/die Steuergerät(e) 2036 ein erstes Steuergerät 2036 für autonome Fahrfunktionen, ein zweites Steuergerät 2036 für funktionale Sicherheitsfunktionen, ein drittes Steuergerät 2036 für Funktionen der künstlichen Intelligenz (z.B. computergestützte Vision), ein viertes Steuergerät 2036 für Infotainment-Funktionen, ein fünftes Steuergerät 2036 für Redundanz in Notfällen und/oder andere Steuergeräte enthalten. In mindestens einem Ausführungsbeispiel kann ein einzelnes Steuergerät 2036 zwei oder mehr der oben genannten Funktionalitäten handhaben, zwei oder mehr Steuergeräte 2036 können eine einzige Funktionalität handhaben, und/oder eine beliebige Kombination davon.
  • In mindestens einem Ausführungsbeispiel stellen das/die Steuergerät(e) 2036 Signale zur Steuerung einer oder mehrerer Komponenten und/oder Systeme des Fahrzeugs 2000 in Reaktion auf Sensordaten bereit, die von einem oder mehreren Sensoren empfangen werden (z.B. Sensoreingaben). In mindestens einem Ausführungsbeispiel können Sensordaten beispielsweise und ohne Einschränkung von einem oder mehreren GNSS-Sensor(en) 2058 empfangen werden (z.B., Global Positioning System-Sensor(en)), RADAR-Sensor(en) 2060, Ultraschallsensor(en) 2062, LIDAR-Sensor(en) 2064, Trägheitsmesseinheit („IMU“)-Sensor(en) 2066 (z.B. Beschleunigungsmesser, Gyroskop(e), Magnetkompass(e), Magnetometer usw.), Mikrofon(en) 2096, Stereokamera(s) 2068, Weitwinkelkamera(s) 2070 (z.B., Fischaugenkameras), Infrarotkamera(n) 2072, Umgebungskamera(n) 2074 (z.B. 360-Grad-Kameras), Weitbereichskameras (nicht in 20A dargestellt), Mittelbereichskamera(n) (nicht in 20A dargestellt), Geschwindigkeitssensor(en) 2044 (z.B. zur Messung der Geschwindigkeit des Fahrzeugs 2000), Vibrationssensor(en) 2042, Lenksensor(en) 2040, Bremssensor(en) (z.B. als Teil des Bremssensorsystems 2046) und/oder andere Sensortypen.
  • In mindestens einem Ausführungsbeispiel können ein oder mehrere Steuergeräte 2036 Eingaben (z. B. repräsentiert durch Eingabedaten) von einem Instrumentencluster 2032 des Fahrzeugs 2000 empfangen und Ausgaben (z. B. repräsentiert durch Ausgabedaten, Anzeigedaten usw.) über eine Anzeige 2034 der Mensch-Maschine-Schnittstelle („HMI“), einen akustischen Melder, einen Lautsprecher und/oder über andere Komponenten des Fahrzeugs 2000 bereitstellen. In mindestens einem Ausführungsbeispiel können die Ausgaben Informationen wie Fahrzeuggeschwindigkeit, Drehzahl, Zeit, Kartendaten (z.B. eine hochauflösende Karte (in 20A nicht dargestellt), Standortdaten (z.B. der Standort des Fahrzeugs 2000, wie auf einer Karte), Richtung, Standort anderer Fahrzeuge (z.B. ein Belegungsraster), Informationen über Objekte und den Status von Objekten, wie sie von dem/den Steuergerät(en) 2036 wahrgenommen werden, usw. umfassen. Zum Beispiel kann in mindestens einem Ausführungsbeispiel die HMI-Anzeige 2034 Informationen über das Vorhandensein eines oder mehrerer Objekte (z.B. ein Straßenschild, ein Warnschild, eine sich ändernde Ampel usw.) und/oder Informationen über Fahrmanöver anzeigen, die das Fahrzeug durchgeführt hat, gerade durchführt oder durchführen wird (z.B. Spurwechsel jetzt, Ausfahrt 34B in zwei Meilen usw.).
  • In mindestens einem Ausführungsbeispiel enthält das Fahrzeug 2000 ferner eine Netzwerkschnittstelle 2024, die drahtlose Antenne(n) 2026 und/oder Modem(e) zur Kommunikation über ein oder mehrere Netzwerke verwenden kann. In mindestens einem Ausführungsbeispiel kann die Netzwerkschnittstelle 2024 beispielsweise in der Lage sein, über Long-Term Evolution („LTE“), Wideband Code Division Multiple Access („WCDMA“), Universal Mobile Telecommunications System („UMTS“), Global System for Mobile communication („GSM“), IMT-CDMA Multi-Carrier („CDMA2000“), etc. zu kommunizieren. In mindestens einem Ausführungsbeispiel können die drahtlose(n) Antenne(n) 2026 auch die Kommunikation zwischen Objekten in der Umgebung (z. B. Fahrzeuge, mobile Geräte usw.) ermöglichen, indem sie lokale Netzwerke wie Bluetooth, Bluetooth Low Energy („LE“), Z-Wave, ZigBee usw. und/oder Wide Area Networks mit geringer Leistung („LPWANs“) wie LoRaWAN, SigFox usw. verwenden.
  • Die Inferenz- und/oder Trainingslogik 1715 wird verwendet, um Inferenzieren und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 im System 20A zum Inferenzieren oder Vorhersagen verwendet werden, basierend zumindest teilweise auf Gewichtsparametern, die unter Verwenden von Trainingsoperationen des neuronalen Netzwerks, Funktionen und/oder Architekturen des neuronalen Netzwerks oder hierin beschriebenen Anwendungsfällen des neuronalen Netzwerks berechnet wurden.
  • 20B zeigt gemäß mindestens einem Ausführungsbeispiel ein Beispiel für Kamerapositionen und Sichtfelder für das autonome Fahrzeug 2000 aus 20A. In mindestens einem Ausführungsbeispiel stellen die Kameras und die jeweiligen Sichtfelder ein Ausführungsbeispiel dar und sind nicht als einschränkend zu betrachten. Beispielsweise können in mindestens einem Ausführungsbeispiel zusätzliche und/oder alternative Kameras enthalten sein und/oder die Kameras können an unterschiedlichen Kamerapositionen am Fahrzeug 2000 angeordnet sein.
  • In mindestens einem Ausführungsbeispiel können Kameratypen für Kameras Digitalkameras umfassen, die zur Verwendung mit Komponenten und/oder Systemen des Fahrzeugs 2000 ausgebildet sein können, sind aber nicht darauf beschränkt. Die Kamera(s) kann/können auf der automobilen Sicherheitsintegritätsstufe („ASIL“) B und/oder auf einer anderen ASIL betrieben werden. In mindestens einem Ausführungsbeispiel können die Kameratypen jede beliebige Bildaufnahmerate, wie z. B. 60 Bilder pro Sekunde (fps), 1220 fps, 240 fps usw., je nach Ausführungsbeispiel verwenden In mindestens einem Ausführungsbeispiel können die Kameras Rolling Shutter, Global Shutter, einen anderen Verschlusstyp oder eine Kombination davon verwenden. In mindestens einem Ausführungsbeispiel kann das Farbfilter Array ein Rot-Klar-Klar-Klar („RCCC“) Farbfilter Array, ein Rot-Klar-Klar-Blau („RCCB“) Farbfilter Array, ein Rot-Blau-Grün-Klar („RBGC“) Farbfilter Array, ein Foveon X3 Farbfilter Array, ein Bayer Sensoren („RGGB“) Farbfilter Array, ein Monochrom Sensor Farbfilter Array und/oder eine andere Art von Farbfilter Array enthalten. In mindestens einem Ausführungsbeispiel können zur Erhöhung der Lichtempfindlichkeit Clear-Pixel-Kameras, wie z. B. Kameras mit einem RCCC-, einem RCCB- und/oder einem RBGC-Farbfilter-Array, verwendet werden.
  • In mindestens einem Ausführungsbeispiel können eine oder mehrere Kameras verwendet werden, um Advanced Driver Assistance Systems („ADAS“) Funktionen auszuführen (z. B. als Teil eines redundanten oder ausfallsicheren Designs). In mindestens einem Ausführungsbeispiel kann zum Beispiel eine Multifunktions-Monokamera eingebaut werden, die Funktionen wie Spurhalteassistent, Verkehrszeichenassistent und intelligente Scheinwerfersteuerung umfasst. In mindestens einem Ausführungsbeispiel können eine oder mehrere der Kameras (z.B. alle Kameras) simultan Bilddaten (z.B. Video) aufzeichnen und bereitstellen.
  • In mindestens einem Ausführungsbeispiel können eine oder mehrere Kameras in einer Montagevorrichtung, wie z. B. einer kundenspezifisch entworfenen (dreidimensionalen („3D“) gedruckten) Vorrichtung, montiert werden, um Streulicht und Reflexionen aus dem Fahrzeuginneren (z. B. Reflexionen vom Armaturenbrett, die in den Windschutzscheibenspiegeln reflektiert werden) auszuschalten, die die Bilddatenerfassungsfähigkeiten der Kamera stören können. Mindestens in einem Ausführungsbeispiel können die Seitenspiegel-Baugruppen individuell in 3D gedruckt werden, so dass die Kameramontageplatte der Form des Seitenspiegels entspricht. In mindestens einem Ausführungsbeispiel kann/können die Kamera(s) in den Seitenspiegel integriert werden. Bei Seitenkameras kann/können die Kamera(s) auch in vier Säulen an jeder Ecke des Fahrerhauses integriert seinIn mindestens einem Ausführungsbeispiel.
  • In mindestens einem Ausführungsbeispiel können Kameras mit einem Sichtfeld, das Teile der Umgebung vor dem Fahrzeug 2000 umfasst (z.B. nach vorne gerichtete Kameras), für die Rundumsicht verwendet werden, um dabei zu helfen, nach vorne gerichtete Pfade und Hindernisse zu identifizieren, und um mit Hilfe eines oder mehrerer Steuergeräte 2036 und/oder Steuer-SoCs Informationen bereitzustellen, die für die Generierung eines Belegungsgitters und/oder das Bestimmen bevorzugter Fahrzeugpfade entscheidend sind. In mindestens einem Ausführungsbeispiel können nach vorne gerichtete Kameras verwendet werden, um viele der gleichen ADAS-Funktionen wie LIDAR auszuführen, einschließlich, ohne Einschränkung, Notbremsung, Fußgängererkennung und Kollisionsvermeidung. In mindestens einem Ausführungsbeispiel können nach vorne gerichtete Kameras auch für ADAS-Funktionen und - Systeme verwendet werden, einschließlich, aber nicht beschränkt auf Spurverlassenswarnungen („LDW“), autonome Geschwindigkeitsregelung („ACC“) und/oder andere Funktionen wie Verkehrszeichenerkennung.
  • In mindestens einem Ausführungsbeispiel kann eine Vielzahl von Kameras in einer nach vorne gerichteten Konfiguration verwendet werden, die beispielsweise eine monokulare Kameraplattform umfassen kann, die einen CMOS-Farbbildwandler („complementary metal oxide semiconductor“) enthält. In mindestens einem Ausführungsbeispiel kann die Weitwinkelkamera 2070 verwendet werden, um Objekte zu erkennen, die von der Peripherie her ins Blickfeld kommen (z. B. Fußgänger, kreuzende Fahrzeuge oder Fahrräder). Obwohl in 20B nur eine Weitwinkelkamera 2070 gezeigt ist, kann in anderen Ausführungsbeispielen eine beliebige Anzahl (einschließlich Null) von Weitwinkelkameras 2070 am Fahrzeug 2000 vorhanden sein. In mindestens einem Ausführungsbeispiel kann eine beliebige Anzahl von Weitwinkelkamera(s) 2098 (z.B. ein Weitwinkel-Stereokamerapaar) zur tiefenbasierten Objekterkennung verwendet werden, insbesondere für Objekte, für die ein neuronales Netzwerk noch nicht trainiert wurde. In mindestens einem Ausführungsbeispiel kann/können die Langstreckenkamera(s) 2098 auch zur Objekterkennung und -klassifizierung sowie zur grundlegenden Objektnachführung verwendet werden.
  • In mindestens einem Ausführungsbeispiel kann auch eine beliebige Anzahl von Stereokamera(s) 2068 in einer nach vorne gerichteten Konfiguration enthalten sein. In mindestens einem Ausführungsbeispiel kann eine oder mehrere der Stereokamera(s) 2068 ein integriertes Steuergerät umfassen, das eine skalierbare Verarbeitungseinheit umfasst, die eine programmierbare Logik („FPGA“) und einen Multi-Kern-Mikroprozessor mit einer integrierten Netzwerkschnittstelle („CAN“) oder Ethernet-Schnittstelle auf einem einzigen Chip bereitstellen kann. In mindestens einem Ausführungsbeispiel kann eine solche Einheit verwendet werden, um eine 3D-Karte der Umgebung des Fahrzeugs 2000 zu generieren, die eine Abschätzung der Distanz für alle Punkte im Bild umfasst. In mindestens einem Ausführungsbeispiel kann eine oder mehrere der Stereokamera(s) 2068 ohne Einschränkung kompakte(n) Stereobildsensor(en) umfassen, die ohne Einschränkung zwei Kameralinsen (je eine links und rechts) und einen Bildverarbeitungschip umfassen können, der die Distanz zwischen Fahrzeug 2000 und Zielobjekt messen und generierte Informationen (z. B. Metadaten) verwenden kann, um autonome Notbrems- und Spurhaltewarnfunktionen zu aktivieren. In mindestens einem Ausführungsbeispiel können auch andere Arten von Stereokameras 2068 zusätzlich oder alternativ zu den hier beschriebenen verwendet werden.
  • In mindestens einem Ausführungsbeispiel können Kameras mit einem Sichtfeld, das Teile der Umgebung seitlich des Fahrzeugs 2000 umfasst (z.B. Seitenkameras), für die Umgebungsansicht verwendet werden und Informationen liefern, die zur Erstellung und Aktualisierung des Belegungsgitters sowie zur Generierung von Seitenaufprallwarnungen verwendet werden. In mindestens einem Ausführungsbeispiel könnte(n) die Umgebungskamera(s) 2074 (z. B. vier Umgebungskameras 2074, wie in 20B gezeigt) am Fahrzeug 2000 positioniert werden. Die Umgebungskamera(s) 2074 kann/können ohne Einschränkung eine beliebige Anzahl und Kombination von Weitwinkelkamera(s) 2070, Fischaugenkamera(s), 360-Grad-Kamera(s) und/oder dergleichen umfassen. Beispielsweise können in mindestens einem Ausführungsbeispiel vier Fischaugenkameras an der Vorderseite, der Rückseite und den Seiten des Fahrzeugs 2000 angebracht sein. In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 drei Surround-Kamera(s) 2074 (z.B. links, rechts und hinten) verwenden und eine oder mehrere andere Kamera(s) (z.B. eine nach vorne gerichtete Kamera) als vierte Surround-View-Kamera einsetzen.
  • In mindestens einem Ausführungsbeispiel können Kameras mit einem Sichtfeld, das Teile der Umgebung hinter dem Fahrzeug 2000 umfasst (z.B. Rückfahrkameras), für die Einparkhilfe, die Umgebungsansicht, die Heckkollisionswarnungen und die Erstellung und Aktualisierung des Belegungsgitters verwendet werden. In mindestens einem Ausführungsbeispiel kann eine Vielzahl von Kameras verwendet werden, einschließlich, aber nicht beschränkt auf, Kameras, die auch als nach vorne gerichtete Kamera(s) geeignet sind (z.B. Weitbereichskameras 2098 und/oder Mittelbereichskamera(s) 2076, Stereokamera(s) 2068), Infrarotkamera(s) 2072, usw.), wie hierin beschrieben.
  • Die Inferenz- und/oder Trainingslogik 1715 wird verwendet, um Inferenzieren und/oder Trainieren in Verbindung mit einem oder mehreren Ausführungsbeispielen durchzuführen. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 im System 20B zum Inferenzieren oder Vorhersagen verwendet werden, basierend zumindest teilweise auf Gewichtsparametern, die unter Verwenden von Trainingsoperationen des neuronalen Netzwerks, Funktionen und/oder Architekturen des neuronalen Netzwerks oder hierin beschriebenen Anwendungsfällen des neuronalen Netzwerks berechnet wurden.
  • 20C ist ein Blockdiagramm, das eine beispielhafte Systemarchitektur für das autonome Fahrzeug 2000 von 20A gemäß mindestens einem Ausführungsbeispiel zeigt. In mindestens einem Ausführungsbeispiel ist jedes der Komponenten, Merkmale und Systeme des Fahrzeugs 2000 in 20C als über einen Bus 2002 verbunden gezeigt. In mindestens einem Ausführungsbeispiel kann der Bus 2002 ohne Einschränkung eine CAN-Datenschnittstelle (hierin alternativ als „CAN-Bus“ bezeichnet) enthalten. In mindestens einem Ausführungsbeispiel kann ein CAN ein Netzwerk innerhalb des Fahrzeugs 2000 sein, das zur Unterstützung der Steuerung verschiedener Merkmale und Funktionalitäten des Fahrzeugs 2000 verwendet wird, wie z. B. Betätigung der Bremsen, Beschleunigung, Bremsen, Aktuator, Scheibenwischer usw. In mindestens einem Ausführungsbeispiel kann der Bus 2002 so konfiguriert sein, dass er Dutzende oder sogar Hunderte von Knoten enthält, von denen jeder seinen eigenen eindeutigen Identifikator (z. B. eine CAN-ID) hat. In mindestens einem Ausführungsbeispiel kann der Bus 2002 ausgelesen werden, um den Lenkradwinkel, die Fahrgeschwindigkeit, die Motordrehzahl, die Position der Tasten und/oder andere Fahrzeugstatusanzeigen zu ermitteln. In mindestens einem Ausführungsbeispiel kann der Bus 2002 ein CAN-Bus sein, der ASIL B-konform ist.
  • In mindestens einem Ausführungsbeispiel können zusätzlich zu oder alternativ zu CAN auch FlexRay und/oder Ethernet verwendet werden. In mindestens einem Ausführungsbeispiel kann es eine beliebige Anzahl von Bussen 2002 geben, die ohne Einschränkung null oder mehr CAN-Busse, null oder mehr FlexRay-Busse, null oder mehr Ethernet-Busse und/oder null oder mehr andere Arten von Bussen, die ein anderes Protokoll verwenden, umfassen können. In mindestens einem Ausführungsbeispiel können zwei oder mehr Busse 2002 verwendet werden, um unterschiedliche Funktionalitäten auszuführen, und/oder sie können zur Redundanz verwendet werden. Beispielsweise kann ein erster Bus 2002 für die Funktionalität der Kollisionsvermeidung verwendet werden und ein zweiter Bus 2002 kann für die Steuerung der Aktuatoren verwendet werden. In mindestens einem Ausführungsbeispiel kann jeder Bus 2002 mit beliebigen Komponenten des Fahrzeugs 2000 kommunizieren, und zwei oder mehr Busse 2002 können mit denselben Komponenten kommunizieren. In mindestens einem Ausführungsbeispiel kann jedes von einer beliebigen Anzahl von System-on-a-Chip(s) („SoC(s)“) 2004, jedes von Steuergeräten 2036 und/oder jeder Computer innerhalb des Fahrzeugs Zugang zu denselben Eingabedaten haben (z.B. Eingaben von Sensoren des Fahrzeugs 2000) und kann mit einem gemeinsamen Bus, wie dem CAN-Bus, verbunden sein.
  • In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 ein oder mehrere Steuergeräte 2036 umfassen, wie sie hierin in Bezug auf 20A beschrieben sind. Steuergerät(e) 2036 können für eine Vielzahl von Funktionen verwendet werden. In mindestens einem Ausführungsbeispiel kann (können) das (die) Steuergerät(e) 2036 mit verschiedenen anderen Komponenten und Systemen des Fahrzeugs 2000 gekoppelt sein und kann (können) zur Steuerung des Fahrzeugs 2000, zur künstlichen Intelligenz des Fahrzeugs 2000, zum Infotainment für das Fahrzeug 2000 und/oder ähnlichem verwendet werden.
  • In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 eine beliebige Anzahl von SoCs 2004 enthalten. Jeder der SoCs 2004 kann, ohne Einschränkung, zentrale Verarbeitungseinheiten („CPU(s)“) 2006, Grafikverarbeitungseinheiten („GPU(s)“) 2008, Prozessor(en) 2010, Cache(s) 2012, Beschleuniger(s) 2014, Datenspeicher(s) 2016 und/oder andere nicht gezeigte Komponenten und Merkmale umfassen. In mindestens einem Ausführungsbeispiel können die SoC(s) 2004 zur Steuerung des Fahrzeugs 2000 in einer Vielzahl von Plattformen und Systemen verwendet werden. Beispielsweise können in mindestens einem Ausführungsbeispiel SoC(s) 2004 in einem System (z.B. dem System des Fahrzeugs 2000) mit einer High-Definition („HD“)-Karte 2022 kombiniert werden, die über die Netzwerkschnittstelle 2024 von einem oder mehreren Servern (in 20C nicht dargestellt) Aktualisierungen der Karte und/oder Updates erhalten kann.
  • In mindestens einem Ausführungsbeispiel kann (können) die CPU(s) 2006 einen CPU-Cluster oder CPU-Komplex umfassen (hierin alternativ als „CCPLEX“ bezeichnet). In mindestens einem Ausführungsbeispiel kann (können) die CPU(s) 2006 mehrere Kerne und/oder Level-2-Caches („L2“) umfassen. In mindestens einem Ausführungsbeispiel kann (können) die CPU(s) 2006 beispielsweise acht Kerne in einer kohärenten Multiprozessorkonfiguration enthalten. In mindestens einem Ausführungsbeispiel kann die CPU(s) 2006 vier Dual-Core-Cluster umfassen, wobei jeder Cluster über einen dedizierten L2-Cache (z. B. einen 2 MB L2-Cache) verfügt. In mindestens einem Ausführungsbeispiel kann (können) die CPU(s) 2006 (z.B. CCPLEX) so konfiguriert sein, dass sie einen simultanen Clusterbetrieb unterstützen, so dass eine beliebige Kombination von Clustern von CPU(s) 2006 zu einem beliebigen Zeitpunkt aktiv sein kann.
  • In mindestens einem Ausführungsbeispiel kann(n) eine oder mehrere der CPU(s) 2006 Energieverwaltungsfunktionen implementieren, die ohne Einschränkung eines oder mehrere der folgenden Merkmale umfassen: einzelne Hardwareblöcke können im Leerlauf automatisch getaktet werden, um dynamische Leistung zu speichern; jeder Kerntakt kann getaktet werden, wenn der Kern aufgrund der Ausführung von Wait for Interrupt („WFI“)/Wait for Event („WFE“)-Befehlen nicht aktiv Befehle ausführt; jeder Kern kann unabhängig stromgesteuert sein; jeder Kern-Cluster kann unabhängig taktgesteuert sein, wenn alle Kerne taktgesteuert oder stromgesteuert sind; und/oder jeder Kern-Cluster kann unabhängig stromgesteuert sein, wenn alle Kerne stromgesteuert sind. In mindestens einem Ausführungsbeispiel kann/können die CPU(s) 2006 ferner einen verbesserten Algorithmus für die Verwaltung von Energiezuständen implementieren, bei dem zulässige Energiezustände und erwartete Aufwachzeiten spezifiziert werden und die Hardware/der Mikrocode den besten Energiezustand bestimmt, der für Kern, Cluster und CCPLEX einzunehmen ist. In mindestens einem Ausführungsbeispiel können Prozessorkerne vereinfachte Sequenzen für den Eintritt in den Energiezustand in Software unterstützen, wobei die Arbeit an den Mikrocode ausgelagert wird.
  • In mindestens einem Ausführungsbeispiel kann (können) die GPU(s) 2008 eine integrierte GPU umfassen (hier alternativ als „iGPU“ bezeichnet). In mindestens einem Ausführungsbeispiel kann (können) GPU(s) 2008 programmierbar sein und für parallele Arbeitslasten effizient sein. In mindestens einem Ausführungsbeispiel kann die GPU(s) 2008 in mindestens einem Ausführungsbeispiel einen verbesserten Tensor-Befehlssatz verwenden. In mindestens einem Ausführungsbeispiel kann (können) GPU(s) 2008 einen oder mehrere Streaming-Mikroprozessoren enthalten, wobei jeder Streaming-Mikroprozessor einen Level-1-Cache („L1“) umfassen kann (z. B. einen L1-Cache mit mindestens 96 KB Speicher) und zwei oder mehr Streaming-Mikroprozessoren gemeinsam einen L2-Cache nutzen können (z. B. einen L2-Cache mit 512 KB Speicher). In mindestens einem Ausführungsbeispiel kann (können) die GPU(s) 2008 mindestens acht Streaming-Mikroprozessoren umfassen. In mindestens einem Ausführungsbeispiel kann (können) GPU(s) 2008 eine oder mehrere Programmierschnittstellen (API(s)) für Berechnungen verwenden. In mindestens einem Ausführungsbeispiel kann/können GPU(s) 2008 eine oder mehrere parallele Rechenplattformen und/oder Programmiermodelle (z. B. NVIDIAs CUDA) verwenden.
  • In mindestens einem Ausführungsbeispiel können eine oder mehrere GPU(s) 2008 für die beste Leistung in automobilen und eingebetteten Anwendungsfällen energieoptimiert sein. In einem Ausführungsbeispiel könnte(n) die GPU(s) 2008 beispielsweise auf einem Fin-Feld-Effekt-Transistor („FinFET“) hergestellt werden. In mindestens einem Ausführungsbeispiel kann jeder Streaming-Mikroprozessor eine Anzahl von in mehrere Blöcke unterteilten gemischt-präzisen Verarbeitungskernen enthalten. Beispielsweise könnten 64 PF32-Kerne und 32 PF64-Kerne in vier Verarbeitungsblöcke unterteilt werden. In mindestens einem Ausführungsbeispiel könnten jedem Verarbeitungsblock 16 FP32 Kerne, 8 FP64 Kerne, 16 INT32 Kerne, zwei gemischtpräzise NVIDIA TENSOR COREs für Deep Leaming-Matrixarithmetik, ein Level-Null („L0“)-Befehlscache, ein Warp-Planer, eine Verteilungseinheit und/oder eine 64-KB-Registerdatei zugewiesen werden. In mindestens einem Ausführungsbeispiel können Streaming-Mikroprozessoren unabhängige parallele Ganzzahl- und Gleitkomma-Datenpfade umfassen, um eine effiziente Ausführung von Arbeitslasten mit einer Mischung aus Berechnungen und Adressierungsberechnungen zu ermöglichen. In mindestens einem Ausführungsbeispiel können Streaming-Mikroprozessoren eine unabhängige Thread-Planungsfunktion umfassen, um eine feingranulare Synchronisierung und Zusammenarbeit zwischen parallelen Threads zu ermöglichen. In mindestens einem Ausführungsbeispiel können Streaming-Mikroprozessoren eine kombinierte L1-Datencache- und gemeinsam genutzte Speicher-Einheit umfassen, um die Leistung zu verbessern und gleichzeitig die Programmierung zu vereinfachen.
  • In mindestens einem Ausführungsbeispiel können eine oder mehrere GPU(s) 2008 einen Speicher mit hoher Bandbreite („HBM“) und/oder ein 16-GB-HBM2-Speicher-Subsystem umfassen, um in einigen Ausführungsbeispielen eine Spitzen-Speicherbandbreite von etwa 900 GB/Sekunde bereitzustellen. In mindestens einem Ausführungsbeispiel kann zusätzlich oder alternativ zum HBM-Speicher ein synchroner Grafik-Direktzugriffsspeicher („SGRAM“) verwendet werden, wie z.B. ein synchroner Grafik-Doppeldatenraten-Direktzugriffsspeicher vom Typ 5 („GDDR5“).
  • In mindestens einem Ausführungsbeispiel können die GPU(s) 2008 die Unified-Memory-Technologie umfassen. In mindestens einem Ausführungsbeispiel kann die Unterstützung von Adressübersetzungsdiensten („ATS“) verwendet werden, um GPU(s) 2008 den direkten Zugriff auf Seitentabellen der CPU(s) 2006 zu ermöglichen. In mindestens einem Ausführungsbeispiel kann bei einem Fehlversuch der GPU(s) 2008 Speicherverwaltungseinheit („MMU“) eine Adressübersetzungsanforderung an die CPU(s) 2006 übermittelt werden. Als Antwort darauf kann CPU(s) 2006 in ihren Seitentabellen nach einer virtuell-physikalischen Adresszuordnung suchen und die Übersetzung in mindestens einem Ausführungsbeispiel an GPU(s) 2008 zurücksenden. In mindestens einem Ausführungsbeispiel kann die Unified-Memory-Technologie einen einzigen einheitlichen virtuellen Adressraum für den Speicher sowohl der CPU(s) 2006 als auch der GPU(s) 2008 ermöglichen, wodurch die Programmierung der GPU(s) 2008 und die Portierung von Anwendungen auf die GPU(s) 2008 vereinfacht wird.
  • In mindestens einem Ausführungsbeispiel kann GPU(s) 2008 eine beliebige Anzahl von Zugriffszählern umfassen, die die Häufigkeit des Zugriffs von GPU(s) 2008 auf den Speicher anderer Prozessoren verfolgen können. In mindestens einem Ausführungsbeispiel können Zugriffszähler dazu beitragen, dass Speicherseiten in den physischen Speicher desjenigen Prozessors verschoben werden, der am häufigsten auf Seiten zugreift, wodurch die Effizienz von Speicherbereichen, die von Prozessoren gemeinsam genutzt werden, verbessert wird.
  • In mindestens einem Ausführungsbeispiel kann einer oder mehrere der SoC(s) 2004 eine beliebige Anzahl von Cache(s) 2012 umfassen, einschließlich der hierin beschriebenen. In mindestens einem Ausführungsbeispiel könnte(n) der/die Cache(s) 2012 beispielsweise einen Level-1-Cache („L3“) umfassen, der sowohl für die CPU(s) 2006 als auch für die GPU(s) 2008 verfügbar ist (z. B. der sowohl mit der/den CPU(s) 2006 als auch mit der/den GPU(s) 2008 verbunden ist). In mindestens einem Ausführungsbeispiel kann (können) der (die) Cache(s) 2012 einen Write-Back-Cache umfassen, der die Zustände von Zeilen nachführen kann, beispielsweise durch Verwendung eines Cache-Kohärenzprotokolls (z. B. MEI, MESI, MSI usw.). In mindestens einem Ausführungsbeispiel kann der L3-Cache 4 MB oder mehr umfassen, je nach Ausführungsbeispiel, obwohl auch kleinere Cache-Größen verwendet werden können.
  • In mindestens einem Ausführungsbeispiel können ein oder mehrere SoC(s) 2004 einen oder mehrere Beschleuniger 2014 umfassen (z.B. Hardwarebeschleuniger, Softwarebeschleuniger oder eine Kombination davon). In mindestens einem Ausführungsbeispiel kann (können) der (die) SoC(s) 2004 einen Hardware-Beschleunigungs-Cluster enthalten, der optimierte Hardware-Beschleuniger und/oder einen großen On-Chip-Speicher umfassen kann. In mindestens einem Ausführungsbeispiel kann ein großer On-Chip-Speicher (z. B. 4 MB SRAM) dem Hardware-Beschleunigungscluster ermöglichen, neuronale Netzwerke und andere Berechnungen zu beschleunigen. In mindestens einem Ausführungsbeispiel kann der Hardware-Beschleunigungscluster zur Ergänzung der GPU(s) 2008 und zur Entlastung einiger Aufgaben der GPU(s) 2008 verwendet werden (z. B. um mehr Zyklen der GPU(s) 2008 für die Durchführung anderer Aufgaben freizugeben). In mindestens einem Ausführungsbeispiel könnte(n) der/die Beschleuniger 2014 für gezielte Arbeitslasten (z. B. Erfassung, Convolutional Neural Networks („CNNs“), rekurrente neuronale Netzwerke („RNNs“) usw.) verwendet werden, die stabil genug sind, um für eine Beschleunigung in Frage zu kommen. In mindestens einem Ausführungsbeispiel kann ein CNN ein auf einem Bereich basierendes oder regionales Convolutional Neural Network („RCNNs“) und Fast RCNs (z.B. wie für die Objekterkennung verwendet) oder eine andere Art von CNN enthalten.
  • In mindestens einem Ausführungsbeispiel kann/können der/die Beschleuniger 2014 (z. B. Hardware-Beschleunigungscluster) einen Deep Learning-Beschleuniger („DLA“) enthalten. Der (die) DLA kann (können) ohne Einschränkung eine oder mehrere Tensor Processing Units („TPUs“) umfassen, die so konfiguriert sein können, dass sie zusätzliche zehn Billionen Operationen pro Sekunde für Deep Learning-Anwendungen und Inferenzieren bereitstellen. In mindestens einem Ausführungsbeispiel können TPUs Beschleuniger sein, die für die Ausführung von Bildverarbeitungsfunktionen konfiguriert und optimiert sind (z. B. für CNNs, RCNNs usw.). DLA(s) können weiter für einen bestimmten Satz von Typen neuronaler Netzwerke und Gleitkommaoperationen sowie zum Inferenzieren optimiert sein. In mindestens einem Ausführungsbeispiel kann das Design von DLA(s) mehr Leistung pro Millimeter bieten als eine typische allgemeine GPU und übertrifft in der Regel die Leistung einer CPU bei weitem. In mindestens einem Ausführungsbeispiel kann (können) die TPU(s) mehrere Funktionalitäten ausführen, einschließlich einer Faltungsfunktion für eine einzige Instanz, die beispielsweise INT8-, INT16- und FP16-Datentypen sowohl für Merkmale als auch für Gewichte sowie Postprozessorfunktionen unterstützt. In mindestens einem Ausführungsbeispiel können DLA(s) schnell und effizient neuronale Netzwerke, insbesondere CNNs, auf verarbeiteten oder unverarbeiteten Daten für eine Vielzahl von Funktionen ausführen, einschließlich, zum Beispiel und ohne Einschränkung: ein CNN für die Identifizierung und Detektion von Objekten unter Verwenden von Daten von Kamerasensoren; ein CNN für die Abstandsschätzung unter Verwenden von Daten von Kamerasensoren; ein CNN für die Erkennung und Identifizierung von Notfallfahrzeugen und die Erkennung unter Verwenden von Daten von Mikrofonen 2096; ein CNN für die Gesichtserkennung und die Identifizierung von Fahrzeugeigentümern unter Verwenden von Daten von Kamerasensoren; und/oder ein CNN für sicherheitsrelevante und/oder sicherheitsbezogene Ereignisse.
  • In mindestens einem Ausführungsbeispiel kann (können) DLA(s) jede Funktionalität von GPU(s) 2008 ausführen, und durch Verwenden eines Inferenzbeschleunigers kann ein Designer beispielsweise entweder DLA(s) oder GPU(s) 2008 für jede Funktionalität anvisieren. In mindestens einem Ausführungsbeispiel kann der Designer beispielsweise die Verarbeitung von CNNs und Gleitkommaoperationen auf DLA(s) konzentrieren und andere Funktionen der GPU(s) 2008 und/oder anderen Beschleunigern 2014 überlassen.
  • In mindestens einem Ausführungsbeispiel kann/können der/die Beschleuniger 2014 (z. B. Hardwarebeschleunigungscluster) einen programmierbaren Bildverarbeitungsbeschleuniger („PVA“) umfassen, der hier alternativ auch als Beschleuniger für computergestützte Vision bezeichnet werden kann. In mindestens einem Ausführungsbeispiel kann (können) der (die) PVA(s) so konfiguriert sein, dass er (sie) computergestützte Vision-Algorithmen für Advanced Driver Assistance Systems („ADAS“) 2038, autonomes Fahren, Augmented-Reality- („AR“)-Anwendungen und/oder Virtual-Reality- („VR“)-Anwendungen beschleunigt. PVA(s) können ein Gleichgewicht zwischen Leistung und Flexibilität bieten. In mindestens einem Ausführungsbeispiel kann jede PVA beispielsweise und ohne Einschränkung eine beliebige Anzahl von Computer-Kernen mit reduziertem Befehlssatz („RISC“), direkten Speicherzugriff („DMA“) und/oder eine beliebige Anzahl von Vektorprozessoren enthalten.
  • In mindestens einem Ausführungsbeispiel können RISC-Kerne mit Bildsensoren (z. B. Bildsensoren einer der hierin beschriebenen Kameras), Bildsignalprozessoren und/oder dergleichen zusammenwirken. In mindestens einem Ausführungsbeispiel kann jeder der RISC-Kerne eine beliebige Menge an Speicher umfassen. In mindestens einem Ausführungsbeispiel können die RISC-Kerne je nach Ausführungsbeispiel eines von mehreren Protokollen verwenden. In mindestens einem Ausführungsbeispiel können RISC-Kerne ein Echtzeitbetriebssystem („RTOS“) ausführen. In mindestens einem Ausführungsbeispiel können RISC-Kerne unter Verwenden eines oder mehrerer integrierter Schaltungsgeräte, anwendungsspezifischer integrierter Schaltungen („ASICs“) und/oder Speichergeräte implementiert werden. In mindestens einem Ausführungsbeispiel könnten RISC-Kerne beispielsweise einen Befehls-Cache und/oder ein eng gekoppeltes RAM enthalten.
  • In mindestens einem Ausführungsbeispiel kann DMA es Komponenten der PVA(s) ermöglichen, unabhängig von der/den CPU(s) 2006 auf den Systemspeicher zuzugreifen. In mindestens einem Ausführungsbeispiel kann DMA eine beliebige Anzahl von Merkmalen unterstützen, die zur Optimierung der PVA verwendet werden, einschließlich, aber nicht beschränkt auf, die Unterstützung von mehrdimensionaler Adressierung und/oder zirkulärer Adressierung. In mindestens einem Ausführungsbeispiel kann DMA bis zu sechs oder mehr Dimensionen der Adressierung unterstützen, die ohne Einschränkung Blockbreite, Blockhöhe, Blocktiefe, horizontales Blockstepping, vertikales Blockstepping und/oder Tiefenstepping umfassen können.
  • In mindestens einem Ausführungsbeispiel können Vektorprozessoren programmierbare Prozessoren sein, die so gestaltet sein können, dass sie die Programmierung für computergestützte Vision-Algorithmen effizient und flexibel ausführen und Signalverarbeitungsfunktionen bereitstellen. In mindestens einem Ausführungsbeispiel kann PVA einen PVA-Kern und zwei Vektorverarbeitungs-Subsystem-Partitionen umfassen. In mindestens einem Ausführungsbeispiel kann der PVA-Kern ein Prozessor-Subsystem, DMA-Engine(s) (z. B. zwei DMA-Engines) und/oder andere Peripheriegeräte umfassen. In mindestens einem Ausführungsbeispiel kann das Vektorverarbeitungs-Subsystem als primäre Verarbeitungs-Engine der PVA betrieben werden und eine Vektorverarbeitungs-Einheit („VPU“), einen Befehlscache und/oder einen Vektorspeicher (z. B. „VMEM“) umfassen. In mindestens einem Ausführungsbeispiel kann der VPU-Kern einen digitalen Signalprozessor umfassen, wie z. B. einen digitalen Signalprozessor mit einer einzigen Anweisung und mehreren Daten („SIMD“) oder einem sehr langen Anweisungswort („VLIW“). In mindestens einem Ausführungsbeispiel kann eine Kombination aus SIMD und VLIW den Durchsatz und die Geschwindigkeit verbessern.
  • In mindestens einem Ausführungsbeispiel kann jeder Vektorprozessor einen Befehlscache umfassen und mit einem dedizierten Speicher verbunden sein. Als Ergebnis kann in mindestens einem Ausführungsbeispiel jeder Vektorprozessor so konfiguriert sein, dass er unabhängig von anderen Vektorprozessoren arbeitet. In mindestens einem Ausführungsbeispiel können Vektorprozessoren, die in einer bestimmten PVA enthalten sind, so konfiguriert sein, dass sie Datenparallelität verwenden. Beispielsweise kann in mindestens einem Ausführungsbeispiel eine Vielzahl von Vektorprozessoren, die in einer einzigen PVA enthalten sind, denselben Algorithmus für computergestützte Vision ausführen, jedoch für verschiedene Bereiche eines Bildes. In mindestens einem Ausführungsbeispiel können die in einer bestimmten PVA enthaltenen Vektorprozessoren simultan verschiedene computerergestützte Vision-Algorithmen für ein und dasselbe Bild ausführen oder sogar verschiedene Algorithmen für sequentielle Bilder oder Teile eines Bildes ausführen. In mindestens einem Ausführungsbeispiel kann unter anderem eine beliebige Anzahl von PVAs in einem Hardware-Beschleunigungscluster enthalten sein, und in jeder PVA kann eine beliebige Anzahl von Vektorprozessoren enthalten sein. In mindestens einem Ausführungsbeispiel kann/können die PVA(s) einen zusätzlichen Fehlerkorrekturcode-Speicher („ECC“) umfassen, um die allgemeine Systemsicherheit zu verbessern.
  • In mindestens einem Ausführungsbeispiel kann (können) der (die) Beschleuniger 2014 (z. B. Hardware-Beschleunigungscluster) ein Netzwerk für computergestützte Vision auf dem Chip und einen statischen Direktzugriffsspeicher („SRAM“) umfassen, um einen SRAM mit hoher Bandbreite und geringer Latenz für den (die) Beschleuniger 2014 bereitzustellen. In mindestens einem Ausführungsbeispiel kann der On-Chip-Speicher mindestens 4 MB SRAM umfassen, der zum Beispiel aus acht frei konfigurierbaren Speicherblöcken besteht, auf die sowohl PVA als auch DLA zugreifen können. In mindestens einem Ausführungsbeispiel kann jedes Paar von Speicherblöcken eine erweiterte Peripheriebus-Schnittstelle („APB“), eine Schaltungsanordnung, ein Steuergerät und einen Multiplexer enthalten. In mindestens einem Ausführungsbeispiel kann jede Art von Speicher verwendet werden. In mindestens einem Ausführungsbeispiel können PVA und DLA über einen Backbone auf den Speicher zugreifen, der PVA und DLA einen Hochgeschwindigkeitszugriff auf den Speicher ermöglicht. In mindestens einem Ausführungsbeispiel kann das Backbone ein Netzwerk für computergestützte Vision auf dem Chip enthalten, das PVA und DLA mit dem Speicher verbindet (z.B. unter Verwenden von APB).
  • In mindestens einem Ausführungsbeispiel kann das Netzwerk für computergestützte Vision auf dem Chip eine Schnittstelle umfassen, die vor der Übertragung von Steuersignalen/Adressen/Daten bestimmt, dass sowohl PVA als auch DLA bereitstehende und gültige Signale liefern. In mindestens einem Ausführungsbeispiel kann eine Schnittstelle separate Phasen und separate Kanäle für die Übertragung von Steuersignalen/Adressen/Daten sowie eine Burst-Kommunikation für die kontinuierliche Datenübertragung vorsehen. In mindestens einem Ausführungsbeispiel kann eine Schnittstelle den Normen der International Organization for Standardization („ISO“) 26262 oder der International Electrotechnical Commission („IEC“) 61508 entsprechen, obwohl auch andere Normen und Protokolle verwendet werden können.
  • In mindestens einem Ausführungsbeispiel kann einer oder mehrere der SoC(s) 2004 einen Hardware-Beschleuniger für Echtzeit-Raytracing enthalten. In mindestens einem Ausführungsbeispiel kann der Echtzeit-Raytracing-Hardwarebeschleuniger verwendet werden, um schnell und effizient Positionen und Ausdehnungen von Objekten (z.B. innerhalb eines Weltmodells) zu bestimmen, um Echtzeit-Visualisierungssimulationen zu generieren, für die RADAR-Signalinterpretation, für die Schallausbreitungssynthese und/oder -analyse, für die Simulation von SONAR-Systemen, für die allgemeine Wellenausbreitungssimulation, für den Vergleich mit LIDAR-Daten zum Zwecke der Lokalisierung und/oder für andere Funktionen und/oder für andere Zwecke.
  • In mindestens einem Ausführungsbeispiel haben der/die Beschleuniger 2014 (z.B. Hardware-Beschleuniger-Cluster) ein breites Array an Verwendungen für autonomes Fahren. In mindestens einem Ausführungsbeispiel kann PVA ein programmierbarer Bildverarbeitungsbeschleuniger sein, der für wichtige Verarbeitungsschritte in ADAS und autonomen Fahrzeugen verwendet werden kann. In mindestens einem Ausführungsbeispiel sind die Fähigkeiten von PVA ein gutes Matching für algorithmische Bereiche, die eine vorhersehbare Verarbeitung bei geringer Leistung und geringer Latenz benötigen. Mit anderen Worten: PVA eignet sich gut für halbdichte oder dichte reguläre Berechnungen, selbst bei kleinen Datensätzen, die vorhersehbare Laufzeiten mit geringer Latenz und geringem Stromverbrauch erfordern. In mindestens einem Ausführungsbeispiel werden in autonomen Fahrzeugen, wie dem Fahrzeug 2000, PVAs für die Ausführung klassischer computergestützter Vision-Algorithmen entworfen, da diese effizient bei der Objekterkennung sind und mit ganzzahligen Berechnungen betrieben werden.
  • Zum Beispiel wird gemäß mindestens einem Ausführungsbeispiel der Technologie PVA verwendet, um computergestützte Vision auszuführen. In mindestens einem Ausführungsbeispiel kann in einigen Beispielen ein auf semiglobalem Matching basierender Algorithmus verwendet werden, obwohl dies nicht als Einschränkung gedacht ist. In mindestens einem Ausführungsbeispiel verwenden Anwendungen für das autonome Fahren der Stufen 3-5 die Bewegungsabschätzung/Stereo-Matching während der Fahrt (z. B. Struktur aus Bewegung, Fußgängererkennung, Fahrspurerkennung usw.). In mindestens einem Ausführungsbeispiel kann PVA eine computergestützte Vision-Funktion für Eingaben von zwei monokularen Kameras ausführen.
  • In mindestens einem Ausführungsbeispiel kann PVA verwendet werden, um einen dichten optischen Fluss durchzuführen. Zum Beispiel könnte PVA in mindestens einem Ausführungsbeispiel unbearbeitete RADAR-Daten verarbeiten (z.B. unter Verwenden einer 4D-Fast-Fourier-Transformation), um verarbeitete RADAR-Daten bereitzustellen. In mindestens einem Ausführungsbeispiel wird PVA für die Verarbeitung der Laufzeittiefe verwendet, indem unbearbeitete Laufzeitdaten verarbeitet werden, um z.B. verarbeitete Laufzeitdaten bereitzustellen.
  • In mindestens einem Ausführungsbeispiel kann DLA verwendet werden, um jede Art von Netzwerk zu betreiben, um die Kontrolle und die Fahrsicherheit zu verbessern, einschließlich zum Beispiel und ohne Einschränkung ein neuronales Netzwerk, das ein Maß an Konfidenz für jede Objekterkennung ausgibt. In mindestens einem Ausführungsbeispiel kann die Konfidenz als Wahrscheinlichkeit repräsentiert oder interpretiert werden oder als relative „Gewichtung“ jeder Detektierung im Vergleich zu anderen Detektierungen angegeben werden. In mindestens einem Ausführungsbeispiel ermöglicht es die Konfidenz dem System, weitere Entscheidungen darüber zu treffen, welche Detektierungen als echte positive Detektierungen und welche als falsch positive Detektierungen betrachtet werden sollten. In mindestens einem Ausführungsbeispiel kann ein System beispielsweise einen Schwellenwert für die Konfidenz festlegen und nur Erkennungen, die den Schwellenwert überschreiten, als echte positive Erkennungen betrachten. In einem Ausführungsbeispiel, in dem ein automatisches Notbremssystem („AEB“) verwendet wird, würden falsch positive Erkennungen bewirken, dass das Fahrzeug automatisch eine Notbremsung durchführt, was natürlich unerwünscht ist. In mindestens einem Ausführungsbeispiel können sehr zuverlässige Detektierungen als Auslöser für AEB in Betracht gezogen werden. In mindestens einem Ausführungsbeispiel kann DLA ein neuronales Netzwerk zur Regression des Konfidenzwertes einsetzen. In mindestens einem Ausführungsbeispiel kann das neuronale Netzwerk als Eingabe mindestens eine Teilmenge von Parametern verwenden, wie z. B. die Abmessungen der Bounding Box, die (z. B. von einem anderen Teilsystem) erhaltene Bodenebenenschätzung, die Ausgabe des/der IMU-Sensors/en 2066, die mit der Orientierung des Fahrzeugs 2000 korreliert, die Distanz, die 3D-Lageabschätzungen des Objekts, die vom neuronalen Netzwerk und/oder anderen Sensoren (z. B. LIDAR-Sensor/en 2064 oder RADAR-Sensor/en 2060) erhalten werden, und andere.
  • In mindestens einem Ausführungsbeispiel können ein oder mehrere SoC(s) 2004 einen oder mehrere Datenspeicher 2016 (z.B. Speicher) umfassen. In mindestens einem Ausführungsbeispiel kann (können) der (die) Datenspeicher 2016 ein On-Chip-Speicher des (der) SoC(s) 2004 sein, der (die) neuronale Netzwerke speichern kann (können), die auf GPU(s) 2008 und/oder DLA ausgeführt werden. In mindestens einem Ausführungsbeispiel kann (können) der (die) Datenspeicher 2016 groß genug sein, um mehrere Instanzen neuronaler Netzwerke zur Redundanz und Sicherheit zu speichern. In mindestens einem Ausführungsbeispiel kann/können der/die Datenspeicher 2012 L2 oder L3 Cache(s) umfassen.
  • [In mindestens einem Ausführungsbeispiel kann ein oder mehrere SoC(s) 2004 eine beliebige Anzahl von Prozessor(en) 2010 (z.B. eingebettete Prozessoren) enthalten. Der/die Prozessor(en) 2010 kann/können einen Boot- und Energieverwaltungsprozessor umfassen, der ein dedizierter Prozessor und ein Subsystem sein kann, um Boot-Energie- und Verwaltungsfunktionen und die damit verbundene Sicherheitsdurchsetzung zu handhaben. In mindestens einem Ausführungsbeispiel kann der Boot- und Energieverwaltungsprozessor ein Teil der Bootsequenz des/der SoC(s) 2004 sein und Laufzeit-Energieverwaltungsdienste bereitstellen. In mindestens einem Ausführungsbeispiel kann der Prozessor für die Boot-Energieversorgung und -Verwaltung die Programmierung von Takt und Spannung, die Unterstützung bei Übergängen des Systems in einen Zustand mit niedriger Leistung, die Verwaltung von SoC(s) 2004-Temperaturen und Temperatursensoren und/oder die Verwaltung von SoC(s) 2004-Energieversorgungszuständen übernehmen. In mindestens einem Ausführungsbeispiel kann jeder Temperatursensor als Ringoszillator implementiert sein, dessen Ausgabefrequenz proportional zur Temperatur ist, und SoC(s) 2004 kann Ringoszillatoren verwenden, um die Temperaturen von CPU(s) 2006, GPU(s) 2008 und/oder Beschleuniger(n) 2014 zu detektieren. In mindestens einem Ausführungsbeispiel kann, wenn bestimmt wird, dass die Temperaturen einen Schwellenwert überschreiten, der Boot- und Energieverwaltungsprozessor in eine Temperaturfehlerroutine eintreten und die SoC(s) 2004 in einen Zustand mit geringerer Leistung versetzen und/oder das Fahrzeug 2000 in einen Chauffeur-zu-sicherem-Halt-Modus versetzen (z.B. das Fahrzeug 2000 zu einem sicheren Halt bringen).
  • In mindestens einem Ausführungsbeispiel kann/können der/die Prozessor(en) 2010 weiter einen Satz eingebetteter Prozessoren enthalten, die als Audioverarbeitungs-Engine dienen können. In mindestens einem Ausführungsbeispiel kann die Audioverarbeitungs-Engine ein Audio-Subsystem sein, das eine vollständige Hardware-Unterstützung für Mehrkanal-Audio über mehrere Schnittstellen und eine Vielzahl flexibler Audio-E/A-Schnittstellen ermöglicht. In mindestens einem Ausführungsbeispiel ist die Audioverarbeitungs-Engine ein dedizierter Prozessorkern mit einem digitalen Signalprozessor mit dediziertem RAM.
  • In mindestens einem Ausführungsbeispiel kann/können der/die Prozessor(en) 2010 ferner eine „Always on“-Prozessor-Engine umfassen, die die erforderlichen Hardware-Funktionen zur Unterstützung von Sensormanagement mit geringem Stromverbrauch und Aufwecken von Anwendungsfällen bereitstellen kann. In mindestens einem Ausführungsbeispiel kann die „always on“-Prozessor-Engine ohne Einschränkung einen Prozessorkern, einen eng gekoppelten Arbeitsspeicher, unterstützende Peripheriegeräte (z. B. Timer und Interrupt-Controller), verschiedene E/A-Steuergeräte und eine Routing-Logik enthalten.
  • In mindestens einem Ausführungsbeispiel kann(n) der (die) Prozessor(en) 2010 weiter eine Sicherheits-Cluster-Engine enthalten, die ohne Einschränkung ein dediziertes Prozessor-Subsystem zur Handhabung des Sicherheitsmanagements für Automobilanwendungen umfasst. In mindestens einem Ausführungsbeispiel kann die Sicherheits-Cluster-Engine ohne Einschränkung zwei oder mehr Prozessorkerne, einen eng gekoppelten Arbeitsspeicher, unterstützende Peripheriegeräte (z. B. Zeitgeber, ein Interrupt-Steuergerät usw.) und/oder eine Routing-Logik enthalten. In einem Sicherheitsmodus können in mindestens einem Ausführungsbeispiel zwei oder mehr Kerne in einem Lockstep-Modus betrieben werden und als ein einziger Kern mit einer Vergleichslogik funktionieren, um etwaige Unterschiede zwischen ihren Operationen zu detektieren. In mindestens einem Ausführungsbeispiel kann/können der/die Prozessor(en) 2010 ferner eine Echtzeit-Kamera Engine enthalten, die ohne Einschränkung ein dediziertes Prozessor-Subsystem zur Handhabung der Echtzeit-Kameraverwaltung umfassen kann. In mindestens einem Ausführungsbeispiel kann (können) der (die) Prozessor(en) 2010 ferner einen Signalprozessor mit hohem Dynamikbereich enthalten, der ohne Einschränkung einen Bildsignalprozessor umfassen kann, der eine Hardware-Engine ist, die Teil der Kameraverarbeitungspipeline ist.
  • In mindestens einem Ausführungsbeispiel kann/können der/die Prozessor(en) 2010 einen Videobildkompositor umfassen, der ein Verarbeitungsblock sein kann (z. B. auf einem Mikroprozessor implementiert), der Videonachverarbeitungsfunktionen implementiert, die von einer Videowiedergabeanwendung benötigt werden, um ein finales Bild für das Wiedergabefenster zu erzeugen. In mindestens einem Ausführungsbeispiel kann der Videobildkompositor eine Linsenverzerrungskorrektur an der/den Weitwinkelkamera(s) 2070, an der/den Surround-Kamera(s) 2074 und/oder an den Sensoren der Überwachungskamera(s) in der Kabine vornehmen. In mindestens einem Ausführungsbeispiel wird (werden) der (die) Kamerasensor(en) zur Überwachung in der Kabine vorzugsweise von einem neuronalen Netzwerk überwacht, das auf einer anderen Instanz des SoC 2004 läuft und so konfiguriert ist, dass es Ereignisse in der Kabine identifiziert und entsprechend reagiert. In mindestens einem Ausführungsbeispiel kann ein System in der Kabine ohne Einschränkung Lippenlesen durchführen, um den Mobilfunkdienst zu aktivieren und einen Anruf zu tätigen, E-Mails zu diktieren, das Fahrzeugziel zu ändern, das Infotainmentsystem und die Einstellungen des Fahrzeugs zu aktivieren oder zu ändern oder sprachgesteuertes Surfen im Internet zu ermöglichen. In mindestens einem Ausführungsbeispiel stehen dem Fahrer bestimmte Funktionen zur Verfügung, wenn das Fahrzeug in einem autonomen Modus betrieben wird, und sind ansonsten deaktiviert.
  • In mindestens einem Ausführungsbeispiel kann der Videobildkompositor eine verbesserte zeitliche Rauschunterdrückung sowohl für räumliche als auch für zeitliche Rauschunterdrückung enthalten. Zumindest in einem Ausführungsbeispiel, in dem Bewegung in einem Video auftritt, gewichtet die Rauschreduzierung die räumliche Information angemessen und verringert die Gewichtung der Information, die von benachbarten Einzelbildern geliefert wird. In mindestens einem Ausführungsbeispiel, in dem ein Bild oder ein Teil eines Bildes keine Bewegung umfasst, kann die vom Videobildkompositor durchgeführte zeitliche Rauschreduzierung Informationen aus dem vorherigen Bild verwenden, um das Rauschen im aktuellen Bild zu reduzieren.
  • In mindestens einem Ausführungsbeispiel kann der Videobildkompositor auch so konfiguriert sein, dass er eine Stereorektifizierung an eingegebenen Stereoobjektiv-Einzelbildern durchführt. In mindestens einem Ausführungsbeispiel kann der Videobildkompositor weiter für die Zusammenstellung der Benutzeroberfläche verwendet werden, wenn der Desktop des Betriebssystems in Gebrauch ist und die GPU(s) 2008 nicht erforderlich sind, um kontinuierlich neue Oberflächen zu rendern. In mindestens einem Ausführungsbeispiel kann der Videobildkompositor, wenn die GPU(s) 2008 eingeschaltet und aktiv mit dem 3D-Rendern beschäftigt sind, verwendet werden, um die GPU(s) 2008 zu entlasten, um die Leistung und Reaktionsfähigkeit zu verbessern.
  • In mindestens einem Ausführungsbeispiel können ein oder mehrere SoC(s) 2004 ferner eine serielle MIPI-Kameraschnittstelle zum Empfangen von Video und Eingaben von Kameras, eine Hochgeschwindigkeitsschnittstelle und/oder einen Videoeingabeblock enthalten, der für Kamera- und verwandte Pixeleingabefunktionen verwendet werden kann. In mindestens einem Ausführungsbeispiel können ein oder mehrere SoC(s) 2004 ferner ein oder mehrere Steuergeräte für die Eingabe/Ausgabe umfassen, die durch Software gesteuert werden können und zum Empfangen von E/A-Signalen verwendet werden können, die nicht an eine bestimmte Rolle gebunden sind.
  • In mindestens einem Ausführungsbeispiel können ein oder mehrere SoC(s) 2004 ferner eine Vielzahl von Peripherieschnittstellen enthalten, um die Kommunikation mit Peripheriegeräten, Audio-Kodierern/Dekodierern („Codecs“), der Energieverwaltung und/oder anderen Geräten zu ermöglichen. SoC(s) 2004 kann/können verwendet werden, um Daten von Kameras (z. B. über Gigabit Multimedia Serial Link und Ethernet verbunden), Sensoren (z. B. LIDAR-Sensor(en) 2064, RADAR-Sensor(en) 2060 usw., die über Ethernet verbunden sein können), Daten vom Bus 2002 (z. B. Geschwindigkeit des Fahrzeugs 2000, Lenkradposition usw.), Daten von GNSS-Sensor(en) 2058 (z. B. über Ethernet oder CAN-Bus verbunden) usw. zu verarbeiten. In mindestens einem Ausführungsbeispiel kann(n) ein oder mehrere SoC(s) 2004 ferner dedizierte Hochleistungs-Massenspeicher-Steuergeräte umfassen, die ihre eigenen DMA-Engines enthalten können und die dazu verwendet werden können, die CPU(s) 2006 von routinemäßigen Datenverwaltungsaufgaben zu entlasten.
  • In mindestens einem Ausführungsbeispiel kann (können) der (die) SoC(s) 2004 eine End-to-End-Plattform mit einer flexiblen Architektur sein, die sich über die Automatisierungsstufen 3-5 erstreckt und dadurch eine umfassende funktionale Sicherheitsarchitektur bereitstellt, die computergestützte Vision- und ADAS-Techniken für Diversität und Redundanz nutzt und eine Plattform für einen flexiblen, zuverlässigen Fahrsoftware-Stack zusammen mit Deep-Learning-Hilfsmitteln bereitstellt. In mindestens einem Ausführungsbeispiel können die SoC(s) 2004 schneller, zuverlässiger und sogar energie- und platzsparender sein als herkömmliche Systeme. Zum Beispiel können in mindestens einem Ausführungsbeispiel der/die Beschleuniger 2014 in Kombination mit der/den CPU(s) 2006, der/den GPU(s) 2008 und dem/den Datenspeicher(n) 2016 eine schnelle, effiziente Plattform für autonome Fahrzeuge der Stufe 3-5 bilden.
  • In mindestens einem Ausführungsbeispiel können Algorithmen der computergestützten Vision auf CPUs ausgeführt werden, die unter Verwenden einer höheren Programmiersprache, wie z. B. C, konfiguriert sein können, um eine Vielzahl von Verarbeitungsalgorithmen für eine Vielzahl von visuellen Daten auszuführen. In mindestens einem Ausführungsbeispiel sind CPUs jedoch oft nicht in der Lage, die Leistungsanforderungen vieler computergestützter Vision-Anwendungen zu erfüllen, z. B. in Bezug auf die Ausführungszeit und den Stromverbrauch. In mindestens einem Ausführungsbeispiel sind viele CPUs nicht in der Lage, komplexe Objekterkennungsalgorithmen in Echtzeit auszuführen, die in fahrzeuginternen ADAS-Anwendungen und in praktischen autonomen Fahrzeugen der Stufe 3-5 verwendet werden.
  • Die hier beschriebenen Ausführungsbeispiele ermöglichen es, mehrere neuronale Netzwerke simultan und/oder sequentiell auszuführen und die Ergebnisse miteinander zu kombinieren, um die Funktionalität des autonomen Fahrens der Stufe 3-5 zu ermöglichen. Zum Beispiel kann in mindestens einem Ausführungsbeispiel ein CNN, das auf einem DLA oder einer diskreten GPU (z.B. GPU(s) 2020) ausgeführt wird, eine Text- und Worterkennung umfassen, die es dem Supercomputer ermöglicht, Verkehrszeichen zu lesen und zu verstehen, einschließlich Zeichen, für die das neuronale Netzwerk nicht speziell trainiert wurde. In mindestens einem Ausführungsbeispiel kann DLA ferner ein neuronales Netzwerk enthalten, das in der Lage ist, Verkehrszeichen zu identifizieren, zu interpretieren und semantisch zu verstehen und dieses semantische Verständnis an die auf dem CPU-Komplex laufenden Wegplanungsmodule weiterzugeben.
  • In mindestens einem Ausführungsbeispiel können mehrere neuronale Netzwerke simultan betrieben werden, wie z.B. beim Fahren auf Level 3, 4 oder 5. Zum Beispiel kann in mindestens einem Ausführungsbeispiel ein Warnschild mit der Aufschrift „Vorsicht: Blinkende Lichter zeigen Eisglätte an“ zusammen mit einem elektrischen Licht von mehreren neuronalen Netzwerken unabhängig oder gemeinsam interpretiert werden. In mindestens einem Ausführungsbeispiel kann das Schild selbst von einem ersten eingesetzten neuronalen Netzwerk (z.B. einem trainierten neuronalen Netzwerk) als Verkehrsschild identifiziert werden, der Text „Blinkende Lichter weisen auf Eisglätte hin“ kann von einem zweiten eingesetzten neuronalen Netzwerk interpretiert werden, das die (vorzugsweise auf einem CPU-Komplex ausgeführte) Wegplanungssoftware des Fahrzeugs darüber informiert, dass, wenn blinkende Lichter angezeigt werden, Eisglätte vorliegt. In mindestens einem Ausführungsbeispiel kann das Blinklicht identifiziert werden, indem ein drittes neuronales Netzwerk über mehrere Einzelbilder betrieben wird, das die Wegplanungssoftware des Fahrzeugs über das Vorhandensein (oder Fehlen) von Blinklichtern informiert. In mindestens einem Ausführungsbeispiel können alle drei neuronalen Netzwerke simultan laufen, z.B. in DLA und/oder aufGPU(s) 2008.
  • In mindestens einem Ausführungsbeispiel kann ein CNN zur Gesichtserkennung und Identifizierung des Fahrzeugbesitzers Daten von Kamerasensoren verwenden, um die Anwesenheit eines autorisierten Fahrers und/oder Besitzers des Fahrzeugs 2000 zu identifizieren. In mindestens einem Ausführungsbeispiel kann eine Verarbeitungs-Engine für ständig eingeschaltete Sensoren verwendet werden, um das Fahrzeug zu entriegeln, wenn der Eigentümer sich der Fahrertür nähert und das Licht einschaltet, und um das Fahrzeug im Sicherheitsmodus zu deaktivieren, wenn der Eigentümer das Fahrzeug verlässt. Auf diese Weise sorgen die SoC(s) 2004 für Sicherheit gegen Diebstahl und/oder Carjacking.
  • In mindestens einem Ausführungsbeispiel kann ein CNN zur Erkennung und Identifizierung von Notfallfahrzeugen Daten von Mikrofonen 2096 verwenden, um Sirenen von Notfallfahrzeugen zu detektieren und zu identifizieren. In mindestens einem Ausführungsbeispiel verwenden SoC(s) 2004 CNN zur Klassifizierung von Umwelt- und Stadtgeräuschen sowie zur Klassifizierung visueller Daten. In mindestens einem Ausführungsbeispiel wird CNN, das auf DLA läuft, darauf trainiert, die relative Annäherungsgeschwindigkeit eines Notfallfahrzeugs zu identifizieren (z. B. unter Verwenden des Dopplereffekts). In mindestens einem Ausführungsbeispiel kann CNN auch so trainiert werden, dass es Notfallfahrzeuge identifiziert, die spezifisch für den lokalen Bereich sind, in dem das Fahrzeug betrieben wird, wie von GNSS-Sensor(en) 2058 identifiziert. In mindestens einem Ausführungsbeispiel wird CNN, wenn es in Europa betrieben wird, versuchen, europäische Sirenen zu detektieren, und wenn es in den Vereinigten Staaten betrieben wird, wird CNN versuchen, nur nordamerikanische Sirenen zu identifizieren. In mindestens einem Ausführungsbeispiel kann, sobald ein Notfallfahrzeug detektiert wird, ein Steuergerät verwendet werden, um eine Sicherheitsroutine für Notfallfahrzeuge auszuführen, das Fahrzeug zu verlangsamen, an den Straßenrand zu fahren, das Fahrzeug zu parken und/oder das Fahrzeug im Leerlauf zu halten, mit Hilfe von Ultraschallsensoren 2062, bis das/die Notfallfahrzeug(e) vorbeifahren.
  • In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 eine oder mehrere CPU(s) 2018 (z.B. diskrete CPU(s) oder dCPU(s)) umfassen, die über eine Hochgeschwindigkeitsverbindung (z.B. PCIe) mit einem oder mehreren SoC(s) 2004 verbunden sein können. In mindestens einem Ausführungsbeispiel kann die CPU(s) 2018 zum Beispiel einen X86-Prozessor umfassen. Die CPU(s) 2018 kann/können verwendet werden, um eine Vielzahl von Funktionen auszuführen, einschließlich der Schlichtung potenziell widersprüchlicher Ergebnisse zwischen ADAS-Sensoren und SoC(s) 2004 und/oder der Überwachung des Status und des Zustands des Steuergeräts/der Steuergeräte 2036 und/oder eines System-on-a-Chip („Infotainment-SoC“) 2030, zum Beispiel.
  • In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 GPU(s) 2020 (z.B. diskrete GPU(s) oder dGPU(s)) umfassen, die mit dem/den SoC(s) 2004 über eine Hochgeschwindigkeitsverbindung (z.B. NVIDIAs NVLINK) gekoppelt sein können. In mindestens einem Ausführungsbeispiel kann/können GPU(s) 2020 zusätzliche Funktionalität der künstlichen Intelligenz bereitstellen, wie z.B. durch Ausführen von redundanten und/oder unterschiedlichen neuronalen Netzwerken, und kann/können verwendet werden, um neuronale Netzwerke basierend zumindest teilweise auf Eingaben (z.B. Sensordaten) von Sensoren des Fahrzeugs 2000 zu trainieren und/oder zu aktualisieren.
  • In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 ferner eine Netzwerkschnittstelle 2024 enthalten, die ohne Einschränkung eine oder mehrere drahtlose Antennen 2026 umfassen kann (z.B. eine oder mehrere drahtlose Antennen 2026 für verschiedene Kommunikationsprotokolle, wie eine Mobilfunkantenne, eine Bluetooth-Antenne usw.). In mindestens einem Ausführungsbeispiel kann die Netzwerkschnittstelle 2024 verwendet werden, um eine drahtlose Verbindung über das Internet mit der Cloud (z. B. mit einem oder mehreren Servern und/oder anderen Netzwerkgeräten), mit anderen Fahrzeugen und/oder mit Rechengeräten (z. B. Client-Geräten von Fahrgästen) zu ermöglichen. In mindestens einem Ausführungsbeispiel kann zur Kommunikation mit anderen Fahrzeugen eine direkte Verbindung zwischen dem Fahrzeug 200 und einem anderen Fahrzeug hergestellt werden und/oder eine indirekte Verbindung hergestellt werden (z. B. über Netzwerke und das Internet). In mindestens einem Ausführungsbeispiel können direkte Verbindungen unter Verwenden einer Fahrzeug-zu-Fahrzeug-Kommunikationsverbindung hergestellt werden. Die Fahrzeug-zu-Fahrzeug-Verbindung kann dem Fahrzeug 2000 Informationen über Fahrzeuge in der Nähe des Fahrzeugs 2000 liefern (z.B. Fahrzeuge vor, neben und/oder hinter dem Fahrzeug 2000). In mindestens einem Ausführungsbeispiel kann die vorgenannte Funktionalität Teil einer kooperativen adaptiven Geschwindigkeitsregelungsfunktion des Fahrzeugs 2000 sein.
  • In mindestens einem Ausführungsbeispiel kann die Netzwerkschnittstelle 2024 einen SoC enthalten, der eine Modulations- und Demodulationsfunktionalität bereitstellt und das/die Steuergerät(e) 2036 in die Lage versetzt, über drahtlose Netzwerke zu kommunizieren. In mindestens einem Ausführungsbeispiel kann die Netzwerkschnittstelle 2024 ein Hochfrequenz-Frontend zur Aufwärtskonvertierung von Basisband auf Hochfrequenz und Abwärtskonvertierung von Hochfrequenz auf Basisband enthalten. In mindestens einem Ausführungsbeispiel können Frequenzumwandlungen auf jede technisch geeignete Weise durchgeführt werden. Beispielsweise können Frequenzumwandlungen mit bekannten Verfahren und/oder unter Verwenden von Superheterodyn-Verfahren durchgeführt werden. In mindestens einem Ausführungsbeispiel kann die Funktionalität des Hochfrequenz-Frontends durch einen separaten Chip bereitgestellt werden. In mindestens einem Ausführungsbeispiel kann die Netzwerkschnittstelle eine drahtlose Funktionalität zur Kommunikation über LTE, WCDMA, UMTS, GSM, CDMA2000, Bluetooth, Bluetooth LE, Wi Fi, Z-Wave, ZigBee, LoRaWAN und/oder andere drahtlose Protokolle enthalten.
  • In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 ferner einen oder mehrere Datenspeicher 2028 enthalten, die ohne Einschränkung einen Speicher außerhalb des Chips (z.B. außerhalb des SoC(s) 2004) umfassen können. In mindestens einem Ausführungsbeispiel kann (können) der (die) Datenspeicher 2028 ohne Einschränkung ein oder mehrere Speicherelemente umfassen, einschließlich RAM, SRAM, Dynamic Random Access Memory („DRAM“), Video Random Access Memory („VRAM“), Flash, Festplatten und/oder andere Komponenten und/oder Geräte, die mindestens ein Datenbit speichern können.
  • In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 weiterhin GNSS-Sensor(en) 2058 (z.B. GPS- und/oder unterstützte GPS-Sensoren) enthalten, um bei der Kartierung, Erfassung, Generierung von Belegungsrastern und/oder Pfadplanungsfunktionen zu helfen. In mindestens einem Ausführungsbeispiel kann eine beliebige Anzahl von GNSS-Sensor(en) 2058 verwendet werden, die beispielsweise und ohne Einschränkung ein GPS umfassen, das einen USB-Anschluss mit einer Ethernet-zu-Seriell-Brücke (z. B. RS-232) verwendet.
  • In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 weiter einen oder mehrere RADAR-Sensoren 2060 enthalten. Der/die RADAR-Sensor(en) 2060 kann/können vom Fahrzeug 2000 für die Detektierung von Fahrzeugen mit großer Reichweite verwendet werden, selbst bei Dunkelheit und/oder schlechten Wetterbedingungen. In mindestens einem Ausführungsbeispiel können die funktionalen RADAR-Sicherheitsstufen ASIL B sein. Der/die RADAR-Sensor(en) 2060 kann/können CAN und/oder Bus 2002 (z.B. zur Übertragung von Daten, die von dem/den RADAR-Sensor(en) 2060 generiert werden) zur Steuerung und zum Zugriff auf Objektnachführungsdaten verwenden, wobei in einigen Beispielen der Zugriff auf unbearbeitete Daten über Ethernet erfolgen kann. In mindestens einem Ausführungsbeispiel kann eine breite Palette von RADAR-Sensortypen verwendet werden. Zum Beispiel und ohne Einschränkung kann/können der/die RADAR-Sensor(en) 2060 für die Verwendung von Front-, Heck- und Seiten-RADAR geeignet sein. In mindestens einem Ausführungsbeispiel handelt es sich bei einem oder mehreren der RADAR-Sensoren 2060 um Puls-Doppler-RADAR-Sensor(en).
  • In mindestens einem Ausführungsbeispiel kann (können) der (die) RADAR-Sensor(en) 2060 verschiedene Konfigurationen umfassen, wie z.B. Fembereich mit engem Sichtfeld, Nahbereich mit breitem Sichtfeld, seitliche Nahbereichsabdeckung, usw. In mindestens einem Ausführungsbeispiel kann RADAR mit großer Reichweite für die Funktionalität eines adaptiven Geschwindigkeitsreglers verwendet werden. In mindestens einem Ausführungsbeispiel können RADAR-Systeme mit großer Reichweite ein breites Sichtfeld bieten, das durch zwei oder mehr unabhängige Scans, z. B. innerhalb einer Reichweite von 250 m, realisiert wird. In mindestens einem Ausführungsbeispiel kann/können der/die RADAR-Sensor(en) 2060 dabei helfen, zwischen statischen und sich bewegenden Objekten zu unterscheiden, und kann/können vom ADAS-System 2038 zur Notbremsunterstützung und zur Vorwärtskollisionswarnung verwendet werden. Der/die in einem RADAR-System mit großer Reichweite enthaltene(n) Sensor(en) 2060 kann/können ohne Einschränkung ein monostatisches multimodales RADAR mit mehreren (z. B. sechs oder mehr) festen RADAR-Antennen und einer Hochgeschwindigkeits-CAN- und FlexRay-Schnittstelle umfassen. In mindestens einem Ausführungsbeispiel mit sechs Antennen können vier Antennen in der Mitte ein fokussiertes Strahlenmuster erzeugen, das darauf ausgelegt ist, die Umgebung des Fahrzeugs bei höheren Geschwindigkeiten mit minimalen Störungen durch den Verkehr auf den angrenzenden Fahrspuren zu erfassen. In mindestens einem Ausführungsbeispiel können die beiden anderen Antennen das Sichtfeld erweitern, so dass es möglich ist, Fahrzeuge, die in die Fahrspur 2000 einfahren oder diese verlassen, schnell zu detektieren.
  • In mindestens einem Ausführungsbeispiel können RADAR-Systeme mittlerer Reichweite als Beispiel eine Reichweite von bis zu 160 m (vorne) oder 80 m (hinten) und ein Sichtfeld von bis zu 42 Grad (vorne) oder 150 Grad (hinten) umfassen. In mindestens einem Ausführungsbeispiel können Kurzstrecken-RADAR-Systeme ohne Einschränkung eine beliebige Anzahl von RADAR-Sensoren 2060 umfassen, die für den Einbau an beiden Enden des hinteren Stoßfängers ausgelegt sind. In mindestens einem Ausführungsbeispiel kann ein RADAR-Sensorsystem, wenn es an beiden Enden des hinteren Stoßfängers installiert ist, zwei Strahlen erzeugen, die den toten Winkel im hinteren Bereich und neben dem Fahrzeug ständig überwachen. In mindestens einem Ausführungsbeispiel können RADAR-Systeme mit kurzer Reichweite in einem ADAS-System 2038 zur Erkennung des toten Winkels und/oder zur Unterstützung beim Spurwechsel verwendet werden.
  • In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 ferner Ultraschallsensor(en) 2062 enthalten. Ultraschallsensor(en) 2062, die vorne, hinten und/oder an den Seiten des Fahrzeugs 2000 angeordnet sein können, können zur Einparkhilfe und/oder zur Erstellung und Aktualisierung eines Belegungsrasters verwendet werden. In mindestens einem Ausführungsbeispiel kann eine Vielzahl von Ultraschallsensoren 2062 verwendet werden, und verschiedene Ultraschallsensoren 2062 können für unterschiedliche Erfassungsbereiche (z.B. 2,5 m, 4 m) verwendet werden. In mindestens einem Ausführungsbeispiel kann (können) der (die) Ultraschallsensor(en) 2062 auf funktionalen Sicherheitsstufen von ASIL B betrieben werden.
  • In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 den/die LIDAR-Sensor(en) 2064 enthalten. Der/die LIDAR-Sensor(en) 2064 kann/können zur Objekt- und Fußgängererkennung, Notbremsung, Kollisionsvermeidung und/oder für andere Funktionalitäten verwendet werden. In mindestens einem Ausführungsbeispiel kann (können) der (die) LIDAR-Sensor(en) 2064 der funktionalen Sicherheitsstufe ASIL B angehören. In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 mehrere LIDAR-Sensoren 2064 (z.B. zwei, vier, sechs usw.) umfassen, die Ethernet verwenden können (z.B. um Daten an einen Gigabit-Ethernet-Switch zu liefern).
  • In mindestens einem Ausführungsbeispiel kann/können der/die LIDAR-Sensor(en) 2064 in der Lage sein, eine Liste von Objekten und deren Distanzen für ein 360-Grad-Sichtfeld bereitzustellen. In mindestens einem Ausführungsbeispiel kann (können) der (die) handelsübliche(n) LIDAR-Sensor(en) 2064 eine beworbene Reichweite von etwa 100 m haben, mit einer Genauigkeit von 2 cm bis 3 cm und mit Unterstützung für eine Ethernet-Verbindung mit 100 Mbit/s, zum Beispiel. In mindestens einem Ausführungsbeispiel können ein oder mehrere nicht vorspringende LIDAR-Sensoren 2064 verwendet werden. In einem solchen Ausführungsbeispiel kann/können der/die LIDAR-Sensor(en) 2064 als ein kleines Gerät implementiert werden, das in die Front, das Heck, die Seiten und/oder die Ecken des Fahrzeugs 2000 eingebettet werden kann. In mindestens einem Ausführungsbeispiel kann/können der/die LIDAR-Sensor(en) 2064 in einem solchen Ausführungsbeispiel ein horizontales Sichtfeld von bis zu 120 Grad und ein vertikales Sichtfeld von bis zu 35 Grad mit einer Reichweite von 200 m selbst für Objekte mit geringem Reflexionsvermögen liefern. In mindestens einem Ausführungsbeispiel kann der/die frontmontierte(n) LIDAR-Sensor(en) 2064 für ein horizontales Sichtfeld zwischen 45 Grad und 135 Grad konfiguriert sein.
  • In mindestens einem Ausführungsbeispiel können auch LIDAR-Technologien, wie z. B. 3D-Blitz-LIDAR, verwendet werden. 3D-Blitz-LIDAR verwendet einen Laserblitz als Sendequelle, um die Umgebung des Fahrzeugs 2000 bis zu einer Entfernung von etwa 200 m zu beleuchten. In mindestens einem Ausführungsbeispiel umfasst eine Flash-LIDAR-Einheit ohne Einschränkung einen Rezeptor, der die Laufzeit des Laserpulses und das reflektierte Licht auf jedem Pixel aufzeichnet, was wiederum der Entfernung von Fahrzeug 2000 zu Objekten entspricht. In mindestens einem Ausführungsbeispiel kann Flash-LIDAR es ermöglichen, mit jedem Laserblitz hochgenaue und verzerrungsfreie Bilder der Umgebung zu generieren. In mindestens einem Ausführungsbeispiel können vier Flash-LIDAR-Sensoren eingesetzt werden, einer auf jeder Seite des Fahrzeugs 2000. In mindestens einem Ausführungsbeispiel umfassen 3D-Blitz-LIDAR-Systeme ohne Einschränkung eine 3D-Blitz-LIDAR-Festkörperkamera mit Array, die außer einem Gebläse keine beweglichen Teile enthält (z. B. ein nicht scannendes LIDAR-Gerät). In mindestens einem Ausführungsbeispiel kann das 3D-Blitz-LIDAR-Gerät einen 5-Nanosekunden-Laserimpuls der Klasse I (augensicher) pro Einzelbild verwenden und das reflektierte Laserlicht in Form von 3D-Entfernungspunktwolken und koregistrierten Intensitätsdaten erfassen.
  • In mindestens einem Ausführungsbeispiel kann das Fahrzeug ferner einen oder mehrere IMU-Sensoren 2066 enthalten. In mindestens einem Ausführungsbeispiel kann/können der/die IMU-Sensor(en) 2066 in mindestens einem Ausführungsbeispiel in einem Zentrum der Hinterachse des Fahrzeugs 2000 angeordnet sein. In mindestens einem Ausführungsbeispiel kann/können der/die IMU-Sensor(en) 2066 beispielsweise und ohne Einschränkung einen oder mehrere Beschleunigungsmesser, Magnetometer, Gyroskop(e), Magnetkompass(e) und/oder andere Sensortypen enthalten. In mindestens einem Ausführungsbeispiel, z. B. bei sechsachsigen Anwendungen, kann/können der/die IMU-Sensor(en) 2066 ohne Einschränkung Beschleunigungsmesser und Gyroskope umfassen. In mindestens einem Ausführungsbeispiel, wie z.B. in neunachsigen Anwendungen, kann (können) der (die) IMU-Sensor(en) 2066 ohne Einschränkung Beschleunigungsmesser, Gyroskope und Magnetometer umfassen.
  • In mindestens einem Ausführungsbeispiel kann/können der/die IMU-Sensor(en) 2066 als ein miniaturisiertes, hochleistungsfähiges GPS-gestütztes Trägheitsnavigationssystem („GPS/INS“) implementiert werden, das mikroelektromechanische Systeme („MEMS“) Trägheitssensoren, einen hochempfindlichen GPS-Empfänger und fortschrittliche Kalman-Filter-Algorithmen kombiniert, um Abschätzungen von Position, Geschwindigkeit und Lage bereitzustellen. In mindestens einem Ausführungsbeispiel kann/können der/die IMU-Sensor(en) 2066 das Fahrzeug 2000 in die Lage versetzen, den Kurs abzuschätzen, ohne dass eine Eingabe von einem Magnetsensor erforderlich ist, indem Änderungen der Geschwindigkeit vom GPS direkt beobachtet und mit dem/den IMU-Sensor(en) 2066 korreliert werden. In mindestens einem Ausführungsbeispiel können IMU-Sensor(en) 2066 und GNSS-Sensor(en) 2058 in einer einzigen integrierten Einheit kombiniert werden.
  • In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 ein oder mehrere Mikrofone 2096 umfassen, die im und/oder um das Fahrzeug 2000 herum angeordnet sind. In mindestens einem Ausführungsbeispiel kann (können) das (die) Mikrofon(e) 2096 u.a. zum Detektieren und Identifizieren von Notfallfahrzeugen verwendet werden.
  • In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 ferner eine beliebige Anzahl von Kameratypen enthalten, einschließlich Stereokamera(s) 2068, Weitwinkelkamera(s) 2070, Infrarotkamera(s) 2072, Umgebungskamera(s) 2074, Fernkamera(s) 2098, Mittelbereichskamera(s) 2076 und/oder andere Kameratypen. In mindestens einem Ausführungsbeispiel können Kameras verwendet werden, um Bilddaten rund um den gesamten Umfang des Fahrzeugs 2000 zu erfassen. In mindestens einem Ausführungsbeispiel hängen die verwendeten Kameratypen vom Fahrzeug 2000 ab. In mindestens einem Ausführungsbeispiel kann eine beliebige Kombination von Kameratypen verwendet werden, um die notwendige Abdeckung um das Fahrzeug 2000 herum zu gewährleisten. In mindestens einem Ausführungsbeispiel kann die Anzahl der Kameras je nach Ausführungsbeispiel unterschiedlich sein. In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 beispielsweise sechs Kameras, sieben Kameras, zehn Kameras, zwölf Kameras oder eine andere Anzahl von Kameras enthalten. Die Kameras können, als Beispiel und ohne Einschränkung, Gigabit Multimedia Serial Link („GMSL“) und/oder Gigabit Ethernet unterstützen. In mindestens einem Ausführungsbeispiel wird jede der Kameras zuvor in Bezug auf 20A und 20B mit mehr Details beschrieben.
  • In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 ferner einen oder mehrere Vibrationssensoren 2042 enthalten. Der/die Vibrationssensor(en) 2042 kann/können Vibrationen von Komponenten des Fahrzeugs 2000, wie z.B. der Achse(n), messen. In mindestens einem Ausführungsbeispiel können beispielsweise Änderungen der Vibrationen eine Änderung der Straßenoberfläche anzeigen. In mindestens einem Ausführungsbeispiel können, wenn zwei oder mehr Vibrationssensoren 2042 verwendet werden, Unterschiede zwischen den Vibrationen verwendet werden, um die Reibung oder den Schlupf der Straßenoberfläche zu bestimmen (z.B. wenn der Unterschied in der Vibration zwischen einer angetriebenen Achse und einer frei rotierenden Achse besteht).
  • In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 das ADAS-System 2038 enthalten. Das ADAS-System 2038 kann in einigen Beispielen ohne Einschränkung einen SoC umfassen. In mindestens einem Ausführungsbeispiel kann das ADAS-System 2038 ohne Einschränkung eine beliebige Anzahl und Kombination eines autonomen/adaptiven/automatischen Geschwindigkeitsregelsystems („ACC“), eines kooperativen adaptiven Geschwindigkeitsregelsystems („CACC“), eines Vorwärts-Crash-Warnsystems („FCW“), eines automatischen Notbremssystems („AEB“) umfassen, ein System zur Warnung vor dem Verlassen der Fahrspur („LDW“), ein Spurhalte-Assistenzsystem („LKA“), ein System zur Warnung vor dem toten Winkel („BSW“), ein System zur Warnung vor rückwärtigem Querverkehr („RCTW“), ein System zur Kollisionswarnung („CW“), ein System zur Zentrierung der Fahrspur („LC“) und/oder andere Systeme, Merkmale und/oder Funktionalitäten.
  • In mindestens einem Ausführungsbeispiel kann das ACC-System den/die RADAR-Sensor(en) 2060, den/die LIDAR-Sensor(en) 2064 und/oder eine beliebige Anzahl von Kamera(s) verwenden. In mindestens einem Ausführungsbeispiel kann das ACC-System ein longitudinales ACC-System und/oder ein laterales ACC-System umfassen. In mindestens einem Ausführungsbeispiel überwacht und regelt das ACC-System in Längsrichtung die Distanz zum unmittelbar vor dem Fahrzeug 2000 befindlichen Fahrzeug und passt die Geschwindigkeit des Fahrzeugs 2000 automatisch an, um einen sicheren Abstand zu vorausfahrenden Fahrzeugen einzuhalten. In mindestens einem Ausführungsbeispiel hält das seitliche ACC-System die Distanz und rät dem Fahrzeug 2000, die Spur zu wechseln, wenn dies erforderlich ist. In mindestens einem Ausführungsbeispiel ist das seitliche ACC-System mit anderen ADAS-Anwendungen wie LC und CW verbunden.
  • In mindestens einem Ausführungsbeispiel verwendet das CACC-System Informationen von anderen Fahrzeugen, die über eine Netzwerkschnittstelle 2024 und/oder drahtlose Antenne(n) 2026 von anderen Fahrzeugen über eine drahtlose Verbindung oder indirekt über eine Netzwerkverbindung (z. B. über das Internet) empfangen werden können. In mindestens einem Ausführungsbeispiel können direkte Verbindungen durch eine Fahrzeug-zu-Fahrzeug-Kommunikationsverbindung („V2V“) bereitgestellt werden, während indirekte Verbindungen durch eine Infrastruktur-zu-Fahrzeug-Kommunikationsverbindung („I2V“) bereitgestellt werden können. Im Allgemeinen liefert das V2V-Kommunikationskonzept Informationen über unmittelbar vorhergehende Fahrzeuge (z. B. Fahrzeuge, die sich unmittelbar vor dem Fahrzeug 2000 und auf derselben Fahrspur wie dieses befinden), während das I2V-Kommunikationskonzept Informationen über den weiter vorausfahrenden Verkehr liefert. In mindestens einem Ausführungsbeispiel kann das CACC-System entweder eine oder beide 12V- und V2V-Informationsquellen enthalten. In mindestens einem Ausführungsbeispiel kann das CACC-System angesichts der Informationen über Fahrzeuge vor dem Fahrzeug 2000 zuverlässiger sein und hat das Potenzial, den Verkehrsfluss zu verbessern und Staus auf der Straße zu reduzieren.
  • In mindestens einem Ausführungsbeispiel ist das FCW-System so gestaltet, dass es den Fahrer vor einer Gefahr warnt, so dass er korrigierend eingreifen kann. In mindestens einem Ausführungsbeispiel verwendet das FCW-System eine nach vorne gerichtete Kamera und/oder RADAR-Sensor(en) 2060, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt ist/sind, der/die elektrisch mit der Rückmeldung an den Fahrer gekoppelt ist/sind, wie z. B. eine Anzeige, ein Lautsprecher und/oder eine vibrierende Komponente. In mindestens einem Ausführungsbeispiel kann das FCW-System eine Warnung bereitstellen, z. B. in Form eines Tons, einer visuellen Warnung, einer Vibration und/oder eines schnellen Bremsimpulses.
  • In mindestens einem Ausführungsbeispiel detektiert das AEB-System einen drohenden Zusammenstoß mit einem anderen Fahrzeug oder einem anderen Objekt und kann automatisch die Bremsen betätigen, wenn der Fahrer nicht innerhalb eines bestimmten Zeit- oder Distanzparameters korrigierend eingreift. In mindestens einem Ausführungsbeispiel kann das AEB-System nach vorne gerichtete Kamera(s) und/oder RADAR-Sensor(en) 2060 verwenden, die mit einem speziellen Prozessor, DSP, FPGA und/oder ASIC verbunden sind. In mindestens einem Ausführungsbeispiel kann das AEB-System, wenn es eine Gefahr detektiert, den Fahrer zunächst darauf hinweisen, dass er korrigierend eingreifen muss, um eine Kollision zu vermeiden, und wenn der Fahrer keine korrigierenden Maßnahmen ergreift, kann das AEB-System automatisch die Bremsen betätigen, um die Auswirkungen der vorhergesagten Kollision zu verhindern oder zumindest abzuschwächen. In mindestens einem Ausführungsbeispiel kann das AEB-System Techniken wie eine dynamische Bremsunterstützung und/oder eine Crash-Imminent-Bremsung umfassen.
  • In mindestens einem Ausführungsbeispiel warnt das LDW-System den Fahrer durch optische, akustische und/oder taktile Signale, wie z. B. Vibrationen am Lenkrad oder am Sitz, wenn das Fahrzeug 2000 die Fahrbahnmarkierungen überfährt. In mindestens einem Ausführungsbeispiel wird das LDW-System nicht aktiviert, wenn der Fahrer ein absichtliches Verlassen der Fahrspur durch Betätigen eines Blinkers anzeigt. In mindestens einem Ausführungsbeispiel kann das LDW-System Stirnflächenkameras verwenden, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, der elektrisch mit der Rückmeldung an den Fahrer verbunden ist, z. B. mit einer Anzeige, einem Lautsprecher und/oder einer vibrierenden Komponente. In mindestens einem Ausführungsbeispiel ist das LKA-System eine Variante des LDW-Systems. Das LKA-System liefert Eingaben in die Lenkung oder bremst, um das Fahrzeug 2000 zu korrigieren, wenn das Fahrzeug 2000 beginnt, die Fahrspur zu verlassen.
  • In mindestens einem Ausführungsbeispiel detektiert und warnt das BSW-System den Fahrer vor Fahrzeugen, die sich im toten Winkel des Fahrzeugs befinden. In mindestens einem Ausführungsbeispiel kann das BSW-System ein optisches, akustisches und/oder taktiles Warnsignal ausgeben, um anzuzeigen, dass das Zusammenführen oder Wechseln der Fahrspur unsicher ist. In mindestens einem Ausführungsbeispiel kann das BSW-System eine zusätzliche Warnung ausgeben, wenn der Fahrer einen Blinker verwendet. In mindestens einem Ausführungsbeispiel kann das BSW-System (eine) nach hinten gerichtete Kamera(s) und/oder (einen) RADAR-Sensor(s) 2060 verwenden, der/die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt ist/sind, der/die elektrisch mit der Rückmeldung an den Fahrer gekoppelt ist/sind, wie z.B. eine Anzeige, ein Lautsprecher und/oder eine vibrierende Komponente.
  • In mindestens einem Ausführungsbeispiel kann das RCTW-System eine visuelle, akustische und/oder taktile Benachrichtigung bereitstellen, wenn ein Objekt außerhalb der Reichweite der Rückfahrkamera detektiert wird, wenn das Fahrzeug 2000 rückwärts fährt. In mindestens einem Ausführungsbeispiel umfasst das RCTW-System ein AEB-System, um sicherzustellen, dass die Fahrzeugbremsen betätigt werden, um einen Unfall zu vermeiden. In mindestens einem Ausführungsbeispiel kann das RCTW-System einen oder mehrere nach hinten gerichtete(n) RADAR-Sensor(en) 2060 verwenden, der/die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt ist/sind, der/die elektrisch mit der Rückmeldung des Fahrers gekoppelt ist/sind, wie z.B. eine Anzeige, ein Lautsprecher und/oder eine vibrierende Komponente.
  • In mindestens einem Ausführungsbeispiel können herkömmliche ADAS-Systeme zu falsch-positiven Ergebnissen neigen, die für einen Fahrer ärgerlich und ablenkend sein können, aber typischerweise nicht katastrophal sind, da herkömmliche ADAS-Systeme den Fahrer warnen und ihm die Möglichkeit geben, zu entscheiden, ob eine Sicherheitsbedingung wirklich vorliegt und entsprechend zu handeln. In mindestens einem Ausführungsbeispiel entscheidet das Fahrzeug 2000 bei widersprüchlichen Ergebnissen selbst, ob das Ergebnis eines primären Computers oder eines sekundären Computers (z. B. erstes Steuergerät 2036 oder zweites Steuergerät 2036) beachtet werden soll. Zum Beispiel kann in mindestens einem Ausführungsbeispiel das ADAS-System 2038 ein Backup- und/oder Sekundärcomputer sein, der einem Rationalitätsmodul des Backup-Computers Erfassungsinformationen liefert. In mindestens einem Ausführungsbeispiel kann der Rationalitätsmonitor des Backup-Computers eine redundante, diverse Software auf Hardwarekomponenten ausführen, um Fehler bei der Erfassung und bei dynamischen Fahraufgaben zu detektieren. In mindestens einem Ausführungsbeispiel können die Ausgaben des ADAS-Systems 2038 an eine Überwachungs-MCU weitergeleitet werden. In mindestens einem Ausführungsbeispiel bestimmt die überwachende MCU bei Konflikten zwischen den Ausgaben des Primärrechners und des Sekundärrechners, wie der Konflikt beigelegt werden kann, um einen sicheren Betrieb zu gewährleisten.
  • In mindestens einem Ausführungsbeispiel kann der Primärcomputer so konfiguriert sein, dass er der übergeordneten MCU einen Wert für die Konfidenz liefert, der die Konfidenz des Primärcomputers in Bezug auf das gewählte Ergebnis anzeigt. In mindestens einem Ausführungsbeispiel kann die überwachende MCU, wenn der Wert der Konfidenz einen Schwellenwert überschreitet, der Anweisung des Primärcomputers folgen, unabhängig davon, ob der Sekundärcomputer ein widersprüchliches oder inkonsistentes Ergebnis liefert. In mindestens einem Ausführungsbeispiel, in dem der Wert der Konfidenz den Schwellenwert nicht erreicht und in dem der primäre und der sekundäre Computer unterschiedliche Ergebnisse anzeigen (z. B. einen Konflikt), kann die überwachende MCU zwischen den Computern vermitteln, um ein geeignetes Ergebnis zu bestimmen.
  • In mindestens einem Ausführungsbeispiel kann die überwachende MCU so konfiguriert sein, dass sie ein neuronales Netzwerk (bzw. neuronale Netzwerke) ausführt, das bzw. die trainiert und konfiguriert ist bzw. sind, um zumindest teilweise basierend auf den Ausgaben des Primärcomputers und des Sekundärcomputers die Bedingungen zu bestimmen, unter denen der Sekundärcomputer Fehlalarme liefert. In mindestens einem Ausführungsbeispiel kann (können) das (die) neuronale(n) Netzwerk(e) in der Überwachungs-MCU lernen, wann der Ausgabe des Sekundärcomputers vertraut werden kann und wann nicht. Zum Beispiel kann in mindestens einem Ausführungsbeispiel, wenn der sekundäre Computer ein RADAR-basiertes FCW-System ist, ein neuronales Netzwerk in der überwachenden MCU lernen, wenn das FCW-System metallische Objekte identifiziert, die in Wirklichkeit keine Gefahren sind, wie z. B. ein Abflussgitter oder ein Schachtdeckel, der einen Alarm auslöst. In mindestens einem Ausführungsbeispiel kann ein neuronales Netzwerk in der überwachenden MCU, wenn der sekundäre Computer ein kamerabasiertes LDW-System ist, lernen, das LDW-System außer Kraft zu setzen, wenn Radfahrer oder Fußgänger vorhanden sind und ein Verlassen der Fahrspur tatsächlich das sicherste Manöver ist. In mindestens einem Ausführungsbeispiel kann die überwachende MCU mindestens einen DLA oder eine GPU umfassen, der/die für die Ausführung neuronaler Netzwerke mit assoziiertem Speicher geeignet ist. In mindestens einem Ausführungsbeispiel kann die Überwachungs-MCU eine Komponente des/der SoC(s) 2004 umfassen und/oder als solche enthalten sein.
  • In mindestens einem Ausführungsbeispiel kann das ADAS-System 2038 einen sekundären Computer umfassen, der die ADAS-Funktionalität unter Verwenden herkömmlicher Regeln der computergestützten Vision ausführt. In mindestens einem Ausführungsbeispiel kann der sekundäre Computer klassische Regeln der computergestützten Vision (wenn-dann) verwenden, und das Vorhandensein eines neuronalen Netzwerks (von Netzwerken) in der überwachenden MCU kann die Zuverlässigkeit, Sicherheit und Leistung verbessern. In mindestens einem Ausführungsbeispiel wird das Gesamtsystem durch die unterschiedliche Implementierung und die absichtliche Nichtidentität fehlertoleranter, insbesondere gegenüber Fehlern, die durch die Funktionalität der Software (oder der Software-Hardware-Schnittstelle) bewirkt werden. Wenn beispielsweise in mindestens einem Ausführungsbeispiel ein Softwarefehler in der auf dem primären Computer laufenden Software auftritt und ein nicht-identischer Softwarecode, der auf dem sekundären Computer läuft, dasselbe Gesamtergebnis liefert, dann kann die überwachende MCU eine größere Konfidenz haben, dass das Gesamtergebnis korrekt ist und der Fehler in der Software oder Hardware auf dem primären Computer keinen wesentlichen Fehler bewirkt.
  • In mindestens einem Ausführungsbeispiel kann die Ausgabe des ADAS-Systems 2038 in den Erfassungsblock des Primärrechners und/oder in den Block für dynamische Fahraufgaben des Primärrechners eingespeist werden. Zumindest in einem Ausführungsbeispiel kann der Wahrnehmungsblock diese Informationen bei der Identifizierung von Objekten verwenden, wenn das ADAS-System 2038 eine Vorwärts-Crash-Warnung aufgrund eines unmittelbar vorausliegenden Objekts anzeigt. In mindestens einem Ausführungsbeispiel kann der sekundäre Computer ein eigenes neuronales Netzwerk enthalten, das trainiert wird und so das Risiko von Fehlalarmen reduziert, wie hier beschrieben.
  • In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 ferner einen Infotainment-SoC 2030 (z.B. ein bordeigenes Infotainment-System (IVI)) enthalten. Obwohl als SoC dargestellt und beschrieben, kann das Infotainment-System 2030 in mindestens einem Ausführungsbeispiel kein SoC sein und kann ohne Einschränkung zwei oder mehr diskrete Komponenten enthalten. In mindestens einem Ausführungsbeispiel kann das Infotainment-SoC 2030 ohne Einschränkung eine Kombination aus Hardware und Software umfassen, die verwendet werden kann, um Audio (z. B. Musik, einen persönlichen digitalen Assistenten, Navigationsanweisungen, Nachrichten, Radio usw.), Video (z. B. Fernsehen, Filme, Streaming usw.), Telefon (z. B, Freisprecheinrichtung), Netzwerkkonnektivität (z. B. LTE, WiFi usw.) und/oder Informationsdienste (z. B. Navigationssysteme, Einparkhilfe hinten, ein Radiodatensystem, fahrzeugbezogene Informationen wie Kraftstoffstand, zurückgelegte Gesamtdistanz, Bremskraftstoffstand, Ölstand, Tür öffnen/schließen, Luftfilterinformationen usw.) an das Fahrzeug 2000. Der Infotainment-SoC 2030 könnte beispielsweise Radios, Plattenspieler, Navigationssysteme, Videoplayer, USB- und Bluetooth-Konnektivität, Carputer, In-Car-Entertainment, WiFi, Audiobedienelemente am Lenkrad, Freisprecheinrichtung, ein Heads-up-Display („HUD“), ein HMI-Display 2034, ein Telematikgerät, ein Steuerungspaneel (z. B. zur Steuerung und/oder Interaktion mit verschiedenen Komponenten, Funktionen und/oder Systemen) und/oder andere Komponenten umfassen. In mindestens einem Ausführungsbeispiel kann der Infotainment-SoC 2030 weiter dazu verwendet werden, dem/den Benutzer(n) des Fahrzeugs Informationen (z. B. visuell und/oder akustisch) zur Verfügung zu stellen, wie z. B. Informationen vom ADAS-System 2038, Informationen zum autonomen Fahren, wie geplante Fahrzeugmanöver, Trajektorien, Umgebungsinformationen (z. B. Kreuzungsinformationen, Fahrzeuginformationen, Straßeninformationen usw.) und/oder andere Informationen.
  • In mindestens einem Ausführungsbeispiel kann der Infotainment-SoC 2030 eine beliebige Menge und Art von GPU-Funktionalität enthalten. In mindestens einem Ausführungsbeispiel kann der Infotainment-SoC 2030 über den Bus 2002 (z. B. CAN-Bus, Ethernet usw.) mit anderen Geräten, Systemen und/oder Komponenten des Fahrzeugs 2000 kommunizieren. In mindestens einem Ausführungsbeispiel kann der Infotainment-SoC 2030 mit einer Überwachungs-MCU gekoppelt sein, so dass die GPU des Infotainment-Systems einige selbstfahrende Funktionen ausführen kann, falls das/die primäre(n) Steuergerät(e) 2036 (z. B. Primär- und/oder Backup-Computer des Fahrzeugs 2000) ausfallen. In mindestens einem Ausführungsbeispiel kann das Infotainment-SoC 2030 das Fahrzeug 2000 in einen Chauffeur-zu-sicherem-Halt-Modus versetzen, wie hierin beschrieben.
  • In mindestens einem Ausführungsbeispiel kann das Fahrzeug 2000 ferner ein Instrumentencluster 2032 enthalten (z.B. ein digitales Armaturenbrett, ein elektronisches Instrumentencluster, ein digitales Instrumentenpaneel usw.). Das Instrumentencluster 2032 kann ohne Einschränkung ein Steuergerät und/oder einen Supercomputer umfassen (z.B. ein diskretes Steuergerät oder einen Supercomputer). In mindestens einem Ausführungsbeispiel kann das Instrumentencluster 2032 ohne Einschränkung eine beliebige Anzahl und Kombination von Instrumenten wie Tachometer, Kraftstoffstand, Öldruck, Drehzahlmesser, Kilometerzähler, Blinker, Schaltstellungsanzeige, Sicherheitsgurt-Warnleuchte(n), Handbrems-Warnleuchte(n), Motor-Fehlfunktionsleuchte(n), Informationen über zusätzliche Rückhaltesysteme (z. B. Airbag), Beleuchtungssteuerungen, Sicherheitssystemsteuerungen, Navigationsinformationen usw. umfassen. In einigen Beispielen können Informationen angezeigt und/oder gemeinsam von Infotainment SoC 2030 und Instrumentencluster 2032 genutzt werden. In mindestens einem Ausführungsbeispiel kann das Instrumentencluster 2032 als Teil des Infotainment-SoC 2030 enthalten sein, oder umgekehrt.
  • Die Inferenz- und/oder Trainingslogik 1715 wird zum Inferenzieren und/oder Trainieren von Operationen verwendet, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 im System 20C zum Inferenzieren oder Vorhersagen verwendet werden, basierend zumindest teilweise auf Gewichtsparametern, die unter Verwenden von Trainingsoperationen des neuronalen Netzwerks, Funktionen und/oder Architekturen des neuronalen Netzwerks oder hierin beschriebenen Anwendungsfällen des neuronalen Netzwerks berechnet wurden.
  • 20D ist ein Diagramm eines Systems 2076 zur Kommunikation zwischen Cloud-basierten Servern und dem autonomen Fahrzeug 2000 aus 20A, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann das System 2076 ohne Einschränkung den/die Server 2078, das/die Netzwerk(e) 2090 und eine beliebige Anzahl und Art von Fahrzeugen, einschließlich des Fahrzeugs 2000, umfassen. Der/die Server 2078 kann/können ohne Einschränkung eine Vielzahl von GPUs 2084(A)-2084(H) (hierin zusammenfassend als GPUs 2084 bezeichnet), PCIe-Switches 2082(A)-2082(H) (hierin zusammenfassend als PCIe-Switches 2082 bezeichnet) und/oder CPUs 2080(A)-2080(B) (hierin zusammenfassend als CPUs 2080 bezeichnet) umfassen. GPUs 2084, CPUs 2080 und PCIe-Switches 2082 können mit Hochgeschwindigkeits-Interconnects verbunden werden, wie z. B. und ohne Einschränkung mit den von NVIDIA entwickelten NVLink-Schnittstellen 2088 und/oder PCIe-Verbindungen 2086. In mindestens einem Ausführungsbeispiel sind die GPUs 2084 über ein NVLink- und/oder NVSwitch-SoC verbunden, und die GPUs 2084 und die PCIe-Switches 2082 sind über PCIe-Verbindungen verbunden. In mindestens einem Ausführungsbeispiel werden zwar acht GPUs 2084, zwei CPUs 2080 und vier PCIe-Switches 2082 gezeigt, dies ist jedoch nicht als Einschränkung zu verstehen. In mindestens einem Ausführungsbeispiel kann jeder der Server 2078 ohne Einschränkung eine beliebige Anzahl von GPUs 2084, CPUs 2080 und/oder PCIe-Switches 2082 in beliebiger Kombination enthalten. In mindestens einem Ausführungsbeispiel könnte(n) der/die Server 2078 beispielsweise jeweils acht, sechzehn, zweiunddreißig und/oder mehr GPUs 2084 enthalten.
  • In mindestens einem Ausführungsbeispiel kann(n) der (die) Server 2078 über das (die) Netzwerk(e) 2090 und von Fahrzeugen Bilddaten empfangen, die Bilder repräsentieren, die unerwartete oder geänderte Straßenbedingungen zeigen, wie z. B. kürzlich begonnene Straßenarbeiten. In mindestens einem Ausführungsbeispiel kann(n) der/die Server 2078 über das/die Netzwerk(e) 2090 und an die Fahrzeuge neuronale Netzwerke 2092, aktualisierte neuronale Netzwerke 2092 und/oder Kartendaten 2094 übertragen, die ohne Einschränkung Informationen über Verkehrs- und Straßenbedingungen umfassen. In mindestens einem Ausführungsbeispiel können die Aktualisierungen der Kartendaten 2094 ohne Einschränkung Aktualisierungen für die HD-Karte 2022 umfassen, wie z. B. Informationen über Baustellen, Schlaglöcher, Umleitungen, Überschwemmungen und/oder andere Hindernisse. In mindestens einem Ausführungsbeispiel können neuronale Netzwerke 2092, aktualisierte neuronale Netzwerke 2092 und/oder Kartendaten 2094 aus neuem Trainieren und/oder Erfahrungen resultieren, die in Daten repräsentiert werden, die von einer beliebigen Anzahl von Fahrzeugen in der Umgebung empfangen werden, und/oder zumindest teilweise auf Trainieren basieren, das in einem Datenzentrum durchgeführt wird (z.B. unter Verwenden von Server(n) 2078 und/oder anderen Servern).
  • In mindestens einem Ausführungsbeispiel kann/können der/die Server 2078 verwendet werden, um Modelle des maschinellen Lernens (z.B. neuronale Netzwerke) basierend zumindest teilweise auf Trainingsdaten zu trainieren. Die Trainingsdaten können von Fahrzeugen generiert werden und/oder können in einer Simulation (z.B. unter Verwenden einer Game Engine) generiert werden. In mindestens einem Ausführungsbeispiel wird eine beliebige Menge von Trainingsdaten mit Tags versehen (z. B. wenn das assoziierte neuronale Netzwerk von beaufsichtigtem Lernen profitiert) und/oder einer anderen Vorverarbeitung unterzogen. In mindestens einem Ausführungsbeispiel wird eine beliebige Menge von Trainingsdaten nicht mit Tags versehen und/oder vorverarbeitet (z. B. wenn das assoziierte neuronale Netzwerk kein beaufsichtigtes Lernen erfordert). In mindestens einem Ausführungsbeispiel können die maschinellen Lernmodelle, sobald sie trainiert sind, von den Fahrzeugen verwendet werden (z.B. an die Fahrzeuge über das/die Netzwerk(e) 2090 übertragen werden, und/oder die maschinellen Lernmodelle können von dem/den Server(n) 2078 zur Fernüberwachung der Fahrzeuge verwendet werden.
  • In mindestens einem Ausführungsbeispiel können Server 2078 Daten von Fahrzeugen empfangen und Daten auf aktuelle neuronale Netzwerke zum intelligenten Inferenzieren in Echtzeit anwenden. In mindestens einem Ausführungsbeispiel kann(n) der/die Server 2078 Deep Learning-Supercomputer und/oder dedizierte KI-Computer umfassen, die von GPU(s) 2084 angetrieben werden, wie z. B. von NVIDIA entwickelte DGX- und DGX Station-Maschinen. In mindestens einem Ausführungsbeispiel kann der/die Server 2078 jedoch eine Deep Learning-Infrastruktur umfassen, die CPU-betriebene Datenzentren verwendet.
  • In mindestens einem Ausführungsbeispiel kann die Deep Learning-Infrastruktur des/der Server(s) 2078 in der Lage sein, schnelles Inferenzieren in Echtzeit durchzuführen, und kann diese Fähigkeit verwenden, um den Zustand von Prozessoren, Software und/oder assoziierter Hardware im Fahrzeug 2000 zu evaluieren und zu überprüfen. In mindestens einem Ausführungsbeispiel kann die Deep-Learning-Infrastruktur beispielsweise periodische Aktualisierungen vom Fahrzeug 2000 empfangen, wie etwa eine Sequenz von Bildern und/oder Objekten, die das Fahrzeug 2000 in dieser Sequenz von Bildern lokalisiert hat (z. B. über computergestützte Vision und/oder andere maschinelle Objektklassifizierungsverfahren). In mindestens einem Ausführungsbeispiel kann die Deep Neural Network-Infrastruktur ihr eigenes neuronales Netzwerk laufen lassen, um Objekte zu identifizieren und sie mit den vom Fahrzeug 2000 identifizierten Objekten zu vergleichen, und wenn die Ergebnisse nicht übereinstimmen und die Deep Learning-Infrastruktur zu dem Schluss kommt, dass die KI im Fahrzeug 2000 eine Fehlfunktion aufweist, dann kann der/die Server 2078 ein Signal an das Fahrzeug 2000 senden, das einen ausfallsicheren Computer des Fahrzeugs 2000 anweist, die Kontrolle zu übernehmen, die Fahrgäste zu benachrichtigen und ein sicheres Parkmanöver durchzuführen.
  • In mindestens einem Ausführungsbeispiel kann der/die Server 2078 GPU(s) 2084 und einen oder mehrere programmierbare Inferenzbeschleuniger (z.B. NVIDIAs TensorRT 3) umfassen. In mindestens einem Ausführungsbeispiel kann die Kombination von GPU-betriebenen Servern und Inferenzbeschleunigung eine Echtzeit-Reaktionsfähigkeit ermöglichen. In mindestens einem Ausführungsbeispiel, z. B. wenn die Leistung weniger kritisch ist, können zum Inferenzieren Server verwendet werden, die von CPUs, FPGAs und anderen Prozessoren betrieben werden. In mindestens einem Ausführungsbeispiel werden die Hardwarestruktur(en) 1715 verwendet, um eine oder mehrere Ausführungsbeispiele durchzuführen. Details bezüglich der Hardwarestruktur(en) 1715 werden hier in Verbindung mit 17A und/oder 17B beschrieben.
  • Computersysteme
  • 21 ist ein Blockdiagramm, das ein exemplarisches Computersystem veranschaulicht, das ein System mit miteinander verbundenen Geräten und Komponenten, ein System-on-a-Chip (SOC) oder eine Kombination davon 2100 sein kann, das mit einem Prozessor gebildet wird, der Ausführungseinheiten enthalten kann, um einen Befehl gemäß mindestens einem Ausführungsbeispiel auszuführen. In mindestens einer Ausführungsform kann das Computersystem 2100 ohne Einschränkung eine Komponente, wie z. B. einen Prozessor 2102, enthalten, um Ausführungseinheiten einschließlich Logik zur Durchführung von Algorithmen zur Verarbeitung von Daten gemäß der vorliegenden Offenbarung, wie z. B. in der hierin beschriebenen Ausführungsform, einzusetzen. In mindestens einem Ausführungsbeispiel kann das Computersystem 2100 Prozessoren umfassen, wie z. B. die PENTIUM®-Prozessorfamilie, XeonTM, Itanium®, XScaleTM und/oder StrongARMTM, Intel® Core™ oder Intel® Nervana™-Mikroprozessoren, die von der Intel Corporation in Santa Clara, Kalifornien, erhältlich sind, obwohl auch andere Systeme (einschließlich PCs mit anderen Mikroprozessoren, technische Workstations, Set-Top-Boxen und dergleichen) verwendet werden können. In mindestens einem Ausführungsbeispiel kann das Computersystem 2100 eine Version des WINDOWS-Betriebssystems ausführen, das von der Microsoft Corporation in Redmond, Washington, erhältlich ist, obwohl auch andere Betriebssysteme (zum Beispiel UNIX und Linux), eingebettete Software und/oder grafische Benutzeroberflächen verwendet werden können.
  • Ausführungsbeispiele können in anderen Geräten wie Handheld-Geräten und eingebetteten Anwendungen verwendet werden. Einige Beispiele für tragbare Geräte umfassen Mobiltelefone, Internet-Protokoll-Geräte, Digitalkameras, persönliche digitale Assistenten („PDAs“) und Handheld-PCs. In mindestens einem Ausführungsbeispiel können eingebettete Anwendungen einen Mikrocontroller, einen digitalen Signalprozessor („DSP“), System-on-a-Chip, Netzwerkcomputer („NetPCs“), Set-Top-Boxen, Netzwerk-Hubs, Wide Area Network („WAN“)-Switches oder jedes andere System umfassen, das gemäß mindestens einem Ausführungsbeispiel einen oder mehrere Befehle ausführen kann.
  • In mindestens einem Ausführungsbeispiel kann das Computersystem 2100 ohne Einschränkung einen Prozessor 2102 umfassen, der ohne Einschränkung eine oder mehrere Ausführungseinheiten 2108 enthalten kann, um ein maschinelles Lernmodelltraining und/oder Inferenzieren gemäß den hierin beschriebenen Techniken durchzuführen. In mindestens einem Ausführungsbeispiel ist das System 21 ein Einzelprozessor-Desktop- oder -Serversystem, aber in einem anderen Ausführungsbeispiel kann das System 21 ein Multiprozessorsystem sein. In mindestens einem Ausführungsbeispiel kann der Prozessor 2102 ohne Einschränkung einen CISC-Mikroprozessor (Complex Instruction Set Computer), einen RISC-Mikroprozessor (Reduced Instruction Set Computing), einen VLIW-Mikroprozessor (Very Long Instruction Word), einen Prozessor, der eine Kombination von Befehlssätzen implementiert, oder ein beliebiges anderes Gerät, wie z. B. einen digitalen Signalprozessor, enthalten. In mindestens einem Ausführungsbeispiel kann der Prozessor 2102 mit einem Prozessorbus 2110 verbunden sein, der Datensignale zwischen dem Prozessor 2102 und anderen Komponenten im Computersystem 2100 übertragen kann.
  • In mindestens einem Ausführungsbeispiel kann der Prozessor 2102 ohne Einschränkung einen Level 1 („L1“) internen Cache-Speicher („Cache“) 2104 enthalten. In mindestens einem Ausführungsbeispiel kann der Prozessor 2102 einen einzigen internen Cache oder mehrere Ebenen eines internen Cache aufweisen. In mindestens einem Ausführungsbeispiel kann sich der Cache-Speicher außerhalb des Prozessors 2102 befinden. Andere Ausführungsbeispiele können auch eine Kombination aus internen und externen Cachespeichern umfassen, abhängig von der jeweiligen Implementierung und den Bedürfnissen. In mindestens einem Ausführungsbeispiel kann die Registerdatei 2106 verschiedene Datentypen in verschiedenen Registern speichern, einschließlich, ohne Einschränkung, Ganzzahlregistern, Gleitkommaregistem, Statusregistern und Befehlszeigerregistern.
  • In mindestens einem Ausführungsbeispiel befindet sich die Ausführungseinheit 2108, die ohne Einschränkung eine Logik zur Durchführung von Ganzzahl- und Gleitkommaoperationen umfasst, ebenfalls im Prozessor 2102. Der Prozessor 2102 kann auch einen Nur-Lese-Speicher („ROM“) für Mikrocode („ucode“) enthalten, der Mikrocode für bestimmte Makrobefehle speichert. In mindestens einem Ausführungsbeispiel kann die Ausführungseinheit 2108 eine Logik zur Handhabung eines gepackten Befehlssatzes 2109 umfassen. In mindestens einem Ausführungsbeispiel können durch das Enthalten des gepackten Befehlssatzes 2109 im Befehlssatz eines allgemeinen Prozessors 2102 zusammen mit einer assoziierten Schaltungsanordnung zur Ausführung von Befehlen Operationen, die von vielen Multimedia-Anwendungen verwendet werden, unter Verwenden gepackter Daten in einem allgemeinen Prozessor 2102 betrieben werden. In einem oder mehreren Ausführungsbeispielen können viele Multimedia-Anwendungen beschleunigt und effizienter ausgeführt werden, indem die volle Breite des Datenbusses eines Prozessors für die Durchführung von Operationen auf gepackten Daten verwendet wird, wodurch die Notwendigkeit entfällt, kleinere Einheiten von Daten über den Datenbus des Prozessors zu übertragen, um eine oder mehrere Operationen ein Datenelement nach dem anderen durchzuführen.
  • In mindestens einem Ausführungsbeispiel kann die Ausführungseinheit 2108 auch in Mikrocontrollern, eingebetteten Prozessoren, Grafikgeräten, DSPs und anderen Arten von logischen Schaltungen verwendet werden. In mindestens einem Ausführungsbeispiel kann das Computersystem 2100, ohne Einschränkung, einen Speicher 2120 enthalten. In mindestens einem Ausführungsbeispiel kann der Speicher 2120 als ein Dynamic Random Access Memory („DRAM“)-Gerät, ein Static Random Access Memory („SRAM“)-Gerät, ein Flash-Speichergerät oder ein anderes Speichergerät implementiert sein. Im Speicher 2120 können Anweisungen 2119 und/oder Daten 2121 gespeichert werden, die durch Datensignale repräsentiert werden, die vom Prozessor 2102 ausgeführt werden können.
  • In mindestens einem Ausführungsbeispiel kann ein Systemlogik-Chip mit dem Prozessorbus 2110 und dem Speicher 2120 verbunden sein. In mindestens einem Ausführungsbeispiel kann der Systemlogik-Chip ohne Einschränkung ein Speichersteuergerät-Hub („MCH“) 2116 enthalten, und der Prozessor 2102 kann mit dem MCH 2116 über den Prozessorbus 2110 kommunizieren. In mindestens einem Ausführungsbeispiel kann der MCH 2116 einen Speicherpfad 2118 mit hoher Bandbreite zum Speicher 2120 für die Befehls- und Datenspeicherung und für die Speicherung von Grafikbefehlen, Daten und Texturen bereitstellen. In mindestens einem Ausführungsbeispiel kann der MCH 2116 Datensignale zwischen dem Prozessor 2102, dem Speicher 2120 und anderen Komponenten des Computersystems 2100 leiten und Datensignale zwischen dem Prozessorbus 2110, dem Speicher 2120 und einem System-E/A 2122 überbrücken. In mindestens einem Ausführungsbeispiel kann der Systemlogik-Chip einen Grafikport zur Kopplung mit einem Grafiksteuergerät bereitstellen. In mindestens einem Ausführungsbeispiel kann der MCH 2116 mit dem Speicher 2120 über einen Speicherpfad 2118 mit hoher Bandbreite gekoppelt sein und die Grafik-/Videokarte 2112 kann mit dem MCH 2116 über einen Accelerated Graphics Port („AGP“) Verbindungspfad 2114 gekoppelt sein.
  • In mindestens einem Ausführungsbeispiel kann das Computersystem 2100 System-E/A 2122 verwenden, das ein proprietärer Hub-Schnittstellenbus ist, um MCH 2116 mit dem Controller-Hub („ICH“) 2130 zu verbinden. In mindestens einem Ausführungsbeispiel kann ICH 2130 direkte Verbindungen zu einigen E/A-Geräten über einen lokalen E/A-Bus bereitstellen. In mindestens einem Ausführungsbeispiel kann der lokale E/A-Bus ohne Einschränkung einen Hochgeschwindigkeits-E/A-Bus zur Verbindung von Peripheriegeräten mit dem Speicher 2120, dem Chipsatz und dem Prozessor 2102 umfassen. Beispiele können ohne Einschränkung einen Audio-Controller 2129, einen Firmware-Hub („Flash-BIOS“) 2128, einen drahtlosen Transceiver 2126, einen Datenspeicher 2124, einen Legacy-E/A-Controller 2123 mit Benutzereingabe- und Tastaturschnittstellen, einen seriellen Erweiterungsport 2127, wie Universal Serial Bus („USB“), und einen Netzwerk-Controller 2134 umfassen. Der Datenspeicher 2124 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, ein CD-ROM-Gerät, ein Flash-Speichergerät oder ein anderes Massenspeichergerät umfassen.
  • In mindestens einem Ausführungsbeispiel zeigt 21 ein System, das miteinander verbundene Hardware-Geräte oder „Chips“ umfasst, während 21 in anderen Ausführungsbeispielen ein exemplarisches System-on-a-Chip („SoC“) zeigen kann. In mindestens einem Ausführungsbeispiel können die Geräte mit proprietären Verbindungen, standardisierten Verbindungen (z. B. PCIe) oder einer Kombination davon verbunden sein. In mindestens einem Ausführungsbeispiel sind eine oder mehrere Komponenten des Systems 2100 unter Verwenden von Compute Express Link (CXL)-Verbindungen miteinander verbunden.
  • Die Inferenz- und/oder Trainingslogik 1715 wird verwendet, um Inferenzieren und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 im System 21 zum Inferenzieren oder für Vorhersageoperationen basierend zumindest teilweise auf Gewichtsparametern verwendet werden, die unter Verwenden von Trainingsoperationen des neuronalen Netzwerks, Funktionen und/oder Architekturen des neuronalen Netzwerks oder hierin beschriebenen Anwendungsfällen des neuronalen Netzwerks berechnet wurden.
  • 22 ist ein Blockdiagramm, das ein elektronisches Gerät 2200 zur Verwendung eines Prozessors 2210 gemäß mindestens einem Ausführungsbeispiel zeigt. In mindestens einem Ausführungsbeispiel kann das elektronische Gerät 2200 zum Beispiel und ohne Einschränkung ein Notebook, ein Tower-Server, ein Schrank-Server, ein Blade-Server, ein Laptop, ein Desktop, ein Tablet, ein mobiles Gerät, ein Telefon, ein eingebetteter Computer oder ein anderes geeignetes elektronisches Gerät sein.
  • In mindestens einem Ausführungsbeispiel kann das System 2200 ohne Einschränkung einen Prozessor 2210 umfassen, der kommunikativ mit einer beliebigen Anzahl oder Art von Komponenten, Peripheriegeräten, Modulen oder Geräten verbunden ist. In mindestens einem Ausführungsbeispiel ist der Prozessor 2210 unter Verwenden eines Busses oder einer Schnittstelle gekoppelt, wie z.B. eines 1°C-Busses, eines System-Management-Busses („SMBus“), eines Low-Pin-Count-Busses (LPC), einer seriellen peripheren Schnittstelle („SPI“), eines High-Definition-Audio-Busses („HDA“), eines Serial-Advance-Technology-Attachment-Busses („SATA“), eines universellen seriellen Busses („USB“) (Versionen 1, 2, 3) oder eines universellen asynchronen Receiver/Transmitter-Busses („UART“). In mindestens einem Ausführungsbeispiel zeigt 22 ein System, das miteinander verbundene Hardware-Geräte oder „Chips“ enthält, während 22 in anderen Ausführungsbeispielen ein exemplarisches System-on-a-Chip („SoC“) zeigen kann. In mindestens einem Ausführungsbeispiel können die in 22 dargestellten Geräte mit proprietären Verbindungen, standardisierten Verbindungen (z. B. PCIe) oder einer Kombination davon verbunden sein. In mindestens einem Ausführungsbeispiel sind eine oder mehrere Komponenten von 22 unter Verwenden von Compute-Express-Link-(CXL)-Verbindungen miteinander verbunden.
  • In mindestens einem Ausführungsbeispiel kann 22 eine Anzeige 2224, einen Touchscreen 2225, eine Auflage 2230, eine Near Field Communications-Einheit („NFC“) 2245, einen Sensor-Hub 2240, einen Wärmesensor 2246, einen Express-Chipsatz („EC“) 2235, ein Trusted Platform Module („TPM“) 2238, BIOS/Firmware/Flash-Speicher („BIOS, FW Flash“) 2222, einen DSP 2260, eine Bewegung „SSD oder HDD“) 2220 wie eine Solid State Disk („SSD“) oder ein Festplattenlaufwerk („HDD“), eine Einheit für ein drahtloses lokales Netzwerk („WLAN“) 2250, eine Bluetooth-Einheit 2252, eine Einheit für ein drahtloses Wide Area Network („WWAN“) 2256, ein Global Positioning System (GPS) 2255, eine Kamera („USB 3. 0-Kamera“) 2254, wie z. B. eine USB 3.0-Kamera, oder eine Low Power Double Data Rate („LPDDR“)-Speichereinheit („LPDDR3“) 2215, die z. B. im LPDDR3-Standard implementiert ist. Diese Komponenten können jeweils auf jede geeignete Weise implementiert werden.
  • In mindestens einem Ausführungsbeispiel können andere Komponenten mit dem Prozessor 2210 über die oben beschriebenen Komponenten kommunikativ verbunden sein. In mindestens einem Ausführungsbeispiel können ein Beschleunigungsmesser 2241, ein Umgebungslichtsensor („ALS“) 2242, ein Kompass 2243 und ein Gyroskop 2244 kommunikativ mit dem Sensor-Hub 2240 verbunden sein. In mindestens einem Ausführungsbeispiel können ein Wärmesensor 2239, ein Lüfter 2237, eine Tastatur 2246 und eine Auflage 2230 kommunikativ mit dem EC 2235 verbunden sein. In mindestens einem Ausführungsbeispiel können der Lautsprecher 2263, ein Kopfhörer 2264 und ein Mikrofon („mic“) 2265 kommunikativ mit einer Audioeinheit („audio codec and class d amp“) 2264 gekoppelt sein, die wiederum kommunikativ mit dem DSP 2260 gekoppelt sein kann. In mindestens einem Ausführungsbeispiel kann die Audioeinheit 2264 beispielsweise und ohne Einschränkung einen Audiocodierer/-decoder („Codec“) und einen Verstärker der Klasse D enthalten. In mindestens einem Ausführungsbeispiel kann die SIM-Karte („SIM“) 2257 kommunikativ mit der WWAN-Einheit 2256 gekoppelt sein. In mindestens einem Ausführungsbeispiel können Komponenten wie die WLAN-Einheit 2250 und die Bluetooth-Einheit 2252 sowie die WWAN-Einheit 2256 in einem Next Generation Form Factor („NGFF“) implementiert sein.
  • Die Inferenz- und/oder Trainingslogik 1715 wird verwendet, um Inferenzieren und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 im System 22 zum Inferenzieren oder Vorhersagen verwendet werden, basierend zumindest teilweise auf Gewichtsparametern, die unter Verwenden von Trainingsoperationen des neuronalen Netzwerks, Funktionen und/oder Architekturen des neuronalen Netzwerks oder hierin beschriebenen Anwendungsfällen des neuronalen Netzwerks berechnet wurden.
  • 23 zeigt ein Computersystem 2300 gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel ist das Computersystem 2300 so konfiguriert, dass es verschiedene in dieser Offenbarung beschriebene Prozesse und Verfahren implementiert.
  • In mindestens einem Ausführungsbeispiel umfasst das Computersystem 2300 ohne Einschränkung mindestens eine zentrale Verarbeitungseinheit („CPU“) 2302, die mit einem Kommunikationsbus 2310 verbunden ist, der ein beliebiges geeignetes Protokoll verwendet, wie PCI („Peripheral Component Interconnect“), Peripheral Component Interconnect Express („PCI-Express“), AGP („Accelerated Graphics Port“), HyperTransport oder andere Bus- oder Punkt-zu-Punkt-Kommunikationsprotokolle. In mindestens einem Ausführungsbeispiel umfasst das Computersystem 2300 ohne Einschränkung einen Hauptspeicher 2304 und eine Steuerlogik (z. B. in Form von Hardware, Software oder einer Kombination davon), und die Daten werden im Hauptspeicher 2304 gespeichert, der die Form eines Direktzugriffsspeichers („RAM“) annehmen kann. In mindestens einem Ausführungsbeispiel stellt ein Netzwerkschnittstellen-Subsystem („Netzwerkschnittstelle“) 2322 eine Schnittstelle zu anderen Rechengeräten und Netzwerken bereit, um Daten von anderen Systemen zu empfangen und Daten an andere Systeme vom Computersystem 2300 zu übermitteln.
  • In mindestens einem Ausführungsbeispiel enthält das Computersystem 2300 in mindestens einem Ausführungsbeispiel ohne Einschränkung Eingabegeräte 2308, ein Parallelverarbeitungssystem 2312 und Anzeigegeräte 2306, die unter Verwenden einer herkömmlichen Kathodenstrahlröhre („CRT“), einer Flüssigkristallanzeige („LCD“), einer Leuchtdiode („LED“), einer Plasmaanzeige oder anderer geeigneter Anzeigetechnologien realisiert werden können. In mindestens einem Ausführungsbeispiel werden Benutzereingaben von Eingabegeräten 2308 wie Tastatur, Maus, Touchpad, Mikrofon und anderen empfangen. In mindestens einem Ausführungsbeispiel kann jedes der vorgenannten Module auf einer einzigen Halbleiterplattform angeordnet sein, um ein Verarbeitungssystem zu bilden.
  • Die Inferenz- und/oder Trainingslogik 1715 wird verwendet, um Inferenzieren und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 im System 23 zum Inferenzieren oder Vorhersagen verwendet werden, basierend zumindest teilweise auf Gewichtsparametern, die unter Verwenden von Trainingsoperationen des neuronalen Netzwerks, Funktionen und/oder Architekturen des neuronalen Netzwerks oder hierin beschriebenen Anwendungsfällen des neuronalen Netzwerks berechnet wurden.
  • 24 zeigt ein Computersystem 2400 gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel enthält das Computersystem 2400, ohne Einschränkung, einen Computer 2410 und einen USB-Stick 2420. In mindestens einem Ausführungsbeispiel kann der Computer 2410 ohne Einschränkung eine beliebige Anzahl und Art von Prozessor(en) (nicht dargestellt) und einen Speicher (nicht dargestellt) umfassen. In mindestens einem Ausführungsbeispiel umfasst der Computer 2410, ohne Einschränkung, einen Server, eine Cloud-Instanz, einen Laptop und einen Desktop-Computer.
  • In mindestens einem Ausführungsbeispiel enthält der USB-Stick 2420 ohne Einschränkung eine Verarbeitungseinheit 2430, eine USB-Schnittstelle 2440 und eine USB-Schnittstellenlogik 2450. In mindestens einem Ausführungsbeispiel kann die Verarbeitungseinheit 2430 ein beliebiges Befehlsausführungssystem, -gerät oder -vorrichtung sein, das in der Lage ist, Befehle auszuführen. In mindestens einem Ausführungsbeispiel kann die Verarbeitungseinheit 2430 ohne Einschränkung eine beliebige Anzahl und Art von Verarbeitungskernen (nicht dargestellt) enthalten. In mindestens einem Ausführungsbeispiel umfasst der Verarbeitungskern 2430 eine anwendungsspezifische integrierte Schaltung („ASIC“), die so optimiert ist, dass sie eine beliebige Anzahl und Art von Operationen durchführen kann, die mit maschinellem Lernen assoziiert sind. In mindestens einem Ausführungsbeispiel ist der Verarbeitungskern 2430 beispielsweise eine Tensor Processing Unit („TPC“), die für die Durchführung von Inferenzoperationen im Zusammenhang mit maschinellem Lernen optimiert ist. In mindestens einem Ausführungsbeispiel ist der Verarbeitungskern 2430 eine Bildverarbeitungseinheit („VPU“), die für die Durchführung von maschinellem Sehen und maschinellem Lernen inferenzierender Operationen optimiert ist.
  • In mindestens einem Ausführungsbeispiel kann die USB-Schnittstelle 2440 eine beliebige Art von USB-Stecker oder USB-Buchse sein. In mindestens einem Ausführungsbeispiel ist die USB-Schnittstelle 2440 beispielsweise eine USB 3.0 Typ-C-Buchse für Daten und Strom. In mindestens einem Ausführungsbeispiel ist die USB-Schnittstelle 2440 ein USB-3.0-Typ-A-Stecker. In mindestens einem Ausführungsbeispiel kann die USB-Schnittstellenlogik 2450 eine beliebige Menge und Art von Logik umfassen, die es der verarbeitenden Einheit 2430 ermöglicht, über den USB-Anschluss 2440 mit Geräten (z.B. Computer 2410) zu kommunizieren.
  • Die Inferenz- und/oder Trainingslogik 1715 wird verwendet, um Inferenzieren und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 im System 24 zum Inferenzieren oder Vorhersagen verwendet werden, basierend zumindest teilweise auf Gewichtsparametern, die unter Verwenden von Trainingsoperationen des neuronalen Netzwerks, Funktionen und/oder Architekturen des neuronalen Netzwerks oder hierin beschriebenen Anwendungsfällen des neuronalen Netzwerks berechnet wurden.
  • 25A zeigt eine exemplarische Architektur, bei der eine Vielzahl von GPUs 2510 - 2513 über Hochgeschwindigkeitsverbindungen 2540 - 2543 (z. B. Busse, Punkt-zu-Punkt-Verbindungen usw.) mit einer Vielzahl von Multi-Core-Prozessoren 2505 - 2506 kommunikativ verbunden ist. In einem Ausführungsbeispiel unterstützen die Hochgeschwindigkeitsverbindungen 2540-2543 einen Kommunikationsdurchsatz von 4GB/s, 30GB/s, 80GB/s oder mehr. Es können verschiedene Verbindungsprotokolle verwendet werden, die PCIe 4.0 oder 5.0 und NVLink 2.0 umfassen, aber nicht darauf beschränkt sind.
  • Zusätzlich und in einem Ausführungsbeispiel sind zwei oder mehr GPUs 2510-2513 über Hochgeschwindigkeitsverbindungen 2529-2530 miteinander verbunden, die unter Verwenden der gleichen oder anderer Protokolle/Leitungen implementiert werden können als die für die Hochgeschwindigkeitsverbindungen 2540-2543 verwendeten. In ähnlicher Weise können zwei oder mehr Multi-Core-Prozessoren 2505-2506 über Hochgeschwindigkeitsverbindungen 2528 verbunden sein, bei denen es sich um symmetrische Multiprozessorbusse (SMP) handeln kann, die mit 20 GB/s, 30 GB/s, 120 GB/s oder mehr betrieben werden. Alternativ kann die gesamte Kommunikation zwischen den verschiedenen in 25A gezeigten Systemkomponenten unter Verwenden derselben Protokolle/Verbindungen erfolgen (z. B. über eine gemeinsame Verbindungsstruktur).
  • In einem Ausführungsbeispiel ist jeder Multi-Core-Prozessor 2505-2506 kommunikativ mit einem Prozessorspeicher 2501-2502 über Speicherverbindungen 2526-2527 verbunden, und jede GPU 2510-2513 ist kommunikativ mit dem GPU-Speicher 2520-2523 über GPU-Speicherverbindungen 2550-2553 verbunden. Die Speicherverbindungen 2526-2527 und 2550-2553 können gleiche oder unterschiedliche Speicherzugriffstechnologien verwenden. Bei den Prozessorspeichern 2501-2502 und den GPU-Speichern 2520-2523 kann es sich beispielsweise um flüchtige Speicher wie Dynamic Random Access Memory (DRAMs) (einschließlich Stacked DRAMs), Graphics DDR SDRAM (GDDR) (z. B. GDDR5, GDDR6) oder High Bandwidth Memory (HBM) und/oder um nichtflüchtige Speicher wie 3D XPoint oder Nano-Ram handeln. In einem Ausführungsbeispiel kann ein Teil der Prozessorspeicher 2501-2502 ein flüchtiger Speicher und ein anderer Teil ein nichtflüchtiger Speicher sein (z. B. unter Verwenden einer zweistufigen Speicherhierarchie (2LM)).
  • Wie hierin beschrieben, können verschiedene Prozessoren 2505-2506 und GPUs 2510-2513 zwar physisch mit einem bestimmten Speicher 2501-2502 bzw. 2520-2523 gekoppelt sein, doch kann eine einheitliche Speicherarchitektur implementiert werden, bei der ein und derselbe virtuelle Systemadressraum (auch als „effektiver Adressraum“ bezeichnet) auf verschiedene physische Speicher verteilt ist. Beispielsweise können die Prozessorspeicher 2501-2502 jeweils 64 GB Systemadressraum umfassen, und die GPU-Speicher 2520-2523 können jeweils 32 GB Systemadressraum umfassen (was in diesem Beispiel zu einem adressierbaren Gesamtspeicher von 256 GB führt).
  • 25B zeigt zusätzliche Details für eine Verbindung zwischen einem Multi-Core-Prozessor 2507 und einem Grafikbeschleunigungsmodul 2546 gemäß einem exemplarischen Ausführungsbeispiel. Das Grafikbeschleunigungsmodul 2546 kann einen oder mehrere GPU-Chips umfassen, die auf einer Leitungskarte integriert sind, die über eine Hochgeschwindigkeitsverbindung 2540 mit dem Prozessor 2507 verbunden ist. Alternativ kann das Grafikbeschleunigungsmodul 2546 auch in demselben Gehäuse oder Chip wie der Prozessor 2507 integriert sein.
  • In mindestens einem Ausführungsbeispiel umfasst der dargestellte Prozessor 2507 eine Vielzahl von Kernen 2560A-2560D, jeder mit einem Übersetzungs-Lookaside-Puffer 2561A-2561D und einem oder mehreren Caches 2562A-2562D. In mindestens einem Ausführungsbeispiel können die Kerne 2560A-2560D verschiedene andere Komponenten zur Ausführung von Befehlen und Verarbeitung von Daten enthalten, die nicht gezeigt werden. Die Caches 2562A-2562D können Level-1- (L1) und Level-2- (L2) Caches umfassen. Darüber hinaus können ein oder mehrere gemeinsam genutzte Caches 2556 in den Caches 2562A-2562D enthalten sein und von Gruppen von Kernen 2560A-2560D gemeinsam genutzt werden. Ein Ausführungsbeispiel des Prozessors 2507 umfasst beispielsweise 24 Kerne, jeder mit einem eigenen L1-Cache, zwölf gemeinsam genutzten L2-Caches und zwölf gemeinsam genutzten L3-Caches. In diesem Ausführungsbeispiel werden ein oder mehrere L2- und L3-Caches von zwei benachbarten Kernen gemeinsam genutzt. Der Prozessor 2507 und das Grafikbeschleunigungsmodul 2546 sind mit dem Systemspeicher 2514 verbunden, der die Prozessorspeicher 2501-2502 von 25A umfassen kann.
  • Die Kohärenz von Daten und Befehlen, die in verschiedenen Caches 2562A, 2562D, 2556 und im Systemspeicher 2514 gespeichert sind, wird über eine Inter-Core-Kommunikation über einen Kohärenzbus 2564 aufrechterhalten. Zum Beispiel kann jeder Cache über eine damit assoziierte Cache-Kohärenzlogik/Schaltungsanordnung verfügen, um als Reaktion auf detektierte Lese- oder Schreibvorgänge in bestimmten Cache-Zeilen über den Kohärenzbus 2564 zu kommunizieren. In einer Implementierung wird ein Cache-Snooping-Protokoll über den Kohärenzbus 2564 implementiert, um Cache-Zugriffe auszuspähen.
  • In einem Ausführungsbeispiel koppelt eine Proxy-Schaltung 2525 das Grafikbeschleunigungsmodul 2546 kommunikativ an den Kohärenzbus 2564, wodurch das Grafikbeschleunigungsmodul 2546 an einem Cache-Kohärenzprotokoll als Peer der Kerne 2560A-2560D teilnehmen kann. Insbesondere bietet eine Schnittstelle 2535 Konnektivität mit der Proxy-Schaltung 2525 über die Hochgeschwindigkeitsverbindung 2540 (z. B. PCIe-Bus, NVLink usw.) und eine Schnittstelle 2537 verbindet das Grafikbeschleunigungsmodul 2546 mit der Verbindung 2540.
  • In einer Implementierung stellt ein Beschleuniger-Integrationsschaltkreis 2536 Cache-Verwaltung, Speicherzugriff, Kontextverwaltung und Interrupt-Verwaltungsdienste im Auftrag einer Vielzahl von Grafikverarbeitungs-Engines 2531, 2532, N des Grafikbeschleunigungsmoduls 2546 bereit. Die Grafikverarbeitungs-Engines 2531, 2532, N können jeweils eine separate Grafikverarbeitungs-Einheit (GPU) umfassen. Alternativ können die Grafikverarbeitungs-Engines 2531, 2532, N verschiedene Arten von Grafikverarbeitungs-Engines innerhalb einer GPU umfassen, z. B. Grafikausführungseinheiten, Medienverarbeitungs-Engines (z. B. Video-Codierer/Decodierer), Sampler und Blit-Engines. In mindestens einem Ausführungsbeispiel kann das Grafikbeschleunigungsmodul 2546 eine GPU mit einer Vielzahl von Grafikverarbeitungs-Engines 2531-2532, N sein, oder die Grafikverarbeitungs-Engines 2531-2532, N können einzelne GPUs sein, die auf einem gemeinsamen Gehäuse, einer Linecard oder einem Chip integriert sind.
  • In einem Ausführungsbeispiel enthält der Beschleuniger-Integrationsschaltkreis 2536 eine Speicherverwaltungseinheit (MMU) 2539 zur Durchführung verschiedener Speicherverwaltungsfunktionen, wie z. B. Übersetzungen von virtuellem in physischen Speicher (auch als Übersetzungen von effektivem in realen Speicher bezeichnet) und Speicherzugriffsprotokolle für den Zugriff auf den Systemspeicher 2514. Die MMU 2539 kann auch einen Translations-Lookaside-Buffer (TLB) (nicht gezeigt) umfassen, um Übersetzungen von virtuellen/effektiven in physische/reale Adressen zwischenzuspeichern. In einem Ausführungsbeispiel werden in einem Cache 2538 Befehle und Daten für den effizienten Zugriff der Grafikverarbeitungs-Engines 2531-2532, N gespeichert. In einem Ausführungsbeispiel werden die im Cache 2538 und in den Grafikspeichern 2533-2534, M gespeicherten Daten mit den Kern-Caches 2562A-2562D, 2556 und dem Systemspeicher 2514 kohärent gehalten. Wie bereits erwähnt, kann dies über eine Proxy-Schaltung 2525 im Namen des Cache 2538 und der Speicher 2533-2534, M erfolgen (z. B. Senden von Aktualisierungen an den Cache 2538 im Zusammenhang mit Änderungen/Zugriffen auf Cache-Zeilen in den Prozessor-Caches 2562A-2562D, 2556 und Empfangen von Aktualisierungen vom Cache 2538).
  • Ein Satz von Registern 2545 speichert Kontextdaten für Threads, die von Grafikverarbeitungs-Engines 2531-2532, N ausgeführt werden, und eine Kontextverwaltungsschaltung 2548 verwaltet Thread-Kontexte. Beispielsweise kann die Kontextverwaltungsschaltung 2548 Speicher- und Wiederherstellungsoperationen durchführen, um Kontexte verschiedener Threads während Kontext-Switches zu speichern und wiederherzustellen (z. B. wenn ein erster Thread gespeichert wird und ein zweiter Thread gespeichert wird, damit ein zweiter Thread von einer Grafikverarbeitungs-Engine ausgeführt werden kann). Bei einem Kontext-Switch kann die Schaltung 2548 zur Kontextverwaltung beispielsweise aktuelle Registerwerte in einem bestimmten Bereich im Speicher speichern (z. B. identifiziert durch einen Kontext-Zeiger). Sie kann dann die Registerwerte wiederherstellen, wenn sie zu einem Kontext zurückkehrt. In einem Ausführungsbeispiel empfängt und verarbeitet eine Interrupt-Verwaltungsschaltung 2547 Interrupts, die von Systemgeräten empfangen werden.
  • In einer Implementierung werden virtuelle/effektive Adressen von einer Grafikverarbeitungs-Engine 2531 durch die MMU 2539 in reale/physikalische Adressen im Systemspeicher 2514 übersetzt. Ein Ausführungsbeispiel des Beschleuniger-Integrationsschaltkreises 2536 unterstützt mehrere (z. B. 4, 8, 16) Grafikbeschleunigermodule 2546 und/oder andere Beschleunigergeräte. Das Grafikbeschleunigermodul 2546 kann für eine einzelne, auf dem Prozessor 2507 ausgeführte Anwendung bestimmt sein oder von mehreren Anwendungen gemeinsam genutzt werden. In einem Ausführungsbeispiel wird eine virtualisierte Grafikausführungsumgebung vorgestellt, in der die Ressourcen der Grafikverarbeitungs-Engines 2531-2532, N gemeinsam mit mehreren Anwendungen oder virtuellen Maschinen (VMs) genutzt werden. In mindestens einem Ausführungsbeispiel können die Ressourcen in „Abschnitte“ unterteilt werden, die basierend auf den Anforderungen an die Verarbeitung und den mit den VMs und/oder Anwendungen assoziierten Prioritäten verschiedenen VMs und/oder Anwendungen zugewiesen werden.
  • In mindestens einem Ausführungsbeispiel fungiert der Beschleuniger-Integrationsschaltkreis 2536 als Brücke zu einem System für das Grafikbeschleunigungsmodul 2546 und bietet Adressübersetzungs- und Systemspeicher-Cache-Dienste. Darüber hinaus kann der Beschleuniger-Integrationsschaltkreis 2536 Virtualisierungseinrichtungen für einen Host-Prozessor bereitstellen, um die Virtualisierung der Grafikverarbeitungs-Engines 2531-2532, Interrupts und die Speicherverwaltung zu verwalten.
  • Da die Hardware-Ressourcen der Grafikverarbeitungs-Engines 2531-2532, N explizit einem realen Adressraum zugeordnet sind, den der Host-Prozessor 2507 sieht, kann jeder Host-Prozessor diese Ressourcen direkt unter Verwenden eines effektiven Adresswerts adressieren. Eine Funktion des Beschleuniger-Integrationsschaltkreises 2536 ist in einem Ausführungsbeispiel die physische Trennung der Grafikverarbeitungs-Engines 2531-2532, N, so dass sie für ein System als unabhängige Einheiten erscheinen.
  • In mindestens einem Ausführungsbeispiel sind ein oder mehrere Grafikspeicher 2533-2534, M jeweils mit jeder der Grafikverarbeitungs-Engines 2531-2532, N gekoppelt. Die Grafikspeicher 2533-2534, M speichern Befehle und Daten, die von jeder der Grafikverarbeitungs-Engines 2531-2532, N verarbeitet werden. Die Grafikspeicher 2533-2534, M können flüchtige Speicher wie DRAMs (einschließlich gestapelter DRAMs), GDDR-Speicher (z. B. GDDR5, GDDR6) oder HBM sein und/oder können nichtflüchtige Speicher wie 3D XPoint oder Nano-Ram sein.
  • In einem Ausführungsbeispiel werden zur Verringerung des Datenverkehrs über die Verbindung 2540 Vorgabetechniken verwendet, um sicherzustellen, dass die in den Grafikspeichern 2533-2534, M gespeicherten Daten die Daten sind, die am häufigsten von den Grafikverarbeitungs-Engines 2531-2532, N verwendet werden und vorzugsweise nicht von den Kernen 2560A-2560D (zumindest nicht häufig) verwendet werden. In ähnlicher Weise versucht ein Vorgabe-Mechanismus, Daten, die von Kernen (und vorzugsweise nicht von Grafikverarbeitungs-Engines 2531-2532, N) benötigt werden, in den Caches 2562A-2562D, 2556 der Kerne und des Systemspeichers 2514 zu halten.
  • 25C zeigt ein weiteres exemplarisches Ausführungsbeispiel, bei dem der Beschleuniger-Integrationsschaltkreis 2536 in den Prozessor 2507 integriert ist. In diesem Ausführungsbeispiel kommunizieren die Grafikverarbeitungs-Engines 2531-2532, N direkt über die Hochgeschwindigkeitsverbindung 2540 mit dem Beschleuniger-Integrationsschaltkreis 2536 über die Schnittstelle 2537 und die Schnittstelle 2535 (die wiederum jede Form von Bus- oder Schnittstellenprotokoll verwenden kann). Der Beschleuniger-Integrationsschaltkreis 2536 kann dieselben Operationen wie in 25B beschrieben durchführen, jedoch möglicherweise mit einem höheren Durchsatz, da er sich in unmittelbarer Nähe zum Kohärenzbus 2564 und den Caches 2562A-2562D, 2556 befindet. Ein Ausführungsbeispiel unterstützt verschiedene Programmiermodelle, einschließlich eines Programmiermodells für dedizierte Prozesse (ohne Virtualisierung des Grafikbeschleunigungsmoduls) und gemeinsam genutzte Programmiermodelle (mit Virtualisierung), die Programmiermodelle umfassen können, die vom Beschleuniger-Integrationsschaltkreis 2536 gesteuert werden, und Programmiermodelle, die vom Grafikbeschleunigungsmodul 2546 gesteuert werden.
  • In mindestens einem Ausführungsbeispiel sind die Grafikverarbeitungs-Engines 2531-2532, N für eine einzige Anwendung oder einen einzigen Prozess unter einem einzigen Betriebssystem bestimmt. In mindestens einem Ausführungsbeispiel kann eine einzelne Anwendung andere Anwendungsanforderungen an die Grafikverarbeitungs-Engines 2531 - 2532, N weiterleiten, was eine Virtualisierung innerhalb einer VM/Partition ermöglicht.
  • In mindestens einem Ausführungsbeispiel können die Grafikverarbeitungs-Engines 2531-2532, N, von mehreren VM-/Anwendungspartitionen gemeinsam genutzt werden. In mindestens einem Ausführungsbeispiel können gemeinsam genutzte Modelle einen Systemhypervisor zur Virtualisierung der Grafikverarbeitungs-Engines 2531-2532, N verwenden, um den Zugriff durch jedes Betriebssystem zu ermöglichen. Bei Systemen mit einer einzigen Partition ohne Hypervisor sind die Grafikverarbeitungs-Engines 2531-2532, N im Besitz eines Betriebssystems. In mindestens einem Ausführungsbeispiel kann ein Betriebssystem die Grafikverarbeitungs-Engines 2531-2532, N virtualisieren, um den Zugriff auf jeden Prozess oder jede Anwendung zu ermöglichen.
  • In mindestens einem Ausführungsbeispiel wählt das Grafikbeschleunigungsmodul 2546 oder eine einzelne Grafikverarbeitungs-Engine 2531-2532, N ein Prozesselement unter Verwenden eines Prozesshandles aus. In einem Ausführungsbeispiel werden die Prozesselemente im Systemspeicher 2514 gespeichert und können unter Verwenden der hier beschriebenen Techniken zur Übersetzung von effektiven Adressen in reale Adressen adressiert werden. In mindestens einem Ausführungsbeispiel kann ein Prozesshandle ein implementierungsspezifischer Wert sein, der einem Host-Prozess zur Verfügung gestellt wird, wenn er seinen Kontext bei der Grafikverarbeitungs-Engine 2531-2532, N registriert (d. h. wenn er die Systemsoftware aufruft, um ein Prozesselement zu einer verknüpften Prozesselementliste hinzuzufügen). In mindestens einem Ausführungsbeispiel können die unteren 16 Bits eines Prozesshandles ein Offset des Prozesselements innerhalb einer verknüpften Prozesselementliste sein.
  • 25D zeigt einen exemplarischen Beschleuniger-Integrationsabschnitt 2590. Wie hier verwendet, umfasst ein „Abschnitt“ einen bestimmten Teil der Verarbeitungsressourcen des Beschleuniger-Integrationsschaltkreises 2536. Der effektive Anwendungsadressraum 2582 im Systemspeicher 2514 speichert Prozesselemente 2583. In einem Ausführungsbeispiel werden die Prozesselemente 2583 als Reaktion auf GPU-Aufrufe 2581 von Anwendungen 2580, die auf dem Prozessor 2507 ausgeführt werden, gespeichert. Ein Prozesselement 2583 enthält den Prozessstatus für die entsprechende Anwendung 2580. Ein im Prozesselement 2583 enthaltener Arbeitsdeskriptor (WD) 2584 kann ein einzelner, von einer Anwendung angeforderter Auftrag sein oder einen Zeiger auf eine Warteschlange von Aufträgen enthalten. In mindestens einem Ausführungsbeispiel ist der WD 2584 ein Zeiger auf eine Auftragsanforderungs-Warteschlange im Adressraum 2582 einer Anwendung.
  • Das Grafikbeschleunigungsmodul 2546 und/oder einzelne Grafikverarbeitungs-Engines 2531-2532, N können von allen oder einer Teilmenge von Prozessen in einem System gemeinsam genutzt werden. In mindestens einem Ausführungsbeispiel kann eine Infrastruktur zum Einrichten des Prozessstatus und zum Senden eines WD 2584 an ein Grafikbeschleunigungsmodul 2546 enthalten sein, um einen Auftrag in einer virtualisierten Umgebung zu starten.
  • In mindestens einem Ausführungsbeispiel ist ein Programmiermodell für dedizierte Prozesse implementierungsspezifisch. In diesem Modell enthält ein einzelner Prozess das Grafikbeschleunigungsmodul 2546 oder eine individuelle Grafikverarbeitungs-Engine 2531. Da das Grafikbeschleunigungsmodul 2546 im Besitz eines einzelnen Prozesses ist, initialisiert ein Hypervisor den Beschleuniger-Integrationsschaltkreis 2536 für eine besitzende Partition und ein Betriebssystem initialisiert den Beschleuniger-Integrationsschaltkreis 2536 für einen besitzenden Prozess, wenn das Grafikbeschleunigungsmodul 2546 zugewiesen wird.
  • Im Betrieb holt eine Hol-Einheit 2591 im Beschleuniger-Integrationsabschnitt 2590 den nächsten WD 2584, der eine Anzeige der Arbeit umfasst, die von einer oder mehreren Grafikverarbeitungs-Engines des Grafikbeschleunigungsmoduls 2546 zu leisten ist. Die Daten von WD 2584 können in Registern 2545 gespeichert und von der MMU 2539, der Interrupt-Management-Schaltung 2547 und/oder der Kontext-Management-Schaltung 2548 verwendet werden, wie gezeigt. Ein Ausführungsbeispiel der MMU 2539 umfasst beispielsweise eine Schaltungsanordnung für den Zugriff auf Segment-/Seitentabellen 2586 im virtuellen Adressraum 2585 des Betriebssystems. Die Schaltung zur Unterbrechungsverwaltung 2547 kann vom Grafikbeschleunigungsmodul 2546 empfangene Interrupt-Ereignisse 2592 verarbeiten. Bei der Durchführung von Grafikoperationen wird eine von einer Grafikverarbeitungs-Engine 2531-2532, N generierte effektive Adresse 2593 von der MMU 2539 in eine reale Adresse übersetzt.
  • In einem Ausführungsbeispiel wird für jede Grafikverarbeitungs-Engine 2531-2532, N und/oder jedes Grafikbeschleunigungsmodul 2546 ein und derselbe Satz von Registern 2545 dupliziert und kann von einem Hypervisor oder Betriebssystem initialisiert werden. Jedes dieser duplizierten Register kann in einem Beschleuniger-Integrationsabschnitt 2590 enthalten sein. Beispielhafte Register, die von einem Hypervisor initialisiert werden können, sind in Tabelle 1 aufgeführt. Tabelle 1 - Vom Hypervisor initialisierte Register
    1 Abschnittssteuerungsregister
    2 Reale Adresse (RA) Geplante Prozesse Bereichszeiger
    3 Autoritätsmasken-Überschreibungsregister
    4 Interrupt-Vektor-Tabelleneintrags-Offset
    5 Interrupt-Vektor-Tabelleneintragsgrenze
    6 Zustandsregister
    7 Logische Partitions-ID
    8 Reale Adresse (RA) Hypervisor Accelerator Utilization Record Pointer
    9 Speicher-Beschreibungsregister
  • Exemplarische Register, die von einem Betriebssystem initialisiert werden können, sind in Tabelle 2 aufgeführt. Tabelle 2 - Vom Betriebssystem initialisierte Register
    1 Prozess- und Thread-Identifizierung
    2 Effektive Adresse (EA) Zeiger für das Speichern/Wiederherstellen des Kontexts
    3 Virtuelle Adresse (VA) Accelerator Utilization Record Zeiger
    4 Virtuelle Adresse (VA) Zeiger auf Speichersegmenttabelle
    5 Autoritätsmaske
    6 Arbeitsdeskriptor
  • In einem Ausführungsbeispiel ist jedes WD 2584 spezifisch für ein bestimmtes Grafikbeschleunigungsmodul 2546 und/oder die Grafikverarbeitungs-Engines 2531-2532, N. Es enthält alle Informationen, die von einer Grafikverarbeitungs-Engine 2531-2532, N für die Ausführung von Arbeiten erforderlich sind, oder es kann ein Zeiger auf einen Speicherplatz sein, an dem eine Anwendung eine Befehlswarteschlange für zu erledigende Arbeiten eingerichtet hat.
  • 25E zeigt zusätzliche Details für ein exemplarisches Ausführungsbeispiel eines gemeinsam genutzten Modells. Dieses Ausführungsbeispiel umfasst einen realen Hypervisor-Adressraum 2598, in dem eine Prozesselementliste 2599 gespeichert ist. Auf den realen Hypervisor-Adressraum 2598 kann über einen Hypervisor 2596 zugegriffen werden, der die Engines des Grafikbeschleunigungsmoduls für das Betriebssystem 2595 virtualisiert.
  • In mindestens einem Ausführungsbeispiel erlauben gemeinsame Programmiermodelle allen oder einer Teilmenge von Prozessen aus allen oder einer Teilmenge von Partitionen in einem System, ein Grafikbeschleunigungsmodul 2546 zu verwenden. Es gibt zwei Programmiermodelle, bei denen das Grafikbeschleunigungsmodul 2546 von mehreren Prozessen und Partitionen gemeinsam genutzt wird: zeitabschnittweise gemeinsame Nutzung und gezielte gemeinsame Nutzung von Grafiken.
  • Bei diesem Modell enthält der System-Hypervisor 2596 das Grafikbeschleunigungsmodul 2546 und stellt seine Funktionalität allen Betriebssystemen 2595 zur Verfügung. Damit ein Grafikbeschleunigungsmodul 2546 die Virtualisierung durch den Systemhypervisor 2596 unterstützen kann, kann das Grafikbeschleunigungsmodul 2546 die folgenden Bedingungen erfüllen: 1) Die Auftragsanforderung einer Anwendung muss autonom sein (d.h. der Zustand muss zwischen den Aufträgen nicht aufrechterhalten werden), oder das Grafikbeschleunigungsmodul 2546 muss einen Mechanismus zum Speichern und Wiederherstellen des Kontexts bereitstellen; 2) die Auftragsanforderung einer Anwendung wird vom Grafikbeschleunigungsmodul 2546 garantiert in einer bestimmten Zeitspanne abgeschlossen, die auch Übersetzungsfehler umfasst, oder das Grafikbeschleunigungsmodul 2546 bietet die Möglichkeit, die Verarbeitung eines Auftrags vorzuziehen; 3) dem Grafikbeschleunigungsmodul 2546 muss Ausgeglichenheit zwischen den Prozessen garantiert werden, wenn es in einem gerichteten gemeinsamen Programmiermodell betrieben wird.
  • In mindestens einem Ausführungsbeispiel ist die Anwendung 2580 erforderlich, um einen Systemaufruf des Betriebssystems 2595 mit einem Typ des Grafikbeschleunigungsmoduls 2546, einem Arbeitsdeskriptor (WD), einem Autoritätsmaskenregister (AMR) und einem Zeiger für einen Kontextspeicher-/Wiederherstellungsbereich (CSRP) durchzuführen. In mindestens einem Ausführungsbeispiel beschreibt der Typ des Grafikbeschleunigungsmoduls 2546 eine gezielte Beschleunigungsfunktion für einen Systemaufruf. In mindestens einem Ausführungsbeispiel kann der Typ des Grafikbeschleunigungsmoduls 2546 ein systemspezifischer Wert sein. In mindestens einem Ausführungsbeispiel ist WD speziell für das Grafikbeschleunigungsmodul 2546 formatiert und kann in Form eines Grafikbeschleunigungsmodul 2546-Befehls, eines effektiven Adresszeigers auf eine benutzerdefinierte Struktur, eines effektiven Adresszeigers auf eine Befehlswarteschlange oder einer anderen Datenstruktur vorliegen, die die vom Grafikbeschleunigungsmodul 2546 zu verrichtende Arbeit beschreibt. In einem Ausführungsbeispiel ist ein AMR-Wert ein AMR- Zustand, der für einen aktuellen Prozess zu verwenden ist. In mindestens einem Ausführungsbeispiel entspricht ein an ein Betriebssystem übergebener Wert der Einstellung eines AMR durch eine Anwendung. Wenn die Implementierungen des Beschleuniger-Integrationsschaltkreises 2536 und des Grafikbeschleunigungsmoduls 2546 kein User Authority Mask Override Register (UAMOR) unterstützen, kann ein Betriebssystem einen aktuellen UAMOR-Wert auf einen AMR-Wert anwenden, bevor ein AMR in einem Hypervisor-Aufruf übergeben wird. Der Hypervisor 2596 kann optional einen aktuellen AMOR-Wert (Authority Mask Override Register) anwenden, bevor ein AMR in das Prozesselement 2583 gestellt wird. In mindestens einem Ausführungsbeispiel ist CSRP eines der Register 2545, die eine effektive Adresse eines Bereichs im Adressraum 2582 einer Anwendung für das Grafikbeschleunigungsmodul 2546 enthalten, um den Kontextstatus zu speichern und wiederherzustellen. Dieser Zeiger ist optional, wenn es nicht erforderlich ist, den Zustand zwischen Aufträgen zu speichern, oder wenn ein Auftrag vorzeitig beendet wird. In mindestens einem Ausführungsbeispiel kann der Kontextspeicher-/Wiederherstellungsbereich ein fest angebundener Systemspeicher sein.
  • Nach dem Empfangen eines Systemaufrufs kann das Betriebssystem 2595 überprüfen, ob die Anwendung 2580 registriert ist und die Berechtigung erhalten hat, das Grafikbeschleunigungsmodul 2546 zu verwenden. Das Betriebssystem 2595 ruft dann den Hypervisor 2596 mit den in Tabelle 3 dargestellten Informationen auf Tabelle 3 - Aufrufparameter zwischen Betriebssystem und Hypervisor
    1 Ein Arbeitsdeskriptor (WD)
    2 Ein AMR-Wert (Authority Mask Register) (möglicherweise maskiert)
    3 Eine effektive Adresse (EA) Context Save/Restore Area Pointer (CSRP)
    4 Eine Prozess-ID (PID) und optionale Thread-ID (TID)
    5 Eine virtuelle Adresse (VA) Zeiger auf den Datensatz der Beschleunigerverwendung (AURP)
    6 Virtuelle Adresse des Zeigers auf die Speichersegmenttabelle (SSTP)
    7 Eine logische Interrupt-Service-Nummer (LISN)
  • Nach dem Empfangen eines Hypervisor-Aufrufs prüft Hypervisor 2596, ob das Betriebssystem 2595 registriert ist und die Berechtigung erhalten hat, das Grafikbeschleunigungsmodul 2546 zu verwenden. Der Hypervisor 2596 fügt dann das Prozesselement 2583 in eine mit Prozesselementen verbundene Liste für einen entsprechenden Grafikbeschleunigungsmodultyp 2546 ein. Ein Prozesselement kann die in Tabelle 4 dargestellten Informationen umfassen. Tabelle 4 - Informationen zum Prozesselement
    1 Ein Arbeitsdeskriptor (WD)
    2 Ein Authority Mask Register (AMR) Wert (möglicherweise maskiert).
    3 Eine effektive Adresse (EA) Context Save/Restore Area Pointer (CSRP)
    4 Eine Prozess-ID (PID) und optionale Thread-ID (TID)
    5 Ein Zeiger auf den Datensatz der Beschleunigerverwendung (AURP) einer virtuellen Adresse (VA)
    6 Virtuelle Adresse des Zeigers auf die Speichersegmenttabelle (SSTP)
    7 Eine logische Interrupt-Service-Nummer (LISN)
    8 Interrupt-Vektortabelle, abgeleitet von Hypervisor-Aufrufparametern
    9 Wert eines Zustandsregisters (SR)
    10 Eine logische Partitions-ID (LPID)
    11 Ein Zeiger auf einen Hypervisor-Beschleuniger mit realer Adresse (RA) zur Verwendung von Datensätzen
    12 Speicher-Beschreibungsregister (SDR)
  • In mindestens einem Ausführungsbeispiel initialisiert der Hypervisor eine Vielzahl von Registern des Beschleuniger-Integrationsabschnitts 2590 (2545).
  • Wie in 25F beispielhaft gezeigt, wird in mindestens einem Ausführungsbeispiel ein einheitlicher Speicher verwendet, der über einen gemeinsamen virtuellen Speicheradressraum adressierbar ist, der für den Zugriff auf die physischen Prozessorspeicher 2501-2502 und die GPU-Speicher 2520-2523 verwendet wird. Bei dieser Implementierung verwenden die auf den GPUs 2510-2513 ausgeführten Operationen denselben virtuellen/effektiven Speicheradressraum, um auf die Prozessorspeicher 2501-2502 zuzugreifen und umgekehrt, was die Programmierbarkeit vereinfacht. In einem Ausführungsbeispiel wird ein erster Teil eines virtuellen/effektiven Adressraums dem Prozessorspeicher 2501 zugewiesen, ein zweiter Teil dem zweiten Prozessorspeicher 2502, ein dritter Teil dem GPU-Speicher 2520 usw. In mindestens einem Ausführungsbeispiel wird dadurch ein gesamter virtueller/effektiver Speicherraum (manchmal auch als effektiver Adressraum bezeichnet) über jeden der Prozessorspeicher 2501-2502 und GPU-Speicher 2520-2523 verteilt, wodurch jeder Prozessor oder jede GPU auf jeden physischen Speicher mit einer diesem Speicher zugeordneten virtuellen Adresse zugreifen kann.
  • In einem Ausführungsbeispiel stellt die Schaltungsanordnung zur Vorgabe-/Kohärenzverwaltung 2594A-2594E innerhalb einer oder mehrerer MMUs 2539A-2539E die Cache-Kohärenz zwischen den Caches eines oder mehrerer Host-Prozessoren (z. B. 2505) und GPUs 2510-2513 sicher und implementiert Vorgabetechniken, die anzeigen, in welchen physischen Speichern bestimmte Datentypen gespeichert werden sollten. Während mehrere Instanzen der Schaltungsanordnung zur Vorgabe-/Kohärenzverwaltung 2594A-2594E in 25F gezeigt sind, kann die Schaltungsanordnung zur Vorgabe-/Kohärenzverwaltung in einer MMU eines oder mehrerer Host-Prozessoren 2505 und/oder in einem Beschleuniger-Integrationsschaltkreis 2536 implementiert werden.
  • Ein Ausführungsbeispiel ermöglicht es, GPU-gebundenen Speicher 2520-2523 als Teil des Systemspeichers zuzuordnen und unter Verwenden der gemeinsam genutzten virtuellen Speicher (SVM)-Technologie darauf zuzugreifen, ohne jedoch Leistungsnachteile zu erleiden, die mit einer vollständigen System-Cache-Kohärenz verbunden sind. In mindestens einem Ausführungsbeispiel bietet die Möglichkeit, auf den GPU-gebundenen Speicher 2520-2523 als Systemspeicher ohne lästigen Cache-Kohärenz-Overhead zuzugreifen, eine vorteilhafte Betriebsumgebung für GPU-Offload. Diese Anordnung ermöglicht es der Software des Host-Prozessors 2505, Operanden aufzubauen und auf Berechnungsergebnisse zuzugreifen, ohne den Overhead herkömmlicher E/A DMA-Datenkopien. Solche herkömmlichen Kopien beinhalten Treiberaufrufe, Interrupts und speicherzugeordnete E/A-Zugriffe (MMIO), die alle im Vergleich zu einfachen Speicherzugriffen ineffizient sind. In mindestens einem Ausführungsbeispiel kann die Fähigkeit, auf GPU-gebundenen Speicher 2520-2523 ohne Cache-Kohärenz-Overhead zuzugreifen, entscheidend für die Ausführungszeit einer ausgelagerten Berechnung sein. In Fällen mit erheblichem Streaming-Schreibspeicherverkehr kann beispielsweise der Cache-Kohärenz-Overhead die effektive Schreibbandbreite einer GPU 2510-2513 signifikant verringern. In mindestens einem Ausführungsbeispiel können die Effizienz des Operandenaufbaus, die Effizienz des Ergebniszugriffs und die Effizienz der GPU-Berechnung eine Rolle beim Bestimmen der Effektivität eines GPU-Offloads spielen.
  • In mindestens einem Ausführungsbeispiel wird die Auswahl der GPU-Vorgabe und der Host-Prozessor-Vorgabe durch eine Bias-Tracker-Datenstruktur bewegt. Es kann zum Beispiel eine Vorgabetabelle verwendet werden, die eine seitengranulare Struktur sein kann (d.h. mit der Granularität einer Speicherseite gesteuert wird), die 1 oder 2 Bits pro GPU-gebundene Speicherseite enthält. In mindestens einem Ausführungsbeispiel kann eine Vorgabetabelle in einem gestohlenen Speicherbereich eines oder mehrerer GPU-gebundener Speicher 2520-2523 implementiert werden, mit oder ohne Vorgabe-Cache in GPU 2510-2513 (z. B. um häufig/kürzlich verwendete Einträge einer Vorgabetabelle zu cachen). Alternativ kann eine gesamte Vorgabetabelle innerhalb einer GPU verwaltet werden.
  • In mindestens einem Ausführungsbeispiel wird auf einen Vorgabetabelleneintrag, der mit jedem Zugriff auf den GPU-gebundenen Speicher 2520-2523 assoziiert ist, vor dem tatsächlichen Zugriff auf einen GPU-Speicher zugegriffen, was die folgenden Operationen bewirkt. Erstens werden lokale Anfragen von GPU 2510-2513, die ihre Seite in GPU-Vorgaben finden, direkt an einen entsprechenden GPU-Speicher 2520-2523 weitergeleitet. Lokale Anfragen von einer GPU, die ihre Seite in einer Host-Vorgabe finden, werden an den Prozessor 2505 weitergeleitet (z. B. über eine Hochgeschwindigkeitsverbindung, wie oben beschrieben). In einem Ausführungsbeispiel schließen Anfragen von Prozessor 2505, die eine angeforderte Seite in der Vorspannung des Host-Prozessors finden, eine Anfrage wie eine normale Speicherlesung ab. Alternativ können Anforderungen, die an eine GPU-vorgegebene Seite gerichtet sind, an die GPU 2510-2513 weitergeleitet werden. In mindestens einem Ausführungsbeispiel kann eine GPU dann eine Seite in eine Host-Prozessor-Vorgabe überführen, wenn sie die Seite gerade nicht verwendet. In mindestens einem Ausführungsbeispiel kann der Vorspannungszustand einer Seite entweder durch einen softwarebasierten Mechanismus, einen hardwareunterstützten softwarebasierten Mechanismus oder, für eine begrenzte Anzahl von Fällen, einen rein hardwarebasierten Mechanismus geändert werden.
  • Ein Mechanismus zur Änderung des Vorgabe-Zustands verwendet einen API-Aufruf (z. B. OpenCL), der wiederum den Gerätetreiber einer GPU aufruft, der wiederum eine Nachricht (oder einen Befehlsdeskriptor) an eine GPU sendet, die sie anweist, einen Vorgabe-Zustand zu ändern und bei einigen Übergängen eine Cache-Löschoperation in einem Host durchzuführen. In mindestens einem Ausführungsbeispiel wird die Cache-Löschoperation für einen Übergang von der Vorgabe des Host-Prozessors 2505 zur Vorgabe der GPU betrieben, aber nicht für einen entgegengesetzten Übergang.
  • In einem Ausführungsbeispiel wird die Cache-Kohärenz aufrechterhalten, indem GPU-vorgegebene Seiten vom Host-Prozessor 2505 vorübergehend nicht gecacht werden können. Um auf diese Seiten zuzugreifen, kann der Prozessor 2505 den Zugriff von der GPU 2510 anfordern, die den Zugriff sofort gewähren kann oder auch nicht. Um die Kommunikation zwischen dem Prozessor 2505 und der GPU 2510 zu reduzieren, ist es daher vorteilhaft, sicherzustellen, dass GPU-vorgegebene Seiten diejenigen sind, die von der GPU, aber nicht vom Host-Prozessor 2505 benötigt werden, und umgekehrt.
  • Die Hardwarestruktur(en) 1715 werden verwendet, um ein oder mehrere Ausführungsbeispiele durchzuführen. Details bezüglich der Hardwarestruktur(en) 1715 sind hier in Verbindung mit 17A und/oder 17B angegeben.
  • 26 zeigt exemplarische integrierte Schaltungen und assoziierte Grafikprozessoren, die gemäß verschiedenen hier beschriebenen Ausführungsbeispielen mit einem oder mehreren IP-Kernen hergestellt werden können. Zusätzlich zu dem, was beispielhaft gezeigt ist, können in mindestens einem Ausführungsbeispiel weitere Logik und Schaltungen enthalten sein, einschließlich zusätzlicher Grafikprozessoren/Kerne, Steuergeräte für periphere Schnittstellen oder allgemeiner Prozessorkerne.
  • 26 ist ein Blockdiagramm, das eine exemplarische integrierte System-on-a-Chip-Schaltung 2600 zeigt, die gemäß mindestens einem Ausführungsbeispiel unter Verwenden eines oder mehrerer IP-Kerne hergestellt werden kann. In mindestens einem Ausführungsbeispiel enthält die integrierte Schaltung 2600 einen oder mehrere Anwendungsprozessor(en) 2605 (z. B. CPUs), mindestens einen Grafikprozessor 2610 und kann zusätzlich einen Bildprozessor 2615 und/oder einen Videoprozessor 2620 enthalten, von denen jeder ein modularer IP-Kern sein kann. In mindestens einem Ausführungsbeispiel enthält die integrierte Schaltung 2600 eine Peripherie- oder Buslogik, die ein USB-Steuergerät 2625, ein UART-Steuergerät 2630, ein SPI/SDIO-Steuergerät 2635 und ein I.sup.2S/I.sup.2C-Steuergerät 2640 umfasst. In mindestens einem Ausführungsbeispiel kann die integrierte Schaltung 2600 ein Anzeigegerät 2645 enthalten, das mit einer oder mehreren der folgenden Steuergeräte gekoppelt ist: einer HDMI-Steuerung (High-Definition Multimedia Interface) 2650 und einer MIPI-Anzeigeschnittstelle (Mobile Industry Processor Interface) 2655. In mindestens einem Ausführungsbeispiel kann der Speicher durch ein Flash-Speicher-Subsystem 2660 bereitgestellt werden, das einen Flash-Speicher und ein Flash-Speicher-Steuergerät enthält. In mindestens einem Ausführungsbeispiel kann die Speicherschnittstelle über ein Speichersteuergerät 2665 für den Zugriff auf SDRAM- oder SRAM-Speichergeräte bereitgestellt werden. In mindestens einem Ausführungsbeispiel enthalten einige integrierte Schaltungen zusätzlich eine eingebettete Sicherheits-Engine 2670.
  • Die Inferenz- und/oder Trainingslogik 1715 wird verwendet, um Inferenzieren und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 in der integrierten Schaltung 2600 zum Inferenzieren oder für Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwenden von Trainingsoperationen des neuronalen Netzwerks, Funktionen und/oder Architekturen des neuronalen Netzwerks oder hierin beschriebenen Anwendungsfällen des neuronalen Netzwerks berechnet wurden.
  • 27A und 27B zeigen exemplarische integrierte Schaltungen und assoziierte Grafikprozessoren, die gemäß verschiedenen hier beschriebenen Ausführungsbeispielen mit einem oder mehreren IP-Kernen hergestellt werden können. Zusätzlich zu dem, was beispielhaft gezeigt ist, können in mindestens einem Ausführungsbeispiel weitere Logik und Schaltungen enthalten sein, einschließlich zusätzlicher Grafikprozessoren/-kerne, Steuergeräte für periphere Schnittstellen oder allgemeiner Prozessorkerne.
  • 27A und 27B sind Blockdiagramme, die exemplarische Grafikprozessoren zur Verwendung in einem SoC gemäß den hier beschriebenen Ausführungsbeispielen zeigen. 27A zeigt einen exemplarischen Grafikprozessor 2710 einer integrierten System-on-a-Chip-Schaltung, die gemäß mindestens einem Ausführungsbeispiel mit einem oder mehreren IP-Kernen hergestellt werden kann. 27B zeigt einen weiteren beispielhaften Grafikprozessor 2740 einer integrierten System-on-a-Chip-Schaltung, die gemäß mindestens einem Ausführungsbeispiel unter Verwenden eines oder mehrerer IP-Kerne hergestellt werden kann. In mindestens einem Ausführungsbeispiel ist der Grafikprozessor 2710 aus 27A ein stromsparender Grafikprozessorkern. In mindestens einem Ausführungsbeispiel ist der Grafikprozessor 2740 von 27B ein Grafikprozessorkern mit höherer Leistung. In mindestens einem Ausführungsbeispiel kann jeder der Grafikprozessoren 2710, 2740 eine Variante des Grafikprozessors 2610 von 26 sein.
  • In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 2710 einen Vertexprozessor 2705 und einen oder mehrere Fragmentprozessor(en) 2715A-2715N (z.B. 2715A, 2715B, 2715C, 2715D, bis 2715N-1 und 2715N). In mindestens einem Ausführungsbeispiel kann der Grafikprozessor 2710 verschiedene Schattierungsprogramme über eine separate Logik ausführen, so dass der Vertexprozessor 2705 für die Ausführung von Operationen für Vertex-Schattierungsprogramme optimiert ist, während ein oder mehrere Fragmentprozessoren 2715A-2715N Schattierungsoperationen für Fragment- oder Pixel-Schattierer ausführen. In mindestens einem Ausführungsbeispiel führt der Vertex-Prozessor 2705 eine Vertex-Verarbeitungsstufe einer 3D-Grafikpipeline aus und generiert Primitive und Vertex-Daten. In mindestens einem Ausführungsbeispiel verwenden der/die Fragmentprozessor(en) 2715A-2715N die vom Vertexprozessor 2705 generierten Primitiv- und Vertex-Daten, um einen Framebuffer zu erzeugen, der auf einem Anzeigegerät angezeigt wird. In mindestens einem Ausführungsbeispiel ist/sind der/die Fragmentprozessor(en) 2715A-2715N für die Ausführung von Fragment-Schattierungsprogrammen, wie sie in einer OpenGL-API vorgesehen sind, optimiert, die zur Durchführung ähnlicher Operationen wie ein Pixel-Schattierungsprogramm, wie es in einer Direct 3D-API vorgesehen ist, verwendet werden können.
  • In mindestens einem Ausführungsbeispiel enthält der Grafikprozessor 2710 zusätzlich eine oder mehrere Speicherverwaltungseinheiten (MMUs) 2720A-2720B, einen oder mehrere Cache(s) 2725A-2725B und eine oder mehrere Verbindungseinheiten 2730A-2730B. In mindestens einem Ausführungsbeispiel sorgen eine oder mehrere MMU(s) 2720A-2720B für die Zuordnung von virtuellen zu physischen Adressen für den Grafikprozessor 2710, einschließlich für den Vertex-Prozessor 2705 und/oder den/die Fragment-Prozessor(en) 2715A-2715N, die zusätzlich zu den in einem oder mehreren Cache(s) 2725A-2725B gespeicherten Vertex- oder Bild/TexturDaten auf im Speicher gespeicherte Vertex- oder Bild/Textur-Daten verweisen können. In mindestens einem Ausführungsbeispiel können eine oder mehrere MMU(s) 2720A-2720B mit anderen MMUs innerhalb des Systems synchronisiert werden, einschließlich einer oder mehrerer MMUs, die mit einem oder mehreren Anwendungsprozessoren 2605, Bildprozessoren 2615 und/oder Videoprozessoren 2620 von 26 verbunden sind, so dass jeder Prozessor 2605-2620 an einem gemeinsam genutzten oder vereinheitlichten virtuellen Speichersystem teilnehmen kann. In mindestens einem Ausführungsbeispiel ermöglichen eine oder mehrere Schaltungsverbindung(en) 2730A-2730B dem Grafikprozessor 2710 die Verbindung mit anderen IP-Kernen innerhalb des SoC, entweder über einen internen Bus des SoC oder über eine direkte Verbindung.
  • In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 2740 eine oder mehrere MMU(s) 2720A-2720B, Caches 2725A-2725B und Schaltungsverbindungen 2730A-2730B des Grafikprozessors 2710 von 27A. In mindestens einem Ausführungsbeispiel enthält der Grafikprozessor 2740 einen oder mehrere Schattierungskerne 2755A-2755N (z. B. 2755A, 2755B, 2755C, 2755D, 2755E, 2755F bis 2755N-1 und 2755N), die eine einheitliche Schattierungskern-Architektur bereitstellen, bei der ein einziger Kern oder Typ oder Kern alle Arten von programmierbarem Schattierungscode ausführen kann, einschließlich Schattierungsprogramm-Code zur Implementierung von Vertex-Shadern, Fragment-Shadern und/oder Compute-Shadern. In mindestens einem Ausführungsbeispiel kann eine Anzahl von Schattierungskernen variieren. In mindestens einem Ausführungsbeispiel enthält der Grafikprozessor 2740 einen Inter-Core-Aufgaben-Manager 2745, der als Thread-Verteiler fungiert, um Ausführungs-Threads an einen oder mehrere Schattierungskerne 2755A-2755N und eine Kachel-Einheit 2758 zu verteilen, um Kachel-Operationen für das kachelbasierte Rendern zu beschleunigen, bei dem die Rendering-Operationen für eine Szene in den Bildraum unterteilt werden, um beispielsweise die lokale räumliche Kohärenz innerhalb einer Szene auszunutzen oder die Nutzung der internen Caches zu optimieren.
  • Die Inferenz- und/oder Trainingslogik 1715 wird zum Inferenzieren und/oder Trainieren von Operationen verwendet, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 in der integrierten Schaltung 27A und/oder 27B zum Inferenzieren oder Vorhersagen verwendet werden, basierend, zumindest teilweise, auf Gewichtsparametern, die unter Verwenden von Trainingsoperationen des neuronalen Netzwerks, Funktionen und/oder Architekturen des neuronalen Netzwerks oder hierin beschriebenen Anwendungsfällen des neuronalen Netzwerks berechnet wurden.
  • 28A und 28B zeigen zusätzliche exemplarische Grafikprozessorlogik gemäß den hier beschriebenen Ausführungsbeispielen. 28A zeigt einen Grafikkern 2800, der in mindestens einem Ausführungsbeispiel im Grafikprozessor 2610 von 26 enthalten sein kann und in mindestens einem Ausführungsbeispiel ein einheitlicher Schattierungskern 2755A-2755N wie in 27B sein kann. 28B zeigt in mindestens einem Ausführungsbeispiel eine hochparallele allgemeine Grafikverarbeitungseinheit 2830, die für den Einsatz auf einem Multi-Chip-Modul geeignet ist.
  • In mindestens einem Ausführungsbeispiel umfasst der Grafikkern 2800 einen gemeinsam genutzten Befehlscache 2802, eine Textureinheit 2818 und einen Cache/gemeinsam genutzten Speicher 2820, die gemeinsam für Ausführungsressourcen innerhalb des Grafikkerns 2800 genutzt werden. In mindestens einem Ausführungsbeispiel kann der Grafikkern 2800 mehrere Abschnitte 2801A-2801N oder Partitionen für jeden Kern enthalten, und ein Grafikprozessor kann mehrere Instanzen des Grafikkerns 2800 enthalten. Die Abschnitte 2801A-2801N können eine Unterstützungslogik umfassen, einschließlich eines lokalen Befehlscaches 2804A-2804N, eines Thread-Planers 2806A-2806N, eines Thread-Verteilers 2808A-2808N und eines Satzes von Registern 2810A-2810N. In mindestens einem Ausführungsbeispiel können die Abschnitte 2801A-2801N einen Satz zusätzlicher Funktionseinheiten (AFUs 2812A-2812N), Gleitkommaeinheiten (FPU 2814A-2814N), ganzzahlige arithmetische Logikeinheiten (ALUs 2816-2816N), Adressberechnungseinheiten (ACU 2813A-2813N), doppeltgenaue Gleitkommaeinheiten (DPFPU 2815A-2815N) und Matrixverarbeitungseinheiten (MPU 2817A-2817N) umfassen.
  • In mindestens einem Ausführungsbeispiel können die FPUs 2814A-2814N Gleitkommaoperationen mit einfacher Genauigkeit (32 Bit) und halber Genauigkeit (16 Bit) durchführen, während die DPFPUs 2815A-2815N Gleitkommaoperationen mit doppelter Genauigkeit (64 Bit) durchführen. In mindestens einem Ausführungsbeispiel können die ALUs 2816A-2816N Integer-Operationen mit variabler Präzision bei 8-Bit-, 16-Bit- und 32-Bit-Präzision durchführen und für Operationen mit gemischter Präzision konfiguriert werden. In mindestens einem Ausführungsbeispiel können die MPUs 2817A-2817N auch für Matrixoperationen mit gemischter Genauigkeit konfiguriert sein, die Gleitkomma- und 8-Bit-Ganzzahloperationen mit halber Genauigkeit umfassen. In mindestens einem Ausführungsbeispiel können die MPUs 2817-2817N eine Vielzahl von Matrixoperationen durchführen, um Anwendungs-Frameworks für maschinelles Lernen zu beschleunigen, was die Unterstützung für eine beschleunigte allgemeine Matrix-Matrix-Multiplikation (GEMM) umfasst. In mindestens einem Ausführungsbeispiel können die AFUs 2812A-2812N zusätzliche logische Operationen durchführen, die von Gleitkomma- oder Ganzzahl-Einheiten nicht unterstützt werden, einschließlich trigonometrischer Operationen (z. B. Sinus, Cosinus usw.).
  • Die Inferenz- und/oder Trainingslogik 1715 wird zum Inferenzieren und/oder Trainieren von Operationen verwendet, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 im Grafikkern 2800 zum Inferenzieren oder Vorhersagen verwendet werden, basierend, zumindest teilweise, auf Gewichtsparametern, die unter Verwenden von Trainingsoperationen des neuronalen Netzwerks, Funktionen und/oder Architekturen des neuronalen Netzwerks oder hierin beschriebenen Anwendungsfällen des neuronalen Netzwerks berechnet wurden.
  • 28B zeigt eine allgemeine Verarbeitungseinheit (GPGPU) 2830, die so konfiguriert sein kann, dass sie in mindestens einem Ausführungsbeispiel hochparallele Rechenoperationen durch ein Array von Grafikverarbeitungseinheiten betreiben kann. In mindestens einem Ausführungsbeispiel kann die GPGPU 2830 direkt mit anderen Instanzen der GPGPU 2830 verbunden werden, um einen Multi-GPU-Cluster zu bilden und die Trainingsgeschwindigkeit für Deep Neural Networks zu verbessern. In mindestens einem Ausführungsbeispiel umfasst die GPGPU 2830 eine Host-Schnittstelle 2832, um eine Verbindung mit einem Host-Prozessor zu ermöglichen. In mindestens einem Ausführungsbeispiel handelt es sich bei der Host-Schnittstelle 2832 um eine PCI-Express-Schnittstelle. In mindestens einem Ausführungsbeispiel kann die Hostschnittstelle 2832 eine herstellerspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur sein. In mindestens einem Ausführungsbeispiel empfängt die GPGPU 2830 Befehle von einem Host-Prozessor und verwendet einen globalen Planer 2834, um die mit diesen Befehlen assoziierten Ausführungsthreads auf eine Reihe von Rechenclustern 2836A-2836H zu verteilen. In mindestens einem Ausführungsbeispiel nutzen die Rechencluster 2836A-2836H gemeinsam einen Cache-Speicher 2838. In mindestens einem Ausführungsbeispiel kann der Cache-Speicher 2838 als übergeordneter Cache für Cache-Speicher innerhalb von Rechenclustern 2836A-2836H dienen.
  • In mindestens einem Ausführungsbeispiel umfasst die GPGPU 2830 den Speicher 2844A-2844B, der über einen Satz von Speichersteuergeräten 2842A-2842B mit den Rechenclustern 2836A-2836H verbunden ist. In mindestens einem Ausführungsbeispiel kann der Speicher 2844A-2844B verschiedene Arten von Speichergeräten enthalten, einschließlich Dynamic Random Access Memory (DRAM) oder Grafik-Direktzugriffsspeicher, wie synchroner Grafik-Direktzugriffsspeicher (SGRAM), einschließlich Grafik-Doppeldatenraten-Speicher (GDDR).
  • In mindestens einem Ausführungsbeispiel enthalten die Rechencluster 2836A-2836H jeweils einen Satz von Grafikkernen, wie z. B. den Grafikkern 2800 von 28A, der mehrere Arten von Ganzzahl- und Gleitkomma-Logikeinheiten umfassen kann, die Rechenoperationen mit einer Reihe von Genauigkeiten durchführen können, die auch für maschinelle Lernberechnungen geeignet sind. Zum Beispiel kann in mindestens einem Ausführungsbeispiel mindestens eine Teilmenge von Gleitkommaeinheiten in jedem der Rechencluster 2836A-2836H so konfiguriert sein, dass sie 16-Bit- oder 32-Bit-Gleitkommaoperationen durchführt, während eine andere Teilmenge von Gleitkommaeinheiten so konfiguriert sein kann, dass sie 64-Bit-Gleitkommaoperationen durchführt.
  • In mindestens einem Ausführungsbeispiel können mehrere Instanzen der GPGPU 2830 konfiguriert sein, um als Rechencluster betrieben zu werden. In mindestens einem Ausführungsbeispiel variiert die von den Rechenclustern 2836A-2836H für die Synchronisation und den Datenaustausch verwendete Kommunikation zwischen den Ausführungsbeispielen. In mindestens einem Ausführungsbeispiel kommunizieren mehrere Instanzen der GPGPU 2830 über die Host-Schnittstelle 2832. In mindestens einem Ausführungsbeispiel umfasst die GPGPU 2830 einen E/A-Hub 2839, der die GPGPU 2830 mit einer GPU-Verbindung 2840 koppelt, die eine direkte Verbindung zu anderen Instanzen der GPGPU 2830 ermöglicht. In mindestens einem Ausführungsbeispiel ist die GPU-Verbindung 2840 mit einer dedizierten GPU-zu-GPU-Brücke verbunden, die die Kommunikation und Synchronisation zwischen mehreren Instanzen der GPGPU 2830 ermöglicht. In mindestens einem Ausführungsbeispiel ist die GPU-Verbindung 2840 mit einem Hochgeschwindigkeits-Interconnect gekoppelt, um Daten an andere GPGPUs oder Parallelprozessoren zu senden und zu empfangen. In mindestens einem Ausführungsbeispiel befinden sich mehrere Instanzen der GPGPU 2830 in separaten Datenverarbeitungssystemen und kommunizieren über ein Netzwerkgerät, das über die Host-Schnittstelle 2832 zugänglich ist. In mindestens einem Ausführungsbeispiel kann die GPU-Verbindung 2840 so konfiguriert sein, dass sie zusätzlich oder alternativ zu der Host-Schnittstelle 2832 eine Verbindung zu einem Host-Prozessor ermöglicht.
  • In mindestens einem Ausführungsbeispiel kann die GPGPU 2830 konfiguriert sein, um neuronale Netzwerke zu trainieren. In mindestens einem Ausführungsbeispiel kann die GPGPU 2830 innerhalb einer Inferenzplattform verwendet werden. In mindestens einem Ausführungsbeispiel, in dem GPGPU 2830 zum Inferenzieren verwendet wird, kann GPGPU weniger Rechencluster 2836A-2836H umfassen, als wenn GPGPU zum Trainieren eines neuronalen Netzwerks verwendet wird. In mindestens einem Ausführungsbeispiel kann sich die mit dem Speicher 2844A-2844B assoziierte Speichertechnologie zwischen Konfigurationen zum Inferenzieren und zum Trainieren unterscheiden, wobei den Trainingskonfigurationen Speichertechnologien mit höherer Bandbreite zugewiesen werden. In mindestens einem Ausführungsbeispiel kann die Konfiguration der GPGPU 2830 zum Inferenzieren bestimmte Anweisungen unterstützen. In mindestens einem Ausführungsbeispiel kann eine Inferenzierungskonfiguration beispielsweise eine oder mehrere 8-Bit-Integer-Punktprodukt-Anweisungen unterstützen, die während Inferenzierungsoperationen für eingesetzte neuronale Netzwerke verwendet werden können.
  • Die Inferenz- und/oder Trainingslogik 1715 wird zum Inferenzieren und/oder Trainieren von Operationen verwendet, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 in der GPGPU 2830 zum Inferieren oder für Vorhersageoperationen basierend zumindest teilweise auf Gewichtsparametern verwendet werden, die unter Verwenden von Trainingsoperationen des neuronalen Netzwerks, Funktionen und/oder Architekturen des neuronalen Netzwerks oder hierin beschriebenen Anwendungsfällen des neuronalen Netzwerks berechnet wurden.
  • 29 ist ein Blockdiagramm, das gemäß mindestens einem Ausführungsbeispiel ein Rechensystem 2900 zeigt. In mindestens einem Ausführungsbeispiel enthält das Rechensystem 2900 ein Verarbeitungssubsystem 2901 mit einem oder mehreren Prozessoren 2902 und einem Systemspeicher 2904, die über einen Verbindungspfad kommunizieren, der einen Speicher-Hub 2905 umfassen kann. In mindestens einem Ausführungsbeispiel kann der Speicher-Hub 2905 eine separate Komponente innerhalb einer Chipsatzkomponente sein oder in einen oder mehrere Prozessor(en) 2902 integriert sein. In mindestens einem Ausführungsbeispiel ist der Speicher-Hub 2905 über eine Kommunikationsverbindung 2906 mit einem E/A-Subsystem 2911 verbunden. In mindestens einem Ausführungsbeispiel umfasst das E/A-Subsystem 2911 einen E/A-Hub 2907, der es dem Rechensystem 2900 ermöglichen kann, Eingaben von einem oder mehreren Geräten 2908 zu empfangen. In mindestens einem Ausführungsbeispiel kann der E/A-Hub 2907 ein Anzeigensteuergerät, das in einem oder mehreren Prozessor(en) 2902 enthalten sein kann, in die Lage versetzen, Ausgaben an ein oder mehrere Anzeigegerät(e) 2910A zu liefern. In mindestens einem Ausführungsbeispiel kann ein oder mehrere mit dem E/A-Hub 2907 gekoppelte(s) Anzeigegerät(e) 2910A ein lokales, internes oder eingebettetes Anzeigegerät umfassen.
  • In mindestens einem Ausführungsbeispiel umfasst das Verarbeitungssubsystem 2901 einen oder mehrere Parallelprozessor(en) 2912, der/die über eine Bus- oder andere Kommunikationsverbindung 2913 mit dem Speicher-Hub 2905 verbunden ist/sind. In mindestens einem Ausführungsbeispiel kann es sich bei der Verbindung 2913 um eine beliebige Anzahl von auf Standards basierenden Kommunikationsverbindungstechnologien oder -protokollen handeln, wie z. B. PCI Express, aber nicht darauf beschränkt, oder um eine herstellerspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur. In mindestens einem Ausführungsbeispiel bilden ein oder mehrere Parallelprozessor(en) 2912 ein rechenintensives Parallel- oder Vektorverarbeitungssystem, das eine große Anzahl von Verarbeitungskemen und/oder Verarbeitungsclustern umfassen kann, wie z. B. einen Prozessor mit vielen integrierten Kernen (MIC). In mindestens einem Ausführungsbeispiel bilden ein oder mehrere Parallelprozessor(en) 2912 ein Grafikverarbeitungs-Subsystem, das Pixel an eines oder mehrere Anzeigegeräte 2910A ausgeben kann, die über den E/A-Hub 2907 gekoppelt sind. In mindestens einem Ausführungsbeispiel kann ein oder mehrere Parallelprozessor(en) 2912 auch eine Anzeigensteuerung und eine Anzeigeschnittstelle (nicht gezeigt) umfassen, um eine direkte Verbindung zu einem oder mehreren Anzeigegerät(en) 2910B zu ermöglichen.
  • In mindestens einem Ausführungsbeispiel kann eine System-Speichereinheit 2914 mit dem E/A-Hub 2907 verbunden werden, um einen Speichermechanismus für das Computersystem 2900 bereitzustellen. In mindestens einem Ausführungsbeispiel kann ein E/A-Switch 2916 verwendet werden, um einen Schnittstellenmechanismus bereitzustellen, um Verbindungen zwischen dem E/A-Hub 2907 und anderen Komponenten zu ermöglichen, wie z.B. einem Netzwerkadapter 2918 und/oder einem drahtlosen Netzwerkadapter 2919, der in die Plattform integriert werden kann, und verschiedenen anderen Geräten, die über ein oder mehrere Add-in-Geräte 2920 hinzugefügt werden können. In mindestens einem Ausführungsbeispiel kann der Netzwerkadapter 2918 ein Ethernet-Adapter oder ein anderer kabelgebundener Netzwerkadapter sein. In mindestens einem Ausführungsbeispiel kann der drahtlose Netzwerkadapter 2919 eines oder mehrere der folgenden Geräte umfassen: Wi-Fi, Bluetooth, Near Field Communication (NFC) oder ein anderes Netzwerkgerät, das ein oder mehrere drahtlose Funkgeräte enthält.
  • In mindestens einem Ausführungsbeispiel kann das Rechengerät 2900 weitere, nicht explizit dargestellte Komponenten enthalten, einschließlich USB- oder andere Anschlussverbindungen, optische Speicher, Videoaufnahmegeräte und dergleichen, die ebenfalls mit dem E/A-Hub 2907 verbunden sein können. In mindestens einem Ausführungsbeispiel können Verbindungspfade, die verschiedene Komponenten in 29 miteinander verbinden, unter Verwenden beliebiger geeigneter Protokolle implementiert werden, wie z. B. auf PCI (Peripheral Component Interconnect) basierende Protokolle (z. B. PCI-Express) oder andere Bus- oder Punkt-zu-Punkt-Kommunikationsschnittstellen und/oder Protokolle, wie z. B. NV-Link-Hochgeschwindigkeitsverbindungen oder Verbindungsprotokolle.
  • In mindestens einem Ausführungsbeispiel enthalten ein oder mehrere Parallelprozessor(en) 2912 eine für die Grafik- und Videoverarbeitung optimierte Schaltungsanordnung, die beispielsweise eine Schaltung für die Videoausgabe enthält und eine Grafikverarbeitungseinheit (GPU) bildet. In mindestens einem Ausführungsbeispiel enthalten ein oder mehrere Parallelprozessor(en) 2912 eine Schaltungsanordnung, die für die allgemeine Verarbeitung optimiert ist. In mindestens einem Ausführungsbeispiel können Komponenten des Rechensystems 2900 mit einem oder mehreren anderen Systemelementen auf einer einzigen integrierten Schaltung integriert sein. Beispielsweise können in mindestens einem Ausführungsbeispiel ein oder mehrere Parallelprozessor(en) 2912, Speicher-Hub 2905, Prozessor(en) 2902 und E/A-Hub 2907 in eine integrierte System-on-a-Chip (SoC)-Schaltung integriert werden. In mindestens einem Ausführungsbeispiel können die Komponenten des Rechnersystems 2900 in ein einziges Gehäuse integriert werden, um eine System-in-Package-Konfiguration (SIP) zu bilden. In mindestens einem Ausführungsbeispiel kann mindestens ein Teil der Komponenten des Rechensystems 2900 in ein Multi-Chip-Modul (MCM) integriert werden, das mit anderen Multi-Chip-Modulen zu einem modularen Rechensystem zusammengeschaltet werden kann.
  • Die Inferenz- und/oder Trainingslogik 1715 wird verwendet, um Inferenzieren und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 im System FIG. 2900 zum Inferenzieren oder Vorhersagen verwendet werden, basierend zumindest teilweise auf Gewichtsparametern, die unter Verwenden von Trainingsoperationen des neuronalen Netzwerks, Funktionen und/oder Architekturen des neuronalen Netzwerks oder hierin beschriebenen Anwendungsfällen des neuronalen Netzwerks berechnet wurden.
  • Prozessoren
  • 30A zeigt einen Parallelprozessor 3000 gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel können verschiedene Komponenten des Parallelprozessors 3000 in mindestens einem Ausführungsbeispiel unter Verwenden eines oder mehrerer Geräte mit integrierter Schaltung, wie z. B. programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASICs) oder feldprogrammierbare Gate Arrays (FPGAs), implementiert werden. In mindestens einem Ausführungsbeispiel ist der dargestellte Parallelprozessor 3000 eine Variante eines oder mehrerer Parallelprozessoren 2912, die in 29 gemäß einem exemplarischen Ausführungsbeispiel dargestellt sind.
  • In mindestens einem Ausführungsbeispiel enthält der Parallelprozessor 3000 eine Parallelverarbeitungseinheit 3002. In mindestens einem Ausführungsbeispiel enthält die Parallelverarbeitungseinheit 3002 eine E/A-Einheit 3004, die die Kommunikation mit anderen Geräten, einschließlich anderer Instanzen der Parallelverarbeitungseinheit 3002, ermöglicht. In mindestens einem Ausführungsbeispiel kann die E/A-Einheit 3004 direkt mit anderen Geräten verbunden sein. In mindestens einem Ausführungsbeispiel ist die E/A-Einheit 3004 über die Verwendung einer Hub- oder Switch-Schnittstelle, z. B. des Speicher-Hubs 2905, mit anderen Geräten verbunden. In mindestens einem Ausführungsbeispiel bilden die Verbindungen zwischen dem E/A-Hub 2905 und der E/A-Einheit 3004 eine Kommunikationsverbindung 2913. In mindestens einem Ausführungsbeispiel ist die E/A-Einheit 3004 mit einer Host-Schnittstelle 3006 und einer Speicher-Crossbar 3016 verbunden, wobei die Host-Schnittstelle 3006 Befehle empfängt, die auf die Durchführung von Verarbeitungsoperationen gerichtet sind, und die Speicher-Crossbar 3016 Befehle empfängt, die auf die Durchführung von Speicheroperationen gerichtet sind.
  • In mindestens einem Ausführungsbeispiel kann die Host-Schnittstelle 3006, wenn sie einen Befehlspuffer über die E/A-Einheit 3004 empfängt, Arbeitsoperationen zur Ausführung dieser Befehle an ein Frontend 3008 leiten. In mindestens einem Ausführungsbeispiel ist das Frontend 3008 mit einem Planer 3010 gekoppelt, der konfiguriert ist, um Befehle oder andere Arbeitsaufgaben an ein Verarbeitungscluster-Array 3012 zu verteilen. In mindestens einem Ausführungsbeispiel stellt der Planer 3010 sicher, dass das Verarbeitungscluster-Array 3012 richtig konfiguriert ist und sich in einem gültigen Zustand befindet, bevor Aufgaben an das Verarbeitungscluster-Array 3012 verteilt werden. In mindestens einem Ausführungsbeispiel ist der Planer 3010 über eine Firmware-Logik implementiert, die auf einem Mikrocontroller ausgeführt wird. In mindestens einem Ausführungsbeispiel ist der durch einen Mikrocontroller implementierte Planer 3010 so konfigurierbar, dass er komplexe Planungs- und Arbeitsverteilungsoperationen mit grober und feiner Granularität durchführen kann, was eine schnelle Vorrangstellung und Kontextumschaltung von Threads ermöglicht, die auf dem Processing Array 3012 ausgeführt werden. In mindestens einem Ausführungsbeispiel kann die Host-Software Arbeitslasten für die Planung auf dem Array 3012 über eine von mehreren Grafikverarbeitungs-Türglocken nachweisen. In mindestens einem Ausführungsbeispiel können Arbeitslasten dann automatisch über das verarbeitende Array 3012 durch die Logik des Planers 3010 innerhalb eines Mikrocontrollers, der den Planer 3010 enthält, verteilt werden.
  • In mindestens einem Ausführungsbeispiel kann das Verarbeitungscluster-Array 3012 bis zu „N“ Verarbeitungscluster enthalten (z.B. Cluster 3014A, Cluster 3014B bis Cluster 3014N). In mindestens einem Ausführungsbeispiel kann jeder Cluster 3014A-3014N des Verarbeitungscluster-Arrays 3012 eine große Anzahl von gleichzeitigen Threads ausführen. In mindestens einem Ausführungsbeispiel kann der Planer 3010 den Clustern 3014A-3014N des Verarbeitungscluster-Arrays 3012 Arbeit zuweisen, indem er verschiedene Planungs- und/oder Arbeitsverteilungsalgorithmen verwendet, die in Abhängigkeit von der Arbeitslast variieren können, die für jede Art von Programm oder Berechnung anfällt. In mindestens einem Ausführungsbeispiel kann die Planung dynamisch durch den Planer 3010 erfolgen oder teilweise durch die Compilerlogik während der Kompilierung der Programmlogik, die für die Ausführung durch das Verarbeitungscluster-Array 3012 konfiguriert ist, unterstützt werden. In mindestens einem Ausführungsbeispiel können verschiedene Cluster 3014A-3014N des Verarbeitungscluster-Arrays 3012 für die Verarbeitung verschiedener Programmtypen oder für die Durchführung verschiedener Arten von Berechnungen allokiert werden.
  • In mindestens einem Ausführungsbeispiel kann das Verarbeitungscluster-Array 3012 so konfiguriert sein, dass es verschiedene Arten von Parallelverarbeitungsoperationen durchführt. In mindestens einem Ausführungsbeispiel ist das Verarbeitungscluster-Array 3012 so konfiguriert, dass es allgemeine parallele Rechenoperationen durchführt. Zum Beispiel kann in mindestens einem Ausführungsbeispiel das Verarbeitungscluster-Array 3012 eine Logik zur Ausführung von Verarbeitungsaufgaben umfassen, die das Filtern von Video- und/oder Audiodaten, die Durchführung von Modellierungsoperationen, einschließlich physikalischer Operationen, und die Durchführung von Datentransformationen umfassen.
  • In mindestens einem Ausführungsbeispiel ist das Verarbeitungscluster-Array 3012 so konfiguriert, dass es parallele Grafikverarbeitungsoperationen durchführt. In mindestens einem Ausführungsbeispiel kann das Verarbeitungscluster-Array 3012 zusätzliche Logik enthalten, um die Ausführung solcher Grafikverarbeitungsoperationen zu unterstützen, einschließlich, aber nicht beschränkt auf Textur-Sampling-Logik, um Texturoperationen durchzuführen, sowie Tesselation-Logik und andere Vertex-Verarbeitungslogik. In mindestens einem Ausführungsbeispiel kann das Verarbeitungscluster-Array 3012 so konfiguriert sein, dass es grafikverarbeitungsbezogene Schattierungsprogramme ausführt, wie z. B. Vertex-Schattierer, Tessellierungs-Schattierer, Geometrie-Schattierer und Pixel-Schattierer, aber nicht darauf beschränkt. In mindestens einem Ausführungsbeispiel kann die Parallelverarbeitungseinheit 3002 über die System-E/A-Einheit 3004 Daten aus dem Systemspeicher zur Verarbeitung übertragen. In mindestens einem Ausführungsbeispiel können die übertragenen Daten während der Verarbeitung im On-Chip-Speicher (z. B. im Parallelprozessorspeicher 3022) gespeichert und dann in den Systemspeicher zurückgeschrieben werden.
  • In mindestens einem Ausführungsbeispiel, wenn die Parallelverarbeitungseinheit 3002 zur Durchführung der Grafikverarbeitung verwendet wird, kann der Planer 3010 so konfiguriert sein, dass er eine Verarbeitungslast in annähernd gleich große Aufgaben unterteilt, um eine bessere Verteilung der Grafikverarbeitungsvorgänge auf mehrere Cluster 3014A-3014N des Verarbeitungscluster-Arrays 3012 zu ermöglichen. In mindestens einem Ausführungsbeispiel können Teile des Verarbeitungscluster-Arrays 3012 so konfiguriert sein, dass sie verschiedene Verarbeitungstypen ausführen. In mindestens einem Ausführungsbeispiel kann beispielsweise ein erster Teil so konfiguriert sein, dass er Vertex-Schattierung und Topologie-Generierung durchführt, ein zweiter Teil kann so konfiguriert sein, dass er Tesselierung und Geometrie-Schattierung durchführt, und ein dritter Teil kann so konfiguriert sein, dass er Pixel-Schattierung oder andere Bildschirmoperationen durchführt, um ein gerendertes Bild zur Anzeige zu erzeugen. In mindestens einem Ausführungsbeispiel können Zwischendaten, die von einem oder mehreren Clustern 3014A-3014N erzeugt wurden, in Puffern gespeichert werden, damit Zwischendaten zur weiteren Verarbeitung zwischen den Clustern 3014A-3014N übertragen werden können.
  • In mindestens einem Ausführungsbeispiel kann das Verarbeitungscluster-Array 3012 Verarbeitungsaufgaben empfangen, die über den Planer 3010 auszuführen sind, der Befehle zur Definition von Verarbeitungsaufgaben vom Frontend 3008 empfängt. In mindestens einem Ausführungsbeispiel können die Verarbeitungsaufgaben Indizes der zu verarbeitenden Daten umfassen, z. B. Oberflächen-(Abschnitte), Primitivdaten, Vertex-Daten und/oder Pixeldaten, sowie Zustandsparameter und Befehle, die definieren, wie die Daten verarbeitet werden sollen (z. B. welches Programm ausgeführt werden soll). In mindestens einem Ausführungsbeispiel kann der Planer 3010 so konfiguriert sein, dass er Indizes holt, die Aufgaben entsprechen, oder er kann Indizes vom Front-End 3008 empfangen. In mindestens einem Ausführungsbeispiel kann das Frontend 3008 so konfiguriert sein, dass es sicherstellt, dass das Verarbeitungscluster-Array 3012 auf einen gültigen Zustand konfiguriert ist, bevor eine durch eingehende Befehlspuffer (z. B. Batch-Puffer, Push-Puffer usw.) spezifizierte Arbeitslast initiiert wird.
  • In mindestens einem Ausführungsbeispiel kann jede von einer oder mehreren Instanzen der Parallelverarbeitungseinheit 3002 mit dem Parallelprozessorspeicher 3022 gekoppelt werden. In mindestens einem Ausführungsbeispiel kann auf den Parallelverarbeitungsspeicher 3022 über eine Speicher-Crossbar 3016 zugegriffen werden, die Speicheranforderungen vom Verarbeitungscluster-Array 3012 sowie von der E/A-Einheit 3004 empfangen kann. In mindestens einem Ausführungsbeispiel kann die Speicher-Crossbar 3016 über eine Speicherschnittstelle 3018 auf den parallelen Prozessorspeicher 3022 zugreifen. In mindestens einem Ausführungsbeispiel kann die Speicherschnittstelle 3018 mehrere Partitionseinheiten (z. B. Partitionseinheit 3020A, Partitionseinheit 3020B bis Partitionseinheit 3020N) umfassen, die jeweils mit einem Teil (z. B. Speichereinheit) des Parallelprozessorspeichers 3022 verbunden werden können. In mindestens einem Ausführungsbeispiel ist eine Anzahl von Partitionseinheiten 3020A-3020N so konfiguriert, dass sie gleich einer Anzahl von Speichereinheiten ist, so dass eine erste Partitionseinheit 3020A eine entsprechende erste Speichereinheit 3024A hat, eine zweite Partitionseinheit 3020B eine entsprechende Speichereinheit 3024B hat und eine N-te Partitionseinheit 3020N eine entsprechende N-te Speichereinheit 3024N hat. In mindestens einem Ausführungsbeispiel kann eine Anzahl von Partitionseinheiten 3020A-3020N nicht gleich einer Anzahl von Speichergeräten sein.
  • In mindestens einem Ausführungsbeispiel können die Speichereinheiten 3024A-3024N verschiedene Arten von Speichergeräten enthalten, einschließlich Dynamic Random Access Memory (DRAM) oder Grafik-Direktzugriffsspeicher, wie synchroner Grafik-Direktzugriffsspeicher (SGRAM), einschließlich Grafik-Doppeldatenraten-Speicher (GDDR). In mindestens einem Ausführungsbeispiel können die Speichereinheiten 3024A-3024N auch 3D-Stapelspeicher umfassen, einschließlich, aber nicht beschränkt auf Hochbreitenspeicher (HBM). In mindestens einem Ausführungsbeispiel können Ausführungsziele, wie Einzelbildpuffer oder Texturkarten, über die Speichereinheiten 3024A-3024N hinweg gespeichert werden, so dass die Partitionseinheiten 3020A-3020N Teile jedes Ausführungsziels parallel schreiben können, um die verfügbare Bandbreite des Parallelprozessorspeichers 3022 effizient zu nutzen. In mindestens einem Ausführungsbeispiel kann eine lokale Instanz des parallelen Prozessorspeichers 3022 zugunsten eines vereinheitlichten Designs ausgeschlossen werden, das Systemspeicher in Verbindung mit lokalem Cache-Speicher verwendet.
  • In mindestens einem Ausführungsbeispiel kann jeder der Cluster 3014A-3014N des Verarbeitungscluster-Arrays 3012 Daten verarbeiten, die in jede der Speichereinheiten 3024A-3024N innerhalb des Parallelprozessorspeichers 3022 geschrieben werden. In mindestens einem Ausführungsbeispiel kann die Speicher-Crossbar 3016 so konfiguriert sein, dass sie eine Ausgabe jedes Clusters 3014A-3014N an eine beliebige Partitionseinheit 3020A-3020N oder an einen anderen Cluster 3014A-3014N überträgt, der zusätzliche Verarbeitungsvorgänge an einer Ausgabe durchführen kann. In mindestens einem Ausführungsbeispiel kann jeder Cluster 3014A-3014N mit der Speicherschnittstelle 3018 über die Speicher-Crossbar 3016 kommunizieren, um von verschiedenen externen Speichergeräten zu lesen oder in diese zu schreiben. In mindestens einem Ausführungsbeispiel verfügt die Speicher-Crossbar 3016 über eine Verbindung zur Speicherschnittstelle 3018, um mit der E/A-Einheit 3004 zu kommunizieren, sowie über eine Verbindung zu einer lokalen Instanz des Parallelverarbeitungsspeichers 3022, so dass die Verarbeitungseinheiten innerhalb der verschiedenen Verarbeitungscluster 3014A-3014N mit dem Systemspeicher oder einem anderen Speicher kommunizieren können, der nicht lokal zur Parallelverarbeitungseinheit 3002 gehört. In mindestens einem Ausführungsbeispiel kann die Speicher-Crossbar 3016 virtuelle Kanäle verwenden, um Verkehrsströme zwischen Clustern 3014A-3014N und Partitionseinheiten 3020A 3020N zu trennen.
  • In mindestens einem Ausführungsbeispiel können mehrere Instanzen der Parallelverarbeitungseinheit 3002 auf einer einzigen Erweiterungskarte bereitgestellt werden, oder es können mehrere Erweiterungskarten miteinander verbunden werden. In mindestens einem Ausführungsbeispiel können verschiedene Instanzen der Parallelverarbeitungseinheit 3002 so konfiguriert sein, dass sie miteinander betrieben werden können, selbst wenn die verschiedenen Instanzen eine unterschiedliche Anzahl von Verarbeitungskemen, unterschiedliche Mengen an lokalem Parallelprozessorspeicher und/oder andere Konfigurationsunterschiede aufweisen. Beispielsweise können in mindestens einem Ausführungsbeispiel einige Instanzen der Parallelverarbeitungseinheit 3002 im Vergleich zu anderen Instanzen Gleitkommaeinheiten mit höherer Präzision umfassen. In mindestens einem Ausführungsbeispiel können Systeme, die eine oder mehrere Instanzen der Parallelverarbeitungseinheit 3002 oder des Parallelprozessors 3000 enthalten, in einer Vielzahl von Konfigurationen und Formfaktoren implementiert werden, einschließlich, aber nicht beschränkt auf Desktop-, Laptop- oder Handheld-Personalcomputer, Server, Workstations, Spielkonsolen und/oder eingebettete Systeme.
  • 30B ist ein Blockdiagramm einer Partitionseinheit 3020 gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel ist die Partitionseinheit 3020 eine Instanz einer der Partitionseinheiten 3020A-3020N aus 30A. In mindestens einem Ausführungsbeispiel umfasst die Partitionseinheit 3020 einen L2-Cache 3021, eine Framebildpuffer-Schnittstelle 3025 und eine ROP 3026 (Rasteroperationseinheit). Der L2-Cache 3021 ist ein Lese-/Schreib-Cache, der so konfiguriert ist, dass er Lade- und Speicheroperationen durchführt, die von der Speicher-Crossbar 3016 und der ROP 3026 empfangen werden. In mindestens einem Ausführungsbeispiel werden Fehlversuche beim Lesen und dringende Rückschreibanforderungen vom L2-Cache 3021 an die Framebuffer-Schnittstelle 3025 zur Verarbeitung ausgegeben. In mindestens einem Ausführungsbeispiel können Aktualisierungen auch über die Framebuffer-Schnittstelle 3025 zur Verarbeitung an einen Einzelbildpuffer gesendet werden. In mindestens einem Ausführungsbeispiel ist die Framebuffer-Schnittstelle 3025 mit einer der Speichereinheiten im Parallelprozessorspeicher verbunden, wie z.B. den Speichereinheiten 3024A-3024N von 30 (z.B. im Parallelprozessorspeicher 3022).
  • In mindestens einem Ausführungsbeispiel ist ROP 3026 eine verarbeitende Einheit, die Rasteroperationen wie Schablone, Z-Test, Blending und dergleichen durchführt. In mindestens einem Ausführungsbeispiel gibt ROP 3026 dann verarbeitete Grafikdaten aus, die im Grafikspeicher abgelegt werden. In mindestens einem Ausführungsbeispiel umfasst ROP 3026 eine Komprimierungslogik zur Komprimierung von Tiefen- oder Farbdaten, die in den Speicher geschrieben werden, und zur Dekomprimierung von Tiefen- oder Farbdaten, die aus dem Speicher gelesen werden. In mindestens einem Ausführungsbeispiel kann die Komprimierungslogik eine verlustfreie Komprimierungslogik sein, die einen oder mehrere von mehreren Komprimierungsalgorithmen verwendet. Die Art der Komprimierung, die von ROP 3026 durchgeführt wird, kann basierend auf statistischen Merkmalen der zu komprimierenden Daten variieren. Zum Beispiel wird in mindestens einem Ausführungsbeispiel eine Delta-Farbkomprimierung auf Tiefen- und Farbdaten auf einer Pro-Kachel-Basis durchgeführt.
  • In mindestens einem Ausführungsbeispiel ist ROP 3026 in jedem Verarbeitungscluster (z. B. Cluster 3014A-3014N von 30) statt in der Partitionseinheit 3020 enthalten. In mindestens einem Ausführungsbeispiel werden Lese- und Schreibanforderungen für Pixeldaten über die Speicher-Crossbar 3016 anstelle von Pixelfragmentdaten übertragen. In mindestens einem Ausführungsbeispiel können verarbeitete Grafikdaten auf einem Ausführungsbeispiel, wie einem von einem oder mehreren Ausführungsbeispielen 2910 von 29, zur weiteren Verarbeitung durch Prozessor(en) 2902 weitergeleitet werden, oder zur weiteren Verarbeitung durch eine der Verarbeitungseinheiten innerhalb des Parallelprozessors 3000 von 30A weitergeleitet werden.
  • 30C ist ein Blockdiagramm eines Verarbeitungsclusters 3014 innerhalb einer Parallelverarbeitungseinheit gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel ist ein Verarbeitungscluster eine Instanz von einem der Verarbeitungscluster 3014A-3014N von 30. In mindestens einem Ausführungsbeispiel kann der Verarbeitungscluster 3014 so konfiguriert sein, dass viele Threads parallel ausgeführt werden, wobei sich der Begriff „Thread“ auf eine Instanz eines bestimmten Programms bezieht, das auf einem bestimmten Satz von Eingabedaten ausgeführt wird. In mindestens einem Ausführungsbeispiel werden SIMD-Befehlsausgabetechniken (Single-Instruction, Multiple-Data) verwendet, um die parallele Ausführung einer großen Anzahl von Threads zu unterstützen, ohne mehrere unabhängige Befehlseinheiten bereitzustellen. In mindestens einem Ausführungsbeispiel werden Single-Instruction-Multiple-Thread (SIMT)-Techniken verwendet, um die parallele Ausführung einer großen Anzahl von im Allgemeinen synchronisierten Threads zu unterstützen, wobei eine gemeinsame Befehlseinheit verwendet wird, die so konfiguriert ist, dass sie Befehle an einen Satz von Verarbeitungs-Engines in jedem der Verarbeitungscluster ausgibt.
  • In mindestens einem Ausführungsbeispiel kann der Betrieb des Verarbeitungsclusters 3014 über einen Pipeline-Manager 3032 gesteuert werden, der die Aufgaben an die parallelen SIMT-Prozessoren verteilt. In mindestens einem Ausführungsbeispiel empfängt der Pipeline-Manager 3032 Anweisungen vom Planer 3010 von 30 und verwaltet die Ausführung dieser Anweisungen über einen Grafik-Multiprozessor 3034 und/oder eine Textureinheit 3036. In mindestens einem Ausführungsbeispiel ist der Grafikmultiprozessor 3034 ein exemplarisches Beispiel für einen SIMT-Parallelprozessor. In mindestens einem Ausführungsbeispiel können jedoch verschiedene Typen von SIMT-Parallelprozessoren mit unterschiedlichen Architekturen im Verarbeitungscluster 3014 enthalten sein. In mindestens einem Ausführungsbeispiel können ein oder mehrere Instanzen des Grafik-Multiprozessors 3034 in einem Verarbeitungscluster 3014 enthalten sein. In mindestens einem Ausführungsbeispiel kann der Grafik-Multiprozessor 3034 Daten verarbeiten, und eine Daten-Crossbar 3040 kann verwendet werden, um die verarbeiteten Daten an eines von mehreren möglichen Zielen zu verteilen, die andere Schattierungseinheiten umfassen. In mindestens einem Ausführungsbeispiel kann der Pipeline-Manager 3032 die Verteilung verarbeiteter Daten erleichtern, indem er Ziele für verarbeitete Daten spezifiziert, die über die Daten-Crossbar 3040 verteilt werden sollen.
  • In mindestens einem Ausführungsbeispiel kann jeder Grafik-Multiprozessor 3034 innerhalb des Verarbeitungsclusters 3014 einen identischen Satz funktionaler Ausführungslogik enthalten (z. B. arithmetische Logikeinheiten, Ladespeichereinheiten usw.). In mindestens einem Ausführungsbeispiel kann die funktionale Ausführungslogik in einer Pipeline konfiguriert sein, in der neue Befehle ausgegeben werden können, bevor vorherige Befehle abgeschlossen sind. In mindestens einem Ausführungsbeispiel unterstützt die funktionale Ausführungslogik eine Vielzahl von Funktionalitäten, darunter Ganzzahl- und Gleitkommaarithmetik, Vergleichsoperationen, boolesche Operationen, Bitverschiebung und die Berechnung verschiedener algebraischer Funktionen. In mindestens einem Ausführungsbeispiel kann dieselbe Hardware mit funktionalen Einheiten genutzt werden, um verschiedene Operationen durchzuführen, und es kann eine beliebige Kombination von funktionalen Einheiten vorhanden sein.
  • In mindestens einem Ausführungsbeispiel bilden die an den Verarbeitungscluster 3014 übertragenen Anweisungen einen Thread. In mindestens einem Ausführungsbeispiel ist ein Satz von Threads, die über einen Satz von parallelen Verarbeitungs-Engines ausgeführt werden, eine Thread-Gruppe. In mindestens einem Ausführungsbeispiel führt die Thread-Gruppe ein Programm auf verschiedenen Eingabedaten aus. In mindestens einem Ausführungsbeispiel kann jeder Thread innerhalb einer Thread-Gruppe einer anderen Verarbeitungs-Engine innerhalb eines Grafik-Multiprozessors 3034 zugewiesen werden. In mindestens einem Ausführungsbeispiel kann eine Thread-Gruppe weniger Threads umfassen als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 3034. In mindestens einem Ausführungsbeispiel kann, wenn eine Thread-Gruppe weniger Threads als eine Anzahl von Verarbeitungs-Engines enthält, eine oder mehrere der Verarbeitungs-Engines während der Zyklen, in denen diese Thread-Gruppe verarbeitet wird, im Leerlauf sein. In mindestens einem Ausführungsbeispiel kann eine Thread-Gruppe auch mehr Threads umfassen als eine Anzahl von Verarbeitungs-Engines im Grafik-Multiprozessor 3034. In mindestens einem Ausführungsbeispiel kann, wenn eine Thread-Gruppe mehr Threads als Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 3034 enthält, die Verarbeitung in aufeinanderfolgenden Taktzyklen erfolgen. In mindestens einem Ausführungsbeispiel können mehrere Thread-Gruppen gleichzeitig auf einem Grafik-Multiprozessor 3034 ausgeführt werden.
  • In mindestens einem Ausführungsbeispiel umfasst der Grafik-Multiprozessor 3034 einen internen Cache-Speicher zur Durchführung von Lade- und Speicheroperationen. In mindestens einem Ausführungsbeispiel kann der Grafik-Multiprozessor 3034 auf einen internen Cache verzichten und einen Cache-Speicher (z. B. L1-Cache 3048) innerhalb des Verarbeitungsclusters 3014 verwenden. In mindestens einem Ausführungsbeispiel hat jeder Grafik-Multiprozessor 3034 auch Zugriff auf L2-Caches innerhalb von Partitionseinheiten (z. B. Partitionseinheiten 3020A-3020N von 30), die von allen Verarbeitungsclustern 3014 gemeinsam genutzt werden und zur Datenübertragung zwischen Threads verwendet werden können. In mindestens einem Ausführungsbeispiel kann der Grafik-Multiprozessor 3034 auch auf den globalen Speicher außerhalb des Chips zugreifen, der einen oder mehrere lokale parallele Prozessorspeicher und/oder Systemspeicher umfassen kann. In mindestens einem Ausführungsbeispiel kann jeder Speicher außerhalb der Parallelverarbeitungseinheit 3002 als globaler Speicher verwendet werden. In mindestens einem Ausführungsbeispiel kann der Verarbeitungscluster 3014 mehrere Instanzen des Grafik-Multiprozessors 3034 umfassen, die gemeinsame Anweisungen und Daten nutzen können, die im L1-Cache 3048 gespeichert werden können.
  • In mindestens einem Ausführungsbeispiel kann jeder Verarbeitungscluster 3014 eine MMU 3045 (Memory Management Unit) umfassen, die so konfiguriert ist, dass sie virtuelle Adressen physischen Adressen zuordnet. In mindestens einem Ausführungsbeispiel können sich eine oder mehrere Instanzen der MMU 3045 innerhalb der Speicherschnittstelle 3018 von 30 befinden. In mindestens einem Ausführungsbeispiel umfasst MMU 3045 einen Satz von Seitentabelleneinträgen (PTEs), die verwendet werden, um eine virtuelle Adresse einer physischen Adresse einer Kachel zuzuordnen (mehr über Kacheln), und optional einen Cache-Zeilenindex. In mindestens einem Ausführungsbeispiel kann die MMU 3045 Adressübersetzungs-Lookaside-Puffer (TLB) oder Caches enthalten, die sich im Grafik-Multiprozessor 3034 oder im L1-Cache oder Verarbeitungscluster 3014 befinden können. In mindestens einem Ausführungsbeispiel wird die physikalische Adresse verarbeitet, um die Lokalität des Oberflächendatenzugriffs so zu verteilen, dass ein effizientes Request Interleaving zwischen den Partitionseinheiten möglich ist. In mindestens einem Ausführungsbeispiel kann der Cachezeilenindex verwendet werden, um zu bestimmen, ob eine Anforderung für eine Cachezeile ein Treffer oder ein Fehlversuch ist.
  • In mindestens einem Ausführungsbeispiel kann ein Verarbeitungscluster 3014 so konfiguriert sein, dass jeder Grafik-Multiprozessor 3034 mit einer Textureinheit 3036 gekoppelt ist, um Texturabbildungsoperationen durchzuführen, z. B. Bestimmen von Textursamplingpositionen, Lesen von Texturdaten und Filtern von Texturdaten. In mindestens einem Ausführungsbeispiel werden die Texturdaten aus einem internen Textur-L1-Cache (nicht dargestellt) oder aus einem L1-Cache innerhalb des Grafikmultiprozessors 3034 gelesen und je nach Bedarf aus einem L2-Cache, einem lokalen Parallelprozessorspeicher oder dem Systemspeicher geholt. In mindestens einem Ausführungsbeispiel gibt jeder Grafikmultiprozessor 3034 verarbeitete Aufgaben an die Daten-Crossbar 3040 aus, um die verarbeitete Aufgabe über die Speicher-Crossbar 3016 einem anderen Verarbeitungscluster 3014 zur weiteren Verarbeitung zur Verfügung zu stellen oder um die verarbeitete Aufgabe in einem L2-Cache, einem lokalen Parallelprozessorspeicher oder einem Systemspeicher zu speichern. In mindestens einem Ausführungsbeispiel ist preROP 3042 (Pre-Raster-Operations-Einheit) so konfiguriert, dass es Daten vom Grafik-Multiprozessor 3034 empfängt und Daten an ROP-Einheiten weiterleitet, die sich in Partitionseinheiten befinden können, wie hier beschrieben (z. B. Partitionseinheiten 3020A-3020N in 30). In mindestens einem Ausführungsbeispiel kann die Einheit PreROP 3042 Optimierungen für die Farbmischung durchführen, Pixelfarbdaten organisieren und Adressübersetzungen durchführen.
  • Die Inferenz- und/oder Trainingslogik 1715 wird zum Inferenzieren und/oder Trainieren von Operationen verwendet, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 im Grafikverarbeitungscluster 3014 zum Inferenzieren oder Vorhersagen verwendet werden, basierend zumindest teilweise auf Gewichtsparametern, die unter Verwenden von Trainingsoperationen des neuronalen Netzwerks, Funktionen und/oder Architekturen des neuronalen Netzwerks oder hierin beschriebenen Anwendungsfällen des neuronalen Netzwerks berechnet wurden.
  • 30D zeigt einen Grafikmultiprozessor 3034 gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel ist der Grafik-Multiprozessor 3034 mit dem Pipeline-Manager 3032 des Verarbeitungsclusters 3014 gekoppelt. In mindestens einem Ausführungsbeispiel verfügt der Grafik-Multiprozessor 3034 über eine Ausführungspipeline, die unter anderem einen Befehlscache 3052, eine Befehlseinheit 3054, eine Adresszuordnungseinheit 3056, eine Registerdatei 3058, einen oder mehrere GPGPU-Kerne 3062 und eine oder mehrere Lade-/Speichereinheiten 3066 enthält. Die GPGPU-Kerne 3062 und die Lade-/Speicher-Einheiten 3066 sind mit dem Cache-Speicher 3072 und dem gemeinsam genutzten Speicher 3070 über eine Speicher- und Cache-Verbindung 3068 gekoppelt.
  • In mindestens einem Ausführungsbeispiel empfängt der Befehlscache 3052 einen Strom von auszuführenden Befehlen vom Pipeline-Manager 3032. In mindestens einem Ausführungsbeispiel werden die Befehle im Befehlscache 3052 zwischengespeichert und von der Einheit 3054 zur Ausführung weitergeleitet. In mindestens einem Ausführungsbeispiel kann die Befehlseinheit 3054 Befehle in Form von Thread-Gruppen (z. B. Warps) versenden, wobei jeder Thread der Thread-Gruppe einer anderen Ausführungseinheit innerhalb des GPGPU-Kerns 3062 zugewiesen wird. In mindestens einem Ausführungsbeispiel kann ein Befehl auf einen lokalen, gemeinsam genutzten oder globalen Adressraum zugreifen, indem er eine Adresse innerhalb eines einheitlichen Adressraums spezifiziert. In mindestens einem Ausführungsbeispiel kann die Adressabbildungseinheit 3056 verwendet werden, um Adressen in einem einheitlichen Adressraum in eine eindeutige Speicheradresse zu übersetzen, auf die von Lade-/Speichereinheiten 3066 zugegriffen werden kann.
  • In mindestens einem Ausführungsbeispiel stellt die Registerdatei 3058 einen Satz von Registern für funktionale Einheiten des Grafik-Multiprozessors 3034 bereit. In mindestens einem Ausführungsbeispiel stellt die Registerdatei 3058 einen temporären Speicher für Operanden bereit, die mit Datenpfaden von Funktionseinheiten (z. B. GPGPU-Kernen 3062, Lade-/Speichereinheiten 3066) des Grafikmultiprozessors 3034 verbunden sind. In mindestens einem Ausführungsbeispiel wird die Registerdatei 3058 zwischen den einzelnen funktionalen Einheiten aufgeteilt, so dass jeder funktionalen Einheit ein bestimmter Teil der Registerdatei 3058 zugewiesen wird. In mindestens einem Ausführungsbeispiel ist die Registerdatei 3058 auf verschiedene Warps aufgeteilt, die vom Grafikmultiprozessor 3034 ausgeführt werden.
  • In mindestens einem Ausführungsbeispiel können die GPGPU-Kerne 3062 jeweils Gleitkommaeinheiten (FPUs) und/oder ganzzahlige arithmetische Logikeinheiten (ALUs) umfassen, die zur Ausführung von Befehlen des Grafikmultiprozessors 3034 verwendet werden. Die GPGPU-Kerne 3062 können sich in ihrer Architektur ähneln oder unterscheiden. In mindestens einem Ausführungsbeispiel umfasst ein erster Teil der GPGPU-Kerne 3062 eine FPU mit einfacher Genauigkeit und eine Ganzzahl-ALU, während ein zweiter Teil der GPGPU-Kerne eine FPU mit doppelter Genauigkeit enthält. In mindestens einem Ausführungsbeispiel können FPUs den IEEE 754-2008-Standard für Gleitkommaarithmetik implementieren oder Gleitkommaarithmetik mit variabler Genauigkeit ermöglichen. In mindestens einem Ausführungsbeispiel kann der Grafikmultiprozessor 3034 zusätzlich eine oder mehrere Einheiten mit festen Funktionen oder Sonderfunktionen umfassen, um bestimmte Funktionen wie das Kopieren von Rechtecken oder das Überblenden von Pixeln durchzuführen. In mindestens einem Ausführungsbeispiel kann einer oder mehrere der GPGPU-Kerne auch eine feste oder spezielle Funktionslogik enthalten.
  • In mindestens einem Ausführungsbeispiel umfassen die GPGPU-Kerne 3062 eine SIMD-Logik, die in der Lage ist, einen einzigen Befehl für mehrere Datensätze auszuführen. In mindestens einem Ausführungsbeispiel können GPGPU-Kerne 3062 physikalisch SIMD4-, SIMD8- und SIMD16-Befehle und logisch SIMD1-, SIMD2- und SIMD32-Befehle ausführen. In mindestens einem Ausführungsbeispiel können SIMD-Befehle für GPGPU-Kerne zur Kompilierungszeit von einem Schattierungscompiler generiert werden oder automatisch generiert werden, wenn Programme ausgeführt werden, die für SPMD- oder SIMT-Architekturen (Single Program Multiple Data) geschrieben und kompiliert wurden. In mindestens einem Ausführungsbeispiel können mehrere Threads eines Programms, das für ein SIMT-Ausführungsmodell konfiguriert ist, über eine einzige SIMD-Anweisung ausgeführt werden. Zum Beispiel können in mindestens einem Ausführungsbeispiel acht SIMT-Threads, die gleiche oder ähnliche Operationen durchführen, parallel über eine einzige SIMD8-Logikeinheit ausgeführt werden.
  • In mindestens einem Ausführungsbeispiel ist die Speicher- und Cache-Verbindung 3068 ein Verbindungsnetzwerk, das jede funktionale Einheit des Grafik-Multiprozessors 3034 mit der Registerdatei 3058 und dem gemeinsam genutzten Speicher 3070 verbindet. In mindestens einem Ausführungsbeispiel ist die Speicher- und Cache-Verbindung 3068 eine Crossbar-Verbindung, die es der Lade-/Speichereinheit 3066 ermöglicht, Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher 3070 und der Registerdatei 3058 durchzuführen. In mindestens einem Ausführungsbeispiel kann die Registerdatei 3058 mit derselben Frequenz betrieben werden wie die GPGPU-Kerne 3062, so dass die Datenübertragung zwischen den GPGPU-Kernen 3062 und der Registerdatei 3058 eine sehr geringe Latenzzeit aufweist. In mindestens einem Ausführungsbeispiel kann gemeinsam genutzter Speicher 3070 verwendet werden, um die Kommunikation zwischen Threads zu ermöglichen, die auf funktionalen Einheiten innerhalb des Grafik-Multiprozessors 3034 ausgeführt werden. In mindestens einem Ausführungsbeispiel kann der Cache-Speicher 3072 beispielsweise als Datencache verwendet werden, um Texturdaten zu cachen, die zwischen Funktionseinheiten und der Textureinheit 3036 ausgetauscht werden. In mindestens einem Ausführungsbeispiel kann der gemeinsam genutzte Speicher 3070 auch als programmgesteuerter Cache genutzt werden. In mindestens einem Ausführungsbeispiel können Threads, die auf GPGPU-Kernen 3062 ausgeführt werden, zusätzlich zu den automatisch zwischengespeicherten Daten, die im Cache-Speicher 3072 gespeichert sind, Daten im gemeinsam genutzten Speicher programmatisch speichern.
  • In mindestens einem Ausführungsbeispiel ist ein Parallelprozessor oder eine GPGPU, wie hier beschrieben, kommunikativ mit Host-/Prozessorkernen gekoppelt, um Grafikoperationen, Operationen des maschinellen Lernens, Musteranalyseoperationen und verschiedene allgemeine GPU (GPGPU)-Funktionen zu beschleunigen. In mindestens einem Ausführungsbeispiel kann die GPU über einen Bus oder eine andere Verbindung (z. B. eine Hochgeschwindigkeitsverbindung wie PCIe oder NVLink) mit dem Host-Prozessor/den Kernen kommunikativ verbunden sein. In mindestens einem Ausführungsbeispiel kann die GPU in demselben Gehäuse oder auf demselben Chip wie die Kerne integriert sein und über einen internen Prozessorbus/eine interne Verbindung (d. h. innerhalb des Gehäuses oder des Chips) mit den Kernen kommunizieren. In mindestens einem Ausführungsbeispiel können die Prozessorkerne unabhängig von der Art des Anschlusses der GPU der GPU Arbeit in Form von Sequenzen von Befehlen/Befehlen zuweisen, die in einem Arbeitsdeskriptor enthalten sind. In mindestens einem Ausführungsbeispiel verwendet die GPU dann eine dedizierte Schaltungsanordnung/Logik zur effizienten Verarbeitung dieser Befehle/Anweisungen.
  • Die Inferenz- und/oder Trainingslogik 1715 wird zum Inferenzieren und/oder Trainieren von Operationen verwendet, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 im Grafikmultiprozessor 3034 zum Inferieren oder Vorhersagen basierend zumindest teilweise auf Gewichtsparametern verwendet werden, die unter Verwenden von Trainingsoperationen des neuronalen Netzwerks, Funktionen und/oder Architekturen des neuronalen Netzwerks oder hierin beschriebenen Anwendungsfällen des neuronalen Netzwerks berechnet wurden.
  • 31 zeigt ein Multi-GPU-Computersystem 3100 gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann das Multi-GPU-Rechnersystem 3100 einen Prozessor 3102 umfassen, der über einen Host-Interface-Switch 3104 mit mehreren allgemeinen Grafikverarbeitungseinheiten (GPGPUs) 3106A D gekoppelt ist. In mindestens einem Ausführungsbeispiel ist der Host-Interface-Switch 3104 ein PCI-Express-Switch-Gerät, das den Prozessor 3102 mit einem PCI-Express-Bus verbindet, über den der Prozessor 3102 mit den GPGPUs 3106A-D kommunizieren kann. Die GPGPUs 3106A-D können über eine Reihe von Hochgeschwindigkeits-Punkt-zu-Punkt-GPU-zu-GPU-Verbindungen 3116 miteinander verbunden werden. In mindestens einem Ausführungsbeispiel sind die GPU-zu-GPU-Verbindungen 3116 mit jeder der GPGPUs 3106A-D über eine eigene GPU-Verbindung verbunden. In mindestens einem Ausführungsbeispiel ermöglichen die P2P-GPU-Verbindungen 3116 eine direkte Kommunikation zwischen den einzelnen GPGPUs 3106A-D, ohne dass eine Kommunikation über den Host-Schnittstellenbus 3104 erforderlich ist, an den der Prozessor 3102 angeschlossen ist. In mindestens einem Ausführungsbeispiel, bei dem der GPU-zu-GPU-Verkehr auf P2P-GPU-Verbindungen 3116 geleitet wird, bleibt der Host-Schnittstellenbus 3104 für den Zugriff auf den Systemspeicher oder für die Kommunikation mit anderen Instanzen des Multi-GPU-Rechensystems 3100 verfügbar, beispielsweise über ein oder mehrere Netzwerkgeräte. Während in mindestens einem Ausführungsbeispiel die GPGPUs 3106A-D über den Host-Interface-Switch 3104 mit dem Prozessor 3102 verbunden sind, umfasst der Prozessor 3102 in mindestens einem Ausführungsbeispiel eine direkte Unterstützung für P2P-GPU-Verbindungen 3116 und kann direkt mit den GPGPUs 3106A-D verbunden werden.
  • Die Inferenz- und/oder Trainingslogik 1715 wird verwendet, um Inferenzieren und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 im Multi-GPU-Computersystem 3100 zum Inferenzieren oder Vorhersagen verwendet werden, basierend zumindest teilweise auf Gewichtsparametern, die unter Verwenden von Trainingsoperationen des neuronalen Netzwerks, Funktionen und/oder Architekturen des neuronalen Netzwerks oder hierin beschriebenen Anwendungsfällen des neuronalen Netzwerks berechnet wurden.
  • 32 ist ein Blockdiagramm eines Grafikprozessors 3200 gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel enthält der Grafikprozessor 3200 eine Ringverbindung 3202, ein Pipeline-Frontend 3204, eine Medienengine 3237 und Grafikkerne 3280A 3280N. In mindestens einem Ausführungsbeispiel verbindet die Ringverbindung 3202 den Grafikprozessor 3200 mit anderen Verarbeitungseinheiten, die andere Grafikprozessoren oder einen oder mehrere allgemeine Prozessorkerne umfassen. In mindestens einem Ausführungsbeispiel ist der Grafikprozessor 3200 einer von vielen Prozessoren, die in ein Multi-Core-Verarbeitungssystem integriert sind.
  • In mindestens einem Ausführungsbeispiel empfängt der Grafikprozessor 3200 Batches von Befehlen über eine Ringverbindung 3202. In mindestens einem Ausführungsbeispiel werden die eingehenden Befehle von einem Befehlsstreamer 3203 im Pipeline-Frontend 3204 interpretiert. In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 3200 eine skalierbare Ausführungslogik zur Durchführung der 3D-Geometrieverarbeitung und der Medienverarbeitung über Grafikkern(e) 3280A-3280N. In mindestens einem Ausführungsbeispiel liefert der Befehlsstreamer 3203 für 3D-Geometrieverarbeitungsbefehle Befehle an die Geometrie-Pipeline 3236. In mindestens einem Ausführungsbeispiel liefert der Befehlsstreamer 3203 für mindestens einige Medienverarbeitungsbefehle Befehle an ein Video-Frontend 3234, das mit einer Medienengine 3237 gekoppelt ist. In mindestens einem Ausführungsbeispiel umfasst die Medienengine 3237 eine Video Quality Engine (VQE) 3230 für die Video- und Bildnachbearbeitung und eine Multi-Format Encode/Decode (MFX) 3233 Engine, um eine hardwarebeschleunigte Kodierung und Dekodierung von Mediendaten zu ermöglichen. In mindestens einem Ausführungsbeispiel generieren die Geometrie-Pipeline 3236 und die Medienengine 3237 jeweils Ausführungsthreads für Thread-Ausführungsressourcen, die von mindestens einem Grafikkern 3280A bereitgestellt werden.
  • In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 3200 skalierbare Thread-Ausführungsressourcen mit modularen Kernen 3280A-3280N (manchmal als Kernabschnitte bezeichnet), die jeweils mehrere Unterkeme 3250A-550N, 3260A-3260N (manchmal als Kernabschnitte bezeichnet) aufweisen. In mindestens einem Ausführungsbeispiel kann der Grafikprozessor 3200 eine beliebige Anzahl von Grafikkernen 3280A bis 3280N haben. In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 3200 einen Grafikkern 3280A mit mindestens einem ersten Unterkern 3250A und einem zweiten Unterkern 3260A. In mindestens einem Ausführungsbeispiel ist der Grafikprozessor 3200 ein Niedrigleistungsprozessor mit einem einzigen Unterkern (z. B. 3250A). In mindestens einem Ausführungsbeispiel enthält der Grafikprozessor 3200 mehrere Grafikkerne 3280A-3280N, die jeweils einen Satz von ersten Unterkemen 3250-3250N und einen Satz von zweiten Unterkemen 3260A-3260N umfassen. In mindestens einem Ausführungsbeispiel umfasst jeder Unterkern in den ersten Unterkemen 3250A-3250N mindestens einen ersten Satz von Ausführungseinheiten 3252A-3252N und Medien/Textureinheiten 3254A-3254N. In mindestens einem Ausführungsbeispiel enthält jeder Unterkern in den zweiten Unterkemen 3260A-3260N mindestens eine zweite Gruppe von Ausführungseinheiten 3262A-3262N und Samplem 3264A-3264N. In mindestens einem Ausführungsbeispiel nutzt jeder Unterkern 3250A-3250N, 3260A-3260N gemeinsam einen Satz von gemeinsam genutzten Ressourcen 3270A-3270N. In mindestens einem Ausführungsbeispiel umfassen die gemeinsam genutzten Ressourcen einen gemeinsam genutzten Cache-Speicher und eine Pixeloperationslogik.
  • Die Inferenz- und/oder Trainingslogik 1715 wird zum Inferenzieren und/oder Trainieren von Operationen verwendet, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1715 im Grafikprozessor 3200 zum Inferenzieren oder Vorhersagen verwendet werden, basierend zumindest teilweise auf Gewichtsparametern, die unter Verwenden von Trainingsoperationen des neuronalen Netzwerks, Funktionen und/oder Architekturen des neuronalen Netzwerks oder hierin beschriebenen Anwendungsfällen des neuronalen Netzwerks berechnet wurden.
  • 33 ist ein Blockdiagramm, das die Mikroarchitektur eines Prozessors 3300 zeigt, der gemäß mindestens einem Ausführungsbeispiel logische Schaltungen zur Ausführung von Befehlen umfassen kann. In mindestens einem Ausführungsbeispiel kann der Prozessor 3300 Befehle ausführen, einschließlich x86-Befehle, ARM-Befehle, spezielle Befehle für anwendungsspezifische integrierte Schaltungen (ASICs) usw. In mindestens einem Ausführungsbeispiel kann der Prozessor 3310 Register zur Speicherung gepackter Daten umfassen, wie z. B. 64-Bit breite MMXTM-Register in Mikroprozessoren, die mit der MMX-Technologie der Intel Corporation aus Santa Clara, Kalifornien, ausgestattet sind. In mindestens einem Ausführungsbeispiel können MMX-Register, die sowohl als Ganzzahl- als auch als Gleitkommaregister verfügbar sind, mit gepackten Datenelementen betrieben werden, die Single Instruction, Multiple Data („SIMD“) und Streaming SIMD Extensions („SSE“) Anweisungen begleiten. In mindestens einem Ausführungsbeispiel können 128-Bit breite XMM-Register, die sich auf SSE2-, SSE3-, SSE4-, AVX- oder darüber hinausgehende Technologien beziehen (allgemein als „SSEx“ bezeichnet), solche gepackten Datenoperanden enthalten. In mindestens einem Ausführungsbeispiel können die Prozessoren 3310 Befehle ausführen, um Algorithmen für maschinelles Lernen oder Deep Learning, Trainieren oder Inferenzieren zu beschleunigen.
  • In mindestens einem Ausführungsbeispiel enthält der Prozessor 3300 ein in der Reihenfolge angeordnetes Front-End („Front-End“) 3301, um auszuführende Befehle zu holen und Befehle vorzubereiten, die später in der Prozessor-Pipeline verwendet werden. In mindestens einem Ausführungsbeispiel kann das Front-End 3301 mehrere Einheiten umfassen. In mindestens einem Ausführungsbeispiel holt ein Befehlsvorbereiter 3326 Befehle aus dem Speicher und leitet sie an einen Befehlsdekodierer 3328 weiter, der seinerseits Befehle dekodiert oder interpretiert. In mindestens einem Ausführungsbeispiel dekodiert der Befehlsdekodierer 3328 beispielsweise einen empfangenen Befehl in eine oder mehrere Operationen, die als „Mikrobefehle“ oder „Mikrooperationen“ (auch „Mikro-Ops“ oder „Uops“ genannt) bezeichnet werden und von der Maschine ausgeführt werden können. In mindestens einem Ausführungsbeispiel zerlegt der Befehlsdekodierer 3328 den Befehl in einen Op-Code und entsprechende Daten- und Steuerfelder, die von der Mikroarchitektur verwendet werden können, um Operationen gemäß mindestens einem Ausführungsbeispiel auszuführen. In mindestens einem Ausführungsbeispiel kann ein Spur-Cache 3330 dekodierte Uops in programmgesteuerte Sequenzen oder Spuren in einer Uop-Warteschlange 3334 zur Ausführung zusammenstellen. In mindestens einem Ausführungsbeispiel stellt ein Mikrocode-ROM 3332 Uops bereit, die zur Vervollständigung der Operation benötigt werden, wenn der Spur-Cache 3330 auf einen komplexen Befehl trifft.
  • In mindestens einem Ausführungsbeispiel können einige Befehle in einen einzigen Mikro-OP umgewandelt werden, während andere mehrere Mikro-OPs benötigen, um den Betrieb vollständig zu betreiben. In mindestens einem Ausführungsbeispiel kann der Befehlsdekodierer 3328 in mindestens einem Ausführungsbeispiel auf den Mikrocode-ROM 3332 zugreifen, wenn mehr als vier Mikro-Ops für die Ausführung eines Befehls erforderlich sind. In mindestens einem Ausführungsbeispiel kann ein Befehl in eine kleine Anzahl von Mikro-Ops zur Verarbeitung im Befehlsdekodierer 3328 dekodiert werden. In mindestens einem Ausführungsbeispiel kann ein Befehl im Mikrocode-ROM 3332 gespeichert werden, falls eine Anzahl von Mikro-OPs benötigt wird, um den Vorgang zu betreiben. In mindestens einem Ausführungsbeispiel bezieht sich der Spur-Cache 3330 auf ein programmierbares Logik-Array („PLA“) als Einstiegspunkt, um einen korrekten Mikrobefehlszeiger zum Lesen von Mikrocode-Sequenzen zu bestimmen, um einen oder mehrere Befehle aus dem Mikrocode-ROM 3332 gemäß mindestens einem Ausführungsbeispiel zu vervollständigen. In mindestens einem Ausführungsbeispiel kann das Frontend 3301 der Maschine, nachdem das Mikrocode-ROM 3332 die Sequenzierung von Mikro-Ops für einen Befehl beendet hat, das Holen von Mikro-Ops aus dem Spur-Cache 3330 wieder aufnehmen.
  • In mindestens einem Ausführungsbeispiel kann die Engine 3303 zur Ausführung von Befehlen außerhalb der Reihenfolge („out of order engine“) Anweisungen zur Ausführung vorbereiten. In mindestens einem Ausführungsbeispiel verfügt die Ausführungslogik außerhalb der Reihenfolge über eine Reihe von Puffern, um den Fluss der Befehle zu glätten und neu zu ordnen, um die Leistung zu optimieren, während sie die Pipeline hinunterlaufen und zur Ausführung geplant werden. Die Engine 3303 für die Ausführung außerhalb der Reihenfolge umfasst ohne Einschränkung einen Allokator/Register-Renamer 3340, eine Uop-Warteschlange 3342 für den Speicher, eine Uop-Warteschlange 3344 für Ganzzahl/Gleitkomma, einen Speicher-Scheduler 3346, einen schnellen Planer 3302, einen langsamen/allgemeinen Gleitkomma-Scheduler („slow/general FP scheduler“) 3304 und einen einfachen Gleitkomma-Scheduler („simple FP scheduler“) 3306. In mindestens einem Ausführungsbeispiel werden der schnelle Planer 3302, der langsame/allgemeine Gleitkomma-Scheduler 3304 und der einfache Gleitkomma-Scheduler 3306 hier auch gemeinsam als „Uop-Scheduler 3302, 3304, 3306“ bezeichnet. Der Allokator/Register-Renamer 3340 weist Maschinenpuffer und Ressourcen zu, die jeder Uop zur Ausführung benötigt. In mindestens einem Ausführungsbeispiel benennt der Allokator/Register Renamer 3340 logische Register auf Einträge in einer Registerdatei um. In mindestens einem Ausführungsbeispiel weist der Allokator/Register Renamer 3340 außerdem jedem Uop einen Eintrag in einer von zwei Uop-Warteschlangen zu, der Memory-Uop-Warteschlange 3342 für Speicheroperationen und der Integer/Floating-Point-Uop-Warteschlange 3344 für Nicht-Speicheroperationen, und zwar vor dem Memory Scheduler 3346 und den Uop Schedulern 3302, 3304, 3306. In mindestens einem Ausführungsbeispiel bestimmen die Uop-Scheduler 3302, 3304, 3306 basierend auf der Bereitschaft ihrer abhängigen Eingaberegister-Operandenquellen und der Verfügbarkeit der Ausführungsressourcen, die Uops benötigen, um ihre Operation zu vollenden, wann ein Uop ausführungsbereit ist. In mindestens einem Ausführungsbeispiel kann der schnelle Planer 3302 in jeder Hälfte des Haupttaktzyklus planen, während der langsame/allgemeine Gleitkomma-Planer 3304 und der einfache Gleitkomma-Planer 3306 einmal pro Hauptprozessortaktzyklus planen können. In mindestens einem Ausführungsbeispiel vermitteln die Uop-Scheduler 3302, 3304, 3306 für Dispatch-Ports, um Uops zur Ausführung zu planen.
  • In mindestens einem Ausführungsbeispiel enthält der Ausführungsblock b11 ohne Einschränkung ein Ganzzahlregisterdatei/Bypass-Netzwerk 3308, ein Gleitkommaregisterdatei/Bypass-Netzwerk („FP-Registerdatei/Bypass-Netzwerk“) 3310, Adressgenerierungseinheiten („AGUs“) 3312 und 3314, schnelle arithmetische Logikeinheiten (ALUs) („fast ALUs“) 3316 und 3318, eine langsame arithmetische Logikeinheit („slow ALU“) 3320, eine Gleitkomma-ALU („FP“) 3322 und eine Gleitkomma-Bewegungseinheit („FP move“) 3324. In mindestens einem Ausführungsbeispiel werden Ganzzahl-Registerdatei/Bypass-Netzwerk 3308 und Gleitkomma-Registerdatei/Bypass-Netzwerk 3310 hier auch als „Registerdateien 3308, 3310“ bezeichnet. In mindestens einem Ausführungsbeispiel werden die AGUSs 3312 und 3314, die schnellen ALUs 3316 und 3318, die langsame ALU 3320, die Gleitkomma-ALU 3322 und die Gleitkomma-Bewegungseinheit 3324 hier auch als „Ausführungseinheiten 3312, 3314, 3316, 3318, 3320, 3322 und 3324“ bezeichnet. In mindestens einem Ausführungsbeispiel kann der Ausführungsblock b11 ohne Einschränkung eine beliebige Anzahl (einschließlich Null) und Art von Registerdateien, Bypass-Netzwerken, Adressgenerierungseinheiten und Ausführungseinheiten in beliebiger Kombination enthalten.
  • In mindestens einem Ausführungsbeispiel können Registerdateien 3308, 3310 zwischen Uop-Planern 3302, 3304, 3306 und Ausführungseinheiten 3312, 3314, 3316, 3318, 3320, 3322 und 3324 angeordnet sein. In mindestens einem Ausführungsbeispiel führt das Integer-Registerdatei/Bypass-Netzwerk 3308 Integer-Operationen aus. In mindestens einem Ausführungsbeispiel führt das Gleitkomma-Registerdatei/Bypass-Netzwerk 3310 Gleitkommaoperationen aus. In mindestens einem Ausführungsbeispiel kann jede der Registerdateien 3308, 3310 ohne Einschränkung ein Bypass-Netzwerk umfassen, das gerade abgeschlossene Ergebnisse, die noch nicht in die Registerdatei geschrieben wurden, umleiten oder an neue abhängige Uops weiterleiten kann. In mindestens einem Ausführungsbeispiel können die Registerdateien 3308, 3310 Daten miteinander austauschen. In mindestens einem Ausführungsbeispiel kann das Integer-Registerdatei/Bypass-Netzwerk 3308 ohne Einschränkung zwei separate Registerdateien umfassen, eine Registerdatei für Daten mit zweiunddreißig Bit in niedriger Reihenfolge und eine zweite Registerdatei für Daten mit zweiunddreißig Bit in hoher Reihenfolge. In mindestens einem Ausführungsbeispiel kann die Registerdatei des Gleitkomma-Bypass-Netzwerks 3310 ohne Einschränkung 128 Bit breite Einträge enthalten, da Gleitkomma-Befehle typischerweise Operanden mit einer Breite von 64 bis 128 Bit haben.
  • In mindestens einem Ausführungsbeispiel können Ausführungseinheiten 3312, 3314, 3316, 3318, 3320, 3322, 3324 Befehle ausführen. In mindestens einem Ausführungsbeispiel speichern Registerdateien 3308, 3310 Ganzzahl- und Gleitkommadaten-Operandenwerte, die Mikrobefehle zur Ausführung benötigen. In mindestens einem Ausführungsbeispiel kann der Prozessor 3300 ohne Einschränkung eine beliebige Anzahl und Kombination von Ausführungseinheiten 3312, 3314, 3316, 3318, 3320, 3322, 3324 enthalten. In mindestens einem Ausführungsbeispiel können die Gleitkomma-ALU 3322 und die Gleitkomma-Bewegungseinheit 3324 Gleitkomma-, MMX-, SIMD-, AVX- und SSE- oder andere Operationen, einschließlich spezieller maschineller Lernbefehle, ausführen. In mindestens einem Ausführungsbeispiel kann die Gleitkomma-ALU 3322 ohne Einschränkung einen 64-Bit-mal-64-Bit-Gleitkomma-Teiler umfassen, um Divisions-, Quadratwurzel- und Restmikrooperationen auszuführen. In mindestens einem Ausführungsbeispiel können Befehle, die einen Gleitkommawert beinhalten, mit Gleitkomma-Hardware verarbeitet werden. In mindestens einem Ausführungsbeispiel können ALU-Operationen an schnelle ALUs 3316, 3318 weitergegeben werden. In mindestens einem Ausführungsbeispiel können schnelle ALUS 3316, 3318 schnelle Operationen mit einer effektiven Latenzzeit von einem halben Taktzyklus betreiben. In mindestens einem Ausführungsbeispiel gehen die meisten komplexen ganzzahligen Operationen an die langsame ALU 3320, da die langsame ALU 3320 ohne Einschränkung ganzzahlige Ausführungshardware für Operationen mit langer Latenzzeit enthalten kann, wie z. B. einen Multiplizierer, Verschiebungen, Flag-Logik und Verzweigungsverarbeitung. In mindestens einem Ausführungsbeispiel können Speicherlade-/Speicheroperationen von AGUS 312, 3314 ausgeführt werden. In mindestens einem Ausführungsbeispiel können die schnelle ALU 3316, die schnelle ALU 3318 und die langsame ALU 3320 Ganzzahloperationen mit 64-Bit-Datenoperanden betreiben. In mindestens einem Ausführungsbeispiel können die schnelle ALU 3316, die schnelle ALU 3318 und die langsame ALU 3320 implementiert werden, um eine Vielzahl von Datenbitgrößen zu unterstützen, darunter sechzehn, zweiunddreißig, 128, 256 usw. In mindestens einem Ausführungsbeispiel können die Gleitkomma-ALU 3322 und die Gleitkomma-Bewegungseinheit 3324 so implementiert werden, dass sie einen Bereich von Operanden mit Bits verschiedener Breite unterstützen. In mindestens einem Ausführungsbeispiel können die Gleitkomma-ALU 3322 und die Gleitkomma-Bewegungseinheit 3324 mit 128 Bit breiten gepackten Datenoperanden in Verbindung mit SIMD- und Multimedia-Befehlen betrieben werden.
  • In mindestens einem Ausführungsbeispiel planen die Uop Planer 3302, 3304, 3306 abhängige Operationen, bevor die Ausführung der übergeordneten Last beendet ist. In mindestens einem Ausführungsbeispiel, in dem Uops spekulativ geplant und im Prozessor 3300 ausgeführt werden, kann der Prozessor 3300 auch eine Logik zur Behandlung von Fehlversuchen im Speicher enthalten. In mindestens einem Ausführungsbeispiel können bei einem Fehlversuch einer Datenlast im Datencache abhängige Operationen in der Pipeline vorhanden sein, die den Planer mit vorübergehend falschen Daten zurückgelassen haben. In mindestens einem Ausführungsbeispiel führt ein Wiederholungsmechanismus Befehle, die falsche Daten verwenden, erneut aus und führt sie erneut aus. In mindestens einem Ausführungsbeispiel kann es sein, dass abhängige Operationen erneut ausgeführt werden müssen und unabhängige Operationen zu Ende geführt werden können. In mindestens einem Ausführungsbeispiel können Planer und Wiederholungsmechanismen mindestens eines Ausführungsbeispiels eines Prozessors auch so gestaltet sein, dass sie Befehlssequenzen für Textstring-Vergleichsoperationen abfangen.
  • In mindestens einem Ausführungsbeispiel kann sich der Begriff „Register“ auf prozessorinteme Speicherplätze beziehen, die als Teil von Befehlen verwendet werden können, um Operanden zu identifizieren. In mindestens einem Ausführungsbeispiel kann es sich bei den Registern um solche handeln, die von außerhalb des Prozessors (aus der Sicht eines Programmierers) verwendet werden können. In mindestens einem Ausführungsbeispiel können die Register nicht auf einen bestimmten Typ von Schaltung beschränkt sein. Vielmehr kann ein Register in mindestens einem Ausführungsbeispiel Daten speichern, Daten bereitstellen und die hierin beschriebenen Funktionen ausführen. In mindestens einem Ausführungsbeispiel können die hierin beschriebenen Register in einer Schaltungsanordnung innerhalb eines Prozessors unter Verwenden einer beliebigen Anzahl verschiedener Techniken implementiert werden, wie z. B. dedizierte physische Register, dynamisch zugewiesene physische Register unter Verwenden von Registerumbenennung, Kombinationen aus dedizierten und dynamisch zugewiesenen physischen Registern usw. In mindestens einem Ausführungsbeispiel werden in Ganzzahlregistern 32-Bit-Ganzzahldaten gespeichert. Eine Registerdatei in mindestens einem Ausführungsbeispiel enthält auch acht Multimedia-SIMD-Register für gepackte Daten.
  • Die Inferenz- und/oder Trainingslogik 1715 wird zum Inferenzieren und/oder Trainieren von Operationen verwendet, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel können Teile oder die Gesamtheit der Inferenz- und/oder Trainingslogik 1715 in den EXE-Block 3311 und andere gezeigte oder nicht gezeigte Speicher oder Register integriert werden. In mindestens einem Ausführungsbeispiel können die hier beschriebenen Techniken zum Trainieren und/oder Inferenzieren eine oder mehrere der in EXE-Block 3311 gezeigten ALUs verwenden. Darüber hinaus können Gewichtungsparameter in On-Chip- oder Off-Chip-Speicher und/oder Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des EXE-Blocks 3311 konfigurieren, um einen oder mehrere hierin beschriebene maschinelle Lernalgorithmen, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • 34 zeigt gemäß mindestens einem Ausführungsbeispiel einen Deep Learning-Anwendungsprozessor 3400. In mindestens einem Ausführungsbeispiel verwendet der Deep Learning-Anwendungsprozessor 3400 Befehle, die, wenn sie vom Deep Learning-Anwendungsprozessor 3400 ausgeführt werden, bewirken, dass der Deep Learning-Anwendungsprozessor 3400 einige oder alle der in dieser Offenbarung beschriebenen Prozesse und Techniken durchführt. In mindestens einem Ausführungsbeispiel handelt es sich bei dem Deep Learning-Anwendungsprozessor 3400 um eine anwendungsspezifische integrierte Schaltung (ASIC). In mindestens einem Ausführungsbeispiel führt der Anwendungsprozessor 3400 Matrixmultiplikationsoperationen entweder „fest verdrahtet“ in der Hardware als Ergebnis der Ausführung einer oder mehrerer Anweisungen oder beides durch. In mindestens einem Ausführungsbeispiel umfasst der Deep Learning-Anwendungsprozessor 3400 ohne Einschränkung Verarbeitungscluster 3410(1)-3410(12), Inter-Chip-Verbindungen („ICLs“) 3420(1)-3420(12), Inter-Chip-Steuergeräte („ICCs“) 3430(1)-3430(2), Speicher mit hoher Bandbreite der zweiten Generation („HBM2“) 3440(1)-3440(4), Speichersteuergeräte („Mem Ctrlrs“) 3442(1)-3442(4), physikalische Schicht mit hoher Bandbreite („HBM PHY“) 3444(1)-3444(4), eine Management-Controller-Zentraleinheit („Management-Controller-CPU“) 3450, einen Block für serielle periphere Schnittstellen, integrierte Schaltungen und allgemeine Eingaben/Ausgaben („SPI, I2C, GPIO“) 3460, ein Express-Steuergerät für periphere Komponentenverbindungen und einen Block für direkten Speicherzugriff („PCIe-Controller und DMA“) 3470 und einen Express-Port für periphere Komponentenverbindungen mit sechzehn Lanes („PCI Express x 16“) 3480.
  • In mindestens einem Ausführungsbeispiel können Verarbeitungscluster 3410 Operationen für Deep Learning betreiben, einschließlich Inferenz- oder Vorhersageoperationen basierend auf Gewichtsparametern, die auf einer oder mehreren Trainingstechniken, einschließlich der hierin beschriebenen, berechnet wurden. In mindestens einem Ausführungsbeispiel kann jeder Verarbeitungscluster 3410 ohne Einschränkung eine beliebige Anzahl und Art von Prozessoren enthalten. In mindestens einem Ausführungsbeispiel kann der Deep-Learning-Anwendungsprozessor 3400 eine beliebige Anzahl und Art von Verarbeitungsclustern 3400 enthalten. In mindestens einem Ausführungsbeispiel sind die Inter-Chip-Verbindungen 3420 bidirektional. In mindestens einer Ausführungsbeispiel ermöglichen Inter-Chip Links 3420 und Inter-Chip Steuergeräte 3430 mehreren Deep Learning Anwendungsprozessoren 3400 den Austausch von Informationen, einschließlich Aktivierungsinformationen, die aus der Durchführung eines oder mehrerer maschineller Lernalgorithmen resultieren, die in einem oder mehreren neuronalen Netzwerken verkörpert sind. In mindestens einem Ausführungsbeispiel kann der Deep Learning-Anwendungsprozessor 3400 eine beliebige Anzahl (einschließlich Null) und einen beliebigen Typ von ICLs 3420 und ICCs 3430 umfassen.
  • In mindestens einem Ausführungsbeispiel stellen die HBM2s 3440 insgesamt 32 Gigabyte (GB) Speicher zur Verfügung. HBM2 3440(i) ist sowohl mit dem Speichersteuergerät 3442(i) als auch mit dem HBM PHY 3444(i) assoziiert. In mindestens einem Ausführungsbeispiel kann eine beliebige Anzahl von HBM2 3440 einen beliebigen Typ und eine beliebige Gesamtmenge von Speicher mit hoher Bandbreite bereitstellen und mit einer beliebigen Anzahl (einschließlich Null) und einem beliebigen Typ von Speichersteuergeräten 3442 und HBM PHYs 3444 assoziiert sein. In mindestens einem Ausführungsbeispiel können SPI, 12C, GPIO 3460, PCIe Steuergerät und DMA 3470 und/oder PCIe 3480 durch eine beliebige Anzahl und Art von Blöcken ersetzt werden, die eine beliebige Anzahl und Art von Kommunikationsstandards in einer technisch geeigneten Weise ermöglichen.
  • Die Inferenz- und/oder Trainingslogik 1715 wird verwendet, um Inferenzieren und/oder Trainieren in Verbindung mit einem oder mehreren Ausführungsbeispielen durchzuführen. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B bereitgestellt. In mindestens einem Ausführungsbeispiel wird der Deep Learning-Anwendungsprozessor dazu verwendet, ein maschinelles Lemmodell, wie z. B. ein neuronales Netzwerk, zu trainieren, um Informationen vorherzusagen oder zu inferieren, die dem Deep Learning-Anwendungsprozessor 3400 zur Verfügung gestellt werden. In mindestens einem Ausführungsbeispiel wird der Deep Learning-Anwendungsprozessor 3400 verwendet, um basierend auf einem trainierten maschinellen Lernmodell (z. B. einem neuronalen Netzwerk), das von einem anderen Prozessor oder System oder vom Deep Learning-Anwendungsprozessor 3400 trainiert wurde, Informationen zu inferieren oder vorherzusagen. In mindestens einem Ausführungsbeispiel kann der Prozessor 3400 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für ein neuronales Netzwerk durchzuführen.
  • 35 ist ein Blockdiagramm eines neuromorphen Prozessors 3500 gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann der neuromorphe Prozessor 3500 eine oder mehrere Eingaben von Quellen außerhalb des neuromorphen Prozessors 3500 empfangen. In mindestens einem Ausführungsbeispiel können diese Eingaben an ein oder mehrere Neuronen 3502 innerhalb des neuromorphen Prozessors 3500 übertragen werden. In mindestens einem Ausführungsbeispiel können die Neuronen 3502 und ihre Komponenten unter Verwenden von Schaltungsanordnungen oder Logik implementiert werden, die eine oder mehrere arithmetische Logikeinheiten (ALUs) umfassen. In mindestens einem Ausführungsbeispiel kann der neuromorphe Prozessor 3500 ohne Einschränkung Tausende oder Millionen von Instanzen von Neuronen 3502 umfassen, aber es kann jede geeignete Anzahl von Neuronen 3502 verwendet werden. In mindestens einem Ausführungsbeispiel kann jede Instanz des Neurons 3502 eine Eingabe 3504 und eine Ausgabe 3506 umfassen. In mindestens einem Ausführungsbeispiel können die Neuronen 3502 Ausgaben generieren, die an Eingaben anderer Instanzen von Neuronen 3502 übertragen werden können. In mindestens einem Ausführungsbeispiel können beispielsweise die Eingaben der Neuronen 3504 und die Ausgaben der Neuronen 3506 über Synapsen 3508 miteinander verbunden sein.
  • In mindestens einem Ausführungsbeispiel können die Neuronen 3502 und die Synapsen 3508 so miteinander verbunden sein, dass der neuromorphe Prozessor 3500 die Verarbeitung oder Analyse der vom neuromorphen Prozessor 3500 empfangenen Informationen betreibt. In mindestens einem Ausführungsbeispiel können die Neuronen 3502 einen Ausgabeimpuls (oder „Feuer“ oder „Spike“) senden, wenn die über die Neuroneneingabe 3504 empfangenen Eingaben einen Schwellenwert überschreiten. In mindestens einem Ausführungsbeispiel können die Neuronen 3502 die an den Neuroneneingängen 3504 empfangenen Signale summieren oder integrieren. In mindestens einem Ausführungsbeispiel können die Neuronen 3502 beispielsweise als undichte Integrations- und Feuerneuronen implementiert werden, wobei das Neuron 3502 in mindestens einem Ausführungsbeispiel eine Ausgabe (oder „Feuer“) generieren kann, wenn eine Summe (als „Membranpotential“ bezeichnet) einen Schwellenwert überschreitet, wobei eine Übertragungsfunktion wie eine Sigmoid- oder Schwellenfunktion verwendet wird. In mindestens einem Ausführungsbeispiel kann ein „leaky integrate-and-fire“-Neuron die an den Neuroneneingängen 3504 empfangenen Signale zu einem Membranpotenzial summieren und auch einen Abklingfaktor (oder ein Leck) anwenden, um ein Membranpotenzial zu reduzieren. In mindestens einem Ausführungsbeispiel kann ein „leaky integrate-and-fire“-Neuron feuern, wenn mehrere Eingangssignale an den Neuroneneingängen 3504 schnell genug empfangen werden, um einen Schwellenwert zu überschreiten (d. h. bevor ein Membranpotenzial zu niedrig abklingt, um zu feuern). In mindestens einem Ausführungsbeispiel können die Neuronen 3502 unter Verwenden von Schaltungen oder Logik implementiert werden, die Eingaben empfangen, Eingaben in ein Membranpotential integrieren und ein Membranpotential abklingen lassen. In mindestens einem Ausführungsbeispiel können die Eingaben gemittelt werden, oder es kann eine andere geeignete Übertragungsfunktion verwendet werden. Darüber hinaus können in mindestens einem Ausführungsbeispiel die Neuronen 3502 ohne Einschränkung Komparatorschaltungen oder eine Logik enthalten, die eine Ausgangsspitze an der neuronalen Ausgabe 3506 generieren, wenn das Ergebnis der Anwendung einer Übertragungsfunktion auf die neuronale Eingabe 3504 einen Schwellenwert überschreitet. In mindestens einem Ausführungsbeispiel kann das Neuron 3502, sobald es feuert, zuvor empfangene Eingaben außer Acht lassen, indem es beispielsweise ein Membranpotenzial auf 0 oder einen anderen geeigneten Standardwert zurücksetzt. In mindestens einem Ausführungsbeispiel kann das Neuron 3502, sobald das Membranpotenzial auf 0 zurückgesetzt ist, nach einer geeigneten Zeitspanne (oder Refraktärzeit) den normalen Betrieb wieder aufnehmen.
  • In mindestens einem Ausführungsbeispiel können die Neuronen 3502 über Synapsen 3508 miteinander verbunden sein. In mindestens einem Ausführungsbeispiel können Synapsen 3508 betrieben werden, um Signale von einer Ausgabe eines ersten Neurons 3502 zu einer Eingabe eines zweiten Neurons 3502 zu übertragen. In mindestens einem Ausführungsbeispiel können die Neuronen 3502 Informationen über mehr als eine Instanz der Synapse 3508 übertragen. In mindestens einem Ausführungsbeispiel können ein oder mehrere Ausführungsbeispiele der neuronalen Ausgabe 3506 über ein Ausführungsbeispiel der Synapse 3508 mit einem Ausführungsbeispiel der neuronalen Eingabe 3504 in demselben Neuron 3502 verbunden sein. In mindestens einem Ausführungsbeispiel kann ein Neuron 3502, das eine über eine Synapse 3508 zu übertragende Ausgabe generiert, als „präsynaptisches Neuron“ in Bezug auf diese Synapse 3508 bezeichnet werden. In mindestens einem Ausführungsbeispiel kann ein Neuron 3502, das eine über eine Synapse 3508 übertragene Eingabe empfängt, als „postsynaptisches Neuron“ in Bezug auf diese Synapse 3508 bezeichnet werden. Da ein Neuron 3502 Eingaben von einer oder mehreren Synapseninstanzen 3508 empfangen und auch Ausgaben über eine oder mehrere Synapseninstanzen 3508 übertragen kann, kann ein einzelnes Neuron 3502 in mindestens einem Ausführungsbeispiel sowohl ein „präsynaptisches Neuron“ als auch ein „postsynaptisches Neuron“ in Bezug auf verschiedene Synapseninstanzen 3508 sein.
  • In mindestens einem Ausführungsbeispiel können die Neuronen 3502 in einer oder mehreren Schichten organisiert sein. Jede Instanz des Neurons 3502 kann eine Neuronenausgabe 3506 haben, die sich über eine oder mehrere Synapsen 3508 zu einer oder mehreren Eingaben 3504 auffächern kann. In mindestens einem Ausführungsbeispiel können die Ausgaben 3506 der Neuronen 3502 in einer ersten Schicht 3510 mit den Eingaben 3504 der Neuronen 3502 in einer zweiten Schicht 3512 verbunden sein. In mindestens einem Ausführungsbeispiel kann die Schicht 3510 als „Feed-Forward-Schicht“ bezeichnet werden. In mindestens einem Ausführungsbeispiel kann sich jedes Neuron 3502 in einem Ausführungsbeispiel der ersten Schicht 3510 zu jedem Neuron 3502 in der zweiten Schicht 3512 auffächern. In mindestens einem Ausführungsbeispiel kann die erste Schicht 3510 als „vollständig vernetzte vorwärtsgerichtete Schicht“ bezeichnet werden. In mindestens einem Ausführungsbeispiel kann jedes Ausführungsbeispiel des Neurons 3502 in einem Ausführungsbeispiel der zweiten Schicht 3512 zu weniger als allen Ausführungsbeispielen des Neurons 3502 in einer dritten Schicht 3514 auffächern. In mindestens einem Ausführungsbeispiel kann die zweite Schicht 3512 als „spärlich verbundene Vorwärtsschicht“ bezeichnet werden. In mindestens einem Ausführungsbeispiel können sich die Neuronen 3502 in der zweiten Schicht 3512 auf Neuronen 3502 in mehreren anderen Schichten ausbreiten, in mindestens einem Ausführungsbeispiel auch auf Neuronen 3502 in (derselben) zweiten Schicht 3512. In mindestens einem Ausführungsbeispiel kann die zweite Schicht 3512 als eine „rekurrente Schicht“ bezeichnet werden. Der neuromorphe Prozessor 3500 kann ohne Einschränkung jede geeignete Kombination von rekurrenten Schichten und Vorwärtsschichten umfassen, einschließlich, ohne Einschränkung, sowohl spärlich vernetzter Vorwärtsschichten als auch vollständig vernetzter Vorwärtsschichten.
  • In mindestens einem Ausführungsbeispiel kann der neuromorphe Prozessor 3500 ohne Einschränkung eine rekonfigurierbare Verbindungsarchitektur oder dedizierte festverdrahtete Verbindungen enthalten, um die Synapse 3508 mit den Neuronen 3502 zu verbinden. In mindestens einem Ausführungsbeispiel kann der neuromorphe Prozessor 3500 ohne Einschränkung eine Schaltungsanordnung oder Logik umfassen, die es ermöglicht, Synapsen je nach Bedarf basierend auf der Topologie des neuronalen Netzwerks und dem Fan-in/out von Neuronen verschiedenen Neuronen 3502 zuzuordnen. In mindestens einem Ausführungsbeispiel können die Synapsen 3508 mit den Neuronen 3502 verbunden werden, indem ein Netzwerk verwendet wird, wie z. B. ein Network-on-Chip, oder mit dedizierten Verbindungen. In mindestens einem Ausführungsbeispiel können die Synapsenverbindungen und ihre Komponenten unter Verwenden von Schaltungsanordnungen oder Logik implementiert werden.
  • 36 ist ein Blockdiagramm eines Verarbeitungssystems, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel enthält das System 3600 einen oder mehrere Prozessoren 3602 und einen oder mehrere Grafikprozessoren 3608 und kann ein Einzelprozessor-Desktop-System, ein Multiprozessor-Workstation-System oder ein Server-System mit einer großen Anzahl von Prozessoren 3602 oder Prozessorkernen 3607 umfassen. In mindestens einem Ausführungsbeispiel ist das System 3600 eine Verarbeitungsplattform, die in eine integrierte Schaltung eines System-on-a-Chip (SoC) zur Verwendung in mobilen, tragbaren oder eingebetteten Geräten integriert ist.
  • In mindestens einem Ausführungsbeispiel kann das System 3600 eine serverbasierte Spielplattform, eine Spielkonsole, einschließlich einer Spiel- und Medienkonsole, eine mobile Spielkonsole, eine Handheld-Spielkonsole oder eine Online-Spielkonsole enthalten oder darin integriert sein. In mindestens einem Ausführungsbeispiel ist das System 3600 ein Mobiltelefon, Smartphone, Tablet-Rechengerät oder mobiles Internetgerät. In mindestens einem Ausführungsbeispiel kann das Verarbeitungssystem 3600 auch ein tragbares Gerät umfassen, mit diesem gekoppelt oder in ein solches integriert sein, wie z. B. ein tragbares Gerät für eine intelligente Uhr, eine intelligente Brille, ein Augmented-Reality-Gerät oder ein Virtual-Reality-Gerät. In mindestens einem Ausführungsbeispiel ist das Verarbeitungssystem 3600 ein Fernsehgerät oder eine Set-Top-Box mit einem oder mehreren Prozessoren 3602 und einer grafischen Schnittstelle, die von einem oder mehreren Grafikprozessoren 3608 generiert wird.
  • In mindestens einem Ausführungsbeispiel umfassen ein oder mehrere Prozessoren 3602 jeweils einen oder mehrere Prozessorkerne 3607 zur Verarbeitung von Befehlen, die, wenn sie ausgeführt werden, Operationen für System- und Benutzersoftware durchführen. In mindestens einem Ausführungsbeispiel ist jeder von einem oder mehreren Prozessorkernen 3607 konfiguriert, um einen bestimmten Befehlssatz 3609 zu verarbeiten. In mindestens einem Ausführungsbeispiel kann der Befehlssatz 3609 das Complex Instruction Set Computing (CISC), das Reduced Instruction Set Computing (RISC) oder das Rechnen über ein Very Long Instruction Word (VLIW) ermöglichen. In mindestens einem Ausführungsbeispiel können die Prozessorkerne 3607 jeweils einen anderen Befehlssatz 3609 verarbeiten, der Befehle enthalten kann, die die Emulation anderer Befehlssätze erleichtern. In mindestens einem Ausführungsbeispiel kann der Prozessorkern 3607 auch andere verarbeitende Geräte, wie z.B. einen digitalen Signalprozessor (DSP), enthalten.
  • In mindestens einem Ausführungsbeispiel enthält der Prozessor 3602 einen Cache-Speicher 3604. In mindestens einem Ausführungsbeispiel kann der Prozessor 3602 einen einzigen internen Cache oder mehrere Ebenen von internen Caches aufweisen. In mindestens einem Ausführungsbeispiel wird der Cache-Speicher von verschiedenen Komponenten des Prozessors 3602 gemeinsam genutzt. In mindestens einem Ausführungsbeispiel verwendet der Prozessor 3602 auch einen externen Cache (z.B. einen Level-3 (L3) Cache oder Last Level Cache (LLC)) (nicht gezeigt), der von den Prozessorkernen 3607 gemeinsam genutzt werden kann, indem bekannte Cache-Kohärenztechniken verwendet werden. In mindestens einem Ausführungsbeispiel ist zusätzlich eine Registerdatei 3606 im Prozessor 3602 enthalten, die verschiedene Arten von Registern zur Speicherung unterschiedlicher Datentypen umfassen kann (z. B. Ganzzahlregister, Gleitkommaregister, Statusregister und ein Zeigerregister für Anweisungen). In mindestens einem Ausführungsbeispiel kann die Registerdatei 3606 allgemeine Register oder andere Register enthalten.
  • In mindestens einem Ausführungsbeispiel ist (sind) ein oder mehrere Prozessor(en) 3602 mit einem oder mehreren Schnittstellenbus(en) 3610 gekoppelt, um Kommunikationssignale wie Adress-, Daten- oder Steuersignale zwischen dem Prozessor 3602 und anderen Komponenten im System 3600 zu übertragen. In mindestens einem Ausführungsbeispiel kann der Schnittstellenbus 3610 ein Prozessorbus sein, wie beispielsweise eine Version eines Direct Media Interface (DMI)-Busses. In mindestens einem Ausführungsbeispiel ist die Schnittstelle 3610 nicht auf einen DMI-Bus beschränkt und kann einen oder mehrere Peripheral Component Interconnect-Busse (z. B. PCI, PCI Express), Speicherbusse oder andere Arten von Schnittstellenbussen umfassen. In mindestens einem Ausführungsbeispiel enthalten Prozessor(en) 3602 ein integriertes Speichersteuergerät 3616 und einen Plattformsteuerungs-Hub 3630. In mindestens einem Ausführungsbeispiel erleichtert die Speichersteuerung 3616 die Kommunikation zwischen einem Speichergerät und anderen Komponenten des Systems 3600, während der Plattformsteuerungs-Hub (PCH) 3630 Verbindungen zu E/A-Geräten über einen lokalen E/A-Bus bereitstellt.
  • In mindestens einem Ausführungsbeispiel kann das Speichergerät 3620 ein Dynamic Random Access Memory (DRAM)-Gerät, ein statisches Random Access Memory (SRAM)-Gerät, ein Flash-Speichergerät, ein Phase-Change-Speichergerät oder ein anderes Speichergerät mit geeigneter Leistung sein, um als Prozessspeicher zu dienen. In mindestens einem Ausführungsbeispiel kann das Speichergerät 3620 als Systemspeicher für das System 3600 betrieben werden, um Daten 3622 und Anweisungen 3621 zur Verwendung zu speichern, wenn ein oder mehrere Prozessoren 3602 eine Anwendung oder einen Prozess ausführen. In mindestens einem Ausführungsbeispiel koppelt das Speichersteuergerät 3616 auch mit einem optionalen externen Grafikprozessor 3612, der mit einem oder mehreren Grafikprozessoren 3608 in den Prozessoren 3602 kommunizieren kann, um Grafik- und Medienoperationen durchzuführen. In mindestens einem Ausführungsbeispiel kann ein Anzeigegerät 3611 mit Prozessor(en) 3602 verbunden werden. In mindestens einem Ausführungsbeispiel kann das Ausführungsbeispiel 3611 ein oder mehrere interne Geräte, wie z. B. ein mobiles elektronisches Gerät oder einen Laptop, oder ein externes Anzeigegerät umfassen, das über eine Anzeigeschnittstelle (z. B. DisplayPort usw.) angeschlossen ist. In mindestens einem Ausführungsbeispiel kann die Anzeigevorrichtung 3611 eine kopfmontierte Anzeige (HMD) wie eine stereoskopische Anzeigevorrichtung zur Verwendung in Virtual-Reality- (VR) Anwendungen oder Augmented-Reality- (AR) Anwendungen umfassen.
  • In mindestens einem Ausführungsbeispiel ermöglicht der Plattformsteuerungs-Hub 3630 den Anschluss von Peripheriegeräten an das Speichergerät 3620 und den Prozessor 3602 über einen Hochgeschwindigkeits-E/A-Bus. In mindestens einem Ausführungsbeispiel umfassen die E/A-Peripheriegeräte unter anderem ein Audio-Steuergerät 3646, eine Netzwerkschnittstelle 3634, eine Firmware-Schnittstelle 3628, einen drahtlosen Transceiver 3626, Berührungssensoren 3625 und ein Speichergerät 3624 (z. B. eine Festplatte, einen Flash-Speicher usw.). In mindestens einem Ausführungsbeispiel kann das Gerät 3624 über eine Speicherschnittstelle (z. B. SATA) oder über einen Peripheriebus, wie einen Peripheral Component Interconnect Bus (z. B. PCI, PCI Express), angeschlossen werden. In mindestens einem Ausführungsbeispiel können die Berührungssensoren 3625 Touchscreen-Sensoren, Drucksensoren oder Fingerabdrucksensoren umfassen. In mindestens einem Ausführungsbeispiel kann der drahtlose Transceiver 3626 ein Wi-Fi-Transceiver, ein Bluetooth-Transceiver oder ein Transceiver für ein mobiles Netzwerk wie ein 3G-, 4G- oder Long Term Evolution (LTE)-Transceiver sein. In mindestens einem Ausführungsbeispiel ermöglicht die Firmware-Schnittstelle 3628 die Kommunikation mit der System-Firmware und kann z. B. eine einheitliche erweiterbare Firmware-Schnittstelle (UEFI) sein. In mindestens einem Ausführungsbeispiel kann das Netzwerk-Steuergerät 3634 eine Netzwerkverbindung mit einem kabelgebundenen Netzwerk ermöglichen. In mindestens einem Ausführungsbeispiel ist ein leistungsstarkes Netzwerk-Steuergerät (nicht dargestellt) mit dem Schnittstellenbus 3610 gekoppelt. In mindestens einem Ausführungsbeispiel ist das Audio-Steuergerät 3646 ein Mehrkanal-High-Definition-Audio-Steuergerät. In mindestens einem Ausführungsbeispiel enthält das System 3600 ein optionales System-E/A-Steuergerät 3640 zum Anschluss von älteren Geräten (z. B. Personal System 2 (PS/2)) an das System. In mindestens einem Ausführungsbeispiel kann der Plattformsteuerungs-Hub 3630 auch mit einem oder mehreren Universal Serial Bus (USB)-Steuergeräten 3642 verbunden werden, um Eingabegeräte, wie Tastatur- und Mauskombinationen 3643, eine Kamera 3644 oder andere USB-Eingabegeräte anzuschließen.
  • In mindestens einem Ausführungsbeispiel kann eine Instanz des Speichersteuergeräts 3616 und des Plattformsteuerungs-Hubs 3630 in einen diskreten externen Grafikprozessor, wie den externen Grafikprozessor 3612, integriert sein. In mindestens einem Ausführungsbeispiel können Plattformsteuerungs-Hub 3630 und/oder Speichersteuerung 3616 extern zu einem oder mehreren Prozessor(en) 3602 sein. In mindestens einem Ausführungsbeispiel kann das System 3600 beispielsweise einen externen Speichersteuerungs-Hub 3616 und einen Plattformsteuerungs-Hub 3630 umfassen, der als Speichersteuerungs-Hub und als Peripherie-Steuerungs-Hub innerhalb eines System-Chipsatzes konfiguriert sein kann, der mit dem/den Prozessor(en) 3602 in Verbindung steht.
  • Die Inferenz- und/oder Trainingslogik 1715 wird zum Inferenzieren und/oder Trainieren von Operationen verwendet, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel können Teile oder die Gesamtheit der Inferenz- und/oder Trainingslogik 1715 in den Grafikprozessor 3600 integriert werden. Zum Beispiel können in mindestens einem Ausführungsbeispiel die hier beschriebenen Techniken zum Trainieren und/oder Inferenzieren eine oder mehrere ALUs verwenden, die in der 3D-Pipeline 3612 enthalten sind. Darüber hinaus können in mindestens einem Ausführungsbeispiel die hierin beschriebenen Inferenzieren- und/oder Trainingsoperationen unter Verwenden einer anderen als der in 17A oder 17B gezeigten Logik durchgeführt werden. In mindestens einem Ausführungsbeispiel können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder Registern (dargestellt oder nicht dargestellt) gespeichert werden, die ALUs des Grafikprozessors 3600 konfigurieren, um einen oder mehrere hierin beschriebene maschinelle Lernalgorithmen, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • 37 ist ein Blockdiagramm eines Prozessors 3700 mit einem oder mehreren Prozessorkernen 3702A-3702N, einem integrierten Speichersteuergerät 3714 und einem integrierten Grafikprozessor 3708 gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann der Prozessor 3700 zusätzliche Kerne bis zu und einschließlich des zusätzlichen Kerns 3702N enthalten, die durch gestrichelte Kästen repräsentiert werden. In mindestens einem Ausführungsbeispiel umfasst jeder der Prozessorkerne 3702A-3702N eine oder mehrere interne Cache-Einheiten 3704A-3704N. In mindestens einem Ausführungsbeispiel hat jeder Prozessorkern auch Zugriff auf eine oder mehrere gemeinsam genutzte Cache-Einheiten 3706.
  • In mindestens einem Ausführungsbeispiel repräsentieren interne Cache-Einheiten 3704A-3704N und gemeinsam genutzte Cache-Einheiten 3706 eine Cache-Speicherhierarchie innerhalb des Prozessors 3700. In mindestens einem Ausführungsbeispiel können die Cache-Speichereinheiten 3704A-3704N mindestens eine Ebene von Befehls- und Datencache innerhalb jedes Prozessorkerns und eine oder mehrere Ebenen von gemeinsam genutztem Mid-Level-Cache, wie Level-2 (L2), Level-3 (L3), Level-4 (L4) oder andere Cache-Ebenen, umfassen, wobei die höchste Cache-Ebene vor dem externen Speicher als LLC klassifiziert ist. In mindestens einem Ausführungsbeispiel hält die Cache-Kohärenzlogik die Kohärenz zwischen verschiedenen Cache-Einheiten 3706 und 3704A-3704N aufrecht.
  • In mindestens einem Ausführungsbeispiel kann der Prozessor 3700 auch einen Satz von einer oder mehreren Bussteuerungseinheiten 3716 und einen Systemdienst-Kern 3710 enthalten. In mindestens einem Ausführungsbeispiel verwalten ein oder mehrere Bussteuerungseinheiten 3716 einen Satz von Peripheriebussen, wie einen oder mehrere PCI- oder PCI-Express-Busse. In mindestens einem Ausführungsbeispiel bietet der Systemdienst-Kern 3710 eine Verwaltungsfunktionalität für verschiedene Prozessorkomponenten. In mindestens einem Ausführungsbeispiel umfasst der Systemdienst-Kern 3710 ein oder mehrere integrierte Speichersteuergeräte 3714 zur Verwaltung des Zugriffs auf verschiedene externe Speichergeräte (nicht dargestellt).
  • In mindestens einem Ausführungsbeispiel enthält einer oder mehrere der Prozessorkerne 3702A-3702N Unterstützung für simultanes Multithreading. In mindestens einem Ausführungsbeispiel umfasst der Systemdienst-Kern 3710 Komponenten zur Koordinierung und zum Betrieb der Kerne 3702A-3702N während der Multithreading-Verarbeitung. In mindestens einem Ausführungsbeispiel kann der Systemdienst-Kern 3710 zusätzlich eine Leistungssteuerungseinheit (PCU) umfassen, die Logik und Komponenten zur Regelung eines oder mehrerer Leistungszustände der Prozessorkerne 3702A-3702N und des Grafikprozessors 3708 enthält.
  • In mindestens einem Ausführungsbeispiel umfasst der Prozessor 3700 zusätzlich den Grafikprozessor 3708 zur Ausführung von Grafikverarbeitungsoperationen. In mindestens einem Ausführungsbeispiel ist der Grafikprozessor 3708 mit gemeinsam genutzten Cache-Einheiten 3706 und einem Systemdienst-Kern 3710 gekoppelt, der ein oder mehrere integrierte Speichersteuergeräte 3714 enthält. In mindestens einem Ausführungsbeispiel umfasst der Systemdienst-Kern 3710 auch ein Anzeigensteuergerät 3711 zur Bewegung der Grafikprozessor-Ausgabe an eine oder mehrere gekoppelte Anzeigen. In mindestens einem Ausführungsbeispiel kann die Anzeigensteuerung 3711 auch ein separates Modul sein, das über mindestens eine Verbindung mit dem Grafikprozessor 3708 verbunden ist, oder sie kann in den Grafikprozessor 3708 integriert sein.
  • In mindestens einem Ausführungsbeispiel wird eine auf einem Ring basierende Verbindungseinheit 3712 verwendet, um interne Komponenten des Prozessors 3700 zu verbinden. In mindestens einem Ausführungsbeispiel kann eine alternative Verbindungseinheit verwendet werden, wie z.B. eine Punkt-zu-Punkt-Verbindung, eine Switch-Verbindung oder andere Techniken. In mindestens einem Ausführungsbeispiel ist der Grafikprozessor 3708 über eine E/A-Verbindung 3713 mit der Ringverbindung 3712 verbunden.
  • In mindestens einem Ausführungsbeispiel repräsentiert die E/A-Verbindung 3713 mindestens eine von mehreren Arten von E/A-Verbindungen, einschließlich einer E/A-Verbindung auf dem Gehäuse, die die Kommunikation zwischen verschiedenen Prozessorkomponenten und einem eingebetteten Hochleistungsspeichermodul 3718, wie einem eDRAM-Modul, erleichtert. In mindestens einem Ausführungsbeispiel verwenden jeder der Prozessorkerne 3702A-3702N und der Grafikprozessor 3708 eingebettete Speichermodule 3718 als gemeinsam genutzten Last Level Cache.
  • In mindestens einem Ausführungsbeispiel sind die Prozessorkerne 3702A-3702N homogene Kerne, die eine gemeinsame Befehlssatzarchitektur ausführen. In mindestens einem Ausführungsbeispiel sind die Prozessorkerne 3702A-3702N in Bezug auf die Befehlssatzarchitektur (ISA) heterogen, wobei einer oder mehrere der Prozessorkerne 3702A-3702N einen gemeinsamen Befehlssatz ausführen, während ein oder mehrere andere Kerne der Prozessorkerne 3702A-37-02N eine Teilmenge eines gemeinsamen Befehlssatzes oder einen anderen Befehlssatz ausführen. In mindestens einem Ausführungsbeispiel sind die Prozessorkerne 3702A-3702N in Bezug auf die Mikroarchitektur heterogen, wobei ein oder mehrere Kerne mit einem relativ höheren Stromverbrauch mit einem oder mehreren Leistungskernen mit einem niedrigeren Stromverbrauch gekoppelt sind. In mindestens einem Ausführungsbeispiel kann der Prozessor 3700 auf einem oder mehreren Chips oder als integrierte SoC-Schaltung implementiert werden.
  • Die Inferenz- und/oder Trainingslogik 1715 wird verwendet, um Inferenzieren und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel können Teile oder die Gesamtheit der Inferenz- und/oder Trainingslogik 1715 in den Grafikprozessor 3710 integriert sein. Zum Beispiel können in mindestens einem Ausführungsbeispiel die hier beschriebenen Techniken zum Trainieren und/oder Inferenzieren eine oder mehrere ALUs verwenden, die in der 3D-Pipeline 3612, dem/den Grafikkern(en) 3715A, der/den gemeinsamen Funktionslogik 3716, dem/den Grafikkern(en) 3715B, der gemeinsamen Funktionslogik 3720 oder einer anderen Logik in 37 enthalten sind. Darüber hinaus können in mindestens einem Ausführungsbeispiel die hier beschriebenen Inferenzieren- und/oder Trainingsoperationen unter Verwenden einer anderen als der in 17A oder 17B gezeigten Logik durchgeführt werden. In mindestens einem Ausführungsbeispiel können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder Registern (dargestellt oder nicht dargestellt) gespeichert werden, die ALUs des Grafikprozessors 3710 konfigurieren, um einen oder mehrere hierin beschriebene maschinelle Lernalgorithmen, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • 38 ist ein Blockdiagramm eines Grafikprozessors 3800, bei dem es sich um eine diskrete Grafikverarbeitungseinheit oder um einen Grafikprozessor handeln kann, der mit einer Vielzahl von Verarbeitungskernen integriert ist. In mindestens einem Ausführungsbeispiel kommuniziert der Grafikprozessor 3800 über eine dem Speicher zugeordnete E/A-Schnittstelle mit Registern des Grafikprozessors 3800 und mit Befehlen, die im Speicher abgelegt sind. In mindestens einem Ausführungsbeispiel enthält der Grafikprozessor 3800 eine Speicherschnittstelle 3814 für den Zugriff auf den Speicher. In mindestens einem Ausführungsbeispiel ist die Speicherschnittstelle 3814 eine Schnittstelle zum lokalen Speicher, einem oder mehreren internen Caches, einem oder mehreren gemeinsam genutzten externen Caches und/oder zum Systemspeicher.
  • In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 3800 auch ein Anzeigensteuergerät 3802 zur Bewegung von Anzeige-Ausgabedaten zu einem Anzeigegerät 3820. In mindestens einem Ausführungsbeispiel umfasst die Anzeigensteuerung 3802 Hardware für eine oder mehrere Überlagerungsebenen für das Anzeigegerät 3820 und die Zusammensetzung mehrerer Schichten von Video- oder Benutzerschnittstellenelementen. In mindestens einem Ausführungsbeispiel kann das Anzeigegerät 3820 ein internes oder externes Anzeigegerät sein. In mindestens einem Ausführungsbeispiel ist das Anzeigegerät 3820 ein kopfmontiertes Anzeigegerät, wie z. B. ein Virtual-Reality- (VR) Anzeigegerät oder ein Augmented-Reality- (AR) Anzeigegerät. In mindestens einem Ausführungsbeispiel enthält der Grafikprozessor 3800 eine Videocodec Engine 3806 zum Kodieren, Dekodieren oder Transkodieren von Medien in, aus oder zwischen einem oder mehreren Medienkodierformaten, einschließlich, aber nicht beschränkt auf Moving Picture Experts Group (MPEG) Formate wie MPEG-2, Advanced Video Coding (AVC) Formate wie H.264 /MPEG-4 AVC, sowie Society of Motion Picture & Television Engineers (SMPTE) 421M/VC-1, und Joint Photographic Experts Group (JPEG) Formate wie JPEG und Motion JPEG (MJPEG) Formate.
  • In mindestens einem Ausführungsbeispiel enthält der Grafikprozessor 3800 eine BLIT-Engine (Block Image Transfer) 3804, um zweidimensionale (2D) Rasterisierungsoperationen durchzuführen, die zum Beispiel Bit-Boundary-Block-Transfers umfassen. In mindestens einem Ausführungsbeispiel werden die 2D-Grafikoperationen jedoch unter Verwenden einer oder mehrerer Komponenten der Grafikverarbeitungs-Engine (GPE) 3810 durchgeführt. In mindestens einem Ausführungsbeispiel ist die GPE 3810 eine Compute Engine zur Durchführung von Grafikoperationen, einschließlich dreidimensionaler (3D) Grafikoperationen und Medienoperationen.
  • In mindestens einem Ausführungsbeispiel umfasst die GPE 3810 eine 3D-Pipeline 3812 zur Durchführung von 3D-Operationen, wie das Rendern dreidimensionaler Bilder und Szenen unter Verwenden von Verarbeitungsfunktionen, die auf 3D-Primitivformen (z. B. Rechteck, Dreieck usw.) wirken. Die 3D-Pipeline 3812 umfasst programmierbare und feste Funktionselemente, die verschiedene Aufgaben ausführen und/oder Ausführungs-Threads für ein 3D/Media-Subsystem 3815 erzeugen. Während die 3D-Pipeline 3812 zur Durchführung von Medienoperationen verwendet werden kann, umfasst GPE 3810 in mindestens einem Ausführungsbeispiel auch eine Medien-Pipeline 3816, die zur Durchführung von Medienoperationen, wie Videonachbearbeitung und Bildverbesserung, verwendet wird.
  • In mindestens einem Ausführungsbeispiel umfasst die Medienpipeline 3816 feste Funktions- oder programmierbare Logikeinheiten, um eine oder mehrere spezialisierte Medienoperationen durchzuführen, wie z. B. Videodekodierbeschleunigung, Videoentflechtung und Videokodierbeschleunigung anstelle oder im Auftrag der Videocodec Engine 3806. In mindestens einem Ausführungsbeispiel umfasst die Medienpipeline 3816 zusätzlich eine Einheit zum Erzeugen von Threads für die Ausführung im 3D/Media-Subsystem 3815. In mindestens einem Ausführungsbeispiel führen die gespawnten Threads Berechnungen für Medienoperationen auf einer oder mehreren Grafikausführungseinheiten durch, die im 3D/Media-Subsystem 3815 enthalten sind.
  • In mindestens einem Ausführungsbeispiel umfasst das 3D/Media-Subsystem 3815 eine Logik zum Ausführen von Threads, die von der 3D-Pipeline 3812 und der Media-Pipeline 3816 erzeugt werden. In mindestens einem Ausführungsbeispiel senden die 3D-Pipeline 3812 und die Media-Pipeline 3816 Thread-Ausführungsanfragen an das 3D/Media-Subsystem 3815, das eine Thread-Verteilerlogik zum Vermitteln und Verteilen verschiedener Anfragen an verfügbare Thread-Ausführungsressourcen umfasst. In mindestens einem Ausführungsbeispiel umfassen die Ausführungsressourcen ein Array von Grafikausführungseinheiten zur Verarbeitung von 3D- und Medienthreads. In mindestens einem Ausführungsbeispiel umfasst das 3D/Media-Subsystem 3815 einen oder mehrere interne Caches für Thread-Anweisungen und -Daten. In mindestens einem Ausführungsbeispiel umfasst das Subsystem 3815 auch gemeinsam genutzte Speicher, einschließlich Registern und adressierbarem Speicher, um Daten zwischen Threads gemeinsam zu nutzen und um Ausführungsdaten zu speichern.
  • Die Inferenz- und/oder Trainingslogik 1715 wird verwendet, um Inferenzieren und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel können Teile oder die Gesamtheit der Inferenz- und/oder Trainingslogik 1715 in den Grafikprozessor 3800 integriert werden. Beispielsweise können in mindestens einem Ausführungsbeispiel die hier beschriebenen Techniken zum Trainieren und/oder Inferenzieren eine oder mehrere ALUs verwenden, die in der 3D-Pipeline 3812 enthalten sind. Darüber hinaus können in mindestens einem Ausführungsbeispiel die hierin beschriebenen Inferenzieren- und/oder Trainingsoperationen unter Verwenden einer anderen als der in 17A oder 17B gezeigten Logik durchgeführt werden. In mindestens einem Ausführungsbeispiel können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder Registern (dargestellt oder nicht dargestellt) gespeichert werden, die ALUs des Grafikprozessors 3800 konfigurieren, um einen oder mehrere hierin beschriebene maschinelle Lernalgorithmen, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • 39 ist ein Blockdiagramm einer Grafikverarbeitungs-Engine 3910 eines Grafikprozessors gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel ist die Grafikverarbeitungs-Engine (GPE) 3910 eine Version der in 38 gezeigten GPE 3810. In mindestens einem Ausführungsbeispiel ist die Medienpipeline 3816 optional und kann nicht explizit in GPE 3910 enthalten sein. In mindestens einem Ausführungsbeispiel ist ein separater Medien- und/oder Bildprozessor mit GPE 3910 verbunden.
  • In mindestens einem Ausführungsbeispiel ist GPE 3910 mit einem Befehlsstreamer 3903 gekoppelt oder enthält einen solchen, der einen Befehlsstrom an die 3D-Pipeline 3812 und/oder die Medien-Pipelines 3816 liefert. In mindestens einem Ausführungsbeispiel ist der Befehlsstreamer 3903 mit einem Speicher gekoppelt, bei dem es sich um einen Systemspeicher oder um einen oder mehrere interne Cache-Speicher und gemeinsam genutzte Cache-Speicher handeln kann. In mindestens einem Ausführungsbeispiel empfängt der Befehlsstreamer 3903 Befehle aus dem Speicher und sendet Befehle an die 3D-Pipeline 3812 und/oder die Medien-Pipeline 3816. In mindestens einem Ausführungsbeispiel handelt es sich bei den Befehlen um Anweisungen, Primitive oder Mikrooperationen, die aus einem Ringpuffer geholt werden, in dem Befehle für die 3D-Pipeline 3812 und die Media-Pipeline 3816 gespeichert sind. In mindestens einem Ausführungsbeispiel kann ein Ringpuffer zusätzlich Batch-Befehlspuffer enthalten, die Batches von mehreren Befehlen speichern. In mindestens einem Ausführungsbeispiel können die Befehle für die 3D-Pipeline 3812 auch Verweise auf im Speicher gespeicherte Daten umfassen, wie z. B. Vertex-Daten und Geometriedaten für die 3D-Pipeline 3812 und/oder Bilddaten und Speicherobjekte für die Medien-Pipeline 3816, ohne darauf beschränkt zu sein. In mindestens einem Ausführungsbeispiel verarbeiten die 3D-Pipeline 3812 und die Medien-Pipeline 3816 Befehle und Daten, indem sie Operationen durchführen oder einen oder mehrere Ausführungsthreads an ein Grafikkern-Array 3914 weiterleiten. In mindestens einem Ausführungsbeispiel enthält das Grafikkern-Array 3914 einen oder mehrere Blöcke von Grafikkernen (z. B. Grafikkern(e) 3915A, Grafikkern(e) 3915B), wobei jeder Block einen oder mehrere Grafikkerne enthält. In mindestens einem Ausführungsbeispiel enthält jeder Grafikkern einen Satz von Grafikausführungsressourcen, der eine allgemeine und grafikspezifische Ausführungslogik zur Durchführung von Grafik- und Rechenoperationen sowie eine Logik für die Texturverarbeitung mit fester Funktion und/oder eine Logik für maschinelles Lernen und künstliche Intelligenz zur Beschleunigung enthält, einschließlich der Inferenz- und/oder Trainingslogik 1715 in 17A und 17B.
  • In mindestens einem Ausführungsbeispiel umfasst die 3D-Pipeline 3812 eine feste Funktion und eine programmierbare Logik zur Verarbeitung eines oder mehrerer Schattierungsprogramme, wie z. B. Vertex-Schattierer, Geometrie-Schattierer, Pixel-Schattierer, Fragment-Schattierer, Rechen-Schattierer oder andere Schattierungsprogramme, durch die Verarbeitung von Befehlen und die Weiterleitung von Ausführungsthreads an das Grafikkern-Array 3914. In mindestens einem Ausführungsbeispiel stellt das Grafikkern-Array 3914 einen einheitlichen Block von Ausführungsressourcen zur Verwendung bei der Verarbeitung von Schattierungsprogrammen bereit. In mindestens einem Ausführungsbeispiel umfasst die Mehrzweck-Ausführungslogik (z.B. Ausführungseinheiten) innerhalb der Grafikkerne 3915A-3915B des Grafikkern-Arrays 3914 Unterstützung für verschiedene 3D-API-Shader-Sprachen und kann mehrere simultane, mit mehreren Shadern assoziierte Ausführungsthreads ausführen.
  • In mindestens einem Ausführungsbeispiel umfasst das Grafikkern-Array 3914 auch eine Ausführungslogik zur Ausführung von Medienfunktionen, wie z. B. Video- und/oder Bildverarbeitung. In mindestens einem Ausführungsbeispiel umfassen die Ausführungseinheiten zusätzlich eine allgemeine Logik, die so programmiert werden kann, dass sie zusätzlich zu den Grafikverarbeitungsoperationen parallele allgemeine Rechenoperationen durchführt.
  • In mindestens einem Ausführungsbeispiel können von Threads, die auf dem Grafikkern-Array 3914 ausgeführt werden, generierte Ausgabedaten an den Speicher in einem Unified Return Buffer (URB) 3918 ausgegeben werden. Der URB 3918 kann Daten für mehrere Threads speichern. In mindestens einem Ausführungsbeispiel kann der URB 3918 dazu verwendet werden, Daten zwischen verschiedenen Threads zu senden, die auf dem Grafikkern-Array 3914 ausgeführt werden. In mindestens einem Ausführungsbeispiel kann URB 3918 zusätzlich zur Synchronisation zwischen Threads auf Grafikkern-Array 3914 und fester Funktionslogik innerhalb der gemeinsam genutzten Funktionslogik 3920 genutzt werden.
  • In mindestens einem Ausführungsbeispiel ist das Grafikkern-Array 3914 skalierbar, so dass das Grafikkern-Array 3914 eine variable Anzahl von Grafikkernen enthält, von denen jeder eine variable Anzahl von Ausführungseinheiten basierend auf einem angestrebten Energie- und Leistungsniveau des GPE 3910 hat. In mindestens einem Ausführungsbeispiel sind die Ausführungsressourcen dynamisch skalierbar, so dass die Ausführungsressourcen nach Bedarf aktiviert oder deaktiviert werden können.
  • In mindestens einem Ausführungsbeispiel ist das Grafikkern-Array 3914 mit einer gemeinsamen Funktionslogik 3920 gekoppelt, die mehrere Ressourcen umfasst, die von den Grafikkernen im Grafikkern-Array 3914 gemeinsam genutzt werden. In mindestens einem Ausführungsbeispiel sind die gemeinsam genutzten Funktionen, die von der gemeinsam genutzten Funktionslogik 3920 ausgeführt werden, in Hardware-Logikeinheiten verkörpert, die dem Grafikkern-Array 3914 spezielle zusätzliche Funktionalität bieten. In mindestens einem Ausführungsbeispiel enthält die gemeinsam genutzte Funktionslogik 3920 unter anderem Sampler 3921, Mathematik 3922 und Inter-Thread-Kommunikationslogik (ITC) 3923. In mindestens einem Ausführungsbeispiel sind ein oder mehrere Cache(s) 3925 in der gemeinsam genutzten Funktionslogik 3920 enthalten oder mit dieser gekoppelt.
  • In mindestens einem Ausführungsbeispiel wird eine gemeinsam genutzte Funktion verwendet, wenn die Nachfrage nach einer spezialisierten Funktion für die Aufnahme in das Grafikkern-Array 3914 nicht ausreicht. In mindestens einem Ausführungsbeispiel wird eine einzelne Instanziierung einer spezialisierten Funktion in der gemeinsam genutzten Funktionslogik 3920 verwendet und von anderen Ausführungsressourcen im Grafikkern-Array 3914 gemeinsam genutzt. In mindestens einem Ausführungsbeispiel können bestimmte gemeinsam genutzte Funktionen innerhalb der gemeinsam genutzten Funktionslogik 3920, die vom Grafikkern-Array 3914 ausgiebig verwendet werden, in der gemeinsam genutzten Funktionslogik 3916 im Grafikkern-Array 3914 enthalten sein. In mindestens einem Ausführungsbeispiel kann die gemeinsame Funktionslogik 3916 im Grafikkern-Array 3914 einige oder alle Funktionen der gemeinsamen Funktionslogik 3920 umfassen. In mindestens einem Ausführungsbeispiel können alle Logikelemente der gemeinsam genutzten Funktionslogik 3920 in der gemeinsam genutzten Funktionslogik 3916 des Grafikkern-Arrays 3914 dupliziert werden. In mindestens einem Ausführungsbeispiel wird die gemeinsam genutzte Funktionslogik 3920 zugunsten der gemeinsam genutzten Funktionslogik 3916 innerhalb des Grafikkern-Arrays 3914 ausgeschlossen.
  • Die Inferenz- und/oder Trainingslogik 1715 wird zum Inferenzieren und/oder Trainieren von Operationen verwendet, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel können Teile oder die Gesamtheit der Inferenz- und/oder Trainingslogik 1715 in den Grafikprozessor 3910 integriert sein. Zum Beispiel können in mindestens einem Ausführungsbeispiel die hier beschriebenen Techniken zum Trainieren und/oder Inferenzieren eine oder mehrere ALUs in der 3D-Pipeline 3812, den/die Grafikkern(e) 3915A, die gemeinsam genutzte(n) Funktionslogik(en) 3916, den/die Grafikkern(e) 3915B, die gemeinsam genutzte Funktionslogik 3920 oder andere Logik in 39 verwenden. Darüber hinaus können in mindestens einem Ausführungsbeispiel die hier beschriebenen Inferenzieren- und/oder Trainingsoperationen unter Verwenden einer anderen als der in 17A oder 17B gezeigten Logik durchgeführt werden. In mindestens einem Ausführungsbeispiel können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder Registern (dargestellt oder nicht dargestellt) gespeichert werden, die ALUs des Grafikprozessors 3910 konfigurieren, um einen oder mehrere hierin beschriebene maschinelle Lernalgorithmen, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • 40 ist ein Blockdiagramm der Hardwarelogik eines Grafikprozessorkerns 4000, gemäß mindestens einem Ausführungsbeispiel, das hierin beschrieben ist. In mindestens einem Ausführungsbeispiel ist der Grafikprozessor-Kern 4000 in einem Grafikkern-Array enthalten. In mindestens einem Ausführungsbeispiel kann der Grafikprozessorkern 4000, der manchmal auch als Kernabschnitt bezeichnet wird, ein oder mehrere Grafikkerne innerhalb eines modularen Grafikprozessors sein. In mindestens einem Ausführungsbeispiel ist der Grafikprozessorkern 4000 exemplarisch für einen Grafikkernabschnitt, und ein hierin beschriebener Grafikprozessor kann mehrere Grafikkernabschnitte basierend auf den angestrebten Energie- und Leistungsumfängen enthalten. In mindestens einem Ausführungsbeispiel kann jeder Grafikkern 4000 einen festen Funktionsblock 4030 umfassen, der mit mehreren Unterkemen 4001A-4001F gekoppelt ist, die auch als Unterabschnitte bezeichnet werden und modulare Blöcke mit allgemeiner und fester Funktionslogik enthalten.
  • In mindestens einem Ausführungsbeispiel umfasst der Festfunktionsblock 4030 eine Geometrie/Festfunktions-Pipeline 4036, die von allen Unterkemen im Grafikprozessor 4000 gemeinsam genutzt werden kann, beispielsweise in Grafikprozessor-Implementierungen mit geringerer Leistung und/oder geringerem Energieverbrauch. In mindestens einem Ausführungsbeispiel umfasst die Geometrie/Festfunktionspipeline 4036 eine 3D-Festfunktionspipeline, eine Video-Front-End-Einheit, einen Thread-Spawner und Thread-Verteiler sowie einen Unified-Return-Puffer-Manager, der Unified-Return-Puffer verwaltet.
  • In mindestens einem Ausführungsbeispiel umfasst der Festfunktionsblock 4030 auch eine Grafik-SoC-Schnittstelle 4037, einen Grafik-Mikrocontroller 4038 und eine Medienpipeline 4039. Die Grafik-SoC-Schnittstelle 4037 bietet eine Schnittstelle zwischen dem Grafikkern 4000 und anderen Prozessorkemen innerhalb einer integrierten System-on-a-Chip-Schaltung. In mindestens einem Ausführungsbeispiel ist der Grafik-Mikrocontroller 4038 ein programmierbarer Unterprozessor, der konfiguriert werden kann, um verschiedene Funktionen des Grafikprozessors 4000 zu verwalten, einschließlich Thread-Versand, Planen und Preemption. In mindestens einem Ausführungsbeispiel umfasst die Medienpipeline 4039 eine Logik zur Erleichterung der Dekodierung, Kodierung, Vorverarbeitung und/oder Nachbearbeitung von Multimediadaten, einschließlich Bild- und Videodaten. In mindestens einem Ausführungsbeispiel implementiert die Medienpipeline 4039 Medienoperationen über Anforderungen an die Rechen- oder Sampling-Logik innerhalb der Unterkeme 4001-4001F.
  • In mindestens einem Ausführungsbeispiel ermöglicht die SoC-Schnittstelle 4037 dem Grafikkern 4000, mit allgemeinen Anwendungsprozessorkernen (z. B. CPUs) und/oder anderen Komponenten innerhalb eines SoC zu kommunizieren, einschließlich Speicherhierarchieelementen wie einem gemeinsam genutzten Cache-Speicher der letzten Ebene, System-RAM und/oder eingebettetem On-Chip- oder On-Package-DRAM. In mindestens einem Ausführungsbeispiel kann die SoC-Schnittstelle 4037 auch die Kommunikation mit Geräten mit fester Funktion innerhalb eines SoC ermöglichen, wie z. B. Kamera-Bildgebungspipelines, und ermöglicht die Verwendung von und/oder implementiert globale Speicher-Atomik, die gemeinsam von Grafikkern 4000 und CPUs innerhalb eines SoC genutzt werden kann. In mindestens einem Ausführungsbeispiel kann die SoC-Schnittstelle 4037 auch Energieverwaltungssteuerungen für den Grafikkern 4000 implementieren und eine Schnittstelle zwischen einer Taktdomäne des Grafikkerns 4000 und anderen Taktdomänen innerhalb eines SoCs ermöglichen. In mindestens einem Ausführungsbeispiel ermöglicht die SoC-Schnittstelle 4037 den Empfang von Befehlspuffern von einem Befehlsstreamer und einem globalen Thread-Verteiler, die so konfiguriert sind, dass sie jedem von einem oder mehreren Grafikkernen innerhalb eines Grafikprozessors Befehle und Anweisungen bereitstellen. In mindestens einem Ausführungsbeispiel können Befehle und Anweisungen an die Medienpipeline 4039 gesendet werden, wenn Medienoperationen durchgeführt werden sollen, oder an eine Geometrie- und Festfunktionspipeline (z. B. Geometrie- und Festfunktionspipeline 4036, Geometrie- und Festfunktionspipeline 4014), wenn Grafikverarbeitungsoperationen durchgeführt werden sollen.
  • In mindestens einem Ausführungsbeispiel kann der Grafik-Mikrocontroller 4038 so konfiguriert sein, dass er verschiedene Planungs- und Verwaltungsaufgaben für den Grafikkern 4000 ausführt. In mindestens einem Ausführungsbeispiel kann der Grafik-Mikrocontroller 4038 die Planung von Grafik- und/oder Rechen-Arbeitslasten für verschiedene parallele Engines innerhalb der Arrays 4002A-4002F, 4004A-4004F der Ausführungseinheiten (EU) in den Unterkemen 4001A-4001F durchführen. In mindestens einem Ausführungsbeispiel kann die Hostsoftware, die auf einem CPU-Kern eines SoC ausgeführt wird, der den Grafikkern 4000 enthält, Arbeitslasten an eine von mehreren Grafikprozessor-Türglocken senden, die eine Planungsoperation auf einer geeigneten Grafik-Engine aufrufen. In mindestens einem Ausführungsbeispiel umfassen die Planungsvorgänge das Bestimmen der als nächstes auszuführenden Arbeitslast, das Übermitteln einer Arbeitslast an einen Befehlsstreamer, das Vorziehen bestehender Arbeitslasten, die auf einer Engine laufen, das Überwachen des Fortschritts einer Arbeitslast und das Benachrichtigen der Host-Software, wenn eine Arbeitslast abgeschlossen ist. In mindestens einem Ausführungsbeispiel kann der Grafik-Mikrocontroller 4038 auch stromsparende oder Leerlaufzustände für den Grafikkern 4000 erleichtern, indem er dem Grafikkern 4000 die Fähigkeit verleiht, Register innerhalb des Grafikkerns 4000 über stromsparende Zustandsübergänge hinweg unabhängig von einem Betriebssystem und/oder einer Grafiktreibersoftware auf einem System zu speichern und wiederherzustellen.
  • In mindestens einem Ausführungsbeispiel kann der Grafikkern 4000 mehr oder weniger als die beispielhaft gezeigten Unterkeme 4001A-4001F haben, bis zu N modulare Unterkeme. Für jeden Satz von N Unterkernen kann der Grafikkern 4000 in mindestens einem Ausführungsbeispiel auch eine gemeinsam genutzte Funktionslogik 4010, einen gemeinsam genutzten und/oder Cache-Speicher 4012, eine Geometrie-/Festfunktions-Pipeline 4014 sowie eine zusätzliche Festfunktionslogik 4016 zur Beschleunigung verschiedener Grafik- und Rechenverarbeitungsoperationen umfassen. In mindestens einem Ausführungsbeispiel kann die gemeinsam genutzte Funktionslogik 4010 Logikeinheiten (z. B. Sampler, Mathematik und/oder Inter-Thread-Kommunikationslogik) umfassen, die von allen N Unterkemen innerhalb des Grafikkerns 4000 gemeinsam genutzt werden können. Der gemeinsam genutzte und/oder Cache-Speicher 4012 kann ein Cache der letzten Ebene für N Unterkeme 4001A-4001F innerhalb des Grafikkerns 4000 sein und kann auch als gemeinsam genutzter Speicher dienen, auf den mehrere Unterkeme zugreifen können. In mindestens einem Ausführungsbeispiel kann die Geometrie-/Festfunktionspipeline 4014 anstelle der Geometrie-/Festfunktionspipeline 4036 im Festfunktionsblock 4030 enthalten sein und gleiche oder ähnliche logische Einheiten umfassen.
  • In mindestens einem Ausführungsbeispiel enthält der Grafikkern 4000 eine zusätzliche feste Funktionslogik 4016, die verschiedene feste Funktionsbeschleunigungslogiken zur Verwendung durch den Grafikkern 4000 umfassen kann. In mindestens einem Ausführungsbeispiel umfasst die zusätzliche feste Funktionslogik 4016 eine zusätzliche Geometrie-Pipeline zur Verwendung bei der reinen Positionsschattierung. Bei der positionsabhängigen Schattierung gibt es mindestens zwei Geometrie-Pipelines, nämlich eine vollständige Geometrie-Pipeline innerhalb der Geometrie/Festfunktions-Pipeline 4016, 4036, und eine Cull-Pipeline, eine zusätzliche Geometrie-Pipeline, die in der zusätzlichen Festfunktionslogik 4016 enthalten sein kann. In mindestens einem Ausführungsbeispiel ist die Cull-Pipeline eine abgespeckte Version einer vollständigen Geometrie-Pipeline. In mindestens einem Ausführungsbeispiel können eine vollständige Pipeline und eine Cull-Pipeline verschiedene Instanzen einer Anwendung ausführen, wobei jede Instanz einen separaten Kontext hat. In mindestens einem Ausführungsbeispiel kann die positionsabhängige Schattierung lange Ausblendungen von verworfenen Dreiecken verbergen, so dass die Schattierung in einigen Fällen früher abgeschlossen werden kann. In mindestens einem Ausführungsbeispiel kann die Cull-Pipeline-Logik innerhalb der zusätzlichen festen Funktionslogik 4016 beispielsweise Positions-Schattierer parallel zu einer Hauptanwendung ausführen und generiert kritische Ergebnisse im Allgemeinen schneller als eine vollständige Pipeline, da die Cull-Pipeline Positions-Attribute von Vertices holt und schattiert, ohne eine Rasterung und Generierung von Pixeln in einem Einzelbildpuffer durchzuführen. In mindestens einem Ausführungsbeispiel kann die Cull-Pipeline die generierten kritischen Ergebnisse verwenden, um Sichtbarkeitsinformationen für alle Dreiecke zu berechnen, unabhängig davon, ob diese Dreiecke ausgeblendet sind. In mindestens einem Ausführungsbeispiel kann die Vollpipeline (die in diesem Fall als Ausführungspipeline bezeichnet werden kann) die Sichtbarkeitsinformationen verwenden, um die ausgemergelten Dreiecke zu überspringen, um nur die sichtbaren Dreiecke zu schattieren, die schließlich an eine Rasterisierungsphase übergeben werden.
  • In mindestens einem Ausführungsbeispiel kann die zusätzliche feste Funktionslogik 4016 auch eine Logik zur Beschleunigung des maschinellen Lernens umfassen, wie z. B. eine Logik zur Matrixmultiplikation mit fester Funktion, für Implementierungen, die Optimierungen für das Trainieren oder Inferenzieren des maschinellen Lernens enthalten.
  • In mindestens einem Ausführungsbeispiel umfasst jeder grafische Unterkern 4001A-4001F einen Satz von Ausführungsressourcen, die verwendet werden können, um Grafik-, Medien- und Rechenoperationen als Reaktion auf Anforderungen von Grafikpipeline-, Medienpipeline- oder Schattierungsprogrammen durchzuführen. In mindestens einem Ausführungsbeispiel umfassen die Grafik-Unterkerne 4001A-4001F mehrere EU-Arrays 4002A-4002F, 4004A-4004F, Thread-Verteiler- und Inter-Thread-Kommunikationslogik (TD/IC) 4003A-4003F, einen 3D-Sampler (z. B. Textur) 4005A-4005F, einen Medien-Sampler 4006A-4006F, einen Schattierungsprozessor 4007A-4007F und gemeinsam genutzten lokalen Speicher (SLM) 4008A-4008F. Die EU-Arrays 4002A-4002F, 4004A und 4004F enthalten jeweils mehrere Ausführungseinheiten, bei denen es sich um allgemeine Grafikverarbeitungseinheiten handelt, die in der Lage sind, Gleitkomma- und Ganzzahl-/Festkomma-Logikoperationen im Dienste einer Grafik-, Medien- oder Rechenoperation durchzuführen, einschließlich Grafik-, Medien- oder Rechen-Shader-Programmen. In mindestens einem Ausführungsbeispiel führt die TD/IC-Logik 4003A-4003F lokale Thread-Verteiler- und Thread-Steuerungsoperationen für Ausführungseinheiten innerhalb eines Unterkerns durch und erleichtert die Kommunikation zwischen Threads, die auf Ausführungseinheiten eines Unterkerns ausgeführt werden. In mindestens einem Ausführungsbeispiel kann der 3D-Sampler 4005A-4005F Textur- oder andere 3D-Grafikdaten in den Speicher einlesen. In mindestens einem Ausführungsbeispiel kann der 3D-Sampler basierend auf einem konfigurierten Sample-Zustand und einem mit einer bestimmten Textur assoziierten Texturformat unterschiedliche Texturdaten lesen. In mindestens einem Ausführungsbeispiel kann der Media-Sampler 4006A-4006F basierend auf einem Typ und einem Format, das mit den Mediendaten assoziiert ist, ähnliche Lesevorgänge durchführen. In mindestens einem Ausführungsbeispiel kann jeder Grafik-Unterkern 4001A-4001F abwechselnd einen vereinheitlichten 3D- und Medien-Sampler enthalten. In mindestens einem Ausführungsbeispiel können Threads, die auf Ausführungseinheiten innerhalb jedes der Unterkeme 4001A-4001F ausgeführt werden, den gemeinsam genutzten lokalen Speicher 4008A-4008F innerhalb jedes Unterkerns nutzen, um Threads, die innerhalb einer Thread-Gruppe ausgeführt werden, die Ausführung unter Verwenden eines gemeinsamen Pools von On-Chip-Speicher zu ermöglichen.
  • Die Inferenz- und/oder Trainingslogik 1715 wird zum Inferenzieren und/oder Trainieren von Operationen verwendet, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel können Teile oder die Gesamtheit der Inferenz- und/oder Trainingslogik 1715 in den Grafikprozessor 4010 integriert werden. In mindestens einem Ausführungsbeispiel können die hier beschriebenen Techniken zum Trainieren und/oder Inferenzieren beispielsweise eine oder mehrere der ALUs verwenden, die in der 3D-Pipeline 4010, dem Grafik-Mikrocontroller 4038, der Geometrie- und FestfunktionsPipeline 4014 und 4036 oder einer anderen Logik in 37 enthalten sind. Darüber hinaus können in mindestens einem Ausführungsbeispiel die hier beschriebenen Inferenzieren- und/oder Trainingsoperationen unter Verwenden einer anderen als der in 17A oder 17B gezeigten Logik durchgeführt werden. In mindestens einem Ausführungsbeispiel können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder Registern (dargestellt oder nicht dargestellt) gespeichert werden, die ALUs des Grafikprozessors 4000 konfigurieren, um einen oder mehrere hierin beschriebene maschinelle Lernalgorithmen, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • 41A-41B zeigen die Thread-Ausführungslogik 4100, die in mindestens einem Ausführungsbeispiel ein Array von Verarbeitungselementen eines Grafikprozessorkerns enthält. 41A zeigt mindestens ein Ausführungsbeispiel, in dem die Thread-Ausführungslogik 4100 verwendet wird. 41B zeigt exemplarisch interne Details einer Ausführungseinheit in mindestens einem Ausführungsbeispiel.
  • Wie in 41A beispielhaft gezeigt, enthält die Thread-Ausführungslogik 4100 in mindestens einem Ausführungsbeispiel einen Schattierungsprozessor 4102, einen Thread-Verteiler 4104, einen Befehls-Cache 4106, ein skalierbares Ausführungseinheit-Array mit einer Vielzahl von Ausführungseinheiten 4108A-4108N, einen Sampler 4110, einen Daten-Cache 4112 und einen Datenport 4114. In mindestens einem Ausführungsbeispiel kann ein skalierbares Array von Ausführungseinheiten dynamisch skaliert werden, indem eine oder mehrere Ausführungseinheiten (z. B. eine der Ausführungseinheiten 4108A, 4108B, 4108C, 4108D bis 4108N-1 und 4108N) basierend auf den erforderlichen Anforderungen einer Arbeitslast aktiviert oder deaktiviert werden. In mindestens einem Ausführungsbeispiel sind die skalierbaren Ausführungseinheiten über eine Verbindungsstruktur miteinander verbunden, die mit jeder Ausführungseinheit eine Verbindung herstellt. In mindestens einem Ausführungsbeispiel umfasst die Thread-Ausführungslogik 4100 eine oder mehrere Verbindungen zum Speicher, z. B. zum Systemspeicher oder zum Cache-Speicher, über einen oder mehrere der Befehlscaches 4106, den Datenport 4114, den Sampler 4110 und die Ausführungseinheiten 4108A-4108N. In mindestens einem Ausführungsbeispiel ist jede Ausführungseinheit (z. B. 4108A) eine eigenständige programmierbare allgemeine Recheneinheit, die in der Lage ist, mehrere simultane Hardware-Threads auszuführen und dabei mehrere Datenelemente parallel für jeden Thread zu verarbeiten. In mindestens einem Ausführungsbeispiel ist das Array der Ausführungseinheiten 4108A-4108N so skalierbar, dass es eine beliebige Anzahl einzelner Ausführungseinheiten umfasst.
  • In mindestens einem Ausführungsbeispiel werden die Ausführungseinheiten 4108A-4108N hauptsächlich zur Ausführung von Schattierungsprogrammen verwendet. In mindestens einem Ausführungsbeispiel kann der Schattierungsprozessor 4102 verschiedene Schattierungsprogramme verarbeiten und Ausführungs-Threads, die mit Schattierungsprogrammen assoziiert sind, über einen Thread-Verteiler 4104 verteilen. In mindestens einem Ausführungsbeispiel umfasst der Thread-Verteiler 4104 eine Logik zur Vermittlung von Thread-Initiierungsanforderungen von Grafik- und Medienpipelines und zur Instanziierung angeforderter Threads auf einer oder mehreren Ausführungseinheiten in den Ausführungseinheiten 4108A-4108N. In mindestens einem Ausführungsbeispiel kann eine Geometrie-Pipeline beispielsweise Vertex-, Tesselations- oder Geometrie-Schattierer zur Verarbeitung an die Thread-Ausführungslogik weiterleiten. In mindestens einem Ausführungsbeispiel kann der Thread-Verteiler 4104 auch Laufzeit-Thread-Spawning-Anforderungen von ausführenden Schattierungsprogrammen verarbeiten.
  • In mindestens einer Ausführungseinheit 4108A-4108N wird ein Befehlssatz unterstützt, der eine native Unterstützung für viele Standard-3D-Grafik-Shader-Anweisungen umfasst, so dass Schattierungsprogramme aus Grafikbibliotheken (z. B. Direct 3D und OpenGL) mit einer minimalen Übersetzung ausgeführt werden. In mindestens einem Ausführungsbeispiel unterstützen die Ausführungseinheiten die Vertex- und Geometrieverarbeitung (z. B. Vertexprogramme, Geometrieprogramme, Vertex-Schattierer), die Pixelverarbeitung (z. B. Pixel-Schattierer, Fragment-Schattierer) und die allgemeine Verarbeitung (z. B. Rechen- und Medien-Schattierer). In mindestens einem Ausführungsbeispiel ist jede der Ausführungseinheiten 4108A-4108N, die eine oder mehrere arithmetische Logikeinheiten (ALUs) umfassen, in der Lage, SIMD (Single Instruction Multiple Data) auszuführen, und der Multi-Thread-Betrieb ermöglicht eine effiziente Ausführungsumgebung trotz höherer Latenz bei Speicherzugriffen. In mindestens einem Ausführungsbeispiel verfügt jeder Hardware-Thread innerhalb jeder Ausführungseinheit über eine dedizierte Registerdatei mit hoher Bandbreite und einen assoziierten unabhängigen Thread-Zustand. In mindestens einem Ausführungsbeispiel erfolgt die Ausführung in Pipelines, die Ganzzahl-, Gleitkomma- und Doppelpräzisionsoperationen, SIMD-Verzweigungsfähigkeit, logische Operationen, transzendentale Operationen und andere verschiedene Operationen ausführen können, in mehreren Schritten pro Takt. In mindestens einem Ausführungsbeispiel bewirkt die Abhängigkeitslogik innerhalb der Ausführungseinheiten 4108A-4108N beim Warten auf Daten aus dem Speicher oder einer der gemeinsam genutzten Funktionen, dass ein wartender Thread schläft, bis die angeforderten Daten zurückgegeben wurden. In mindestens einem Ausführungsbeispiel können, während ein wartender Thread schläft, Hardware-Ressourcen für die Verarbeitung anderer Threads verwendet werden. Zum Beispiel kann in mindestens einem Ausführungsbeispiel eine Ausführungseinheit während einer Verzögerung, die mit einer Vertex-Shader-Operation assoziiert ist, Operationen für einen Pixel-Schattierer, Fragment-Shader oder eine andere Art von Schattierungsprogramm, einschließlich eines anderen Vertex-Shaders, durchführen.
  • In mindestens einem Ausführungsbeispiel betreibt jede Ausführungseinheit in den Ausführungseinheiten 4108A-4108N Arrays von Datenelementen. In mindestens einem Ausführungsbeispiel ist eine Anzahl von Datenelementen die „Ausführungsgröße“ oder die Anzahl von Kanälen für einen Befehl. In mindestens einem Ausführungsbeispiel ist ein Ausführungskanal eine logische Ausführungseinheit für den Datenelementzugriff, die Maskierung und die Flusssteuerung innerhalb von Befehlen. In mindestens einem Ausführungsbeispiel kann die Anzahl der Kanäle unabhängig von der Anzahl der physischen Arithmetic Logic Units (ALUs) oder Floating Point Units (FPUs) eines bestimmten Grafikprozessors sein. In mindestens einem Ausführungsbeispiel unterstützen die Ausführungseinheiten 4108A 4108N Ganzzahl- und Gleitkomma-Datentypen.
  • In mindestens einem Ausführungsbeispiel umfasst ein Befehlssatz der Ausführungseinheit SIMD-Befehle. In mindestens einem Ausführungsbeispiel können verschiedene Datenelemente als gepackter Datentyp in einem Register gespeichert werden, und die Ausführungseinheit wird basierend auf der Datengröße der Elemente verschiedene Elemente verarbeiten. Beispielsweise werden in mindestens einem Ausführungsbeispiel bei der Bearbeitung eines 256 Bit breiten Vektors 256 Bits eines Vektors in einem Register gespeichert, und eine Ausführungseinheit betreibt den Vektor als vier separate gepackte 64-Bit-Datenelemente (Datenelemente der Größe Quad-Word (QW)), acht separate gepackte 32-Bit-Datenelemente (Datenelemente der Größe Double Word (DW)), sechzehn separate gepackte 16-Bit-Datenelemente (Datenelemente der Größe Word (W)) oder zweiunddreißig separate 8-Bit-Datenelemente (Datenelemente der Größe Byte (B)). In mindestens einem Ausführungsbeispiel sind jedoch auch andere Vektorbreiten und Registergrößen möglich.
  • In mindestens einem Ausführungsbeispiel können eine oder mehrere Ausführungseinheiten zu einer fusionierten Ausführungseinheit 4109A-4109N mit einer Thread-Steuerlogik (4107A-4107N) kombiniert werden, die den fusionierten EUs gemeinsam ist. In mindestens einem Ausführungsbeispiel können mehrere EUs zu einer EU-Gruppe fusioniert werden. In mindestens einem Ausführungsbeispiel kann jede EU in einer fusionierten EU-Gruppe so konfiguriert werden, dass sie einen separaten SIMD-Hardware-Thread ausführt. Die Anzahl der EUs in einer fusionierten EU-Gruppe kann gemäß verschiedener Ausführungsbeispiele variieren. In mindestens einem Ausführungsbeispiel können verschiedene SIMD-Breiten pro EU ausgeführt werden, einschließlich, aber nicht beschränkt auf SIMD8, SIMD16 und SIMD32. In mindestens einem Ausführungsbeispiel enthält jede fusionierte Grafikausführungseinheit 4109A-4109N mindestens zwei Ausführungseinheiten. In mindestens einem Ausführungsbeispiel beispielsweise enthält die fusionierte Ausführungseinheit 4109A eine erste EU 4108A, eine zweite EU 4108B und eine Thread-Steuerlogik 4107A, die der ersten EU 4108A und der zweiten EU 4108B gemeinsam ist. In mindestens einem Ausführungsbeispiel steuert die Thread-Steuerlogik 4107A Threads, die auf der fusionierten grafischen Ausführungseinheit 4109A ausgeführt werden, so dass jede EU innerhalb der fusionierten Ausführungseinheiten 4109A 4109N unter Verwenden eines gemeinsamen Befehlszeigerregisters ausgeführt werden kann.
  • In mindestens einem Ausführungsbeispiel sind in der Thread-Ausführungslogik 4100 ein oder mehrere interne Befehlscaches (z. B. 4106) enthalten, um Thread-Befehle für Ausführungseinheiten zwischenzuspeichern. In mindestens einem Ausführungsbeispiel sind ein oder mehrere Daten-Caches (z.B. 4112) enthalten, um Thread-Daten während der Thread-Ausführung zu cachen. In mindestens einem Ausführungsbeispiel ist ein Sampler 4110 enthalten, um Textur-Sampling für 3D-Operationen und Medien-Sampling für Medien-Operationen bereitzustellen. In mindestens einem Ausführungsbeispiel umfasst der Sampler 4110 eine spezielle Funktionalität für Textur- oder Medien-Sampling, um Textur- oder Mediendaten während des Sampling-Prozesses zu verarbeiten, bevor die gesampelten Daten einer Ausführungseinheit zur Verfügung gestellt werden.
  • In mindestens einem Ausführungsbeispiel senden Grafik- und Medienpipelines während der Ausführung Thread-Initiierungsanforderungen an die Thread-Ausführungslogik 4100 über eine Thread-Spawning- und Versandlogik. In mindestens einem Ausführungsbeispiel wird, sobald eine Gruppe geometrischer Objekte verarbeitet und in Pixeldaten gerastert wurde, die Pixelprozessorlogik (z. B. Pixel-Schattierer-Logik, Fragment-Schattierer-Logik usw.) innerhalb des Schattierungsprozessors 4102 aufgerufen, um weitere Ausführungsinformationen zu berechnen und zu bewirken, dass die Ergebnisse in Ausgabeflächen (z. B. Farbpuffer, Tiefenpuffer, Schablonenpuffer usw.) geschrieben werden. In mindestens einem Ausführungsbeispiel berechnet ein Pixel-Schattierer oder Fragment-Schattierer die Werte verschiedener Vertex-Attribute, die über ein gerastertes Objekt interpoliert werden sollen. In mindestens einem Ausführungsbeispiel führt die Pixel-Schattierer-Logik innerhalb des Schattierungsprozessors 4102 dann ein von der Anwendungsprogrammierschnittstelle (API) bereitgestelltes Pixel- oder Fragment-Shaderprogramm aus. In mindestens einem Ausführungsbeispiel sendet der Schattierungsprozessor 4102 zur Ausführung eines Schattierungsprogramms Threads über den Thread-Verteiler 4104 an eine Ausführungseinheit (z. B. 4108A). In mindestens einem Ausführungsbeispiel verwendet der Schattierungsprozessor 4102 die Textur-Sampling-Logik im Sampler 4110, um auf Texturdaten in Texturkarten zuzugreifen, die im Speicher abgelegt sind. In mindestens einem Ausführungsbeispiel werden durch arithmetische Operationen an Texturdaten und Eingabegeometriedaten Pixelfarbdaten für jedes geometrische Fragment berechnet, oder ein oder mehrere Pixel werden von der weiteren Verarbeitung ausgeschlossen.
  • In mindestens einem Ausführungsbeispiel stellt der Datenport 4114 einen Speicherzugriffsmechanismus für die Thread-Ausführungslogik 4100 bereit, um verarbeitete Daten zur weiteren Verarbeitung auf einer Grafikprozessor-Ausgabepipeline in den Speicher auszugeben. In mindestens einem Ausführungsbeispiel umfasst der Datenport 4114 einen oder mehrere Cache-Speicher (z. B. Daten-Cache 4112) oder ist mit diesen gekoppelt, um Daten für den Speicherzugriff über einen Datenport zu cachen.
  • Wie in 41B beispielhaft gezeigt, kann eine Grafikausführungseinheit 4108 in mindestens einem Ausführungsbeispiel eine Befehlsabrufeinheit 4137, ein allgemeines Registerdatei-Array (GRF) 4124, ein architektonisches Registerdatei-Array (ARF) 4126, einen Thread-Arbiter 4122, eine Sendeeinheit 4130, eine Verzweigungseinheit 4132, einen Satz SIMD-Gleitkommaeinheiten (FPUs) 4134 und in mindestens einem Ausführungsbeispiel einen Satz dedizierter ganzzahliger SIMD-ALUs 4135 umfassen. In mindestens einem Ausführungsbeispiel umfassen GRF 4124 und ARF 4126 einen Satz allgemeiner Registerdateien und Architekturregisterdateien, die jedem simultanen Hardware-Thread zugeordnet sind, der in der grafischen Ausführungseinheit 4108 aktiv sein kann. In mindestens einem Ausführungsbeispiel wird der Architekturzustand pro Thread in ARF 4126 verwaltet, während die während der Thread-Ausführung verwendeten Daten in GRF 4124 gespeichert werden. In mindestens einem Ausführungsbeispiel kann der Ausführungsstatus jedes Threads, einschließlich der Befehlszeiger für jeden Thread, in Thread-spezifischen Registern im ARF 4126 gespeichert werden.
  • In mindestens einem Ausführungsbeispiel hat die grafische Ausführungseinheit 4108 eine Architektur, die eine Kombination aus simultanem Multi-Threading (SMT) und feingranularem Interleaved Multi-Threading (IMT) ist. In mindestens einem Ausführungsbeispiel weist die Architektur eine modulare Konfiguration auf, die basierend auf einer angestrebten Anzahl simultaner Threads und der Anzahl von Registern pro Ausführungseinheit zur Designzeit fein abgestimmt werden kann, wobei die Ressourcen der Ausführungseinheit auf die Logik aufgeteilt werden, die zur Ausführung mehrerer simultaner Threads verwendet wird.
  • In mindestens einem Ausführungsbeispiel kann die grafische Ausführungseinheit 4108 mehrere Befehle gemeinsam ausgeben, bei denen es sich jeweils um unterschiedliche Befehle handeln kann. In mindestens einem Ausführungsbeispiel kann der Thread Arbiter 4122 der grafischen Ausführungseinheit 4108 Befehle zur Ausführung an die Sendeeinheit 4130, die Verzweigungseinheit 4142 oder die SIMD FPU(s) 4134 weiterleiten. In mindestens einem Ausführungsbeispiel kann jeder Thread auf 128 allgemeine Register innerhalb des GRF 4124 zugreifen, wobei jedes Register 32 Bytes speichern kann, die als SIMD-8-Element-Vektor von 32-Bit-Datenelementen zugänglich sind. In mindestens einem Ausführungsbeispiel hat jeder Thread der Ausführungseinheit Zugriff auf 4 KByte innerhalb des GRF 4124, obwohl Ausführungsbeispiele nicht so beschränkt sind und in anderen Ausführungsbeispielen mehr oder weniger Registerressourcen bereitgestellt werden können. In mindestens einem Ausführungsbeispiel können bis zu sieben Threads simultan ausgeführt werden, wobei die Anzahl der Threads pro Ausführungseinheit in mindestens einem Ausführungsbeispiel auch variieren kann. In mindestens einem Ausführungsbeispiel, in dem sieben Threads auf 4 KByte zugreifen können, kann der GRF 4124 insgesamt 28 KByte speichern. In mindestens einem Ausführungsbeispiel können flexible Adressierungsmodi erlauben, dass Register gemeinsam adressiert werden, um effektiv breitere Register zu bilden oder um geschichtete rechteckige Blockdatenstrukturen zu repräsentieren.
  • In mindestens einem Ausführungsbeispiel werden Speicheroperationen, Sampleroperationen und andere Systemkommunikationen mit längerer Latenzzeit über „Sende“-Befehle abgewickelt, die von der nachrichtenübermittelnden Sendeeinheit 4130 ausgeführt werden. In mindestens einem Ausführungsbeispiel werden Verzweigungsbefehle an eine dedizierte Verzweigungseinheit 4132 weitergeleitet, um SIMD-Divergenz und eventuelle Konvergenz zu erleichtern.
  • In mindestens einem Ausführungsbeispiel umfasst die grafische Ausführungseinheit 4108 eine oder mehrere SIMD-Gleitkommaeinheiten (FPU(s)) 4134 zur Durchführung von Gleitkommaoperationen. In mindestens einem Ausführungsbeispiel unterstützen die FPU(s) 4134 auch Ganzzahlberechnungen. In mindestens einem Ausführungsbeispiel kann (können) die FPU(s) 4134 bis zu einer Anzahl von M 32-Bit-Gleitkomma- (oder Ganzzahl-) Operationen oder bis zu 2M 16-Bit-Ganzzahl- oder 16-Bit-Gleitkomma-Operationen SIMD-gestützt ausführen. In mindestens einem Ausführungsbeispiel bietet mindestens eine der FPU(s) erweiterte mathematische Funktionen zur Unterstützung von transzendentalen mathematischen Funktionen mit hohem Durchsatz und 64-Bit-Gleitkommaoperationen mit doppelter Genauigkeit. In mindestens einem Ausführungsbeispiel ist auch ein Satz von 8-Bit-Ganzzahl-SIMD-ALUs 4135 vorhanden, die speziell für die Durchführung von Operationen optimiert sein können, die mit maschinellen Lernberechnungen assoziiert sind.
  • In mindestens einem Ausführungsbeispiel können Arrays aus mehreren Instanzen der Grafikausführungseinheit 4108 in einer Gruppierung von Grafikunterkernen (z. B. einem Abschnitt) instanziiert werden. In mindestens einem Ausführungsbeispiel kann die Ausführungseinheit 4108 Anweisungen über eine Vielzahl von Ausführungskanälen ausführen. In mindestens einem Ausführungsbeispiel wird jeder Thread, der von der Grafikausführungseinheit 4108 ausgeführt wird, auf einem anderen Kanal ausgeführt.
  • Die Inferenz- und/oder Trainingslogik 1715 wird zum Inferenzieren und/oder Trainieren von Operationen verwendet, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel können Teile oder die Gesamtheit der Inferenz- und/oder Trainingslogik 1715 in die Ausführungslogik 4100 integriert werden. Darüber hinaus können in mindestens einem Ausführungsbeispiel die hier beschriebenen Inferenzier- und/oder Trainingsvorgänge unter Verwenden einer anderen als der in 17A oder 17B gezeigten Logik durchgeführt werden. In mindestens einem Ausführungsbeispiel können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder Registern (dargestellt oder nicht dargestellt) gespeichert werden, die ALUs der Ausführungslogik 4100 konfigurieren, um einen oder mehrere hierin beschriebene maschinelle Lernalgorithmen, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • 42 zeigt eine Parallelverarbeitungseinheit („PPU“) 4200 gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel ist die PPU 4200 mit einem maschinenlesbaren Code konfiguriert, der, wenn er von der PPU 4200 ausgeführt wird, bewirkt, dass die PPU 4200 einige oder alle der in dieser Offenbarung beschriebenen Prozesse und Techniken ausführt. In mindestens einem Ausführungsbeispiel ist die PPU 4200 ein Multithreading-Prozessor, der auf einem oder mehreren Geräten mit integrierter Schaltung implementiert ist und der Multithreading als eine Technik zum Verbergen von Latenzzeiten verwendet, die dafür ausgelegt ist, computerlesbare Befehle (auch als maschinenlesbare Befehle oder einfach Befehle bezeichnet) auf mehreren Threads parallel zu verarbeiten. In mindestens einem Ausführungsbeispiel bezieht sich ein Thread auf einen Ausführungsfaden und ist eine Instanziierung eines Befehlssatzes, der für die Ausführung durch die PPU 4200 konfiguriert ist. In mindestens einem Ausführungsbeispiel ist die PPU 4200 eine Grafikverarbeitungseinheit („GPU“), die so konfiguriert ist, dass sie eine Grafik-Rendering-Pipeline zur Verarbeitung dreidimensionaler („3D“) Grafikdaten implementiert, um zweidimensionale („2D“) Bilddaten für die Anzeige auf einem Gerät wie einer Flüssigkristallanzeige („LCD“) zu generieren. In mindestens einem Ausführungsbeispiel wird die PPU 4200 verwendet, um Berechnungen wie lineare Algebra-Operationen und Operationen des maschinellen Lernens durchzuführen. 42 zeigt einen beispielhaften Parallelprozessor, der nur zu beispielhaften Zwecken dient und als nicht einschränkendes Beispiel für Prozessorarchitekturen zu verstehen ist, die im Rahmen dieser Offenbarung in Betracht gezogen werden, und dass jeder geeignete Prozessor zur Ergänzung und/oder zum Ersatz desselben verwendet werden kann.
  • In mindestens einem Ausführungsbeispiel sind eine oder mehrere PPUs 4200 so konfiguriert, dass sie Anwendungen für High Performance Computing („HPC“), Datenzentren und maschinelles Lernen beschleunigen. In mindestens einem Ausführungsbeispiel ist die PPU 4200 so konfiguriert, dass sie Deep-Learning-Systeme und -Anwendungen beschleunigt, die mindestens die folgenden, nicht einschränkenden Beispiele umfassen: autonome Fahrzeugplattformen, Deep Learning, hochpräzise Sprach-, Bild- und Texterkennungssysteme, intelligente Videoanalyse, Molekularsimulationen, Arzneimittelentdeckung, Krankheitsdiagnose, Wettervorhersage, Big-Data-Analytik, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotik, Fabrikautomatisierung, Echtzeit-Sprachübersetzung, Online-Suchoptimierung und personalisierte Benutzerempfehlungen und mehr.
  • In mindestens einem Ausführungsbeispiel umfasst die PPU 4200 unter anderem eine Eingabe/Ausgabe-Einheit 4206, eine Front-End-Einheit 4210, eine Planer-Einheit 4212, eine Arbeitsverteilungseinheit 4214, einen Hub 4216, eine Crossbar („Xbar“) 4220, einen oder mehrere allgemeine Verarbeitungscluster („GPCs“) 4218 und eine oder mehrere Partitionseinheiten („Speicherpartitionseinheiten“) 4222. In mindestens einem Ausführungsbeispiel ist die PPU 4200 mit einem Host-Prozessor oder anderen PPUs 4200 über eine oder mehrere Hochgeschwindigkeits-GPU-Verbindungen („GPU-Interconnects“) 4208 verbunden. In mindestens einem Ausführungsbeispiel ist die PPU 4200 über eine Zwischenverbindung 4202 mit einem Host-Prozessor oder anderen peripheren Geräten verbunden. In mindestens einem Ausführungsbeispiel ist die PPU 4200 mit einem lokalen Speicher verbunden, der ein oder mehrere Speichergeräte („Speicher“) 4204 umfasst. In mindestens einem Ausführungsbeispiel umfassen die Speichergeräte 4204 ohne Einschränkung ein oder mehrere Dynamic Random Access Memory („DRAM“) Geräte. In mindestens einem Ausführungsbeispiel sind ein oder mehrere DRAM-Geräte als HBM-Subsysteme konfiguriert und/oder konfigurierbar, wobei mehrere DRAM-Dies in jedem Gerät gestapelt sind.
  • In mindestens einem Ausführungsbeispiel kann sich die Hochgeschwindigkeits-GPU-Verbindungseinheit 4208 auf eine drahtbasierte Multi-Lane-Kommunikationsverbindung beziehen, die von Systemen verwendet wird, um eine oder mehrere PPUs 4200 in Kombination mit einer oder mehreren Zentraleinheiten („CPUs“) zu skalieren und zu umfassen, und die Cache-Kohärenz zwischen PPUs 4200 und CPUs sowie CPU-Mastering unterstützt. In mindestens einem Ausführungsbeispiel werden Daten und/oder Befehle durch die Hochgeschwindigkeits-GPU-Verbindungseinheit 4208 über den Hub 4216 zu/von anderen Einheiten der PPU 4200 übertragen, wie z. B. einer oder mehreren Copy-Engines, Video-Encodern, Video-Decodern, Energieverwaltungseinheiten und anderen Komponenten, die in 42 nicht explizit gezeigt werden können.
  • In mindestens einem Ausführungsbeispiel ist die E/A-Einheit 4206 so konfiguriert, dass sie Kommunikationen (z. B. Befehle, Daten) von einem Host-Prozessor (in 42 nicht dargestellt) über den Systembus 4202 sendet und empfängt. In mindestens einem Ausführungsbeispiel kommuniziert die E/A-Einheit 4206 mit dem Host-Prozessor direkt über den Systembus 4202 oder über ein oder mehrere zwischengeschaltete Geräte, wie z. B. eine Speicherbrücke. In mindestens einem Ausführungsbeispiel kann die E/A-Einheit 4206 mit einem oder mehreren anderen Prozessoren, z. B. einer oder mehreren PPUs 4200, über den Systembus 4202 kommunizieren. In mindestens einem Ausführungsbeispiel implementiert die E/A-Einheit 4206 eine Peripheral Component Interconnect Express („PCIe“)-Schnittstelle für die Kommunikation über einen PCIe-Bus. In mindestens einem Ausführungsbeispiel implementiert die E/A-Einheit 4206 Schnittstellen für die Kommunikation mit externen Geräten.
  • In mindestens einem Ausführungsbeispiel dekodiert die E/A-Einheit 4206 Pakete, die über den Systembus 4202 empfangen werden. In mindestens einem Ausführungsbeispiel repräsentieren mindestens einige Pakete Befehle, die so konfiguriert sind, dass sie die PPU 4200 veranlassen, verschiedene Operationen durchzuführen. In mindestens einem Ausführungsbeispiel überträgt die E/A-Einheit 4206 dekodierte Befehle an verschiedene andere Einheiten der PPU 4200, wie sie durch die Befehle spezifiziert sind. In mindestens einem Ausführungsbeispiel werden die Befehle an die Front-End-Einheit 4210 und/oder an den Hub 4216 oder andere Einheiten der PPU 4200, wie eine oder mehrere Copy-Engines, einen Video-Encoder, einen Video-Decoder, eine Energieverwaltungseinheit usw., übertragen, (in 42 nicht explizit gezeigt). In mindestens einem Ausführungsbeispiel ist die E/A-Einheit 4206 so konfiguriert, dass sie die Kommunikation zwischen und unter verschiedenen logischen Einheiten der PPU 4200 weiterleitet.
  • In mindestens einem Ausführungsbeispiel kodiert ein vom Host-Prozessor ausgeführtes Programm einen Befehlsstrom in einem Puffer, der der PPU 4200 Arbeitslasten zur Verarbeitung bereitstellt. In mindestens einem Ausführungsbeispiel umfasst eine Arbeitslast Befehle und Daten, die von diesen Befehlen verarbeitet werden sollen. In mindestens einem Ausführungsbeispiel ist der Puffer ein Bereich in einem Speicher, auf den sowohl der Host-Prozessor als auch die PPU 4200 zugreifen können (z. B. Lesen/Schreiben) - eine Host-Schnittstelleneinheit kann so konfiguriert sein, dass sie auf den Puffer in einem mit dem Systembus 4202 verbundenen Systemspeicher über Speicheranforderungen zugreift, die von der E/A-Einheit 4206 über den Systembus 4202 übertragen werden. In mindestens einem Ausführungsbeispiel schreibt der Hostprozessor einen Befehlsstrom in den Puffer und überträgt dann einen Zeiger auf den Beginn des Befehlsstroms an die PPU 4200, so dass die Front-End-Einheit 4210 Zeiger auf einen oder mehrere Befehlsströme empfängt und einen oder mehrere Befehlsströme verwaltet, indem sie Befehle aus den Befehlsströmen liest und Befehle an verschiedene Einheiten der PPU 4200 weiterleitet.
  • In mindestens einem Ausführungsbeispiel ist die Front-End-Einheit 4210 mit der Planer-Einheit 4212 gekoppelt, die verschiedene GPCs 4218 konfiguriert, um Aufgaben zu verarbeiten, die durch einen oder mehrere Befehlsströme definiert sind. In mindestens einem Ausführungsbeispiel ist die Planer-Einheit 4212 so konfiguriert, dass sie Zustandsinformationen bezüglich verschiedener, von der Planer-Einheit 4212 verwalteter Aufgaben nachführt, wobei die Zustandsinformationen anzeigen können, welchem der GPCs 4218 eine Aufgabe zugewiesen ist, ob die Aufgabe aktiv oder inaktiv ist, welche Prioritätsstufe der Aufgabe zugeordnet ist und so weiter. In mindestens einem Ausführungsbeispiel verwaltet die Planer-Einheit 4212 die Ausführung einer Vielzahl von Aufgaben auf einem oder mehreren der GPCs 4218.
  • In mindestens einem Ausführungsbeispiel ist die Planer-Einheit 4212 mit der Arbeitsverteilungseinheit 4214 gekoppelt, die so konfiguriert ist, dass sie Aufgaben zur Ausführung auf den GPCs 4218 verteilt. In mindestens einem Ausführungsbeispiel verfolgt die Arbeitsverteilungseinheit 4214 eine Anzahl von geplanten Aufgaben, die von der Planer-Einheit 4212 empfangen wurden, und die Arbeitsverteilungseinheit 4214 verwaltet einen Pool ausstehender Aufgaben und einen Pool aktiver Aufgaben für jeden GPC 4218. In mindestens einem Ausführungsbeispiel umfasst der Pool ausstehender Aufgaben eine Anzahl von Slots (z.B. 32 Slots), die Aufgaben enthalten, die zur Verarbeitung durch einen bestimmten GPC 4218 zugewiesen sind; der Pool aktiver Aufgaben kann eine Anzahl von Slots (z.B. 4 Slots) für Aufgaben umfassen, die aktiv von den GPCs 4218 verarbeitet werden, so dass, wenn einer der GPCs 4218 die Ausführung einer Aufgabe abschließt, diese Aufgabe aus dem Pool aktiver Aufgaben für den GPC 4218 entfernt wird und eine der anderen Aufgaben aus dem Pool ausstehender Aufgaben ausgewählt und zur Ausführung auf dem GPC 4218 geplant wird. In mindestens einem Ausführungsbeispiel wird, wenn eine aktive Aufgabe auf dem GPC 4218 inaktiv ist, beispielsweise während des Wartens auf die Auflösung einer Datenabhängigkeit, die aktive Aufgabe aus dem GPC 4218 entfernt und in den Pool aktiver Aufgaben zurückgeführt, während eine andere Aufgabe aus dem Pool ausstehender Aufgaben ausgewählt und für die Ausführung auf dem GPC 4218 geplant wird.
  • In mindestens einem Ausführungsbeispiel kommuniziert die Arbeitsverteilungseinheit 4214 mit einem oder mehreren GPCs 4218 über XBar 4220. In mindestens einem Ausführungsbeispiel ist XBar 4220 ein Verbindungsnetzwerk, das viele Einheiten der PPU 4200 mit anderen Einheiten der PPU 4200 koppelt und konfiguriert werden kann, um die Arbeitsverteilungseinheit 4214 mit einem bestimmten GPC 4218 zu koppeln. In mindestens einem Ausführungsbeispiel können auch eine oder mehrere andere Einheiten der PPU 4200 über den Hub 4216 mit der XBar 4220 verbunden sein.
  • In mindestens einem Ausführungsbeispiel werden Aufgaben von der Planer-Einheit 4212 verwaltet und von der Arbeitsverteilungseinheit 4214 an einen der GPCs 4218 weitergeleitet. GPC 4218 ist konfiguriert, um Aufgaben zu verarbeiten und Ergebnisse zu generieren. In mindestens einem Ausführungsbeispiel können die Ergebnisse von anderen Aufgaben innerhalb des GPC 4218 verwendet, über die XBar 4220 an einen anderen GPC 4218 weitergeleitet oder im Speicher 4204 abgelegt werden. In mindestens einem Ausführungsbeispiel können Ergebnisse in den Speicher 4204 über Partitionseinheiten 4222 geschrieben werden, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in/aus dem Speicher 4204 implementieren. In mindestens einem Ausführungsbeispiel können die Ergebnisse über eine Hochgeschwindigkeits-GPU-Verbindung 4208 an eine andere PPU 4204 oder CPU übertragen werden. In mindestens einem Ausführungsbeispiel umfasst die PPU 4200 ohne Einschränkung eine Anzahl U von Partitionseinheiten 4222, die der Anzahl von separaten und unterschiedlichen Speichergeräten 4204 entspricht, die mit der PPU 4200 verbunden sind. In mindestens einem Ausführungsbeispiel wird die Partitionseinheit 4222 hier in Verbindung mit 44 im Detail beschrieben.
  • In mindestens einem Ausführungsbeispiel führt ein Host-Prozessor einen Treiberkernel aus, der eine Anwendungsprogrammierschnittstelle („API“) implementiert, die es einer oder mehreren auf dem Host-Prozessor ausgeführten Anwendungen ermöglicht, Operationen zur Ausführung auf der PPU 4200 zu planen. In mindestens einem Ausführungsbeispiel werden mehrere Rechenanwendungen simultan von der PPU 4200 ausgeführt, und die PPU 4200 bietet Isolierung, Dienstgüte („QoS“) und unabhängige Adressräume für mehrere Rechenanwendungen. In mindestens einem Ausführungsbeispiel generiert eine Anwendung Anweisungen (z. B. in Form von API-Aufrufen), die den Treiberkernel veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 4200 zu generieren, und der Treiberkernel gibt Aufgaben an einen oder mehrere Streams aus, die von der PPU 4200 verarbeitet werden. In mindestens einem Ausführungsbeispiel umfasst jede Aufgabe eine oder mehrere Gruppen von zusammenhängenden Threads, die als Warp bezeichnet werden können. In mindestens einem Ausführungsbeispiel umfasst ein Warp eine Vielzahl von zusammenhängenden Threads (z. B. 32 Threads), die parallel ausgeführt werden können. In mindestens einem Ausführungsbeispiel können sich zusammenarbeitende Threads auf eine Vielzahl von Threads beziehen, die Anweisungen zur Ausführung einer Aufgabe umfassen und Daten über gemeinsam genutzte Speicher austauschen. In mindestens einem Ausführungsbeispiel werden Threads und kooperierende Threads gemäß mindestens einem Ausführungsbeispiel in Verbindung mit 44 ausführlicher beschrieben.
  • Die Inferenz- und/oder Trainingslogik 1715 wird zum Inferenzieren und/oder Trainieren von Operationen verwendet, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B bereitgestellt. In mindestens einem Ausführungsbeispiel wird der Deep-Learning-Anwendungsprozessor dazu verwendet, ein maschinelles Lernmodell, wie z. B. ein neuronales Netzwerk, zu trainieren, um der PPU 4200 bereitgestellte Informationen vorherzusagen oder zu inferieren. In mindestens einem Ausführungsbeispiel wird der Deep Learning-Anwendungsprozessor 4200 verwendet, um basierend auf einem trainierten maschinellen Lernmodell (z. B. einem neuronalen Netzwerk), das von einem anderen Prozessor oder System oder von der PPU 4200 trainiert wurde, Informationen zu inferieren oder vorherzusagen. In mindestens einem Ausführungsbeispiel kann die PPU 4200 dazu verwendet werden, einen oder mehrere der hierin beschriebenen Anwendungsfälle für ein neuronales Netzwerk durchzuführen.
  • 43 zeigt einen allgemeinen Verarbeitungscluster („GPC“) 4300 gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel handelt es sich bei GPC 4300 um GPC 4218 aus 42. In mindestens einem Ausführungsbeispiel enthält jeder GPC 4300, ohne Einschränkung, eine Anzahl von Hardware-Einheiten zur Verarbeitung von Aufgaben, und jeder GPC 4300 umfasst, ohne Einschränkung, einen Pipeline-Manager 4302, eine Pre-Raster-Operations-Einheit („PROP“) 4304, eine Raster-Engine 4308, eine Arbeitsverteilungs-Crossbar („WDX“) 4316, eine Speicher-Management-Einheit („MMU“) 4318, einen oder mehrere Datenverarbeitungs-Cluster („DPCs“) 4306 und jede geeignete Kombination von Teilen.
  • In mindestens einem Ausführungsbeispiel wird der Betrieb des GPC 4300 vom Pipeline-Manager 4302 gesteuert. In mindestens einem Ausführungsbeispiel verwaltet der Pipeline-Manager 4302 die Konfiguration eines oder mehrerer DPCs 4306 zur Verarbeitung von Aufgaben, die dem GPC 4300 zugewiesen sind. In mindestens einem Ausführungsbeispiel konfiguriert der Pipeline-Manager 4302 mindestens einen von einem oder mehreren DPCs 4306, um mindestens einen Teil einer Grafik-Rendering-Pipeline zu implementieren. In mindestens einem Ausführungsbeispiel ist der DPC 4306 so konfiguriert, dass er ein Schattierungsprogramm auf einem programmierbaren Streaming-Multiprozessor („SM“) 4314 ausführt. In mindestens einem Ausführungsbeispiel ist der Pipeline-Manager 4302 so konfiguriert, dass er von einer Arbeitsverteilungseinheit empfangene Pakete an geeignete logische Einheiten innerhalb des GPC 4300 weiterleitet, wobei einige Pakete an Hardware-Einheiten mit fester Funktion im PROP 4304 und/oder in der Rasterengine 4308 weitergeleitet werden können, während andere Pakete an DPCs 4306 zur Verarbeitung durch eine Primitiv-Engine 4312 oder SM 4314 weitergeleitet werden können. In mindestens einem Ausführungsbeispiel ist der Pipeline-Manager 4302 so konfiguriert, dass mindestens einer der DPCs 4306 ein Modell eines neuronalen Netzwerks und/oder eine Rechenpipeline implementiert.
  • In mindestens einem Ausführungsbeispiel ist die PROP-Einheit 4304 so konfiguriert, dass sie die von der Rasterengine 4308 und den DPCs 4306 generierten Daten an eine Raster Operations („ROP“)-Einheit in der Partitionseinheit 4222 weiterleitet, die oben in Verbindung mit 42 ausführlicher beschrieben ist. In mindestens einem Ausführungsbeispiel ist die PROP-Einheit 4304 so konfiguriert, dass sie Optimierungen für die Farbmischung durchführt, Pixeldaten organisiert, Adressübersetzungen vornimmt und vieles mehr. In mindestens einem Ausführungsbeispiel enthält die Rasterengine 4308 ohne Einschränkung eine Reihe von Hardware-Einheiten mit fester Funktion, die so konfiguriert sind, dass sie verschiedene Rasteroperationen durchführen, und die Rasterengine 4308 umfasst ohne Einschränkung eine Setup-Engine, eine Grobraster-Engine, eine Culling-Engine, eine Clipping-Engine, eine Feinraster-Engine, eine Tile-Coalescing-Engine und jede geeignete Kombination davon. In mindestens einem Ausführungsbeispiel empfängt die Setup-Engine transformierte Vertices und generiert Ebenengleichungen, die mit einer durch Vertices definierten geometrischen Primitive assoziiert sind; die Ebenengleichungen werden an eine grobe Rasterengine übertragen, um Abdeckungsinformationen (z. B. eine x-, y-Abdeckungsmaske für eine Kachel) für die Primitive zu generieren; die Ausgabe der groben Rasterengine wird an eine Ausblend-Engine übertragen, in der Fragmente, die mit der Primitive assoziiert sind und einen z-Test nicht bestehen, abgeschnitten werden, und an eine Abschneide-Engine übertragen, in der Fragmente, die außerhalb eines Sichtkegelstumpfes liegen, abgeschnitten werden. In mindestens einem Ausführungsbeispiel werden die Fragmente, die das Abschneiden und Ausblenden überstehen, an eine feine Rasterengine weitergeleitet, um Attribute für Pixelfragmente basierend auf den von der Setup-Engine generierten Ebenengleichungen zu generieren. In mindestens einem Ausführungsbeispiel umfasst die Ausgabe der Rasterengine 4308 Fragmente, die von einer beliebigen geeigneten Einheit, wie z. B. einer in DPC 4306 implementierten Fragment-Schattierung, verarbeitet werden.
  • In mindestens einem Ausführungsbeispiel umfasst jedes in GPC 4300 enthaltene DPC 4306 ohne Einschränkung ein M-Pipe-Steuergerät („MPC“) 4310, eine primitive Engine 4312, eine oder mehrere SMs 4314 und jede geeignete Kombination davon. In mindestens einem Ausführungsbeispiel steuert MPC 4310 den Betrieb von DPC 4306 und leitet die vom Pipeline-Manager 4302 empfangenen Pakete an die entsprechenden Einheiten in DPC 4306 weiter. In mindestens einem Ausführungsbeispiel werden mit einem Vertex assoziierte Pakete an die primitive Engine 4312 weitergeleitet, die so konfiguriert ist, dass sie mit dem Vertex assoziierte Vertex-Attribute aus dem Speicher holt; im Gegensatz dazu können mit einem Schattierungsprogramm assoziierte Pakete an SM 4314 übertragen werden.
  • In mindestens einem Ausführungsbeispiel umfasst SM 4314 ohne Einschränkung einen programmierbaren Streaming-Prozessor, der für die Verarbeitung von Aufgaben konfiguriert ist, die durch eine Anzahl von Threads repräsentiert werden. In mindestens einem Ausführungsbeispiel ist SM 4314 mit mehreren Threads ausgestattet und so konfiguriert, dass er eine Vielzahl von Threads (z. B. 32 Threads) aus einer bestimmten Gruppe von Threads gleichzeitig ausführt und eine SIMD-Architektur („Single-Instruction, Multiple-Data“) implementiert, bei der jeder Thread in einer Gruppe von Threads (z. B. ein Warp) so konfiguriert ist, dass er einen anderen Datensatz basierend auf demselben Befehlssatz verarbeitet. In mindestens einem Ausführungsbeispiel führen alle Threads in einer Gruppe von Threads dieselben Befehle aus. In mindestens einem Ausführungsbeispiel implementiert SM 4314 eine Single-Instruction, Multiple Thread („SIMT“)-Architektur, wobei jeder Thread in einer Gruppe von Threads so konfiguriert ist, dass er basierend auf demselben Befehlssatz einen anderen Datensatz verarbeitet, wobei jedoch die einzelnen Threads in der Gruppe von Threads während der Ausführung divergieren können. In mindestens einem Ausführungsbeispiel werden ein Programmzähler, ein Aufrufstapel und ein Ausführungsstatus für jeden Warp beibehalten, was eine Gleichzeitigkeit zwischen Warps und eine serielle Ausführung innerhalb von Warps ermöglicht, wenn Threads innerhalb eines Warps divergieren. In einem anderen Ausführungsbeispiel werden ein Programmzähler, ein Aufrufstapel und ein Ausführungsstatus für jeden einzelnen Thread beibehalten, was eine gleiche Gleichzeitigkeit zwischen allen Threads innerhalb und zwischen Warps ermöglicht. In mindestens einem Ausführungsbeispiel wird der Ausführungsstatus für jeden einzelnen Thread beibehalten, und Threads, die dieselben Befehle ausführen, können zur Verbesserung der Effizienz zusammengeführt und parallel ausgeführt werden. Mindestens ein Ausführungsbeispiel von SM 4314 wird hier im Detail beschrieben.
  • In mindestens einem Ausführungsbeispiel stellt die MMU 4318 eine Schnittstelle zwischen dem GPC 4300 und der Speicherpartitionseinheit (z. B. der Partitionseinheit 4222 in 42) bereit, und die MMU 4318 sorgt für die Übersetzung virtueller Adressen in physikalische Adressen, den Speicherschutz und die Arbitrierung von Speicheranforderungen. In mindestens einem Ausführungsbeispiel stellt die MMU 4318 einen oder mehrere Übersetzungs-Lookaside-Puffer („TLBs“) zur Verfügung, um die Übersetzung von virtuellen Adressen in physische Adressen im Speicher durchzuführen.
  • Die Inferenz- und/oder Trainingslogik 1715 wird zum Inferenzieren und/oder Trainieren von Operationen verwendet, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel wird ein Deep-Learning-Anwendungsprozessor verwendet, um ein maschinelles Lernmodell, wie z. B. ein neuronales Netzwerk, zu trainieren, um dem GPC 4300 bereitgestellte Informationen vorherzusagen oder zu inferieren. In mindestens einem Ausführungsbeispiel wird GPC 4300 verwendet, um Informationen basierend auf einem trainierten maschinellen Lernmodell (z. B. einem neuronalen Netzwerk), das von einem anderen Prozessor oder System oder von GPC 4300 trainiert wurde, zu inferieren oder vorherzusagen. In mindestens einem Ausführungsbeispiel kann GPC 4300 verwendet werden, um einen oder mehrere hierin beschriebene Anwendungsfalle eines neuronalen Netzwerks durchzuführen.
  • 44 zeigt eine Speicherpartitionseinheit 4400 einer Parallelverarbeitungseinheit („PPU“) gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel umfasst die Speicherpartitionseinheit 4400 ohne Einschränkung eine Rasteroperationseinheit 4402 („ROP“), einen Level-1-Cache 4404 („L2“), eine Speicherschnittstelle 4406 und eine beliebige geeignete Kombination davon. Die Speicherschnittstelle 4406 ist mit dem Speicher verbunden. Die Speicherschnittstelle 4406 kann 32-, 64-, 128-, 1024-Bit-Datenbusse oder Ähnliches für die Hochgeschwindigkeitsdatenübertragung implementieren. In mindestens einem Ausführungsbeispiel verfügt die PPU über U Speicherschnittstellen 4406, eine Speicherschnittstelle 4406 pro Paar Partitionseinheiten 4400, wobei jedes Paar Partitionseinheiten 4400 mit einem entsprechenden Speichergerät verbunden ist. In mindestens einem Ausführungsbeispiel kann die PPU beispielsweise mit bis zu Y Speichergeräten verbunden sein, wie z. B. Speicherstapeln mit hoher Bandbreite oder synchronem Dynamic Random Access Memory („GDDR5 SDRAM“) der Version 5 mit doppelter Datenrate.
  • In mindestens einem Ausführungsbeispiel implementiert die Speicherschnittstelle 4406 eine Speicherschnittstelle der zweiten Generation mit hoher Bandbreite („HBM2“), und Y ist gleich der Hälfte von U. In mindestens einem Ausführungsbeispiel befinden sich die HBM2-Speicherstapel in demselben Gehäuse wie die PPU, was im Vergleich zu herkömmlichen GDDR5-SDRAM-Systemen erhebliche Energie- und Flächeneinsparungen ermöglicht. In mindestens einem Ausführungsbeispiel enthält jeder HBM2-Stapel ohne Einschränkung vier Speicherchips und Y ist gleich 4, wobei jeder HBM2-Stapel zwei 128-Bit-Kanäle pro Chip für insgesamt 8 Kanäle und eine Datenbusbreite von 1024 Bit enthält. In mindestens einem Ausführungsbeispiel unterstützt der Speicher den Single-Error Correcting Double-Error Detecting („SECDED“) Error Correction Code („ECC“) zum Schutz der Daten. ECC bietet eine höhere Zuverlässigkeit für Datenverarbeitungsanwendungen, die empfindlich auf Datenverfälschung reagieren.
  • In mindestens einem Ausführungsbeispiel implementiert die PPU eine mehrstufige Speicherhierarchie. In mindestens einem Ausführungsbeispiel unterstützt die Speicherpartitionseinheit 4400 einen einheitlichen Speicher, um einen einzigen einheitlichen virtuellen Adressraum für die Zentraleinheit („CPU“) und den PPU-Speicher bereitzustellen und die gemeinsame Nutzung von Daten zwischen virtuellen Speichersystemen zu ermöglichen. In mindestens einem Ausführungsbeispiel wird die Häufigkeit von a44esses durch eine PPU an Speicher, der sich auf anderen Prozessoren befindet, verfolgt, um sicherzustellen, dass Speicherseiten in den physischen Speicher der PPU verschoben werden, die häufiger a44essing pages ist. In mindestens einem Ausführungsbeispiel unterstützt die Hochgeschwindigkeits-GPU-Verbindung 4208 Adressübersetzungsdienste, die es der PPU ermöglichen, direkt auf die Seitentabellen der CPU zuzugreifen und der PPU vollen a44ess auf den CPU-Speicher zu ermöglichen.
  • In mindestens einem Ausführungsbeispiel übertragen Copy-Engines Daten zwischen mehreren PPUs oder zwischen PPUs und CPUs. In mindestens einem Ausführungsbeispiel können Copy-Engines Seitenfehler für Adressen generieren, die nicht in Seitentabellen zugeordnet sind, und die Speicherpartitionseinheit 4400 kümmert sich dann um die Generierung von Seitenfehlern und ordnet die Adressen in die Seitentabelle ein, woraufhin die Copy-Engine die Übertragung durchführt. In mindestens einem Ausführungsbeispiel wird der Speicher für mehrere Copy-Engine-Operationen zwischen mehreren Prozessoren gepinnt (d. h. nicht auslagerbar), wodurch der verfügbare Speicher erheblich reduziert wird. In mindestens einem Ausführungsbeispiel können mit Hardware Page Faulting Adressen an Copy-Engines weitergegeben werden, ohne Rücksicht darauf, ob Speicherseiten resident sind, und der Kopiervorgang ist transparent.
  • Gemäß mindestens einem Ausführungsbeispiel werden Daten aus dem Speicher 4204 von 42 oder einem anderen Systemspeicher von der Speicherpartitionseinheit 4400 geholt und im L2-Cache 4404 gespeichert, der sich auf dem Chip befindet und von verschiedenen GPCs gemeinsam genutzt wird. Jede Speicherpartitionseinheit 4400 enthält in mindestens einem Ausführungsbeispiel ohne Einschränkung mindestens einen Teil des L2-Cache, der mit einem entsprechenden Speichergerät assoziiert ist. In mindestens einem Ausführungsbeispiel sind Caches der unteren Ebene in verschiedenen Einheiten innerhalb von GPCs implementiert. In mindestens einem Ausführungsbeispiel kann jeder SM 4314 einen Level-1-Cache („L1“) implementieren, wobei der L1-Cache ein privater Speicher ist, der einem bestimmten SM 4314 zugeordnet ist, und Daten aus dem L2-Cache 4404 geholt und in jedem der L1-Caches zur Verarbeitung in den funktionalen Einheiten der SMs 4314 gespeichert werden. In mindestens einem Ausführungsbeispiel ist der L2-Cache 4404 mit der Speicherschnittstelle 4406 und der XBar 4220 verbunden.
  • Die ROP-Einheit 4402 führt in mindestens einem Ausführungsbeispiel Grafikrasteroperationen durch, die sich auf die Pixelfarbe beziehen, wie z. B. Farbkomprimierung, Pixelüberblendung und mehr. In mindestens einem Ausführungsbeispiel implementiert die ROP-Einheit 4402 eine Tiefenprüfung in Verbindung mit der Rasterengine 4308 und empfängt eine Tiefe für einen Sample-Ort, der mit einem Pixelfragment von der Culling-Engine der Rasterengine 4308 assoziiert ist. In mindestens einem Ausführungsbeispiel wird die Tiefe mit einer entsprechenden Tiefe in einem Tiefenpuffer für eine dem Fragment zugeordnete Sample-Position verglichen. In mindestens einem Ausführungsbeispiel aktualisiert die ROP-Einheit 4402 den Tiefenpuffer und überträgt das Ergebnis des Tiefentests an die Rasterengine 4308, wenn das Fragment den Tiefentest für die Sample-Position besteht. Es ist zu beachten, dass sich die Anzahl der Partitionseinheiten 4400 von der Anzahl der GPCs unterscheiden kann und daher jede ROP-Einheit 4402 in mindestens einem Ausführungsbeispiel mit jedem der GPCs gekoppelt sein kann. In mindestens einem Ausführungsbeispiel verfolgt die ROP-Einheit 4402 die von verschiedenen GPCs empfangenen Pakete und bestimmt, an welche ein von der ROP-Einheit 4402 generiertes Ergebnis über XBar 4220 weitergeleitet wird.
  • 45 zeigt gemäß mindestens einem Ausführungsbeispiel einen Streaming-Multiprozessor („SM“) 4500. In mindestens einem Ausführungsbeispiel handelt es sich bei SM 4500 um SM aus 43. In mindestens einem Ausführungsbeispiel enthält SM 4500 ohne Einschränkung einen Befehls-Cache 4502; eine oder mehrere Planer-Einheiten 4504; eine Registerdatei 4508; einen oder mehrere Verarbeitungskerne („Kerne“) 4510; eine oder mehrere Sonderfunktionseinheiten („SFUs“) 4512; eine oder mehrere Lade-/Speichereinheiten („LSUs“) 4514; ein Netzwerk für die Verbindung 4516; einen gemeinsam genutzten Speicher/Level-1-Cache 4518; und jede geeignete Kombination davon. In mindestens einem Ausführungsbeispiel verteilt eine Arbeitsverteilungseinheit Aufgaben zur Ausführung auf allgemeinen Verarbeitungsclustern („GPCs“) von Parallelverarbeitungseinheiten („PPUs“), und jede Aufgabe wird einem bestimmten Datenverarbeitungscluster („DPC“) innerhalb eines GPCs zugeordnet, und wenn die Aufgabe mit einem Schattierungsprogramm assoziiert ist, wird die Aufgabe einem der SMs 4500 zugeordnet. In mindestens einem Ausführungsbeispiel empfängt die Planer-Einheit 4504 Aufgaben von der Arbeitsverteilungseinheit und verwaltet die Planung von Anweisungen für einen oder mehrere Thread-Blöcke, die dem SM 4500 zugewiesen sind. In mindestens einem Ausführungsbeispiel plant die Planer-Einheit 4504 Thread-Blöcke für die Ausführung als Warps von parallelen Threads, wobei jedem Thread-Block mindestens ein Warp zugewiesen wird. In mindestens einem Ausführungsbeispiel führt jeder Warp Threads aus. In mindestens einem Ausführungsbeispiel verwaltet die Planer-Einheit 4504 eine Vielzahl verschiedener Thread-Blöcke, wobei sie den verschiedenen Thread-Blöcken Warps zuweist und dann während jedes Taktzyklus Anweisungen aus einer Vielzahl verschiedener Cooperative Groups an verschiedene Funktionseinheiten (z.B. Verarbeitungskerne 4510, SFUs 4512 und LSUs 4514) verteilt.
  • In mindestens einem Ausführungsbeispiel können sich Cooperative Groups auf ein Programmiermodell zum Organisieren von Gruppen kommunizierender Threads beziehen, das es Entwicklern ermöglicht, die Granularität auszudrücken, mit der Threads kommunizieren, und so eine reichhaltigere, effizientere parallele Dekomposition zu ermöglichen. In mindestens einem Ausführungsbeispiel unterstützen kooperative Start-APIs die Synchronisierung zwischen Thread-Blöcken zur Ausführung paralleler Algorithmen. In mindestens einem Ausführungsbeispiel bieten Anwendungen herkömmlicher Programmiermodelle ein einziges, einfaches Konstrukt für die Synchronisierung kooperierender Threads: eine Barriere über alle Threads eines Thread-Blocks (z. B. die Funktion syncthreads()). In mindestens einem Ausführungsbeispiel können Programmierer jedoch Gruppen von Threads mit einer geringeren Granularität als der des Thread-Blocks definieren und innerhalb der definierten Gruppen synchronisieren, um eine höhere Leistung, Design-Flexibilität und Software-Wiederverwendung in Form von gemeinsamen gruppenweiten Funktionsschnittstellen zu ermöglichen. In mindestens einem Ausführungsbeispiel können Programmierer mit Cooperative Groups explizit Gruppen von Threads mit Subblock- (d. h. so klein wie ein einzelner Thread) und Multiblock-Granularität definieren und kollektive Operationen wie Synchronisation auf Threads in einer Cooperative Group betreiben. Das Programmiermodell unterstützt eine saubere Komposition über Softwaregrenzen hinweg, so dass Bibliotheken und Dienstprogramme innerhalb ihres lokalen Kontexts sicher synchronisieren können, ohne Annahmen über Konvergenz treffen zu müssen. In mindestens einem Ausführungsbeispiel ermöglichen Cooperative Groups-Primitive neue Muster kooperativer Parallelität, die ohne Einschränkung Producer-Consumer-Parallelität, opportunistische Parallelität und globale Synchronisierung über ein gesamtes Gitter von Thread-Blöcken umfassen.
  • In mindestens einem Ausführungsbeispiel ist eine Verteilungseinheit 4506 so konfiguriert, dass sie Befehle an eine oder mehrere der Funktionalitäten überträgt, und die Planer-Einheit 4504 umfasst ohne Einschränkung zwei Verteilungseinheiten 4506, die es ermöglichen, dass in jedem Taktzyklus zwei verschiedene Befehle aus demselben Warp verschickt werden. In mindestens einem Ausführungsbeispiel enthält jede Planer-Einheit 4504 eine einzelne Verteilungseinheit 4506 oder mehrere Verteilungseinheiten 4506.
  • In mindestens einem Ausführungsbeispiel enthält jedes SM 4500 in mindestens einem Ausführungsbeispiel ohne Einschränkung eine Registerdatei 4508, die einen Satz von Registern für funktionale Einheiten des SM 4500 bereitstellt. In mindestens einem Ausführungsbeispiel ist die Registerdatei 4508 zwischen den einzelnen funktionalen Einheiten aufgeteilt, so dass jeder funktionalen Einheit ein bestimmter Teil der Registerdatei 4508 zugeordnet ist. In mindestens einem Ausführungsbeispiel ist die Registerdatei 4508 auf verschiedene Warps aufgeteilt, die vom SM 4500 ausgeführt werden, und die Registerdatei 4508 stellt einen temporären Speicher für Operanden bereit, die mit Datenpfaden der funktionalen Einheiten verbunden sind. In mindestens einem Ausführungsbeispiel umfasst jedes SM 4500, ohne Einschränkung, eine Vielzahl von L-Verarbeitungskernen 4510. In mindestens einem Ausführungsbeispiel enthält SM 4500 ohne Einschränkung eine große Anzahl (z. B. 128 oder mehr) verschiedener Verarbeitungskerne 4510. In mindestens einem Ausführungsbeispiel enthält jeder Verarbeitungskern 4510 in mindestens einem Ausführungsbeispiel ohne Einschränkung eine vollpipeline, einfachpräzise, doppeltpräzise und/oder gemischtpräzise Verarbeitungseinheit, die ohne Einschränkung eine arithmetische Gleitkomma-Logikeinheit und eine arithmetische Ganzzahl-Logikeinheit enthält. In mindestens einem Ausführungsbeispiel implementieren Gleitkomma-Arithmetik-Logikeinheiten den Standard IEEE 754-2008 für Gleitkomma-Arithmetik. In mindestens einem Ausführungsbeispiel enthalten die Verarbeitungskerne 4510 ohne Einschränkung 64 Gleitkomma-Kerne mit einfacher Genauigkeit (32 Bit), 64 Ganzzahl-Kerne, 32 Gleitkomma-Kerne mit doppelter Genauigkeit (64 Bit) und 8 Tensor-Kerne.
  • Tensor-Kerne sind gemäß mindestens einem Ausführungsbeispiel für die Durchführung von Matrixoperationen konfiguriert. In mindestens einem Ausführungsbeispiel sind ein oder mehrere Tensor-Kerne in den Verarbeitungskernen 4510 enthalten. In mindestens einem Ausführungsbeispiel sind Tensorkerne so konfiguriert, dass sie Deep Learning-Matrixarithmetik durchführen, wie z. B. Faltungsoperationen zum Trainieren und Inferenzieren von neuronalen Netzwerken. In mindestens einem Ausführungsbeispiel betreibt jeder Tensorkem eine 4x4-Matrix und führt eine Matrixmultiplikations- und Akkumulationsoperation D = A X B + C durch, wobei A, B, C und D 4x4-Matrizen sind.
  • In mindestens einem Ausführungsbeispiel handelt es sich bei den Eingaben für die Matrixmultiplikation A und B um 16-Bit-Gleitkommamatrizen und bei den Akkumulationsmatrizen C und D um 16-Bit-Gleitkomma- oder 32-Bit-Gleitkommamatrizen. In mindestens einem Ausführungsbeispiel betreiben Tensorkerne 16-Bit-Gleitkomma-Eingabedaten mit 32-Bit-Gleitkomma-Akkumulation. In mindestens einem Ausführungsbeispiel wird die 16-Bit-Gleitkommamultiplikation mit 64 Operationen betrieben und führt zu einem Produkt mit voller Genauigkeit, das dann unter Verwenden einer 32-Bit-Gleitkomma-A45ition mit anderen Zwischenprodukten für eine 4x4x4-Matrixmultiplikation akkumuliert wird. In mindestens einem Ausführungsbeispiel werden Tensor-Kerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen, die aus diesen kleineren Elementen aufgebaut sind. In mindestens einem Ausführungsbeispiel stellt eine API, wie z. B. die CUDA 9 C++ API, spezialisierte Operationen zum Laden, Multiplizieren und Akkumulieren von Matrizen sowie zum Speichern von Matrizen zur Verfügung, um Tensor-Kerne in einem CUDA-C++-Programm effizient zu betreiben. In mindestens einem Ausführungsbeispiel auf CUDA-Ebene geht die Schnittstelle auf Warp-Ebene von Matrizen der Größe 16x16 aus, die sich über alle 32 Threads des Warp erstrecken.
  • In mindestens einem Ausführungsbeispiel umfasst jeder SM 4500 ohne Einschränkung M SFUs 4512, die spezielle Funktionen ausführen (z. B. Attribut-Evaluierung, reziproke Quadratwurzel und dergleichen). In mindestens einem Ausführungsbeispiel umfassen die SFUs 4512 ohne Einschränkung eine Einheit zur Traversierung von Bäumen, die zum Traversieren einer hierarchischen Baumdatenstruktur konfiguriert ist. In mindestens einem Ausführungsbeispiel umfassen die SFUs 4512 ohne Einschränkung eine Textureinheit, die so konfiguriert ist, dass sie Texturkarten-Filteroperationen durchführt. In mindestens einem Ausführungsbeispiel sind Textureinheiten so konfiguriert, dass sie Texturkarten (z. B. ein 2D-Array von Texeln) aus dem Speicher laden und Texturkarten samplen, um Sampling-Texturwerte zur Verwendung in von SM 4500 ausgeführten Schattierungsprogrammen zu erzeugen. In mindestens einem Ausführungsbeispiel werden Texturkarten im gemeinsam genutzten Speicher/L1-Cache 4518 gespeichert. In mindestens einer Ausführungsbeispiel implementieren Textureinheiten gemäß mindestens einem Ausführungsbeispiel Texturoperationen wie Filteroperationen unter Verwenden von Mip-Maps (z. B. Texturkarten mit unterschiedlichen Details). In mindestens einem Ausführungsbeispiel enthält jedes SM 4500, ohne Einschränkung, zwei Textureinheiten.
  • Jeder SM 4500 umfasst ohne Einschränkung N LSUs 4514, die in mindestens einem Ausführungsbeispiel Lade- und Speicheroperationen zwischen gemeinsam genutztem Speicher/L1-Cache 4518 und Registerdatei 4508 durchführen. Jedes SM 4500 umfasst, ohne Einschränkung, ein Verbindungsnetzwerk 4516, das in mindestens einem Ausführungsbeispiel jede der funktionalen Einheiten mit der Registerdatei 4508 und die LSU 4514 mit der Registerdatei 4508 und dem gemeinsam genutzten Speicher/L1-Cache 4518 verbindet. In mindestens einem Ausführungsbeispiel ist das Verbindungsnetzwerk 4516 eine Crossbar, die so konfiguriert werden kann, dass sie jede der funktionalen Einheiten mit jedem der Register in der Registerdatei 4508 verbindet und die LSUs 4514 mit der Registerdatei 4508 und den Speicherplätzen im gemeinsam genutzten Speicher/L1-Cache 4518 verbindet.
  • In mindestens einem Ausführungsbeispiel ist der gemeinsam genutzte Speicher/L1-Cache 4518 ein Array von On-Chip-Speicher, der in mindestens einem Ausführungsbeispiel die Datenspeicherung und Kommunikation zwischen SM 4500 und primitiver Engine und zwischen Threads in SM 4500 ermöglicht. In mindestens einem Ausführungsbeispiel umfasst der gemeinsam genutzte Speicher/L1-Cache 4518 ohne Einschränkung eine Speicherkapazität von 128 KB und befindet sich auf dem Weg vom SM 4500 zur Partitionseinheit. In mindestens einem Ausführungsbeispiel wird der gemeinsam genutzte Speicher/L1-Cache 4518 in mindestens einem Ausführungsbeispiel dazu verwendet, Lese- und Schreibvorgänge zwischenzuspeichern. In mindestens einem Ausführungsbeispiel sind einer oder mehrere der gemeinsam genutzten Speicher/L1-Cache 4518, L2-Cache und Arbeitsspeicher Backing-Stores.
  • Die Kombination der Funktionalität von Datencache und gemeinsam genutztem Speicher in einem einzigen Speicherblock bietet in mindestens einem Ausführungsbeispiel eine verbesserte Leistung für beide Arten von Speicherzugriffen. In mindestens einem Ausführungsbeispiel wird die Kapazität von Programmen, die den gemeinsam genutzten Speicher nicht verwenden, als Cache genutzt oder kann von diesen genutzt werden, z. B. wenn der gemeinsam genutzte Speicher so konfiguriert ist, dass er die Hälfte der Kapazität nutzt, können Textur- und Lade-/Speicheroperationen die verbleibende Kapazität nutzen. Durch die Integration in den gemeinsam genutzten Speicher/L1-Cache 4518 kann der gemeinsam genutzte Speicher/L1-Cache 4518 gemäß mindestens einem Ausführungsbeispiel als Leitung für Streaming-Daten mit hohem Durchsatz fungieren und gleichzeitig Zugriff auf häufig wiederverwendete Daten mit hoher Bandbreite und niedriger Latenz bieten. In mindestens einem Ausführungsbeispiel kann, wenn es für allgemeine parallele Berechnungen konfiguriert ist, eine einfachere Konfiguration im Vergleich zur Grafikverarbeitung verwendet werden. In mindestens einem Ausführungsbeispiel werden Grafikverarbeitungseinheiten mit festen Funktionen umgangen, wodurch ein wesentlich einfacheres Programmiermodell entsteht. In mindestens einem Ausführungsbeispiel ist in der Konfiguration für allgemeine parallele Berechnungen die Arbeitsverteilungseinheit in der Lage, Blöcke von Threads direkt den DPCs zuzuweisen und zu verteilen. In mindestens einem Ausführungsbeispiel führen Threads in einem Block dasselbe Programm aus, wobei eine eindeutige Thread-ID in der Berechnung verwendet wird, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse generiert, wobei SM 4500 zur Ausführung des Programms und zur Durchführung von Berechnungen, gemeinsam genutzter Speicher/L1-Cache 4518 zur Kommunikation zwischen Threads und LSU 4514 zum Lesen und Schreiben des globalen Speichers durch gemeinsam genutzten Speicher/L1-Cache 4518 und Speicherpartitionseinheit verwendet werden. In mindestens einem Ausführungsbeispiel schreibt SM 4500, wenn es für allgemeine parallele Berechnungen konfiguriert ist, Befehle, die Planer-Einheit 4504 verwenden kann, um neue Arbeit auf DPCs zu starten.
  • In mindestens einem Ausführungsbeispiel ist die PPU in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, Servern, Supercomputern, einem Smartphone (z. B. einem drahtlosen Handheld-Gerät), einem persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, einem Fahrzeug, einer am Kopf montierten Anzeige, einem elektronischen Handheld-Gerät usw. enthalten oder mit diesen gekoppelt. In mindestens einem Ausführungsbeispiel ist das PPU auf einem einzigen Halbleitersubstrat untergebracht. In mindestens einem Ausführungsbeispiel ist die PPU in einem System-on-a-Chip („SoC“) zusammen mit einem oder mehreren anderen Geräten wie zusätzlichen PPUs, Speicher, einer CPU mit reduziertem Befehlssatz („RISC“), einer Speicherverwaltungseinheit („MMU“), einem Digital-Analog-Wandler („DAC“) und dergleichen enthalten.
  • In mindestens einem Ausführungsbeispiel kann die PPU in einer Grafikkarte enthalten sein, die ein oder mehrere Speichergeräte umfasst. Die Grafikkarte kann so konfiguriert sein, dass sie mit einem PCIe-Steckplatz auf einem Motherboard eines Desktop-Computers verbunden werden kann. In mindestens einem Ausführungsbeispiel kann die PPU eine integrierte Grafikverarbeitungseinheit („iGPU“) sein, die im Chipsatz der Hauptplatine enthalten ist.
  • Die Inferenz- und/oder Trainingslogik 1715 wird zum Inferenzieren und/oder Trainieren von Operationen verwendet, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1715 wird hier in Verbindung mit 17A und/oder 17B beschrieben. In mindestens einem Ausführungsbeispiel wird ein Deep Learning-Anwendungsprozessor verwendet, um ein maschinelles Lernmodell, wie z. B. ein neuronales Netzwerk, zu trainieren, um die dem SM 4500 bereitgestellten Informationen vorherzusagen oder zu inferieren. In mindestens einem Ausführungsbeispiel wird SM 4500 verwendet, um Informationen basierend auf einem trainierten maschinellen Lernmodell (z. B. neuronales Netzwerk), das von einem anderen Prozessor oder System oder von SM 4500 trainiert wurde, zu inferieren oder vorherzusagen. In mindestens einem Ausführungsbeispiel kann SM 4500 verwendet werden, um einen oder mehrere hierin beschriebene Anwendungsfälle für ein neuronales Netzwerk durchzuführen.
  • In mindestens einem Ausführungsbeispiel kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung oder einen Chip beziehen. In mindestens einem Ausführungsbeispiel können Multi-Chip-Module mit erhöhter Konnektivität verwendet werden, die einen On-Chip-Betrieb simulieren und wesentliche Verbesserungen gegenüber der Verwendung einer konventionellen zentralen Verarbeitungseinheit („CPU“) und einer Bus-Implementierung bieten. In mindestens einem Ausführungsbeispiel können verschiedene Module auch separat oder in verschiedenen Kombinationen von Halbleiterplattformen je nach Wunsch des Benutzers angeordnet sein.
  • In mindestens einem Ausführungsbeispiel werden Computerprogramme in Form von maschinenlesbarem, ausführbarem Code oder Computersteuerlogik-Algorithmen im Hauptspeicher 2304 und/oder in einem sekundären Speicher gespeichert. Computerprogramme, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, ermöglichen es dem System 2300, verschiedene Funktionen gemäß mindestens einem Ausführungsbeispiel auszuführen. Speicher 2304, Speicher und/oder jeder andere Speicher sind mögliche Beispiele für computerlesbare Medien. In mindestens einem Ausführungsbeispiel kann sich der sekundäre Speicher auf ein beliebiges geeignetes Speichergerät oder -system beziehen, wie z. B. ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Compact-Disk-Laufwerk, ein DVD-Laufwerk, ein Aufnahmegerät, einen USB-Flash-Speicher usw. repräsentiert. In mindestens einem Ausführungsbeispiel werden die Architektur und/oder Funktionalität verschiedener vorheriger Figuren im Zusammenhang mit der CPU 2302, dem Parallelverarbeitungssystem 2312, einer integrierten Schaltung, die mindestens einen Teil der Fähigkeiten sowohl der CPU 2302 als auch des Parallelverarbeitungssystems 2312 besitzt, einem Chipsatz (z. B. einer Gruppe integrierter Schaltungen, die so entworfen sind, dass sie als Einheit zur Ausführung verwandter Funktionen arbeiten und verkauft werden, usw.) und jeder geeigneten Kombination integrierter Schaltung(en) umgesetzt.
  • In mindestens einem Ausführungsbeispiel werden die Architektur und/oder Funktionalität der verschiedenen Ausführungsbeispiele im Zusammenhang mit einem allgemeinen Computersystem, einem Leiterplattensystem, einem Spielkonsolensystem für Unterhaltungszwecke, einem anwendungsspezifischen System usw. umgesetzt. In mindestens einem Ausführungsbeispiel kann das Computersystem 2300 die Form eines Desktop-Computers, eines Laptops, eines Tablet-Computers, eines Servers, eines Supercomputers, eines Smartphones (z.B. eines drahtlosen, handgehaltenen Geräts), eines persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, eines Fahrzeugs, einer auf dem Kopf montierten Anzeige, eines handgehaltenen elektronischen Geräts, eines Mobiltelefongeräts, eines Fernsehers, einer Workstation, von Spielkonsolen, eines eingebetteten Systems und/oder jeder anderen Art von Logik annehmen.
  • In mindestens einem Ausführungsbeispiel enthält das Parallelverarbeitungssystem 2312 ohne Einschränkung eine Vielzahl von Parallelverarbeitungseinheiten („PPUs“) 2314 und assoziierte Speicher 2316. In mindestens einem Ausführungsbeispiel sind die PPUs 2314 über eine Zwischenverbindung 2318 und einen Switch 2320 oder Multiplexer mit einem Host-Prozessor oder anderen peripheren Geräten verbunden. In mindestens einem Ausführungsbeispiel verteilt das Parallelverarbeitungssystem 2312 Rechenaufgaben auf die PPUs 2314, die parallelisierbar sein können - zum Beispiel als Teil der Verteilung von Rechenaufgaben auf mehrere Thread-Blöcke der Grafikverarbeitungseinheit („GPU“). In mindestens einem Ausführungsbeispiel wird der Speicher gemeinsam genutzt und ist für einige oder alle PPUs 2314 zugänglich (z. B. für Lese- und/oder Schreibzugriffe), obwohl ein solcher gemeinsam genutzter Speicher im Vergleich zur Verwendung von lokalem Speicher und Registern, die in einer PPU 2314 resident sind, zu Leistungseinbußen führen kann. In mindestens einem Ausführungsbeispiel wird der Betrieb der PPUs 2314 durch Verwendung eines Befehls wie _syncthreads() synchronisiert, wobei alle Threads in einem Block (z. B. über mehrere PPUs 2314 ausgeführt) einen bestimmten Punkt der Codeausführung erreichen müssen, bevor sie fortfahren.
  • Andere Variationen sind im Sinne der vorliegenden Offenbarung. Während die offenbaren Techniken für verschiedene Modifikationen und alternative Konstruktionen anfällig sind, sind bestimmte beispielhafte Ausführungsbeispiele davon in den Zeichnungen gezeigt und oben im Detail beschrieben worden. Es ist zu verstehen, dass nicht beabsichtigt ist, die Offenbarung auf eine bestimmte Form oder bestimmte Formen zu beschränken, die offenbart sind, sondern dass im Gegenteil beabsichtigt ist, alle Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die in den Geist und Umfang der Offenbarung fallen, wie in den beigefügten Ansprüchen definiert.
  • Die Verwendung der Begriffe „ein“ und „der/die/das“ und ähnlicher Bezeichnungen im Zusammenhang mit der Beschreibung offenbarer Ausführungsbeispiele (insbesondere im Zusammenhang mit den folgenden Ansprüchen) ist so auszulegen, dass sie sowohl die Einzahl als auch die Vielzahl umfasst, sofern hier nicht anders angezeigt oder durch den Kontext eindeutig widerlegt, und nicht als Definition eines Begriffs. Die Begriffe „umfassend“, „habend“, „enthaltend“ und „einschließend“ sind, sofern nicht anders angegeben, als offene Begriffe zu verstehen (d.h. „einschließlich, aber nicht beschränkt auf“). Der Begriff „verbunden“ ist, wenn er unverändert bleibt und sich auf physikalische Verbindungen bezieht, als teilweise oder ganz in einem Bauteil enthalten, an ihm befestigt oder mit ihm verbunden zu verstehen, selbst wenn etwas dazwischen liegt. Die Aufzählung von Wertebereichen dient hier lediglich als kurzes Verfahren, um jeden separaten Wert, der in den Bereich fällt, einzeln zu bezeichnen, sofern hier nichts anderes angezeigt wird, und jeder separate Wert wird in die Beschreibung aufgenommen, als ob er hier einzeln aufgeführt wäre. Die Verwendung des Begriffs „Menge“ (z. B. „eine Menge von Gegenständen“) oder „Teilmenge“ ist, sofern nicht anders angegeben oder durch den Kontext widerlegt, als eine nicht leere Sammlung zu verstehen, die ein oder mehrere Elemente umfasst. Weiter ist der Begriff „Teilmenge“ einer entsprechenden Menge, sofern nicht anders vermerkt oder durch den Kontext widerlegt, nicht notwendigerweise als eine echte Teilmenge der entsprechenden Menge zu verstehen, sondern Teilmenge und entsprechende Menge können gleich sein.
  • Konjunktive Sprache, wie z. B. Sätze der Form „mindestens eines von A, B und C“ oder „mindestens eines von A, B und C“, wird, sofern nicht ausdrücklich anders angegeben oder anderweitig eindeutig durch den Kontext widersprochen, mit dem Kontext so verstanden, wie sie allgemein verwendet wird, um darzustellen, dass ein Element, ein Begriff usw, entweder A oder B oder C oder eine beliebige nicht leere Teilmenge der Menge von A und B und C sein kann. Im beispielhaften Beispiel einer Menge mit drei Mitgliedern beziehen sich die konjunktiven Ausdrücke „mindestens eines von A, B und C“ und „mindestens eines von A, B und C“ auf eine der folgenden Mengen: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Derartige konjunktivische Formulierungen sollen also nicht generell bedeuten, dass bei bestimmten Ausführungsbeispielen mindestens eines von A, mindestens eines von B und mindestens eines von C vorhanden sein muss. Sofern nicht anders vermerkt oder durch den Kontext widerlegt, bezeichnet der Begriff „Vielzahl“ einen Zustand der Mehrzahl (z. B. „eine Vielzahl von Gegenständen“ bezeichnet mehrere Gegenstände). Die Anzahl der Gegenstände in einer Vielzahl beträgt mindestens zwei, kann aber auch mehr sein, wenn dies entweder ausdrücklich oder durch den Kontext angezeigt wird. Weiterhin bedeutet „basierend auf“, sofern nicht anders angegeben oder aus dem Kontext ersichtlich, „zumindest teilweise basierend auf“ und nicht „ausschließlich basierend auf“.
  • Die Operationen der hierin beschriebenen Prozesse können in jeder geeigneten Reihenfolge durchgeführt werden, sofern dies nicht anders angezeigt wird oder sich aus dem Kontext eindeutig ergibt. In mindestens einem Ausführungsbeispiel wird ein Prozess wie die hierin beschriebenen Prozesse (oder Variationen und/oder Kombinationen davon) unter der Kontrolle eines oder mehrerer Computersysteme durchgeführt, die mit ausführbaren Anweisungen konfiguriert sind und als Code (z. B. ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen) implementiert sind, die gemeinsam auf einem oder mehreren Prozessoren, durch Hardware oder Kombinationen davon ausgeführt werden. In mindestens einem Ausführungsbeispiel ist der Code auf einem computerlesbaren Speichermedium gespeichert, zum Beispiel in Form eines Computerprogramms, das eine Vielzahl von Anweisungen umfasst, die von einem oder mehreren Prozessoren ausgeführt werden können. In mindestens einem Ausführungsbeispiel handelt es sich bei einem computerlesbaren Speichermedium um ein nichtflüchtiges computerlesbares Speichermedium, das transitorische Signale (z. B. eine sich ausbreitende transiente elektrische oder elektromagnetische Übertragung) ausschließt, aber eine nichtflüchtige Schaltungsanordnung zur Datenspeicherung (z. B. Puffer, Cache und Warteschlangen) innerhalb der Transceiver für transitorische Signale enthält. In mindestens einem Ausführungsbeispiel ist Code (z. B. ausführbarer Code oder Quellcode) auf einem Satz von einem oder mehreren nichtflüchtigen computerlesbaren Speichern gespeichert, auf denen ausführbare Befehle (oder andere Speicher zum Speichern ausführbarer Befehle) gespeichert sind, die bei Ausführung (d. h., Satz nichtflüchtiger computerlesbarer Speichermedien umfasst in mindestens einem Ausführungsbeispiel mehrere nichtflüchtige computerlesbare Speichermedien und eines oder mehrere der einzelnen nichtflüchtigen Speichermedien mehrerer nichtflüchtiger computerlesbarer Speichermedien enthalten nicht den gesamten Code, während mehrere nichtflüchtige computerlesbare Speichermedien gemeinsam den gesamten Code speichern. In mindestens einem Ausführungsbeispiel werden ausführbare Befehle so ausgeführt, dass verschiedene Befehle von verschiedenen Prozessoren ausgeführt werden - zum Beispiel speichert ein nichtflüchtiger computerlesbarer Speicher Befehle und eine zentrale Verarbeitungseinheit („CPU“) führt einige der Befehle aus, während eine Grafikverarbeitungseinheit („GPU“) andere Befehle ausführt. In mindestens einem Ausführungsbeispiel haben verschiedene Komponenten eines Computersystems separate Prozessoren und verschiedene Prozessoren führen verschiedene Teilmengen von Befehlen aus.
  • Dementsprechend sind in mindestens einem Ausführungsbeispiel Computersysteme so konfiguriert, dass sie einen oder mehrere Dienste implementieren, die einzeln oder gemeinsam Operationen der hierin beschriebenen Prozesse durchführen, und solche Computersysteme sind mit anwendbarer Hardware und/oder Software konfiguriert, die die Durchführung der Operationen ermöglichen. Ferner ist ein Computersystem, das mindestens ein Ausführungsbeispiel der vorliegenden Offenbarung implementiert, ein einzelnes Gerät, und in einer weiteren Ausführungsform ist es ein verteiltes Computersystem, das mehrere Geräte umfasst, die unterschiedlich operieren, so dass das verteilte Computersystem die hierin beschriebenen Operationen durchführt, und so, dass ein einzelnes Gerät nicht alle Operationen durchführt.
  • Die Verwendung beliebiger Beispiele oder exemplarischer Ausdrücke (z.B. „wie“) dient lediglich der besseren Veranschaulichung von Ausführungsbeispielen der Offenbarung und stellt keine Einschränkung des Umfangs der Offenbarung dar, sofern nichts anderes behauptet wird. Keine Formulierung in der Beschreibung sollte so ausgelegt werden, dass sie ein nicht beanspruchtes Element als wesentlich für die Praxis der Offenbarung anzeigt.
  • Mindestens ein Ausführungsbeispiel der Offenbarung lässt sich im Hinblick auf die folgenden Ziffern beschreiben:
    • 1. Prozessor, umfassend: eine oder mehrere arithmetische Logikeinheiten (ALUs), um eine Architektur eines neuronalen Netzwerks basierend, zumindest teilweise, auf dem Vergleich von einem oder mehreren Leistungsmerkmalen des neuronalen Netzwerks, die sich aus einem Trainieren des neuronalen Netzwerks ergeben, mit dem einen oder mehreren Leistungsmerkmalen, die sich aus einem Testen des neuronalen Netzwerks ergeben, zu bestimmen.
    • 2. Prozessor nach Ziffer 2 wobei:
      • die eine oder die mehreren Leistungscharakteristiken des neuronalen Netzwerks, die sich aus dem Trainieren des neuronalen Netzwerks ergeben, anzeigen, wie gut das neuronale Netzwerk unter Verwenden von Trainingsdaten funktioniert; und
      • das eine oder die mehreren Leistungsmerkmale, die sich aus dem Testen des neuronalen Netzwerks ergeben, anzeigen, wie das neuronale Netzwerk unter Verwenden von Validierungsdaten abschneidet.
    • 3. Prozessor nach Ziffer 1 oder 2, wobei:
      • die Architektur des neuronalen Netzwerks unter Verwenden einer Zielfunktion basierend auf einem Generalisierungsfehler evaluiert wird; und
      • der Generalisierungsfehler zumindest teilweise auf einer Differenz zwischen einem Validierungsverlust und einem Trainingsverlust basiert.
    • 4. Prozessor nach einer der Ziffern 1-3, wobei das Bestimmen einer Architektur des neuronalen Netzwerks unter Verwenden einer Gradientenschätzung einer differenzierbaren Verlustfunktion basierend zumindest teilweise auf einer Relaxation von diskreten Variablen durchgeführt wird.
    • 5. Prozessor nach einer der Ziffern 1-4, wobei das Bestimmen einer Architektur des neuronalen Netzwerks unter Verwenden einer Surrogatfunktion durchgeführt wird, die eine nicht-differenzierbare Verlustfunktion repräsentiert.Der Prozessor nach Ziffer 4, wobei die differenzierbare Verlustfunktion ein Maß für einen Kreuzentropieverlust des neuronalen Netzwerks ist.
    • 7. Prozessor nach Ziffer 5, wobei die nicht-differenzierbare Verlustfunktion ein Maß für die Latenz des neuronalen Netzwerks ist.
    • 8. System, umfassend: einen oder mehrere Prozessoren, die so konfiguriert sind, dass sie eine Netzwerkarchitektur bestimmen, indem sie Kandidatenarchitekturen für ein neuronales Netzwerk zumindest teilweise evaluieren, indem sie ein oder mehrere Leistungsmerkmale eines neuronalen Netzwerks, die sich aus einem Trainieren des neuronalen Netzwerks ergeben, mit dem einen oder den mehreren Leistungsmerkmalen vergleichen, die sich aus einem Testen des neuronalen Netzwerks ergeben.
    • 9. System der Ziffer 8, wobei:
      • die eine oder die mehreren Leistungscharakteristiken des neuronalen Netzwerks, die sich aus dem Trainieren des neuronalen Netzwerks ergeben, anzeigen, wie gut das neuronale Netzwerk unter Verwenden von Trainingsdaten funktioniert; und
      • das eine oder die mehreren Leistungsmerkmale, die sich aus dem Testen des neuronalen Netzwerks ergeben, anzeigen, wie das neuronale Netzwerk unter Verwenden von Validierungsdaten abschneidet.
    • 10. System nach Ziffer 8 oder 9, wobei:
      • die Architektur des Netzwerks bestimmt wird, indem ein Gradient eines differenzierbaren Verlustes verwendet wird; und
      • der Gradient unter Verwenden einer Gumbel-Softmax-Verteilung abgeschätzt wird.
    • 11. System nach einer der Ziffern 8-10, wobei:
      • die Netzwerk-Architektur bestimmt wird unter Verwenden eines Gradienten einer nichtdifferenzierbaren Verlustfunktion; und
      • der nicht-differenzierbare Verlust durch eine Surrogatfunktion approximiert wird.
    • 12. System nach Ziffer 10 oder 11, wobei die differenzierbare Verlustfunktion zumindest teilweise auf dem Kreuzentropieverlust basiert.
    • 13. System nach Ziffer 11, wobei der nicht differenzierbare Verlust zumindest teilweise auf der Netzwerk-Latenz oder Netzwerk-Genauigkeit basiert.
    • 14. System nach einer der Ziffern 8-13, wobei die Netzwerkarchitektur unter Verwenden der differenzierbaren Architektursuche bestimmt wird.
    • 15. System nach einer der Ziffern 8-14, wobei die Spärlichkeit der Netzwerkarchitektur durch Verwenden einer Struktur von Zellen mit gepaarten Eingaben erzwungen wird.
    • 16. Maschinenlesbares Medium, auf dem ein Befehlssatz gespeichert ist, der, wenn er von einem oder mehreren Prozessoren ausgeführt wird, den einen oder die mehreren Prozessoren veranlasst, zumindest eine Architektur für ein neuronales Netzwerk zu bestimmen, indem Kandidatenarchitekturen für ein neuronales Netzwerk unter Verwenden einer Gradientenabschätzung eines Verlustes gesucht werden, und Kandidatenarchitekturen für ein neuronales Netzwerk basierend auf einer oder mehreren Leistungsmerkmalen des neuronalen Netzwerks, die sich aus einem Trainieren des neuronalen Netzwerks ergeben, mit den einen oder mehreren Leistungsmerkmalen, die sich aus einem Testen des neuronalen Netzwerks ergeben, evaluiert werden.
    • 17. Maschinenlesbares Medium nach Ziffer 16, wobei:
      • der Verlust nicht-differenzierbar ist; und
      • der Gradient unter Verwenden eines neuronalen Netzwerks abgeschätzt wird, das zum Modellieren einer Verlustfunktion trainiert wurde.
    • 18. Maschinenlesbares Medium nach Ziffer 16 oder 17, wobei:
      • der Verlust differenzierbar ist; und
      • der Gradient unter Verwenden von Samples aus einer bedingten Gumbel-Softmax-Verteilung abgeschätzt wird.
    • 19. Maschinenlesbares Medium nach einer der Ziffern 16-18, wobei:
      • die Architektur basierend auf einer Zielfunktion ausgewählt wird; und
      • die Zielfunktion eine Funktion der Latenzzeit und der Genauigkeit ist.
    • 20. Maschinenlesbares Medium nach einer der Ziffern 16-19, wobei:
      • ein Eingabeselektor zwei Knoten von vorherigen Knoten auswählt; und
      • ein Operationsselektor zwei Operationen für jede Eingabe auswählt.
    • 21. Maschinenlesbares Medium nach einer der Ziffern 16-20, wobei der Prozess des Abschätzens des Gradienten keine Vorgabe für den Gradienten einführt.
    • 22. Autonomes Fahrzeug, das ein neuronales Netzwerk mit einer Netzwerkarchitektur umfasst, die aus einer Vielzahl von Kandidatennetzwerkarchitekturen basierend auf einer oder mehreren Leistungscharakteristiken des neuronalen Netzwerks ausgewählt wird, die sich aus einem Trainieren des neuronalen Netzwerks ergeben, mit dem einen oder den mehreren Leistungscharakteristiken, die sich aus einem Testen des neuronalen Netzwerks ergeben.
    • 23. Autonomes Fahrzeug nach Ziffer 22, wobei:
      • ein Eingabeselektor zwei Knoten von vorherigen Knoten auswählt; und
      • ein Operationsselektor zwei Operationen für jede Eingabe auswählt.
    • 24. Autonomes Fahrzeug nach Ziffer 22 oder 23, wobei:
      • das autonome Fahrzeug eine Kamera umfasst, die ein Bild aufnimmt; und
      • das Bild von dem neuronalen Netzwerk verarbeitet wird, um ein Objekt in dem Bild zu identifizieren.
    • 25. Autonomes Fahrzeug nach einer der Ziffern 22-24, wobei:
      • das autonome Fahrzeug eine Kamera umfasst, die ein Bild einfängt; und
      • das Bild von dem neuronalen Netzwerk verarbeitet wird, um ein Fahrzeugsteuersignal zu erzeugen.
  • Alle Referenzen, einschließlich Veröffentlichungen, Patentanmeldungen und Patente, die hier zitiert werden, sind hiermit durch Verweis in demselben Ausmaß enthalten, als ob jede Referenz einzeln und spezifisch als durch Verweis enthalten angezeigt wäre und in ihrer Gesamtheit hier dargelegt würde.
  • In der Beschreibung und in den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen verwendet werden. Es ist zu verstehen, dass diese Begriffe nicht als Synonyme füreinander gedacht sein können. Vielmehr kann in bestimmten Beispielen „verbunden“ oder „gekoppelt“ verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem oder indirektem physischen oder elektrischen Kontakt miteinander stehen. „Gekoppelt“ kann auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt zueinander stehen, aber dennoch miteinander kooperieren oder interagieren.
  • Sofern nicht ausdrücklich anders angegeben, kann davon ausgegangen werden, dass sich in der gesamten Beschreibung Begriffe wie „Verarbeitung“, „Berechnung“, „Berechnen“, „Bestimmen“ oder dergleichen auf Aktionen und/oder Prozesse eines Computers oder eines Rechensystems oder eines ähnlichen elektronischen Rechengeräts beziehen, die Daten, die als physikalische, z. B. elektronische, Größen in den Registern und/oder Speichern des Rechensystems repräsentiert werden, manipulieren und/oder in andere Daten umwandeln, die in ähnlicher Weise als physikalische Größen in den Speichern, Registern oder anderen derartigen Geräten zur Informationsspeicherung, -Übertragung oder -anzeige des Rechensystems repräsentiert werden.
  • In ähnlicher Weise kann sich der Begriff „Prozessor“ auf ein Gerät oder einen Teil eines Geräts beziehen, das elektronische Daten aus Registern und/oder Speichern verarbeitet und diese elektronischen Daten in andere elektronische Daten umwandelt, die in Registern und/oder Speichern gespeichert werden können. Als nicht einschränkende Beispiele kann der „Prozessor“ eine CPU oder eine GPU sein. Eine „Datenverarbeitungsplattform“ kann einen oder mehrere Prozessoren umfassen. Wie hier verwendet, kann der Begriff „Software“-Prozesse beispielsweise Software- und/oder Hardware-Einheiten umfassen, die im Laufe der Zeit Aufgaben, Threads und intelligente Agenten ausführen. Jeder Prozess kann sich auch auf mehrere Prozesse beziehen, um Anweisungen in Sequenz oder parallel, kontinuierlich oder intermittierend auszuführen. Die Begriffe „System“ und „Verfahren“ werden hier austauschbar verwendet, insofern ein System ein oder mehrere Verfahren verkörpern kann und Verfahren als System betrachtet werden können.
  • Im vorliegenden Dokument kann auf das Erhalten, Erfassen, Empfangen oder Eingeben analoger oder digitaler Daten in ein Teilsystem, ein Computersystem oder eine computerimplementierte Maschine Bezug genommen werden. Der Prozess des Erhaltens, Erfassens, Empfangens oder Eingebens analoger und digitaler Daten kann auf vielfältige Weise erfolgen, beispielsweise durch Empfangen von Daten als Parameter eines Funktionsaufrufs oder eines Aufrufs einer Anwendungsprogrammierschnittstelle. In einigen Implementierungen kann der Prozess des Erhaltens, Erfassens, Empfangens oder der Eingabe von analogen oder digitalen Daten durch die Übertragung von Daten über eine serielle oder parallele Schnittstelle erfolgen. In einer anderen Implementierung kann der Prozess des Erhaltens, Erfassens, Empfangens oder der Eingabe analoger oder digitaler Daten durch die Übertragung von Daten über ein Netzwerk von der bereitstellenden zu der erwerbenden Einheit erfolgen. Es kann auch auf das Bereitstellen, Ausgeben, Übertragen, Senden oder Präsentieren analoger oder digitaler Daten Bezug genommen werden. In verschiedenen Beispielen kann der Prozess des Bereitstellens, Ausgebens, Übertragens, Sendens oder Darstellens analoger oder digitaler Daten durch die Übertragung von Daten als Eingabe- oder Ausgabeparameter eines Funktionsaufrufs, eines Parameters einer Anwendungsprogrammierschnittstelle oder eines Interprozess-Kommunikationsmechanismus durchgeführt werden.
  • Obwohl die obige Diskussion Beispielimplementierungen der beschriebenen Techniken darlegt, können andere Architekturen verwendet werden, um die beschriebene Funktionalität zu implementieren, und sie sollen im Umfang dieser Offenbarung liegen. Darüber hinaus können verschiedene Funktionen und Verantwortlichkeiten je nach den Umständen auf unterschiedliche Weise verteilt und aufgeteilt werden, auch wenn oben zu Diskussionszwecken bestimmte Verteilungen von Verantwortlichkeiten definiert sind.
  • Obwohl der Gegenstand in einer Sprache beschrieben wurde, die sich auf strukturelle Merkmale und/oder methodische Handlungen bezieht, ist es zu verstehen, dass der in den beigefügten Ansprüchen beanspruchte Gegenstand nicht notwendigerweise auf die beschriebenen spezifischen Merkmale oder Handlungen beschränkt ist. Vielmehr sind bestimmte Merkmale und Handlungen als exemplarische Formen der Umsetzung von Ansprüchen offenbart.
  • 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 16566797 [0001]

Claims (25)

  1. Prozessor, umfassend: eine oder mehrere arithmetisch-logische Einheiten (ALUs), um eine Architektur eines neuronalen Netzwerks zu bestimmen, basierend, zumindest teilweise, auf einem Vergleichen eines oder mehrerer Leistungsmerkmale des neuronalen Netzwerks, die sich aus einem Training des neuronalen Netzwerks ergeben, mit dem einen oder mehreren Leistungsmerkmalen, die sich aus einem Testen des neuronalen Netzwerks ergeben.
  2. Prozessor nach Anspruch 2, wobei: die eine oder die mehreren Leistungscharakteristiken des neuronalen Netzwerks, die sich aus dem Trainieren des neuronalen Netzwerks ergeben, anzeigen, wie gut das neuronale Netzwerk unter Verwenden von Trainingsdaten funktioniert; und das eine oder die mehreren Leistungsmerkmale, die sich aus dem Testen des neuronalen Netzwerks ergeben, anzeigen, wie das neuronale Netzwerk unter Verwenden von Validierungsdaten funktioniert.
  3. Prozessor nach Anspruch 1, wobei: die Architektur des neuronalen Netzwerks unter Verwenden einer auf einem Generalisierungsfehler basierenden Zielfunktion evaluiert wird, und der Generalisierungsfehler zumindest teilweise auf einer Differenz zwischen einem Validierungsverlust und einem Trainingsverlust basiert.
  4. Prozessor nach Anspruch 1, wobei das Bestimmen einer Architektur des neuronalen Netzwerks unter Verwenden einer Gradientenabschätzung einer differenzierbaren Verlustfunktion basierend zumindest teilweise auf einer Relaxation von diskreten Variablen durchgeführt wird.
  5. Prozessor nach Anspruch 1, wobei das Bestimmen einer Architektur des neuronalen Netzwerks unter Verwenden einer Surrogatfunktion durchgeführt wird, die eine nicht differenzierbare Verlustfunktion repräsentiert.
  6. Prozessor nach Anspruch 4, wobei die differenzierbare Verlustfunktion ein Maß für einen Kreuzentropieverlust des neuronalen Netzwerks ist.
  7. Prozessor nach Anspruch 5, wobei die nicht-differenzierbare Verlustfunktion ein Maß für die Latenz des neuronalen Netzwerks ist.
  8. System, umfassend: einen oder mehrere Prozessoren, die so konfiguriert sind, dass sie eine Netzwerkarchitektur bestimmen, indem sie Kandidatenarchitekturen für ein neuronales Netzwerk zumindest teilweise evaluieren, indem sie ein oder mehrere Leistungsmerkmale eines neuronalen Netzwerks, die sich aus einem Trainieren des neuronalen Netzwerks ergeben, mit dem einem oder mehreren Leistungsmerkmalen vergleichen, die sich aus einem Testen des neuronalen Netzwerks ergeben.
  9. System nach Anspruch 8, wobei: die eine oder die mehreren Leistungscharakteristiken des neuronalen Netzwerks, die sich aus dem Trainieren des neuronalen Netzwerks ergeben, anzeigen, wie gut das neuronale Netzwerk unter Verwenden von Trainingsdaten funktioniert; und das eine oder die mehreren Leistungsmerkmale, die sich aus dem Testen des neuronalen Netzwerks ergeben, anzeigen, wie das neuronale Netzwerk unter Verwenden von Validierungsdaten funktioniert.
  10. System nach Anspruch 8, wobei: die Architektur des Netzwerks bestimmt wird, indem ein Gradient eines differenzierbaren Verlustes verwendet wird, und der Gradient unter Verwenden einer Gumbel-Softmax-Verteilung abgeschätzt wird.
  11. System nach Anspruch 8, wobei: die Netzwerk-Architektur bestimmt wird unter Verwenden eines Gradienten einer nichtdifferenzierbaren Verlustfunktion; und der nicht-differenzierbare Verlust durch eine Surrogatfunktion approximiert wird.
  12. System nach Anspruch 10, wobei die differenzierbare Verlustfunktion zumindest teilweise auf einem Kreuzentropieverlust basiert.
  13. System nach Anspruch 11, wobei der nicht-differenzierbare Verlust zumindest teilweise auf einer Netzwerk-Latenz oder Netzwerk-Genauigkeit basiert.
  14. System nach Anspruch 8, wobei die Netzwerkarchitektur unter Verwenden einer differenzierbaren Architektursuche bestimmt wird.
  15. System nach Anspruch 8, wobei eine Spärlichkeit der Netzwerkarchitektur durch Verwenden einer Struktur von Zellen mit gepaarten Eingaben erzwungen wird.
  16. Maschinenlesbares Medium, auf dem ein Befehlssatz gespeichert ist, der, wenn er von einem oder mehreren Prozessoren ausgeführt wird, den einen oder die mehreren Prozessoren veranlasst, zumindest eine Architektur für ein neuronales Netzwerk zu bestimmen, indem Kandidatenarchitekturen des neuronalen Netzwerks unter Verwenden einer Gradientenabschätzung eines Verlusts gesucht werden und Kandidatenarchitekturen des neuronalen Netzwerks basierend auf einem oder mehreren Leistungsmerkmalen des neuronalen Netzwerks, die sich aus einem Trainieren des neuronalen Netzwerks ergeben, mit dem einen oder den mehreren Leistungsmerkmalen, die sich aus einem Testen des neuronalen Netzwerks ergeben, evaluiert werden.
  17. Maschinenlesbares Medium nach Anspruch 16, wobei: der Verlust nicht-differenzierbar ist, und der Gradient unter Verwenden eines neuronalen Netzwerks abgeschätzt wird, das zum Modellieren einer Verlustfunktion trainiert wurde.
  18. Maschinenlesbares Medium nach Anspruch 16, wobei: der Verlust differenzierbar ist, und der Gradient unter Verwenden von Samples aus einer bedingten Gumbel-Softmax-Verteilung abgeschätzt wird.
  19. Maschinenlesbares Medium nach Anspruch 16, wobei: die Architektur basierend auf einer Zielfunktion ausgewählt wird, und die Zielfunktion eine Funktion der Latenzzeit und der Genauigkeit ist.
  20. Maschinenlesbares Medium nach Anspruch 16, wobei: ein Eingabeselektor zwei Knoten von vorherigen Knoten auswählt; und ein Operationsselektor zwei Operationen für jede Eingabe auswählt.
  21. Maschinenlesbares Medium nach Anspruch 16, wobei das Verfahren zum Abschätzen des Gradienten keine Vorgabe für den Gradienten einführt.
  22. Autonomes Fahrzeug, das ein neuronales Netzwerk mit einer Netzwerkarchitektur umfasst, die aus einer Vielzahl von Kandidatennetzwerkarchitekturen basierend auf einem oder mehreren Leistungsmerkmalen des neuronalen Netzwerks ausgewählt ist, die sich aus einem Trainieren des neuronalen Netzwerks ergeben, mit dem einen oder mehreren Leistungsmerkmalen, die sich aus dem Testen des neuronalen Netzwerks ergeben.
  23. Autonomes Fahrzeug nach Anspruch 22, wobei: ein Eingabeselektor zwei Knoten aus vorherigen Knoten auswählt; und ein Operationsselektor zwei Operationen für jede Eingabe auswählt.
  24. Autonomes Fahrzeug nach Anspruch 22, wobei: das autonome Fahrzeug eine Kamera umfasst, die ein Bild aufnimmt; und das Bild von dem neuronalen Netzwerk verarbeitet wird, um ein Objekt in dem Bild zu identifizieren.
  25. Autonomes Fahrzeug nach Anspruch 22, wobei: das autonome Fahrzeug eine Kamera umfasst, die ein Bild einfängt; und das Bild von dem neuronalen Netzwerk verarbeitet wird, um ein Fahrzeugsteuersignal zu erzeugen.
DE112020004277.4T 2019-09-10 2020-09-09 Auf maschinellem Lernen basierendes Architektur-Suchverfahren für ein neuronales Netzwerk Pending DE112020004277T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/566,797 2019-09-10
US16/566,797 US20210073612A1 (en) 2019-09-10 2019-09-10 Machine-learning-based architecture search method for a neural network
PCT/US2020/049987 WO2021050581A1 (en) 2019-09-10 2020-09-09 A machine-learning-based architecture search method for a neural network

Publications (1)

Publication Number Publication Date
DE112020004277T5 true DE112020004277T5 (de) 2022-06-15

Family

ID=72603548

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020004277.4T Pending DE112020004277T5 (de) 2019-09-10 2020-09-09 Auf maschinellem Lernen basierendes Architektur-Suchverfahren für ein neuronales Netzwerk

Country Status (5)

Country Link
US (1) US20210073612A1 (de)
CN (1) CN114600127A (de)
DE (1) DE112020004277T5 (de)
GB (1) GB2601929A (de)
WO (1) WO2021050581A1 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2021024083A1 (de) * 2019-08-08 2021-02-11
US11315254B2 (en) * 2020-01-17 2022-04-26 Ping An Technology (Shenzhen) Co., Ltd. Method and device for stratified image segmentation
US20210279222A1 (en) * 2020-03-09 2021-09-09 Vimeo, Inc. Dynamic Buffer Lookahead in Adaptive Streaming Using Machine Learning
US20210283505A1 (en) * 2020-03-10 2021-09-16 Electronic Arts Inc. Video Game Content Provision System and Method
US11347995B2 (en) * 2020-03-23 2022-05-31 Google Llc Neural architecture search with weight sharing
US11586919B2 (en) * 2020-06-12 2023-02-21 International Business Machines Corporation Task-oriented machine learning and a configurable tool thereof on a computing environment
US20220147680A1 (en) * 2020-11-12 2022-05-12 Samsung Electronics Co., Ltd. Method for co-design of hardware and neural network architectures using coarse-to-fine search, two-phased block distillation and neural hardware predictor
CN113052812B (zh) * 2021-03-22 2022-06-24 山西三友和智慧信息技术股份有限公司 一种基于AmoebaNet的MRI前列腺癌检测方法
WO2022204341A1 (en) * 2021-03-24 2022-09-29 Carnegie Mellon University System and method for training machine-learning models with probabilistic confidence labels
WO2022212916A1 (en) * 2021-04-01 2022-10-06 Giant.Ai, Inc. Hybrid computing architectures with specialized processors to encode/decode latent representations for controlling dynamic mechanical systems
CN113033784A (zh) * 2021-04-18 2021-06-25 沈阳雅译网络技术有限公司 一种针对cpu和gpu设备搜索神经网络结构的方法
US20230036964A1 (en) * 2021-07-14 2023-02-02 Rakuten Group, Inc. Reducing sample selection bias in a machine learning-based recommender system
CN114833279B (zh) * 2022-07-04 2022-09-23 江苏顺隆鸿泰电力设备有限公司 钢筋切割设备及其控制方法
CN114926698B (zh) * 2022-07-19 2022-10-14 深圳市南方硅谷半导体股份有限公司 基于演化博弈论的神经网络架构搜索的图像分类方法
CN117688985A (zh) * 2022-08-25 2024-03-12 天翼电子商务有限公司 一种基于模型压缩思想的nas架构搜索方法
CN115128961B (zh) * 2022-08-31 2023-01-10 宁波亮控信息科技有限公司 基于LoRaWAN网络的自触发模型预测方法及系统
TWI825980B (zh) * 2022-09-07 2023-12-11 英業達股份有限公司 記憶體內計算的模擬器的設定方法
CN115994563B (zh) * 2022-10-31 2023-08-18 天津大学 用于智能辅助驾驶的类脑情境学习模型构建与训练方法
CN115620147B (zh) * 2022-11-29 2023-04-07 国网山东省电力公司济南供电公司 深度卷积神经网络的可微架构搜索方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10332028B2 (en) * 2015-08-25 2019-06-25 Qualcomm Incorporated Method for improving performance of a trained machine learning model
WO2019033381A1 (en) * 2017-08-18 2019-02-21 Intel Corporation EFFECTIVE NEURONIC NETWORKS WITH MATRIX STRUCTURES DEVELOPED IN AUTOMATIC LEARNING ENVIRONMENTS
US11182677B2 (en) * 2017-12-13 2021-11-23 Cognizant Technology Solutions U.S. Corporation Evolving recurrent networks using genetic programming
US11790211B2 (en) * 2018-01-30 2023-10-17 Google Llc Adjusting neural network resource usage
US20190286984A1 (en) * 2018-03-13 2019-09-19 Google Llc Neural architecture search by proxy
EP3803714A4 (de) * 2018-06-08 2022-03-09 Zestfinance, Inc. Systeme und verfahren zur zerlegung nicht-differenzierbarer und differenzierbarer modelle
US10997503B2 (en) * 2019-06-20 2021-05-04 Google Llc Computationally efficient neural network architecture search

Also Published As

Publication number Publication date
WO2021050581A1 (en) 2021-03-18
GB202202271D0 (en) 2022-04-06
GB2601929A (en) 2022-06-15
US20210073612A1 (en) 2021-03-11
CN114600127A (zh) 2022-06-07

Similar Documents

Publication Publication Date Title
DE112020004277T5 (de) Auf maschinellem Lernen basierendes Architektur-Suchverfahren für ein neuronales Netzwerk
DE112020004302T5 (de) Trainingsstrategiesuche unter verwendung von verstärkendem lernen
DE112020005696T5 (de) Training und ableiten unter verwendung eines neuronalen netzwerkes zum vorhersagen der ausrichtung von objekten in bildern
DE112020005156T5 (de) Verstärkendes Lernen von taktilen Greifstrategien
DE112020003833T5 (de) Durchführen von Matrixoperationen in neuronalen Netzen
DE112020005206T5 (de) Bestimmen der Objektorientierung aus einem Bild mit Maschinenlernen
DE112020003832T5 (de) Neuronale netzwerke zur bildregistrierung und bildsegmentierung, die unter verwendung eines registrierungssimulators trainiert werden
DE112020004192T5 (de) Prozessor und system, um tensoroperationen in maschinelles lernen zu konvertieren
DE102019122790A1 (de) Robotersteuerungssystem
DE112020005509T5 (de) Prozessor und system zum identifizieren von out-of-distribution- eingabedaten in neuronalen netzwerken
DE112020005464T5 (de) Verteilte gewichtsaktualisierung für backpropagation eines neuronalen netzwerks
DE102021118885B4 (de) Maschinelles lernen zur steuerung von objektübergaben
DE112021000351T5 (de) Maschinenlernbasiertes objekterfassungssystem
DE112019007906T5 (de) Identifizierung von mehrskaligen Merkmalen unter Verwendung eines neuronalen Netzes
DE112021001164T5 (de) Dynamischer lastausgleich von operationen für deeplearning- analysen in echtzeit
DE102021122617A1 (de) Globales föderiertes training für neuronale netze
DE112020006144T5 (de) Mastertransformationsarchitektur für Deep-Learning
DE112020005476T5 (de) Neuronales netz zur bildausrichtung
DE112020005364T5 (de) Api für rekurrente neuronale netze
DE102021129825A1 (de) Objekterkennung und kollisionsvermeidung unter verwendung eines neuronalen netzes
DE112021000953T5 (de) Erzeugung von kennzeichen mittels neuronaler netze
DE102021100919A1 (de) Bestimmen einer 3d-handpose aus einem 2d-bild unter verwenden von maschinellem lernen
DE102022114796A1 (de) Pretraining-framework für neuronale netzwerke
DE112021001807T5 (de) Beschleunigtes Training für neuronale Netzmodelle
DE112020004196T5 (de) Durchführen von zyklischen Redundanzprüfungen unter Verwendung paralleler Rechenarchitekturen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: BARDEHLE PAGENBERG PARTNERSCHAFT MBB PATENTANW, DE