DE112020004192T5 - Prozessor und system, um tensoroperationen in maschinelles lernen zu konvertieren - Google Patents

Prozessor und system, um tensoroperationen in maschinelles lernen zu konvertieren Download PDF

Info

Publication number
DE112020004192T5
DE112020004192T5 DE112020004192.1T DE112020004192T DE112020004192T5 DE 112020004192 T5 DE112020004192 T5 DE 112020004192T5 DE 112020004192 T DE112020004192 T DE 112020004192T DE 112020004192 T5 DE112020004192 T5 DE 112020004192T5
Authority
DE
Germany
Prior art keywords
tensor
activation
mode
memory
processors
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
DE112020004192.1T
Other languages
English (en)
Inventor
Paul Martin Springer
Chenhan Yu
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 DE112020004192T5 publication Critical patent/DE112020004192T5/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/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout

Landscapes

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

Abstract

Einrichtungen, Systeme und Techniken, um zwischen Tensorfaltungs- und Tensorkontraktions-Operationen zu konvertieren. In mindestens einer Ausführungsform werden eine oder mehrere Faltungsoperationen auf Bilddaten durch mindestens Kontraktieren eines oder mehrerer Tensoren durchgeführt, um eine oder mehrere Merkmalskarten zu erzeugen.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNG
  • Diese Anmeldung beansprucht die Priorität der U.S. Patentanmeldung Nr. 16/559,544 , eingereicht am 3. September 2019, mit dem Titel „PROCESSOR AND SYSTEM TO CONVERT TENSOR OPERATIONS IN MACHINE LEARNING“, deren gesamter Inhalt hier durch Bezugnahme in seiner Gesamtheit und für alle Zwecke aufgenommen ist.
  • TECHNISCHES GEBIET
  • Mindestens eine Ausführungsform betrifft Verarbeitungsressourcen, die verwendet werden, um künstliche Intelligenz durchzuführen und zu erleichtern. Beispielsweise betrifft mindestens eine Ausführungsform Prozessoren oder Rechensysteme, die verwendet werden, um neuronale Netzwerke gemäß verschiedenen neuartigen, hier beschriebener Techniken zu trainieren.
  • HINTERGRUND
  • Tensorfaltungsoperationen werden in vielen Ansätzen maschinellen Lernens verwendet, wie beispielsweise Trainieren und Inferenzieren mit Techniken tiefen Lernens, die faltende neuronale Netzwerke verwenden. Diese Tensorfaltungsoperationen können erhebliche Speicher, Zeit oder Rechenressourcen verwenden und können spezialisierte Tensorfaltungsbibliotheken zum Arbeiten erfordern. Ansätze für die Verwendung von Tensorfaltungsoperationen in Techniken tiefen Lernens können verbessert werden.
  • Figurenliste
    • 1 veranschaulicht ein Ablaufdiagramm einer Technik zum Konstruieren eines Tensors, um eine Ausgabe zu erzeugen, gemäß mindestens einer Ausführungsform;
    • 2 veranschaulicht ein Ablaufdiagramm einer Technik zum Erzeugen einer Merkmalskarte durch eine Tensorkontraktion gemäß mindestens einer Ausführungsform;
    • 3 veranschaulicht ein Ablaufdiagramm einer Technik zum Konstruieren eines Tensors gemäß mindestens einer Ausführungsform;
    • 4 veranschaulicht ein Ablaufdiagramm einer Technik zum Aufteilen eines Modus eines Tensors gemäß mindestens einer Ausführungsform;
    • 5 veranschaulicht ein Blockdiagramm eines Speichers, um Tensordaten zu speichern, gemäß mindestens einer Ausführungsform;
    • 6A veranschaulicht eine Inferenzierungs- und/oder Trainingslogik gemäß mindestens einer Ausführungsform;
    • 6B veranschaulicht die Inferenzierungs- und/oder Trainingslogik gemäß mindestens einer Ausführungsform;
    • 7 veranschaulicht das Training und den Einsatz eines neuronalen Netzwerks gemäß mindestens einer Ausführungsform;
    • 8 veranschaulicht ein Beispiel eines Datenrechensystems gemäß mindestens einer Ausführungsform;
    • 9A veranschaulicht ein Beispiel eines autonomen Fahrzeugs gemäß mindestens einer Ausführungsform;
    • 9B veranschaulicht ein Beispiel von Kameraorten und Sichtfeldern für das autonome Fahrzeug von 9A gemäß mindestens einer Ausführungsform;
    • 9C ist ein Blockdiagramm, das ein Beispiel einer Systemarchitektur für das autonome Fahrzeug von 9A gemäß mindestens einer Ausführungsform veranschaulicht;
    • 9D ist ein Diagramm, das ein System zur Kommunikation zwischen einem Cloud-basierten Server(n) und dem autonomen Fahrzeug von 9A veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 10 ist ein Blockdiagramm, das ein Computersystem gemäß mindestens einer Ausführungsform veranschaulicht;
    • 11 ist ein Blockdiagramm, das ein Computersystem gemäß mindestens einer Ausführungsform veranschaulicht;
    • 12 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 13 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 14A veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 14B veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 14C veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 14D veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 14E und 14F veranschaulichen ein gemeinsam genutztes Programmiermodell gemäß mindestens einer Ausführungsform;
    • 15 veranschaulicht beispielhafte integrierte Schaltungen und zugeordnete Graphikprozessoren gemäß mindestens einer Ausführungsform;
    • 16A-16B veranschaulichen beispielhafte integrierte Schaltungen und zugeordnete Graphikprozessoren gemäß mindestens einer Ausführungsform;
    • 17A-17B veranschaulichen zusätzliche beispielhafte Graphikprozessorlogik gemäß mindestens einer Ausführungsform;
    • 18 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 19A veranschaulicht einen Parallelprozessor gemäß mindestens einer Ausführungsform;
    • 19B veranschaulicht eine Partitionseinheit gemäß mindestens einer Ausführungsform;
    • 19C veranschaulicht einen Verarbeitungscluster gemäß mindestens einer Ausführungsform;
    • 19D veranschaulicht einen Graphik-Multiprozessor gemäß mindestens einer Ausführungsform;
    • 20 veranschaulicht ein Multi-Graphikverarbeitungseinheit-(GPU)-System gemäß mindestens einer Ausführungsform;
    • 21 veranschaulicht einen Graphikprozessor gemäß mindestens einer Ausführungsform;
    • 22 ist ein Blockdiagramm, das eine Prozessor-Mikroarchitektur für einen Prozessor gemäß mindestens einer Ausführungsform veranschaulicht;
    • 23 veranschaulicht einen Deep-Learning-Anwendungsprozessor gemäß mindestens einer Ausführungsform;
    • 24 ist ein Blockdiagramm, das ein Beispiel eines neuromorphen Prozessors gemäß mindestens einer Ausführungsform veranschaulicht;
    • 25 veranschaulicht mindestens Abschnitte eines Graphikprozessors gemäß einer oder mehreren Ausführungsformen;
    • 26 veranschaulicht mindestens Abschnitte eines Graphikprozessors gemäß einer oder mehreren Ausführungsformen;
    • 27 veranschaulicht mindestens Abschnitte eines Graphikprozessors gemäß einer oder mehreren Ausführungsformen;
    • 28 ist ein Blockdiagramm einer Graphikverarbeitungs-Engine eines Graphikprozessors gemäß mindestens einer Ausführungsform;
    • 29 ist ein Blockdiagramm von mindestens Teilen eines Graphikprozessorkerns gemäß mindestens einer Ausführungsform;
    • 30A-30B veranschaulichen eine Thread-Ausführungslogik, die eine Anordnung von Verarbeitungselementen eines Graphikprozessorkerns umfasst, gemäß mindestens einer Ausführungsform
    • 31 veranschaulicht eine Parallelverarbeitungseinheit („PPU“) gemäß mindestens einer Ausführungsform;
    • 32 veranschaulicht einen allgemeinen Verarbeitungscluster („GPC“) gemäß mindestens einer Ausführungsform;
    • 33 veranschaulicht eine Speicherpartitionseinheit einer Parallelverarbeitungseinheit („PPU“) gemäß mindestens einer Ausführungsform; und
    • 34 veranschaulicht einen Streaming-Multi-Prozessor gemäß mindestens einer Ausführungsform.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In mindestens einer Ausführungsform betreffen eine oder mehrere Techniken eine Dualität zwischen Tensorkontraktionen und Tensorfaltungen. In mindestens einer Ausführungsform umfasst eine Technik einen Algorithmus, der eine beliebige n-Modus-Faltung in Bezug auf eine Tensorkontraktion neu interpretiert. In mindestens einer Ausführungsform interpretiert eine Technik eine Tensorkontraktion in Bezug auf eine Faltung neu.
  • 1 veranschaulicht ein Ablaufdiagramm einer Technik 100 zum Konstruieren eines Tensors, um eine Ausgabe zu erzeugen, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform führt die Inferenzierungs- und/oder Trainingslogik 615, die mit Bezug auf 6A und 6B beschrieben ist, die Technik 100 durch. In mindestens einer Ausführungsform führen arithmetische Logikeinheiten (Arithmetic Logic Units; ALUs) 610 der Inferenzierungs- und/oder Trainingslogik 615 die Technik 100 durch. In mindestens einer Ausführungsform umfasst die Inferenzierungs- und/oder Trainingslogik 615 einen oder mehrere Prozessoren, um die Technik 100 durchzuführen. In mindestens einer Ausführungsform umfasst die Inferenzierungs- und/oder Trainingslogik 615 ein maschinenlesbares Medium mit einem darauf gespeicherten Satz von Anweisungen, welche, wenn von einem oder mehrere Prozessoren der Inferenzierungs- und/oder Trainingslogik 615 durchgeführt, einen oder mehrere Prozessoren der Inferenzierungs- und/oder Trainingslogik 615 veranlassen, die Technik 100 durchzuführen. In mindestens einer Ausführungsform wird der Satz von Anweisungen den ALUs 610 bereitgestellt, um die ALUs 610 zu veranlassen, die Technik 100 durchzuführen. In mindestens einer Ausführungsform führen die Rechenhardware 602 und/oder die Rechenhardware 606, die mit Bezug auf 6B beschrieben sind, die Technik 100 durch. In mindestens einer Ausführungsform identifiziert eine erste Inferenzierungs- und/oder Trainingslogik 615 einen ersten Art der Operation bei Block 102, konstruiert einen zweiten Tensor bei Block 104 und veranlasst eine zweite Inferenzierungs- und/oder Trainingslogik 615, eine zweite Art der Operation mit dem zweiten Tensor bei Block 106 durchzuführen. In mindestens einer Ausführungsform ist die zweite Inferenzierungs- und/oder Trainingslogik 615 Teil einer Graphikverarbeitungseinheit (GPU). In mindestens einer Ausführungsform gibt die erste Inferenzierungs- und/oder Trainingslogik 615 Anweisungen an die GPU aus, um die zweite Art der Operation mit dem zweiten Tensor durchzuführen, und die zweite Inferenzierungs- und/oder Trainingslogik 615, die auf der GPU betrieben wird, führt die zweite Art der Operation als Reaktion auf ausgegebene Anweisungen durch.
  • In mindestens einer Ausführungsform bezieht sich ein Tensor auf eine dichte n-dimensionale (oder n-Modus) Anordnung. In mindestens einer Ausführungsform sind Tensoren eine Verallgemeinerung von Matrizen zu höheren Dimensionen; beispielsweise Skalare (z.B., α, β, γ), Vektoren (z.B., a, b, c) und Matrizen (z.B., A, B, C) werden 0-Modus, 1-Modus bzw. 2-Modus Tensoren. Tensoren können durch kalligraphische Großbuchstaben (z.B., A, B, C) dargestellt werden. Zum Beispiel kann A ∈ ℝ ε1×ε2×...×εn einen n-Modus-Tensor darstellen, wobei εi ein Ausmaß eines i-ten Modus bezeichnet. Eine Form eines Tensors kann als ε1 × ε2 × ... εn bezeichnet werden und eine Größe (Gesamtzahl von Einträgen) eines Tensors kann als Πiεi bezeichnet werden. Um die Notation zu vereinfachen, können symbolische Namen den Modi zugewiesen werden, so dass Ai1, i2, ...., in einen n-Modus Tensor bezeichnet, wobei sein Modi mit i1, i2, ..., in benannt werden. Modi eines Tensors können als Dimensionen bezeichnet werden.
  • N-Modus Tensoren können als Modus-n Tensoren bezeichnet werden.
  • Eine Notation A(i1, i2, ...., in) kann ein einzelnes Element eines Tensors bezeichnen. In mindestens einer Ausführungsform wird eine Stelle Loc(A(i1, i2, ...., in))) dieses Elements relativ zu einer Speicherstelle von A gegeben durch: Loc ( A ( i 1 , i 2 , ... ., i n ) ) = i 1 × Stride ( i 1 ) + i 2 × Stride ( i 2 ) + + i n × Stride ( i n )
    Figure DE112020004192T5_0001
    wobei Stride(i1) eine Verschiebung im physikalischen Speicher zwischen zwei logisch benachbarten Elementen entlang eines Modus i1 darstellt. In mindestens einer Ausführungsform weist eine Spalten-Hauptmatrix Am,n Stride(m) = 1 und Stride(n) = m auf.
  • In mindestens einer Ausführungsform umfasst die Technik 100 bei einem Block 102 das Identifizieren einer ersten Art von Operation mit einem ersten Tensor, die, wenn ausgeführt, eine Ausgabe erzeugt. In mindestens einer Ausführungsform umfasst die Technik 100 bei einem Block 104 das Konstruieren eines zweiten Tensors. In mindestens einer Ausführungsform basiert das Konstruieren des zweiten Tensors bei Block 104 mindestens teilweise auf dem Ändern einer Anzahl von Dimensionen des ersten Tensors einer ersten Anzahl von Dimensionen in eine zweite Anzahl von Dimensionen, wie ferner mit Bezug auf 3-5 beschrieben. In mindestens einer Ausführungsform wird das Konstruieren des zweiten Tensors unter Verwendung von Datenelementen des ersten Tensors für den zweiten Tensor ohne Hinzufügen zusätzlicher physikalischer Datenelemente durchgeführt. In mindestens einer Ausführungsform umfasst das Konstruieren des zweiten Tensors das Hinzufügen zusätzlicher logischer Datenelemente zu dem zweiten Tensor, die sich auf bereits existierende physikalische Datenelemente des ersten Tensors beziehen. In mindestens einer Ausführungsform werden physikalische Datenelemente in Speicherstellen gespeichert und zusätzliche logische Datenelemente des zweiten Tensors zeigen auf Speicherstellen, wo physikalische Datenelemente des ersten Tensors gespeichert sind. In mindestens einer Ausführungsform umfasst die Technik 100 bei einem Block 106 das Durchführen einer zweiten Art der Operation mit dem zweiten Tensor. In mindestens einer Ausführungsform erzeugt das Durchführen der zweiten Art der Operation mit dem zweiten Tensor eine gleiche Ausgabe, wie durch die erste Art der Operation mit dem ersten Tensor erzeugt worden wäre. In mindestens Ausführungsform wird die Technik 100 in konstanter Zeit, 0(1), mit Bezug auf eine Problemgröße durchgeführt.
  • In mindestens einer Ausführungsform ist die bei Block 102 identifizierte erste Art der Operation eine Tensorfaltung, die bei Block 106 durchgeführte zweite Art der Operation ist eine Tensorkontraktion und die zweite Anzahl von Dimensionen des zweiten Tensors ist größer als die erste Anzahl von Dimensionen des ersten Tensors. In mindestens einer Ausführungsform ist die Ausgabe eine Merkmalskarte, die durch einen Ausgangstensor dargestellt wird. In mindestens einer Ausführungsform ist der erste Tensor ein Aktivierungstensor und die Faltung eine Faltung des Aktivierungstensors und eines Filtertensors.
  • In mindestens einer Ausführungsform ist eine erste Softwarebibliothek, wie beispielsweise eine Tensorfaltungsbibliothek, dem System nicht verfügbar, das die Technik 100 durchführt, so dass die erste Art der Operation nicht direkt durchgeführt werden kann. In mindestens einer Ausführungsform ist eine zweite Softwarebibliothek, wie beispielsweise eine Tensor-Kontraktionsbibliothek, dem System verfügbar, das die Technik 100 durchführt, und das Durchführen der zweiten Art der Operation mit dem zweiten Tensor wird unter Verwendung der zweiten Softwarebibliothek durchgeführt. In mindestens einer Ausführungsform umfasst die Tensor-Faltungsbibliothek mindestens eines von Computercode, Klassen, Prozeduren, Skripten und Konfigurationsdaten, um mindestens eine Tensorfaltungsfunktion über eine anwendungsprogrammierbare Schnittstelle (API) Tensor-Faltungsbibliothek bereitzustellen. In mindestens einer Ausführungsform umfasst die Tensorkontraktionsbibliothek mindestens eines von Computercode, Klassen, Prozeduren, Skripte und Konfigurationsdaten, um mindestens eine Tensorkontraktionsfunktion über eine API der Tensorkontraktionsbibliothek bereitzustellen. In mindestens einer Ausführungsform wird das Durchführen der zweiten Art von Operation bei Block 106 basierend mindestens teilweise auf das Aufrufen der zweiten Softwarebibliothek über eine API der zweiten Softwarebibliothek durchgeführt. In mindestens einer Ausführungsform werden eine erste Datenstruktur, die den zweiten Tensor darstellt, und eine zweite Datenstruktur, die einen zusätzlichen Tensor darstellt, wie beispielsweise einen Filtertensor, an die zweite Softwarebibliothek mit einem Funktionsaufruf geleitet, der einen oder mehrere Prozessoren veranlasst, Anweisungen auszuführen und die zweite Art der Operation mit dem zweiten Tensor und dem zusätzlichen Tensor durchzuführen. In mindestens einer Ausführungsform ist die erste Art der Operation eine Tensorfaltung, die zweite Art der Operation eine Tensorkontraktion, die erste Softwarebibliothek ist die Tensorfaltungsbibliothek und die zweite Softwarebibliothek ist die Tensorkontraktionsbibliothek. In mindestens einer Ausführungsform ist die erste Art der Operation Tensorkontraktion, die zweite Art der Operation ist Tensorfaltung, die erste Softwarebibliothek ist die Tensorkontraktionsbibliothek und die zweite Softwarebibliothek ist die Tensorfaltungsbibliothek.
  • Eine beliebig dimensionierte Tensorkontraktion kann in Relation zu der Notation für eine Matrix-Matrix-Multiplikation beschrieben werden. Wo A ∈ ℝM×K, B ∈ ℝK×N und C ∈ ℝM×N ist, wird eine Matrix-Matrix-Multiplikation ausgedrückt als: C m , n k aA m , k B k , n
    Figure DE112020004192T5_0002
  • Vor diesem Hintergrund können Tensorkontraktionen unter Verwendung einer ähnlichen Notation beschrieben werden.
  • Eine Tensorkontraktion kann beschrieben werden, in dem A ε 1 A × ε 2 A × × ε d A A , B ε 1 B × ε 2 B × × ε d B B , a n d C ε 1 C × ε 2 C × × ε d C C
    Figure DE112020004192T5_0003
    gleich dA--, dB- bzw. dC-Modus Tensoren seien. Eine Erweiterung auf ein „kontraktiertes Tensorprodukt“ kann berücksichtigt werden und eine Tensorkontraktion kann ausgedrückt werden als: C π C ( I m I n ) α k 1 k ξ A π A ( I m I k ) B π B ( I n I k ) .
    Figure DE112020004192T5_0004
    wobei Im := {m1, m2, ...., mY} , In := {n1, n2, ...., nζ} und Ik := {k1, k2, ...., kξ} jeweils freie Modi von A (Modi, die in C und A vorkommen), freie Modi von B (Modi, die in C und B vorkommen), sowie auch kontraktierte Modi (gemeinsame Modi von A und B) mit dA = γ + ξ, dB = ζ + ξ und dC = γ + ζ darstellen. Außerdem sind ΠA, ΠB und Πc Permutationen, die es Modi erlauben, in einer beliebigen Reihenfolge vorzukommen.
  • Um die Notation zu vereinfachen, kann die „Einstein Notation“ angenommen werden, wobei Summierungen über kontraktierte Modi implizit sind, so dass Gleichung (3) wird: C π C ( I m I n ) α A π A ( I m I k ) B π B ( I n I k ) .
    Figure DE112020004192T5_0005
    In mindestens einer Ausführungsform transformiert die Technik 100 eine Klasse 2D räumliche Faltung in eine Tensorkontraktion. In mindestens einer Ausführungsform kann eine zweidimensionale Faltung von zwei vier-Modus Tensoren A und F beschrieben werden wie folgt: O n , k , p , q = c r s A n , c , h , w F k , c , r , s , mit h = p + r und w = q + s ,
    Figure DE112020004192T5_0006
    wobei On,k,p,q ∈ ℝN×K×P×Q,
    Figure DE112020004192T5_0007
    ∈ ℝN×C×H×W, ℱk,c,r,s ∈ ℝK×C×R×S jeweils vierdimensionaler Ausgabe-, Aktivierungs- und Filtertensoren darstellen. In mindestens einer Ausführungsform zeigen der h- und w-Modus des Tensors A ein besonderes Zugriffsmuster auf, welches (5) disqualifiziert, eine Tensorkontraktion zu sein. In mindestens einer Ausführungsform verlangt eine Tensorkontraktion, dass alle Modi, die entweder in Tensor A oder F existieren, ebenfalls im Tensor O vorkommen. In mindestens einer Ausführungsform entspricht n einer Losgröße. In mindestens einer Ausführungsform entspricht k einem Ausgangskanal. In mindestens einer Ausführungsform entspricht p einer Ausgangshöhenposition. In mindestens einer Ausführungsform entspricht q einer Ausgangsbreitenposition. In mindestens einer Ausführungsform entspricht r einer Filterhöhe. In mindestens einer Ausführungsform entspricht s einer Filterbreite. In mindestens einer Ausführungsform entspricht c einem Eingangskanal. In mindestens einer Ausführungsform entspricht h einer Eingangsbildhöhe. In mindestens einer Ausführungsform entspricht w einer Eingangsbildbreite.
  • In mindestens einer Ausführungsform wird ein vierdimensionaler Aktivierungstensor An,c,h,w ∈ ℝ N×C×H×W (logisch) als ein sechsdimensionaler Tensor Ãn,c,p,r.q,s ∈ ℝ N×C×P×R×Q×S mit überlappenden Strides neu interpretiert. In mindestens einer Ausführungsform beziehen sich überlappende Strides auf überlappende Speicherstellen für unterschiedliche logische Datenelemente in dem gleichen Tensor. In mindestens einer Ausführungsform beziehen sich überlappende Speicherstellen für unterschiedliche logische Datenelemente auf zwei unterschiedliche logische Datenelemente mit physikalischen Daten, die bei einer gleichen physikalischen Speicheradresse gespeichert sind. In mindestens einer Ausführungsform ergibt die Verwendung einer derartigen Neuinterpretation die Tensorkontraktion: O n , k , p , q = A n , c , p , r , q , s F k , c , r , s ,
    Figure DE112020004192T5_0008
  • In mindestens einer Ausführungsform bezeichnen, mit Bezug auf Gleichung 6, n,p,q,k freie Modi und r,s,c stellen kontraktierte Modi dar. In mindestens einer Ausführungsform umfasst das Durchführen des zweiten Typs von Operation bei Block 106 das Durchführen einer Tensorkontraktion, wie beispielsweise durch Gleichung 6 angegeben, um einen Ausgangstensor zu erzeugen, der eine Merkmalskarte darstellt.
  • In mindestens einer Ausführungsform ist eine beliebig dimensionierte Tensorfaltung die erste Art der Operation bei Block 102 und wird in Bezug auf eine Tensorkontraktion bei Block 106 durchgeführt. In mindestens einer Ausführungsform sind normale Faltungen, die Kreuzkorrelation verwenden, die erste Art der Operation bei Block 102 und werden in Bezug auf eine Tensorkontraktion bei Block 106 durchgeführt. In mindestens einer Ausführungsform werden mindestens eines von Unterabtastung, Dilation und gruppierten Faltungen die erste Art der Operation bei Block 102 und werden in Bezug auf eine Tensorkontraktion bei Block 106 durchgeführt. In mindestens einer Ausführungsform ist eine Vorwärtspropagierungsfunktion (Fprop) eine erste Art der Operation bei Block 102 und wird in Bezug auf einer Tensorkontraktion bei Block 106 durchgeführt. In mindestens einer Ausführungsform ist eine Datengradientenfunktion (Dgrad) eine erste Art der Operation bei Block 102 und wird in Bezug auf eine Tensorkontraktion bei Block 106 durchgeführt. In mindestens einer Ausführungsform ist eine Gewichtungsgradientenfunktion (Wgrad) eine erste Art der Operation bei Block 102 und wird in Bezug auf eine Tensorkontraktion bei Block 106 durchgeführt. In mindestens einer Ausführungsform werden mindestens eines von einem ersten Tensor, zweiten Tensor, Ausgangstensor und Filtertensor in einer NHWC (N, Höhe, Breite, Kanal) Layoutart, wobei N der Losgröße entspricht, unter Verwendung eines verallgemeinerten Zeilen-Major Speicherlayout (z.B., Stride(C)=1, Stride(W)=C, Stride (H)=W*C, Stride (N)=H*W*C) im Speicher gespeichert. In mindestens einer Ausführungsform, mindestens einer von ersten Tensor, zweite Tensor, Ausgangstensor und Filtertensor werden gespeicherten in ein NCHW (N, Kanal, Höhe, Breite) Typ Layout in Speicher, unter Verwendung eines verallgemeinerten Zeilen-Major-Layout. In mindestens einer Ausführungsform werden mindestens eines von einem ersten Tensor, zweiten Tensor, einem Ausgangstensor und einem Filtertensor in einer NC/32HW32 Layoutart im Speicher mit zwei Gruppen von 32 Kanälen gespeichert. In mindestens einer Ausführungsform werden mindestens eines von einem ersten Tensor, einem zweiten Tensor, einem Ausgangstensor und einem Filtertensor in einer andere Layoutart im Speicher gespeichert, wie beispielsweise CHWN (Kanal, Höhe, Breite, N), NCDHW (N, Kanal, Tiefe, Höhe, Breite) oder NDHWC (N, Tiefe, Höhe, Breite, Kanal). In mindestens einer Ausführungsform ist die Technik 100 agnostisch im Speicherlayout und findet Anwendung auf Tensoren mit einer beliebigen Anzahl von Dimensionen, die in einem beliebigen Speicherlayout gespeichert sind.
  • In mindestens einer Ausführungsform wird eine Tensorkontraktion formuliert und in Bezug auf eine generische n-dimensionale Faltung durchgeführt. In mindestens einer Ausführungsform ist die erste Art der Operation von Block 102 eine Tensorkontraktion und die zweite Art der Operation von Block 106 eine Tensorfaltung. In mindestens einer Ausführungsform ist die erste Art der Operation eine Tensorkontraktion, wie beispielsweise: D m , n = α A m , k B k , n ;
    Figure DE112020004192T5_0009
    D m 1 , n , m 2 = α A m 1 , k , m 2 B k , n ;
    Figure DE112020004192T5_0010
    D m 1 , n 1 , n 2 , m 2 = α A m 1 , k ,m 2 B k , n 2 , n 1 ;
    Figure DE112020004192T5_0011
    D m 1 , n 1 , n 2 , m 2 = α A m 1 , k 1 , m 2 , k 2 B k 2 , k 1 , n 2 , n 1 ;
    Figure DE112020004192T5_0012
    D m 1 , n 1 , l 1 = α A m 1 , k , l 1 B k , n 1 , l 1 ;
    Figure DE112020004192T5_0013
    D m 1 , n 1 , l 1 , n 2 , m 2 = α A m 1 , k , l 1 , m 2 B k , n 2 , n 1 , l 1 ;
    Figure DE112020004192T5_0014
    or D m 1 , n 1 , l 1 , n 2 , m 2 , l 2 = α A m 1 , k , l 2 , l 1 , m 2 B k , n 2 , n 1 , l 1 , l 2
    Figure DE112020004192T5_0015
    wobei A der erste Tensor von Block 102, D eine Tensorausgabe und die zweite Art der Operation eine Tensorfaltung ist, die D durch Durchführen der zweiten Art der Operation bei Block 106 erzeugt, wobei der zweite Tensor bei Block 104 und B konstruiert wird. In mindestens einer Ausführungsform, wobei die erste Art der Operation eine Tensorkontraktion und die zweite Art der Operation eine Tensorfaltung, wird die zweite Art der Operation mit Bezug auf Rechenchemiedaten oder Rechenphysikdaten durchgeführt.
  • In mindestens einer Ausführungsform unterstützt, wo die erste Operation der Technik 100 eine Tensorkontraktion und die zweite Operation von Technik 100 eine Tensorfaltung ist, Faltungsformate eine Faltung eines Aktivierungstensors ÃN,C,H,W mit einem Filtertensor FK,C,R,S, was ON,K,P,Q. ergibt. In mindestens einer Ausführungsform wird die erste Operation durch eine konkrete Tensorkontraktion Cm1,n,m2 = Am1,k,m2 * Bn,k dargestellt und m1 wird in den N Modus von Ä abgebildet, k wird in den C Modus von Ä abgebildet, m2 wird in den H Modus von Ä abgebildet, und eine entsprechende Dimension des Filters F, wie beispielsweise R, wird auf Eins eingestellt, wobei eine Faltung entlang dieses Modus effektiv nicht durchgeführt wird, und n in den K Modus von F abgebildet wird. In mindestens einer Ausführungsform wird auf ähnliche Weise die erste Operation durch eine Kontraktion der Form Cm,n = Am,k1,k2 * Bn,k1,k2 dargestellt, die als eine Faltung neu interpretiert wird, durch Abbilden von m in den N Modus von Ã, k1 in den C Modus von Ã, k2 in den H Modus von Ä, Einstellen einer entsprechenden Filterdimension, wie beispielsweise R, um (k2) zu strecken, den gesamten Modus zu kontraktieren und n in den K Modus von F abzubilden. In mindestens einer Ausführungsform kann, wenn eine generische n-dimensionale Faltungsoftwarebibliothek-Implementierung verfügbar ist, die einen n-dimensionalen Tensor A mit einen m-dimensionalen Tensor B faltet, um einen k-dimensionalen Tensor C entlang x gefalteter Modi zu ergeben, kann eine generische Tensorkontraktion in konstanter Zeit, O(1), in Bezug auf eine Faltung neu interpretiert werden.
  • 2 veranschaulicht ein Ablaufdiagramm einer Technik 200 zum Erzeugen einer Merkmalskarte durch eine Tensorkontraktion gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform führt die mit Bezug auf 6A und 6B beschriebene Inferenzierungs- und/oder Trainingslogik 615 die Technik 200 aus. In mindestens einer Ausführungsform führen die Arithmetik-Logikeinheiten (ALUs) 610 der Inferenzierungs- und/oder Trainingslogik 615 die Technik 200 durch. In mindestens einer Ausführungsform umfasst die Inferenzierungs- und/oder Trainingslogik 615 einen oder mehrere Prozessoren, um die Technik 200 durchzuführen. In mindestens einer Ausführungsform umfasst die Inferenzierungs- und/oder Trainingslogik 615 ein maschinenlesbares Medium mit einem darauf gespeicherten Satz von Anwendungen, die, wenn von einem oder mehreren Prozessoren der Inferenzierungs- und/oder Trainingslogik 615 durchgeführt, einen oder mehrere Prozessoren der Inferenzierungs- und/oder Trainingslogik 615 veranlassen, die Technik 200 durchzuführen. In mindestens einer Ausführungsform wird der Satz von Anweisungen den ALUs 610 bereitgestellt, um die ALUs 610 zu veranlassen, die Technik 200 durchzuführen. In mindestens einer Ausführungsform führt die Rechenhardware 602 und/oder die Rechenhardware 606, die mit Bezug auf 6B beschrieben sind, die Technik 200 durch. In mindestens einer Ausführungsform führt die Rechenhardware 602 und/oder die Rechenhardware 606, die mit Bezug auf 6B beschrieben sind, die Technik 100 durch. In mindestens einer Ausführungsform identifiziert eine erste Inferenzierungs- und/oder Trainingslogik 615 eine Faltungsoperation bei Block 202, identifiziert gefaltete Modi des ersten Aktivierungstensors bei Block 204, konstruiert einen zweiten Aktivierungstensor bei Block 206 und veranlasst die zweite Inferenzierungs- und/oder Trainingslogik 615, eine Merkmalskarte bei Block 208 zu erzeugen. In mindestens einer Ausführungsform ist die zweite Inferenzierungs- und/oder Trainingslogik 615 Teil einer GPU. In mindestens einer Ausführungsform gibt die erste Inferenzierungs- und/oder Trainingslogik 615 Anweisungen an die GPU aus, um eine Merkmalskarte unter Verwendung der Tensorkontraktion des zweiten Aktivierungstensor und des Filtertensors zu erzeugen, und die zweite Inferenzierungs- und/oder Trainingslogik 615, die auf GPU arbeitet, erzeugt Merkmalskarte als Reaktion auf ausgegebene Anweisungen.
  • In mindestens einer Ausführungsform umfasst die Technik 200 bei einem Block 202 das Identifizieren einer Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt. In mindestens einer Ausführungsform ist die Faltungsoperation auf Bilddaten, wie beispielsweise einer Bilddatei (z.B., Bitmap), ein Einzelbild eines Videos oder anderer derartiger Bilddaten. In mindestens einer Ausführungsform umfasst die Technik 200, bei einem Block 204 das Identifizieren gefalteter Modi des ersten Aktivierungstensors. In mindestens einer Ausführungsform umfasst die Technik 200 bei einem Block 206 das Konstruieren eines zweiten Aktivierungstensors. In mindestens einer Ausführungsform basiert das Konstruieren des zweiten Aktivierungstensors mindestens teilweise auf dem ersten Aktivierungstensor. In mindestens einer Ausführungsform weist der zweite Aktivierungstensor eine höhere Anzahl von Modi als der erste Aktivierungstensor auf. In mindestens einer Ausführungsform weisen ein erster Modus und ein zweiter Modus des zweiten Aktivierungstensors überlappende Strides auf. In mindestens einer Ausführungsform weisen alle Modi des ersten Aktivierungstensors nicht überlappende Strides auf. In mindestens einer Ausführungsform sind Strides des ersten Modus und des zweiten Modus identisch. In mindestens einer Ausführungsform werden Strides des ersten Modus und des zweiten Modus auf einen Stride eines gefalteten Modus des ersten Aktivierungstensors eingestellt. In mindestens einer Ausführungsform wird das Konstruieren des zweiten Aktivierungstensors unter Verwendung von Datenelementen des ersten Aktivierungstensors ohne Hinzufügen zusätzlicher Datenelemente durchgeführt. In mindestens einer Ausführungsform umfasst die Technik 200 bei einem Block 208 das Erzeugen einer Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und Filtertensors. In mindestens einer Ausführungsform wird die Merkmalskarte durch einen Ausgangstensor dargestellt. In mindestens Ausführungsform wird die Technik 200 in konstanter Zeit, 0(1), mit Bezug auf eine Problemgröße durchgeführt.
  • In mindestens einer Ausführungsform erzeugt eine 2D-Faltung, die als eine Tensorkontraktion implementiert ist, eine Merkmalskarte. In mindestens einer Ausführungsform verwendet ein Bildverarbeitungssystem die Merkmalskarte, um Merkmale in Einzelbildern eines Videos zu erfassen. In mindestens einer Ausführungsform erzeugt eine 3D-Faltung, die als eine Tensorkontraktion implementiert ist, eine Merkmalskarte für eine Videoanalyse. In mindestens einer Ausführungsform, ein medizinisches Bildgebungssystem, wie beispielsweise ein System einer Magnetresonanzbildgebung (MRI) oder ein System einer Computertomographie (CT), eine Merkmalskarte mit einer 4D-Faltung, die als eine Tensorkontraktion implementiert ist. In mindestens einer Ausführungsform erzeugt ein multispektrales Bildgebungssystem eine Merkmalskarte mit einer Faltung, die als eine Tensorkontraktion implementiert ist. In mindestens einer Ausführungsform erzeugt ein System, das eine Analyse an anderen Typen von Sensordaten durchführt, wie beispielsweise akustischen Sensordaten, eine Merkmalskarte mit einer Faltung, die als eine Tensorkontraktion implementiert ist. In mindestens einer Ausführungsform erzeugt ein Verarbeitungssystem für eine natürliche Sprache eine Merkmalskarte mit einer 1D-Faltung, die als eine Kontraktion implementiert ist.
  • 3 veranschaulicht ein Ablaufdiagramm einer Technik 300 zum Konstruieren eines Tensors gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform führt die mit Bezug auf 6A und 6B beschriebene Inferenzierungs- und/oder Trainingslogik 615 die Technik 300 durch. In mindestens einer Ausführungsform führen Arithmetik-Logikeinheiten (ALUs) 610 der Inferenzierungs- und/oder Trainingslogik 615 die Technik 300 durch. In mindestens einer Ausführungsform umfasst die Inferenzierungs- und/oder Trainingslogik 615 einen oder mehrere Prozessoren, um die Technik 300 durchzuführen. In mindestens einer Ausführungsform umfasst die Inferenzierungs- und/oder Trainingslogik 615 ein maschinenlesbares Medium mit einem darauf gespeicherten Satz von Anweisungen, die, wenn von einem oder mehreren Prozessoren der Inferenzierungs- und/oder Trainingslogik 615 durchgeführt, einen oder mehrere Prozessoren der Inferenzierungs- und/oder Trainingslogik 615 veranlassen, die Technik 300 durchzuführen. In mindestens einer Ausführungsform wird ein Satz von Anweisungen den ALUs 610 bereitgestellt, um die ALUs 610 zu veranlassen, die Technik 300 durchzuführen. In mindestens einer Ausführungsform führt die Rechenhardware 602 und/oder die Rechenhardware 606, die mit Bezug auf 6B beschrieben sind, die Technik 300 durch.
  • In mindestens einer Ausführungsform umfasst die Technik 300 bei einem Block 302 das Identifizieren der Modi eines Aktivierungstensors, eines Filtertensors und eines Ausgangstensors. In mindestens einer Ausführungsform wird bei einem Entscheidungsblock 304 bestimmt, ob ein Modus des Aktivierungstensors im Filtertensor oder Ausgangstensor ist. In mindestens einer Ausführungsform umfasst, wenn beim Entscheidungsblock 304 ein Modus nicht im Filtertensor oder Ausgangstensor ist, die Technik 300 das Aufteilen des Modus bei einem Block 306. In mindestens einer Ausführungsform geht, wenn beim Entscheidungsblock 304 der Modus im Filtertensor oder der Modus im Ausgangstensor ist, die Technik 300 zu einem Entscheidungsblock 308, wo bestimmt wird, ob der Aktivierungstensor zusätzliche Modi umfasst, die nicht bereits beim Entscheidungsblock 304 bewertet wurden. In mindestens einer Ausführungsform werden bei Block 306 hinzugefügte Modi nicht betrachtet, zusätzliche Modi des Aktivierungstensors zu sein, die nicht bereits bei dem Entscheidungsblock 304 beim Durchführen der Bestimmung beim Entscheidungsblock 308 bewertet wurden. In mindestens einer Ausführungsform geht die Technik 300 ebenfalls zu dem Entscheidungsblock 308 nach Aufteilen des Modus bei Block 306 weiter. In mindestens einer Ausführungsform kehrt, wenn bei dem Entscheidungsblock 308 bestimmt wird, dass der Aktivierungstensor zusätzliche Modi umfasst, die Technik 300 zum Entscheidungsblock 304 zurück, um einen zusätzlichen Modus zu bewerten. In mindestens einer Ausführungsform geht, wenn, bei Entscheidungsblock 308, bestimmt wird, dass der Aktivierungstensor keine zusätzlichen Modi umfasst, die Technik 300 zu Block 310 weiter, der das Durchführen zusätzlicher Aktionen umfasst. In mindestens einer Ausführungsform umfasst das Durchführen zusätzlicher Aktionen das Speichern einer Datenstruktur mit Kennzeichnern, die Modi entsprechen, die bei Block 306 erzeugt wurden, und die sich auf zuvor gespeicherte Daten des Aktivierungstensor beziehen, bei Block 302 identifiziert wurden.
  • 4 veranschaulicht ein Ablaufdiagramm einer Technik 400 zum Aufteilen eines Modus eines Tensors gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform führt die mit Bezug auf 6A und 6B beschriebene Inferenzierungs- und/oder Trainingslogik 615 die Technik 400 durch. In mindestens einer Ausführungsform führen Arithmetik-Logikeinheiten (ALUs) 610 der Inferenzierungs- und/oder Trainingslogik 615 die Technik 400 durch. In mindestens einer Ausführungsform umfasst die Inferenzierungs- und/oder Trainingslogik einen oder mehrere Prozessoren, um die Technik 400 durchzuführen. In mindestens einer Ausführungsform umfasst die Inferenzierungs- und/oder Trainingslogik ein maschinenlesbares Medium, das darauf gespeichert einen Satz von Anweisungen aufweist, welche, wenn von einem oder mehreren Prozessoren von Inferenzierungs- und/oder Trainingslogik 615 durchgeführt, einen oder mehrere Prozessoren der Inferenzierungs- und/oder Trainingslogik 615 veranlassen, die Technik 400 durchzuführen. In mindestens einer Ausführungsform wird ein Satz von Anweisungen den ALUs 610 bereitgestellt, um die ALUs 610 zu veranlassen, die Technik 400 durchzuführen. In mindestens einer Ausführungsform führt die mit Bezug auf 6B beschriebene Rechenhardware 602 und/oder Rechenhardware 606 die Technik 400 durch.
  • In mindestens einer Ausführungsform umfasst die Technik 400 bei einem Block 402 das Identifizieren eines Modus eines Filtertensors, der einem gefalteten Modus eines ersten Aktivierungstensors entspricht, der in einem Speicher Daten mit einem Stride aufweist. In mindestens einer Ausführungsform umfasst die Technik 400 bei einem Block 404 das Identifizieren eines Modus eines Ausgangstensors, der dem gefalteten Modus des ersten Aktivierungstensors entspricht. In mindestens einer Ausführungsform umfasst die Technik 400 bei einem Block 406 das Einstellen eines ersten Modus eines zweiten Aktivierungstensors in dem identifizierten Modus des Filtertensors. In mindestens einer Ausführungsform umfasst die Technik 400 bei einem Block 408 das Einstellen eines zweiten Modus des zweiten Aktivierungstensors in dem identifizierten Modus des Ausgangstensors. In mindestens einer Ausführungsform umfasst die Technik 400 bei einem Block 410 das Zeigen von Elementen des ersten Modus und zweiten Modus des Aktivierungstensors auf gleiche Daten, die im Speicher mit gleichem Stride gespeichert sind.
  • 5 veranschaulicht ein Blockdiagramm 500 eines Speichers 502, um Tensordaten gemäß mindestens einer Ausführungsform zu speichern. In mindestens einer Ausführungsform entspricht der Speicher 502 dem Code und/oder der Datenspeicherung 601 und/oder dem Code und/oder der Datenspeicherung 605, die mit Bezug auf 6A und 6B beschrieben sind. In mindestens einer Ausführungsform werden mit Bezug auf das Blockdiagramm 500 beschriebene Operationen durch die Inferenzierungs- und/oder Trainingslogik 615 durchgeführt, die mit Bezug auf 6A und 6B beschrieben ist. In mindestens einer Ausführungsform werden mit Bezug auf das Blockdiagramm 500 beschriebene Operationen durch Arithmetik-Logikeinheiten (ALUs) 610 der Inferenzierungs- und/oder Trainingslogik 615 durchgeführt. In mindestens einer Ausführungsform umfasst die Inferenzierungs- und/oder Trainingslogik 615 einen oder mehrere Prozessoren, um Operationen durchzuführen, die mit Bezug auf das Blockdiagramm 500 beschrieben sind. In mindestens einer Ausführungsform umfasst die Inferenzierungs- und/oder Trainingslogik 615 ein maschinenlesbares Medium mit einem darauf gespeicherten Satz von Anweisungen, die, wenn von einem oder mehrere Prozessoren der Inferenzierungs- und/oder Trainingslogik 615 durchgeführt, einen oder mehrere Prozessoren der Inferenzierungs- und/oder Trainingslogik 615 veranlassen, Operationen durchzuführen, die mit Bezug auf das Blockdiagramm 500 beschrieben sind. In mindestens einer Ausführungsform wird ein Satz von Anweisungen den ALUs 610 bereitgestellt, um die ALUs 610 zu veranlassen, Operationen durchzuführen, die mit Bezug auf das Blockdiagramm 500 beschrieben sind. In mindestens einer Ausführungsform führt die Rechenhardware 602 und/oder die Rechenhardware 606, die mit Bezug auf 6B beschrieben sind, Operationen durch, die mit Bezug auf das Blockdiagramm 500 beschrieben sind.
  • In mindestens einer Ausführungsform erzeugt eine Tensorfaltungsoperation, wenn durchgeführt, einen Ausgangstensor 504 durch Falten eines Aktivierungstensors 506 und eines Filtertensors 508. In mindestens einer Ausführungsform entspricht die Tensorfaltungsoperation erster Art der bei Block 102 von 1 identifizierten Operation. In mindestens einer Ausführungsform umfasst der Aktivierungstensor 506 Modi, die als ‚n‘, ‚c‘, ‚h‘ und ‚w‘ identifiziert werden. In mindestens einer Ausführungsform umfasst der Ausgangstensor 504 Modi. die als ‚n‘, ‚k‘, ‚p‘ und ‚q‘ identifiziert werden. In mindestens einer Ausführungsform umfasst der Filtertensor 508 Modi, die als ‚k‘, ‚c‘, ‚r‘ und ‚s‘ identifiziert werden. In mindestens einer Ausführungsform entspricht der Aktivierungstensor 506 einem mit Bezug auf 1 erläuterten ersten Tensor. In mindestens einer Ausführungsform entspricht der Aktivierungstensor 506 einem ersten mit Bezug auf 2 erläuterten Aktivierungstensor. In mindestens einer Ausführungsform entspricht der Aktivierungstensor 506 einem mit Bezug auf 3 erläuterten Aktivierungstensor. In mindestens einer Ausführungsform entspricht der Aktivierungstensor 506 einem mit Bezug auf 4 erläuterten ersten Aktivierungstensor. In mindestens einer Ausführungsform kann der Aktivierungstensor 506 weniger als vier Dimensionen oder mehr als vier Dimensionen aufweisen, der Aktivierungstensor 516 kann eine entsprechende unterschiedliche Anzahl von Dimensionen aufweisen, der Filtertensor 508 kann eine unterschiedliche Anzahl von Dimensionen aufweisen, die Anzahl gefalteter Modi kann anders als zwei sein und der Ausgangstensor 504 kann eine entsprechende unterschiedliche Anzahl von Dimensionen aufweisen.
  • In mindestens einer Ausführungsform entspricht die Tensorfaltungsoperation der bei Block 202 von 2 identifizierten Faltungsoperation. In mindestens einer Ausführungsform speichert der Speicher 502 Datenelemente des Aktivierungstensors 506 in Speicherstellen 510. In mindestens einer Ausführungsform weist der Modus ‚h‘ des Aktivierungstensors 506 einen Stride 512 auf. In mindestens einer Ausführungsform weist der Modus ‚w‘ des Aktivierungstensor 506 einen Stride 514 auf. In mindestens einer Ausführungsform stellen Stride 512 und Stride 514 Verschiebungen im physikalischen Speicher zwischen zwei logisch benachbarten Elementen entlang des ‚h‘ Modus bzw. des ‚w‘ Modus dar. Strides von Modi ‚n‘ und ‚c‘ des Aktivierungstensors 506 im Speicher 502 werden zwecks Klarheit nicht gezeigt.
  • In mindestens einer Ausführungsform ist ein Aktivierungstensor 516 konstruiert. In mindestens einer Ausführungsform umfasst der Aktivierungstensor 516 Modi, die als ‚n‘, ‚c‘, ‚p‘, ‚r‘, ‚q‘ und ‚s‘ identifiziert werden. In mindestens einer Ausführungsform entspricht der Aktivierungstensor 516 dem bei Block 104 von 1 konstruierten zweiten Tensor. In mindestens einer Ausführungsform entspricht der Aktivierungstensor 516 dem bei Block 206 von 2 konstruierten zweiten Aktivierungstensor. In mindestens einer Ausführungsform wird der Aktivierungstensor 516 durch Aufteilen des Modus ‚h‘ und Modus ‚w‘ des Aktivierungstensors 506 konstruiert. In mindestens einer Ausführungsform werden der Modus ‚h‘ und der Modus ‚w‘ des Aktivierungstensor 516 als aufzuteilende Modi identifiziert, wie mit Bezug auf 3 beschrieben. In mindestens einer Ausführungsform wird, wenn der Aktivierungstensor 516 konstruiert wird, der Modus ‚h‘ des Aktivierungstensors 506 als ein Modus identifiziert, der nicht im Filtertensor 508 oder Ausgangstensor 504 vorhanden ist, wie mit Bezug auf den Entscheidungsblock 304 von 3 erläutert. In mindestens einer Ausführungsform wird der Modus ‚h‘ des Aktivierungstensor 506 aufgeteilt, wie mit Bezug auf Block 306 von 3 und der Technik 400 von 4 beschrieben. In mindestens einer Ausführungsform ist der Modus ‚w‘ des Aktivierungstensors 506 ein zusätzlicher Aktivierungstensorknoten, der beim Entscheidungsblock 308 von 3 identifiziert und aufgeteilt wird, wie mit Bezug auf Block 306 von 3 und der Technik 400 von 4 beschrieben.
  • In mindestens einer Ausführungsform umfasst der Aktivierungstensor 516 einen nicht gefalteten Modus ‚n‘ und einen nicht gefalteten Modus ‚c‘ des Aktivierungstensors 506. In mindestens einer Ausführungsform ist der gefaltete Modus ‚h‘ des Aktivierungstensors 506 im Aktivierungstensor 516 nicht vorhanden, der stattdessen den Modus ‚p‘ des Ausgangstensors 504 und den Modus ‚r‘ des Filtertensors 508 umfasst. In mindestens einer Ausführungsform werden der Modus ‚r‘ und der Modus ‚p‘ im Aktivierungstensor 516 eingestellt, wie mit Bezug auf Block 406 bzw. 408 von 4 beschrieben. In mindestens einer Ausführungsform werden mindestens einige Elementen von sowohl dem Modus ‚r‘ als auch dem Modus ‚p‘ des Aktivierungstensors 516 auf die gleichen im Speicher 502 gespeicherten Daten gezeigt, die mit Bezug auf den Modus ‚h‘ des Aktivierungstensors 506 gespeichert sind. In mindestens einer Ausführungsform werden der Modus ‚r‘ und Modus ‚p‘ des Aktivierungstensors 516 beide auf den Stride 512 eingestellt. In mindestens einer Ausführungsform ist der gefaltete Modus ‚w‘ des Aktivierungstensors 506 im Aktivierungstensor 516 nicht vorhanden, der stattdessen den Modus ‚q‘ des Ausgangstensors 504 und den Modus ‚s‘ des Filtertensors 508 umfasst. In mindestens einer Ausführungsform werden der Modus ‚q‘ und der Modus ‚s‘ in dem Aktivierungstensor 516 gesetzt, wie jeweils mit Bezug auf Block 406 und 408 von 4 beschrieben. In mindestens einer Ausführungsform werden mindestens einige Elementen von sowohl dem Modus ‚q‘ als auch dem Modus ‚s‘ des Aktivierungstensors 516 auf die gleichen Daten gespeicherten in Speicher 502, gespeicherten mit Bezug auf Modus ‚w‘ von Aktivierungstensor 506. In mindestens einer Ausführungsform werden sowohl der Modus ‚q‘ als auch der Modus ‚s‘ des Aktivierungstensors 516 auf den Stride 514 eingestellt. In mindestens einer Ausführungsform umfasst das Konstruieren des Aktivierungstensors 516 das Kopieren mindestens eines Datenelements des Aktivierungstensors 506 in eine unterschiedliche Stelle im Speicher 502. In mindestens einer Ausführungsform ist der Aktivierungstensor 516 konstruiert, so dass alle Datenelemente des Aktivierungstensors 506 in einer gleichen Speicherstelle im Speicher 502 bleiben und auf diese wird durch eine Datenstruktur gezeigt, die den Aktivierungstensor 516 darstellt. In mindestens einer Ausführungsform stellt das Konstruieren des Aktivierungstensors 516, so dass einige Modi überlappende Strides aufweisen, einen Speicherspeicherungsvorteil dar, in dem der Aktivierungstensors 516 in einer kompakteren Form dargestellt wird, als wenn der Aktivierungstensor 516 mit nicht überlappenden Strides konstruiert worden wäre. In mindestens einer Ausführungsform stellt das Konstruieren des Aktivierungstensors 516, so dass Datenelemente des Aktivierungstensors 506 in der gleichen Speicherstelle bleiben, einen Verarbeitungszeitvorteil bereit, weil das Kopieren von Daten und/oder das Erzeugen zusätzlicher Datenelemente zusätzliche Zeit benötigen würde.
  • In mindestens einer Ausführungsform stellt A(i1, i2, ..., in) einen n-dimensionalen Tensor dar, wobei ik einen gefalteten Modus darstellt. In mindestens einer Ausführungsform wird dieser Modus in ik1 und ik2 aufgeteilt, was zu einem logischen (n+1)-dimensionalen Tensor à (i1, i2, ..., ik1, ik2, ..., in) führt, für den Einträge entlang ik1 und ik2 Modi identische Speicherstellen aufweisen können. In mindestens einer Ausführungsform ist, um genau zu sein, für feste i1, i2, ... ik-1, ik+1,... in, LOC (à (i1, ..., a, b, ... in) ) == LOC (à (i1, ..., b, a, ... in)), für zwei beliebige (jedoch gültige) Versätze entlang ik1 und ik2 Modi, so dass diese logischen Modi eine Symmetrie aufdecken. In mindestens einer Ausführungsform wird eine Faltung in eine Tensorkontraktion mit einer Symmetrie entlang neu eingeführter logische Modi konvertiert. In mindestens einer Ausführungsform ist der Aktivierungstensor 506 eine Instanz des n-dimensionalen Tensors A und der Aktivierungstensor 516 ist eine Instanz eines (n+2)-dimensionalen Tensors, der dem oben beschriebenen (n+1)-dimensionalen Tensor Ä entspricht, nachdem zwei gefalteten Modi des Aktivierungstensor 506 aufgeteilt wurden, was zu einem (n+2)-dimensionalen Tensor und nicht zu einem (n+1)-dimensionalen Tensor führt.
  • INFERENZierungS- UND TRAININGSLOGIK
  • 6A veranschaulicht die Inferenzierungs- und/oder Trainingslogik 615, die verwendet wird, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen verbunden sind. Einzelheiten zur Inferenzierungs- und/oder Trainingslogik 615 werden nachstehend in Verbindung mit 6A und/oder 6B bereitgestellt.
  • In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 615, ohne darauf beschränkt zu sein, Code- und/oder Datenspeicherung 601 zum Speichern von Vorwärts- und/oder Ausgabegewicht und/oder Eingangs-/Ausgangsdaten und/oder anderen Parametern zum Konfigurieren von Neuronen oder Schichten eines neuronalen Netzwerks umfassen, das zur Inferenzierung in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder verwendet wird. In mindestens einer Ausführungsform kann die Trainingslogik 615 Code und/oder Datenspeicherung 601 umfassen oder mit diesem gekoppelt sein, um Graphikcode oder andere Software zum Steuern des Timings und/oder der Reihenfolge zu speichern, in welcher Gewichts- und/oder andere Parameterinformationen zu laden sind, um Logik, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten (zusammen arithmetische Logikeinheiten (ALUs)) zu konfigurieren. In mindestens einer Ausführungsform lädt Code, wie beispielsweise Graphikcode, Gewichts- oder andere Parameterinformationen in Prozessor-ALUs, basierend auf einer Architektur eines neuronalen Netzwerks, dem der Code entspricht. In mindestens einer Ausführungsform speichert die Code- und/oder Datenspeicherung 601 Gewichtsparameter und/oder Ein-/Ausgabedaten jeder Schicht eines neuronalen Netzwerks, das in Verbindung mit einer oder mehreren Ausführungsformen während der Vorwärtspropagation von Ein-/Ausgabedaten und/oder Gewichtsparametern während des Trainings und/oder der Inferenzierung unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen trainiert oder verwendet wurde. In mindestens einer Ausführungsform kann jeder Abschnitt der Code- und/oder Datenspeicherung 601 in anderem On-Chip- oder Off-Chip-Datenspeicher, einschließlich des L1-, L2- oder L3-Caches oder Systemspeichers eines Prozessors, enthalten sein.
  • In mindestens einer Ausführungsform kann jeder beliebige Abschnitt der Code- und/oder Datenspeicherung 601 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder Schaltungen sein. In mindestens einer Ausführungsform können Code und/oder die Code- und/oder Datenspeicherung 601 Cache-Speicher, dynamisches RAM („DRAM“), statisches RAM („SRAM“), nichtflüchtiger Speicher (z.B. Flash-Speicher) oder andere Speicherung sein. In mindestens einer Ausführungsform kann die Wahl, ob Code und/oder die Code- und/oder Datenspeicherung 601 beispielsweise intern oder extern zu einem Prozessor ist oder aus DRAM, SRAM, Flash-Speicher oder einem anderen Speicherungstyp besteht, von auf dem Chip bzw. on-chip gegenüber nicht auf dem Chip bzw. off-chip verfügbarem Speicherung, Latenzanforderungen der durchgeführten Trainings- und/oder Inferenzierungsfunktionen, der Losgröße der bei der Inferenzierung und/oder dem Training eines neuronalen Netzwerks verwendeten Daten oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 615, ohne darauf beschränkt zu sein, eine Code- und/oder Datenspeicherung 605 umfassen zum Speichern von Rückwärts- und/oder Ausgangsgewichten und/oder Eingangs-/Ausgangsdaten, die Neuronen oder Schichten eines neuronalen Netzwerks entsprechen, das zur Inferenzierung in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder verwendet wird. In mindestens einer Ausführungsform speichert de Code- und /oder Datenspeicherung 605 Gewichtsparameter und/oder Eingangs-/Ausgangsdaten jeder Schicht eines neuronalen Netzwerks, die in Verbindung mit einer oder mehreren Ausführungsformen während einer Rückwärtspropagation von Eingangs-/Ausgangsdaten und/oder Gewichtsparametern während des Trainings und/oder der Inferenzierung unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen trainiert oder verwendet werden. In mindestens einer Ausführungsform kann die Trainingslogik 615 die Code- und/oder Datenspeicherung 605 umfassen oder mit dieser gekoppelt sein, um Graphikcode oder andere Software zum Steuern des Timings und/oder der Reihenfolge zu speichern, in welchem bzw. welcher Gewichts- und/oder andere Parameterinformationen zum Konfigurieren von Logik einschließlich Ganzzahl- und/oder Gleitkommaeinheiten (zusammen arithmetische Logikeinheiten (ALUs)) zu laden sind.
  • In mindestens einer Ausführungsform lädt ein Code, wie beispielsweise ein Graphikcode, das Laden von Gewichtungs- oder andere Parameterinformationen in Prozessor-ALUs basierend auf einer Architektur eines neuronalen Netzwerks, dem der Code entspricht. In mindestens einer Ausführungsform kann jeder beliebige Abschnitt der Code- und/oder Datenspeicherung 605 mit anderem On-Chip- oder Off-Chip-Datenspeicherung, einschließlich des L1-, L2- oder L3-Cache oder Systemspeichers eines Prozessors, verbunden sein. In mindestens einer Ausführungsform kann jeder beliebige Abschnitt der Code- und/oder Datenspeicherung 605 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder Schaltungen sein. In mindestens einer Ausführungsform kann die Code- und/oder Datenspeicherung 605 Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z.B. Flash-Speicher) oder eine andere Speicherung sein. In mindestens einer Ausführungsform kann die Wahl, ob die Code- und/oder Datenspeicherung 605 beispielsweise intern oder extern zu einem Prozessor ist oder aus DRAM, SRAM, Flash-Speicher oder einem anderen Speicherungstyp besteht, von On-Chip gegenüber Off-Chip verfügbarem Speicher, Latenzanforderungen an durchgeführten Trainings- und/oder Inferenzierungsfunktionen, der Losgröße der bei der Inferenzierung und/oder dem Training eines neuronalen Netzwerks verwendeten Daten oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform können die Code- und/oder Datenspeicherung 601 und die Code- und/oder Datenspeicherung 605 separate Speicherungsstrukturen sein. In mindestens einer Ausführungsform können die Code- und/oder Datenspeicherung 601 und die Code- und/oder Datenspeicherung 605 eine gleiche Speicherungsstruktur sein. In mindestens einer Ausführungsform können die Code- und/oder Datenspeicherung 601 und die Code- und/oder Datenspeicherung 605 teilweise eine gleiche Speicherungsstruktur und teilweise separate Speicherungsstrukturen sein. In mindestens einer Ausführungsform kann jeder beliebige Abschnitt der Code- und/oder Datenspeicherung 601 und der Code- und/oder Datenspeicherung 605 mit anderen On-Chip- oder Off-Chip-Datenspeicherungen, einschließlich des L1-, L2- oder L3-Cache oder Systemspeichers eines Prozessors, kombiniert sein.
  • In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 615, ohne darauf beschränkt zu sein, eine oder mehrere arithmetische Logikeinheiten („ALU(s)“) 610, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten, umfassen, um logische und/oder mathematische Operationen durchzuführen, die mindestens teilweise auf Trainings- und/oder Inferenzcode (beispielsweise Graphikcode) basieren oder durch diesen angezeigt werden, deren Ergebnis Aktivierungen (z.B. Ausgangswerte von Schichten oder Neuronen innerhalb eines neuronalen Netzwerks), die in einer Aktivierungsspeicherung 620 gespeichert sind, erzeugen kann, die Funktionen von Eingangs-/Ausgangs- und/oder Gewichtsparameterdaten sind, die in der Code- und/oder Datenspeicherung 601 und/oder der Code- und/oder Datenspeicherung 605 gespeichert sind. In mindestens einer Ausführungsform werden in der Aktivierungsspeicherung 620 gespeicherte Aktivierungen in Übereinstimmung mit linearer algebraischer und/oder matrixbasierter Mathematik erzeugt, die von den ALU(s) 610 im Ansprechen auf das Ausführen von Anweisungen oder anderem Code durchgeführt wird, wobei Gewichtswerte, die in der Code- und/oder Datenspeicherung 605 sind, und/oder Daten 601 als Operanden zusammen mit anderen Werten, wie beispielsweise Biaswerten, Gradienteninformationen, Impulswerten oder anderen Parametern oder Hyperparametern, verwendet werden, von welchen beliebige oder alle in der Code- und/oder Datenspeicherung 605 oder dem Code und/oder der Code- und/oder Datenspeicherung 601 oder einer anderen Speicherung auf oder außerhalb des Chips gespeichert sein können.
  • In mindestens einer Ausführungsform ist bzw. sind die ALU(s) 610 in einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder Schaltungen enthalten, während in einer anderen Ausführungsform die ALU(s) 610 extern zu einem Prozessor oder einer anderen Hardware-Logikvorrichtung oder Schaltung, die sie verwendet (z.B. einem Co-Prozessor), sein kann bzw. können. In mindestens einer Ausführungsform können ALUs 610 in den Ausführungseinheiten eines Prozessors oder anderweitig in einer Bank von ALUs, auf welche die Ausführungseinheiten eines Prozessors entweder innerhalb desselben Prozessors oder verteilt auf verschiedene Prozessoren unterschiedlicher Art (z.B. Zentraleinheiten, Graphikverarbeitungseinheiten, Festfunktionseinheiten usw.) zugreifen können, aufgenommen sein. In mindestens einer Ausführungsform können die Code- und/oder Datenspeicherung 601, die Code- und/oder Datenspeicherung 605 und die Aktivierungsspeicherung 620 einen Prozessor oder eine anderen Hardware-Logikvorrichtung oder -schaltung gemeinsam nutzen, wohingegen sie in einer anderen Ausführungsform in unterschiedlichen Prozessoren oder anderen Hardware-Logikvorrichtungen oder -schaltungen oder einer Kombination aus gleichen und unterschiedlichen Prozessoren oder anderen Hardware-Logikvorrichtungen oder -schaltungen sein können. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt der Aktivierungsspeicherung 620 mit einer anderen On-Chip- oder Off-Chip-Datenspeicherung, einschließlich des L1-, L2- oder L3-Cache oder Systemspeichers eines Prozessors, enthalten sein. Ferner kann Inferenzierungs- und/oder Trainingscode mit anderem Code gespeichert sein, der einem Prozessor oder einer anderen Hardware-Logik oder -Schaltung zugänglich ist, und kann unter Verwendung der Hol-, Decodier-, Planungs-, Ausführungs-, Stilllegungs- und/oder anderen logischen Schaltungen eines Prozessors abgerufen und/oder verarbeitet werden.
  • In mindestens einer Ausführungsform kann die Aktivierungsspeicherung 620 ein Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z.B. Flash-Speicher) oder andere Speicherung sein. In mindestens einer Ausführungsform kann die Aktivierungsspeicherung 620 ganz oder teilweise innerhalb oder außerhalb eines oder mehrerer Prozessoren oder anderer logischer Schaltungen sein. In mindestens einer Ausführungsform kann eine Wahl, ob der Aktivierungsspeicherung 620 beispielsweise intern oder extern zu einem Prozessor ist oder aus DRAM, SRAM, Flash-Speicher oder einer anderen Speicherungstyp besteht, von on-chip gegenüber off-chip verfügbarer Speicherung, Latenzanforderungen an die durchzuführenden Trainings- und/oder Inferenzierungsfunktionen, der Losgröße der Daten, die bei der Inferenzierung und/oder dem Training eines neuronalen Netzwerks verwendet werden, oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform kann die in 6A dargestellte Inferenzierungs- und/oder Trainingslogik 615 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung („ASIC“), wie beispielsweise der Tensorflow®-Verarbeitungseinheit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem Nervana® (z.B. „Lake Crest“)-Prozessor der Intel Corp. verwendet werden. In mindestens einer Ausführungsform, kann die in 6A dargestellte Inferenzierungs- und/oder Trainingslogik 615 in Verbindung mit Hardware der Zentralverarbeitungseinheit („CPU“), Hardware der Graphikverarbeitungseinheit („GPU“) oder anderer Hardware, wie beispielsweise feldprogrammierbaren Gate-Arrays („FPGAs“), verwendet werden.
  • 6B veranschaulicht die Inferenzierungs- und/oder Trainingslogik 615 gemäß mindestens einer unterschiedlichen Ausführungsform. In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 615, ohne darauf beschränkt zu sein, Hardwarelogik umfassen, bei welcher Rechenressourcen dediziert oder anderweitig exklusiv in Verbindung mit Gewichtswerten oder anderen Informationen, die einer oder mehreren Schichten von Neuronen innerhalb eines neuronalen Netzwerks entsprechen, verwendet werden. In mindestens einer Ausführungsform kann die in 6B dargestellte Inferenzierungs- und/oder Trainingslogik 615 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung (ASIC), wie beispielsweise der Tensorflow®-Verarbeitungseinheit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem Nervana® (z.B. „Lake Crest“)-Prozessor der Intel Corp. verwendet werden. In mindestens einer Ausführungsform kann die in 6B dargestellte Inferenzierungs- und/oder Trainingslogik 615 in Verbindung mit Hardware der Zentralverarbeitungseinheit (CPU), Hardware der Graphikverarbeitungseinheit (GPU) oder anderer Hardware, wie beispielsweise feldprogammierbaren Gate Arrays (FPGAs), verwendet werden. In mindestens einer Ausführungsform umfasst die Inferenzierungs- und/oder Trainingslogik 615, ohne darauf beschränkt zu sein, die Code- und/oder Datenspeicherung 601 und die Code- und/oder Datenspeicherung 605, die zum Speichern von Code (z.B. Graphikcode), Gewichtswerten und/oder anderen Informationen, einschließlich Biaswerten, Gradienteninformationen, Impulswerten und/oder anderen Parameter- oder Hyperparameter-Informationen, verwendet werden können. In mindestens einer Ausführungsform, die in 6B dargestellt ist, ist jede der Code- und/oder Datenspeicherung 601 und der Code- und/oder Datenspeicherung 605 jeweils einer dedizierten Rechenressource zugeordnet, wie beispielsweise der Rechenhardware 602 und der Rechenhardware 606. In mindestens einer Ausführungsform umfasst die Rechenhardware 602 und die Rechenhardware 606 jeweils eine oder mehrere ALUs, die mathematische Funktionen, wie beispielsweise lineare algebraische Funktionen, nur auf Informationen durchführen, die in der Code- und/oder Datenspeicherung 601 bzw. der Code- und/oder Datenspeicherung 605 gespeichert sind, deren Ergebnis in der Aktivierungsspeicherung 620 gespeichert wird.
  • In mindestens einer Ausführungsform entsprechen jeweils die Code- und/oder Datenspeicherung 601 und 605 und entsprechende Rechenhardware 602 und 606 jeweils verschiedenen Schichten eines neuronalen Netzwerks, so dass eine aus einem „Speicherung/Rechenpaar 601/602“ der Code- und/oder Datenspeicherung 601 und der Rechenhardware 602 resultierende Aktivierung als eine Eingabe in das nächste „Speicher/Rechenpaar 605/606“ der Code- und/oder Datenspeicherung 605 und der Rechenhardware 606 bereitgestellt wird, um die konzeptionelle Organisation eines neuronalen Netzwerks zu spiegeln. In mindestens einer Ausführungsform kann jedes der Speicherung/Rechenpaare 601/602 und 605/606 mehr als einer neuronalen Netzwerkschicht entsprechen. In mindestens einer Ausführungsform können zusätzliche Speicher/Rechenpaare (nicht gezeigt) nach oder parallel zu den Speicher/Rechenpaaren 601/602 und 605/606 in die Inferenzierungs- und/oder Trainingslogik 615 aufgenommen sein.
  • TRAINING UND EINSATZ EINES NEURONALEN NETZWERKS
  • 7 veranschaulicht Training und Einsatz eines tiefen neuronalen Netzwerks gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird ein untrainiertes neuronales Netzwerk 706 unter Verwendung eines Trainingsdatensatzes 702 trainiert. In mindestens einer Ausführungsform ist das Training-Framework 704 ein PyTorch-Framework, wohingegen in anderen Ausführungsformen das Training-Framework 704 ein Tensorflow-, Boost-, Caffe-, Microsoft Cognitive Toolkit/CNTK-, MXNet-, Chainer-, Keras-, Deeplearning- oder ein anderes Training-Framework ist. In mindestens einer Ausführungsform trainiert das Training-Framework 704 ein untrainiertes neuronales Netzwerk 706 und ermöglicht dessen Training unter Verwendung von hier beschriebenen Verarbeitungsressourcen, um ein trainiertes neuronales Netzwerk 708 zu erzeugen. In mindestens einer Ausführungsform können Gewichte zufällig oder durch Vortraining unter Verwendung eines Netzwerks tiefen Glaubens gewählt werden. In mindestens einer Ausführungsform kann das Training entweder in einer beaufsichtigten, teilweise beaufsichtigten oder unbeaufsichtigten Art und Weise durchgeführt werden.
  • In mindestens einer Ausführungsform wird ein untrainierte neuronales Netzwerk 706 unter Verwendung von beaufsichtigtem Lernen trainiert, wobei der Trainingsdatensatz 702 eine Eingabe umfasst, die mit einer gewünschten Ausgabe für eine Eingabe gepaart wird, oder wobei der Trainingsdatensatz 702 eine Eingabe mit einer bekannten Ausgabe umfasst und eine Ausgabe des neuronales Netzwerk 706 manuell eingestuft wird. In mindestens einer Ausführungsform wird ein untrainiertes neuronales Netzwerk 706 in einer beaufsichtigten Art und Weise trainiert, verarbeitet Eingaben von dem Trainingsdatensatz 702 und vergleicht resultierende Ausgaben gegen einen Satz von erwarteten oder gewünschten Ausgaben. In mindestens einer Ausführungsform werden Fehler dann durch das untrainierte neuronale Netzwerk 706 zurück propagiert. In mindestens einer Ausführungsform stellt das Training-Framework 704 Gewichte ein, die das untrainierte neuronale Netzwerk 706 steuern. In mindestens einer Ausführungsform umfasst das Training-Framework 704 Tools, um zu überwachen, wie gut das untrainierte neuronale Netzwerk 706 zu einem Modell hin konvergiert, wie beispielsweise das trainierte neuronale Netzwerk 708, das geeignet ist, korrekte Antworten, wie beispielsweise im Ergebnis 714, basierend auf bekannten Eingangsdaten, wie beispielsweise neue Daten 712 zu erzeugen. In mindestens einer Ausführungsform trainiert das Training-Framework 704 das untrainierte neuronale Netzwerk 706 wiederholt, während Gewichte eingestellt werden, um eine Ausgabe des untrainierten neuronalen Netzwerks 706 unter Verwendung einer Verlustfunktion und eines Einstellalgorithmus, wie beispielsweise eines stochastischen Gradientenabstiegs, zu verfeinern. In mindestens einer Ausführungsform trainiert das Training-Framework 704 das untrainierte neuronale Netzwerk 706, bis das untrainierte neuronale Netzwerk 706 eine gewünschte Genauigkeit erreicht. In mindestens einer Ausführungsform kann dann das trainierte neuronale Netzwerk 708 eingesetzt werden, um eine beliebige Anzahl von Maschinenlernoperationen zu implementieren.
  • In mindestens einer Ausführungsform trainiert das Training-Framework 704 das untrainierte neuronale Netzwerk das untrainierte neuronale Netzwerk 706 unter Verwendung der Inferenzierungs-und/oder Trainingslogik 615, die mit Bezug auf 6A und 6B beschrieben ist, basierend mindestens teilweise auf mindestens einer Technik, die mit Bezug auf 1-5 beschrieben ist, wie beispielsweise Identifizieren einer ersten Art von Operation mit einem ersten Tensor, Konstruieren eines zweiten Tensors und Durchführen einer zweiten Art von Operation mit dem zweiten Tensor, die mit Bezug auf 1 beschrieben ist. In mindestens einer Ausführungsform führt die Inferenzierungs- und/oder Trainingslogik 615 eine Inferenzierungsoperation unter Verwendung des trainierten neuronalen Netzwerks 708 basierend mindestens teilweise auf mindestens einer mit Bezug auf 1-5 beschriebenen Technik durch, wie beispielsweise Identifizieren einer ersten Art von Operation mit einem ersten Tensor, Konstruieren eines zweiten Tensors und Durchführen einer zweiten Art von Operation mit dem zweiten Tensor, die mit Bezug auf 1 beschrieben ist.
  • In mindestens einer Ausführungsform wird das untrainierte neuronale Netzwerk 706 unter Verwendung unbeaufsichtigten Lernens trainiert, wobei das untrainierte neuronale Netzwerk 706 versucht, sich selbst unter Verwendung von ungekennzeichneten Daten zu trainieren. In mindestens einer Ausführungsform wird der Trainingsdatensatz für unbeaufsichtigtes Lernen 702 Eingangsdaten ohne irgendwelche zugeordneten Ausgangsdaten oder „Ground-Truth“-Daten umfassen. In mindestens einer Ausführungsform kann das untrainierte neuronale Netzwerk 706 Gruppierungen innerhalb des Trainingsdatensatzes 702 lernen und kann bestimmen, wie einzelne Eingaben mit dem untrainierten Datensatz 702 in Beziehung stehen. In mindestens einer Ausführungsform kann unbeaufsichtigtes Training verwendet werden, um eine selbstorganisierende Karte zu erzeugen, die ein Typ eines trainierten neuronalen Netzwerk 708 ist, das imstande ist, Operationen durchzuführen, die beim Verringern der Dimensionalität neuer Daten 712 nützlich sind. In mindestens einer Ausführungsform kann das unbeaufsichtigte Training ebenfalls verwendet werden, um eine Anomalieerfassung durchzuführen, die eine Identifikation von Datenpunkten in neuen Daten 712 ermöglicht, die von normalen Mustern des neuen Datensatzes 712 abweichen.
  • In mindestens einer Ausführungsform kann halbbeaufsichtigtes Lernen verwendet werden, das eine Technik ist, bei welcher ein Trainingsdatensatz 702 eine Mischung aus gekennzeichneten und nicht gekennzeichneten Daten umfasst. In mindestens einer Ausführungsform kann das Training-Framework 704 verwendet werden, um inkrementelles Lernen durchzuführen, wie beispielsweise durch transferierte Lerntechniken. In mindestens einer Ausführungsform ermöglicht das inkrementelle Lernen dem trainierten neuronalen Netzwerk 708, sich an neue Daten 712 anzupassen, ohne das Wissen zu vergessen, das während des anfänglichen Trainings in das Netzwerk eingebracht wurde.
  • RECHENZENTRUM
  • 8 veranschaulicht ein beispielhaftes Rechenzentrum 800, in welchem mindestens eine Ausführungsform verwendet werden kann. In mindestens einer Ausführungsform umfasst das Rechenzentrum 800 eine Rechenzentrum-Infrastrukturschicht 810, eine Framework-Schicht 820, eine Softwareschicht 830 und eine Anwendungsschicht 840.
  • In mindestens einer Ausführungsform kann, wie in 8 gezeigt, die Rechenzentrum-Infrastrukturschicht 810 einen Ressourcenorchestrator 812, gruppierte Rechenressourcen 814 und Knotenrechenressourcen („Knoten-C.R.“) 816(1)-816(N) umfassen, wobei „N“ eine beliebige positive ganze Zahl darstellt. In mindestens einer Ausführungsform können die Knoten-C.R.s 816(1)-816(N), sind jedoch nicht beschränkt auf, eine beliebige Anzahl von zentralen Verarbeitungseinheiten („CPUs“) oder anderen Prozessoren (einschließlich Beschleunigern, feldprogrammierbaren Gate-Arrays (FPGAs), Graphikprozessoren usw.), Speichervorrichtungen 818(1)-818 (N), (z.B. dynamischer Nur-Lese-Speicher), Speichervorrichtungen (z.B. Solid-State- oder Festplattenlaufwerke), Netzwerk-Eingabe-/Ausgabe („NW E/A“)-Vorrichtungen, Netzwerkschalter, virtuelle Maschinen („VMs“), Leistungsmodule und Kühlmodule usw. umfassen. In mindestens einer Ausführungsform können ein oder mehrere Knoten-C.R.s aus den Knoten-C.R.s 816(1)-816(N) ein Server mit einer oder mehreren der oben erwähnten Rechenressourcen sein.
  • In mindestens einer Ausführungsform können gruppierte Rechenressourcen 814 separate Gruppierungen von Knoten-C.R.s. umfassen, die in einem oder mehreren Racks (nicht gezeigt) untergebracht sind, oder in vielen Racks, die in Rechenzentren an verschiedenen geografischen Standorten untergebracht sind (ebenfalls nicht gezeigt). Separate Gruppierungen von Knoten-C.R.s. innerhalb gruppierter Rechenressourcen 814 können gruppierte Rechen-, Netzwerk-, Speicher- oder Speicherungsressourcen umfassen, die konfiguriert oder allokiert sein können, um eine oder mehrere Arbeitslasten zu unterstützen. In mindestens einer Ausführungsform können mehrere Knoten-C.R.s einschließlich CPUs oder Prozessoren innerhalb eines oder mehrerer Racks gruppiert sein, um Rechenressourcen zur Unterstützung einer oder mehrerer Arbeitslasten bereitzustellen. In mindestens einer Ausführungsform können ein oder mehrere Racks ebenfalls eine beliebige Anzahl von Leistungsmodulen, Kühlmodulen und in beliebiger Kombination umfassen.
  • In mindestens einer Ausführungsform kann der Ressourcenorchestrator 812 eine oder mehrere Knoten-C.R.s 816(1)-816(N) und/oder gruppierte Rechenressourcen 814 konfigurieren oder anderweitig steuern. In mindestens einer Ausführungsform kann der Ressourcenorchestrator 812 eine Software-Design-Infrastruktur („SDI“)-Verwaltungseinheit für das Rechenzentrum 800 umfassen. In mindestens einer Ausführungsform kann der Ressourcenorchestrator Hardware, Software oder eine Kombination davon umfassen.
  • In mindestens einer Ausführungsform umfasst, wie in 8 gezeigt, die Framework-Schicht 820 einen Job-Scheduler 822, einen Konfigurationsverwalter 824, einen Ressourcenverwalter 826 und ein verteiltes Dateisystem 838. In mindestens einer Ausführungsform kann die Framework-Schicht 820 ein Framework zur Unterstützung der Software 832 der Softwareschicht 830 und/oder eine oder mehrere Anwendungen 842 der Anwendungsschicht 840 umfassen. In mindestens einer Ausführungsform kann die Software 832 oder können die Anwendung(en) 842 jeweils webbasierte Dienstsoftware oder Anwendungen umfassen, wie beispielsweise diejenigen, die von Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt werden. In mindestens einer Ausführungsform kann, ohne darauf beschränkt zu sein, die Framework-Schicht 820 eine Art Framework für eine freie und quelloffene Software-Webanwendung-Framework wie beispielsweise Apache SparkTM (nachfolgend als „Spark“ bezeichnet) sein, welches das verteilte Dateisystem 838 für eine groß angelegte Datenverarbeitung (z.B. „big data“) nutzen kann. In mindestens einer Ausführungsform kann der Job-Scheduler 832 einen Spark-Treiber umfassen, um die Planung von Arbeitslasten zu erleichtern, die von verschiedenen Schichten des Rechenzentrums 800 unterstützt werden. In mindestens einer Ausführungsform kann der Konfigurationsverwalter 824 in der Lage sein, verschiedene Schichten wie beispielsweise die Softwareschicht 830 und die Framework-Schicht 820 einschließlich Spark und des verteilten Dateisystems 838 zur Unterstützung der groß angelegten Datenverarbeitung zu konfigurieren. In mindestens einer Ausführungsform kann der Ressourcenverwalter 826 in der Lage sein, geclusterte oder gruppierte Rechenressourcen zu verwalten, die zur Unterstützung des verteilten Dateisystems 838 und des Job-Planers 822 gemappt oder zugeteilt sind. In mindestens einer Ausführungsform können geclusterte oder gruppierte Rechenressourcen die gruppierte Rechenressource 814 auf der Rechenzentrum-Infrastrukturschicht 810 umfassen. In mindestens einer Ausführungsform kann sich der Ressourcenverwalter 826 mit dem Ressourcenorchestrator 812 koordinieren, um diese gemappten oder allokierten Rechenressourcen zu verwalten.
  • In mindestens einer Ausführungsform kann die in der Softwareschicht 830 enthaltene Software 832 eine Software umfassen, die von mindestens Teilen der Knoten-C.R.s 816(1)-816(N) verwendet wird, gruppierte Rechenressourcen 814 und/oder das verteilte Dateisystem 838 der Framework-Schicht 820 umfassen. Eine oder mehrere Arten von Software können, ohne darauf beschränkt zu sein, Internet-Webseiten-Such-Software, E-Mail-Virenscanner-Software, Datenbanksoftware und Streaming-Videoinhalt-Software umfassen.
  • In mindestens einer Ausführungsform kann(können) die in der Anwendungsschicht 840 enthaltene(n) Anwendung(en) 842 eine oder mehrere Arten von Anwendungen, die von mindestens Teilen der Knotens-C.R.s 816(1)-816(N) verwendet werden, gruppierte Rechenressourcen 814 und/oder das verteilte Dateisystem 838 der Framework-Schicht 820 umfassen. In mindestens einer Ausführungsform können eine oder mehrere Arten von Anwendungen können, ohne darauf beschränkt zu sein, eine beliebige Anzahl von genomischen Anwendungen, ein kognitives Berechnen und Anwendungen maschinellen Lernens, einschließlich Trainings- oder Inferenzsoftware, Framework-Software für maschinelles Lernen (z.B. PyTorch, TensorFlow, Caffe usw.) oder andere Anwendungen maschinellen Lernens, umfassen, die in Verbindung mit einer oder mehreren Ausführungsformen verwendet werden.
  • In mindestens einer Ausführungsform kann jeder der Konfigurationsmanager 834, des Ressourcenmanager 836 und des Ressourcenorchestrators 812, basierend auf einer beliebigen Menge und der Art von Daten, die in beliebig technisch machbarer Weise erfasst wurden, eine beliebige Anzahl und Art von selbstmodifizierenden Aktionen implementieren. In mindestens einer Ausführungsform können selbstmodifizierende Aktionen einen Betreiber des Rechenzentrums 800 davon befreien, möglicherweise schlechte Konfigurationsentscheidungen zu treffen und möglicherweise ungenutzte und/oder schlecht funktionierende Abschnitte eines Rechenzentrums zu vermeiden.
  • In mindestens einer Ausführungsform kann das Rechenzentrum 800 Tools, Dienste, Software oder andere Ressourcen umfassen, um ein oder mehrere Modelle maschinellen Lernens zu trainieren oder Informationen unter Verwendung eines oder mehrerer Modelle maschinellen Lernens vorherzusagen oder abzuleiten, gemäß einer oder mehrerer hier beschriebener Ausführungsformen. Beispielsweise kann in mindestens einer Ausführungsform ein Modell maschinellen Lernens trainiert werden, indem Gewichtsparameter gemäß einer neuronalen Netzwerkarchitektur unter Verwendung der vorstehend in Bezug auf das Rechenzentrum 800 beschriebenen Software und Rechenressourcen berechnet werden. In mindestens einer Ausführungsform können trainierte Modelle maschinellen Lernens, die einem oder mehreren neuronalen Netzwerken entsprechen, verwendet werden, um Informationen unter Verwendung der vorstehend in Bezug auf das Rechenzentrum 800 beschriebenen Ressourcen unter Verwendung von Gewichtsparametern, die durch eine oder mehrere der hierin beschriebenen Trainingstechniken berechnet wurden, abzuleiten oder vorherzusagen.
  • In mindestens einer Ausführungsform kann das Rechenzentrum CPUs, anwendungsspezifische integrierte Schaltungen (ASICs), GPUs, FPGAs oder andere Hardware verwenden, um ein Training und/oder Inferenzieren unter Verwendung der vorstehend beschriebenen Ressourcen durchzuführen. Außerdem können eine oder mehrere der vorstehend beschriebenen Software- und/oder Hardware-Ressourcen als ein Dienst konfiguriert sein, um Benutzern zu erlauben, Informationen, wie beispielsweise Bilderkennung, Spracherkennung oder andere Dienste künstlicher Intelligenz, zu trainieren oder eine Inferenzierung derselben durchzuführen.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einem oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zur Inferenzierungs- und/oder Trainingslogik 615 werden hier in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform kann in dem System von 8 die Inferenzierungs- und/oder Trainingslogik 615 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die mindestens teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 8 gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenzierungs-und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenzierungs-und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und Filtertensors zu erzeugen.
  • Autonomes Fahrzeug
  • 9A veranschaulicht ein Beispiel eines autonomen Fahrzeugs 900 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das autonome Fahrzeug 900 (alternativ hier als „Fahrzeug 900“ bezeichnet), ohne darauf beschränkt zu sein, ein Personenkraftwagen, wie beispielsweise ein Pkw, ein Lastkraftwagen, ein Bus und/oder eine andere Art von Fahrzeug sein, das einen oder mehrere Fahrgäste aufnehmen kann. In mindestens einer Ausführungsform kann das Fahrzeug 900 ein Halb-Zugmaschinen-Anhänger-Lastwagen sein, der zum Ziehen von Fracht verwendet wird. In mindestens einer Ausführungsform kann das Fahrzeug 900 ein Flugzeug, ein Roboterfahrzeug oder eine andere Art von Fahrzeug sein.
  • Autonome Fahrzeuge können im Allgemeinen hinsichtlich Automatisierungsgrade beschrieben werden, die von der National Highway Traffic Safety Administration („NHTSA“), einer Abteilung des US Department of Transportation, und dem Standard „Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles“ der Society of Automotive Engineers („SAE“) (z.B. Standard Nr. J3016-201806, veröffentlicht am 15. Juni 2018, Standard Nr. J3016-201609, veröffentlicht am 30. September 2016, und frühere und zukünftige Versionen dieser Norm) definiert wird. In einer oder mehreren Ausführungsformen kann das Fahrzeug 900 in Übereinstimmung mit einer oder mehreren der autonomen Fahrstufen 1 bis 5 funktionsfähig sein. Beispielsweise kann das Fahrzeug 900 in mindestens einer Ausführungsform in der Lage sein, eine bedingte Automatisierung (Stufe 3), eine hohe Automatisierung (Stufe 4) und/oder eine vollständige Automatisierung (Stufe 5) durchzuführen.
  • In mindestens einer Ausführungsform kann das Fahrzeug 900 Komponenten, wie beispielsweise ein Fahrgestell, eine Fahrzeugkarosserie, Räder (z.B. 2, 4, 6, 8, 18 usw.), Reifen, Achsen und andere Komponenten eines Fahrzeugs umfassen. In mindestens einer Ausführungsform kann das Fahrzeug 900 ein Antriebssystem 950, wie beispielsweise einen Verbrennungsmotor, eine Hybrid-Elektroanlage, einen vollelektrischen Motor und/oder eine andere Art eines Antriebssystems umfassen. In mindestens einer Ausführungsform kann das Antriebssystem 950 mit einem Antriebsstrang des Fahrzeugs 900 verbunden sein, der ein Getriebe umfassen kann, um den Antrieb des Fahrzeugs 900 zu ermöglichen. In mindestens einer Ausführungsform kann das Antriebssystem 950 als Antwort auf das Empfangen von Signalen von einer Drossel/einem Beschleuniger(n) 952 gesteuert werden.
  • In mindestens einer Ausführungsform wird ein Lenksystem 954 verwendet, das ein Lenkrad, ohne darauf beschränkt zu sein, umfassen kann, um das Fahrzeug 900 (z.B. entlang eines gewünschten Wegs oder Route) zu lenken, wenn das Antriebssystem 950 in Betrieb ist (z.B., wenn das Fahrzeug 900 in Bewegung ist). In mindestens einer Ausführungsform kann das Lenksystem 954 Signale von einem Lenkaktuator(en) 956 empfangen. Ein Lenkrad kann für die Funktionalität der Vollautomatisierung (Stufe 5) optional sein. In mindestens einer Ausführungsform kann das Bremssensorsystem 946 verwendet werden, um Fahrzeugbremsen als Antwort auf das Empfangen von Signalen von dem(den) Bremsaktuator(en) 948 und/oder Bremssensoren zu betätigen.
  • In mindestens einer Ausführungsform stellen der(die) Controller 936, der(die) ein oder mehrere Systeme on Chips („SoCs“) (in 9A nicht gezeigt) und/oder Graphikverarbeitungseinheiten („GPU(s“) umfassen kann(können), Signale (z.B. welche Befehle repräsentieren) einer oder mehreren Komponenten und/oder Systemen des Fahrzeugs 900 bereit. Beispielsweise kann(können) der(die) Controller 936 Signale zum Betätigen von Fahrzeugbremsen über ein oder mehrere Bremsaktuatoren 948, zum Betätigen des Lenksystems 954 über ein oder mehrere Lenkaktuatoren 956 und zum Betätigen des Antriebssystems 950 über ein oder mehrere Drosseln/Beschleuniger 952 senden. Der(die) Controller 936 kann(können) eine oder mehrere eingebaute (z.B. integrierte) Rechenvorrichtungen (z.B. Supercomputer) umfassen, 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 900 zu unterstützen. In mindestens einer Ausführungsform kann(können) der(die) Controller 936 einen ersten Controller für autonome Fahrfunktionen, einen zweiten Controller für funktionale Sicherheitsfunktionen, einen dritten Controller für Funktionen der künstlichen Intelligenz (z.B. Computer-Vision), einen vierten Controller für Infotainment-Funktionalität, einen fünften Controller für Redundanz bei Notfällen und/oder andere Controller umfassen. In mindestens einer Ausführungsform kann ein einzelner Controller zwei oder mehr der obigen Funktionalitäten handhaben, zwei oder mehr Controller können eine einzelne Funktionalität und/oder eine beliebige Kombination davon handhaben.
  • In mindestens einer Ausführungsform kann(können) der(die) Controller 936 Signale zum Steuern einer oder mehrerer Komponenten und/oder Systeme des Fahrzeugs 900 als Antwort auf Sensordaten bereitstellen, die von einem oder mehreren Sensoren (z.B. Sensoreingaben) empfangen werden. In mindestens einer Ausführungsform können die Sensordaten, beispielsweise und ohne darauf beschränkt zu sein, von Sensor(en) von globalen Navigationssatellitensystemen 958 (z.B. Global Positioning System Sensor(s); „GNSS“), RADAR-Sensor(en) 960, Ultraschallsensor(en) 962, LIDAR-Sensor(en) 964, Inertial Measurement Unit (IMU) Sensor(en) 966 (z.B. Beschleunigungssensor(en), Gyroskop(e), Magnetkompass(e), Magnetometer(e), usw.), Mikrophon(e) 996, Stereokamera(s) 968, Weitwinkelkamera(s) 970 (z.B. Fischaugenkameras), Infrarot-Kamera(s) 972, Surround-Kamera(s) 974 (z.B. 360-Grad-Kameras), Fernbereichskameras (in 9A nicht gezeigt), Mittelbereichskamera(s) (in 9A nicht gezeigt), Geschwindigkeitssensor(en) 944 (z.B. zur Messung der Geschwindigkeit des Fahrzeugs 900), Schwingungssensor(en) 942, Lenksensor(en) 940, Bremssensor(en) (z.B. als Teil des Bremssensorsystems 946) und/oder anderen Sensortypen empfangen werden.
  • In mindestens einer Ausführungsform können ein oder mehrere Controller 936 Eingaben (z.B. repräsentiert durch Eingabedaten) von einer Instrumentengruppe 932 des Fahrzeugs 900 empfangen und Ausgaben (z.B., repräsentiert durch Ausgabedaten, Anzeigedaten usw.) über eine Anzeige einer Mensch-Maschine-Schnittstelle (Human-Machine Interface; „HMI“) 934, eine hörbare Meldevorrichtung, einen Lautsprecher und/oder über andere Komponenten des Fahrzeugs 900 bereitstellen. In mindestens einer Ausführungsform können die Ausgaben Informationen, wie beispielsweise Fahrzeugvektorgeschwindigkeit, Geschwindigkeit, Zeit, Kartendaten (z.B. eine Hochdefinitions-Karte (in 9A nicht gezeigt), Standortdaten (z.B. den Standort des Fahrzeugs, wie z.B. auf einer Karte), Richtung, Standort anderer Fahrzeuge (z.B. ein Belegungsgitter), Informationen über Objekte und Status von Objekten, wie von dem(den) Controllern 936 wahrgenommen, usw. umfassen. Beispielsweise kann in mindestens einer Ausführungsform die HMI-Anzeige 934 Informationen über das Vorhandensein eines oder mehrerer Objekte (z.B. eines Straßenschilds, eines Warnschilds, einer Ampeländerung usw.) und/oder Informationen über Fahrmanöver, die ein Fahrzeug durchführte, gerade durchführt oder durchführen wird (z.B. aktuelles Wechseln von Spuren, Nehmen einer Ausfahrt 34B in zwei Meilen, usw.), anzeigen.
  • In mindestens einer Ausführungsform umfasst das Fahrzeug 900 ferner eine Netzwerkschnittstelle 924, die eine oder mehrere drahtlose Antenne(n) 926 und/oder Modem(s) zur Kommunikation über ein oder mehrere Netzwerke verwenden kann. Beispielsweise kann in mindestens einer Ausführungsform eine Netzwerkschnittstelle 924 imstande sein, über Long-Term Evolution („LTE“), Wide Code Division Multiple Access („WCDMA“), Universal Mobile Telecommunications System („UMTS“), Global System for Mobile Communication („GSM“), („CDMA2000“),IMT-CDMA Multi-Carrier („CDMA2000“) usw. zu kommunizieren. In mindestens einer Ausführungsform kann(können) die drahtlose(n) Antenne(n) 926 ebenfalls eine Kommunikation zwischen Objekten in der Umgebung (z.B. Fahrzeugen, mobilen Vorrichtungen usw.) unter Verwendung von einem Lokalbereichsnetzwerk(en), wie beispielweise Bluetooth, Bluetooth Low Energy („LE“), Z-Wave, ZigBee usw., und/oder einem Weitbereichsnetzwerk(en) mit geringer Leistung („LPWANs“), wie beispielsweise LoRaWAN, SigFox usw. ermöglichen.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten hinsichtlich der Inferenzierungs- und/oder Trainingslogik 615 werden hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 615 in dem System von 9A zum Inferenzieren oder Voraussagen von Operationen verwendet werden, die mindestens teilweise auf Gewichtungsparameter basieren, die unter Verwendung von neuronalen Netzwerktrainingsoperationen, neuronalen Netzwerkfunktionen und/oder Architekturen, oder hier beschriebenen Anwendungsfällen eines neuronalen Netzwerks berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 9A gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und des Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte in dem Fahrzeug 900 von 9A verwendet.
  • 9B veranschaulicht ein Beispiel von Kamerastandorten und Sichtfeldern für das beispielhafte autonome Fahrzeug 900 von 9A gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform sind die Kameras und jeweilige Sichtfelder eine beispielhafte Ausführungsform und sind nicht bestimmt, einschränkend zu sein. Beispielsweise können zusätzliche und/oder alternative Kameras umfasst sein und/oder die Kameras können an unterschiedlichen Stellen an einem Fahrzeug 900 lokalisiert sein.
  • In mindestens einer Ausführungsform können die Kameratypen für Kameras, sind jedoch nicht beschränkt darauf, Digitalkameras umfassen, die für eine Verwendung mit den Komponenten und/oder Systemen des Fahrzeugs 900 angepasst sein können. Die Kamera(s) kann(können) bei dem Automotive Safety Integrity Level (ASIL) B und/oder bei einem anderen ASIL arbeiten. Die Kameratypen können für eine beliebige Bildaufnahmerate, z.B. 60 Einzelbilder pro Sekunde (fps), 1120 fps, 240 fps, usw. abhängig von der Umgebung fähig sein. In mindestens einer Ausführungsform können die Kameras in der Lage sein, rollende Verschlüsse, globale Verschlüsse, eine andere Art von Verschluss oder eine Kombination davon zu verwenden. In mindestens einer Ausführungsform kann ein Farbfilterarray ein Red Clear („RCCC“) Farbfilterarray, ein Red Clear Blue („RCCB“) Farbfilterarray, ein Red Blue Green Clear („RBGC“) Farbfilterarray, ein Foveon X3 Farbfilterarray, ein Bayer-Sensoren („RGGB“) Farbfilterarray, ein monochromes Sensorfarbfilterarray und/oder eine andere Art von Farbfilterarray umfassen. In mindestens einer Ausführungsform können klare Pixelkameras, wie beispielsweise Kameras mit einem RCCC-, einem RCCB- und/oder einem RBGC-Farbfilterarray, in einem Bemühen verwendet werden, die Lichtempfindlichkeit zu erhöhen.
  • In mindestens einer Ausführungsform kann(können) eine oder mehrere der Kameras verwendet werden, um Advanced Driver Assistance Systems („ADAS“)-Funktionen (z.B. als Teil eines redundanten oder ausfallsicheren Designs) durchzuführen. Beispielsweise kann in mindestens einer Ausführungsform eine Multifunktion-Monokamera installiert sein, um Funktionen bereitzustellen, die Spurabweichungswarnung, Verkehrszeichenunterstützung und intelligente Scheinwerfersteuerung umfassen. In mindestens einer Ausführungsform kann(können) eine oder mehrere der Kameras (z.B. alle der Kameras) Bilddaten (z.B. Video) gleichzeitig aufzeichnen und bereitstellen.
  • In mindestens einer Ausführungsform können eine oder mehrere der Kameras in einer Montagebaugruppe, wie beispielsweise einer kundenspezifischen (dreidimensionalen („3D“) gedruckten) Baugruppe, angebracht sein, um Streulicht und Reflexionen aus einem Autoinneren (z.B. Reflexionen vom Armaturenbrett, die in den Spiegeln der Windschutzscheibe reflektiert werden) abzubauen, welche die Fähigkeiten der Bilddatenerkennung der Kamera beeinträchtigen können. In Bezug auf die Montagebaugruppen der Außenspiegel können in mindestens einer Ausführungsform die Außenspiegelbaugruppen kundenspezifisch in 3D gedruckt werden, so dass eine Kameramontageplatte einer Form eines Außenspiegels entspricht. In mindestens einer Ausführungsform kann(können) die Kamera(s) in Außenspiegeln integriert sein. In mindestens einer Ausführungsform kann(können) für Seitensichtkameras die Kamera(s) auch innerhalb vier Säulen an jeder Ecke einer Kabine integriert sein.
  • In mindestens einer Ausführungsform können Kameras mit einem Sichtfeld, das Teile einer Umgebung vor einem Fahrzeug 900 umfasst (z.B. nach vorne gerichtete Kameras), für eine Rundumsicht verwendet werden, um dabei zu helfen, nach vorne gerichtete Wege und Hindernisse zu identifizieren, sowie auch dabei zu helfen, mit Hilfe eines oder mehrerer Controller 936 und/oder Steuer-SoCs, wichtige Informationen zum Erzeugen eines Belegungsgitters und/oder zum Bestimmen der bevorzugten Fahrzeugwege bereitzustellen. In mindestens einer Ausführungsform können nach vorne gerichtete Kameras verwendet werden, um viele der gleichen ADAS-Funktionen, wie LIDAR, einschließlich, ohne darauf beschränkt zu sein, Notbremsung, Fußgängererkennung und Kollisionsvermeidung, durchzuführen. In mindestens einer Ausführungsform können nach vorne gerichtete Kameras auch für ADAS-Funktionen und - Systeme, einschließlich Spurverlassungswarnungen (Lane Departure Warnings; „LDW“), autonome Geschwindigkeitsregelung (Autonomous Cruise Control; „ACC“) und/oder andere Funktionen, wie beispielsweise Verkehrszeichenerkennung, verwendet werden.
  • In mindestens einer Ausführungsform kann eine Vielfalt von Kameras in einer nach vorne gerichteten Konfiguration verwendet werden, die beispielsweise eine monokulare Kameraplattform umfasst, die einen CMOS(„complementary metal oxide semiconductor“)-Farbbildgeber umfasst. In mindestens einer Ausführungsform kann eine Weitwinkelkamera 970 verwendet werden, um Objekte wahrzunehmen, die von einer Peripherie in Sicht kommen (z.B. Fußgänger, Kreuzverkehr oder Fahrräder). Obwohl nur eine Weitwinkelkamera 180 in 9B veranschaulicht ist, kann es in anderen Ausführungsformen eine beliebige Anzahl (einschließlich null) von Weitwinkelkameras an einem Fahrzeug 900 geben. In mindestens einer Ausführungsform kann eine beliebige Anzahl von Fernbereichskameras 998 (z.B. ein Langsicht-Stereokamerapaar) zur tiefenbasierten Objekterkennung insbesondere für Objekte verwendet werden, für die ein neuronales Netzwerk noch nicht trainiert wurde. In mindestens einer Ausführungsform kann(können) eine Fernbereichskamera(s) 998 ebenfalls zur Objekterkennung und -klassifizierung sowie auch zur grundlegenden Objektverfolgung eingesetzt werden.
  • In mindestens einer Ausführungsform können eine oder mehrere Stereokameras 968 ebenfalls in einer nach vorne gerichteten Konfiguration umfasst sein. In mindestens einer Ausführungsform kann eine oder mehrere Stereokameras 968 eine integrierte Steuereinheit umfassen, die eine skalierbare Verarbeitungseinheit umfasst, die eine programmierbare Logik („FPGA“) und einen Mehrkernmikroprozessor mit einem integrierten Controller Area Network („CAN“) oder Ethernet-Schnittstelle auf einem einzigen Chip bereitstellen kann. In mindestens einer Ausführungsform kann eine derartige Einheit verwendet werden, um eine 3D-Karte der Umgebung des Fahrzeugs 900 zu erzeugen, die eine Abstandsschätzung für alle Punkte in dem Bild umfasst. In mindestens einer Ausführungsform kann(können) eine alternative Stereokamera(s) 968 einen kompakten Stereosichtsensor(en) umfassen, der zwei Kameraobjektive (je eine links und rechts) und einen Bildverarbeitungschip, ohne darauf beschränkt zu sein, umfassen kann, der den Abstand von einem Fahrzeug 900 zu dem Zielobjekt messen und die erzeugten Informationen (z.B. Metadaten) verwenden kann, um die autonomen Funktionen der Notbremsung und Spurverlassungswarnung zu aktivieren. In mindestens einer Ausführungsform können andere Typen einer(von) Stereokamera(s) 968 zusätzlich zu oder alternativ aus den hier beschriebenen verwendet werden.
  • In mindestens einer Ausführungsform können Kameras mit einem Sichtfeld, das Teile der Umgebung seitlich des Fahrzeugs 900 umfasst (z.B. Seitensichtkameras), für die Surround-Ansicht verwendet werden, die Informationen bereitstellt, die zum Erzeugen und Aktualisieren des Belegungsgitters sowie auch zum Erzeugen von Seitenaufprallwarnungen verwendet werden. Beispielsweise kann(können) in mindestens einer Ausführungsform die Surround-Kamera(s) 974 (z.B. vier Surround-Kameras 974, wie in 9B veranschaulicht) an einem Fahrzeug 900 positioniert werden. Die Surround-Kamera(s) 974 kann(können), ohne darauf beschränkt zu sein, eine beliebige Anzahl und Kombination von Weitwinkelkamera(s), Fischaugenkamera(s), 360-Grad-Kamera(s) und/oder ähnliche Kameras umfassen. Beispielsweise können in mindestens einer Ausführungsform vier Fischaugenkameras an einer Vorderseite, einer Rückseite und den Seiten des Fahrzeugs 900 positioniert werden. In mindestens einer Ausführungsform kann das Fahrzeug 900 drei Surround-Kameras 974 (z.B. links, rechts und hinten) verwenden und kann eine oder mehrere andere Kameras (z.B. eine nach vorne gerichtete Kamera) als eine vierte Surround-View-Kamera wirksam einsetzen.
  • In mindestens einer Ausführungsform können Kameras mit einem Sichtfeld, das Abschnitte einer Umgebung zur Rückseite des Fahrzeugs 900 umfasst (z.B. Rückfahrkameras), für eine Einparkhilfe, eine Rundumsicht, Warnungen vor Heckkollision sowie zum Erzeugen und Aktualisieren eines Belegungsgitters verwendet werden. In mindestens einer Ausführungsform kann eine weite Vielfalt von Kameras verwendet werden, einschließlich, jedoch nicht beschränkt auf, Kameras, die auch als eine nach vorne gerichtete Kamera(s) geeignet sind (z.B. Fern- und/oder Mittelbereichskamera(s) 976, Stereokamera(s) 968, Infrarotkameras 972 usw.), wie hier beschrieben.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten hinsichtlich der Inferenzierungs- und/oder Trainingslogik 615 werden nachstehend in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 615 in dem System von 9B zum Inferenzieren oder Voraussagen von Operationen verwendet werden, die mindestens teilweise auf Gewichtungsparameter basieren, die unter Verwendung von neuronalen Netzwerktrainingsoperationen, neuronalen Netzwerkfunktionen und/oder Architekturen, oder hier beschriebenen Anwendungsfällen eines neuronalen Netzwerks berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 9B gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und des Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte in dem Fahrzeug 900 von 9B verwendet.
  • 9C ist ein Blockdiagramm, das eine beispielhafte Systemarchitektur für das autonome Fahrzeug 900 von 9A veranschaulicht, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird jede der Komponenten, Merkmale und Systeme des Fahrzeugs 900 in 9C als über einen Bus 902 verbunden veranschaulicht. In mindestens einer Ausführungsform kann der Bus 902 eine CAN(Controller Area Network)-Datenschnittstelle (alternativ hier als ein „CAN-Bus“ bezeichnet) umfassen. In mindestens einer Ausführungsform kann ein CAN ein Netzwerk innerhalb des Fahrzeugs 900 sein, das verwendet wird, um bei der Steuerung unterschiedlicher Merkmale und der Funktionalität des Fahrzeugs 900 zu helfen, wie beispielsweise der Betätigung von Bremsen, Beschleunigung, Bremsen, Lenkung, Scheibenwischern usw. In mindestens einer Ausführungsform kann der Bus 902 konfiguriert sein, um Dutzende oder sogar Hunderte von Knoten jeweils mit seinem eigenen eindeutigen Identifikator (z.B. einer CAN-ID) aufzuweisen. In mindestens einer Ausführungsform kann der Bus 902 gelesen werden, um Lenkradwinkel, Bodengeschwindigkeit, Motordrehzahlen pro Minute (U/min), Schalterpositionen und/oder andere Fahrzeugstatusanzeigen zu ermitteln. In mindestens einer Ausführungsform kann der Bus 902 ein CAN-Bus sein, der ASIL B konform ist.
  • In mindestens einer Ausführungsform kann zusätzlich zu oder alternativ von CAN, FlexRay- und/oder Ethernet verwendet werden. In mindestens einer Ausführungsform kann es eine beliebige Anzahl von Bussen 902 geben, die, ohne darauf beschränkt zu sein, null oder mehr CAN-Busse, null oder mehr FlexRay-Busse, null oder mehr Ethernet-Busse und/oder null mehr weitere andere Arten von Bussen mit einem unterschiedlichen Protokoll umfassen können. In mindestens einer Ausführungsform können zwei oder mehr Busse 902 verwendet werden, um unterschiedliche Funktionen auszuführen, und/oder können für Redundanz verwendet werden. Beispielsweise kann ein erster Bus für eine Kollisionsvermeidungsfunktionalität und ein zweiter Bus zur Betätigungssteuerung verwendet werden. In mindestens einer Ausführungsform kann jeder Bus 902 mit beliebigen der Komponenten des Fahrzeugs 900 kommunizieren, und zwei oder mehr Busse 902 können mit gleichen Komponenten kommunizieren. In mindestens einer Ausführungsform kann jedes einer beliebigen Anzahl von System(en)-on-Chip(s) („SoC(s), jeder der Controller 936 und/oder jeder Computer im Fahrzeug Zugriff auf die gleichen Eingangsdaten aufweisen (z.B. Eingaben von Sensoren des Fahrzeugs 900) und mit einem gemeinsamen Bus, wie beispielsweise einem CAN-Bus, verbunden sein.
  • In mindestens einer Ausführungsform kann das Fahrzeug 900 einen oder mehrere Controller 936 umfassen, wie beispielsweise jene, die hier in Bezug auf 9A beschrieben sind. Der(die) Controller 936 kann(können) für eine Vielfalt von Funktionen verwendet werden. In mindestens einer Ausführungsform kann(können) der(die) Controller 936 mit irgendeiner von unterschiedlichen anderen Komponenten und Systemen des Fahrzeugs 900 gekoppelt sein und kann(können) zur Steuerung des Fahrzeugs 900, der künstlichen Intelligenz des Fahrzeugs 900, des Infotainments für das Fahrzeug 900 und/oder Ähnlichem verwendet werden.
  • In mindestens einer Ausführungsform kann das Fahrzeug 900 eine beliebige Anzahl von SoCs 904 umfassen. Jedes(alle) der SoCs 904 kann(können), ohne darauf beschränkt zu sein, zentrale Verarbeitungseinheiten („CPU(s)“) 906, Graphikverarbeitungseinheiten („GPU(s)“) 908, Prozessor(en) 910, Cache-Speicher 912, Beschleuniger 914, Datenspeicher 916 und/oder andere nicht veranschaulichte Komponenten und Merkmale umfassen. In mindestens einer Ausführungsform kann(können) das(die) SoC(s) 904 zur Steuerung des Fahrzeugs 900 in einer Vielfalt von Plattformen und Systemen verwendet werden. Beispielsweise kann(können) in mindestens einer Ausführungsform das(die) SoC(s) 904 in einem System (z.B. dem System des Fahrzeugs 900) mit einer High-Definition(„HD“)-Karte 922 kombiniert werden, die Kartenauffrischungen und/oder -aktualisierungen über eine Netzwerkschnittstelle 924 von einem oder mehreren Servern (in 9C nicht gezeigt) erhalten können.
  • In mindestens einer Ausführungsform kann(können) die CPU(s) 906 einen CPU-Cluster oder CPU-Komplex (alternativ hier als ein „CCPLEX“ bezeichnet) umfassen. In mindestens einer Ausführungsform kann(können) die CPU(s) mehrere Kerne und/oder Level-2 („L2“)-Caches umfassen. Beispielsweise kann(können) in mindestens einer Ausführungsform die CPU(s) 906 acht Kerne in einer kohärenten Multiprozessor-Konfiguration umfassen. In mindestens einer Ausführungsform kann(können) die CPU(s) 906 vier Dual-Core-Cluster umfassen, wobei jeder Cluster einen dedizierten L2-Cache (z.B. einen 2MB L2-Cache) aufweist. In mindestens einer Ausführungsform kann(können) die CPU(s) 906 (z.B. der CCPLEX) so konfiguriert sein, um eine simultane Clusteroperation unterstützen, die einer beliebigen Kombination von Clustern der CPU(s) 906 ermöglichen, zu einem gegebenen Zeitpunkt aktiv zu sein.
  • In mindestens einer Ausführungsform können eine oder mehrere der CPU(s) 906 Energieverwaltungsfähigkeiten implementieren, die, ohne darauf beschränkt zu sein, ein oder mehrere der folgenden Merkmale umfassen: einzelne Hardwareblöcke können durch Clock-Gating automatisch im Leerlauf gesteuert werden, um dynamische Leistung zu sparen; jeder Kerntakt kann durch Gating gesteuert werden, wenn der Kern aufgrund der Ausführung von Wait for Interrupt(„WFI“)/Wait for Event(„WFE“)-Anweisungen keine aktiven Anweisungen ausführt; jeder Kern kann unabhängig durch Power-Gating gesteuert werden; jeder Kerncluster kann durch Clock-Gating unabhängig gesteuert werden, wenn alle Kerne durch Clock-Gating oder Power-Gating gesteuert werden; und/oder jeder Kerncluster kann unabhängig durch Power-Gating gesteuert werden, wenn alle Kerne durch Power-Gating gesteuert werden. In mindestens einer Ausführungsform kann(können) die CPU(s) 906 ferner einen erweiterten Algorithmus zur Verwaltung von Leistungszuständen implementieren, bei dem zulässige Leistungszustände und erwartete Aufwachzeiten spezifiziert sind, und die Hardware/der Mikrocode bestimmt den besten Leistungszustand, der für den Kern, den Cluster und den CCPLEX einzugeben ist. In mindestens einer Ausführungsform können die Verarbeitungskerne vereinfachte Eingangssequenzen für den Leistungszustand in der Software unterstützen, wobei die Arbeit auf einen Mikrocode abgeladen wird.
  • In mindestens einer Ausführungsform kann(können) die GPU(s) 908 eine integrierte GPU(s) umfassen, (alternativ hier als „iGPU“ bezeichnet). In mindestens einer Ausführungsform kann(können) die GPU(s) 908 programmierbar und für parallele Arbeitslasten effizient sein. In mindestens einer Ausführungsform kann(können) die GPU(s) 908 einen erweiterten Tensorbefehlssatz verwenden. In mindestens einer Ausführungsform kann(können) die GPU(s) 908 einen oder mehrere Streaming-Mikroprozessoren umfassen, wobei jeder Streaming-Mikroprozessor einen Level-1 („L1“)-Cache (z.B. einen L1-Cache mit mindestens 96KB Speicherkapazität) umfassen kann, und zwei oder mehr Streaming-Mikroprozessoren können einen Level-2 („L2“)-Cache (z.B. einen L2-Cache mit einer Speicherkapazität von 512KB) gemeinsam nutzen. In mindestens einer Ausführungsform kann(können) die GPU(s) 908 mindestens acht Streaming-Mikroprozessoren umfassen. In mindestens einer Ausführungsform kann(können) die GPU(s) 908 eine Anwendungsprogrammierschnittstelle(n) (Application Programming Interface(s); „API(s)“) verwenden. In mindestens einer Ausführungsform kann(können) die GPU(s) 908 eine oder mehrere parallele Computerplattformen und/oder Programmiermodelle (z.B. NVIDIA's CUDA) verwenden.
  • In mindestens einer Ausführungsform kann(können) eine oder mehrere der GPU(s) 908 zur besten Leistung in Automobil- und eingebetteten Anwendungsfällen leistungsoptimiert sein. Beispielsweise könnte(n) in einer Ausführungsform die GPU(s) 908 auf einem Fin-Feldeffekttransistor („FinFET“) hergestellt werden. In mindestens einer Ausführungsform kann jeder Streaming-Mikroprozessor eine Anzahl von gemischtpräzisen Verarbeitungskernen aufnehmen, die in mehrere Blöcke unterteilt sind. Beispielsweise, und ohne darauf beschränkt zu sein, könnten 64 PF32-Kerne und 32 PF64-Kerne in vier Verarbeitungsblöcke unterteilt werden. In mindestens einer Ausführungsform könnte jeder Verarbeitungsblock 16 FP32-Kernen, 8 FP64-Kernen, 16 INT32-Kernen, zwei NVIDIA TENSOR COREs mit gemischter Präzision für Deep-Learning-Matrix-Arithmetik, ein Level-0 („L“)-Befehls-Cache, ein Warp-Planer, eine Dispositionseinheit und/oder eine 64KB-Registerdatei zugeteilt werden. In mindestens einer Ausführungsform können Streaming-Mikroprozessoren unabhängige parallele Ganzzahl- und Gleitkomma-Datenpfade umfassen, um eine effiziente Ausführung von Arbeitslasten mit einer Mischung aus Rechen- und Adressierungsberechnungen vorzusehen. In mindestens einer Ausführungsform können Streaming-Mikroprozessoren eine unabhängige Thread-Scheduling-Funktionalität umfassen, um eine feinere Synchronisation und Zusammenarbeit zwischen parallelen Threads zu ermöglichen. In mindestens einer Ausführungsform können die Streaming-Mikroprozessoren einen kombinierten L1-Daten-Cache und eine gemeinsam genutzte Speichereinheit umfassen, um die Leistung zu verbessern, während die Programmierung vereinfacht wird.
  • In mindestens einer Ausführungsform kann(können) eine oder mehrere der GPU(s) 908 einen Speicher mit hoher Bandbreite (High Bandwidth Memory; „HBM“) und/oder ein 16 GB HBM2-Speicherteilsystem umfassen, um in einigen Beispielen eine Spitzenspeicherbandbreite von etwa 900 GB/Sekunde bereitzustellen. In mindestens einer Ausführungsform kann zusätzlich zu oder alternativ aus dem HBM-Speicher ein synchroner Graphik-Random-Access-Speicher („SGRAM“) verwendet werden, wie beispielsweise ein Typ 5 synchroner Graphik-Doppel-Datenraten-Speicher (Graphics Double Data Rate Type Five Synchronous Random-Access Memory; „GDDR5“).
  • In mindestens einer Ausführungsform kann(können) die GPU(s) 908 eine vereinheitlichte Speichertechnologie umfassen. In mindestens einer Ausführungsform kann die Unterstützung von Adressübersetzungsdiensten (Address Translation Services; „ATS“) verwendet werden, um der(den) GPU(s) 908 zu ermöglichen, direkt auf Seitentabellen der CPU(s) 906 zugreifen. In mindestens einer Ausführungsform kann, wenn die Speicherverwaltungseinheit (Memory Management Unit; „MMU“) der GPU(s) 908 einem Fehlzugriff unterliegt, eine Adressübersetzungsanforderung an die CPU(s) 906 gesendet werden. Als Antwort darauf kann(können) in mindestens einer Ausführungsform die CPU(s) 906 in ihren Seitentabellen nach der virtuellen-zu-physikalischen Adresszuordnung für die Adresse suchen und die Übersetzung zurück an die GPU(s) 908 übertragen. In mindestens einer Ausführungsform kann die vereinheitlichte Speichertechnologie einen einzigen einheitlichen virtuellen Adressraum für Speicher von sowohl der CPU(s) 906 als auch der GPU(s) 908 ermöglichen, wodurch die Programmierung der GPU(s) 908 und die Portierung von Anwendungen auf die GPU(s) 908 vereinfacht wird.
  • In mindestens einer Ausführungsform kann(können) die GPU(s) 908 eine beliebige Anzahl von Zugriffszählern umfassen, welche die Häufigkeit eines Zugriffs der GPU(s) 908 auf den Speicher anderer Prozessoren nachverfolgen können. In mindestens einer Ausführungsform kann(können) der(die) Zugriffszähler beitragen, dass Speicherseiten in den physischen Speicher des Prozessors verschoben werden, der am häufigsten auf Seiten zugreift, um dadurch die Effizienz für zwischen Prozessoren gemeinsam genutzte Speicherbereiche zu verbessern.
  • In mindestens einer Ausführungsform kann ein oder mehrere der SoCs 904 eine beliebige Anzahl von Caches 912 umfassen, einschließlich derjenigen der hier beschriebenen. Beispielsweise kann(können) in mindestens einer Ausführungsform der(die) Cache(s) 912 einen Level-3(„L3“)-Cache umfassen, der sowohl für die CPU(s) 906 als auch die GPU(s) 908 verfügbar ist (z.B. der sowohl mit der(den) CPU(s) 906 und der(den) GPU(s) 908 verbinden ist). In mindestens einer Ausführungsform kann(können) der(die) Cache(s) 912 einen Write-Back-Cache umfassen, der Zustände der Leitungen nachverfolgen kann, wie beispielsweise durch Verwendung eines Cache-Kohärenzprotokolls (z.B. MEI, MESI, MSI usw.). In mindestens einer Ausführungsform kann der L3-Cache abhängig von der Ausführungsform 4MB oder mehr umfassen, obwohl kleinere Cachegrößen verwendet werden können.
  • In mindestens einer Ausführungsform können ein oder mehrere der SoCs 904 einen oder mehrere Beschleuniger 914 umfassen (z.B. Hardwarebeschleuniger, Softwarebeschleuniger oder eine Kombination davon). In mindestens einer Ausführungsform kann(können) der(die) SoC(s) 904 einen Hardwarebeschleunigungscluster umfassen, der optimierte Hardwarebeschleuniger und/oder einen großen On-Chip-Speicher umfassen kann. In mindestens einer Ausführungsform kann ein großer On-Chip-Speicher (z.B. 4MB SRAM) dem Hardwarebeschleunigungscluster ermöglichen, neuronale Netzwerke und andere Berechnungen zu beschleunigen. In mindestens einer Ausführungsform kann der Hardwarebeschleunigungscluster verwendet werden, um die GPU(s) 908 zu ergänzen und einige der Aufgaben der GPU(s) 908 auszulagern (z.B., um mehr Zyklen der GPU(s) 908 zum Durchführen anderer Aufgaben freizugeben). In mindestens einer Ausführungsform könnte(n) der(die) Beschleuniger 914 für gezielte Arbeitslasten (z.B. Wahrnehmung, faltende neuronale Netzwerke (Convolutional Neural Networks; „CNNs“), rekurrente neuronale Netzwerke (Recurrent Neural Networks; „RNNs“), usw.) verwendet werden, die stabil genug sind, um für eine Beschleunigung zugänglich zu sein. In mindestens einer Ausführungsform kann ein CNN Regionen-basierte oder regionale faltende neuronale Netzwerke (Regional Convolutional Neural Networks; „RCNNs“) und Fast RCNNs (z.B. wie zur Objekterkennung verwendet) umfassen.
  • In mindestens einer Ausführungsform kann(können) der(die) Beschleuniger 914 (z.B. Hardwarebeschleunigungscluster) einen Beschleuniger für tiefes Lernen (Deep Learning Accelerator(s); „DLA(s)“) umfassen. DLA(s) kann(können), ohne darauf beschränkt zu sein, eine oder mehrere Tensor-Verarbeitungseinheiten (Tensor Processing Units; „TPUs“) umfassen, die konfiguriert sein können, um zusätzliche zehn Billionen Operationen pro Sekunde für Deep-Learning-Anwendungen und Inferenzieren bereitzustellen. In mindestens einer Ausführungsform können die TPUs Beschleuniger sein, die für die Durchführung von Bildverarbeitungsfunktionen konfiguriert und optimiert sind (z.B. für CNNs, RCNNs usw.). Der(die) DLA(s) kann(können) ferner für einen bestimmten Satz von neuronalen Netzwerktypen und Gleitkommaoperationen sowie zum Inferenzieren optimiert sein. In mindestens einer Ausführungsform kann die Ausgestaltung der DLA(s) mehr Leistung pro Millimeter bereitstellen als ein typischer Allzweck-Graphikprozessor und übersteigt typischerweise bei weitem die Leistung einer CPU. In mindestens einer Ausführungsform kann(können) TPU(s) mehrere Funktionen ausführen, einschließlich einer Einzelinstanz-Faltungsfunktion, die beispielsweise, und ohne darauf beschränkt zu sein, sowohl Merkmale und Gewichtungen bei den Datentypen INT8, INT16 und FP16 sowie auch Postprozessorfunktionen unterstützt. In mindestens einer Ausführungsform kann(können) DLA(s) neuronale Netzwerke, insbesondere CNNs, schnell und effizient auf verarbeiteten oder unverarbeiteten Daten für beliebige einer Vielfalt von Funktionen ausführen, einschließlich beispielsweise und ohne darauf beschränkt zu sein: ein CNN zur Objektidentifikation und -erkennung unter Verwendung von Daten von Kamerasensoren; ein CNN zur Abstandsschätzung unter Verwendung von Daten von Kamerasensoren; ein CNN zur Fahrzeugerkennung und - identifikation und -erkennung unter Verwendung von Daten aus Mikrophonen 996; ein CNN zur Gesichtserkennung und Fahrzeughalteridentifikation unter Verwendung von Daten aus Kamerasensoren; und/oder ein CNN für Sicherheit und/oder sicherheitsbezogene Ereignisse.
  • In mindestens einer Ausführungsform kann(können) DLA(s) jede beliebige Funktion der GPU(s) 908 ausführen und durch Verwenden eines Inferenzbeschleunigers kann ein Designer beispielsweise für jede Funktion entweder die DLA(s) oder die GPU(s) 908 ansteuern. Beispielsweise kann sich in mindestens einer Ausführungsform der Designer auf die Verarbeitung von CNNs und Gleitkommaoperationen auf dem(den) DLA(s) konzentrieren und andere Funktionen dem(den) GPU(s) 908 und/oder einem anderem(anderen) Beschleuniger(n) 914 überlassen.
  • In mindestens einer Ausführungsform kann(können) der(die) Beschleuniger 914 (z.B. Hardwarebeschleunigungs-Cluster) einen oder mehrere programmierbarer Visionsbeschleuniger (Programmable Vision Accelerator; „PVA“) umfassen, der hier alternativ als ein Computer-Vision-Beschleuniger bezeichnet werden kann. In mindestens einer Ausführungsform kann der PVA ausgestaltet und konfiguriert sein, um Bildverarbeitungsalgorithmen für Anwendungen der fortgeschrittene Fahrerassistenzsysteme (Advanced Driver Assistance Systems; „ADAS“), des autonomen Fahrens, der Augmented Reality („AR“) Anwendungen und/oder Virtual Reality („VR“) Anwendungen zu beschleunigen. Ein PVA(s) kann(können) ein Gleichgewicht zwischen Leistung und Flexibilität bereitstellen. Beispielsweise kann(können) in mindestens einer Ausführungsform jeder(alle) PVA(s), beispielsweise und ohne darauf beschränkt zu sein, eine beliebige Anzahl von Computer mit reduziertem Befehlssatzkernen (Reduced Instruction Set Computer cores; „RISC“ cores), Direktzugriffsspeicher (Direct Memory Access; „DMA“) und/oder eine beliebige Anzahl von Vektorprozessoren umfassen.
  • In mindestens einer Ausführungsform können RISC-Kerne mit Bildsensoren (z.B. Bildsensoren von beliebigen der hier beschriebenen Kameras), Bildsignalprozessor(en) und/oder dergleichen wechselwirken. In mindestens einer Ausführungsform kann jeder der RISC-Kerne eine beliebige Menge an Speicher umfassen. In mindestens einer Ausführungsform können RISC-Kerne eine beliebige Anzahl von Protokollen abhängig von der Ausführungsform verwenden. In mindestens einer Ausführungsform können RISC-Kerne ein Echtzeitbetriebssystem (Real-time Operating System; „RTOS“) ausführen. In mindestens einer Ausführungsform können RISC-Kerne unter Verwendung einer oder mehreren integrierten Schaltungsvorrichtungen, anwendungsspezifischen integrierten Schaltungen (Application Specific Integrated Circuits; „ASICs“) und/oder Speichervorrichtungen implementiert werden. Beispielsweise können in mindestens einer Ausführungsform die RISC-Kerne einen Befehls-Cache und/oder einen eng gekoppelten RAM umfassen.
  • In mindestens einer Ausführungsform kann der DMA Komponenten des PVA ermöglichen, unabhängig von CPU(s) 906 auf den Systemspeicher zuzugreifen. In mindestens einer Ausführungsform kann der DMA eine beliebige Anzahl von Merkmalen unterstützen, die verwendet werden, um eine Optimierung einem PVA bereitzustellen, einschließlich, jedoch nicht beschränkt auf, der Unterstützung multidimensionaler Adressierung und/oder zirkulärer Adressierung. In mindestens einer Ausführungsform kann der DMA bis zu sechs oder mehr Dimensionen der Adressierung unterstützen, welche, ohne darauf beschränkt zu sein, Blockbreite, Blockhöhe, Blocktiefe, horizontale Blockabstufung, vertikale Blockabstufung und/oder Tiefenabstufung umfassen können.
  • In mindestens einer Ausführungsform können die Vektorprozessoren programmierbare Prozessoren sein, die ausgestaltet sein können, um effizient und flexibel die Programmierung für Computer-Vision-Algorithmen durchzuführen und Signalverarbeitungsfähigkeiten bereitzustellen. In mindestens einer Ausführungsform kann der PVA einen PVA-Kern und zwei Vektorverarbeitungs-Teilsystem-Partitionen umfassen. In mindestens einer Ausführungsform kann der PVA ein Prozessorteilsystem, ein(mehrere) DMA-Engine(s) (z.B. zwei DMA-Engines) und/oder andere Peripheriegeräte umfassen. In mindestens einer Ausführungsform kann das Vektorverarbeitungs-Teilsystem als primäre Verarbeitungs-Engine des PVA arbeiten und kann eine Vektorverarbeitungseinheit (Vector Processing Unit; „VPU“), einen Befehls-Cache und/oder einen Vektorspeicher (z.B. Vector Memory; „VMEM“) umfassen. In mindestens einer Ausführungsform kann die VPU einen digitalen Signalprozessor, wie beispielsweise einen digitalen Signalprozessor mit mehreren Daten (Single Instruction, Multiple Data; „SIMD“) und einen digitalen Signalprozessor mit sehr langem Befehlswort (Very Long Instruction Word; „VLIW“) umfassen. In mindestens einer Ausführungsform kann die Kombination von SIMD und VLIW den Durchsatz und die Geschwindigkeit erhöhen.
  • In mindestens einer Ausführungsform kann jeder der Vektorprozessoren einen Befehls-Cache umfassen und mit einem dedizierten Speicher gekoppelt sein. Als Ergebnis kann in mindestens einer Ausführungsform jeder der Vektorprozessoren konfiguriert sein, um unabhängig von anderen Vektorprozessoren ausführen zu können. In mindestens einer Ausführungsform können Vektorprozessoren, die in einem bestimmten PVA umfasst sind, konfiguriert sein, um Datenparallelität zu benutzen. Beispielsweise können in mindestens einer Ausführungsform mehrere, in einem einzigen PVA enthaltene Vektorprozessoren, den gleichen Computer-Vision-Algorithmus jedoch auf unterschiedlichen Bereichen eines Bildes ausführen. In mindestens einer Ausführungsform können die in einem bestimmten PVA enthaltenen Vektorprozessoren gleichzeitig unterschiedliche Computer-Vision-Algorithmen an demselben Bild ausführen oder sogar unterschiedliche Algorithmen an sequenziellen Bildern oder Teilen eines Bildes ausführen. In mindestens einer Ausführungsform können unter anderem beliebig viele PVAs in dem Hardwarebeschleunigungscluster und beliebig viele Vektorprozessoren in jedem der PVAs enthalten sein. In mindestens einer Ausführungsform kann(können) die PVAs zusätzlich einen Speicher für einen fehlerkorrigierenden Code (Error Correcting Code; „ECC“) umfassen, um die Gesamtsystemsicherheit zu erhöhen.
  • In mindestens einer Ausführungsform kann(können) der(die) Beschleuniger 914 (z.B. Hardwarebeschleunigungs-Cluster) ein On-Chip-Computer-Vision-Netzwerk und einen statischen Direktzugriffsspeicher (Static Random-Access Memory; „SRAM“) umfassen, um ein SRAM mit hoher Bandbreite und niedriger Latenz für den(die) Beschleuniger 914 bereitzustellen. In mindestens einer Ausführungsform kann der On-Chip-Speicher mindestens 4MB SRAM umfassen, der beispielsweise und ohne Beschränkung aus acht feldkonfigurierbaren Speicherblöcken besteht, die sowohl für den PVA als auch für den DLA zugänglich sind. In mindestens einer Ausführungsform kann jedes Speicherblockpaar eine erweiterte periphere Busschnittstelle (Advanced Peripheral Bus interface; „APB“), Konfigurationsschaltungen, einen Controller und einen Multiplexer umfassen. In mindestens einer Ausführungsform kann eine beliebige Art von Speicher verwendet werden. In mindestens einer Ausführungsform kann der PVA und DLA über ein Rückgrat bzw. Backbone auf den Speicher zugreifen, das dem PVA und dem DLA einen Hochgeschwindigkeitszugriff auf den Speicher bereitstellt. In mindestens einer Ausführungsform kann das Backbone ein On-Chip Computer-Vision-Netzwerk umfassen, welches den PVA und den DLA mit dem Speicher (z.B. unter Verwendung der APB) verbindet.
  • In mindestens einer Ausführungsform kann das On-Chip-Computer-Vision-Netzwerk eine Schnittstelle umfassen, die vor der Übertragung irgendwelcher Steuersignalen/Adressen/Daten bestimmt, dass sowohl der PVA als auch der DLA bereite und gültige Signale bereitstellen. In mindestens einer Ausführungsform kann eine Schnittstelle getrennte Phasen und getrennte Kanäle für die Übertragung von Steuersignalen/Adressen/Daten sowie eine Kommunikation der Burst-Art für einen kontinuierlichen Datentransfer vorsehen. In mindestens einer Ausführungsform kann eine Schnittstelle den Standards der International Organization for Standardization („ISO“) 26262 oder („IEC“) 61508 entsprechen, obwohl auch andere Standards und Protokolle verwendet werden können.
  • In mindestens einer Ausführungsform können ein oder mehrere der SoC(s) 904 einen Echtzeit-Strahlverfolgung-Hardwarebeschleuniger umfassen. In mindestens einer Ausführungsform kann der Echtzeit-Strahlverfolgung-Hardwarebeschleuniger verwendet werden, um schnell und effizient die Positionen und die Ausmaße von Objekten (z.B. innerhalb eines Weltmodells) zu bestimmen, um Echtzeit-Visualisierungssimulationen zur RADAR-Signalinterpretation, zur Schallausbreitungssynthese und/oder -analyse, zur Simulation von SONAR-Systemen, zur Simulation einer allgemeinen Wellenausbreitung, zum Vergleich mit LIDAR-Daten zum Zwecke der Lokalisierung und/oder andere Funktionen und/oder für andere Anwendungen zu erzeugen.
  • In mindestens einer Ausführungsform können ein(die) Beschleuniger 914 (z.B. Hardwarebeschleunigungs-Cluster) ein breites Anwendungsspektrum für autonomes Fahren aufweisen. In mindestens einer Ausführungsform kann der PVA ein programmierbarer Visionsbeschleuniger sein, der für Schlüsselverarbeitungsstufen in ADAS und autonomen Fahrzeugen verwendet werden kann. In mindestens einer Ausführungsform sind die Fähigkeiten eines PVA eine gute Übereinstimmung für algorithmische Domäne, die eine vorhersagbare Verarbeitung bei geringer Leistungsaufnahme und geringer Latenzzeit benötigen. Mit anderen Worten kann der PVA bei halbdichtem oder dichtem regulärem Rechnen selbst bei kleinen Datensätzen gut arbeiten, die vorhersagbare Laufzeiten mit geringer Latenzzeit und geringer Leistung benötigen. In mindestens einer Ausführungsform sind in autonomen Fahrzeugen, wie beispielsweise dem Fahrzeug 900, PVAs ausgestaltet, klassische Computer-Vision-Algorithmen auszuführen, da sie bei der Objekterkennung effizient sind und mit ganzzahliger Mathematik arbeiten.
  • Zum Beispiel wird gemäß mindestens einer Ausführungsform der Technologie der PVA verwendet, um Computer-Stereo-Vision durchzuführen. In mindestens einer Ausführungsform kann ein halbglobaler Abgleich-basierter Algorithmus verwendet werden, obwohl dies nicht bestimmt ist, einschränkend zu sein. In mindestens einer Ausführungsform erfordern Anwendungen für das autonome Fahren der Stufe 3-5 eine Bewegungsschätzung/onthe-fly Stereoabgleich (z.B. Struktur aus Bewegung, Fußgängererkennung, Spurerkennung usw.). In mindestens einer Ausführungsform kann der PVA eine Computer-Stereo-Vision-Funktion an Eingaben aus zwei Monokularkameras ausführen.
  • In mindestens einer Ausführungsform kann der PVA zur Durchführung von dichtem optischem Fluss verwendet werden. Beispielsweise könnte in mindestens einer Ausführungsform der PVA RADAR-Rohdaten (z.B. unter Verwendung einer 4D Fast-Fourier-Transformation) verarbeiten, um verarbeitete RADAR-Daten bereitzustellen. In mindestens einer Ausführungsform wird der PVA zur Flugzeit-Tiefenverarbeitung verwendet, indem Flugzeit-Rohdaten verarbeitet werden, um beispielsweise verarbeitete Flugzeit-Daten bereitzustellen.
  • In mindestens einer Ausführungsform kann ein DLA verwendet werden, um eine beliebige Art von Netzwerk zu betreiben, um die Kontrolle und Fahrsicherheit zu erhöhen, einschließlich beispielsweise, und ohne darauf beschränkt zu sein, eines neuronalen Netzwerks, das ein Maß an Vertrauen für jede Objekterkennung ausgibt. In mindestens einer Ausführungsform kann ein derartiger Vertrauenswert als eine Wahrscheinlichkeit oder als Bereitstellung einer relativen „Gewichtung“ jeder Erkennung im Vergleich mit anderen Erkennungen interpretiert werden. In mindestens einer Ausführungsform ermöglicht ein Vertrauenswert einem System, weitere Entscheidungen hinsichtlich dessen zu treffen, welche Erkennungen als wahre positive Erkennungen und nicht als falsch positive Erkennungen betrachtet werden sollten. Beispielsweise kann in mindestens einer Ausführungsform ein System einen Schwellenwert für das Vertrauen festlegen und nur die den Schwellenwert übersteigenden Erkennungen als wahre positive Erkennungen betrachten. In einem automatischen Notbremssystem (Automatic Emergency Braking System; „AEB“-System) würden falsch positive Erkennungen dazu führen, dass ein Fahrzeug automatisch eine Notbremsung durchführt, was offensichtlich unerwünscht ist. In mindestens einer Ausführungsform können sehr vertrauensvolle Erkennungen als Auslöser für ein AEB in Betracht kommen. In mindestens einer Ausführungsform kann der DLA ein neuronales Netzwerk zum Regressieren des Vertrauenswerts betreiben. In mindestens einer Ausführungsform kann das neuronale Netzwerk mindestens eine Teilmenge von Parametern als seine Eingabe verwenden, wie beispielsweise Abmessungen eines Begrenzungskastens, einer Ground-Ebenen-Schätzung (z.B. von einem anderen Teilsystem), eine Ausgabe von Sensoren der Trägheitsmesseinheit (IMU) 966, die mit der Orientierung des Fahrzeugs 900 korreliert, eine Entfernung, 3D-Ortsschätzungen des Objekts, die unter anderem von dem neuronalen Netzwerk und/oder von anderen Sensoren (z.B. LIDAR-Sensor(en) 964 oder RADAR-Sensor(en) 960) stammen.
  • In mindestens einer Ausführungsform kann(können) ein oder mehrere der(die) SoC(s) 904 (einen) Datenspeicher 916 (z.B. Speicher) umfassen. In mindestens einer Ausführungsform kann(können) der(die) Datenspeicher 916 ein On-Chip-Speicher des(der) SoC(s) 904 sein, der neuronale Netzwerke speichern kann, die auf der(den) GPU(s) 908 und/oder dem DLA ausgeführt werden sollen. In mindestens einer Ausführungsform kann(können) der(die) Datenspeicher 916 in der Kapazität groß genug sein, um mehrere Instanzen neuronaler Netzwerke für Redundanz und Sicherheit zu speichern. In mindestens einer Ausführungsform kann(können) der(die) Datenspeicher 916 einen(mehrere) L2- oder L3-Cache(s) 912 umfassen.
  • In mindestens einer Ausführungsform kann(können) ein oder mehrere SoC(s) 904 eine beliebige Anzahl von Prozessor(en) 910 (z.B. eingebettete Prozessoren) umfassen. Ein Prozessor(en) 910 kann(können) einen Boot- und Leistungsmanagement-Prozessor umfassen, der ein dedizierter Prozessor und ein Teilsystem sein kann, um Boot-Leistungs- und Verwaltungs-Funktionen und die damit zugeordnete Sicherheitsdurchsetzung zu handhaben. In mindestens einer Ausführungsform kann der Boot- und Leistungsverwaltungs-Prozessor ein Teil der Boot-Sequenz des(der) SoC(s) 904 sein und zur Laufzeit Leistung-Verwaltungs-Dienste bereitstellen. In mindestens einer Ausführungsform kann der Boot- und Leistungsverwaltungs-Prozessor Takt- und Spannungsprogrammierung, Unterstützung bei Systemübergängen mit niedrigem Leistungsverbrauch, Verwaltung von Thermik- und Temperatursensoren von SoC(s) 904 und/oder Verwaltung der Leistungszustände von SoC(s) 904 bereitstellen. In mindestens einer Ausführungsform kann jeder Temperatursensor als ein Ringoszillator implementiert sein, dessen Ausgangsfrequenz proportional zu der Temperatur ist, und das(die) SoC(s) 904 kann(können) Ringoszillatoren verwenden, um Temperaturen der CPU(s) 906, der GPU(s) 908 und/oder des(der) Beschleuniger 914 zu erfassen. In mindestens einer Ausführungsform kann, wenn bestimmt wird, dass die Temperaturen einen Schwellenwert überschreiten, dann kann der Boot- und Leistungsverwaltungs-Prozessor in eine Temperaturfehlerroutine eintreten und das(die) SoC(s) 904 in einen niedrigeren Leistungszustand versetzen und/oder das Fahrzeug 900 in einen Chauffeur-zu-sicheren-Stoppmodus versetzen (z.B. das Fahrzeug 900 zu einem sicheren Halt bringen).
  • In mindestens einer Ausführungsform kann(können) der(die) Prozessor(en) 910 ferner einen Satz von eingebetteten Prozessoren umfassen, die als eine Audioverarbeitungs-Engine dienen können. In mindestens einer Ausführungsform kann die Audioverarbeitungs-Engine ein Audioteilsystem sein, das eine vollständige Hardwareunterstützung für Mehrkanal-Audio über mehrere Schnittstellen und einen breite und flexiblen Bereich von Audio-E/A-Schnittstellen ermöglicht. In mindestens einer Ausführungsform ist die Audioverarbeitungs-Engine ein dedizierter Prozessorkern mit einem Digitalsignalprozessor mit dediziertem RAM.
  • In mindestens einer Ausführungsform kann(können) der(die) Prozessor(en) 910 ferner eine Always-On-Processor-Engine umfassen, die notwendige Hardware-Merkmale bereitstellen kann, um die Verwaltung von Sensoren mit niedriger Leistung und Aufwachanwendungsfälle zu unterstützen. In mindestens einer Ausführungsform kann die Always-On-Processor-Engine einen Prozessorkern, ein eng gekoppeltes RAM, unterstützende Peripheriegeräte (z.B. Zeitgeber und Interrupt-Controller), unterschiedliche E/A-Controller-Peripheriegeräte und Routinglogik umfassen.
  • In mindestens einer Ausführungsform kann(können) der(die) Prozessor(en) 910 ferner eine Sicherheitscluster-Engine umfassen, die, ohne darauf beschränkt zu sein, ein dediziertes Prozessorteilsystem umfasst, um das Sicherheitsmanagement für Automobilanwendungen zu handhaben. In mindestens einer Ausführungsform kann die Sicherheitscluster-Engine, ohne darauf beschränkt zu sein, zwei oder mehr Prozessorkerne, ein eng gekoppeltes RAM, Unterstützung von Peripheriegeräten (z.B. Zeitgeber, Interrupt-Controller usw.) und/oder Routing-Logik umfassen. In einem Sicherheitsmodus können zwei oder mehr Kerne, in mindestens einer Ausführungsform, in einem Lockstep-Modus arbeiten und als ein einzelner Kern mit Vergleichslogik fungieren, um jegliche Unterschiede zwischen ihren Operationen zu erkennen. In mindestens einer Ausführungsform kann(können) der(die) Prozessor(en) 910 ferner, ohne darauf beschränkt zu sein, eine Echtzeit-Kamera-Engine umfassen, die ein dediziertes Prozessor-Teilsystem für die Handhabung der Echtzeit-Kamera-Verwaltung umfassen kann. In mindestens einer Ausführungsform kann(können) der(die) Prozessor(en) 910 ferner einen Signalprozessor mit hohem Dynamikbereich umfassen, der, ohne darauf beschränkt zu sein, einen Bildsignalprozessor umfassen kann, der eine Hardware-Engine ist, die Teil der Kameraverarbeitung-Pipeline ist.
  • In mindestens einer Ausführungsform kann(können) der(die) Prozessor(en) 910 einen Videobild-Compositor umfassen, der ein Verarbeitungsblock (z.B. auf einem Mikroprozessor implementiert) sein kann, der Funktionen zur Videonachbearbeitung implementiert, die von einer Videowiedergabeanwendung benötigt werden, um das endgültige Bild für ein Abspielerfenster zu erzeugen. In mindestens einer Ausführungsform kann der Videobild-Compositor eine Objektivverzerrungskorrektur an einer Weitwinkelkamera(s) 970, einer Rundumsichtkamera(s) 974 und/oder an einem kabineninternen Kamerasensor(en) durchführen. In mindestens einer Ausführungsform wird(werden) der(die) kabineninterne(n) Überwachungskamerasensor(en) bevorzugt von einem neuronalen Netzwerk überwacht, das auf einer anderen Instanz des SoC 904 läuft und konfiguriert ist, Ereignisse in der Kabine zu identifizieren und entsprechend zu reagieren. In mindestens einer Ausführungsform kann ein kabineninternes System, ohne darauf beschränkt zu sein, Lippenlesen durchführen, um einen Mobilfunk zu aktivieren und einen Anruf zu tätigen, E-Mails zu diktieren, das Ziel eines Fahrzeugs zu ändern, das Infotainmentsystem des Fahrzeugs und dessen Einstellungen zu aktivieren oder zu ändern, oder sprachaktiviertes Internetsurfen anzubieten. In mindestens einer Ausführungsform sind bestimmte Funktionen dem Fahrer verfügbar, wenn das Fahrzeug in einem autonomen Modus arbeitet, und sind andernfalls deaktiviert.
  • In mindestens einer Ausführungsform kann der Videobild-Compositor eine verbesserte zeitliche Rauschunterdrückung für sowohl räumliche als auch zeitliche Rauschunterdrückung umfassen. Wenn beispielsweise in mindestens einer Ausführungsform eine Bewegung in einem Video stattfindet, gewichtet die Rauschunterdrückung räumliche Information dementsprechend und verringert das Gewicht der von benachbarten Einzelbildern bereitgestellten Information. In mindestens einer Ausführungsform kann, wenn ein Bild oder ein Teil eines Bildes keine Bewegung umfasst, die von dem Videobild-Compositor durchgeführte zeitliche Rauschunterdrückung Information aus dem vorherigen Bild verwenden, um das Rauschen im aktuellen Bild zu verringern.
  • In mindestens einer Ausführungsform kann der Videobild-Compositor ebenfalls konfiguriert sein, um eine Stereogleichrichtung an eingegebenen Stereolinseneinzelbildern durchzuführen. In mindestens einer Ausführungsform kann der Videobild-Compositor ferner für eine Zusammensetzung der Benutzeroberfläche verwendet werden, wenn das Betriebssystem des Desktop verwendet wird und die GPU(s) 908 nicht erforderlich ist(sind), um kontinuierlich neue Oberflächen zu rendern. In mindestens einer Ausführungsform kann, wenn die GPU(s) 908 eingeschaltet und aktiv 3D-Rendering durchführt(durchführen), der Videobild-Compositor verwendet werden, um die GPU(s) 908 zu entlasten, um die Leistung und Reaktionsfähigkeit zu verbessern.
  • In mindestens einer Ausführungsform kann(können) ein oder mehrere SoC(s) 904 ferner eine serielle MIPI (Mobile Industry Processor Interface; „MIPI“)-Kameraschnittstelle zum Empfangen von Video und Eingaben von Kameras, eine Hochgeschwindigkeitsschnittstelle und/oder einen Videoeingangsblock umfassen, der für Kamera- und zugehörige Pixeleingabefunktionen verwendet werden kann. In mindestens einer Ausführungsform können ein oder mehrere SoCs 904 ferner einen Eingabe-/Ausgabe-Controller umfassen, der(die) durch Software gesteuert werden kann(können) und zum Empfangen von E/A-Signalen verwendet werden kann(können), die nicht an eine spezifische Rolle gebunden sind.
  • In mindestens einer Ausführungsform kann(können) ein oder mehrere SoCs 904 ferner einen breiten Bereich von Peripherieschnittstellen umfassen, um die Kommunikation mit Peripheriegeräten, Audio-Codierern/Decodierern („Codecs“), einer Leistungsverwaltung und/oder anderen Vorrichtungen zu ermöglichen. Das(die) SoC(s) 904 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) 964, RADAR-Sensor(en) 960 usw., die über Ethernet verbunden sein können), Daten von dem Bus 902 (z.B. Fahrzeuggeschwindigkeit 900, Lenkradposition usw.), Daten von GNSS-Sensor(en) 958 (z.B. über Ethernet oder CAN-Bus verbunden) zu verarbeiten. In mindestens einer Ausführungsform kann(können) ein oder mehrere SoC(s) 904 ferner dedizierte Hochleistungs-Massenspeicher-Controller umfassen, die ihre eigenen DMA-Engines umfassen können und die verwendet werden können, um die CPU(s) 906 von Routinedatenverwaltungsaufgaben zu befreien.
  • In mindestens einer Ausführungsform kann(können) ein oder mehrere SoC(s) 904 eine Ende-zu-Ende-Plattform mit einer flexiblen Architektur sein, die sich über die Automatisierungsstufen 3-5 erstreckt, um dadurch eine umfassende funktionale Sicherheitsarchitektur bereitzustellen, die Computer-Vision- und ADAS-Techniken für Diversität und Redundanz nutzt und effizient einsetzt, sowie eine Plattform für einen flexiblen, zuverlässigen Treiber-Software-Stapel zusammen mit Werkzeugen des tiefen Lernens bereitstellt. In mindestens einer Ausführungsform kann(können) das (die SoC(s) 904 schneller, zuverlässiger, und sogar energieeffizienter und platzsparender als herkömmliche Systeme sein. Beispielsweise kann(können) in mindestens einer Ausführungsform der(die) Beschleuniger 914 in Kombination mit der(den) CPU(s) 906, der(den) GPU(s) 908 und dem(den) Datenspeicher(n) 916 eine schnelle, effiziente Plattform für autonome Fahrzeuge der Stufe 3-5 bieten.
  • In mindestens einer Ausführungsform können Computer-Vision-Algorithmen auf CPUs ausgeführt werden, die mit einer hochrangigen Programmiersprache, wie beispielsweise der Programmiersprache C, konfiguriert sein können, um eine breite Vielfalt von Verarbeitungsalgorithmen mit einer weiten Vielfalt von visuellen Daten auszuführen. Jedoch sind CPUs in mindestens einer Ausführungsform häufig nicht in der Lage, die Leistungsanforderungen vieler Bildverarbeitungsanwendungen zu erfüllen, wie beispielsweise jene bezogen auf Ausführungszeit und Leistungsverbrauch. In mindestens einer Ausführungsform sind viele CPUs nicht in der Lage, komplexe Objekterkennungsalgorithmen in Echtzeit auszuführen, die für ADAS-Anwendungen im Fahrzeug und für praktische autonome Fahrzeuge der Stufe 3-5 verwendet werden.
  • Hier beschriebene Ausführungsformen ermöglichen, dass mehrere neuronale Netzwerke gleichzeitig und/oder sequenziell verwendet und die Ergebnisse zusammen kombiniert werden können, um eine autonome Fahrfunktionalität der Stufe 3-5 zu ermöglichen. Beispielsweise kann in mindestens einer Ausführungsform ein CNN, das auf dem DLA oder der diskreten GPU (z.B. der GPU(s) 920) ausgeführt wird, eine Text- und Worterkennung umfassen, die dem Supercomputer ermöglichen, Verkehrszeichen zu lesen und zu verstehen, einschließlich Zeichen, für die das neuronale Netzwerk nicht speziell trainiert wurde. In mindestens einer Ausführungsform kann der DLA ferner ein neuronales Netzwerk umfassen, das in der Lage ist, ein Zeichen zu identifizieren, zu interpretieren und semantisch zu verstehen und dieses semantische Verständnis an die auf einem CPU-Komplex laufenden Wegplanungsmodule weiterzugeben.
  • In mindestens einer Ausführungsform können mehrere neuronale Netzwerke gleichzeitig ausgeführt werden, wie es für das Fahren auf Stufe 3, 4 oder 5 erforderlich ist. Beispielsweise kann in mindestens einer Ausführungsform ein Warnzeichen bestehend aus „Vorsicht: Blinklichter zeigen eisige Zustände an“ zusammen mit einem elektrischen Licht von mehreren neuronalen Netzwerken unabhängig oder gemeinsam interpretiert werden. In mindestens einer Ausführungsform kann das Zeichen selbst durch ein erstes eingesetztes neuronales Netzwerk (z.B. ein neuronales Netzwerk, das trainiert wurde) als ein Verkehrszeichen identifiziert werden, das Text „Blinklichter zeigen eisige Zustände an“ durch ein zweites eingesetztes neuronales Netzwerk interpretiert werden, das die Wegplanungssoftware des Fahrzeugs (vorzugsweise auf dem CPU-Komplex ausgeführt) darüber informiert, dass bei Erkennung von blinkenden Lichtern eisige Bedingungen existieren. In mindestens einer Ausführungsform kann das blinkende Licht identifiziert werden, indem ein drittes eingesetztes neuronales Netzwerk über mehrere Einzelbilder betrieben wird, das die Wegplanungssoftware des Fahrzeugs über das Vorhandensein (oder Fehlen) von blinkenden Lichtern informiert. In mindestens einer Ausführungsform können alle drei neuronalen Netzwerke z.B. innerhalb des DLA und/oder auf der(den) GPU(s) 908 gleichzeitig laufen.
  • In mindestens einer Ausführungsform kann ein CNN zur Gesichtserkennung und Fahrzeughalteridentifikation Daten von Kamerasensoren verwenden, um die Anwesenheit eines autorisierten Fahrers und/oder eines Eigentümers des Fahrzeugs 900 zu identifizieren. In mindestens einer Ausführungsform kann die Always-On-Sensor-Verarbeitungs-Engine verwendet werden, um ein Fahrzeug zu entriegeln, wenn sich der Eigentümer der Fahrertür nähert, und Lichter anzuschalten, und um ein Fahrzeug im Sicherheitsmodus zu deaktivieren, wenn ein Eigentümer das Fahrzeug verlässt. Auf diese Weise bietet(bieten) das(die) SoC(s) 904 Schutz vor Diebstahl und/oder Fahrzeugraub.
  • In mindestens einer Ausführungsform kann ein CNN zur Erkennung und Identifizierung von Rettungsfahrzeugen Daten aus Mikrophonen 996 verwenden, um Sirenen von Rettungsfahrzeugen zu erkennen und zu identifizieren. In mindestens einer Ausführungsform verwendet(verwenden) das(die) SoC(s) 904 das CNN zur Klassifizierung von Umwelt- und Stadtgeräuschen sowie zur Klassifizierung visueller Daten. In mindestens einer Ausführungsform wird das CNN, das auf dem DLA läuft, trainiert, um die relative Annäherungsgeschwindigkeit des Einsatzfahrzeugs (z.B. durch Verwendung des Doppler-Effekts) zu identifizieren. In mindestens einer Ausführungsform kann das CNN ebenfalls trainiert werden, um Rettungsfahrzeuge zu identifizieren, die spezifisch für das lokale Gebiet sind, in dem ein Fahrzeug eingesetzt wird, wie durch einen GNSS-Sensor(en) 958 identifiziert. In mindestens einer Ausführungsform wird beispielsweise das CNN beim Arbeiten in Europa versuchen, europäische Sirenen zu erkennen, und wenn es in den Vereinigten Staaten ist, wird das CNN versuchen, nur nordamerikanische Sirenen zu erfassen. In mindestens einer Ausführungsform kann, sobald ein Rettungsfahrzeug erfasst ist, ein Steuerprogramm verwendet werden, um eine Notfallroutine für die Fahrzeugsicherheit auszuführen, das Fahrzeug zu verlangsamen, an einen Straßenrand zu fahren, das Fahrzeug zu parken und/oder das Fahrzeug mit Hilfe eines(von) Ultraschallsensors(en) 962 im Leerlauf zu halten, bis Rettungsfahrzeuge vorbeifahren.
  • In mindestens einer Ausführungsform kann das Fahrzeug 900 eine CPU(s) 918 (z.B. diskrete CPU(s) oder dCPU(s)) umfassen, die über eine Hochgeschwindigkeitsverbindung (z.B. PCIe) mit dem(den) SoC(s) 904 gekoppelt sein kann(können). In mindestens einer Ausführungsform kann(können) die CPU(s) 918 beispielsweise einen X86-Prozessor umfassen. Die CPU(s) 918 kann(können) beispielsweise verwendet werden, um eine Vielfalt von Funktionen auszuführen, einschließlich einer Arbitrierung potenziell inkonsistenter Ergebnisse zwischen ADAS-Sensoren und dem(den) SoC(s) 904 und/oder einer beispielhaften Überwachung von Status und Gesundheitszustand des(der) Controllers 936 und/oder eines Infotainment-Systemon-Chip („Infotainment-SoC“) 930.
  • In mindestens einer Ausführungsform kann das Fahrzeug 900 eine oder mehrere GPU(s) 920 (z.B. diskrete GPU(s) oder dGPU(s)) umfassen, die über eine Hochgeschwindigkeitsverbindung (z.B. NVIDIA's NVLINK) mit dem(den) SoC(s) 904 gekoppelt werden kann(können). Die GPU(s) 920 kann(können) eine zusätzliche Funktionalität künstlicher Intelligenz bereitstellen, wie beispielsweise durch die Ausführung redundanter und/oder unterschiedlicher neuronaler Netzwerke, und (kann)können verwendet werden, um neuronale Netzwerke basierend teilweise auf Eingaben (z.B. Sensordaten) von Sensoren des Fahrzeugs 900 zu trainieren und/oder zu aktualisieren.
  • In mindestens einer Ausführungsform kann das Fahrzeug 900 ferner eine Netzwerkschnittstelle 924 umfassen, die eine oder mehrere drahtlose Antennen 926 umfassen kann (z.B. eine oder mehrere drahtlose Antennen für unterschiedliche Kommunikationsprotokolle, wie beispielsweise eine Mobilfunkantenne, eine Bluetooth-Antenne usw.). In mindestens einer Ausführungsform kann die Netzwerkschnittstelle 924 verwendet werden, um eine drahtlose Konnektivität über das Internet mit der Cloud (z.B. mit einem oder mehreren Servern und/oder anderen Netzwerkvorrichtungen), mit anderen Fahrzeugen und/oder mit Rechenvorrichtungen (z.B. Client-Vorrichtungen von Passagieren) zu ermöglichen. In mindestens einer Ausführungsform kann, um mit anderen Fahrzeugen zu kommunizieren, eine direkte Verbindung zwischen dem Fahrzeug 900 und einem anderen Fahrzeug und/oder eine indirekte Verbindung (z.B. über Netzwerke und über das Internet) aufgebaut werden. In mindestens einer Ausführungsform können direkte Verbindungen über eine Fahrzeug-zu-Fahrzeug-Kommunikationsverbindung bereitgestellt werden. Eine Fahrzeug-zu-Fahrzeug-Kommunikationsverbindung kann einem Fahrzeug 900 Informationen über Fahrzeuge in der Nähe des Fahrzeugs 900 bereitstellen (z.B. Fahrzeuge vor, an der Seite und/oder hinter einem Fahrzeug 900). In mindestens einer Ausführungsform kann die vorerwähnte Funktionalität Teil einer kooperativen adaptiven Geschwindigkeitsregelungsfunktion eines Fahrzeugs 900 sein.
  • In mindestens einer Ausführungsform kann eine Netzwerkschnittstelle 924 ein SoC umfassen, das Modulations- und Demodulationsfunktionalität bereitstellt und einem Controller(n) 936 eine Kommunikation über drahtlose Netzwerke ermöglicht. In mindestens einer Ausführungsform kann eine Netzwerkschnittstelle 924 ein Hochfrequenz-Frontend zur Aufwärtskonvertierung von einem Basisband zur Hochfrequenz und zur Abwärtskonvertierung von einer Hochfrequenz in ein Basisband umfassen. In mindestens einer Ausführungsform können die Frequenzumwandlungen durch jedes technisch machbare Verfahren durchgeführt werden. Beispielsweise könnten Frequenzumwandlungen durch wohlbekannte Verfahren und oder durch Verwenden von Superheterodyn-Verfahren durchgeführt werden. In mindestens einer Ausführungsform kann die Radiofrequenz-Frontend-Funktionalität durch einen separaten Chip bereitgestellt werden. In mindestens einer Ausführungsform kann die Netzwerkschnittstelle drahtlose Funktionen für die Kommunikation über LTE, WCDMA, UMTS, GSM, CDMA2000, Bluetooth, Bluetooth LE, Wi-Fi, Z-Wave, ZigBee, LoRaWAN und/oder andere drahtlose Protokolle umfassen.
  • In mindestens einer Ausführungsform kann das Fahrzeug 900 ferner, ohne darauf beschränkt zu sein, (einen) Datenspeicher 928 umfassen, der(die) auch Off-Chip-Speicherspeicherung (z.B. außerhalb des(der) SoC((s) 904)) umfassen kann(können). In mindestens einer Ausführungsform kann(können) der (die) Datenspeicher 928, ohne darauf beschränkt zu sein, ein oder mehrere Speicherelemente einschließlich RAM, SRAM, dynamischen Direktzugriffspeicher („DRAM“), Video-Direktzugriffspeicher („VRAM“), Flash, Festplatten und/oder andere Komponenten und/oder Vorrichtungen umfassen, die mindestens ein Datenbit speichern können.
  • In mindestens einer Ausführungsform kann das Fahrzeug 900 ferner einen oder mehrere GNSS-Sensoren 958 (z.B. GPS- und/oder assistierte GPS-Sensoren) umfassen), um bei der Kartierung, Wahrnehmung, Belegungsgittererzeugung und/oder Wegplanungsfunktionen zu helfen. In mindestens einer Ausführungsform kann eine beliebige Anzahl von GNSS-Sensoren 958 verwendet werden, einschließlich beispielsweise, und ohne darauf beschränkt zu sein, eines GPS mit einem USB-Verbinder und einer Ethernet-zu-Seriell-(z.B., RS-232)-Brücke.
  • In mindestens einer Ausführungsform kann das Fahrzeug 900 ferner einen RADAR-Sensor(en) 960 umfassen. Ein(die) RADAR-Sensor(en) 960 kann(können) von einem Fahrzeug 900 zur Fahrzeugerkennung mit großer Reichweite selbst bei Dunkelheit und/oder extremen Wetterbedingungen verwendet werden. In mindestens einer Ausführungsform können die funktionalen Sicherheitsstufen des RADAR gleich ASIL B sein. Ein(die) RADAR-Sensor(en) 960 kann(können) einen RADAR-Sensor(en) 960 einen CAN-Bus und/oder einen Bus 902 (z.B., um von RADAR-Sensoren 960 erzeugte Daten zu übertragen) zur Steuerung und zum Zugriff auf Objektverfolgungsdaten und mit Zugriff auf Ethernet zum Zugriff auf Rohdaten verwenden. In mindestens einer Ausführungsform kann eine breite Vielfalt von RADAR-Sensortypen verwendet werden. Beispielsweise, und ohne darauf beschränkt zu sein, kann(können) ein RADAR-Sensor(en) 960 für den vorderen, hinteren und seitlichen RADAR-Einsatz geeignet sein. In mindestens einer Ausführungsform sind ein oder mehrere Sensoren ein Puls-Doppler-RADAR-Sensor.
  • In mindestens einer Ausführungsform kann(können) der(die) RADAR-Sensoren 960 unterschiedliche Konfigurationen umfassen, wie z.B. eine große Reichweite mit engem Sichtfeld, eine kurze Reichweite mit breitem Sichtfeld, eine seitliche Abdeckung mit kurzer Reichweite usw. In mindestens einer Ausführungsform kann das RADAR mit großer Reichweite für eine adaptive Geschwindigkeitsregelungsfunktion verwendet werden. In mindestens einer Ausführungsform können RADAR-Systeme mit großer Reichweite ein breites Sichtfeld bereitstellen, das von zwei oder mehr unabhängigen Scans, wie beispielsweise innerhalb einer Reichweite von 250 m, verwirklicht wird. In mindestens einer Ausführungsform kann(können) der(die) RADAR-Sensor(en) 960 helfen, zwischen statischen und beweglichen Objekten zu unterscheiden, und kann(können) von einem ADAS-System 938 zur Notbremsunterstützung und Vorwärtskollisionswarnung verwendet werden. Sensoren, die in einem RADAR-System mit großer Reichweite enthalten sind, können, ohne darauf beschränkt zu sein, monostatische multimodale RADAR-Sensoren mit mehreren (z.B. sechs oder mehr) festen RADAR-Antennen und einer Hochgeschwindigkeit-CAN- und FlexRay-Schnittstelle umfassen. In mindestens einer Ausführungsform mit sechs Antennen können die zentralen vier Antennen ein fokussiertes Strahlmuster erzeugen, das ausgelegt ist, um Umgebungen des Fahrzeugs 900 bei höheren Geschwindigkeiten mit minimalen Störungen durch den Verkehr in benachbarten Spuren aufzunehmen. In mindestens einer Ausführungsform können die beiden anderen Antennen das Sichtfeld erweitern, so dass es möglich ist, Fahrzeuge, die in die Spur des Fahrzeugs 900 eintreten oder diese verlassen, schnell erkannt werden können.
  • In mindestens einer Ausführungsform können RADAR-Systeme mit mittlerer Reichweite beispielsweise eine Reichweite von bis zu 160m (vorne) oder 80m (hinten) und ein Sichtfeld von bis zu 42 Grad (vorne) oder 150 Grad (hinten) umfassen. In mindestens einer Ausführungsform können RADAR-Systeme mit kurzer Reichweite 960, ohne darauf beschränkt zu sein, eine beliebige Anzahl von RADAR-Sensoren umfassen, die für die Installation an beiden Enden der hinteren Stoßstange ausgestaltet sind. Bei Installation an beiden Enden der hinteren Stoßstange kann, in mindestens einer Ausführungsform, ein RADAR-Sensorsystem zwei Strahlen erzeugen, die den toten Winkel im Heck und neben dem Fahrzeug ständig überwachen. In mindestens einer Ausführungsform können RADAR-Systeme mit kurzer Reichweite in einem ADAS-System 938 zur Erkennung des toten Winkels und/oder zur Spurwechselassistenz verwendet werden.
  • In mindestens einer Ausführungsform kann das Fahrzeug 900 ferner einen oder mehrere Ultraschallsensoren 962 umfassen. Ein oder mehrere Ultraschallsensoren 962 kann(können), der(die) vorne, hinten und/oder an den Seiten des Fahrzeugs 900 positioniert sein kann(können), für eine Einparkhilfe und/oder zum Erzeugen und Aktualisieren eines Belegungsgitters verwendet werden. In mindestens einer Ausführungsform kann eine breite Vielfalt von Ultraschallsensoren 962 verwendet werden, und einen oder mehrere unterschiedliche Ultraschallsensoren 962 können für unterschiedliche Erkennungsbereiche (z.B. 2,5m; 4m) verwendet werden. In mindestens einer Ausführungsform kann(können) ein Ultraschallsensor(en) 962) auf den funktionalen Sicherheitsstufen von ASIL B arbeiten.
  • In mindestens einer Ausführungsform kann das Fahrzeug 900 ein oder mehrere LIDAR-Sensoren 964 umfassen. Ein oder mehrere LIDAR-Sensoren 964 können zur Objekt- und Fußgängererkennung, Notbremsung, Kollisionsvermeidung und/oder für andere Funktionen verwendet werden. In mindestens einer Ausführungsform kann(können) ein LIDAR-Sensor(en) von der Funktionssicherheitsstufe ASIL B sein. In mindestens einer Ausführungsform kann das Fahrzeug 900 mehrere LIDAR-Sensoren 964 (z.B. zwei, vier, sechs usw.) umfassen, die Ethernet (z.B. um einem Gigabit-Ethernet-Schalter Daten bereitzustellen) verwenden können.
  • In mindestens einer Ausführungsform kann(können) ein LIDAR-Sensor(en) 964 in der Lage sein, eine Liste von Objekten und deren Abstände für ein 360-Grad-Sichtfeld bereitzustellen. In mindestens einer Ausführungsform können ein oder mehrere handelsübliche LIDAR-Sensoren 964 beispielsweise eine beworbene Reichweite von ungefähr 100m mit einer Genauigkeit von 2cm bis 3cm und mit Unterstützung für eine 100 Mbit/s Ethernet-Verbindung aufweisen. In mindestens einer Ausführungsform können ein oder mehrere nicht vorstehende LIDAR-Sensoren 964 verwendet werden. In einer derartigen Ausführungsform kann(können) der(die) LIDAR-Sensor(en) 964 eine kleine Vorrichtung umfassen, die in der Vorderseite, der Rückseite, den Seiten und/oder den Ecken des Fahrzeugs 900 eingebettet sein kann. In mindestens einer Ausführungsform kann(können) ein LIDAR-Sensor(en) 964, in einer derartigen Ausführungsform, ein horizontales Sichtfeld von bis zu 120 Grad und ein vertikales Sichtfeld von bis zu 35 Grad mit einer Reichweite von 200m sogar für Objekte mit geringer Reflexion bereitstellen. In mindestens einer Ausführungsform können ein oder mehrere vorderseitig montierte LIDAR-Sensoren 964 für ein horizontales Sichtfeld zwischen 45 Grad und 135 Grad konfiguriert sein.
  • In mindestens einer Ausführungsform können LIDAR-Technologien, wie beispielsweise 3D-Flash-LIDAR, ebenfalls verwendet werden. 3D-Flash-LIDAR verwendet einen Laserblitz als eine Übertragungsquelle, um Umgebungen des Fahrzeugs 900 bis zu ungefähr 200m zu beleuchten. In mindestens einer Ausführungsform umfasst eine Flash-LIDAR-Einheit, ohne darauf beschränkt zu sein, einen Rezeptor, der die Laserpulslaufzeit und das reflektierte Licht auf jedem Pixel erfasst, was wiederum einer Reichweite von dem Fahrzeug 900 zu Objekten entspricht. In mindestens einer Ausführungsform kann Flash-LIDAR ermöglichen, dass mit jedem Laserblitz hochpräzise und verzerrungsfreie Bilder von Umgebungen erzeugt werden. In mindestens einer Ausführungsform können vier Flash-LIDAR-Sensoren eingesetzt werden, einer an jeder Seite des Fahrzeugs 900. In mindestens einer Ausführungsform umfassen 3D-Flash-LIDAR-Systeme, ohne darauf beschränkt zu sein, eine 3D-Festkörper-LIDAR-Kamera mit starrender Anordnung ohne bewegliche Teile außer einem Lüfter (z.B. eine nicht abtastende LIDAR-Vorrichtung). In mindestens einer Ausführungsform kann(können) eine Flash-LIDAR-Vorrichtung(en) einen Laser der Klasse I (augensicher) mit Pulsen von 5 Nanosekunden pro Einzelbild verwenden und das reflektierte Laserlicht in Form von 3D-Reichweitenpunktwolken und gemeinsam registrierten Intensitätsdaten erfassen.
  • In mindestens einer Ausführungsform kann das Fahrzeug ferner einen oder mehrere IMU-Sensoren 966 umfassen. In mindestens einer Ausführungsform kann(können) ein IMU-Sensor(en) 966 in mindestens einer Ausführungsform an einer Mitte der Hinterachse des Fahrzeugs 900 lokalisiert sein. In mindestens einer Ausführungsform kann(können) ein IMU-Sensor(en) 966, beispielsweise und ohne darauf beschränkt zu sein, einen oder mehrere Beschleunigungssensoren, Magnetometer, Gyroskope, Magnetkompasse und/oder andere Sensortypen umfassen. In mindestens einer Ausführungsform kann(können), wie beispielsweise in sechsachsigen Anwendungen, ein IMU-Sensor(en) 966, ohne darauf beschränkt zu sein, Beschleunigungssensoren und Gyroskope umfassen. In mindestens einer Ausführungsform, wie beispielsweise in neunachsigen Anwendungen, können ein oder mehrere IMU-Sensor 966, ohne darauf beschränkt zu sein, Beschleunigungssensoren, Gyroskope und Magnetometer umfassen.
  • In mindestens einer Ausführungsform kann(können) ein IMU-Sensor(en) 966 als ein miniaturisiertes, leistungsstarkes GPS-gestütztes Trägheitsnavigationssystem (GPS-Aided Inertial Navigation System; „GPS/INS) implementiert sein, das mikroelektromechanische Systeme (micro-electro-mechanical systems; MEMS) von Trägheitssensoren, einen hochempfindlichen GPS-Empfänger und erweiterte Kalman-Filteralgorithmen kombiniert, um Schätzungen von Position, Geschwindigkeitsvektor und Höhe bereitzustellen. In mindestens einer Ausführungsform kann(können) ein IMU-Sensor(en) 966 dem Fahrzeug 900 ermöglichen, die Fahrtrichtung abzuschätzen, ohne dass eine Eingabe von einem Magnetsensor erforderlich ist, indem Änderungen im Geschwindigkeitsvektor von GPS zu einem IMU-Sensor(en) 966 direkt beobachtet und korreliert werden. In mindestens einer Ausführungsform kann(können) ein IMU-Sensor(en) 966 und ein GNSS-Sensor(en) 958 in einer einzigen integrierten Einheit kombiniert sein.
  • In mindestens einer Ausführungsform kann das Fahrzeug 900 ein oder mehrere Mikrophone 996 umfassen, die in und/oder um das Fahrzeug 900 angeordnet sind. In mindestens einer Ausführungsform kann(können) ein Mikrophon(e) 996 unter anderem zur Erkennung und Identifizierung von Rettungsfahrzeugen verwendet werden.
  • In mindestens einer Ausführungsform kann das Fahrzeug 900 ferner eine beliebige Anzahl von Kameratypen umfassen, einschließlich einer oder mehreren Stereokameras 968, einer oder mehreren Weitwinkelkameras 970, einer oder mehreren Infrarotkameras 972, einer oder mehreren Rundumsichtkameras 974, einer oder mehreren Kameras 998 mit großer und/oder mittlerer Reichweite und/oder andere Kameratypen. In mindestens einer Ausführungsform können Kameras zum Erfassen von Bilddaten über einen gesamten Umfang des Fahrzeugs 900 verwendet werden. In mindestens einer Ausführungsform können die verwendeten Kameratypen von den Ausführungsformen und Anforderungen an das Fahrzeug 900 abhängen. In mindestens einer Ausführungsform kann eine beliebige Kombination von Kameratypen verwendet werden, um die erforderliche Abdeckung rund um das Fahrzeug 900 bereitzustellen. In mindestens einer Ausführungsform kann sich die Anzahl der Kameras abhängig von der Ausführungsform unterscheiden. Beispielsweise könnte in mindestens einer Ausführungsform ein Fahrzeug sechs Kameras, sieben Kameras, zehn Kameras, zwölf Kameras und/oder eine andere Anzahl von Kameras umfassen. In mindestens einer Ausführungsform können Kameras, beispielsweise und ohne darauf beschränkt zu sein, Gigabit Multimedia Serial Link („GMSL“) und/oder Gigabit Ethernet unterstützen. In mindestens einer Ausführungsform wird jede (der) Kamera(s) sein, wie hier vorstehend mit Bezug auf 9A und 9B ausführlicher beschrieben.
  • In mindestens einer Ausführungsform kann das Fahrzeug 900 ferner einen oder mehrere Schwingungssensoren 942 umfassen. Ein oder mehrere Schwingungssensoren 942 können die Schwingungen von Komponenten des Fahrzeugs, wie beispielsweise (von) einer Achse(n), messen. Beispielsweise können in mindestens einer Ausführungsform Änderungen in Schwingungen eine Veränderung in der Straßenoberfläche angeben. In mindestens einer Ausführungsform können, wenn zwei oder mehr Schwingungssensoren 942 verwendet werden, Unterschiede zwischen Schwingungen verwendet werden, um Reibung oder Schlupf der Straßenoberfläche zu bestimmen (z.B., wenn der Schwingungsunterschied zwischen einer angetriebenen Achse und einer sich frei drehenden Achse besteht).
  • In mindestens einer Ausführungsform kann das Fahrzeug 900 das ADAS-System 938 umfassen. Das ADAS-System 938 kann, in einigen Beispielen, ohne darauf beschränkt zu sein, ein SoC umfassen. In mindestens einer Ausführungsform kann das ADAS-System 938, ohne darauf beschränkt zu sein, eine beliebige Anzahl und Kombination aus einem autonomen/adaptiven/automatischen Geschwindigkeitsregler-System („ACC”-System) , einem kooperative adaptiven Geschwindigkeitsregler-System („CACC”-System) , einem Vorwärts-Zusammenstoßwarnung-System („FCW”-System) , einem automatischen Notbremsung-System („AEB”-System) , einem Spurverlassungswarnung-System („LDW”-System) , einem Spurhalteassistent-System („LKA“-System), einem Tote-Winkel-Warnung-System („BSW”-System) , einem hinteren Querverkehrswarnung-System („RCTW”-System) , einem Kollisionswarn-System („CW”-System) , einem Spurzentrierung-System („LC”-System) und/oder anderen Systeme, Merkmalen und/oder Funktionalität umfassen.
  • In mindestens einer Ausführungsform kann ein ACC-System einen oder mehrere RADAR-Sensoren 960, einen oder mehrere LIDAR-Sensoren 964 und/oder eine beliebige Anzahl von Kameras verwenden. In mindestens einer Ausführungsform kann ein ACC-System ein longitudinales ACC und/oder ein laterales ACC-System umfassen. In mindestens einer Ausführungsform überwacht und steuert das longitudinale ACC-System einen Abstand zum Fahrzeug unmittelbar vor einem Fahrzeug 900 und passt die Fahrzeuggeschwindigkeit automatisch an, um einen Sicherheitsabstand zu den vorausfahrenden Fahrzeugen einzuhalten. In mindestens einer Ausführungsform führt das laterale ACC-System Abstandshaltung durch und empfiehlt dem Fahrzeug 900, bei Bedarf Spuren zu wechseln. In mindestens einer Ausführungsform steht das laterale ACC-System im Zusammenhang mit anderen ADAS-Anwendungen, wie beispielsweise LC und CW.
  • In mindestens einer Ausführungsform verwendet das CACC-System Informationen von anderen Fahrzeugen, die über die Netzwerkschnittstelle 924 und/oder ein oder mehrere drahtlose Antennen 926 von anderen Fahrzeugen über eine drahtlose Verbindung oder indirekt über eine Netzwerkverbindung (z.B. über Internet) empfangen werden können. In mindestens einer Ausführungsform können direkte Verbindungen durch eine Fahrzeug-zu-Fahrzeug (vehicle-to-vehicle; „V2V“)-Kommunikationsverbindung bereitgestellt werden, während indirekte Verbindungen durch eine Infrastruktur-zu-Fahrzeug (infrastructure-to-vehicle; „I2V“)-Kommunikationsverbindung bereitgestellt werden können. Im Allgemeinen stellt das V2V-Kommunikationskonzept Informationen über die unmittelbar vorausfahrenden Fahrzeuge bereit (z.B. Fahrzeuge unmittelbar vor und in der gleichen Spur wie das Fahrzeug 900), während das I2V-Kommunikationskonzept Informationen über weiter entfernten Verkehr liefern kann. In mindestens einer Ausführungsform kann das CACC-System eine oder beide der I2V- und V2V-Informationsquellen umfassen. In mindestens einer Ausführungsform kann bei gegebener Information der vor dem Fahrzeug 900 fahrenden Fahrzeuge das CACC-System zuverlässiger sein und weist das Potenzial auf, die Gleichmäßigkeit des Verkehrsflusses zu verbessern und Stau auf der Straße zu verringern.
  • In mindestens einer Ausführungsform ist das FCW-System ausgestaltet, um den Fahrer vor einer Gefahr zu warnen, so dass der Fahrer Korrekturmaßnahmen ergreifen kann. In mindestens einer Ausführungsform verwendet das FCW-System eine nach vorne gerichtete Kamera und/oder einen oder mehrere RADAR-Sensoren 960, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, der elektrische mit einer Fahrerrückkopplung gekoppelt ist, wie beispielsweise einer Anzeige, einem Lautsprecher und/oder einer Schwingungskomponente. In mindestens einer Ausführungsform kann das FCW-System eine Warnung, wie beispielweise in Form eines Geräusches, einer optischer Warnung, einer Schwingung und/oder einem schnellen Bremsimpuls bereitstellen.
  • In mindestens einer Ausführungsform erkennt das AEB-System eine drohende Vorwärtskollision mit einem anderen Fahrzeug oder einem anderen Objekt und kann die Bremsen automatisch betätigen, wenn der Fahrer innerhalb einer bestimmten Zeit oder Abstandsparameter keine Korrekturmaßnahmen ergreift. In mindestens einer Ausführungsform kann ein AEB-System eine oder mehrere nach vorne gerichtete Kameras und/oder einen oder mehrere Radarsensoren 960 verwenden, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind. In mindestens einer Ausführungsform wird, wenn das AEB-System eine Gefahr erkennt, es zunächst einen Fahrer warnen, um Korrekturmaßnahmen zur Vermeidung einer Kollision zu ergreifen, und wenn der Fahrer keine Korrekturmaßnahmen ergreift, kann ein AEB-System automatisch Bremsen in einem Bemühen betätigen, eine Auswirkung einer vorhergesagten Kollision zu verhindern oder mindestens abzumildern. In mindestens einer Ausführungsform kann das AEB-System Techniken, wie beispielsweise dynamische Bremsunterstützung und/oder Bremsen bei drohender Kollision, umfassen.
  • In mindestens einer Ausführungsform stellt das LDW-System visuelle, akustische und/oder taktile Warnungen bereit, wie beispielsweise Lenkrad- oder Sitzschwingungen, um einen Fahrer zu warnen, wenn das Fahrzeug 900 Fahrbahnmarkierungen überquert. In mindestens einer Ausführungsform wird das LDW-System nicht aktiviert, wenn der Fahrer ein absichtliches Verlassen der Spur durch Aktivieren eines Blinkers angibt. In mindestens einer Ausführungsform kann das LDW-System nach vorne/seitlich gerichtete Kameras verwenden, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, das elektrisch mit einer Fahrerrückkopplung gekoppelt ist, wie beispielsweise einer Anzeige, einem Lautsprecher und/oder einer Schwingungskomponente. In mindestens einer Ausführungsform ist das LKA-System eine Variante eines LDW-Systems. Das LKA-System sieht eine Lenkeingabe oder Bremsen vor, um das Fahrzeug 900 zu korrigieren, wenn das Fahrzeug 900 beginnt, die Spur zu verlassen.
  • In mindestens einer Ausführungsform erkennt das BSW-System Fahrzeuge im toten Winkel eines Fahrzeugs und warnt den Fahrer davor. In mindestens einer Ausführungsform kann das BSW-System einen visuellen, akustischen und/oder taktilen Alarm bereitstellen, um anzugeben, dass das Zusammenführen oder Wechseln von Spuren unsicher ist. In mindestens einer Ausführungsform kann das BSW-System eine zusätzliche Warnung ausgeben, wenn der Fahrer einen Blinker verwendet. In mindestens einer Ausführungsform kann das BSW-System eine oder mehrere rückseitig gerichtete Kameras und/oder einen oder mehrere RADAR-Sensoren 960 verwenden, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, der(das) elektrisch mit einer Fahrerrückkopplung gekoppelt ist, wie beispielsweise einer Anzeige, einem Lautsprecher und/oder einer Schwingungskomponente.
  • In mindestens einer Ausführungsform kann das RCTW-System eine visuelle, akustische und/oder taktile Benachrichtigung bereitstellen, wenn ein Objekt außerhalb des Rückfahrkamerabereichs erkannt wird, wenn das Fahrzeug 900 rückwärtsfährt. In mindestens einer Ausführungsform umfasst das RCTW-System das AEB-System, um sicherzustellen, dass die Fahrzeugbremsen betätigt werden, um einen Unfall zu vermeiden. In mindestens einer Ausführungsform kann das RCTW-System einen oder mehrere nach hinten gerichtete RADAR-Sensoren 960 verwenden, der(die) mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt ist(sind), der elektrisch mit einer Fahrerrückkopplung, wie beispielsweise einer Anzeige, einem Lautsprecher und/oder einer Schwingungskomponente, gekoppelt ist.
  • In mindestens einer Ausführungsform können herkömmliche ADAS-Systeme für falsch positive Ergebnisse anfällig sein, die für einen Fahrer lästig und störend sein können, jedoch typischerweise nicht katastrophal sind, weil die ADAS-Systeme den Fahrer warnen und dem Fahrer ermöglichen, zu entscheiden, ob eine Sicherheitsbedingung tatsächlich vorliegt, und entsprechend zu handeln. In mindestens einer Ausführungsform entscheidet das Fahrzeug 900 selbst im Falle von widersprüchlichen Ergebnissen, ob es ein Ergebnis von einem Primärcomputer oder einem Sekundärcomputer (z.B. dem ersten Controller 936 oder dem zweiten Controller 936) beachtet. Beispielsweise kann in mindestens einer Ausführungsform das ADAS-System 938 ein Backup- und/oder ein Sekundärcomputer sein, um einem Rationalitätsmodul eines Backup-Computers Wahrnehmungsinformationen zur Verfügung zu stellen. In mindestens einer Ausführungsform kann ein Rationalitätsmonitor des Backup-Computers eine redundante, diverse Software auf Hardwarekomponenten ausführen, um Fehler in der Wahrnehmung und dynamischen Fahraufgaben zu erkennen. In mindestens einer Ausführungsform können Ausgaben von dem ADAS-System 938 einer Supervisor-MCU bereitgestellt werden. In mindestens einer Ausführungsform bestimmt, wenn Ausgaben von einem Primärcomputer und Ausgaben von einem Sekundärcomputer im Widerspruch stehen, die Supervisor-MCU, wie der Konflikt zu lösen ist, um einen sicheren Betrieb zu gewährleisten.
  • In mindestens einer Ausführungsform kann der Primärcomputer konfiguriert sein, um der Supervisor-MCU einen Vertrauenswert zu liefern, der das Vertrauen eines Primärcomputers in dem gewählten Ergebnis anzeigt. In mindestens einer Ausführungsform kann, wenn der Vertrauenswert einen Schwellenwert überschreitet, eine Supervisor-MCU der Richtung eines Primärcomputers ungeachtet dessen folgen, ob der Sekundärcomputer ein widersprüchliches oder inkonsistentes Ergebnis liefert. In mindestens einer Ausführungsform kann, wenn der Vertrauenswert den Schwellenwert nicht erreicht und wo der Primär- und Sekundärcomputer unterschiedliche Ergebnisse angeben (z.B. einen Konflikt), kann die Supervisor-MCU zwischen Computern vermitteln, um das angemessene Ergebnis zu bestimmen.
  • In mindestens einer Ausführungsform kann der Supervisor-MCU konfiguriert sein, um ein oder mehrere neuronale Netzwerke zu betreiben, das(die) trainiert und konfiguriert ist(sind), um basierend teilweise auf Ausgaben von dem Primärcomputer und dem Sekundärcomputer Bedingungen zu bestimmen, unter denen der Sekundärcomputer Fehlalarme liefert. In mindestens einer Ausführungsform kann(können) ein neuronales Netzwerk(e) in der Supervisor-MCU lernen, wenn der Ausgabe des Sekundärcomputers vertraut werden kann und wenn nicht. Wenn der Sekundärcomputer in mindestens einer Ausführungsform beispielsweise ein RADAR-basiertes FCW-System ist, kann(können) ein neuronales Netzwerk(e) in der Supervisor-MCU lernen, wenn ein FCW-System metallische Objekte identifiziert, die in Wirklichkeit keine Gefahren sind, wie beispielsweise ein Drainagerost oder eine Schachtabdeckung, die einen Alarm auslöst. In mindestens einer Ausführungsform kann, wenn der Sekundärcomputer ein kamerabasiertes LDW-System ist, kann ein neuronales Netzwerk in der Supervisor-MCU lernen, das LDW zu übersteuern, wenn Radfahrer oder Fußgänger anwesend sind und ein Verlassen der Spur tatsächlich das sicherste Manöver ist. In mindestens einer Ausführungsform kann die Supervisor-MCU mindestens eines von einer DLA oder GPU umfassen, die zum Ausführen eines neuronalen Netzwerks(e) mit zugehörigem Speicher geeignet ist. In mindestens einer Ausführungsform kann die Supervisor-MCU eine Komponente umfassen und/oder als eine Komponente des(der) SoC(s) 904 enthalten sein.
  • In mindestens einer Ausführungsform kann das ADAS-System 938 einen Sekundärcomputer umfassen, der eine ADAS-Funktionalität unter Verwendung herkömmlicher Regeln der Computer-Vision ausführt. In mindestens einer Ausführungsform kann der Sekundärcomputer klassische Computer-Vision-Regeln (wenndann) verwenden und das Vorhandensein eines oder mehrerer neuronaler Netzwerke in der Supervisor-MCU kann Zuverlässigkeit, Sicherheit und Leistung verbessern.
  • Beispielsweise macht in mindestens einer Ausführungsform die vielfältige Implementierung und absichtliche Nicht-Identität ein Gesamtsystem insbesondere gegenüber Fehlern fehlertoleranter, die durch eine Funktionalität von Software (oder einer Software-Hardware-Schnittstelle) verursacht werden. Wenn es beispielsweise in mindestens einer Ausführungsform einen Software-Bug oder Fehler in einer auf dem Primärcomputer laufenden Software gibt und ein nichtidentischer Softwarecode, der auf einem Sekundärcomputer läuft, ein gleiches Gesamtergebnis liefert, dann kann die Supervisor-MCU mehr Vertrauen aufweisen, dass das Gesamtergebnis korrekt ist und ein Bug in der Software oder Hardware auf dem Primärcomputer keinen wesentlichen Fehler verursacht.
  • In mindestens einer Ausführungsform kann die Ausgabe des ADAS-Systems 938 in den Wahrnehmungsblock eines Primärcomputers und/oder in einen dynamischen Fahraufgabenblock eines Primärcomputers eingespeist werden. Wenn in mindestens einer Ausführungsform das ADAS-System 938 beispielsweise eine Vorwärts-Zusammenstoß-Warnung aufgrund eines unmittelbar vorausgehenden Objekts angibt, kann der Wahrnehmungsblock diese Information beim Identifizieren von Objekten verwenden. In mindestens einer Ausführungsform kann der Sekundärcomputer sein eigenes neuronales Netzwerk aufweisen, das trainiert wird und somit ein Risiko von falschen Positiven verringert, wie hier beschrieben.
  • In mindestens einer Ausführungsform kann das Fahrzeug 900 ferner ein Infotainment-SoC 930 umfassen (z.B. ein Infotainmentsystem in einem Fahrzeug (in-vehicle infotainment; IVI)). Obwohl als ein SoC in mindestens einer Ausführungsform veranschaulicht und beschrieben, kann das Infotainmentsystem in mindestens einer Ausführungsform möglicherweise kein SoC sein und kann, ohne darauf beschränkt zu sein, zwei oder mehr diskrete Komponenten umfassen. In mindestens einer Ausführungsform kann das Infotainment-SoC 930, ohne darauf beschränkt zu sein, 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. TV, Filme, Streaming usw.), Telefon (z.B. Freisprechfunktion), Netzwerkkonnektivität (z.B. LTE, WiFi usw.) und/oder Informationsdienste (z.B. Navigationssysteme, Heck-Einpark-Assistenz, ein Funkdatensystem, fahrzeugbezogene Informationen wie beispielsweise Kraftstoffstand, zurückgelegte Gesamtstrecke, Bremskraftstoffstand, Ölstand, Tür auf/zu, Luftfilterinformation usw.) dem Fahrzeug 900 bereitzustellen. Beispielsweise könnte das Infotainment-SoC 930 Radios, Diskettenspieler, Navigationssysteme, Videoplayer, USB- und Bluetooth-Konnektivität, Carputer, In-Car-Entertainment, WiFi, Lenkrad-Audiosteuerungen, Freisprechfunktion, eine Head-Up-Display („HUD“), eine HMI-Anzeige 934, ein Telematikgerät, ein Bedienfeld (z.B. zur Steuerung und/oder Wechselwirkung mit unterschiedlichen Komponenten, Merkmalen und/oder Systemen) und/oder andere Komponenten umfassen. In mindestens einer Ausführungsform kann das Infotainment-SoC 930 ferner verwendet werden, um Informationen (z.B. visuell und/oder akustisch) einem Benutzer(n) eines Fahrzeugs 900 bereitzustellen, wie beispielsweise Informationen von dem ADAS-System 938, autonome Fahrinformationen, wie beispielsweise geplante Fahrzeugmanöver, Trajektorien, umgebende Umweltinformationen (z.B. Kreuzungsinformation, Fahrzeuginformation, Straßeninformation usw.) und/oder andere Informationen bereitzustellen.
  • In mindestens einer Ausführungsform kann das Infotainment-SoC 930 jede Menge und Art an GPU-Funktionalität umfassen. In mindestens einer Ausführungsform kann das Infotainment-SoC 930 über einen Bus 902 (z.B. CAN-Bus, Ethernet usw.) mit anderen Vorrichtungen, Systemen und/oder Komponenten des Fahrzeugs 900 kommunizieren. In mindestens einer Ausführungsform kann das Infotainment-SoC 930 mit einer Supervisor-MCU gekoppelt sein, so dass die GPU des Infotainmentsystems einige Selbstfahrfunktionen in einem Fall übernehmen kann, in dem der(die) primäre(n) Controller 936 (z.B. der(die) primäre(n) und/oder Backup-Computer des Fahrzeugs 900) versagt(versagen)). In mindestens einer Ausführungsform kann das Infotainment-SoC 930 das Fahrzeug 900 in einen Chauffeur-zu-sicherem-Stoppmodus versetzen, wie hier beschrieben.
  • In mindestens einer Ausführungsform kann das Fahrzeug 900 ferner ein Kombiinstrument 932 umfassen (z.B. ein digitales Armaturenbrett, ein elektronisches Kombiinstrument, eine digitale Instrumententafel usw.). Das Kombiinstrument 932 kann, ohne darauf beschränkt zu sein, einen Controller und/oder einen Supercomputer (z.B. einen diskreten Controller oder Supercomputer) umfassen. In mindestens einer Ausführungsform kann das Kombiinstrument 932 eine beliebige Anzahl und Kombination eines Satzes von Instrumenten umfassen, wie beispielsweise einen Geschwindigkeitsmesser, einen Kraftstoffstand, einen Öldruck, einen Drehzahlmesser, einen Kilometerzähler, einen Blinker, eine Schaltpositionsanzeige, eine oder mehrere Sicherheitsgurtwarnleuchten, eine oder mehrere Feststellbremswarnleuchten, eine oder mehrere Motorstörungsleuchten, zusätzliches Rückhaltesystem(z.B. Airbag)-Informationen, Beleuchtungssteuerungen, Sicherheitssystemsteuerungen, Navigationsinformationen usw. In einigen Beispielen können Informationen zwischen dem Infotainment-SoC 930 und dem Kombiinstrument 932 angezeigt und/oder gemeinsam benutzt werden. In mindestens einer Ausführungsform kann das Kombiinstrument 932 als Teil des Infotainment-SoC 930 integriert sein oder umgekehrt.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten hinsichtlich der Inferenzierungs- und/oder Trainingslogik 615 werden nachstehend in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 615 in dem System von 9C zum Inferenzieren oder Voraussagen von Operationen verwendet werden, die mindestens teilweise auf Gewichtungsparameter basieren, die unter Verwendung von neuronalen Netzwerktrainingsoperationen, neuronalen Netzwerkfunktionen und/oder Architekturen, oder hier beschriebenen Anwendungsfällen eines neuronalen Netzwerks berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf die Systemarchitektur des Fahrzeugs 900 gemäß 9C gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und des Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte bei der Systemarchitektur gemäß 9C verwendet.
  • 9D ist ein Diagramm eines Systems 976 für die Kommunikation zwischen einem oder mehreren Cloud-basierten Servern und dem autonomen Fahrzeugs 900 von 9A gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das System 976, ohne darauf beschränkt zu sein, einen oder mehrere Server 978, ein oder mehrere Netzwerke 990 sowie eine beliebige Anzahl und Art von Fahrzeugen, einschließlich des Fahrzeugs 900, umfassen. Ein Server 978 kann(können), ohne darauf beschränkt zu sein, mehrere GPUs 984(A)-984(H) (hier zusammenfassend als GPUs 984 bezeichnet), PCIe-Schalter 982(A)-982(H) (hier zusammenfassend als PCIe-Schalter 982 bezeichnet) und/oder CPUs 980(A)-980(B) (hier zusammenfassend als CPUs 980 bezeichnet) umfassen. GPUs 984, CPUs 980 und PCIe-Schalter 982 können untereinander mit Hochgeschwindigkeits-Zwischenverbindungen, wie beispielsweise, und ohne darauf beschränkt zu sein, NVLink-Schnittstellen 988, die von NVIDIA entwickelt wurden, und/oder PCIe-Anschlüssen 986 verbunden sein. In mindestens einer Ausführungsform sind GPUs 984 über NVLink und/oder NVSwitch-SoC verbunden und die GPUs 984 und die PCIe-Schalter 982 sind über PCIe-Zwischenverbindungen verbunden. Obwohl in mindestens einer Ausführungsform acht GPUs 984, zwei CPUs 980 und zwei PCIe-Schalter veranschaulicht sind, ist dies nicht bestimmt, einschränkend zu sein. In mindestens einer Ausführungsform kann jeder (der) Server 978, ohne darauf beschränkt zu sein, eine beliebige Anzahl von GPUs 984, CPUs 980 und/oder PCIe-Schalter umfassen. Beispielsweise könnten in mindestens einer Ausführungsform ein oder mehrere Server 978 jeweils acht, sechzehn, zweiunddreißig und/oder mehr GPUs 984 umfassen.
  • In mindestens einer Ausführungsform können ein oder mehrere Server 978 über ein oder mehrere Netzwerke 990 und von Fahrzeugen Bilddaten empfangen, die Bilder repräsentieren, die unerwartete oder veränderte Straßenbedingungen zeigen, wie beispielsweise kürzlich begonnene Straßenarbeiten. In mindestens einer Ausführungsform kann(können) ein Server 978 über ein Netzwerk(e) 990 und an Fahrzeuge neuronale Netzwerke 992, aktualisierte neuronale Netzwerke 992 und/oder Karteninformation 994 übertragen, die, ohne darauf beschränkt zu sein, Informationen hinsichtlich Verkehrs- und Straßenzustände umfasst. In mindestens einer Ausführungsform kann(können) Aktualisierungen der Karteninformationen 994 Aktualisierungen für die HD-Karte 922 umfassen, wie beispielsweise Informationen über Baustellen, Schlaglöcher, Umwege, Überschwemmungen und/oder andere Hindernisse umfassen. In mindestens einer Ausführungsform können sich neuronale Netzwerke 992 aktualisierte neuronale Netzwerke 992 und/oder Karteninformationen 994 aus einem neuen Training und/oder aus Erfahrungen, die durch Daten aus einer beliebigen Anzahl von Fahrzeugen in der Umgebung repräsentiert werden, und/oder basierend auf einem in einem Rechenzentrum durchgeführten Training (z.B. unter Verwendung des(der) Servers 978 und/oder eines anderen/anderer Servers) ergeben haben.
  • In mindestens einer Ausführungsform kann(können) ein Server 978 verwendet werden, um Modelle für maschinelles Lernen (z.B. neuronale Netzwerke) basierend teilweise auf Trainingsdaten zu trainieren. Trainingsdaten können durch Fahrzeuge und/oder in einer Simulation (z.B. mit einer Spielmaschine) erzeugt werden. In mindestens einer Ausführungsform werden beliebige viele Trainingsdaten mit einer Kennzeichnung versehen (z.B., wenn das neuronale Netzwerk von überwachtem Lernen profitiert) und/oder durchläuft eine andere Vorverarbeitung. In mindestens einer Ausführungsform werden beliebig viele Trainingsdaten nicht mit einer Kennzeichnung versehen und/oder vorverarbeitet (z.B., wenn das neuronale Netzwerk kein überwachtes Lernen erfordert). In mindestens einer Ausführungsform können, sobald Modelle für maschinelles Lernen trainiert sind, Modelle für maschinelles Lernen von Fahrzeugen verwendet werden (z.B. an Fahrzeuge über ein Netzwerk(e) 990 übertragen), und/oder Modelle für maschinelles Lernen können von einem Server(n) 978 zur Fernüberwachung von Fahrzeugen verwendet werden.
  • In mindestens einer Ausführungsform kann(können) ein Server 978 Daten von Fahrzeugen empfangen und Daten auf aktuelle neuronale Echtzeit-Netzwerke für intelligente Echtzeit-Inferenzierung anwenden. In mindestens einer Ausführungsform kann(können) ein Server 978 Deep-Learning-Supercomputer und/oder von einer oder mehreren GPUs 984 angetriebene dedizierte KI-Computer umfassen, wie beispielsweise DGX- und DGX-Station-Maschinen, die von NVIDIA entwickelt wurden. In mindestens einer Ausführungsform kann(können) ein Server 978 jedoch eine Deep-Learning-Infrastruktur umfassen, die CPUangetriebene Rechenzentren verwenden.
  • In mindestens einer Ausführungsform kann eine Deep-Learning-Infrastruktur von einem Server(n) 978 in der Lage sein, schnell und in Echtzeit zu inferenzieren, und kann diese Fähigkeit nutzen, um die Gesundheit der Prozessoren, der Software und/oder der zugehörigen Hardware in dem Fahrzeug 900 zu bewerten und zu überprüfen. Beispielsweise kann in mindestens einer Ausführungsform eine Deep-Learning-Infrastruktur periodische Aktualisierungen von dem Fahrzeug 900 erhalten, wie beispielsweise eine Folge von Bildern und/oder Objekten, die das Fahrzeug 900 in dieser Folge von Bildern lokalisiert hat (z.B. über Computer-Vision und/oder andere Techniken des maschinellen Lernens zur Klassifizierung von Lernobjekten). In mindestens einer Ausführungsform kann die Deep-Learning-Infrastruktur ihr eigenes neuronales Netzwerk betreiben, um Objekte zu kennzeichnen und sie mit den von einem Fahrzeug 900 identifizierten Objekten zu vergleichen, und wenn Ergebnisse nicht übereinstimmen und eine Deep-Learning-Infrastruktur zu dem Schluss kommt, dass KI in dem Fahrzeug 900 nicht funktioniert, dann kann(können) ein Server 978 ein Signal an das Fahrzeug 900 senden, das einen ausfallsicheren Computer des Fahrzeugs 900 anweist, Steuerung zu übernehmen, Passagiere zu benachrichtigen und ein sicheres Parkmanöver durchzuführen.
  • In mindestens einer Ausführungsform kann(können) ein Server 978 eine oder mehrere GPU(s) 984 und einen oder mehrere programmierbare Inferenzbeschleuniger (z.B. NVIDIA's TensorRT 3) umfassen. In mindestens einer Ausführungsform kann die Kombination aus GPU-angetrieben Servern und Inferenzbeschleunigung Echtzeit-Reaktionsfähigkeit möglich machen. In mindestens einer Ausführungsform, wie beispielsweise wo Leistung weniger kritisch ist, können Server, die von CPUs, FPGAs und anderen Prozessoren betrieben werden, zur Inferenzierung verwendet werden. In mindestens einer Ausführungsform werden eine oder mehrere Hardwarestrukturen 615 verwendet, um eine oder mehrere Ausführungsformen durchzuführen. Einzelheiten hinsichtlich einer oder mehreren Hardwarestrukturen) 615 werden hier in Verbindung mit 6A und/oder 6B bereitgestellt.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf das Fahrzeug 900 von 9A-9D gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind, um ein oder mehrere Merkmale einer Fahrzeugbetriebsumgebung zu identifizieren. In mindestens einer Ausführungsform umfasst das Fahrzeug 900 ein Computer-Vision-System, das ein oder mehrere Prozessoren umfasst, um ein oder mehrere Merkmale der Fahrzeugbetriebsumgebung basierend mindestens teilweise auf der Verwendung eines oder mehrerer neuronaler Netzwerke zu identifizieren, um ein oder mehrere Ausgaben einer oder mehrerer Faltungsoperationen an Bilddaten durch Kontraktieren mindestens eines oder mehrerer Tensoren zu erzeugen, um eine oder mehrere Merkmalskarten zu erzeugen, und ein oder mehrere eines Antriebssystems und eines Richtungssteuersystems, um eine oder mehrere Bewegungen des Fahrzeugs 900 basierend mindestens teilweise auf einem oder mehreren identifizierten Merkmale zu steuern. In mindestens einer Ausführungsform kann das Computer-Vision-System, das Antriebssystem und das Richtungssteuersystem in einer anderer Art von Fahrzeug enthalten sein, wie beispielsweise einem Luftfahrzeug (z.B. Flugzeug, Hubschrauber, Quadrocopter), einem Wasserfahrzeug (z.B. Boot, Unterseeboot) oder einem Raumfahrzeug (z.B. Satellit, Raumschiff). In mindestens einer Ausführungsform führt das Fahrzeug 900 mindestens eine Faltungsoperation mit Bezug auf dreidimensionale Punktwolkendaten unter Verwendung einer Kontraktionsoperation durch, wie mit Bezug auf eine der 1-5 beschrieben.
  • COMPUTERSYSTEME
  • 10 ist ein Blockdiagramm, das ein beispielhaftes Computersystem veranschaulicht, welches ein System mit miteinander verbundenen Vorrichtungen und Komponenten, ein System auf einem Chip (SOC) oder eine Kombination davon 1000 sein kann, das mit einem Prozessor gebildet ist, der Ausführungseinheiten zum Ausführen einer Anweisung umfassen kann, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das Computersystem 1000, ohne darauf beschränkt zu sein, eine Komponente umfassen, wie beispielsweise einen Prozessor 1002, um Ausführungseinheiten mit Logik zum Ausführen von Algorithmen für Prozessdaten in Übereinstimmung mit der vorliegenden Offenbarung, wie beispielsweise der hier beschriebenen Ausführungsformen, zu benutzen. In mindestens einer Ausführungsform kann ein Computersystem 1000 Prozessoren, wie beispielsweise die PENTIUMO-Prozessorfamilie, XenonTM, Itanium®, XScaleTM und/oder StrongARMTM Intel® Core™ oder Intel® Nervana™ Mikroprozessoren, umfassen, die von der Intel Corporation in Santa Clara, Kalifornien, erhältlich sind, obwohl auch andere Systeme (einschließlich PCs mit anderen Mikroprozessoren, Engineering-Arbeitsplätze, Set-Top-Boxen und dergleichen) verwendet werden können. In mindestens einer Ausführungsform kann das Computersystem 1000 eine Version des Betriebssystems WINDOWS ausführen, das bei der Microsoft Corporation in Redmond, Washington erhältlich ist, obwohl auch andere Betriebssysteme (z.B. UNIX und Linux), eingebettete Software und/oder graphische Benutzeroberflächen verwendet werden können.
  • Ausführungsformen können in anderen Geräten wie beispielsweise Handheld-Geräten und Eingebettete-Anwendungen verwendet werden. Einige Beispiele für tragbare bzw. Handheld-Geräte umfassen Mobiltelefone, Internet-Protokoll-Geräte, Digitalkameras, persönliche digitale Assistenten („PDAs“) und Handheld-PCs. In mindestens einer Ausführungsform können eingebettete Anwendungen einen Mikrocontroller, einen digitalen Signalprozessor („DSP“), ein System auf einem Chip, Netzwerkcomputer („NetPCs“), Set-Top-Boxen, Netzwerk-Hubs, Wide Area Network („WAN“) Schalter oder jedes andere System umfassen, das eine oder mehrere Anweisungen ausführen kann, gemäß mindestens einer Ausführungsform.
  • In mindestens einer Ausführungsform kann das Computersystem 1000, ohne darauf beschränkt zu sein, den Prozessor 1002 umfassen, der, ohne darauf beschränkt zu sein, eine oder mehrere Ausführungseinheiten 1008 umfassen kann, um in Übereinstimmung mit hier beschriebenen Techniken ein Training eines maschinell lernenden Modells und/oder Inferenzieren durchzuführen. In mindestens einer Ausführungsform ist das System 10 ein Einzelprozessor-Desktop- oder Serversystem, wobei in einer anderen Ausführungsform das System 10 jedoch ein Multiprozessorsystem sein kann. In mindestens einer Ausführungsform kann der Prozessor 1002, ohne darauf beschränkt zu sein, einen Mikroprozessor mit komplexem Anweisungssatz-Computer („CISC“), einen Mikroprozessor mit reduziertem Anweisungssatz („RISC“), einen Mikroprozessor mit sehr langem Befehlswort („VLIW“), einen Prozessor, der eine Kombination von Befehlssätzen implementiert, oder jede andere Prozessorvorrichtung, wie beispielsweise einen digitalen Signalprozessor, umfassen. In mindestens einer Ausführungsform kann der Prozessor 1002 mit einem Prozessorbus 1010 gekoppelt sein, der Datensignale zwischen einem Prozessor 1002 und anderen Komponenten in dem Computersystem 1000 übertragen kann.
  • In mindestens einer Ausführungsform kann ein Prozessor 1002, ohne darauf beschränkt zu sein, einen internen Level-1(„L1“)-Cache-Speicher („Cache“) 1004 umfassen. In mindestens einer Ausführungsform kann der Prozessor 1002 einen einzelnen internen Cache oder mehrere Ebenen eines internen Cache aufweisen. In mindestens einer Ausführungsform kann sich der Cache-Speicher extern zu dem Prozessor 1002 befinden. Andere Ausführungsformen können je nach Implementierung und Bedarf auch eine Kombination aus internen und externen Caches umfassen. In mindestens einer Ausführungsform kann eine Registerdatei 1006 verschiedene Arten von Daten in verschiedenen Registern speichern, einschließlich, jedoch nicht beschränkt auf, Ganzzahlregister, Gleitkommaregister, Zustandsregister und dem Anweisungszeigerregister.
  • In mindestens einer Ausführungsform befindet sich die Ausführungseinheit 1008, die Logik zum Ausführen von Ganzzahl- und Gleitkommaoperationen, jedoch ohne darauf beschränkt zu sein, ebenfalls in dem Prozessor 1002. Der Prozessor 1002 kann ebenfalls einen Mikrocode („ucode“) Nur-Lese-Speicher („ROM“) umfassen, der Mikrocode für bestimmte Makroanweisungen speichert. In mindestens einer Ausführungsform kann die Ausführungseinheit 1008 Logik zur Handhabung eines gepackten Anweisungssatzes 1009 umfassen. In mindestens einer Ausführungsform können, indem der gepackte Anweisungssatz 1009 in dem Anweisungssatz eines Allzweck-Prozessors 1002 zusammen mit zugehörigen Schaltungen zur Ausführung von Anweisungen aufgenommen ist, Operationen, die von vielen Multimedia-Anwendungen verwendet werden, unter Verwendung von gepackten Daten in einem Allzweck-Prozessor 1002 durchgeführt werden. In einer oder mehreren Ausführungsformen können viele Multimedia-Anwendungen beschleunigt und effizienter ausgeführt werden, indem die volle Breite eines Datenbusses eines Prozessors für die Ausführung von Operationen auf gepackten Daten verwendet wird, welches die Notwendigkeit eliminieren kann, kleinere Dateneinheiten über einen Datenbus eines Prozessors zu übertragen, um eine oder mehrere Operationen jeweils ein Datenelement auf einmal durchzuführen.
  • In mindestens einer Ausführungsform kann die Ausführungseinheit 1008 auch in Mikrocontrollern, eingebetteten Prozessoren, Graphikvorrichtungen, DSPs und anderen Arten von Logikschaltungen verwendet werden. In mindestens einer Ausführungsform kann ein Computersystem 1000, ohne darauf beschränkt zu sein, einen Speicher 1020 umfassen. In mindestens einer Ausführungsform kann ein Speicher 1020 als eine Dynamic Random Access Memory („DRAM“)-Vorrichtung, als eine Static Random Access Memory („SRAM“)-Vorrichtung, als eine Flash-Speichervorrichtung oder andere Speichervorrichtung implementiert sein. Der Speicher 1020 kann eine oder mehrere Anweisungen 1019 und/oder Daten 1021 speichern, die durch Datensignale repräsentiert werden, die von dem Prozessor 1002 ausgeführt werden können.
  • In mindestens einer Ausführungsform kann ein Systemlogikchip mit einem Prozessorbus 1010 und einem Speicher 1020 gekoppelt sein. In mindestens einer Ausführungsform kann der Systemlogikchip, ohne darauf beschränkt zu sein, einen Speichercontroller-Hub („MCH“) 1016 umfassen, und der Prozessor 1002 kann über einen Prozessorbus 1010 mit dem MCH 1016 kommunizieren. In mindestens einer Ausführungsform kann der MCH 1016 einen Speicherpfad mit hoher Bandbreite 1018 einem Speicher 1020 zur Befehls- und Datenspeicherung sowie zur Speicherung von Graphikbefehlen, Daten und Texturen bereitstellen. In mindestens einer Ausführungsform kann der MCH 1016 Datensignale zwischen dem Prozessor 1002, dem Speicher 1020 und anderen Komponenten in einem Computersystem 1000 leiten und Datensignale zwischen dem Prozessorbus 1010, dem Speicher 1020 und einer System-E/A 1022 überbrücken. In mindestens einer Ausführungsform kann der Systemlogikchip einen Graphikport zur Kopplung an einen Graphik-Controller bereitstellen. In mindestens einer Ausführungsform kann der MCH 1016 über einen Speicherpfad 1018 mit hoher Bandbreite mit dem Speicher 1020 gekoppelt sein, und eine Graphik-/Video-Karte 1012 kann über eine Accelerated Graphics Port („AGP“) Zwischenverbindung 1014 mit dem MCH 1016 gekoppelt sein.
  • In mindestens einer Ausführungsform kann das Computersystem 1000 die System-E/A-Schnittstelle 1022 verwenden, die ein proprietärer Hub-Schnittstellenbus ist, um den MCH 1016 mit einem E/A-Controller-Hub („ICH“) 1030 zu verbinden. In mindestens einer Ausführungsform kann der ICH 1030 über einen lokalen E/A-Bus direkte Verbindungen zu einigen E/A-Vorrichtungen bereitstellen. In mindestens einer Ausführungsform kann der lokale E/A-Bus, ohne darauf beschränkt zu sein, einen Hochgeschwindigkeits-E/A-Bus zum Verbinden von Peripheriegeräten mit einem Speicher 1020, einen Chipsatz und den Prozessor 1002 umfassen. Beispiele können, ohne darauf beschränkt zu sein, einen Audio-Controller 1029, einen Firmware-Hub („Flash-BIOS“) 1028, einen drahtlosen Transceiver 1026, eine Datenspeicherung 1024, einen Legacy-E/A-Controller 1023 mit Benutzereingabe und Tastaturschnittstellen, einen seriellen Erweiterungsport 1027, wie beispielsweise einen Universal Serial Bus („USB“) Port und ein Netzwerk-Controller 1034 umfassen. Die Datenspeicherung 1024 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, eine CD-ROM-Vorrichtung, eine Flash-Speicher-Vorrichtung oder eine andere Massenspeicherungsvorrichtung umfassen.
  • In mindestens einer Ausführungsform veranschaulicht 10 ein System, welches miteinander verbundene Hardware-Vorrichtungen oder „Chips“ umfasst, während in anderen Ausführungsformen 10 ein beispielhaftes System-on-Chip („SoC“) darstellen kann. In mindestens einer Ausführungsform können in 10 veranschaulichte Vorrichtungen mit proprietären Zwischenverbindungen, standardisierten Zwischenverbindungen (z.B. PCIe) oder einer Kombination derselben verbunden sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten des Systems 1000 unter Verwendung von Compute Express Link (CXL)-Zwischenverbindungen verbunden.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten hinsichtlich der Inferenzierungs- und/oder Trainingslogik 615 werden hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 615 in dem System von 10 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 10 gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und des Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte in dem System 1000 von 10 verwendet.
  • 11 ist ein Blockdiagramm, das eine elektronische Vorrichtung 1100 zur Verwendung eines Prozessors 1110 darstellt, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die elektronische Vorrichtung 1100 beispielsweise und ohne darauf beschränkt zu sein ein Notebook, ein turmförmig aufgebauter bzw. Tower-Server, ein Rahmengestell- bzw. Rack-Server, ein Einschub- bzw. Blade-Server, ein tragbarer Rechner bzw. Laptop, ein Tischcomputer bzw. Desktop, ein Tablett, ein mobiles Gerät, ein Telefon, ein eingebetteter bzw. Embedded-Computer oder jede andere geeignete elektronische Vorrichtung sein.
  • In mindestens einer Ausführungsform kann das System 1100, ohne darauf beschränkt zu sein, den Prozessor 1110 umfassen, der kommunikativ mit irgendeiner geeigneten Anzahl oder Art von Komponenten, Peripheriegeräten, Modulen oder Vorrichtungen gekoppelt ist. In mindestens einer Ausführungsform ist der Prozessor 1110 über einen Bus oder eine Schnittstelle, wie beispielsweise einen I2C-Bus, einen System Management Bus („SMBus“), einen Low Pin Count (LPC)-Bus, eine serielle Peripherieschnittstelle („SPI“), einen High Definition Audio („HDA“)-Bus, einen Serial Advance Technology Attachment („SATA“)-Bus, einen Universal Serial Bus („USB“) (Versionen 1, 2, 3) oder einen Universal Asynchronous Receiver/Transmitter („UART“)-Bus, gekoppelt. In mindestens einer Ausführungsform veranschaulicht 11 ein System, welches miteinander verbundene Hardware-Vorrichtungen oder „Chips“ umfasst, während in anderen Ausführungsformen 11 ein beispielhaftes System auf einem Chip („SoC“) darstellen kann. In mindestens einer Ausführungsform können die in 11 veranschaulichten Vorrichtungen mit proprietären Verbindungen, standardisierten Zwischenverbindungen (z.B. PCIe) oder einer Kombination davon verbunden sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten von 11 unter Verwendung von Compute Express Link (CXL)-Zwischenverbindungen miteinander verbunden.
  • In mindestens einer Ausführungsform kann 11 eine Anzeige 1124, einen berührungsempfindlichen Bildschirm bzw. Touchscreen 1125, ein berührungsempfindliches Feld bzw. Touchpad 1130, eine Nahfeld-Kommunikationseinheit (Near Field Communications Unit; „NFC“) 1145, einen Sensor-Hub 1140, einen Thermosensor 1146, einen Express-Chipsatz („EC“) 1135, ein Trusted Platform Module („TPM“) 1138, BIOS/Firmware/Flash-Speicher („BIOS, FW-Flash“) 1122, einen DSP 1160, ein Laufwerk („SSD oder HDD“) 1112, wie beispielsweise eine Solid State Disk („SSD“) oder eine Festplatte („HDD“), eine Wireless Local Area Network Unit („WLAN“) 1150, eine Bluetooth-Einheit 1152, eine Wireless Wide Area Network Unit („WWAN“) 1156, ein Global Positioning System (GPS) Einheit 1155, eine Kamera („USB 3.0 Camera“) 1154, wie beispielsweise eine USB 3.0-Kamera, oder eine Low Power Double Data Rate („LPDDR“)-Speichereinheit („LPDDR3“) 1115, die beispielsweise in einem LPDDR3-Standard implementiert ist, umfassen. Diese Komponenten können jeweils in beliebig geeigneter Art und Weise implementiert sein.
  • In mindestens einer Ausführungsform können andere Komponenten durch ober erläuterte Komponenten kommunikativ mit dem Prozessor 1110 gekoppelt sein. In mindestens einer Ausführungsform können ein Beschleunigungssensor 1141, ein Umgebungslichtsensor (Ambient Light Sensor; „ALS“) 1142, ein Kompass 1143 und ein Gyroskop 1144 kommunikativ mit dem Sensor-Hub 1140 gekoppelt sein. In mindestens einer Ausführungsform können ein Thermosensor 1139, ein Lüfter 1137, eine Tastatur 1136 und ein Touchpad 1130 kommunikativ mit dem EC 1135 gekoppelt sein. In mindestens einer Ausführungsform können Lautsprecher 1163, Kopfhörer 1164 und ein Mikrofon („mic“) 1165 kommunikativ mit einer Audioeinheit („Audio-Codec und Class d Amp“) 1162 gekoppelt sein, die wiederum kommunikativ mit dem DSP 1160 gekoppelt sein kann. In mindestens einer Ausführungsform kann eine Audioeinheit 1164, beispielsweise und ohne darauf beschränkt zu sein, einen Audio-Codierer/Decodierer („Codec“) und einen Klasse d Verstärker umfassen. In mindestens einer Ausführungsform kann die SIM-Karte („SIM“) 1157 kommunikativ mit der WWAN-Einheit 1156 gekoppelt sein. In mindestens einer Ausführungsform können Komponenten, wie beispielsweise die WLAN-Einheit 1150 und die Bluetooth-Einheit 1152 sowie auch die WWAN-Einheit 1156, in einem Formfaktor der nächsten Generation (Next Generation Form Faktor; „NGFF“) implementiert sein.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 615 werden hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 615 in dem System von 11 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die mindestens teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 11 gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und des Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte in dem System 1100 von 11 verwendet.
  • 12 veranschaulicht ein Computersystem 1200 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist das Computersystem 1200 konfiguriert, um verschiedene Prozesse und Verfahren zu implementieren, die überall in dieser Offenbarung beschrieben sind.
  • In mindestens einer Ausführungsform umfasst das Computersystem 1200, ohne darauf beschränkt zu sein, mindestens eine zentrale Verarbeitungseinheit („CPU“) 1202, die mit einem Kommunikationsbus 1210 verbunden ist, der unter Verwendung eines beliebigen geeigneten Protokolls, wie beispielsweise PCI („Peripheral Component Zwischenverbindung“), Peripheral Component Zwischenverbindung Express („PCI-Express“), AGP („Accelerated Graphics Port“), HyperTransport oder eines anderen Busses oder einem oder mehreren Punkt-zu-Punkt-Kommunikationsprotokoll(en) implementiert ist. In mindestens einer Ausführungsform umfasst das Computersystem 1200, ohne darauf beschränkt zu sein, einen Hauptspeicher 1204 und eine Steuerlogik (die z.B. als Hardware, Software oder eine Kombination davon implementiert ist), und Daten werden in dem Hauptspeicher 1204 gespeichert, der die Form eines Direktzugriffsspeichers („RAM“) annehmen kann. In mindestens einer Ausführungsform stellt ein Netzwerkschnittstellen-Teilsystem („Netzwerkschnittstelle“) 1222 eine Schnittstelle zu anderen Rechenvorrichtungen und Netzwerken zum Empfangen von Daten von und Übertragen von Daten an andere Systeme mit dem Computersystem 1200 bereit.
  • In mindestens einer Ausführungsform umfasst das Computersystem 1200 in mindestens einer Ausführungsform, ohne darauf beschränkt zu sein, Eingabevorrichtungen 1208, ein Parallelverarbeitungssystem 1212 und Anzeigevorrichtungen 1206, die unter Verwendung einer herkömmlichen Kathodenstrahlröhre („CRT“), einer Flüssigkristallanzeige („LCD“), Leuchtdioden („LED“), einer Plasmaanzeige oder anderer geeigneter Anzeigetechnologien implementiert sein können. In mindestens einer Ausführungsform wird Benutzereingabe von Eingabegeräten 1208 wie beispielsweise einer Tastatur, einer Maus, einem Touchpad, einem Mikrofon usw. empfangen. In mindestens einer Ausführungsform kann jedes der vorhergehenden Module auf einer einzigen Halbleiterplattform gelegen sein, um ein Verarbeitungssystem zu bilden.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 615 werden hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 615 im System von 12 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die mindestens teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 11 gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und des Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte in dem System 1200 von 12 verwendet.
  • 13 veranschaulicht ein Computersystem 1300 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform umfasst das Computersystem 1300, ohne darauf beschränkt zu sein, einen Computer 1310 und einen USB-Stick 1320. In mindestens einer Ausführungsform kann der Computer 1310, ohne darauf beschränkt zu sein, eine beliebige Anzahl und Art eines(von) Prozessor(en) (nicht gezeigt) und einen Speicher (nicht gezeigt) umfassen. In mindestens einer Ausführungsform umfasst der Computer 1310, ohne darauf beschränkt zu sein, einen Server, eine Cloud-Instanz, einen Laptop und einen Desktop-Computer.
  • In mindestens einer Ausführungsform umfasst der USB-Stick 1320, ohne darauf beschränkt zu sein, eine Verarbeitungseinheit 1330, eine USB-Schnittstelle 1340 und eine USB-Schnittstellenlogik 1350. In mindestens einer Ausführungsform kann die Verarbeitungseinheit 1330 ein beliebiges Befehlsausführungssystem, -vorrichtung oder - einrichtung sein, das/die in der Lage ist, Befehle auszuführen. In mindestens einer Ausführungsform kann die Verarbeitungseinheit 1330, ohne darauf beschränkt zu sein, eine beliebige Anzahl und Art von Verarbeitungskernen umfassen (nicht gezeigt). In mindestens einer Ausführungsform umfasst der Verarbeitungskern 1330 eine anwendungsspezifische integrierte Schaltung („ASIC“), die optimiert ist, um jede Menge und Art von Operationen im Zusammenhang mit maschinellem Lernen durchzuführen. Beispielsweise ist in mindestens einer Ausführungsform ist der Verarbeitungskern 1330 eine Tensor-Verarbeitungseinheit („TPC“), die für die Durchführung von Inferenzoperationen des maschinellen Lernens optimiert ist. In mindestens einer Ausführungsform ist der Verarbeitungskern 1330 eine Visionsverarbeitungseinheit („VPU“), die optimiert ist, um Machine-Vision- und Machine-Learning-Inferenzoperationen durchzuführen.
  • In mindestens einer Ausführungsform kann die USB-Schnittstelle 1340 jede beliebige Art von USB-Verbinder oder USB-Buchse sein. Beispielsweise ist in mindestens einer Ausführungsform die USB-Schnittstelle 1340 eine USB 3.0 Typ-C Buchse für Daten und Leistung. In mindestens einer Ausführungsform ist die USB-Schnittstelle 1340 ein USB 3.0 Typ-A-Verbinder. In mindestens einer Ausführungsform kann die USB-Schnittstellenlogik 1350 eine beliebige Menge und Art von Logik umfassen, die der Verarbeitungseinheit 1330 ermöglicht, sich schnittstellenmäßig über den USB-Verbinder 1340 mit Vorrichtungen (z.B. dem Computer 1310) zu kommunizieren.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 615 werden hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform kann in dem System von 13 die Inferenzierungs- und/oder Trainingslogik 615 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die mindestens teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 13 gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und des Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte in dem System 1300 von 13 verwendet.
  • 14A veranschaulicht eine beispielhafte Architektur, in der mehrere GPUs 1410-1410 kommunikativ mit mehreren Mehrkern-Prozessoren 1405-1405 über Hochgeschwindigkeitsverbindungen 1440-1440 (z.B. Busse, Punkt-zu-Punkt-Zwischenverbindungen, usw.) gekoppelt ist. In einer Ausführungsform unterstützen die Hochgeschwindigkeitsverbindungen 1440-1440 einen Kommunikationsdurchsatz von 4GB/s, 30GB/s, 80GB/s oder höher. Verschiedene Zwischenverbindungsprotokolle können verwendet werden, einschließlich, jedoch nicht beschränkt auf, PCIe 4.0 oder 5.0 und NVLink 2.0.
  • Außerdem sind in mindestens einer Ausführungsform zwei oder mehr GPUs 1410-1413 über Hochgeschwindigkeitsverbindungen 1429-1430 miteinander verbunden, die unter Verwendung von gleichen oder unterschiedlichen Protokollen/Verbindungen als diejenigen implementiert sein können, die für die Hochgeschwindigkeitsverbindungen 1440-1443 verwendet werden. Auf ähnliche Weise können zwei oder mehr Mehrkern-Prozessoren 1405-1406 über eine Hochgeschwindigkeitsverbindung 1428 verbunden sein, welche symmetrische Mehrkern-Prozessor-(SMP)-Busse sein können, die mit 20GB/s, 30GB/s, 120GB/s oder höher arbeiten. Alternativ kann die gesamte Kommunikation zwischen in 14A gezeigten, verschiedenen Systemkomponenten unter Verwendung derselben Protokolle/Verbindungen (z.B. über eine gemeinsame Zwischenverbindungsarchitektur) ausgeführt werden.
  • In einer Ausführungsform ist jeder Mehrkern-Prozessor 1405-1406 kommunikativ mit einem Prozessorspeicher 1401-1402 über Speicher-Zwischenverbindungen 1426-1427 jeweils gekoppelt, und jede GPU 1410-1413 ist jeweils über GPU-Speicher-Zwischenverbindungen 1450(1)-1450(N) kommunikativ mit GPU-Speicher 1420-1423 gekoppelt. Speicher-Zwischenverbindungen 1426-1427 und 1450-1453 können dieselben oder unterschiedliche Speicherzugriffstechnologien benutzen. Beispielsweise und nicht beschränkend können die Prozessorspeicher 1401-1402 und GPU-Speicher 1420-1423 flüchtige Speicher sein, wie beispielsweise Dynamic Random Access-Speicher (DRAMs) (einschließlich gestapelter DRAMs), Graphik-DDR-SDRAM (GDDR) (z.B. GDDR5, GDDR6) oder Speicher mit hoher Bandbreite (High Bandwidth Memory; „HBM“) und/oder nichtflüchtige Speicher wie 3D XPoint oder Nano-Ram sein. In einer Ausführungsform kann ein Teil der Prozessorspeicher 1401-1402 flüchtiger Speicher und ein anderer Teil nichtflüchtiger Speicher sein (z.B. unter Verwendung einer zweistufigen Speicher (2LM)-Hierarchie).
  • Wie hier beschrieben können, obwohl verschiedene Prozessoren 1405-1406 und GPUs 1410-1413 physikalisch mit jeweils einem bestimmten Speicher 1401-1402, 1420-1423 gekoppelt sein können, kann eine vereinheitlichte Speicherarchitektur implementiert sein, bei der ein gleicher virtueller Systemadressraum (auch als „effektiver Adressraum“ bezeichnet) zwischen verschiedenen physikalischen Speichern verteilt ist. Beispielsweise können Prozessorspeicher 1401-1402 jeweils 64GB Systemspeicheradressraum und GPU-Speicher 1420-1423 jeweils 32GB Systemspeicheradressraum umfassen (was zu insgesamt 256 GB adressierbarem Speicher in diesem Beispiel führt).
  • 14B veranschaulicht zusätzliche Einzelheiten für eine Zwischenverbindung zwischen einem Mehrkern-Prozessor 1407 und einem Graphikbeschleunigungsmodul 1446 gemäß einer beispielhaften Ausführungsform. Das Graphikbeschleunigungsmodul 1446 kann einen oder mehrere GPU-Chips umfassen, die auf einer Verdrahtungskarte integriert sind, welche über eine Hochgeschwindigkeitsverbindung 1440 mit dem Prozessor 1407 gekoppelt ist. Das Graphikbeschleunigungsmodul 1446 kann alternativ auf einem Gehäuse oder Chip als Prozessor 1407 integriert sein.
  • In mindestens einer Ausführungsform umfasst der Prozessor 1407 mehrere Kernen 1460A-1460D jeweils mit einem Translation-Lookaside-Puffer („TLB“) 1461A-1461D und einem oder mehrere Caches 1462A-1462D umfasst. In mindestens einer Ausführungsform können Kerne 1460A-1460D verschiedene andere Komponenten zur Ausführung von Anweisungen und zur Verarbeitung von Daten umfassen, welche nicht veranschaulicht sind. Caches 1462A-1462D können Level-1 (L1)- und Level-2 (L2)-Caches umfassen. Außerdem können ein oder mehrere gemeinsam genutzte Caches 1456 in den Caches 1462A-1462D umfasst sein und von Sätzen von Kernen 1460A-1460D gemeinsam genutzt werden. Eine Ausführungsform des Prozessors 1407 umfasst beispielsweise 24 Kerne jeweils mit seinem eigenen L1-Cache, zwölf gemeinsam genutzte L2-Caches und zwölf gemeinsam genutzte L3-Caches. In dieser Ausführungsform werden ein oder mehrere L2- und L3-Caches von zwei benachbarten Kernen gemeinsam genutzt. Der Prozessor 1407 und das Graphikbeschleunigungsmodul 1446 verbinden sich mit dem Systemspeicher 1414, welcher die Prozessorspeicher 1401-1402 von 14A umfassen kann.
  • Kohärenz wird für in verschiedenen Caches 1462A-1462D, 1456 und dem Systemspeicher 1414 gespeicherte Daten und Anweisungen über Inter-Kern-Kommunikation über einen Kohärenzbus 1464 aufrechterhalten. Beispielsweise kann jedem Cache eine Cache-Kohärenz-Logik/Schaltung zugeordnet sein, um als Antwort auf erfasste Lese- oder Schreiboperationen auf bestimmte Cache-Zeilen mit dem Kohärenzbus 1464 zu kommunizieren. In einer Implementierung ist ein Cache-Beobachtungsprotokoll über dem Kohärenzbus 1464 implementiert, um Cache-Zugriffe zu beobachten.
  • In einer Ausführungsform koppelt eine Proxy-Schaltung (PROXY) 1425 das Graphikbeschleunigungsmodul 1446 kommunikativ mit dem Kohärenzbus 1464, so dass das Graphikbeschleunigungsmodul 1446 als ein Gleichgestelltes der Kerne 1460A-1460D an einem Cache-Kohärenzprotokoll teilnehmen kann. Insbesondere bietet eine Schnittstelle (INTF) 1435 Konnektivität zur Proxy-Schaltung 1425 über die Hochgeschwindigkeitsverbindung 1440 und eine Schnittstelle (INTF) 1437 verbindet das Graphikbeschleunigungsmodul 1446 mit der Hochgeschwindigkeitsverbindung 1440.
  • In einer Implementierung stellt eine Beschleuniger-Integrationsschaltung 1436 Cache-Verwaltungs-, Speicherzugriffs-, Kontextverwaltungs- und Unterbrechungsverwaltungsdienste im Namen mehrerer Graphikverarbeitungs-Engines (1431, 1432, N) des Graphikbeschleunigungsmoduls 1446 bereit. Die Graphikverarbeitungs-Engines (1431, 1432, N) können jeweils eine separate Graphikverarbeitungseinheit (GPU) umfassen. Die Graphikverarbeitungs-Engines (1431, 1432, N) können alternativ verschiedene Arten von Graphikverarbeitungs-Engines innerhalb einer GPU umfassen, wie beispielsweise Graphikausführungseinheiten, Medienverarbeitungs-Engines (z.B. Video-Codierer/Decodierer), Abtaster und Blit-Engines. In mindestens einer Ausführungsform kann das Graphikbeschleunigungsmodul 1446 eine GPU mit mehreren Graphikverarbeitungs-Engines (1431-1432) sein, oder die Graphikverarbeitungs-Engines (1431-1432) können individuelle GPUs sein, die in bzw. auf einem gemeinsamen Gehäuse, einer gemeinsamen Verdrahtungskarte oder einem gemeinsamen Chip integriert sind.
  • In einer Ausführungsform umfasst die Beschleuniger-Integrationsschaltung 1436 eine Speicherverwaltungseinheit (MMU) 1439 zum Durchführen verschiedener Speicherverwaltungsfunktionen, wie beispielsweise Speicherübersetzungen von virtuell zu physikalisch (auch als Speicherübersetzungen von effektiv zu real bezeichnet) und Speicherzugriffsprotokolle zum Zugriff auf den Systemspeicher 1414. Die MMU 1439 kann auch einen Translation-Lookaside-Puffer (TLB) (nicht gezeigt) zum Zwischenspeichern von virtuellen/effektiven zu physikalischen/realen Adressübersetzungen umfassen. In einer Implementierung speichert ein Cache 1438 Befehle und Daten für effizienten Zugriff durch die Graphikverarbeitungs-Engines 1431 1432, N). In einer Ausführungsform werden die in dem Cache 1438 und den Graphikspeichern (GFX MEM) (1433-1434, M) gespeicherten Daten mit Kerncaches 1462A-1462D, 1456 und dem Systemspeicher 1414 möglicherweise unter Verwendung einer Holeinheit 1444 kohärent gehalten. Wie erwähnt, kann dies über die Proxy-Schaltung 1425 im Namen des Caches 1438 und der Speicher (1433-1434, M) (z.B. Senden von Aktualisierungen an den Cache 1438 mit Bezug auf Modifikationen/Zugriffe auf Cache-Zeilen auf den Prozessor-Caches 1462A-1462D, 1456 und Empfangen von Aktualisierungen von dem Cache 1438) erreicht werden.
  • Ein Satz von Registern 1445 speichert Kontextdaten für Threads, die von den Graphikverarbeitungs-Engines (1431-1432, N) ausgeführt werden, und eine Kontextverwaltungsschaltung 1448 verwaltet Thread-Kontexte. Beispielsweise kann die Kontextverwaltungsschaltung 1448 Speicherungs- und Wiederherstellungs-Operationen durchführen, um Kontexte verschiedener Threads während Kontextwechseln zu speichern und wiederherzustellen (z.B., wenn ein erster Thread gesichert wird und ein zweiter Thread gespeichert wird, so dass ein zweiter Thread von einer Graphikverarbeitungs-Engine ausgeführt werden kann). Beispielsweise kann die Kontextverwaltungsschaltung 1448 bei einem Kontextwechsel aktuelle Registerwerte in einen bestimmten Bereich in dem Speicher speichern (der z.B. durch einen Kontextzeiger identifiziert wird). Bei der Rückkehr zu einem Kontext kann sie dann die Registerwerte wiederherstellen. In einer Ausführungsform empfängt und verarbeitet eine Unterbrechungsverwaltungsschaltung (INTRPT MGMT) 1447 von Systemvorrichtungen empfangene Unterbrechungen.
  • In einer Implementierung werden virtuelle/effektive Adressen von einer Graphikverarbeitungs-Engine 1431 in reale/physikalische Adressen in dem Systemspeicher 1414 durch die MMU 1439 übersetzt. Eine Ausführungsform der Beschleunigerintegrationsschaltung 1436 unterstützt mehrere (z.B. 4, 8, 16) Graphikbeschleunigermodule 1446 und/oder andere Beschleunigungsvorrichtungen. Das Graphikbeschleunigermodul 1446 kann einer einzelnen Anwendung zugeordnet sein, die auf dem Prozessor 1407 ausgeführt wird, oder kann zwischen mehreren Anwendungen gemeinsam genutzt werden. In einer Ausführungsform wird eine virtualisierte Graphikausführungsumgebung präsentiert, in welcher Ressourcen der Graphikverarbeitungs-Engines (1431-1432, N) von mehreren Anwendungen oder virtuellen Maschinen (VMs) gemeinsam genutzt werden. In mindestens einer Ausführungsform können Ressourcen in „Scheiben“ bzw. „Slices“ unterteilt sein, die basierend auf Verarbeitungsanforderungen und Prioritäten, die mit VMs und/oder Anwendungen verbunden sind, verschiedenen VMs und/oder Anwendungen zugeteilt werden.
  • In mindestens einer Ausführungsform fungiert die Beschleuniger-Integrationsschaltung 1436 als eine Brücke zu einem System für das Graphikbeschleunigungsmodul 1446 und stellt Adressübersetzungs- und Systemspeicher-Cache-Dienste bereit. Außerdem kann die Beschleuniger-Integrationsschaltung 1436 Virtualisierungseinrichtungen für einen Host-Prozessor bereitstellen, um die Virtualisierung von Graphikverarbeitungs-Engines 1431-1432, Interrupts und Speicherverwaltung zu verwalten.
  • Weil Hardwareressourcen der Graphikverarbeitungs-Engines (1431-1432, N) explizit auf einen realen Adressraum abgebildet werden, der von dem Host-Prozessor 1407 gesehen wird, kann jeder Host-Prozessor diese Ressourcen unter Verwendung eines effektiven Adresswerts direkt adressieren. Eine Funktion der Beschleunigerintegrationsschaltung 1436 ist in einer Ausführungsform die physikalische Trennung der Graphikverarbeitungs-Engines (1431-1432, N), so dass sie einem System als unabhängige Einheiten erscheinen.
  • In mindestens einer Ausführungsform sind ein oder mehrere Graphikspeicher (1433-1434, M) mit jeder der Graphikverarbeitungs-Engines (1431-1432, N) gekoppelt. In mindestens einer Ausführungsform speichern die Graphikspeicher (1433-1434, M) Anweisungen und Daten, die von jeder der Graphikverarbeitungs-Engines (1431-1432, N) verarbeitet werden. Die Graphikspeicher (1433-1434, M) können flüchtige Speicher sein, wie beispielsweise DRAMs (einschließlich gestapelter DRAMs), GDDR-Speicher (z.B. GDDR5, GDDR6) oder HBM, und/oder können nichtflüchtige Speicher wie 3D XPoint oder Nano-Ram sein.
  • In einer Ausführungsform werden, um den Datenverkehr über die Verbindung 1440 zu verringern, Biasing-Verfahren verwendet, um sicherzustellen, dass Daten, die in den Graphikspeichern (1433-1434, M) gespeichert sind, Daten sind, die am häufigsten von den Graphikverarbeitungs-Engines (1431-1432, N) verwendet werden und vorzugsweise nicht (wenigstens nicht häufig) von den Kernen 1460A-1460D verwendet werden. Auf ähnliche Weise versucht in mindestens einer Ausführungsform ein Biasing-Mechanismus, die von den Kernen (und vorzugsweise nicht von den Graphikverarbeitungs-Engines (1431-1432, N)) benötigten Daten in den Caches 1462A-1462D, 1456 und dem Systemspeicher 1414 zu halten.
  • 14C veranschaulicht eine weitere beispielhafte Ausführungsform, bei welcher die Beschleunigerintegrationsschaltung 1436 in dem Prozessor 1407 integriert ist. In dieser Ausführungsform kommunizieren Graphikverarbeitungs-Engines (1431-1432, N) direkt über die Hochgeschwindigkeitsverbindung 1440 mit der Beschleunigerintegrationsschaltung 1436 über die Schnittstelle 1437 und Schnittstelle 1435 (die wiederum eine beliebige Form von Bus- oder Schnittstellenprotokoll benutzen kann). Die Beschleuniger-Integrationsschaltung 1436 kann ähnliche Operationen wie diejenigen durchführen, die in Bezug auf 14B beschrieben sind, jedoch potenziell mit einem höheren Durchsatz, aufgrund ihrer unmittelbarer Nähe zum Kohärenzbus 1464 und den Caches 1462A-1462D, 1456. Eine Ausführungsform unterstützt unterschiedliche Programmiermodelle, die ein dediziertes Prozessprogrammiermodell (keine Virtualisierung des Graphikbeschleunigungsmoduls) und gemeinsam genutzte Programmiermodelle (mit Virtualisierung) umfassen, welche Programmiermodelle, die von der Beschleunigerintegrationsschaltung 1436 gesteuert werden, und Programmiermodelle, welche von dem Graphikbeschleunigungsmodul 1446 gesteuert werden, umfassen können.
  • In mindestens einer Ausführungsform sind die Graphikverarbeitungs-Engines (1431-1432, N) für eine einzelne Anwendung oder einen einzelnen Prozess unter einem einzigen Betriebssystem dediziert. In mindestens einer Ausführungsform kann eine einzelne Anwendung andere Anwendungsanforderungen an die Graphikverarbeitungs-Engines (1431-1432, N) leiten, um eine Virtualisierung innerhalb einer VM/Partition bereitstellen.
  • In mindestens einer Ausführungsform können die Graphikverarbeitungs-Engines (1431-1432, N) von mehreren VM/Anwendungs-Partitionen gemeinsam genutzt werden. In mindestens einer Ausführungsform können gemeinsam genutzte Modelle einen Systemhypervisor verwenden, um Graphikverarbeitungs-Engines (1431-1432, N) zu virtualisieren, um einen Zugriff durch jedes Betriebssystem zu ermöglichen. Für Systeme mit einer einzigen Partition ohne einen Hypervisor sind die Graphikverarbeitungs-Engines (1431-1432, N) im Besitz eines Betriebssystems. In mindestens einer Ausführungsform kann ein Betriebssystem die Graphikverarbeitungs-Engines (1431-1432, N) virtualisieren, um einen Zugriff auf jeden Prozess oder jede Anwendung zu ermöglichen.
  • In mindestens einer Ausführungsform wählt das Graphikbeschleunigungsmodul 1446 oder eine einzelne Graphikverarbeitungs-Engine (1431-1432, N) ein Prozesselement unter Verwendung eines Prozess-Handle aus. In einer Ausführungsform werden Prozesselemente in dem Systemspeicher 1414 gespeichert und sind unter Verwendung der hier beschriebenen Techniken zur Übersetzung von effektiven Adressen in echte Adressen adressierbar. In mindestens einer Ausführungsform kann ein Prozess-Handle ein implementierungsspezifischer Wert sein, der einem Hostprozess bei der Registrierung seines Kontextes mit der Graphikverarbeitungs-Engine (1431-1432, N) bereitgestellt wird (d.h. Aufruf einer Systemsoftware, um ein Prozesselement zu einer verknüpften Liste von Prozesselementen hinzuzufügen). In mindestens einer Ausführungsform können untere 16 Bits eines Prozess-Handles ein Versatz des Prozesselements innerhalb einer verknüpften Liste von Prozesselementen sein.
  • 14D veranschaulicht ein beispielhaftes Beschleunigerintegrations-Slice 1490. Wie hier verwendet, umfasst ein „Slice“ einen bestimmten Teil der Verarbeitungsressourcen der Beschleunigerintegrationsschaltung 1436. Ein anwendungseffektiver Adressraum 1482 in dem Systemspeicher 1414 speichert Prozesselemente 1483. In einer Ausführungsform werden die Prozesselemente 1483 als Antwort auf GPU-Aufrufe 1481 aus den auf dem Prozessor 1407 ausgeführten Anwendungen 1480 gespeichert. Ein Prozesselement 1483 enthält den Prozesszustand für die entsprechende Anwendung 1480. Ein in dem Prozesselement 1483 enthaltener Arbeitsdeskriptor (WD) 1484 kann ein einzelner von einer Anwendung angeforderter Auftrag bzw. Job sein oder einen Zeiger auf eine Warteschlange von Aufträgen enthalten. In mindestens einer Ausführungsform ist WD 1484 ein Zeiger auf eine Auftragsanforderungswarteschlange in dem Adressraum 1482 einer Anwendung.
  • Das Graphikbeschleunigungsmodul 1446 und/oder einzelne Graphikverarbeitungs-Engines (1431-1432, N) können von allen oder einer Teilmenge von Prozessen in einem System gemeinsam genutzt werden. In mindestens einer Ausführungsform kann eine Infrastruktur zum Einrichten des Prozesszustands und zum Senden einer WD 1484 an ein Graphikbeschleunigungsmodul 1446 zum Starten eines Auftrags in einer virtualisierten Umgebung enthalten sein.
  • In mindestens einer Ausführungsform ist ein dediziertes Prozessprogrammierungsmodell implementierungsspezifisch. In diesem Modell besitzt ein einzelner Prozess das Graphikbeschleunigungsmodul 1446 oder eine einzelne Graphikverarbeitungs-Engine 1431. Weil das Graphikbeschleunigungsmodul 1446 einem einzelnen Prozess gehört, initialisiert ein Hypervisor die Beschleunigerintegrationsschaltung 1436 für eine besitzende Partition und ein Betriebssystem initialisiert die Beschleunigerintegrationsschaltung 1436 für einen besitzenden Prozess, wenn das Graphikbeschleunigungsmodul 1446 zugewiesen wird.
  • Im Betrieb holt eine WD-Holeinheit 1491 in dem Beschleunigerintegrations-Slice 1490 den nächsten WD 1484, welcher eine Angabe der von einer oder mehreren Graphikverarbeitungs-Engines des Graphikbeschleunigungsmoduls 1446 zu verrichtenden Arbeiten umfasst. Daten aus dem WD 1484 in Registern 1445 gespeichert und von der MMU 1439, der Unterbrechungsverwaltungsschaltung 1447 und/oder der Kontextverwaltungsschaltung (CONTEXT MGMT) 1448 verwendet werden, wie veranschaulicht. Eine Ausführungsform der MMU 1439 beinhaltet beispielsweise eine Segment-/Seiten-Durchlauf-Schaltungsanordnung zum Zugreifen auf Segment-/Seitentabellen 1486 innerhalb eines virtuellen Adressraums 1485 des Betriebssystems (OS). Die Unterbrechungsverwaltungsschaltung 1447 kann Unterbrechungsereignisse 1492 verarbeiten, die von dem Graphikbeschleunigungsmodul 1446 empfangen werden. Bei der Durchführung von Graphikoperationen wird eine von einer Graphikverarbeitungs-Engine (1431-1432, N) erzeugte effektive Adresse 1493 von der MMU 1439 in eine reale Adresse übersetzt.
  • In mindestens einer Ausführungsform wird ein und derselbe Satz von Registern 1445 für jede Graphikverarbeitungs-Engine 1431(1)-1431(N) und/oder das Graphikbeschleunigungs-Modul 1446 dupliziert und kann von einem Hypervisor oder Betriebssystem initialisiert werden. Jedes dieser duplizierten Register kann in einem Beschleunigerintegrations-Slice 1490 umfasst sein. Beispielhafte Register, die von einem Hypervisor initialisiert werden können, werden in Tabelle 2 gezeigt. Tabelle 1 - Hypervisor-initialisierte Register
    1 Slice-Steuerregister
    2 Zeiger auf reale Adresse (RA) des Bereichs
    geplanter Prozesse
    3 Register für die Übersteuerung von Berechtigungsmasken
    4 Versatz Unterbrechungsvektortabelleneintrag
    5 Grenze Unterbrechungsvektortabelleneintrag
    6 Zustandsregister
    7 ID der logischen Partition
    8 Zeiger auf reale Adresse (RA) des Hypervisor-Beschleunigerauslastungseintrags
    9 Speicherungsbeschreibungsregister
  • Beispielhafte Register, die von einem Betriebssystem initialisiert werden können, werden in Tabelle 3 gezeigt. Tabelle 2 - Betriebssystem-initialisierte Register
    1 Prozess- und Thread-Identifikation
    2 Zeiger auf effektive Adresse (EA) des Kontext-Sichern/Wiederherstellens
    3 Zeiger auf virtuelle Adresse (VA) des Beschleunigerauslastungseintrags
    4 Zeiger auf virtuelle Adresse (VA) der Speichersegmenttabelle
    5 Berechtigungsmaske
    6 Arbeitsdeskriptor
  • In einer Ausführungsform ist jeder WD 1484 spezifisch für ein bestimmtes Graphikbeschleunigungsmodul 1446 und/oder für Graphikverarbeitungs-Engines 1431(1)-1431(N). Er enthält alle Informationen, die von einer Graphikverarbeitungs-Engine 1431(1)-1431(N) zum Verrichten von Arbeit benötigt werden, oder er kann ein Zeiger auf einen Speicherort sein, bei dem eine Anwendung eine Befehlswarteschlange für abzuschließende Arbeiten eingerichtet hat.
  • 14E veranschaulicht zusätzliche Einzelheiten für eine beispielhafte Ausführungsform eines gemeinsam genutzten Modells. Diese Ausführungsform umfasst einen Hypervisor-Real-Adressraum 1498, bei dem eine Prozesselementliste 1499 gespeichert ist. Der Hypervisor-Real-Adressraum 1498 ist über einen Hypervisor 1496 zugänglich, welcher Graphikbeschleunigungsmodul-Engines für das Betriebssystem 1495 virtualisiert.
  • In mindestens einer Ausführungsform ermöglichen gemeinsam genutzte Programmiermodelle die Verwendung eines Graphikbeschleunigungsmoduls 1446 für alle oder eine Teilmenge von Prozessen aus allen oder einer Teilmenge von Partitionen in einem System. Es gibt zwei Programmiermodelle, bei denen das Graphikbeschleunigungsmodul 1446 von mehreren Prozessen und Partitionen gemeinsam genutzt wird, d.h. zeitsliced gemeinsam genutzt und graphikorientiert gemeinsam genutzt.
  • In diesem Modell besitzt der Systemhypervisor 1496 das Graphikbeschleunigungsmodul 1446 und stellt seine Funktion allen Betriebssystemen 1495 zur Verfügung. Für ein Graphikbeschleunigungsmodul 1446, um eine Virtualisierung durch den Systemhypervisor 1496 zu unterstützen, kann das Graphikbeschleunigungsmodul 1446 das Folgende einhalten: (1) eine Auftragsanforderung einer Anwendung muss autonom sein (d.h. der Zustand muss zwischen Aufträgen nicht aufrechterhalten werden), oder dass das Graphikbeschleunigungsmodul 1446 einen Mechanismus zum Speichern und Wiederherstellen von Kontext bereitstellen muss, (2) das Graphikbeschleunigungsmodul 1446 garantiert, dass eine Auftragsanforderung einer Anwendung in einer bestimmten Zeitspanne abgeschlossen wird, einschließlich etwaiger Übersetzungsfehler, oder das Graphikbeschleunigungsmodul 1446 eine Möglichkeit bietet, der Verarbeitung eines Auftrags zuvorzukommen, und (3) dem Graphikbeschleunigungsmodul 1446 Fairness zwischen Prozessen garantiert werden muss, wenn es in einem gezielten, gemeinsam genutzten Programmiermodell arbeitet.
  • In mindestens einer Ausführungsform muss die Anwendung 1480 einen Systemaufruf des Betriebssystems 1495 mit einem Typ des Graphikbeschleunigungsmoduls 1446, einem Arbeitsdeskriptor (WD), einem Wert eines Berechtigungsmaskenregisters (AMR) und einem Zeiger auf einen Kontext-Speicher-/Wiederherstellungsbereich (CSRP) durchführen. In mindestens einer Ausführungsform beschreibt der Typ des Graphikbeschleunigungsmoduls 1446 eine Soll-Beschleunigungsfunktion für einen Systemaufruf. In mindestens einer Ausführungsform kann der Typ des Graphikbeschleunigungsmoduls 1446 ein systemspezifischer Wert sein. In mindestens einer Ausführungsform ist der WD speziell für das Graphikbeschleunigungsmodul 1446 formatiert und kann in einer Form eines Befehls des Graphikbeschleunigungsmoduls 1446, eines effektiven Adresszeigers auf eine benutzerdefinierte Struktur, eines effektiven Adresszeigers auf eine Befehlswarteschlange oder einer beliebigen anderen Datenstruktur zur Beschreibung der von dem Graphikbeschleunigungsmodul 1446 auszuführenden Arbeiten sein. In einer Ausführungsform ist ein AMR-Wert ein AMR-Zustand, der für einen aktuellen Prozess zu verwenden ist. In mindestens einer Ausführungsform ist ein an ein Betriebssystem übergebener Wert vergleichbar mit einer Anwendung, die ein AMR einstellt. Wenn die Implementierungen der Beschleunigerintegrationsschaltung 1436 und des Graphikbeschleunigungsmoduls 1446 ein Benutzerberechtigungsmasken-Übersteuerungsregister (User Authority Mask Override Register; „UAMOR“) nicht unterstützen, kann ein Betriebssystem einen aktuellen UAMOR-Wert auf einen AMR-Wert anwenden, bevor es einen AMR in einem Hypervisor-Aufruf übergibt. Der Hypervisor 1496 kann optional einen aktuellen Berechtigungsmasken-Übersteuerungsregister (Authority Mask Override Register; AMOR)-Wert anwenden, bevor er ein AMR in das Prozesselement 1483 platziert. In mindestens einer Ausführungsform ist CSRP eines von Registern 1445, die eine effektive Adresse eines Bereichs im Adressraum 1482 einer Anwendung für das Graphikbeschleunigungsmodul 1446 zum Speichern und Wiederherstellen des Kontextzustands enthalten. Dieser Zeiger ist optional, falls zwischen Aufträgen kein Zustand gespeichert werden muss, oder falls einem Auftrag zuvorgekommen wird. In mindestens einer Ausführungsform kann der Kontext-Speicherungs-/Wiederherstellungs-Bereich als fester Systemspeicher dienen.
  • Bei Empfangen eines Systemaufrufs kann das Betriebssystem 1495 verifizieren, dass die Anwendung 1480 registriert ist und die Berechtigung zur Verwendung des Graphikbeschleunigungsmoduls 1446 erhalten hat. Das Betriebssystem 1495 ruft dann den Hypervisor 1496 mit den in Tabelle 4 gezeigten Informationen auf. Tabelle 3 - Parameter für Hypervisor-Aufruf durch Betriebssystem
    1 Ein Arbeitsdeskriptor (WD)
    2 Ein Berechtigungsmaskenregister (AMR)-Wert (potenziell maskiert) .
    3 Ein Zeiger auf eine effektive Adresse (EA) des Kontext-Speicherungs-/Wiederherstellungs-Bereichs (CSRP)
    4 Eine Prozess-ID (PID) und eine optionale Thread-ID (TID).
    5 Ein Zeiger auf eine virtuelle Adresse (VA) des Beschleunigerauslastungseintrags (AURP)
    6 Zeiger auf virtuelle Adresse der Speichersegmenttabelle (SSTP)
    7 Eine logische Unterbrechungsdienstnummer (LISN)
  • Beim Empfang eines Hypervisoraufrufs verifiziert der Hypervisor 1496, dass das Betriebssystem 1495 registriert hat und berechtigt ist, das Graphikbeschleunigungsmodul 1446 zu verwenden. Der Hypervisor 1496 stellt dann das Prozesselement 1483 in eine verknüpfte Liste von Prozesselementen für einen Typ eines entsprechenden Graphikbeschleunigungsmoduls 1446 ein. In mindestens einer Ausführungsform kann ein Prozesselement in Tabelle 5 gezeigte Informationen umfassen. Tabelle 4 - Informationen zu Prozesselementen
    1 Ein Arbeitsdeskriptor (WD)
    2 Ein Berechtigungsmaskenregister (AMR)-Wert (potenziell maskiert)
    3 Ein Zeiger auf eine effektive Adresse (EA) des Kontext-Speicherungs-/Wiederherstellungs-Bereichs (CSRP)
    4 Eine Prozess-ID (PID) und eine optionale Thread-ID (TID)
    5 Ein Zeiger auf eine virtuelle Adresse (VA) des Beschleunigerauslastungseintrags (AURP)
    6 Zeiger auf virtuelle Adresse der Speichersegmenttabelle (SSTP)
    7 Eine logische Unterbrechungsdienstnummer (LISN)
    8 Unterbrechungsvektortabelle, abgeleitet aus Hypervisor-Aufrufparametern
    9 Ein Zustandsregister (SR)-Wert
    10 Eine logische Partitions-ID (LPID)
    11 Ein Zeiger auf eine reale Adresse (RA) des Hypervisor-Beschleunigerauslastungseintrags
    12 Speicherdeskriptorregister (SDR)
  • In mindestens einer Ausführungsform initialisiert der Hypervisor mehrere Register 1445 des Beschleunigerintegrations-Slice 1490.
  • Wie in 14F veranschaulicht, wird in mindestens einer Ausführungsform ein vereinigter Speicher verwendet, der über einen gemeinsamen virtuellen Speicheradressraum adressierbar ist, der für den Zugriff auf physikalische Prozessorspeicher 1401-1402 und GPU-Speicher 1420-1423 verwendet wird. In dieser Implementierung verwenden Operationen, die auf GPUs 1420-1423 ausgeführt werden, ein und denselben virtuellen/effektiven Speicheradressraum, um auf die Prozessorspeicher 1401-1402 zuzugreifen und umgekehrt, wodurch die Programmierbarkeit vereinfacht wird. In mindestens einer Ausführungsform ist ein erster Abschnitt eines virtuellen/effektiven Adressraums dem Prozessorspeicher 1401, ein zweiter Abschnitt dem zweiten Prozessorspeicher 1402, ein dritter Abschnitt dem GPU-Speicher 1412 zugeteilt, und so weiter. In mindestens einer Ausführungsform wird dadurch ein gesamter virtueller/effektiver Speicherraum (manchmal auch als ein effektiver Adressraum bezeichnet) über jeden der Prozessorspeicher 1401-1402 und GPU-Speicher 1420-1423 hinweg verteilt, so dass jeder Prozessor oder jede GPU auf jeden physikalischen Speicher zugreifen kann, wobei eine virtuelle Adresse auf diesen Speicher abgebildet wird.
  • In mindestens einer Ausführungsform stellen die Bias/Kohärenzverwaltungs-Schaltungen 1494A-1494E innerhalb einer oder mehrerer MMUs 1439A-1439E die Cache-Kohärenz zwischen Caches eines oder mehrerer Host-Prozessoren (z.B. 1405) und den GPUs 1410-1413 sicher und implementieren Biasing-Techniken, die physikalische Speicher angeben, in welchen bestimmte Arten von Daten gespeichert werden sollten. Während in 14F mehrere Instanzen der Bias-/Kohärenzverwaltungsschaltungen 1494A-1494E veranschaulicht sind, können die Bias-/Kohärenzschaltungen innerhalb einer MMU eines oder mehrerer Hostprozessoren 1405 und/oder innerhalb der Beschleunigerintegrationsschaltung 1436 implementiert sein.
  • Eine Ausführungsform ermöglicht GPU-angeschlossenem Speicher 1420 als Teil des Systemspeichers abgebildet zu werden und unter Verwendung einer Technologie eines gemeinsam genutzten virtuellen Speichers (Shared Virtual Memory; SVM) darauf zugegriffen zu werden, ohne jedoch Leistungseinbußen im Zusammenhang mit voller Systemcache-Kohärenz zu erleiden. In mindestens einer Ausführungsform bietet die Möglichkeit, auf den an die GPU-angeschlossenen Speicher 1420 als Systemspeicher ohne lästigen Cachekohärenz-Overhead zuzugreifen, eine vorteilhafte Betriebsumgebung für GPU-Entlastung. Diese Anordnung ermöglicht Software des Host-Prozessors 1405, Operanden einzurichten und ohne den Aufwand traditioneller E/A-DMA-Datenkopien auf Rechenergebnisse zuzugreifen. Derartige traditionelle Kopien beinhalten Treiberaufrufe, Unterbrechungen bzw. Interrupts und Memory Mapped I/O (MMIO)-Zugriffe, die im Vergleich zu einfachen Speicherzugriffen alle ineffizient sind. In mindestens einer Ausführungsform kann eine Fähigkeit, auf den an die GPU-angeschlossenen Speicher 1420 ohne Cache-Kohärenz-Overheads zuzugreifen, entscheidend für die Ausführungszeit einer entlasteten Berechnung sein. In Fällen mit wesentlichem Streaming-Speicherschreibe-Datenaufkommen kann beispielsweise der Cache-Kohärenz-Overhead eine effektive Schreibbandbreite, die von einer GPU 1410 gesehen wird, beträchtlich verringern. In mindestens einer Ausführungsform können die Effizienz der Operandeneinrichtung, die Effizienz des Zugriffs auf Ergebnisse und die Effizienz der Berechnung durch die GPU eine Rolle bei der Bestimmung der Effektivität einer GPU-Entlastung spielen.
  • In mindestens einer Ausführungsform wird die Auswahl von GPU-Bias und Host-Prozessor-Bias durch eine Bias-Tracker-Datenstruktur gesteuert. Eine Bias-Tabelle kann beispielsweise verwendet werden, die eine Seitengranularstruktur sein kann (d.h. auf eine Granularität einer Speicherseite gesteuert wird), die 1 oder 2 Bit pro GPU-angeschlossener Speicherseite enthält. In mindestens einer Ausführungsform kann eine Bias-Tabelle in einem gestohlenen Speicherbereich eines oder mehrerer GPU-angeschlossener Speicher 1420-1423 mit oder ohne einen Bias-Cache in einer GPU 1410-1413 implementiert sein (z.B. um häufig/kürzlich verwendete Einträge einer Bias-Tabelle zwischenzuspeichern). Alternativ kann eine gesamte Bias-Tabelle innerhalb einer GPU aufrechterhalten werden.
  • In mindestens einer Ausführungsform wird auf einen Bias-Tabelleneintrag zugegriffen, der jedem Zugriff auf den GPU-angeschlossenen Speicher 1420 zugeordnet ist, bevor tatsächlich auf einen GPU-Speicher zugegriffen wird, welcher die folgenden Operationen veranlasst. Zuerst werden lokale Anfragen der GPU 1410-1413, die ihre Seite in GPU-Bias finden, direkt an einen entsprechenden GPU-Speicher 1420-1423 weitergeleitet. Lokale Anfragen von einer GPU, die ihre Seite in Host-Bias finden, werden an den Prozessor 1405 weitergeleitet (z.B. über eine Hochgeschwindigkeitsverbindung, wie oben beschrieben). In einer Ausführungsform beenden Anfragen von dem Prozessor 1405, die eine angeforderte Seite in Hostprozessor-Bias finden, eine Anfrage wie ein normales Lesen des Speichers. Alternativ können Anfragen, die an eine Seite mit GPU-Bias gerichtet sind, an die GPU 1410-1413 weitergeleitet werden. In mindestens einer Ausführungsform kann eine GPU dann eine Seite in einen Hostprozessor-Bias überführen, wenn sie derzeit keine Seite verwendet. In mindestens einer Ausführungsform kann der Bias-Zustand einer Seite entweder durch einen softwarebasierten Mechanismus, einen hardwaregestützten softwarebasierten Mechanismus oder, für eine begrenzte Anzahl von Fällen, einen rein hardwarebasierten Mechanismus geändert werden.
  • Ein Mechanismus zum Ändern des Bias-Zustands benutzt einen API-Aufruf (z.B. OpenCL), welcher wiederum den Gerätetreiber einer GPU aufruft, welcher wiederum eine Nachricht an eine GPU sendet (oder einen Befehlsdeskriptor in eine Warteschlange stellt), der sie anweist, einen Bias-Zustand zu ändern und, für einige Übergänge, eine Cache-LeerungsOperation in einem Host durchzuführen. In mindestens einer Ausführungsform wird die Cache-Leerungsoperation für einen Übergang von Bias des Host-Prozessors 1405 zur Bias der GPU verwendet, nicht jedoch für einen entgegengesetzten Übergang.
  • In einer Ausführungsform wird Cache-Kohärenz durch vorübergehendes Rendern von Seiten mit GPU-Bias, die von dem Hostprozessor 1405 nicht zwischengespeichert werden können, aufrechterhalten. Um auf diese Seiten zuzugreifen, kann der Prozessor 1405 Zugriff von der GPU 1410 anfordern, welche den Zugriff sofort gewähren kann oder auch nicht. Um die Kommunikation zwischen dem Prozessor 1405 und der GPU 1410 zu verringern, ist es somit vorteilhaft, sicherzustellen, dass Seiten mit GPU-Bias diejenigen sind, die von einer GPU, jedoch nicht von dem Hostprozessor 1405 benötigt werden und umgekehrt.
  • Eine Hardwarestruktur(en) 615 wird(en) verwendet, um eine oder mehrere Ausführungsformen auszuführen. Einzelheiten hinsichtlich einer Hardwarestruktur(en) 615 werden hier in Verbindung mit 6A und/oder 6B bereitgestellt.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente von 14A, 14B, 14C, 14D, 14E und/oder 14F benutzt, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und des Filtertensors zu erzeugen.
  • 15 veranschaulicht beispielhaft integrierte Schaltungen und zugehörige Graphikprozessoren, die unter Verwendung von einem oder mehreren IP-Kernen hergestellt sein können, gemäß verschiedenen hier beschriebenen Ausführungsformen. Zusätzlich zu dem, was veranschaulicht ist, können andere Logik und Schaltungen in mindestens einer Ausführungsform umfasst sein, einschließlich zusätzlicher Graphikprozessoren/Kerne, peripherer Schnittstellen-Controllers oder Allzweck-Prozessorkerne.
  • 15 ist ein Blockdiagramm, das ein beispielhaftes System auf einer integrierten Chip-Schaltung 1500 veranschaulicht, die aus einem oder mehreren IP-Kernen hergestellt sein kann, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform umfasst die integrierte Schaltung 1500 einen oder mehrere Anwendungsprozessor(en) 1505 (z.B. CPUs), mindestens einen Graphikprozessor 1510 und kann zusätzlich einen Bildprozessor 1515 und/oder einen Videoprozessor 1520 umfassen, von welchen jeder ein modularer IP-Kern sein kann. In mindestens einer Ausführungsform umfasst die integrierte Schaltung 1500 Peripherie- oder Buslogik mit einem USB-Controller 1525, einem UART-Controller 1530, einem SPI/SDIO-Controller 1535 und einem I22S/I22C-Controller 1540. In mindestens einer Ausführungsform kann die integrierte Schaltung 1500 eine Anzeigevorrichtung 1545 umfassen, die mit einem oder mehreren eines High-Definition-Multimedia-Schnittstellen-(HDMI)-Controllers 1550 und einer Anzeigeschnittstelle 1555 für ein Mobile Industry Processor Interface (MIPI) gekoppelt ist. In mindestens einer Ausführungsform kann Speicher durch ein Flash-Speicher-Teilsystem 1560 einschließlich eines Flash-Speichers und eines Flash-Speicher-Controllers bereitgestellt sein. In mindestens einer Ausführungsform kann eine Speicherschnittstelle über einen Speicher-Controller 1565 für Zugriff auf SDRAM- oder SRAM-Speichervorrichtungen bereitgestellt sein. In mindestens einer Ausführungsform umfassen einige integrierte Schaltungen zusätzlich eine eingebettete Sicherheits-Engine 1570.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten hinsichtlich der Inferenzierungs- und/oder Trainingslogik 615 werden hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 615 in der integrierten Schaltung 1500 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die mindestens teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 15 gezeigt oder beschrieben wird, um Techniken und oder Funktionen zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und des Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte in der System-on-Chip integrierten Schaltung 1500 von 15 verwendet.
  • 16A-16B veranschaulichen beispielhafte integrierte Schaltungen und zugeordnete Graphikprozessoren, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt sein können, gemäß verschiedenen der hier beschriebenen Ausführungsformen. Zusätzlich zu dem, was veranschaulicht ist, können andere Logik und Schaltungen in mindestens einer Ausführungsform umfasst sein, einschließlich zusätzlicher Graphikprozessoren/Kerne, peripherer Schnittstellen-Controllers oder Allzweck-Prozessorkerne.
  • 16A-16B sind Blockdiagramme, die beispielhafte Graphikprozessoren zur Verwendung innerhalb eines SoC veranschaulichen, gemäß hier beschriebenen Ausführungsformen. 16A veranschaulicht einen beispielhaften Graphikprozessor 1610 einer System-on-Chip integrierten Schaltung, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt sein kann, gemäß mindestens einer Ausführungsform. 16B veranschaulicht einen zusätzlichen beispielhaften Graphikprozessor 1640 einer System-on-Chip integrierten Schaltung, der unter Verwendung eines oder mehrerer IP-Kerne hergestellt sein kann, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der Graphikprozessor 1610 von 16A ein Graphikprozessorkern mit niedrigem Stromverbrauch. In mindestens einer Ausführungsform ist der Graphikprozessor 1640 von 16B ein Graphikprozessorkern mit höherer Leistung. In mindestens einer Ausführungsform kann jeder der Graphikprozessoren 1610, 1640 Varianten des Graphikprozessors 1510 von 15 sein.
  • In mindestens einer Ausführungsform umfasst der Graphikprozessor 1610 einen Vertex-Prozessor 1605 und einen oder mehrere Fragment-Prozessor(en) 1615A-1615N (z.B. 1615A, 1615B, 1615C, 1615D bis 1615N-1 und 1615N). In mindestens einer Ausführungsform kann der Graphikprozessor 1610 verschiedene Shader-Programme über separate Logik ausführen, so dass der Vertex-Prozessor 1605 für die Ausführung von Operationen für Vertex-Shader-Programme optimiert ist, während ein oder mehrere Fragment-Prozessoren 1615A-1615N Fragment (beispielsweise Pixel)-Shading-Operationen für Fragment- oder Pixel-Shader-Programme ausführen. In mindestens einer Ausführungsform führt der Vertex-Prozessor 1605 eine Vertex-Verarbeitungsphase einer 3D-Graphikpipeline durch und erzeugt Primitive und Vertex-Daten. In mindestens einer Ausführungsform verwenden der(die) Fragment-Prozessor(en) 1615A-1615N Primitive- und Vertex-Daten, die von dem Vertex-Prozessor 1605 erzeugt wurden, um einen Frame- bzw. Einzelbildpuffer zu erzeugen, der auf einer Anzeigevorrichtung angezeigt wird. In mindestens einer Ausführungsform sind der bzw. die Fragment-Prozessor(en) 1615A-1615N optimiert, Fragment-Shader-Programme auszuführen, wie sie in einer OpenGL-API vorgesehen sind, welche verwendet werden können, ähnliche Operationen wie ein Pixel-Shader-Programm durchzuführen, wie sie in einer Direct 3D-API vorgesehen sind.
  • In mindestens einer Ausführungsform umfasst der Graphikprozessor 1610 zusätzlich eine oder mehrere Speicherverwaltungseinheiten (MMUs) 1620A-1620B, Cache(s) 1625A-1625B und Schaltungszwischenverbindung(en) 1630A-1630B. In mindestens einer Ausführungsform stellen eine oder mehrere MMU(s) 1620A-1620B ein Adressmapping von virtuell nach physikalisch für den Graphikprozessor 1610 bereit, einschließlich des Vertex-Prozessors 1605 und/oder des/der Fragment-Prozessoren 1615A-1615N, die auf Vertex- oder Bild-/Texturdaten Bezug nehmen können, die in Speicher gespeichert sind, zusätzlich zu Vertex- oder Bild-/Textur-Daten, die in einem oder mehreren Cache(s) 1625A-1625B gespeichert sind. In mindestens einer Ausführungsform können eine oder mehrere MMU(s) 1620A-1620B mit anderen MMU(s) innerhalb des Systems synchronisiert werden, einschließlich einer oder mehrerer MMU(s), die einem oder mehreren Anwendungsprozessor(en) 1505, Bildprozessoren 1515 und/oder Videoprozessoren 1520 von 15 zugeordnet sind, so dass jeder Prozessor 1505-1520 an einem gemeinsam genutzten oder vereinigten virtuellen Speichersystem partizipieren kann. In mindestens einer Ausführungsform ermöglichen eine oder mehrere Schaltungs-Zwischenverbindung(en) 1630A-1630B dem Graphikprozessor 1610, sich mit anderen IP-Kernen innerhalb des SoC entweder über einen internen Bus des SoC oder über eine direkte Verbindung schnittstellenmäßig zu verbinden.
  • In mindestens einer Ausführungsform umfasst der Graphikprozessor 1640 eine oder mehrere MMU(s) 1620A-1620B, Caches 1625A-1625B und Zwischenverbindungen 1630A-1630B des Graphikprozessors 1610 von 16A. In mindestens einer Ausführungsform umfasst der Graphikprozessors 1640 einen oder mehrere Shader-Kerne 1655A-1655N (Z.B. 1655A, 1655B, 1655C, 1655D, 1655E, 1655F, bis 1655N-1 und 1655N), wie in 16B gezeigt, welche eine vereinheitlichte Shader-Kern-Architektur bereitstellen, in welcher ein einzelner Kern oder Typ oder Kern alle Arten von programmierbarem Shader-Code ausführen kann, einschließlich Shader-Programmcode zur Implementierung von Vertex-Shadern, Fragment-Shadern und/oder Rechen-Shadern. In mindestens einer Ausführungsform kann eine Anzahl von Shader-Kernen variieren. In mindestens einer Ausführungsform umfasst der Graphikprozessor 1640 einen Inter-Core-Task-Manager 1645, der als ein Thread-Dispatcher fungiert, um Ausführung-Threads an einen oder mehrere Shader-Kerne 1655A-1655N zu senden, und eine Kachelungs-Einheit 1658, um Kachelungs-Operationen für kachelbasiertes Rendering zu beschleunigen, bei welchen Rendering-Operationen für eine Szene im Bildraum unterteilt sind, um beispielsweise lokale räumliche Kohärenz innerhalb einer Szene auszunutzen oder die Nutzung interner Caches zu optimieren.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten hinsichtlich der Inferenzierungs- und/oder Trainingslogik 615 werden hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 615 in der integrierten Schaltung 16A und/oder 16B verwendet werden, um Operationen zu inferenzieren oder vorherzusagen, die mindestens teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 16A und/oder 16B gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und des Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte in dem Graphikprozessor 1610 von 16A und/oder dem Graphikprozessor 1640 von 16B verwendet.
  • 17A-17B veranschaulichen eine zusätzliche beispielhafte Graphikprozessorlogik gemäß hier beschriebenen Ausführungsformen. 17A veranschaulicht einen Graphikkern 1700, der in mindestens einer Ausführungsform in dem Graphikprozessor 1510 von 15 umfasst sein kann und in mindestens einer Ausführungsform ein vereinheitlichter Shader-Kern 1655A-1655N wie in 16B in mindestens einer Ausführungsform sein kann. 17B veranschaulicht eine hochparallele universelle Graphikverarbeitungseinheit („GPGPU“) 1730, die für den Einsatz auf einem Multi-Chip-Modul in mindestens einer Ausführungsform geeignet ist.
  • In mindestens einer Ausführungsform umfasst der Graphikkern 1700 einen gemeinsam genutzten Befehls-Cache 1702, eine Textureinheit 1718 und einen Cache/gemeinsam genutzten Speicher 1720, die für Ausführungsressourcen innerhalb des Graphikkerns 1700 gemeinsam sind. In mindestens einer Ausführungsform kann der Graphikkern 1700 mehrere Slices 1701A-1701N oder Partitionen für jeden Kern umfassen, und kann ein Graphikprozessor mehrere Instanzen des Graphikkerns 1700 umfassen. In mindestens einer Ausführungsform können die Slices 1701A-1701N eine Unterstützungslogik umfassen, die einen lokalen Befehls-Cache 1704A-1704N, einen Thread-Planer 1706A-1706N, einen Thread-Dispatchers 1707A-1708N und einen Satz von Registern 1710A-1710N umfasst. In mindestens einer Ausführungsform können die Slices 1701A-1701N einen Satz zusätzlicher Funktionseinheiten (AFUs 1712A-1712N), Gleitkommaeinheiten (FPU 1714A-1714N), Ganzzahl-Rechenlogikeinheiten (ALUs 1716A-1716N), Adressberechnungseinheiten (ACU 1713A-1713N), doppelt genaue Gleitkommaeinheiten (DPFPU 1715A-1715N) und Matrixverarbeitungseinheiten (MPU 1717A-1717N) umfassen.
  • In mindestens einer Ausführungsform können FPUs 1714A-1714N einfach genaue (32-Bit) und halb genaue (16-Bit) Gleitkomma-Operationen durchführen, während die DPFPUs 1715A-1715N doppelt genaue (64-Bit) Gleitkomma-Operationen durchführen. In mindestens einer Ausführungsform können die ALUs 1716A-1716N Ganzzahl-Operationen mit variabler Genauigkeit und 8-Bit-, 16-Bit- und 32-Bit-Genauigkeit durchführen und für Operationen mit gemischter Genauigkeit konfiguriert sein. In mindestens einer Ausführungsform können die MPUs 1717A-1717N auch für Matrix-Operationen mit gemischtere Genauigkeit konfiguriert sein, einschließlich halb genauer Gleitkomma- und 8-Bit Ganzzahl-Operationen. In mindestens einer Ausführungsform können die MPUs 1717-1717N eine Vielzahl von Matrix-Operationen durchführen, um die Frameworks von Anwendungen für maschinelles Lernen zu beschleunigen, einschließlich des Ermöglichens von Unterstützung für beschleunigte allgemeine bzw. generelle Matrix-zu-Matrix Multiplikation (GEMM). In mindestens einer Ausführungsform können die AFUs 1712A-1712N zusätzliche logische Operationen durchführen, die nicht von Gleitkomma- oder Integer-Einheiten unterstützt werden, die trigonometrische Operationen umfassen.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten hinsichtlich Inferenzierungs- und/oder Trainingslogik 615 werden hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 615 in dem Graphikkern 1700 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die mindestens teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • 0283 In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 17A gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und des Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte in dem Graphikprozessor 1700 von 17A verwendet.
  • 17B veranschaulicht eine Allzweck-Verarbeitungseinheit (GPGPU) 1730, die konfiguriert sein kann, hochparallele Rechenoperationen zu ermöglichen, die von einer Anordnung von Graphikverarbeitungseinheiten durchzuführen sind, in mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die GPGPU 1730 direkt mit anderen Instanzen der GPGPU 1730 verknüpft sein, um einen Multi-GPU-Cluster zu erstellen, um die Trainingsgeschwindigkeit für tiefe neuronale Netzwerke zu verbessern. In mindestens einer Ausführungsform umfasst die GPGPU 1730 eine Host-Schnittstelle 1732, um eine Verbindung mit einem Host-Prozessor zu ermöglichen. In mindestens einer Ausführungsform ist die Host-Schnittstelle 1732 eine PCI-Express-Schnittstelle. In mindestens einer Ausführungsform kann die Host-Schnittstelle 1732 eine herstellerspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur sein. In mindestens einer Ausführungsform empfängt die GPGPU 1730 Befehle von einem Host-Prozessor und verwendet einen globalen Planer 1734, um die diesen Befehlen zugeordneten Ausführung-Threads an einen Satz von Rechenclustern 1736A-1736H zu verteilen. In mindestens einer Ausführungsform benutzen die Rechencluster 1736A-1736H einen Cache-Speicher 1738 gemeinsam. In mindestens einer Ausführungsform kann der Cache-Speicher 1738 als ein übergeordneter Cache für Cache-Speicher innerhalb der Rechencluster 1736A-1736H dienen.
  • In mindestens einer Ausführungsform umfasst die GPGPU 1730 den Speicher 1744A-1744B, der mit den Rechenclustern 1736A-1736H über einen Satz von Speicher-Controllern 1742A-1742B gekoppelt ist. In mindestens einer Ausführungsform kann der Speicher 1744A-1744B verschiedene Arten von Speichervorrichtungen umfassen, einschließlich eines dynamischen Direktzugriffsspeichers (DRAM) oder eines Graphik-Direktzugriffspeichers, wie beispielsweise einen synchroner Graphik-Direktzugriffspeicher (SGRAM), der einen Graphikspeicher mit doppelter Datenrate (GDDR) umfasst.
  • In mindestens einer Ausführungsform umfassen die Rechencluster 1736A-1736H jeweils einen Satz von Graphikkernen, wie beispielsweise den Graphikkern 1700 von 17A, der mehrere Typen von Ganzzahl- und Gleitkomma-Logikeinheiten umfassen kann, die Rechenoperationen mit einer Reihe von Genauigkeitsstufen durchführen können, die auch für Berechnungen zum maschinellen Lernen geeignet sind. Beispielsweise kann in mindestens einer Ausführungsform mindestens eine Teilmenge von Gleitkommaeinheiten in jedem der Rechencluster 1736A-1736H konfiguriert sein, um 16-Bit- oder 32-Bit-Gleitkommaoperationen durchzuführen, während eine andere Teilmenge von Gleitkommaeinheiten konfiguriert sein kann, um 64-Bit-Gleitkommaoperationen durchzuführen.
  • In mindestens einer Ausführungsform können mehrere Instanzen der GPGPU 1730 konfiguriert sein, als Rechencluster zu arbeiten. In mindestens einer Ausführungsform variiert die Kommunikation, die von den Rechenclustern 1736A-1736H für die Synchronisation und den Datenaustausch verwendet wird, je nach Ausführungsform. In mindestens einer Ausführungsform kommunizieren mehrere Instanzen der GPGPU 1730 über die Host-Schnittstelle 1732. In mindestens einer Ausführungsform umfasst die GPGPU 1730 einen E/A-Hub 1739, der die GPGPU 1730 mit einer GPU-Verbindung 1740 koppelt, die eine direkte Verbindung zu anderen Instanzen der GPGPU 1730 ermöglicht. In mindestens einer Ausführungsform ist die GPU-Verbindung 1740 mit einer dedizierten GPU-zu-GPU-Brücke gekoppelt, die die Kommunikation und Synchronisation zwischen mehreren GPGPU 1730 Instanzen ermöglicht. In mindestens einer Ausführungsform koppelt die GPU-Verbindung 1740 mit einer Hochgeschwindigkeitsverbindung, um Daten an andere GPGPUs oder Parallelprozessoren zu senden und zu empfangen. In mindestens einer Ausführungsform befinden sich mehrere Instanzen der GPGPU 1730 in separaten Datenverarbeitungssystemen und kommunizieren über eine Netzwerkvorrichtung, die über die Host-Schnittstelle 1732 zugänglich ist. In mindestens einer Ausführungsform kann die GPU-Verbindung 1740 konfiguriert sein, eine Verbindung zu einem Host-Prozessor zusätzlich oder alternativ zu der Host-Schnittstelle 1732 zu ermöglichen.
  • In mindestens einer Ausführungsform kann die GPGPU 1730 konfiguriert sein, um neuronale Netzwerke zu trainieren. In mindestens einer Ausführungsform kann die GPGPU 1730 innerhalb einer Inferenzplattform verwendet werden. In mindestens einer Ausführungsform, in welcher die GPGPU 1730 zur Inferenzierung verwendet wird, kann die GPGPU weniger Rechencluster 1736A-1736H umfassen als dann, wenn die GPGPU 1730 zum Training eines neuronalen Netzwerks verwendet wird. In mindestens einer Ausführungsform kann sich die dem Speicher 1744A-1744B zugeordnete Speichertechnologie zwischen Inferenzierungs- und Trainingskonfigurationen unterscheiden, wobei Speichertechnologien mit höherer Bandbreite für Trainingskonfigurationen vorgesehen sind. In mindestens einer Ausführungsform kann die Inferenzkonfiguration der GPGPU 1730 die inferenzspezifische Anweisungen unterstützen. Beispielsweise kann in mindestens einer Ausführungsform eine Inferenzkonfiguration eine oder mehrere 8-Bit-Ganzzahl-Skalarprodukt-Anweisungen unterstützen, welche während Inferenzoperationen für bereitgestellte neuronale Netzwerke verwendet werden können.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten hinsichtlich Inferenzierungs- und/oder Trainingslogik 615 werden hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 615 in der GPGPU 1730 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die mindestens teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 17B gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und des Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte in der GPGPU 1730 von 17B verwendet.
  • 18 ist ein Blockdiagramm, das ein Computersystem 1800 gemäß mindestens einer Ausführungsform darstellt. In mindestens einer Ausführungsform umfasst das Computersystem 1800 ein Verarbeitungsteilsystem 1801 mit einem oder mehreren Prozessor(en) 1802 und einem Systemspeicher 1804, der über einen Zwischenverbindungspfad kommuniziert, der einen Speicher-Hub 1805 umfassen kann. In mindestens einer Ausführungsform kann der Speicher-Hub 1805 eine separate Komponente innerhalb einer Chipsatz-Komponente sein oder in einen oder mehrere Prozessor(en) 1802 integriert sein. In mindestens einer Ausführungsform koppelt der Speicher-Hub 1805 über eine Kommunikationsverbindung 1806 mit einem E/A-Teilsystem 1811. In mindestens einer Ausführungsform umfasst das E/A-Teilsystem 1811 einen E/A-Hub 1807, der es dem Computersystem 1800 ermöglichen kann, Eingaben von einer oder mehreren Eingabevorrichtung(en) 1808 zu empfangen. In mindestens einer Ausführungsform kann der E/A-Hub 1807 einem Anzeigen-Controller, der in einem oder mehreren Prozessor(en) 1802 umfasst sein kann, ermöglichen, Ausgaben an eine oder mehrere Anzeigevorrichtung(en) 1810A bereitzustellen. In mindestens einer Ausführungsform können eine oder mehrere mit dem E/A-Hub 1807 gekoppelte Anzeigevorrichtung(en) 1810A eine lokale, interne oder eingebettete Anzeigevorrichtung umfassen.
  • In mindestens einer Ausführungsform umfasst das Verarbeitungsteilsystem 1801 einen oder mehrere Parallelprozessor(en) 1812, die über einen Bus oder eine andere Kommunikationsverbindung 1813 mit dem Speicher-Hub 1805 gekoppelt sind. In mindestens einer Ausführungsform kann die Kommunikationsverbindung 1813 eine von einer beliebigen Anzahl von auf Standards basierenden Kommunikation-Verbindungstechnologien oder - Verbindungsprotokollen sein, wie beispielsweise, jedoch nicht beschränkt auf, PCI Express, oder kann sie eine herstellerspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur sein. In mindestens einer Ausführungsform bilden ein oder mehrere Parallelprozessor(en) 1812 ein rechnerisch fokussiertes Parallel- oder Vektor-Verarbeitungssystem, das eine große Anzahl von Verarbeitungskernen und/oder Verarbeitungsclustern umfassen kann, wie beispielsweise einen Prozessor mit vielen integrierten Kernen (Many Integrated Core; MIC). In mindestens einer Ausführungsform bilden ein oder mehrere Parallelprozessoren 1812 ein Graphikverarbeitungs-Teilsystem, das Pixel an eine oder mehrere Anzeigevorrichtung(en) 1810A ausgeben kann, die über den E/A-Hub 1807 gekoppelt sind. In mindestens einer Ausführungsform können ein oder mehrere Parallelprozessoren 1812 auch einen Anzeigen-Controller und eine Anzeigeschnittstelle (nicht gezeigt) umfassen, um eine direkte Verbindung zu einer oder mehreren Anzeigevorrichtung(en) 1810B zu ermöglichen.
  • In mindestens einer Ausführungsform kann sich eine Systemspeichereinheit 1814 mit dem E/A-Hub 1807 verbinden, um einen Speichermechanismus für das Computersystem 1800 bereitzustellen. In mindestens einer Ausführungsform kann ein E/A-Schalter 1816 verwendet werden, um einen Schnittstellenmechanismus bereitzustellen, um Verbindungen zwischen dem E/A-Hub 1807 und anderen Komponenten, wie beispielsweise einem Netzwerkadapter 1818 und/oder einem drahtlosen Netzwerkadapter 1819, der in die Plattform integriert sein kann, und verschiedenen anderen Vorrichtungen, die über eine oder mehrere Add-In-Vorrichtung(en) 1812 hinzugefügt sein können, zu ermöglichen. In mindestens einer Ausführungsform kann der Netzwerkadapter 1818 ein Ethernet-Adapter oder ein anderer verdrahteter Netzwerkadapter sein. In mindestens einer Ausführungsform kann der drahtlose Netzwerkadapter 1819 ein oder mehrere Wi-Fi, Bluetooth-, Nahfeldkommunikation(NFC)- oder andere Netzwerkgeräte umfassen, die ein oder mehrere drahtlose Funkeinrichtungen umfassen.
  • In mindestens einer Ausführungsform kann das Computersystem 1800 andere Komponenten umfassen, die nicht explizit gezeigt sind, einschließlich USB- oder andere Portverbindungen, optische Speicherlaufwerke, Videoaufnahmevorrichtungen und dergleichen, die auch mit dem E/A-Hub 1807 verbunden sein können. In mindestens einer Ausführungsform können Kommunikationspfade, die verschiedene Komponenten in 18 miteinander verbinden, unter Verwendung beliebiger geeigneter Protokolle, wie z. B. PCI-(Peripheral Component Zwischenverbindung)-basierter Protokolle (z. B. PCI-Express), oder anderer Bus- oder Punkt-zu-Punkt-Kommunikationsschnittstellen und/oder - Protokolle(n), wie z.B. NV-Link-Hochgeschwindigkeitsverbindungen oder Zwischenverbindungsprotokolle, implementiert sein.
  • In mindestens einer Ausführungsform umfassen ein oder mehrere Parallelprozessoren 1812 für Graphik- und Videoverarbeitung optimierte Schaltungen, die beispielsweise Videoausgabeschaltungen umfassen und eine Graphikverarbeitungseinheit (GPU) bilden. In mindestens einer Ausführungsform umfassen ein oder mehrere Parallelprozessor(en) 1812 für allgemeine Verarbeitung optimierte Schaltungen. In mindestens einer Ausführungsform können Komponenten des Computersystems 1800 mit einem oder mehreren anderen Systemelementen auf einer einzigen integrierten Schaltung integriert sein. Beispielsweise können in mindestens einer Ausführungsform ein oder mehrere Parallelprozessoren 1812, der Speicher-Hub 1805, der bzw. die Prozessor(en) 1802 und der E/A-Hub 1807 in eine System-on-Chip (SoC)-integrierte Schaltung integriert sein. In mindestens einer Ausführungsform können Komponenten des Computersystems 1800 in ein einziges Gehäuse integriert sein, um eine System-in-Package (SIP)-Konfiguration zu bilden. In mindestens einer Ausführungsform kann mindestens ein Teil von Komponenten des Computersystems 1800 in ein Multi-Chip-Modul (MCM) integriert sein, welches mit anderen Multi-Chip-Modulen zu einem modularen Computersystem verbunden sein kann.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten hinsichtlich der Inferenzierungs- und/oder Trainingslogik 615 werden hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 615 in dem System 1800 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die mindestens teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die mit Bezug auf 18 gezeigt oder beschrieben wird, benutzt, um Techniken und oder Funktionen zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform umfasst und/oder führt die Inferenzierungs- und/oder Trainingslogik 615 mindestens einen Aspekt aus, der mit Bezug auf 1 beschrieben ist (z.B. neuronaler Netzwerkbeschneider 102, Inferenzierungs-Engine 108) und/oder 2 (z.B. Importierer 204, Optimierer 206, Exportierer 208). In mindestens einer Ausführungsform beschneidet die Inferenzierungs- und/oder Trainingslogik 615 mindestens ein neuronales Netzwerk durch Entfernen von mit Null gewichteten Neuronen und Propagieren von Bias-Termen, wie mit Bezug auf eine oder mehrere von 1-5 beschrieben. In mindestens einer Ausführungsform führt die Inferenzierungs- und/oder Trainingslogik 615 mindestens eine Inferenzierungsoperation unter Verwendung eines beschnittenen neuronalen Netzwerks durch (z.B. Darstellung des beschnittenen neuronalen Netzwerks 106), wie mit Bezug auf eine oder mehrere von 1-5 beschrieben. In mindestens einer Ausführungsform wird das System 1800 von 18 benutzt, um Techniken und/oder Funktionen zu implementieren, die in Verbindung mit 1-5 beschrieben sind.
  • PROZESSOREN
  • 19A veranschaulicht einen Parallelprozessor 1900 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform können verschiedene Komponenten des Parallelprozessors 1900 unter Verwendung einer oder mehrerer integrierter Schaltungsvorrichtungen, wie beispielsweise programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASICs) oder feldprogrammierbare Gate-Arrays (FPGA) implementiert sein. In mindestens einer Ausführungsform ist der veranschaulichte Parallelprozessor 1900 eine Variante eines oder mehrerer in 18 gezeigter Parallelprozessoren 1812 gemäß einer beispielhaften Ausführungsform.
  • In mindestens einer Ausführungsform umfasst der Parallelprozessor 1900 eine Parallelverarbeitungseinheit 1902. In mindestens einer Ausführungsform umfasst die Parallelverarbeitungseinheit 1902 eine E/A-Einheit 1904, die eine Kommunikation mit anderen Vorrichtungen ermöglicht, einschließlich anderer Instanzen der Parallelverarbeitungseinheit 1902. In mindestens einer Ausführungsform kann die E/A-Einheit 1904 direkt mit anderen Vorrichtungen verbunden sein. In mindestens einer Ausführungsform verbindet sich die E/A-Einheit 1904 mit anderen Vorrichtungen unter Verwendung eines Hubs oder einer Schalter-Schnittstelle, wie beispielsweise dem Speicher-Hub 1805. In mindestens einer Ausführungsform bilden Verbindungen zwischen dem Speicher-Hub 1805 und der E/A-Einheit 1904 eine Kommunikationsverbindung 1813. In mindestens einer Ausführungsform verbindet sich die E/A-Einheit 1904 mit einer Host-Schnittstelle 1906 und einer Speicherquerschiene 1916, wobei die Host-Schnittstelle 1906 Befehle empfängt, die zur Durchführung von Verarbeitungsoperationen bestimmt sind, und die Speicherquerschiene 1916 Befehle empfängt, die zur Durchführung von Speicheroperationen bestimmt sind.
  • In mindestens einer Ausführungsform kann dann, wenn die Host-Schnittstelle 1906 über die E/A-Einheit 1904 einen Befehlspuffer empfängt, die Host-Schnittstelle 1906 Arbeitsoperationen anweisen, um diese Befehle an einem Frontend 1908 auszuführen. In mindestens einer Ausführungsform koppelt das Frontend 1908 mit einem Planer 1910, der konfiguriert ist, um Befehle oder andere Arbeitselemente an eine Verarbeitungsclusteranordnung 1912 zu verteilen. In mindestens einer Ausführungsform stellt der Planer 1910 sicher, dass die Clusteranordnung 1912 richtig konfiguriert ist und sich in einem gültigen Zustand befindet, bevor Aufgaben an die Verarbeitungsclusteranordnung 1912 der Verarbeitungsclusteranordnung 1912 verteilt werden. In mindestens einer Ausführungsform ist der Planer 1910 über Firmware-Logik implementiert, die auf einem Mikrocontroller ausgeführt wird. In mindestens einer Ausführungsform ist der von dem Mikrocontroller implementierte Planer 1910 konfigurierbar, um komplexe Planungs- und Arbeitsverteilungsoperationen mit grober und feiner Granularität durchzuführen, was eine schnelle Vorwegnahme und Kontextumschaltung von Threads ermöglicht, die auf der Verarbeitungsanordnung 1912 ausgeführt werden. In mindestens einer Ausführungsform kann die Host-Software Arbeitslasten für die Planung auf der Verarbeitungsanordnung 1912 über eine von mehreren Graphikverarbeitungstürklingeln nachweisen. In mindestens einer Ausführungsform können dann Arbeitslasten über die Verarbeitungsanordnung 1912 hinweg durch die Logik des Planers 1910 innerhalb eines Mikrocontrollers einschließlich des Planers 1910 automatisch verteilt werden.
  • In mindestens einer Ausführungsform kann die Verarbeitungsclusteranordnung 1912 bis zu „N“-Verarbeitungscluster (z.B. Cluster 1914A, Cluster 1914B, bis Cluster 1914N) umfassen. In mindestens einer Ausführungsform kann jeder Cluster 1914A-1914N der Verarbeitungsclusteranordnung 1912 eine große Anzahl gleichzeitiger Threads ausführen. In mindestens einer Ausführungsform kann der Planer 1910 den Clustern 1914A-1914N der Verarbeitungsclusteranordnung 1912 unter Verwendung verschiedener Planungs- und/oder Arbeitsverteilungsalgorithmen Arbeit zuweisen, welche je nach Arbeitsbelastung, die für jede Art von Programm oder Berechnung aufkommt, variieren kann. In mindestens einer Ausführungsform kann die Planung von dem Planer 1910 dynamisch gehandhabt werden, oder kann teilweise durch Compilerlogik während der Kompilierung der Programmlogik, die für die Ausführung durch die Verarbeitung der Clusteranordnung 1912 konfiguriert ist, unterstützt werden. In mindestens einer Ausführungsform können verschiedene Cluster 1914A-1914N der Verarbeitungsclusteranordnung 1912 zur Verarbeitung verschiedener Arten von Programmen oder zur Durchführung verschiedener Arten von Berechnungen allokiert sein.
  • In mindestens einer Ausführungsform kann die Verarbeitungsclusteranordnung 1912 konfiguriert sein, um verschiedene Arten von Parallelverarbeitungsoperationen durchzuführen. In mindestens einer Ausführungsform ist die Verarbeitungsclusteranordnung 1912 konfiguriert, um allgemeine parallele Rechenoperationen durchzuführen. Beispielsweise kann in mindestens einer Ausführungsform die Verarbeitungsclusteranordnung 1912 Logik umfassen, um Verarbeitungsaufgaben einschließlich eines Filterns von Video- und/oder Audiodaten, Durchführens von Modellierungsoperationen, einschließlich physikalischer Operationen, und Durchführens von Datentransformationen auszuführen.
  • In mindestens einer Ausführungsform ist die Verarbeitungsclusteranordnung 1912 konfiguriert, um parallele Graphikverarbeitungsoperationen durchzuführen. In mindestens einer Ausführungsform kann die Verarbeitungsclusteranordnung 1912 zusätzliche Logik umfassen, um die Ausführung solcher Graphikverarbeitungs-operationen zu unterstützen, einschließlich einer, jedoch nicht beschränkt auf, Texturabtastlogik zur Durchführung von Texturoperationen, sowie einer Tessellierungslogik und anderer Vertex-Verarbeitungslogik. In mindestens einer Ausführungsform kann die Verarbeitungsclusteranordnung 1912 konfiguriert sein, um graphikverarbeitungsbezogene Shader-Programme auszuführen, wie beispielsweise Vertex-Shader, Tessellation-Shader, Geometrie-Shader und Pixel-Shader. In mindestens einer Ausführungsform kann die Parallelverarbeitungseinheit 1902 Daten aus dem Systemspeicher über die E/A-Einheit 1904 zur Verarbeitung übertragen. In mindestens einer Ausführungsform können während der Verarbeitung übertragene Daten während der Verarbeitung in einem On-Chip-Speicher (z.B. Speicher des Parallelprozessors 1922) gespeichert und anschließend in den Systemspeicher zurückgeschrieben werden.
  • In mindestens einer Ausführungsform kann dann, wenn die Parallelverarbeitungseinheit 1902 zur Durchführung von Graphikverarbeitung verwendet wird, der Planer 1910 konfiguriert sein, um eine Verarbeitungsarbeitslast in etwa gleich große Aufgaben aufzuteilen, um die Verteilung von Graphikverarbeitungsoperationen auf mehrere Cluster 1914A-1914N der Verarbeitungsclusteranordnung 1912 besser zu ermöglichen. In mindestens einer Ausführungsform können Abschnitte der Verarbeitungsclusteranordnung 1912 konfiguriert sein, um verschiedene Arten von Verarbeitung durchzuführen. Beispielsweise kann in mindestens einer Ausführungsform ein erster Abschnitt konfiguriert sein, um Vertex-Shading und Topologieerzeugung durchzuführen, kann ein zweiter Abschnitt konfiguriert sein, um Tesselation und Geometrie-Shading durchzuführen, und kann ein dritter Abschnitt konfiguriert sein, um Pixel-Shading oder andere Bildschirmraumoperationen durchzuführen, um ein gerendertes Bild für die Anzeige zu erzeugen. In mindestens einer Ausführungsform können Zwischendaten, die von einem oder mehreren der Cluster 1914A-1914N erzeugt wurden, in Puffern gespeichert werden, so dass Zwischendaten zwischen den Clustern 1914A-1914N zur weiteren Verarbeitung übertragen werden können.
  • In mindestens einer Ausführungsform kann die Verarbeitungsclusteranordnung 1912 Verarbeitungsaufgaben empfangen, die über den Planer 1910 auszuführen sind, der von dem Frontend 1908 Befehle empfängt, die Verarbeitungsaufgaben definieren. In mindestens einer Ausführungsform können Verarbeitungsaufgaben Indizes von zu verarbeitenden Daten umfassen, z.B. Oberflächen-(Patch)-Daten, Stammfunktionsdaten, Vertex-Daten und/oder Pixeldaten, sowie Zustandsparameter und Befehle, die definieren, wie Daten zu verarbeiten sind (z.B. welches Programm auszuführen ist). In mindestens einer Ausführungsform kann der Planer 1910 konfiguriert sein, um Indizes zu holen, die Aufgaben entsprechen, oder kann Indizes von dem Frontend 1908 empfangen. In mindestens einer Ausführungsform kann das Frontend 1908 konfiguriert sein, um sicherzustellen, dass die Verarbeitungsclusteranordnung 1912 in einen gültigen Zustand konfiguriert ist, bevor eine durch eingehende Befehlspuffer (z.B. Stapelpuffer, Schiebepuffer, usw.) spezifizierte Arbeitslast initiiert wird.
  • In mindestens einer Ausführungsform kann jede von einer oder mehreren Instanzen der Parallelverarbeitungseinheit 1902 mit dem Parallelprozessorspeicher 1922 gekoppelt sein. In mindestens einer Ausführungsform kann auf den Parallelprozessorspeicher 1922 über die Speicherquerschiene 1916 zugegriffen werden, die Speicheranforderungen von der Verarbeitungsclusteranordnung 1912 sowie der E/A-Einheit 1904 empfangen kann. In mindestens einer Ausführungsform kann die Speicherquerschiene 1916 über eine Speicherschnittstelle 1918 auf den Parallelprozessorspeicher 1922 zugreifen. In mindestens einer Ausführungsform kann die Speicherschnittstelle 1918 mehrere Partitionierungseinheiten (z.B. Partitionierungseinheit 1920A, Partitionierungseinheit 1920B bis Partitionierungseinheit 1920N) umfassen, die jeweils mit einem Abschnitt (z.B. der Speichereinheit) des Parallelprozessorspeichers 1922 koppeln können. In mindestens einer Ausführungsform ist eine Anzahl von Partitionierungseinheiten 1920A-1920N konfiguriert, um gleich einer Anzahl von Speichereinheiten zu sein, so dass eine erste Partitionierungseinheit 1920A eine entsprechende erste Speichereinheit 1924A aufweist, eine zweite Partitionierungseinheit 1920B eine entsprechende Speichereinheit 1924B aufweist und eine N-te Partitionierungseinheit 1920N eine entsprechende N-te Speichereinheit 1924N aufweist. In mindestens einer Ausführungsform kann eine Anzahl von Partitionierungseinheiten 1920A-1920N nicht gleich einer Anzahl von Speichervorrichtungen sein.
  • In mindestens einer Ausführungsform können die Speichereinheiten 1924A-1924N verschiedene Arten von Speichervorrichtungen umfassen, einschließlich dynamischen Direktzugriffspeichers (DRAM) oder Graphik-Direktzugriffspeichers, wie beispielsweise synchronen Graphik-Direktzugriffspeichers (SGRAM), einschließlich Graphikspeichers mit doppelter Datenrate (GDDR). In mindestens einer Ausführungsform können die Speichereinheiten 1924A-1924N auch 3D-Stapelspeicher umfassen, einschließlich, jedoch nicht beschränkt auf, Speicher mit hoher Bandbreite (HBM). In mindestens einer Ausführungsform können Renderziele, wie beispielsweise Einzelbildpuffer bzw. Frame-Puffer oder Texturkarten, über Speichereinheiten 1924A-1924N hinweg gespeichert sein, so dass die Partitionseinheiten 1920A-1920N Abschnitte jedes Renderziels parallel schreiben können, um verfügbare Bandbreite des Parallelprozessorspeichers 1922 effizient zu nutzen. In mindestens einer Ausführungsform kann eine lokale Instanz des Parallelprozessorspeichers 1922 zugunsten eines einheitlichen Speicherdesigns, das Systemspeicher in Verbindung mit lokalem Cache-Speicher nutzt, ausgeschlossen sein.
  • In mindestens einer Ausführungsform kann jeder beliebige der Cluster 1914A-1914N der Verarbeitungsclusteranordnung 1912 Daten verarbeiten, die in eine beliebige der Speichereinheiten 1924A-1924N in dem Parallelprozessorspeicher 1922 geschrieben werden. In mindestens einer Ausführungsform kann die Speicherquerschiene 1916 konfiguriert sein, um eine Ausgabe jedes Clusters 1914A-1914N an eine beliebige Partitionseinheit 1912A-1912N oder an einen anderen Cluster 1914A-1914N zu übertragen, der zusätzliche Verarbeitungsoperationen an einer Ausgabe durchführen kann. In mindestens einer Ausführungsform kann jeder Cluster 1914A-1914N mit der Speicherschnittstelle 1918 über die Speicherquerschiene 1916 kommunizieren, um aus verschiedenen externen Speichervorrichtungen zu lesen oder in diese zu schreiben. In mindestens einer Ausführungsform weist die Speicherquerschiene 1916 zur Kommunikation mit der E/A-Einheit 1904 Verbindung zu der Speicherschnittstelle 1918 auf, sowie eine Verbindung zu einer lokalen Instanz des Parallelprozessorspeichers 1922, so dass Verarbeitungseinheiten innerhalb verschiedener Verarbeitungscluster 1914A-1914N mit Systemspeicher oder anderem Speicher kommunizieren können, der nicht lokal zu der Parallelverarbeitungseinheit 1902 ist. In mindestens einer Ausführungsform kann die Speicherquerschiene 1916 virtuelle Kanäle verwenden, um Ströme von Datenaufkommen zwischen den Clustern 1914A-1914N und den Partitionierungseinheiten 1920A-1920N zu trennen.
  • In mindestens einer Ausführungsform können mehrere Instanzen der Parallelverarbeitungseinheit 1902 auf einer einzigen Erweiterungskarte bereitgestellt sein oder können mehrere Erweiterungskarten miteinander verbunden sein. In mindestens einer Ausführungsform können verschiedene Instanzen der Parallelverarbeitungseinheit 1902 konfiguriert sein, auch dann miteinander zu arbeiten, wenn verschiedene Instanzen eine unterschiedliche Anzahl von Verarbeitungskernen, unterschiedliche Mengen an lokalem Parallelprozessorspeicher und/oder andere Konfigurationsunterschiede aufweisen. Beispielsweise können in mindestens einer Ausführungsform einige Instanzen der Parallelverarbeitungseinheit 1902 relativ zu anderen Instanzen Gleitkommaeinheiten mit höherer Genauigkeit umfassen. In mindestens einer Ausführungsform können Systeme, die eine oder mehrere Instanzen der Parallelverarbeitungseinheit 1902 oder des Parallelprozessors 1900 umfassen, in einer Mehrzahl von Konfigurationen und Formfaktoren implementiert sein, einschließlich, jedoch nicht beschränkt auf, Desktop-, Laptop- oder Handheld-Personal Computer, Server, Workstations, Spielkonsolen und/oder eingebettete Systeme.
  • 19B ist ein Blockdiagramm einer Partitionierungseinheit 1920 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist die Partitionierungseinheit 1920 eine Instanz einer der Partitionierungseinheiten 1920A-1920N von 19A. In mindestens einer Ausführungsform umfasst die Partitionierungseinheit 1920 einen L2-Cache 1921, eine Frame-Buffer-Interface bzw. eine Einzelbildpufferschnittstelle 1925 und eine ROP 1926 (Rasteroperationseinheit). Der L2-Cache 1921 ist ein Lese-/Schreib-Cache, der konfiguriert ist, um Lade- und Speicheroperationen durchzuführen, die von der Speicherquerschiene 1916 und der ROP 1926 empfangen wurden. In mindestens einer Ausführungsform werden Lesefehler und dringende Rückschreibanforderungen von dem L2-Cache 1921 an die Einzelbildpufferschnittstelle 1925 zur Verarbeitung ausgegeben. In mindestens einer Ausführungsform können Aktualisierungen über die Einzelbildpufferschnittstelle 1925 zur Verarbeitung auch an einen Einzelbildpuffer gesendet werden. In mindestens einer Ausführungsform ist die Einzelbildpufferschnittstelle 1925 mit einer der Speichereinheiten in dem Parallelprozessorspeicher, wie beispielsweise den Speichereinheiten 1924A-1924N von 19 (z.B. innerhalb des Parallelprozessor-speichers 1922) verbunden.
  • In mindestens einer Ausführungsform ist die ROP 1926 eine Verarbeitungseinheit, die Rasteroperationen wie Schablone, Z-Test, Blending und dergleichen durchführt. In mindestens einer Ausführungsform gibt die ROP 1926 dann verarbeitete Graphikdaten aus, die in dem Graphikspeicher gespeichert sind. In mindestens einer Ausführungsform umfasst die ROP 1926 eine Kompressionslogik zum Komprimieren von Tiefen- oder Farbdaten, die in den Speicher geschrieben werden, und zum Dekomprimieren von Tiefen- oder Farbdaten, die aus dem Speicher gelesen werden. In mindestens einer Ausführungsform kann die Kompressionslogik eine verlustfreie Kompressionslogik sein, die einen oder mehrere von multiplen Kompressionsalgorithmen verwendet. Die Art der Komprimierung, die von der ROP 1926 durchgeführt wird, kann basierend auf statistischen Merkmalen der zu komprimierenden Daten variieren. Beispielsweise wird in mindestens einer Ausführungsform eine Delta-Farbkompression auf Tiefen- und Farbdaten auf kachelweiser Grundlage durchgeführt.
  • In mindestens einer Ausführungsform ist die ROP 1926 in jedem Verarbeitungscluster (z.B. Cluster 1914A-1914N von 19) anstelle von in der Partitionierungseinheit 1920 umfasst. In mindestens einer Ausführungsform werden Lese- und Schreibanforderungen für Pixeldaten über die Speicherquerschiene 1916 anstelle von Pixelfragmentdaten übertragen. In mindestens einer Ausführungsform können verarbeitete Graphikdaten auf einer Anzeigevorrichtung, wie beispielsweise einer oder mehreren Anzeigevorrichtung(en) 1910 von 18 angezeigt werden, zur weiteren Verarbeitung durch den/die Prozessor(en) 1902 weitergeleitet werden, oder zur weiteren Verarbeitung durch eine der Verarbeitungsentitäten innerhalb des Parallelprozessors 1900 von 19A weitergeleitet werden.
  • 19C ist ein Blockdiagramm eines Verarbeitungsclusters 1914 innerhalb einer Parallelverarbeitungseinheit gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist ein Verarbeitungscluster eine Instanz eines der Verarbeitungscluster 1914A-1914N von 19. In mindestens einer Ausführungsform kann der Verarbeitungscluster 1914 konfiguriert sein, um viele Threads parallel auszuführen, wobei sich „Thread“ auf eine Instanz eines bestimmten Programms bezieht, das auf einem bestimmten Satz von Eingangsdaten ausgeführt wird. In mindestens einer Ausführungsform werden Einzelanweisungs-Mehrfachdaten ((Single Instruction, Multiple Data; SIMD)-Befehlsausgabetechniken verwendet, die parallele Ausführung einer großen Anzahl von Threads zu unterstützen, ohne mehrere unabhängige Befehlseinheiten bereitzustellen. In mindestens einer Ausführungsform werden Einzelanweisungs-Mehrfachthread (Single Instruction, Multiple Thread; SIMT)-Techniken verwendet, die parallele Ausführung einer großen Anzahl von im Allgemeinen synchronisierten Threads zu unterstützen, wobei eine gemeinsame Befehlseinheit verwendet wird, die konfiguriert ist, um Anweisungen an eine Anzahl von Verarbeitungs-Engines innerhalb jedes einzelnen der Verarbeitungscluster auszugeben.
  • In mindestens einer Ausführungsform kann der Betrieb des Verarbeitungsclusters 1914 über einen Pipeline-Verwalter 1932 gesteuert werden, der Verarbeitungsaufgaben an SIMT-Parallelprozessoren verteilt. In mindestens einer Ausführungsform empfängt der Pipeline-Verwalter 1932 Anweisungen von dem Planer 1910 von 19 und verwaltet die Ausführung dieser Anweisungen über einen Graphik-Multiprozessor 1934 und/oder eine Textureinheit 1936. In mindestens einer Ausführungsform ist der Graphik-Multiprozessor 1934 eine beispielhafte Instanz eines SIMT-Parallelprozessors. In mindestens einer Ausführungsform können jedoch verschiedene Arten von SIMT-Parallelprozessoren unterschiedlicher Architekturen innerhalb des Verarbeitungsclusters 1914 umfasst sein. In mindestens einer Ausführungsform können eine oder mehrere Instanzen des Graphik-Multiprozessors 1934 in einem Verarbeitungscluster 1914 umfasst sein. In mindestens einer Ausführungsform kann der Graphik-Multiprozessor 1934 Daten verarbeiten und kann eine Datenquerschiene 1940 verwendet, um verarbeitete Daten an eines von mehreren möglichen Zielen, einschließlich anderer Shader-Einheiten, zu verteilen. In mindestens einer Ausführungsform kann der Pipeline-Verwalter 1932 die Verteilung der verarbeiteten Daten erleichtern, indem er Ziele für verarbeitete Daten spezifiziert, die über die Datenquerschiene 1940 zu verteilen sind.
  • In mindestens einer Ausführungsform kann jeder Graphik-Multiprozessor 1934 innerhalb des Verarbeitungsclusters 1914 einen identischen Satz funktionaler Ausführungslogik (z.B. Arithmetik-Logikeinheiten, Lade-Speicher-Einheiten usw.) umfassen. In mindestens einer Ausführungsform kann funktionale Ausführungslogik nach Art des Pipeline-Prinzips konfiguriert sein, in welcher neue Anweisungen ausgegeben werden können, bevor frühere Anweisungen beendet sind. In mindestens einer Ausführungsform unterstützt die funktionale Ausführungslogik eine Mehrzahl von Operationen, einschließlich Ganzzahl- und Gleitkommaarithmetik, Vergleichsoperationen, boolesche Operationen, Bit-Shifting und Berechnung verschiedener algebraischer Funktionen. In mindestens einer Ausführungsform kann die gleiche Hardware der funktionalen Einheit wirksam genutzt werden, um verschiedene Operationen durchzuführen, und jede beliebige Kombination von funktionalen Einheiten kann vorhanden sein.
  • In mindestens einer Ausführungsform bilden an den Verarbeitungscluster 1914 übertragene Anweisungen einen Thread. In mindestens einer Ausführungsform ist ein Satz von Threads, die über einen Satz von Parallelverarbeitungs-Engines ausgeführt werden, eine Thread-Gruppe. In mindestens einer Ausführungsform führt die Thread-Gruppe ein Programm an verschiedenen Eingangsdaten aus. In mindestens einer Ausführungsform kann jeder Thread innerhalb einer Thread-Gruppe einer unterschiedlichen Verarbeitungs-Engine innerhalb eines Graphik-Multiprozessors 1934 zugeordnet sein. In mindestens einer Ausführungsform kann eine Thread-Gruppe weniger Threads umfassen als eine Anzahl von Verarbeitungs-Engines innerhalb des Graphik-Multiprozessors 1934. In mindestens einer Ausführungsform 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 welchen diese Thread-Gruppe verarbeitet wird, im Leerlauf sein. In mindestens einer Ausführungsform kann eine Thread-Gruppe mehr Threads als eine Anzahl von Verarbeitungs-Engines innerhalb des Graphik-Multiprozessors 1934 umfassen. In mindestens einer Ausführungsform kann, wenn eine Thread-Gruppe mehr Threads als eine Anzahl von Verarbeitungs-Engines innerhalb des Graphik-Multiprozessors 1934 umfasst, die Verarbeitung über aufeinanderfolgende Taktzyklen durchgeführt werden. In mindestens einer Ausführungsform können mehrere Thread-Gruppen nebenläufig auf einem Graphik-Multiprozessor 1934 ausgeführt werden.
  • In mindestens einer Ausführungsform umfasst der Graphik-Multiprozessor 1934 einen internen Cache-Speicher, um Lade- und Speicheroperationen durchzuführen. In mindestens einer Ausführungsform kann der Graphik-Multiprozessor 1934 auf einen internen Cache verzichten und einen Cache-Speicher (z.B. den L1-Cache 1948) innerhalb des Verarbeitungsclusters 1914 verwenden. In mindestens einer Ausführungsform weist jeder Graphik-Multiprozessor 1934 auch Zugriff auf L2-Caches innerhalb von Partitionseinheiten auf (z.B. den Partitionseinheiten 1920A-1920N von 19), die unter allen Verarbeitungsclustern 1914 gemeinsam genutzt werden und zum Übertragen von Daten zwischen Threads verwendet werden können. In mindestens einer Ausführungsform kann der Graphik-Multiprozessor 1934 auch auf einen globalen Speicher außerhalb des Chips zugreifen, der einen oder mehrere lokale Parallelprozessorspeicher und/oder Systemspeicher umfassen kann. In mindestens einer Ausführungsform kann jeder Speicher, der außerhalb der Parallelverarbeitungseinheit 1902 liegt, als globalen Speicher verwendet werden. In mindestens einer Ausführungsform umfasst der Verarbeitungscluster 1914 mehrere Instanzen des Graphik-Multiprozessors 1934, der gemeinsame Anweisungen und Daten austauschen kann, welche in dem Ll-Cache 1948 gespeichert sein können.
  • In mindestens einer Ausführungsform kann jeder Verarbeitungscluster 1914 eine MMU 1945 (Speicherverwaltungseinheit) umfassen, die konfiguriert ist, um virtuelle Adressen auf physikalische Adressen abzubilden. In mindestens einer Ausführungsform können sich eine oder mehrere Instanzen der MMU 1945 innerhalb der Speicherschnittstelle 1918 von 19 befinden. In mindestens einer Ausführungsform umfasst die MMU 1945 einen Satz von Seitentabelleneinträgen (Page Table Entries; PTEs), die verwendet werden, um eine virtuelle Adresse auf eine physikalische Adresse einer Kachel und optional einen Cache-Zeilenindex abzubilden. In mindestens einer Ausführungsform kann die MMU 1945 Adressübersetzungs-Lookaside-Puffer (TLB) oder Caches umfassen, die sich in dem Graphik-Multiprozessor 1934 oder in dem Ll-Cache 1948 oder in dem Verarbeitungscluster 1914 befinden können. In mindestens einer Ausführungsform wird eine physikalische Adresse verarbeitet, um den Oberflächendatenzugriff lokal zu verteilen, um eine effiziente Verschachtelung von Anforderungen zwischen Partitionierungseinheiten zu ermöglichen. In mindestens einer Ausführungsform kann der Cache-Zeilenindex verwendet werden, um zu bestimmen, ob eine Anforderung für eine Cache-Zeile ein Treffer oder ein Nichttreffer ist.
  • In mindestens einer Ausführungsform kann ein Verarbeitungscluster 1914 derart konfiguriert sein, dass jeder Graphik-Multiprozessor 1934 mit einer Textureinheit 1936 zum Durchführen von Texturmappingoperationen, z.B. einem Bestimmen von Texturprobenpositionen, einem Lesen von Texturdaten und einem Filtern von Texturdaten, gekoppelt ist. In mindestens einer Ausführungsform werden Texturdaten aus einem internen Textur-L1-Cache (nicht gezeigt) oder aus einem Ll-Cache innerhalb des Graphik-Multiprozessors 1934 gelesen und bei Bedarf aus einem L2-Cache, einem lokalen Parallelprozessorspeicher oder einem Systemspeicher geholt. In mindestens einer Ausführungsform gibt jeder Graphik-Multiprozessor 1934 verarbeitete Aufgaben an die Datenquerschiene 1940 aus, um die verarbeitete Aufgabe einem anderen Verarbeitungscluster 1914 zur weiteren Verarbeitung bereitzustellen oder um die verarbeitete Aufgabe über die Speicherquerschiene 1916 in einem L2-Cache, lokalen Parallelprozessorspeicher oder Systemspeicher zu speichern. In mindestens einer Ausführungsform ist eine preROP 1942 (Pre-Raster Operations Unit) bzw. Vorrasteroperationseinheit konfiguriert, um Daten von dem Graphik-Multiprozessor 1934 zu empfangen und Daten an ROP-Einheiten zu leiten , welche mit Partitionierungseinheiten wie hier beschrieben angeordnet sein können (z.B. die Partitionierungseinheiten 1920A-1920N von 19). In mindestens einer Ausführungsform kann die PreROP-Einheit 1942 Optimierungen zur Farbmischung durchführen, um Pixelfarbdaten zu organisieren und Adressübersetzungen durchzuführen.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 615 werden hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 615 in dem Graphikverarbeitungscluster 1914 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente von 19A, 19B und/oder 19C benutzt, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren, und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensors identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte im Parallelprozessor 1900 von 19C verwendet..
  • 19D zeigt einen Graphik-Multiprozessor 1934 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform koppelt der Graphik-Multiprozessor 1934 mit dem Pipeline-Verwalter 1932 des Verarbeitungsclusters 1914. In mindestens einer Ausführungsform weist der Graphik-Multiprozessor 1934 eine Ausführungspipeline auf, die einen Anweisungs- bzw. Befehls-Cache 1952, eine Anweisungs- bzw. Befehlseinheit 1954, eine Adressenzuordnungseinheit 1956, eine Registerdatei 1958, einen oder mehrere Vielzweck-Graphikverarbeitungseinheit GPGPU-Kerne 1962 und eine oder mehrere Lade-/Speicher-Einheiten 1966 umfasst, ohne darauf beschränkt zu sein. Die GPGPU-Kerne 1962 und die Lade-/Speicher-Einheiten 1966 sind mit dem Cache-Speicher 1972 und dem gemeinsam genutzten Speicher 1970 über eine Speicher- und Cache-Zwischenverbindung 1968 gekoppelt.
  • In mindestens einer Ausführungsform empfängt der Befehls-Cache 1952 einen Strom von Anweisungen, die von dem Pipeline-Verwalter 1932 auszuführen sind. In mindestens einer Ausführungsform werden Anweisungen in dem Befehls-Cache 1952 zwischengespeichert und zur Ausführung durch die Befehlseinheit 1954 bereitgestellt. In mindestens einer Ausführungsform kann die Befehlseinheit 1954 Anweisungen als Thread-Gruppen (z.B. Warps) senden, wobei jeder Thread der Thread-Gruppe einer anderen Ausführungseinheit innerhalb des GPGPU-Kerns 1962 zugeordnet ist. In mindestens einer Ausführungsform kann eine Anweisung auf einen beliebigen eines lokalen, gemeinsam genutzten oder globalen Adressraums zugreifen, indem sie eine Adresse innerhalb eines einheitlichen Adressraums spezifiziert. In mindestens einer Ausführungsform kann die Adressenzuordnungseinheit 1956 verwendet werden, um Adressen in einem einheitlichen Adressraum in eine eindeutige Speicheradresse zu übersetzen, auf von den Lade-/Speicher-Einheiten 1966 zugegriffen werden kann.
  • In mindestens einer Ausführungsform stellt die Registerdatei 1958 einen Satz von Registern für funktionale Einheiten bzw. Funktionseinheiten des Graphik-Multiprozessors 1934 bereit. In mindestens einer Ausführungsform stellt die Registerdatei 1958 einen temporären Speicher für Operanden bereit, die mit Datenpfaden von Funktionseinheiten (z.B. den GPGPU-Kernen 1962, den Lade-/Speicher-Einheiten 1966) des Graphik-Multiprozessors 1934 verbunden sind. In mindestens einer Ausführungsform ist die Registerdatei 1958 derart auf jede der Funktionseinheiten aufgeteilt, dass jeder Funktionseinheit ein dedizierter Abschnitt der Registerdatei 1958 zugeordnet ist. In mindestens einer Ausführungsform ist die Registerdatei 1958 auf zwischen verschiedenen Ketten bzw. Warps aufgeteilt, die von dem den Graphik-Multiprozessor 1934 ausgeführt werden.
  • In mindestens einer Ausführungsform können die GPGPU-Kerne 1962 jeweils Gleitkommaeinheiten (FPUs) und/oder Ganzzahlarithmetik-Logikeinheiten (ALUs) umfassen, die zum Ausführen von Anweisungen des Graphik-Multiprozessors 1934 verwendet werden. Die GPGPU-Kerne 1962 können in der Architektur ähnlich sein oder sich in der Architektur unterscheiden. In mindestens einer Ausführungsform umfasst ein erster Abschnitt der GPGPU-Kerne 1962 eine FPU einfacher Genauigkeit und eine Ganzzahl-ALU, während ein zweiter Abschnitt der GPGPU-Kerne eine FPU doppelter Genauigkeit umfasst. In mindestens einer Ausführungsform können FPUs den IEEE 754-1198-Standard für Gleitkommaarithmetik implementieren oder eine Gleitkommaarithmetik mit variabler Genauigkeit ermöglichen. In mindestens einer Ausführungsform kann der Graphik-Multiprozessor 1934 zusätzlich eine oder mehrere Einheiten mit fester Funktion oder Spezialfunktion zum Durchführen bestimmter Funktionen wie beispielsweise Kopierrechteck- oder Pixelblendingoperationen umfassen. In mindestens einer Ausführungsform kann bzw. können ein oder mehrere GPGPU-Kerne auch Logik für eine feste oder spezielle Funktion umfassen.
  • In mindestens einer Ausführungsform umfassen die GPGPU-Kerne 1962 eine SIMD-Logik, die in der Lage ist, eine einzelne Anweisung auf bzw. für mehrere Datensätze durchzuführen. In mindestens einer Ausführungsform können GPGPU-Kerne 1962 SIMD4-, SIMD8- und SIMD16-Anweisungen physikalisch ausführen und SIMD1-, SIMD2- und SIMD32-Anweisungen logisch ausführen. In mindestens einer Ausführungsform können SIMD-Anweisungen für GPGPU-Cores zur Kompilierungszeit von einem Shader-Compiler generiert oder automatisch bei dem Ausführen von Programmen erzeugt werden, die für Single Program, Multiple Data (SPMD) oder SIMT-Architekturen geschrieben und kompiliert wurden. In mindestens einer Ausführungsform können mehrere Threads eines für ein SIMT-Ausführungsmodell konfigurierten Programms über eine einzelne SIMD-Anweisung ausgeführt werden. Beispielsweise können in mindestens einer Ausführungsform acht SIMT-Threads, die gleiche oder ähnliche Operationen durchführen, über eine einzige SIMD8-Logikeinheit parallel ausgeführt werden.
  • In mindestens einer Ausführungsform ist die Speicher- und Cache-Zwischenverbindung 1968 ein Zwischenverbindungsnetzwerk, das jede Funktionseinheit des Graphik-Multiprozessors 1934 mit der Registerdatei 1958 und dem gemeinsamen Speicher 1970 verbindet. In mindestens einer Ausführungsform ist die Speicher- und Cache-Zwischenverbindung 1968 eine Querschienen-Zwischenverbindung, die der Lade-/Speicher-Einheit 1966 ermöglicht, Lade- und Speicheroperationen zwischen dem gemeinsamen Speicher 1970 und der Registerdatei 1958 zu implementieren. In mindestens einer Ausführungsform kann die Registerdatei 1958 mit der gleichen Frequenz wie die GPGPU-Kerne 1962 arbeiten, so dass die Datenübertragung zwischen den GPGPU-Kernen 1962 und der Registerdatei 1958 eine sehr geringe Latenzzeit aufweist. In mindestens einer Ausführungsform kann der gemeinsame Speicher 1970 verwendet werden, um die Kommunikation zwischen Threads zu ermöglichen, die auf Funktionseinheiten innerhalb des Graphik-Multiprozessors 1934 ausgeführt werden. In mindestens einer Ausführungsform kann der Cache-Speicher 1972 beispielsweise als ein Datencache verwendet werden, um Texturdaten zwischenzuspeichern, die zwischen Funktionseinheiten und der Textureinheit 1936 ausgetauscht werden. In mindestens einer Ausführungsform kann der gemeinsam genutzte Speicher 1970 auch als ein programmverwalteter Cache verwendet werden. In mindestens einer Ausführungsform können Threads, die auf GPGPU-Kernen 1962 ausgeführt werden, Daten innerhalb des gemeinsam genutzten Speichers programmatisch zusätzlich zu automatisch zwischengespeicherten Daten speichern, die innerhalb des Cache-Speichers 1972 gespeichert sind.
  • In mindestens einer Ausführungsform ist ein Parallelprozessor oder eine GPGPU, wie hier beschrieben, kommunikativ mit Host/Prozessor-Kernen gekoppelt, um Graphikoperationen, Maschinenlernoperationen, Musteranalyseoperationen und verschiedene allgemeine GPU (GPGPU)-Funktionen zu beschleunigen. In mindestens einer Ausführungsform kann die GPU kommunikativ mit den Host/Prozessor-Kernen über einen Bus oder eine andere Zwischenverbindung (z.B. eine Hochgeschwindigkeits-Zwischenverbindung wie PCIe oder NVLink) gekoppelt sein. In mindestens einer Ausführungsform kann die GPU in bzw. auf demselben Gehäuse oder Chip wie die Kerne integriert und kommunikativ mit Kernen über einen internen Prozessorbus/eine interne Zwischenverbindung (d.h. intern zu dem Gehäuse oder dem Chip) gekoppelt sein. In mindestens einer Ausführungsform können Prozessorkerne unabhängig davon, wie die GPU verbunden ist, der GPU Arbeit in Form von Sequenzen von Befehlen/Anweisungen zuweisen, die in einem Arbeitsdeskriptor umfasst sind. In mindestens einer Ausführungsform verwendet die GPU dann dedizierte Schaltkreise/Logik zum effizienten Verarbeiten dieser Befehle/Anweisungen.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 615 sind hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 615 in dem Graphik-Multiprozessor 1934 verwendet werden, um Operationen zu inferenzieren oder vorherzusagen, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente von 19D benutzt, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren, und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte im Parallelprozessor 1900 von 19A verwendet. In mindestens einer Ausführungsform wird die Merkmalskarte in dem Graphikmultiprozessor 1934 von 19D verwendet.
  • 20 veranschaulicht ein Multi-GPU-Computersystem 2000 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das Multi-GPU-Computersystem 2000 einen Prozessor 2002 umfassen, der über einen Host-Schnittstellen-Schalter 2004 mit mehreren Allzweck-Graphikverarbeitungseinheiten (GPGPUs) 2006A-D gekoppelt ist. In mindestens einer Ausführungsform ist der Host-Schnittstellen-Schalter 2004 eine PCI-Express-Schaltervorrichtung, die den Prozessor 2002 an einen PCI-Express-Bus koppelt, über welchen der Prozessor 2002 mit den GPGPUs 2006A-D kommunizieren kann. In mindestens einer Ausführungsform können sich die GPGPUs 2006A-D können sich über eine Anzahl von Hochgeschwindigkeits-Punkt-zu-Punkt-GPU-zu-GPU-Verbindungen 2016 zwischenverbinden. In mindestens einer Ausführungsform verbinden sich die P2P-Verbindungen 2016 über eine dedizierte GPU-Verbindung mit jeder der GPGPUs 2006A-D. In mindestens einer Ausführungsform ermöglichen die P2P-GPU-Verbindungen 2016 eine direkte Kommunikation zwischen jeder der GPGPUs 2006A-D, ohne eine Kommunikation über den Host-Schnittstellenbus 2004 zu erfordern, mit welchem der Prozessor 2002 verbunden ist. In mindestens einer Ausführungsform bleibt mit GPU-zu-GPU-Datenaufkommen, das auf die P2P-GPU-Verbindungen 2016 gerichtet ist, der Host-Schnittstellenbus 2004 für Systemspeicherzugriff oder zur Kommunikation mit anderen Instanzen des Multi-GPU-Computersystems 2000, beispielsweise, über eine oder mehrere Netzwerkvorrichtung(en) verfügbar. Während in mindestens einer Ausführungsform die GPGPUs 2006A-D über den Host-Schnittstellen-Schalter 2004 mit dem Prozessor 2002 verbinden, umfasst in mindestens einer Ausführungsform der Prozessor 2002 direkte Unterstützung für die P2P-GPU-Verbindungen 2016 und kann direkt mit den GPGPUs 2006A-D verbunden werden.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 615 werden hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 615 in dem Multi-GPU-Computersystem 2000 verwendet werden, um Operationen zu inferenzieren oder vorherzusagen, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente 21 benutzt, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren, und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, gefaltete Modi des ersten Aktivierungstensor identifizieren, einen zweiten Aktivierungstensor konstruieren, und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte im Parallelprozessor 1900 von 19A verwendet. In mindestens einer Ausführungsform wird die Merkmalskarte in dem Graphikmultiprozessor 2100 von 21 verwendet.
  • 21 ist ein Blockdiagramm eines Graphikprozessors 2100 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform umfasst der Graphikprozessor 2100 eine Ringzwischenverbindung 2102, ein Pipeline-Frontend 2104, eine Medien-Engine 2137 und Graphikkerne 2180A-2180N. In mindestens einer Ausführungsform koppelt die Ringzwischenverbindung 2102 den Graphikprozessor 2100 an andere Verarbeitungseinheiten, einschließlich andere Graphikprozessoren oder einen oder mehrere universelle Prozessorkerne. In mindestens einer Ausführungsform ist der Graphikprozessor 2100 einer von vielen Prozessoren, die innerhalb eines Multicore-Verarbeitungssystems integriert sind.
  • In mindestens einer Ausführungsform empfängt der Graphikprozessor 2100 Stapel von Befehlen über die Ringzwischenverbindung 2102. In mindestens einer Ausführungsform werden eingehende Befehle von einem Befehlsstreamer 2103 in dem Pipeline-Frontend 2104 interpretiert. In mindestens einer Ausführungsform umfasst der Graphikprozessor 2100 eine skalierbare Ausführungslogik zur Durchführung von 3D-Geometrieverarbeitung und Medienverarbeitung über den/die Graphikkern(e) 2180A-2180N. In mindestens einer Ausführungsform liefert der Befehlsstreamer 2103 für 3D-Geometrieverarbeitungsbefehle Befehle an die Geometrie-Pipeline 2136. In mindestens einer Ausführungsform liefert der Befehlsstreamer 2103 für mindestens einige Befehle zur Medienverarbeitung Befehle an ein Video-Frontend 2134, das mit einer Medien-Engine 2137 gekoppelt ist. In mindestens einer Ausführungsform umfasst die Medien-Engine 2137 eine Videoqualitäts-Engine (VQE) 2130 zur Video- und Bild-Nachbearbeitung und eine Multiformat-Codier-/Decodier-Engine (MFX) 2133 zur hardwarebeschleunigten Mediendatencodierung und -decodierung. In mindestens einer Ausführungsform erzeugen die Geometrie-Pipeline 2136 und die Medien-Engine 2137 jeweils Ausführungsthreads für Thread-Ausführungsressourcen, die von mindestens einem Graphikkern 2180A bereitgestellt werden.
  • In mindestens einer Ausführungsform umfasst der Graphikprozessor 2100 skalierbare Thread-Ausführungsressourcen mit modularen Kernen 2180A-2180N (manchmal als Kern-Slices bezeichnet), die jeweils mehrere Teilkerne 2150A-550N, 2160A-2160N (manchmal als Kern-Subslices bezeichnet) aufweisen. In mindestens einer Ausführungsform kann der Graphikprozessor 2100 eine beliebige Anzahl von Graphikkernen 2180A bis 2180N aufweisen. In mindestens einer Ausführungsform umfasst der Graphikprozessor 2100 einen Graphikkern 2180A mit mindestens einem ersten Teilkern 2150A und einem zweiten Teilkern 2160A. In mindestens einer Ausführungsform ist der Graphikprozessor 2100 ein stromsparender Prozessor mit einem einzigen Teilkern (z.B. 2150A). In mindestens einer Ausführungsform umfasst der Graphikprozessor 2100 mehrere Graphikkerne 2180A-2180N, die jeweils einen Satz von ersten Teilkernen 2150A-2150N und einen Satz von zweiten Teilkernen 2160A-2160N umfassen. In mindestens einer Ausführungsform umfasst jeder Teilkern in den ersten Teilkernen 2150A-2150N mindestens einen ersten Satz von Ausführungseinheiten 2152A-2152N und Medien/Textur-Abtastern 2154A-2154N. In mindestens einer Ausführungsform umfasst jeder Teilkern in den zweiten Teilkernen 2160A-2160N mindestens einen zweiten Satz von Ausführungseinheiten 2162A-2162N und Abtastern 2164A-2164N. In mindestens einer Ausführungsform teilt sich jeder Teilkern 2150A-2150N, 2160A-2160N einen Satz gemeinsamer Ressourcen 2170A-2170N. In mindestens einer Ausführungsform umfassen gemeinsam genutzte Ressourcen gemeinsam genutzten Cache-Speicher und Pixeloperationslogik.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 615 werden hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 615 in dem Graphikprozessor 2100 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 21 gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, um einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, gefaltete Modi des ersten Aktivierungstensor identifizieren, einen zweiten Aktivierungstensor konstruieren, und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte in dem Graphikmultiprozessor 2100 von 21 verwendet.
  • 22 ist ein Blockdiagramm, das eine Mikroarchitektur für einen Prozessor 2200 veranschaulicht, der Logikschaltungen zum Ausführen von Anweisungen umfassen kann, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozessor 2200 Anweisungen ausführen, die x86-Anweisungen, ARM-Anweisungen, speziellen Anweisungen für anwendungsspezifische integrierte Schaltungen (ASICs) usw. umfassen können. In mindestens einer Ausführungsform kann der Prozessor 2200 Register umfassen zum Speichern gepackter Daten umfassen, wie beispielsweise 64-Bit breite MMXTM-Register in Mikroprozessoren, die mit MMX-Technologie der Intel Corporation aus Santa Clara, Kalifornien, ausgestattet sind. In mindestens einer Ausführungsform können MMX-Register, die sowohl in Ganzzahl- als auch in Gleitkomma-Form verfügbar sind, mit gepackten Datenelementen arbeiten, die Einzelanweisungs-Mehrfachdaten („SIMD“) und Streaming-SIMD-Erweiterungen („SSE“) begleiten. In mindestens einer Ausführungsform können 128-Bit breite XMM-Register, die sich auf SSE2, SSE3, SSE4, AVX oder darüber hinaus (allgemein als „SSEx“ bezeichnet) Technologie beziehen, derartige gepackte Datenoperanden halten. In mindestens einer Ausführungsform können Prozessoren 2210 Anweisungen ausführen, um maschinelles Lernen oder Algorithmen für tiefes Lernen, Training oder Inferenzierung zu beschleunigen.
  • In mindestens einer Ausführungsform umfasst der Prozessor 2200 ein In-Order-Frontend („Frontend“) 2201, um auszuführende Anweisungen zu holen und Anweisungen vorzubereiten, die später in der Prozessorpipeline zu verwenden sind. In mindestens einer Ausführungsform kann das Frontend 2201 mehrere Einheiten umfassen. In mindestens einer Ausführungsform holt ein Anweisungs-Vorabrufer bzw. - Prefetcher 2226 Anweisungen aus dem Speicher und leitet Anweisungen an einen Anweisungsdecodierer 2228 weiter, der wiederum Anweisungen decodiert oder interpretiert. Beispielsweise decodiert in mindestens einer Ausführungsform der Anweisungsdecodierer 2228 eine empfangene Anweisung in eine oder mehrere Operationen, die als „Mikroanweisungen“ oder „Mikrooperationen“ bezeichnet werden (die auch als „Mikro-Ops“ oder „Uops“ bezeichnet werden), die eine Maschine ausführen kann. In mindestens einer Ausführungsform parst bzw. analysiert der Anweisungsdecodierer 2228 eine Anweisung in einen Opcode und entsprechende Daten und Steuerfelder, die von der Mikroarchitektur verwendet werden können, um Operationen gemäß mindestens einer Ausführungsform durchzuführen. In mindestens einer Ausführungsform kann ein Trace- bzw. Spur-Cache 2230 decodierte Uops zu programmgeordneten Sequenzen oder Spuren in einer Uop-Warteschlange 2234 zur Ausführung zusammenstellen. In mindestens einer Ausführungsform stellt dann, wenn der Trace-Cache 2230 auf eine komplexe Anweisung trifft, ein Mikrocode-ROM 2232 die für den Abschluss der Operation erforderlichen Uops bereit.
  • In mindestens einer Ausführungsform können einige Anweisungen in eine einzige Mikro-Op umgewandelt werden, während andere mehrere Mikro-Operationen benötigen, um die volle Operation abzuschließen. In mindestens einer Ausführungsform kann dann, wenn mehr als vier Mikro-Ops benötigt werden, um eine Anweisung abzuschließen, der Anweisungsdecodierer 2228 auf den Mikrocode-ROM 2232 zugreifen, um die Anweisung auszuführen. In mindestens einer Ausführungsform kann eine Anweisung zur Verarbeitung an dem Anweisungsdecodierer 2221 in eine kleine Anzahl von Mikro-Ops decodiert werden. In mindestens einer Ausführungsform kann eine Anweisung in dem Mikrocode ROM 2232 gespeichert werden, falls eine Anzahl von Mikro-Operationen zur Durchführung des Betriebs erforderlich sein sollte. In mindestens einer Ausführungsform bezieht sich der Trace-Cache 2230 auf eine programmierbare Eintrittspunkt-Logikanordnung („PLA“), um einen korrekten Mikroanweisungszeiger zum Lesen von Mikrocodesequenzen zu bestimmen, um eine oder mehrere Anweisungen von dem Mikrocode ROM 2232 abzuschließen, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beendet der Mikrocode-ROM 2232 die Sequenzierung von Mikro-Ops für eine Anweisung, wobei das Frontend 2201 der Maschine das Abholen von Mikro-Ops aus dem Trace-Cache 2230 wieder aufnehmen kann.
  • In mindestens einer Ausführungsform kann eine Außer-Betrieb bzw. Out-of-Order-Ausführungs-Engine („Out-of-Order-Engine“) 2203 Anweisungen zur Ausführung vorbereiten. In mindestens einer Ausführungsform weist die Out-of-Order-Ausführungslogik eine Anzahl von Puffern auf, um den Fluss von Anweisungen zu glätten und neu zu ordnen, um die Leistung zu optimieren, während sie eine Pipeline hinuntergehen und zur Ausführung eingeplant werden. Die Out-of-Order-Ausführungs-Engine 2203 umfasst, ohne darauf beschränkt zu sein, einen Allokator/Register-Umbenenner 2240, eine Speicher-Uop-Warteschlange 2242, eine Ganzzahl/Gleitkomma-Uop-Warteschlange 2244, einen Speicher-Planer 2246, einen Schnell-Planer 2202, einen Langsam/Universal-Gleitkomma-Planer („Langsam/Universal-FP-Planer“) 2204 und einen einfachen Gleitkomma-Planer („Einfach-FP-Planer“) 2206. In mindestens einer Ausführungsform werden der Schnell-Planer 2202, der Langsam/Universal-Gleitkomma-Planer 2204 und der Einfach-Gleitkomma-Planer 2206 hier auch kollektiv als „Uop-Planer 2202, 2204, 2206“ bezeichnet. Der Allokator/Register-Umbenenner 2240 allokiert Engine- bzw. Maschinenpuffer und Ressourcen, die jeder Uop zur Ausführung benötigt. In mindestens einer Ausführungsform benennt der Allokator/Register-Umbenenner 2240 Logikregister auf Einträge in einer Registerdatei um. In mindestens einer Ausführungsform allokiert der Allokator/Register-Umbenenner 2240 auch einen Eintrag für jeden Uop in einer von zwei Uop-Warteschlangen, der Speicher-Uop-Warteschlange 2242 für Speicheroperationen und der Ganzzahl/Gleitkomma-Uop-Warteschlange 2244 für Nichtspeicher-operationen, vor dem Speicher-Planer 2246 und den Uop-Planern 2202, 2204, 2206. In mindestens einer Ausführungsform bestimmen die Uop-Planer 2202, 2204, 2206, wann ein Uop ausführbereit ist, basierend auf der Bereitschaft ihrer abhängigen Eingangsregister-Operandenquellen und der Verfügbarkeit von Ausführungsressourcen, die Uops benötigen, um ihre Operation abzuschließen. In mindestens einer Ausführungsform kann der Schnell-Planer 2202 von mindestens einer Ausführungsform auf jeder Hälfte eines Haupttaktzyklus planen, während der Langsam/Universal-Gleitkomma-Planer 2204 und der Einfach-Gleitkomma-Planer 2206 einmal pro Hauptprozessortaktzyklus planen können. In mindestens einer Ausführungsform arbitrieren die Uop-Planer 2202, 2204, 2206 für Sende-Ports, um Uops zur Ausführung einzuplanen.
  • In mindestens einer Ausführungsform umfasst ein Ausführungsblock 2211, ohne darauf beschränkt zu sein, ein Ganzzahl-Registerdatei/Umgehungs-Netzwerk 2208, ein Gleitkomma-Registerdatei/Umgehungsnetzwerk („FP-Registerdatei/Umgehungs-netzwerk“) 2210, Adresserzeugungseinheiten („AGUs“) 2212 und 2214, schnelle Arithmetiklogikeinheiten (ALUs) („schnelle ALUs“) 2216 und 2218, eine langsame Arithmetiklogikeinheit („langsame ALU“) 2212, eine Gleitkomma-ALU („FP“) 2222 und eine Gleitkomma-Bewegungseinheit („FP move“) 2224. In mindestens einer Ausführungsform werden das Ganzzahl-Registerdatei/Umgehungs-Netzwerk 2208 und das Gleitkomma-Registerdatei/Umgehungs-Netzwerk 2210 hier auch als „Registerdateien 2208, 2210“ bezeichnet. In mindestens einer Ausführungsform werden die AGUSs 2212 und 2214, die schnellen ALUs 2216 und 2218, die langsame ALU 2212, die Gleitkomma-ALU 2222 und die Gleitkomma-Bewegungseinheit 2224 auch als „Ausführungseinheiten 2212, 2214, 2216, 2218, 2212, 2222 und 2224“ bezeichnet. In mindestens einer Ausführungsform kann der Ausführungsblock 2211, ohne darauf beschränkt zu sein, eine beliebige Anzahl (einschließlich Null) und Art von Registerdateien, Umgehungsnetzwerken, Adresserzeugungseinheiten und Ausführungseinheiten in beliebiger Kombination umfassen.
  • In mindestens einer Ausführungsform können Registerdateien 2208, 2210 zwischen Uop-Planern 2202, 2204, 2206 und Ausführungseinheiten 2212, 2214, 2216, 2218, 2212, 2222 und 2224 angeordnet sein. In mindestens einer Ausführungsform führt das Ganzzahl-Registerdatei/Umgehungs-Netzwerk 2208 Ganzzahl-Operationen aus. In mindestens einer Ausführungsform führt das Gleitkomma-Registerdatei/Umgehungs-Netzwerk 2210 Gleitkommaoperationen durch. In mindestens einer Ausführungsform kann jedes der Registerdateien 2208, 2210, ohne darauf beschränkt zu sein, ein Umgehungs-Netzwerk umfassen, das gerade abgeschlossene Ergebnisse, die noch nicht in die Registerdatei geschrieben wurden, umgehen oder an neue abhängige Uops weiterleiten kann. In mindestens einer Ausführungsform können Registerdateien 2208, 2210 Daten miteinander kommunizieren. In mindestens einer Ausführungsform kann das Ganzzahl-Registerdatei/Umgehungs-Netzwerk 2208, ohne darauf beschränkt zu sein, zwei separate Registerdateien, eine Registerdatei für 32 Datenbits niedriger Ordnung und eine zweite Registerdatei für 32 Datenbits hoher Ordnung, umfassen. In mindestens einer Ausführungsform kann das Gleitkomma-Registerdatei/Umgehungs-Netzwerk 2210, ohne darauf beschränkt zu sein, 128-Bit breite Einträge umfassen, weil Gleitkommaanweisungen typischerweise Operanden von 64 bis 128 Bit Breite aufweisen.
  • In mindestens einer Ausführungsform können die Ausführungseinheiten 2212, 2214, 2216, 2218, 2220, 2222, 2224 Anweisungen ausführen. In mindestens einer Ausführungsform speichern Registerdateien 2308, 2310 Ganzzahl- und Gleitkomma-Daten-Operandenwerte, die Mikroanweisungen ausführen müssen. In mindestens einer Ausführungsform kann der Prozessor 2200, ohne darauf beschränkt zu sein, eine beliebige Anzahl und Kombination von Ausführungseinheiten 2212, 2214, 2216, 2218, 2220, 2222, 2224 umfassen. In mindestens einer Ausführungsform können die Gleitkomma-ALU 2222 und die Gleitkomma-Bewegungseinheit 2224 Gleitkomma-, MMX-, SIMD-, AVX- und SSE-Operationen oder andere Operationen ausführen, einschließlich spezieller Anweisungen für maschinelles Lernen. In mindestens einer Ausführungsform kann die Gleitkomma ALU 2222, ohne darauf beschränkt zu sein, einen 64-Bit durch 64-Bit-Gleitkommateiler umfassen, um Divisions-, Quadratwurzel- und Rest-Mikrooperationen auszuführen. In mindestens einer Ausführungsform können Anweisungen, die einen Gleitkommawert umfassen, von Gleitkomma-Hardware gehandhabt werden. In mindestens einer Ausführungsform können ALU-Operationen an schnelle ALUs 2216, 2218 übergeben werden. In mindestens einer Ausführungsform können schnelle ALUS 2216, 2218 schnelle Operationen mit einer effektiven Latenz von einem halben Taktzyklus ausführen. In mindestens einer Ausführungsform gehen die komplexesten Ganzzahl-Operationen auf die langsame ALU 2212 über, da die langsame ALU 2212, ohne darauf beschränkt zu sein, eine Ganzzahl-Ausführungshardware für Operationen mit langer Latenz umfassen kann, wie beispielsweise ein Multiplikator, ein Schieber, Flag- bzw. Kennzeichenbit-Logik und Zweigverarbeitung. In mindestens einer Ausführungsform können Speicher-Lade-/Speicher-Operationen von AGUS 2212, 2214 ausgeführt werden. In mindestens einer Ausführungsform können die schnelle ALU 2216, die schnelle ALU 2218 und die langsame ALU 2212 Ganzzahl-Operationen an 64-Bit-Datenoperanden durchführen. In mindestens einer Ausführungsform können die schnelle ALU 2216, die schnelle ALU 2218 und die langsame ALU 2220 implementiert sein, um eine Mehrzahl von Datenbitgrößen einschließlich sechzehn, zweiunddreißig, 128, 326 usw. zu unterstützen. In mindestens einer Ausführungsform können die Gleitkomma-ALU 2222 und die Gleitkomma-Bewegungseinheit 2224 implementiert sein, um einen Bereich von Operanden mit Bits unterschiedlicher Breite zu unterstützen. In mindestens einer Ausführungsform können die Gleitkomma-ALU 2222 und die Gleitkomma-Bewegungseinheit 2224 auf 128-Bit breite gepackte Datenoperanden in Verbindung mit SIMD- und Multimedia-Anweisungen arbeiten.
  • In mindestens einer Ausführungsform versenden die Uop-Planer 2202, 2204, 2206 abhängige Operationen, bevor die Ausführung einer Elternlast beendet ist. In mindestens einer Ausführungsform kann, da Uops spekulativ geplant und in dem Prozessor 2200 ausgeführt werden können, der Prozessor 2200 auch eine Logik zur Handhabung von Speicherfehlzugriffen umfassen. In mindestens einer Ausführungsform kann es dann, wenn eine Datenlast in einem Datencache fehlt, abhängige Operationen im Lauf der Pipeline geben, die einen Planer mit vorübergehend falschen Daten zurückgelassen haben. In mindestens einer Ausführungsform verfolgt ein Wiedergabemechanismus Anweisungen, die falsche Daten verwenden, und führt sie erneut aus. In mindestens einer Ausführungsform müssen abhängige Operationen möglicherweise wiedergegeben werden und unabhängige Operationen können abgeschlossen werden. In mindestens einer Ausführungsform können Planer und ein Wiedergabemechanismus von mindestens einer Ausführungsform eines Prozessors ebenfalls ausgelegt sein, um Anweisungssequenzen für Textkettenvergleichsoperationen abzufangen.
  • In mindestens einer Ausführungsform kann sich der Begriff „Register“ auf On-Board-Prozessorspeicherplätze beziehen, die als Teil von Anweisungen zum Identifizieren von Operanden verwendet werden können. In mindestens einer Ausführungsform können Register diejenigen sein, die (aus der Sicht eines Programmierers) von außerhalb des Prozessors verwendbar sind. In mindestens einer Ausführungsform sind Register möglicherweise nicht auf einen bestimmten Schaltungstyp beschränkt. Vielmehr kann in mindestens einer Ausführungsform ein Register Daten speichern, Daten bereitstellen und die hier beschriebenen Funktionen ausführen. In mindestens einer Ausführungsform können hier beschriebene Register durch Schaltkreise innerhalb eines Prozessors unter Verwendung einer beliebigen Anzahl verschiedener Techniken implementiert sein, wie beispielsweise dedizierte physikalische Register, dynamisch allokierte physikalische Register, die Registerumbenennung verwenden, Kombinationen von dedizierten und dynamisch zugeordneten physikalischen Registern usw. In mindestens einer Ausführungsform speichern Ganzzahlregister 32-Bit-Ganzzahldaten. Eine Registerdatei mindestens einer Ausführungsform enthält darüber hinaus acht Multimedia-SIMD-Register für gepackte Daten.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 615 sind hier nachstehend in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte oder die gesamte Inferenzierungs- und/oder Trainingslogik 615 in einem EXE-Block 2211 und anderem Speicher oder Registern integriert sein, die gezeigt oder nicht gezeigt sind. Beispielsweise können in mindestens einer Ausführungsformen hier beschriebene Trainings- und/oder Inferenzierungstechniken eine oder mehrere der in dem EXE-Block 2211 veranschaulichten ALUs verwenden. Außerdem können Gewichtungsparameter in On-Chip- oder Off-Chip-Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert sein, die ALUs des EXE-Blocks 2211 konfigurieren, um einen oder mehrere Algorithmen maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder hier beschriebene Trainingstechniken auszuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 21 gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren, und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, gefaltete Modi des ersten Aktivierungstensor identifizieren, einen zweiten Aktivierungstensor konstruieren, und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte im Parallelprozessor 1900 von 19A verwendet. In mindestens einer Ausführungsform wird die Merkmalskarte in dem Graphikmultiprozessor 2100 von 21 verwendet.
  • 23 veranschaulicht einen tief lernenden bzw. Deep-Learning-Anwendungsprozessor 2300 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform verwendet der Deep-Learning-Anwendungsprozessor 2300 Anweisungen, die dann, wenn sie durch den Deep-Learning-Anwendungsprozessor 2300 ausgeführt werden, bewirken, dass der Deep-Learning-Anwendungsprozessor 2300 einige oder alle der in dieser Offenbarung beschriebenen Prozesse und Techniken ausführt. In mindestens einer Ausführungsform ist der Deep-Learning-Anwendungsprozessor 2300 eine anwendungsspezifische integrierte Schaltung (ASIC). In mindestens einer Ausführungsform führt der Anwendungsprozessor 2300 Matrix-Multiplikationsoperationen entweder „fest verdrahtet“ in Hardware oder als ein Ergebnis der Durchführung einer oder mehrerer Anweisungen oder beides aus. In mindestens einer Ausführungsform umfasst der Deep-Learning-Anwendungsprozessor 2300, ohne darauf beschränkt zu sein, Verarbeitungscluster 2310(1)-2310(12), Inter-Chip-Verbindungen („ICLs“) 2312(1)-2312(12), Inter-Chip-Controllers („ICCs“) 2330(1)-2330(2), Speicher mit hoher Bandbreite einer zweiten Generation („HBM2“) 2340(1)-2340(4), Speicher-Controllers („Mem Ctrlrs“) 2342(1)-2342(4), eine physikalische Schicht von Speicher mit hoher Bandbreite („HBM PHY“) 2344(1)-2344(4), eine Verwaltungs-Controller-Zentralverarbeitungseinheit („Verwaltungs-Controller-CPU“) 2350, eine serielle Peripheriegeräte-Schnittstelle, eine integrierte Inter-Schaltung und einen Allzweck-Eingabe-/Ausgabeblock („SPI, I2C, GPIO“) 2360, eine Peripheriekomponenten-Zwischenverbindungs-Express-Controller und einen Direktspeicherzugriffsblock („PCIe-Controller und DMA“) 2370, sowie einen sechzehnkanaligen Peripheriekomponenten-Zwischenverbindungs-Express-Port („PCIe x 16“ Port) 2380.
  • In mindestens einer Ausführungsform können Verarbeitungscluster 2310 Deep-Learning-Operationen durchführen, einschließlich Inferenz- oder Vorhersage-Operationen basierend auf Gewichtungsparametern, die mit einer oder mehreren Trainingstechniken berechnet wurden, einschließlich der hier beschriebenen. In mindestens einer Ausführungsform kann jeder Verarbeitungscluster 2310, ohne darauf beschränkt zu sein, eine beliebige Anzahl und Art von Prozessoren umfassen. In mindestens einer Ausführungsform kann der Deep-Learning-Anwendungsprozessor 2300 eine beliebige Anzahl und Art von Verarbeitungsclustern 2300 umfassen. In mindestens einer Ausführungsform sind Inter-Chip-Verbindungen 2312 bidirektional. In mindestens einer Ausführungsform ermöglichen Inter-Chip-Verbindungen 2312 und Inter-Chip-Controllers 2330 mehreren Deep-Learning-Anwendungs-Prozessoren 2300, Informationen auszutauschen, einschließlich von Aktivierungsinformationen, die aus der Ausführung eines oder mehrerer Algorithmen maschinellen Lernens resultieren, die in einem oder mehreren neuronalen Netzwerken verkörpert sind. In mindestens einer Ausführungsform kann der Deep-Learning-Anwendungsprozessor 2300 eine beliebige Anzahl (einschließlich Null) und Art von ICLs 2312 und ICCs 2330 umfassen.
  • In mindestens einer Ausführungsform stellen die HBM2s 2340 insgesamt 32 Gigabyte (GB) Speicher zur Verfügung. Der HBM2 2340(i) ist sowohl der Speichersteuerung 2342(i) als auch der HBM PHY 2344(i) zugeordnet. In mindestens einer Ausführungsform kann eine beliebige Anzahl von HBM2s 2340 eine beliebige Art und Gesamtmenge an Speicher mit hoher Bandbreite bereitstellen und kann einer beliebigen Anzahl (einschließlich Null) und Art von Speicher-Controllern 2342 und HBM PHYs 2344 zugeordnet sein. In mindestens einer Ausführungsform können SPI, I2C, GPIO 2360, PCIe-Controller und DMA 2370 und/oder PCIe 2380 durch eine beliebige Anzahl und Art von Blöcken ersetzt sein, die eine beliebige Anzahl und Art von Kommunikationsstandards in beliebiger technisch machbaren Weise ermöglichen.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten hinsichtlich der Inferenzierungs- und/oder Trainingslogik 615 sind hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell maschinellen Lernens, wie beispielsweise ein neuronales Netzwerk, zu trainieren, Informationen vorherzusagen oder zu inferenzieren, die dem Deep-Learning-Anwendungsprozessor 2300 bereitgestellt werden. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor 2300 verwendet, um Informationen basierend auf einem trainierten Modell maschinellen Lernens (z.B. einem neuronalen Netzwerk), das von einem anderen Prozessor oder System oder von dem Deep-Learning-Anwendungsprozessor 2300 trainiert wurde, abzuleiten oder vorherzusagen. In mindestens einer Ausführungsform kann der Prozessor 2300 verwendet werden, um einen oder mehrere der hier beschriebenen Anwendungsfälle neuronaler Netzwerke durchzuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 23 gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte in dem Anwendungsprozessor für tiefes Lernen 2300 von 23 verwendet.
  • 24 ist ein Blockdiagramm eines neuromorphen Prozessors 2400 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der neuromorphe Prozessor 2400 ein oder mehrere Eingaben von Quellen empfangen, die zu dem neuromorphen Prozessor 2400 extern sind. In mindestens einer Ausführungsform können diese Eingaben an ein oder mehrere Neuronen 2402 innerhalb des neuromorphen Prozessors 2400 übertragen werden. In mindestens einer Ausführungsform können die Neuronen 2402 und ihre Komponenten unter Verwendung von Schaltungen oder Logik, einschließlich einer oder mehrerer Arithmetik-Logikeinheiten (ALUs), implementiert sein. In mindestens einer Ausführungsform kann der neuromorphe Prozessor 2400, ohne darauf beschränkt zu sein, Tausende oder Millionen von Instanzen von Neuronen 2402 umfassen, wobei jedoch eine beliebige Anzahl von Neuronen 2402 verwendet werden kann. In mindestens einer Ausführungsform kann jede Instanz des Neurons 2402 einen Neuroneneingang 2404 und einen Neuronenausgang 2406 umfassen. In mindestens einer Ausführungsform können Neuronen 2402 Ausgaben erzeugen, die Eingänge anderer Instanzen der Neuronen 2402 übertragen werden können. Beispielsweise können in mindestens einer Ausführungsform die Neuronen-Eingänge 2404 und die NeuronenAusgänge 2406 über Synapsen 2408 miteinander verbunden sein.
  • In mindestens einer Ausführungsform können die Neuronen 2402 und die Synapsen 2408 derart miteinander verbunden sein, dass der neuromorphe Prozessor 2400 zum Verarbeiten oder Analysieren der von dem neuromorphen Prozessor 2400 empfangenen Informationen eingesetzt wird. In mindestens einer Ausführungsform können die Neuronen 2402 einen Ausgangsimpuls (oder „Feuern“ oder „Spike“) senden, wenn über den Neuroneneingang 2404 empfangenen Eingaben einen Schwellenwert überschreiten. In mindestens einer Ausführungsform können die Neuronen 2402 Signale, die an den Neuroneneingängen 2404 empfangen wurden, summieren oder integrieren. Beispielsweise können in mindestens einer Ausführungsform Neuronen 2402 als lecke Integrations- und Feuerneuronen implementiert sein, wobei dann, wenn eine Summe (als ein „Membranpotential“ bezeichnet) einen Schwellenwert überschreitet, ein Neuron 2402 unter Verwendung einer Übertragungsfunktion, wie beispielsweise einer Sigmoid- oder Schwellenwertfunktion, eine Ausgabe (oder ein „Feuern“) erzeugen kann. In mindestens einer Ausführungsform kann ein leckes Integrations- und Feuerneuron Signale, die an den Neuroneneingängen 2404 empfangen wurden, zu einem Membranpotential summieren und kann darüber hinaus einen Zerfallsfaktor (oder ein Leck) anwenden, um ein Membranpotential zu verringern. In mindestens einer Ausführungsform kann ein leckes Integrations- und Feuerneuron feuern, falls mehrere Eingangssignale an den Neuroneneingängen 2404 schnell genug empfangen werden, um einen Schwellenwert zu überschreiten (d.h. bevor ein Membranpotential zu niedrig zum Feuern wird). In mindestens einer Ausführungsform können Neuronen 2402 unter Verwendung von Schaltungen oder Logik implementiert sein, die Eingaben empfangen, Eingaben zu einem Membranpotential integrieren und ein Membranpotential abbauen. In mindestens einer Ausführungsform können Eingaben gemittelt werden, oder kann eine beliebige andere geeignete Übertragungsfunktion verwendet werden. Ferner können in mindestens einer Ausführungsform, ohne darauf beschränkt zu sein, die Neuronen 2402 Komparatorschaltungen oder Logik umfassen, die einen Ausgangsspike an dem Neuronenausgang 2406 erzeugen, wenn ein Ergebnis der Anwendung einer Übertragungsfunktion auf den Neuroneneingang 2404 einen Schwellenwert überschreitet. In mindestens einer Ausführungsform kann, nachdem das Neuron 2402 feuert, es zuvor empfangene Eingangsinformationen ignorieren, indem es beispielsweise ein Membranpotenzial auf 0 oder einen anderen geeigneten Standardwert zurücksetzt. In mindestens einer Ausführungsform kann, nachdem das Membranpotential auf 0 zurückgesetzt ist, das Neuron 2402 nach einer geeigneten Zeitspanne (oder Refraktärperiode) den Normalbetrieb wieder aufnehmen.
  • In mindestens einer Ausführungsform können die Neuronen 2402 durch Synapsen 2408 miteinander verbunden sein. In mindestens einer Ausführungsform können die Synapsen 2408 betrieben werden, um Signale von einem Ausgang eines ersten Neurons 2402 zu einem Eingang eines zweiten Neurons 2402 zu übertragen. In mindestens einer Ausführungsform können Neuronen 2402 Informationen über mehr als eine Instanz der Synapse 2408 übertragen. In mindestens einer Ausführungsform können ein oder mehrere Instanzen des Neuronenausgangs 2406 über eine Instanz der Synapse 2408 mit einer Instanz des Neuroneneingangs 2404 im gleichen Neuron 2402 verbunden sein. In mindestens einer Ausführungsform kann eine Instanz des Neurons 2402, die eine Ausgabe erzeugt, die über eine Instanz der Synapse 2408 übertragen werden soll, als „präsynaptisches Neuron“ in Bezug auf diese Instanz der Synapse 2408 bezeichnet werden. In mindestens einer Ausführungsform kann eine Instanz des Neurons 2402, die eine über eine Instanz der Synapse 2408 übertragene Eingabe empfängt, in Bezug auf diese Instanz der Synapse 2408 als „postsynaptisches Neuron“ bezeichnet sein. Weil eine Instanz des Neurons 2402 Eingaben von einer oder mehreren Instanzen der Synapse 2408 empfangen kann, und auch Ausgaben über einen oder mehrere Instanzen der Synapse 2408 übertragen kann, kann eine einzelne Instanz des Neurons 2402 daher sowohl ein „präsynaptisches Neuron“ als auch ein „postsynaptisches Neuron“ in Bezug auf verschiedene Instanzen von Synapsen 2408 in mindestens einer Ausführungsform sein.
  • In mindestens einer Ausführungsform können die Neuronen 2402 in einer oder mehreren Schichten organisiert sein. Jede Instanz des Neurons 2402 kann einen Neuronenausgang 2406 aufweisen, der sich durch eine oder mehrere Synapsen 2408 zu einem oder mehreren Neuroneneingängen 2404 ausbreiten kann. In mindestens einer Ausführungsform können Neuronenausgänge 2406 von Neuronen 2402 in einer ersten Schicht 2410 mit Neuroneneingängen 2404 von Neuronen 2402 in einer zweiten Schicht 2412 verbunden sein. In mindestens einer Ausführungsform kann die Schicht 2410 als eine „Feed-Forward-Schicht“ bezeichnet sein. In mindestens einer Ausführungsform kann sich jede Instanz des Neurons 2402 in einer Instanz der ersten Schicht 2410 zu jeder Instanz des Neurons 2402 in der zweiten Schicht 2412 ausbreiten. In mindestens einer Ausführungsform kann die erste Schicht 2410 als „vollständig verbundene Feed-Forward-Schicht“ bezeichnet sein. In mindestens einer Ausführungsform kann sich jede Instanz des Neurons 2402 in einer Instanz der zweiten Schicht 2412 auf weniger als alle Instanzen des Neurons 2402 in einer dritten Schicht 2414 verteilen. In mindestens einer Ausführungsform kann die zweite Schicht 2412 als „spärlich verbundene Feed-Forward-Schicht“ bezeichnet sein. In mindestens einer Ausführungsform können sich Neuronen 2402 in der zweiten Schicht 2412 zu Neuronen 2402 in mehreren anderen Schichten ausbreiten, einschließlich zu Neuronen 2402 in der (gleichen) zweiten Schicht 2412. In mindestens einer Ausführungsform kann die zweite Schicht 2412 als „rekurrente Schicht“ bezeichnet sein. Der neuromorphe Prozessor 2400 kann, ohne darauf beschränkt zu sein, jede geeignete Kombination von rekurrenten Schichten und Feed-Forward-Schichten umfassen, einschließlich, ohne darauf beschränkt zu sein, sowohl spärlich verbundene Feed-Forward-Schichten als auch vollständig verbundene Feed-Forward-Schichten.
  • In mindestens einer Ausführungsform kann der neuromorphe Prozessor 2400, ohne darauf beschränkt zu sein, eine rekonfigurierbare Zwischenverbindungsarchitektur oder dedizierte fest verdrahtete Zwischenverbindungen umfassen, um die Synapse 2408 mit den Neuronen 2402 zu verbinden. In mindestens einer Ausführungsform kann der neuromorphe Prozessor 2400, ohne darauf beschränkt zu sein, eine Schaltung oder Logik umfassen, die ermöglicht, Synapsen bei Bedarf verschiedenen Neuronen 2402 basierend auf neuronaler Netzwerktopologie und Neuronen-Fan-In/Out zuzuordnen. Beispielsweise können in mindestens einer Ausführungsform Synapsen 2408 mit Neuronen 2402 unter Verwendung einer Zwischenverbindungsstruktur, wie beispielsweise einem Netzwerk auf dem Chip, oder mit speziellen Verbindungen verbunden sein. In mindestens einer Ausführungsform können Synapsen-Zwischenverbindungen und Komponenten derselben unter Verwendung von Schaltungen oder Logik implementiert sein.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 24 gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte in dem neuromorphen Prozessor 2400 von 24 verwendet.
  • 25 ist ein Blockdiagramm eines Verarbeitungssystems gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform umfasst das System 2500 einen oder mehrere Prozessoren 2502 und einen oder mehrere Graphikprozessoren 2508 und kann ein Desktop-System mit einem einzelnen Prozessor, ein Multiprozessor-Workstation-System oder ein Serversystem mit einer großen Anzahl von Prozessoren 2502 oder Prozessorkernen 2507 sein. In mindestens einer Ausführungsform ist das System 2500 eine Verarbeitungsplattform, die in eine System-on-Chip (SoC)-integrierte Schaltung zur Verwendung in mobilen, tragbaren oder eingebetteten Geräten integriert ist. In mindestens einer Ausführungsform kann das System 2500 eine Spielkonsole, einschließlich einer Spiel- und Medienkonsole, eine mobile Spielkonsole, eine tragbare Spielkonsole oder eine Online-Spielkonsole umfassen oder in diese innerhalb einer serverbasierten Spieleplattform integriert sein. In mindestens einer Ausführungsform ist das System 2500 ein Mobiltelefon, ein Smartphone, ein Tablet-Computergerät oder ein mobiles Internetgerät. In mindestens einer Ausführungsform kann das Verarbeitungssystem 2500 auch ein tragbares Gerät, wie beispielsweise ein tragbares Smart Watch-Gerät, ein intelligentes Brillengerät, ein Gerät für erweiterte Realität oder ein Gerät für virtuelle Realität umfassen, mit ihm koppeln oder in dieses integriert sein. In mindestens einer Ausführungsform ist das Verarbeitungssystem 2500 ein Fernseh- oder Set-Top-Box-Gerät mit einem oder mehreren Prozessoren 2502 und einer von einem oder mehreren Graphikprozessoren 2508 erzeugten Graphikschnittstelle.
  • In mindestens einer Ausführungsform umfassen ein oder mehrere Prozessoren 2502 jeweils einen oder mehrere Prozessorkerne 2507 zum Verarbeiten von Anweisungen, die dann, wenn sie ausgeführt werden, Operationen für ein System- und Benutzersoftware ausführen. In mindestens einer Ausführungsform ist jeder eines oder mehrerer Prozessorkerne 2507 konfiguriert, um einen bestimmten Anweisungssatz 2509 zu verarbeiten. In mindestens einer Ausführungsform kann der Anweisungssatz 2509 das Complex Instruction Set Computing (CISC), Reduced Instruction Set Computing (RISC) oder das Rechnen über ein Very Long Instruction Word (VLIW) erleichtern. In mindestens einer Ausführungsform können die Prozessorkerne 2507 jeweils einen anderen Anweisungssatz 2509 verarbeiten, der Anweisungen zum Erleichtern der Emulation anderer Befehlssätze umfassen kann. In mindestens einer Ausführungsform kann der Prozessorkern 2507 auch andere Verarbeitungsvorrichtungen, wie beispielsweise einen digitalen Signalprozessor (DSP), umfassen.
  • In mindestens einer Ausführungsform umfasst der Prozessor 2502 den Cache-Speicher 2504. In mindestens einer Ausführungsform kann der Prozessor 2502 einen einzelnen internen Cache oder mehrere Ebenen internen Caches aufweisen. In mindestens einer Ausführungsform wird der Cache-Speicher von verschiedenen Komponenten des Prozessors 2502 gemeinsam genutzt. In mindestens einer Ausführungsform verwendet der Prozessor 2502 auch einen externen Cache (z.B. einen Level 3 (L3)- Cache oder einen Last Level Cache (LLC)) (nicht gezeigt), welcher unter Verwendung bekannter Cache-Kohärenztechniken von den Prozessorkernen 2507 gemeinsam genutzt werden kann. In mindestens einer Ausführungsform ist die Registerdatei 2506 zusätzlich in dem Prozessor 2502 enthalten, welcher verschiedene Registertypen zum Speichern verschiedener Datentypen umfassen kann (z.B. ein Ganzzahlregister, ein Gleitkommaregister, ein Zustandsregister und ein Befehlszeigerregister). In mindestens einer Ausführungsform kann die Registerdatei 2506 Universalregister oder andere Register umfassen.
  • In mindestens einer Ausführungsform sind ein oder mehrere Prozessor(en) 2502 mit einem oder mehreren Schnittstellenbus(en) 2510 gekoppelt, um Kommunikationssignale wie Adressen, Daten oder Steuersignale zwischen dem Prozessor 2502 und anderen Komponenten in dem System 2500 zu übertragen. In mindestens einer Ausführungsform kann ein Schnittstellenbus 2510 in einer Ausführungsform ein Prozessorbus sein, wie beispielsweise eine Version eines Direct Media Interface (DMI)-Busses. In mindestens einer Ausführungsform ist die Schnittstelle 2510 nicht auf einen DMI-Bus beschränkt und kann einen oder mehrere Peripheral Connect Zwischenverbindung-Busse (z.B. PCI, PCI Express), Speicherbusse oder andere Arten von Schnittstellenbussen umfassen. In mindestens einer Ausführungsform umfassen der/die Prozessor(en) 2502 einen integrierten Speicher-Controller 2516 und einen Plattform-Controller-Hub 2530. In mindestens einer Ausführungsform erleichtert der Speicher-Controller 2516 die Kommunikation zwischen einer Speichervorrichtung und anderen Komponenten des Systems 2500, während der Plattform-Controller-Hub (PCH) 2530 Verbindungen zu E/A-Vorrichtungen über einen lokalen E/A-Bus bereitstellt.
  • In mindestens einer Ausführungsform kann eine Speichervorrichtung 2520 eine dynamische Direktzugriffspeicher (DRAM)-Vorrichtung, eine statische Direktzugriffspeicher (SRAM)-Vorrichtung, eine Flash-Speicher-Vorrichtung, eine Phasenänderungs-Speichervorrichtung oder irgendeine andere Speichervorrichtung mit geeigneter Leistung sein, um als Prozessspeicher zu dienen. In mindestens einer Ausführungsform kann die Speichervorrichtung 2520 als Systemspeicher für das System 2500 arbeiten, um Daten 2522 und Anweisungen 2521 zu speichern, die verwendet werden, wenn ein oder mehrere Prozessoren 2502 eine Anwendung oder einen Prozess ausführen. In mindestens einer Ausführungsform koppelt die Speichersteuerung 2516 darüber hinaus mit einem optionalen externen Graphikprozessor 2512, welcher mit einem oder mehreren Graphikprozessoren 2508 in den Prozessoren 2502 kommunizieren kann, um Graphik- und Medienoperationen durchzuführen. In mindestens einer Ausführungsform kann eine Anzeigevorrichtung 2511 mit dem/den Prozessor(en) 2502 verbinden. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 2511 eine oder mehrere einer internen Anzeigevorrichtung umfassen, wie in einer mobilen elektronischen Vorrichtung oder einer Laptopvorrichtung oder einer externen Anzeigevorrichtung, die über eine Anzeigeschnittstelle (z.B. DisplayPort, usw.) angeschlossen ist. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 2511 eine kopfangebrachte Anzeige (HMD) umfassen, wie beispielsweise eine stereoskopische Anzeigevorrichtung zur Verwendung in Virtual-Reality-Anwendungen (VR) oder Augmented-Reality-Anwendungen (AR).
  • In mindestens einer Ausführungsform ermöglicht der Plattform-Controller-Hub 2530 Peripheriegeräten, sich mit der Speichervorrichtung 2520 und dem Prozessor 2502 über einen Hochgeschwindigkeits-E/A-Bus zu verbinden. In mindestens einer Ausführungsform umfassen E/A-Peripheriegeräte unter anderem, sind jedoch nicht beschränkt auf, einen Audio-Controller 2546, eine Netzwerk-Controller 2534, eine Firmware-Schnittstelle 2521, einen drahtlosen Sender-Empfänger 2526, Berührungssensoren 2525, eine Datenspeichervorrichtung 2524 (z.B. eine Festplatte, einen Flash-Speicher usw.). In mindestens einer Ausführungsform kann die Datenspeichervorrichtung 2524 über eine Speicherschnittstelle (z.B. SATA) oder über einen Peripheriebus, wie beispielsweise einen Peripheral Component Zwischenverbindung Bus (z.B. PCI, PCI Express) verbinden. In mindestens einer Ausführungsform können die Berührungssensoren 2525 Sensoren eines berührungsempfindlichen Bildschirms, Drucksensoren oder Fingerabdrucksensoren umfassen. In mindestens einer Ausführungsform kann der drahtlose Sender-Empfänger 2526 ein Wi-Fi-Sender-Empfänger, ein Bluetooth-Sender-Empfänger oder ein Mobilfunk-Sender-Empfänger wie beispielsweise ein 3G-, 4G- oder Long Term Evolution (LTE)-Transceiver sein. In mindestens einer Ausführungsform ermöglicht die Firmware-Schnittstelle 2521 die Kommunikation mit der System-Firmware und kann beispielsweise eine vereinheitlichte erweiterbare Firmware-Schnittstelle (UEFI) sein. In mindestens einer Ausführungsform kann die Netzwerk-Controller 2534 eine Netzwerkverbindung zu einem verdrahteten Netzwerk aktivieren. In mindestens einer Ausführungsform koppelt eine Hochleistungs-Netzwerk-Controller (nicht gezeigt) mit dem Schnittstellenbus 2510. In mindestens einer Ausführungsform ist die Audio-Controller 2546 eine mehrkanalige hochauflösende Audio-Controller. In mindestens einer Ausführungsform umfasst das System 2500 eine optionale Legacy-E/A-Steuereinrichtung 2540 zum Koppeln von Legacy-Geräten (z.B. Personal System 2 (PS/2)) mit dem System. In mindestens einer Ausführungsform kann der Plattform-Controller-Hub 2530 auch mit einer oder mehreren Universal Serial Bus (USB)-Controllers 2542 verbinden, um Eingabegeräte wie beispielsweise Tastatur- und Maus Kombinationen 2543, eine Kamera 2544 oder andere USB-Eingabegeräte zu verbinden.
  • In mindestens einer Ausführungsform kann eine Instanz der Speichersteuerung 2516 und des Plattform-Controller-Hub 2530 in einem diskreten externen Graphikprozessor, wie beispielsweise den externen Graphikprozessor 2512, integriert sein. In mindestens einer Ausführungsform können der Plattform-Controller-Hub 2530 und/oder die Speicher-Controller 2516 extern zu einem oder mehreren Prozessoren 2502 sein. Beispielsweise kann das System 2500 in mindestens einer Ausführungsform eine externe Speicher-Controller 2516 und einen Plattform-Controller-Hub 2530 umfassen, die als ein Speicher-Controller-Hub und ein peripherer Controller-Hub innerhalb eines System-Chipsatzes, der mit dem bzw. den Prozessor(en) 2502 in Verbindung steht, konfiguriert sein können.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten hinsichtlich der Inferenzierungs- und/oder Trainingslogik 615 werden hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform kann ein Abschnitt der oder die gesamte Inferenzierungs- und/oder Trainingslogik 615 in den Graphikprozessor 2500 integriert sein. Beispielsweise können in mindestens einer Ausführungsform hier beschriebene Trainings- und/oder Inferenzierungs-Techniken eine oder mehrere der in eine 3D-Pipeline 2512 verkörperten ALUs verwenden. Außerdem können in mindestens einer Ausführungsform hier beschriebene Inferenzierungs- und/oder Trainingsoperationen unter Verwendung einer anderen Logik als die in 7A oder 7B veranschaulichte Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder Registern (gezeigt oder nicht gezeigt) gespeichert werden, um die ALUs des Graphikprozessors 2500 konfigurieren, einen oder mehrere Algorithmen maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder die hier beschriebenen Trainingstechniken auszuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 25 gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren, und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor identifizieren, um einen zweiten Aktivierungstensor konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte im Parallelprozessor 1900 von 19A verwendet. In mindestens einer Ausführungsform wird die Merkmalskarte in dem System 2500 von 25 verwendet.
  • 26 ist ein Blockdiagramm eines Prozessors 2600 mit einem oder mehreren Prozessorkernen 2602A-2602N, einer integrierten Speicher-Controller 2614 und einem integrierten Graphikprozessor 2608 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozessor 2600 zusätzliche Kerne bis hin zu dem und einschließlich des zusätzlichen Kerns 2602N umfassen, die durch gestrichelte, linierte Kästen dargestellt sind. In mindestens einer Ausführungsform umfasst jeder der Prozessorkerne 2602A-2602N eine oder mehrere interne Cache-Einheiten 2604A-2604N. In mindestens einer Ausführungsform weist jeder Prozessorkern auch Zugriff auf eine oder mehrere gemeinsam genutzte Cache-Einheiten 2606 auf.
  • In mindestens einer Ausführungsform stellen die internen Cache-Einheiten 2604A-2604N und die gemeinsam genutzten Cache-Einheiten 2606 eine Cache-Speicherhierarchie innerhalb des Prozessors 2600 dar. In mindestens einer Ausführungsform können die Cache-Speichereinheiten 2604A-2604N mindestens eine Befehls- und Daten-Cache-Ebene innerhalb jedes Prozessorkerns und eine oder mehrere Ebenen gemeinsam genutzten Mid-Level-Caches, wie beispielsweise ein Level 2 (L2), ein Level 3 (L3), ein Level 4 (L4) oder andere Cache-Ebenen, umfassen, wobei eine höchste Cache-Ebene vor externem Speicher als eine LLC klassifiziert ist. In mindestens einer Ausführungsform behält die Cache-Kohärenzlogik Kohärenz zwischen den verschiedenen Cache-Einheiten 2606 und 2604A-2604N bei.
  • In mindestens einer Ausführungsform kann der Prozessor 2600 auch einen Satz einer oder mehrerer Bussteuereinheiten 2616 und einen System-Agent-Kern 2610 umfassen. In mindestens einer Ausführungsform verwalten eine oder mehrere Bussteuereinheiten 2616 einen Satz von Peripheriebussen, wie beispielsweise einen oder mehrere PCI- oder PCI-Express-Busse. In mindestens einer Ausführungsform stellt der System-Agent-Kern 2610 Verwaltungsfunktionen für verschiedene Prozessorkomponenten zur Verfügung. In mindestens einer Ausführungsform umfasst der System-Agent-Kern 2610 eine oder mehrere integrierte Speichersteuerungen 2614, um den Zugriff auf verschiedene externe Speichervorrichtungen (nicht gezeigt) zu verwalten.
  • In mindestens einer Ausführungsform umfassen einer oder mehrere der Prozessorkerne 2602A-2602N Unterstützung für gleichzeitiges Multithreading. In mindestens einer Ausführungsform umfasst der System-Agent-Kern 2610 Komponenten zum Koordinieren und Betreiben der Kerne 2602A-2602N während der Multithreading-Verarbeitung. In mindestens einer Ausführungsform kann der System-Agent-Kern 2610 zusätzlich eine Leistungssteuereinheit (PCU) umfassen, die Logik und Komponenten zum Regeln eines oder mehrerer Leistungszustände der Prozessorkerne 2602A-2602N und des Graphikprozessors 2608 umfasst.
  • In mindestens einer Ausführungsform umfasst der Prozessor 2600 zusätzlich den Graphikprozessor 2608, um Graphikverarbeitungsoperationen auszuführen. In mindestens einer Ausführungsform koppelt der Graphikprozessor 2608 mit den gemeinsam genutzten Cache-Einheiten 2606 und dem System-Agent-Kern 2610, einschließlich einer oder mehrerer integrierter Speichersteuerungen 2614. In mindestens einer Ausführungsform umfasst der System-Agent-Kern 2610 auch eine Anzeige-Controller 2611, um die Graphikprozessorausgabe auf ein oder mehrere gekoppelte Anzeigen zu treiben. In mindestens einer Ausführungsform kann die Anzeige-Controller 2611 auch ein separates Modul sein, das über mindestens eine Zwischenverbindung mit dem Graphikprozessor 2608 gekoppelt ist oder in den Graphikprozessor 2608 integriert sein kann.
  • In mindestens einer Ausführungsform wird eine ringbasierte Zwischenverbindungseinheit 2612 verwendet, interne Komponenten des Prozessors 2600 zu koppeln. In mindestens einer Ausführungsform kann eine alternative Verbindungseinheit verwendet werden, wie beispielsweise eine Punkt-zu-Punkt-Zwischenverbindung, eine geschaltete Zwischenverbindung oder andere Techniken. In mindestens einer Ausführungsform koppelt der Graphikprozessor 2608 über eine E/A-Verbindung 2613 mit der Ring-Zwischenverbindung 2612.
  • In mindestens einer Ausführungsform repräsentiert die E/A-Verbindung 2613 mindestens eine von mehreren Varianten von E/A-Zwischenverbindungen, einschließlich einer E/A-Zwischenverbindung auf dem Gehäuse, welche die Kommunikation zwischen verschiedenen Prozessorkomponenten und einem eingebetteten Hochleistungsspeichermodul 2618, wie beispielsweise einem eDRAM-Modul, erleichtert. In mindestens einer Ausführungsform verwenden jeder der Prozessorkerne 2602A-2602N und der Graphikprozessor 2608 eingebettete Speichermodule 2618 als einen gemeinsam genutzten Cache letzter Ebene bzw. Last Level Cache.
  • In mindestens einer Ausführungsform sind die Prozessorkerne 2602A-2602N homogene Kerne, die eine gemeinsame Anweisungssatzarchitektur ausführen. In mindestens einer Ausführungsform sind die Prozessorkerne 2602A-2602N heterogen in Bezug auf die Anweisungssatzarchitektur (ISA), wobei einer oder mehrere der Prozessorkerne 2602A-2602N einen gemeinsamen Anweisungssatz ausführen, während ein oder mehrere andere Kerne der Prozessorkerne 2602A-2602N eine Teilmenge eines gemeinsamen Anweisungssatzes oder einen bzw. eines anderen Anweisungssatzes ausführen. In mindestens einer Ausführungsform sind die Prozessorkerne 2602A-2602N in Bezug auf Mikroarchitektur heterogen, wobei ein oder mehrere Kerne mit einem relativ höheren Stromverbrauch mit einem oder mehreren Leistungskernen mit einem niedrigeren Stromverbrauch koppeln. In mindestens einer Ausführungsform kann der Prozessor 2600 auf einem oder mehreren Chips oder als eine in einem SoC integrierte Schaltung implementiert sein.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten hinsichtlich der Inferenzierungs- und/oder Trainingslogik 615 werden hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte(n) Inferenzierungs- und/oder Trainingslogik 615 in den Prozessor 2610 integriert sein. Beispielsweise können in mindestens einer Ausführungsform hier beschriebene Trainings- und/oder Inferenzierungs-Techniken eine oder mehrere ALUs verwenden, die in einer 3D-Pipeline 2512, einem Graphikkern(en) 2615A, gemeinsam genutzter Funktionslogik 2616, einem Graphikkern(en) 2615B, gemeinsam genutzter Funktionslogik 2620 oder einer anderen Logik in 26 verkörpert sind. Darüber hinaus können in mindestens einer Ausführungsform hier beschriebene Inferenzierungs- und/oder Trainingsoperationen mit einer anderen Logik als der in den 7A oder 7B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Graphikprozessors 2600 konfigurieren, um einen oder mehrere Algorithmen maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder die hier beschriebenen Trainingstechniken auszuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 26 gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte im Prozessor 2600 von 26 verwendet.
  • 27 ist ein Blockdiagramm eines Graphikprozessors 2700, der eine diskrete Graphikverarbeitungseinheit sein kann oder ein Graphikprozessor sein kann, der mit mehreren Verarbeitungskernen integriert sein kann. In mindestens einer Ausführungsform kommuniziert der Graphikprozessor 2700 über eine speicherabgebildete E/A-Schnittstelle mit Registern auf dem Graphikprozessor 2700 und mit Befehlen, die in dem Speicher platziert sind. In mindestens einer Ausführungsform umfasst der Graphikprozessor 2700 eine Speicherschnittstelle 2714, um auf den Speicher zuzugreifen. In mindestens einer Ausführungsform ist die Speicherschnittstelle 2714 eine Schnittstelle zu einem lokalen Speicher, einem oder mehreren internen Caches, einem oder mehreren gemeinsam genutzten externen Caches und/oder zu dem Systemspeicher.
  • In mindestens einer Ausführungsform umfasst der Graphikprozessor 2700 ebenfalls einen Anzeigecontroller 2702 zum Treiben von Anzeigeausgabedaten zu einer Anzeigevorrichtung 2720. In mindestens einer Ausführungsform umfasst der Anzeigecontroller 2702 Hardware für eine oder mehrere Überlagerungsebenen für die Anzeige 2720 und Zusammenstellung mehrerer Schichten von Video oder Anwenderschnittstellenelementen. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 2720 eine interne oder eine externe Anzeigevorrichtung sein. In mindestens einer Ausführungsform ist die Anzeigevorrichtung 2720 eine am Kopf angebrachte Anzeigevorrichtung, wie beispielsweise eine Anzeigevorrichtung für virtuelle Realität (VR) oder eine Anzeigevorrichtung für erweiterte Realität (AR). In mindestens einer Ausführungsform umfasst der Graphikprozessor 2700 eine Video-Codec-Engine 2706 zum Codieren, Decodieren oder Transcodieren von Medien in, aus oder zwischen einem oder mehreren Mediencodierungsformaten, die umfassen, ohne jedoch darauf beschränkt zu sein, sowohl Formate der „Moving Picture Experts Group“ (MPEG) wie beispielsweise MPEG-2, „Advanced Video Coding“- (AVC-) Formate wie beispielsweise H.264/MPEG-4 AVC, sowie auch Formate der „Society of Motion Picture & Television Engineers“ (SMPTE) 421M/VC-1 und „Joint Photographic Experts Group“ (JPEG) wie beispielsweise JPEG und Motion JPEG (MJPEG) umfassen.
  • In mindestens einer Ausführungsform umfasst der Graphikprozessor 2700 eine Blockbildübertragungs- (BLIT-) Engine 2704 zum Durchführen zweidimensionaler (2D) Rasterisierer-Operationen, die beispielsweise Bitgrenzenblockübertragungen umfassen. In mindestens einer Ausführungsform werden 2D-Graphikoperationen jedoch unter Verwendung einer oder mehrerer Komponenten der Graphikverarbeitungs-Engine (GPE) 2710 ausgeführt. In mindestens einer Ausführungsform ist die GPE 2710 eine Rechen-Engine zum Durchführen von Graphikoperationen, die dreidimensionale (3D) Graphikoperationen und Medienoperationen umfassen.
  • In mindestens einer Ausführungsform umfasst die GPE 2710 eine 3D-Pipeline 2712 zum Durchführen von 3D-Operationen wie beispielsweise Rendern dreidimensionaler Bilder und Szenen unter Verwendung von Verarbeitungsfunktionen, die auf 3D-Grundformen (beispielsweise Rechteck, Dreieck usw.) arbeiten. Die 3D-Pipeline 2712 umfasst programmierbare Elemente und Elemente mit fester Funktion, die verschiedene Aufgaben durchführen und/oder Ausführungs-Threads zu einem 3D/Medien-Teilsystem 2715 erzeugen. Während die 3D-Pipeline 2712 verwendet werden kann, um Medienoperationen durchzuführen, umfasst in mindestens einer Ausführungsform der GPE 2710 ebenfalls eine Medien-Pipeline 2716, die verwendet wird, um Medienoperationen durchzuführen, wie beispielsweise Videonachverarbeitung und Bildverbesserung.
  • In mindestens einer Ausführungsform umfasst die Medien-Pipeline 2716 Logikeinheiten mit fester Funktion oder programmierbare Logikeinheiten zum Durchführen einer oder mehrerer spezialisierter Medienoperationen, wie beispielsweise Video-Decodierungsbeschleunigung, Video-Entschachtelung und Video-Codierungsbeschleunigung anstelle der oder im Auftrag der Video-Codec-Engine 2706. In mindestens einer Ausführungsform umfasst die Medien-Pipeline 2716 zusätzlich eine Thread-Erzeugungseinheit zum Erzeugen von Threads zur Ausführung auf dem 3D/Medien-Teilsystem 2715. In mindestens einer Ausführungsform führen die erzeugten Threads Berechnungen für die Medienoperationen auf einer oder mehreren Graphikausführungseinheiten aus, die in dem 3D/Medien-Teilsystem 2715 umfasst sind.
  • In mindestens einer Ausführungsform umfasst das 3D/Medien-Teilsystem 2715 Logik zum Ausführen von Threads, die durch die 3D-Pipeline 2712 und die Medien-Pipeline 2716 erzeugt werden. In mindestens einer Ausführungsform senden die 3D-Pipeline und die Medien-Pipeline 2716 Thread-Ausführungsanforderungen an das 3D/Medien-Teilsystem 2715, das die Thread-Verteilungslogik zum Arbitrieren und Verteilen verschiedener Anforderungen an verfügbare Thread-Ausführungsressourcen umfasst. In mindestens einer Ausführungsform umfassen die Ausführungsressourcen eine Anordnung von Graphikausführungseinheiten zum Verarbeiten der 3D- und Medien-Threads. In mindestens einer Ausführungsform umfasst das 3D-Medien-Teilsystem 2715 einen oder mehrere interne Caches für Thread-Anweisungen und Daten. In mindestens einer Ausführungsform umfasst das Teilsystem 2715 auch einen gemeinsam genutzten Speicher, der Register und adressierbaren Speicher umfasst, um Daten durch Threads gemeinsam zu nutzen und Ausgabedaten zu speichern.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 615 werden hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenzierungs- und/oder Trainingslogik 615 in dem Graphikprozessor 2700 integriert sein. Beispielsweise können in mindestens einer Ausführungsform hier beschriebene Trainings- und/oder Inferenzierungs-Techniken eine oder mehrere ALUs verwenden, die in der 3D-Pipeline 2712 verkörpert sind. Außerdem können in mindestens einer Ausführungsform hier beschriebene Inferenzierungs- und/oder Trainingsoperationen mit einer anderen Logik als der in 7A oder 7B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in On-Chip- oder Off-Chip-Speicher und/oder Registern (gezeigt oder nicht gezeigt) gespeichert sein, die ALUs des Graphikprozessors 2700 konfigurieren, um einen oder mehrere Algorithmen maschinellen Lernens, Lernalgorithmen, neuronale Netzwerkarchitekturen, Anwendungsfälle oder hier beschriebenen Trainingstechniken auszuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 27 gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor identifizieren, um einen zweiten Aktivierungstensor konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte in dem Graphikprozessor 2700 von 27 verwendet.
  • 28 ist ein Blockdiagramm einer Graphikverarbeitungs-Engine 2810 eines Graphikprozessors gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist die Graphikverarbeitungs-Engine (GPE) 2810 eine Version der in 28 gezeigten GPE 2810. In mindestens einer Ausführungsform ist eine Medien-Pipeline 2816 optional und kann in der GPE 2810 nicht ausdrücklich umfasst sein. In mindestens einer Ausführungsform ist ein separater Medien- und/oder Bildprozessor mit der GPE 2810 gekoppelt.
  • In mindestens einer Ausführungsform ist die GPE 2810 mit einem Befehls-Streamer 2803 gekoppelt oder umfasst ihn, der einen Befehls-Stream zu der 3D-Pipeline 2812 und/oder Medien-Pipelines 2816 bereitstellt. In mindestens einer Ausführungsform ist der Befehls-Streamer 2803 mit einem Speicher gekoppelt, der ein Systemspeicher oder einer oder mehrere aus internem Cache-Speicher und gemeinsam genutzter Cache-Speicher sein kann. In mindestens einer Ausführungsform empfängt der Befehls-Streamer 2803 Befehle von dem Speicher und sendet Befehle an die 3D-Pipeline 2812 und/oder Medien-Pipeline 2816. In mindestens einer Ausführungsform sind die Befehle Anweisungen, Primitive oder Mikro-Operationen, die aus einem Ringpuffer geholt werden, der Befehle für die 3D-Pipeline 2812 und die Medien-Pipeline 2816 speichert. In mindestens einer Ausführungsform kann ein Ringpuffer zusätzlich Stapelbefehlspuffer umfassen, die Stapel aus mehreren Befehlen speichern. In mindestens einer Ausführungsform können die Befehle für die 3D-Pipeline 2812 außerdem Referenzen auf im Speicher gespeicherte Daten umfassen, wie beispielweise, ohne jedoch darauf beschränkt zu sein, Vertex- und Geometriedaten für die 3D-Pipeline 2812 und/oder Bilddaten und Speicherobjekte für die Medien-Pipeline 2816. In mindestens einer Ausführungsform verarbeiten die 3D-Pipeline 2812 und die Medien-Pipeline 2816 Befehle und Daten durch Durchführen von Operationen oder durch Verteilen eines oder mehrerer Ausführungs-Threads zu einer Graphikkernanordnung 2814. In mindestens einer Ausführungsform umfasst die Graphikkernanordnung 2814 einen oder mehrere Blöcke von Graphikkernen (beispielsweise Graphikkern(e) 2815A, Graphikkern(e) 2815B), wobei jeder Block einen oder mehrere Graphikkerne umfasst. In mindestens einer Ausführungsform umfasst jeder Graphikkern einen Satz von Graphikausführungsressourcen, die Allzweck- und graphikspezifische Ausführungslogik zum Durchführen von Graphik- und Rechenoperationen sowie auch Beschleunigungslogik für Texturverarbeitung mit fester Funktion und/oder maschinelles Lernen und künstliche Intelligenz umfasst, die Inferenzierungs- und/oder Trainingslogik 615 in 7A und 7B umfassen.
  • In mindestens einer Ausführungsform umfasst die 3D-Pipeline 2812 Logik mit fester Funktion und programmierbare Logik, um ein oder mehrere Shader-Programme zu verarbeiten, wie beispielsweise Vertex-Shader, Geometrie-Shader, Pixel-Shader, Fragment-Shader, Rechen-Shader oder andere Shader-Programme, durch Verarbeiten der Anweisungen und Verteilen von Ausführungs-Threads zu der Graphikkernanordnung 2814. Die Graphikkernanordnung 2814 stellt einen einheitlichen Block von Ausführungsressourcen zum Gebrauch zum Verarbeiten dieser Shader-Programme bereit. In mindestens einer Ausführungsform umfasst eine Mehrzweck-Ausführungslogik (beispielsweise Ausführungseinheiten) innerhalb des(der) Graphikkerns(e) 2815A-2815B der Graphikkernanordnung 2814 Unterstützung für verschiedene 3D-API-Shader-Sprachen und kann mehrere gleichzeitige Ausführungs-Threads ausführen, die mehreren Shadern zugeordnet sind.
  • In mindestens einer Ausführungsform umfasst die Graphikkernanordnung 2814 Ausführungslogik zum Durchführen von Medienfunktionen wie beispielsweise Video- und/oder Bildverarbeitung. In mindestens einer Ausführungsform umfassen die Ausführungseinheiten Allzwecklogik, die programmierbar ist, um parallele Allzweckberechnungsoperationen zusätzlich zu Graphikverarbeitungsoperationen durchzuführen.
  • In mindestens einer Ausführungsform können Ausgabedaten, die durch Threads erzeugt werden, die auf der Graphikkernanordnung 2824 ausgeführt werden, Daten an einen Speicher in einem einheitlichen Rückgabepuffer (Unified Return Buffer; URB) 2818 ausgeben. Der URB 2818 kann Daten für mehrere Threads speichern. In mindestens einer Ausführungsform kann der URB 2818 verwendet werden, um Daten zwischen unterschiedlichen Threads, die auf der Graphikkernanordnung 2814 ablaufen, zu senden. In mindestens einer Ausführungsform kann der URB 2818 zusätzlich zur Synchronisation zwischen Threads auf der Graphikkernanordnung 2814 und der Logik mit fester Funktion innerhalb der Logik 2820 mit gemeinsam genutzter Funktion verwendet werden.
  • In mindestens einer Ausführungsform ist die Graphikkernanordnung 2814 skalierbar, so dass die Anordnung 2814 eine variable Anzahl von Graphikkernen umfasst, von denen jeder eine variable Anzahl von Ausführungseinheiten basierend auf einer Zielleistung und dem Leistungsfähigkeitsniveau der GPE 2810 aufweist. In mindestens einer Ausführungsform sind die Ausführungsressourcen dynamisch skalierbar, so dass Ausführungsressourcen je nach Bedarf aktiviert oder deaktiviert werden können.
  • In mindestens einer Ausführungsform ist die Graphikkernanordnung 2814 mit der gemeinsam genutzter Logik 2820 gekoppelt, die mehrere Ressourcen umfasst, die von den Graphikkernen in der Graphikkernanordnung 2814 gemeinsam genutzt werden. Die gemeinsam genutzten Funktionen innerhalb der Logik 2820 mit gemeinsam genutzter Funktion sind Hardware-Logikeinheiten, die spezialisierte ergänzende Funktionalität für die Graphikkernanordnung 2814 bereitstellen. In verschiedenen Ausführungsformen umfasst die Logik 2820 mit gemeinsam genutzter Funktion, ohne jedoch darauf beschränkt zu sein, Logik für Abtaster 2821, Math 2822 und Thread-übergreifende Kommunikation (ITC) 2823. Zusätzlich implementieren einige Ausführungsformen einen oder mehrere Cache(s) 2825 innerhalb der Logik 2820 mit gemeinsam genutzter Funktion.
  • In mindestens einer Ausführungsform wird eine gemeinsam genutzte Funktion verwendet, wenn der Bedarf für eine spezialisierte Funktion zum Aufnehmen in die Graphikkernanordnung 2814 nicht ausreichend ist. In mindestens einer Ausführungsform wird eine einzige Instanziierung einer spezialisierten Funktion in der gemeinsam genutzten Funktionslogik 2820 implementiert und wird zwischen anderen Ausführungsressourcen innerhalb der Graphikkernanordnung 2814 gemeinsam genutzt. In mindestens einer Ausführungsform können spezifische gemeinsam genutzte Funktionen innerhalb der gemeinsam genutzten Funktionslogik 2820, die von der Graphikkernanordnung 2814 extensiv verwendet werden, innerhalb der gemeinsam genutzten Funktionslogik 2816 innerhalb der Graphikkernanordnung 2814 umfasst sein. In mindestens einer Ausführungsformen kann die gemeinsam genutzte Funktionslogik 2816 innerhalb der Graphikkernanordnung 2814 einen Teil der oder die gesamte Logik innerhalb der gemeinsam genutzten Funktionslogik 2820. In mindestens einer Ausführungsform können alle Logikelemente innerhalb der gemeinsam genutzten Funktionslogik 2820 innerhalb der gemeinsam genutzten Funktionslogik 2816 der Graphikkernanordnung 2814 dupliziert werden. In mindestens einer Ausführungsform ist die gemeinsam genutzte Funktionslogik 2820 zugunsten der gemeinsam genutzten Funktionslogik 2816 innerhalb der Graphikkernanordnung 2814 ausgeschlossen.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten hinsichtlich der Inferenzierungs- und/oder Trainingslogik 615 sind hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenzierungs- und/oder Trainingslogik 615 in den Graphikprozessor 2810 integriert sein. Beispielsweise können in mindestens einer Ausführungsform hier beschriebene Trainings- und/oder Inferenzierungs-Techniken eine oder mehrere der ALUs verwenden, die in der 3D-Pipeline 2812, Graphikkern(en) 2815A, gemeinsam genutzter Funktionslogik 2816, Graphikkern(en) 2815B, gemeinsam genutzter Funktionslogik 2820 oder anderer Logik in 28 verkörpert sind. Außerdem können in mindestens einer Ausführungsform die hier beschriebenen Inferenzierungs- und/oder Trainingsoperationen mit einer anderen Logik als der in 7A oder 7B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in On-Chip- oder Off-Chip-Speicher und/oder Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Graphikprozessors 2810 konfigurieren, um einen oder mehrere Algorithmen maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder die hier beschriebenen Trainingstechniken auszuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 28 gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte im Parallelprozessor 1900 von 19A verwendet. In mindestens einer Ausführungsform wird die Merkmalskarte in der Graphikverarbeitungs-Engine 2810 von 28 verwendet.
  • 29 ist ein Blockdiagramm von Hardwarelogik eines Graphikprozessorkerns 2900 gemäß mindestens einer hier beschriebenen Ausführungsform. In mindestens einer Ausführungsform kann der Graphikprozessorkern 2900, manchmal auch als ein Kern-Slice bezeichnet, ein oder mehrere Graphikkerne innerhalb eines modularen Graphikprozessors sein. In mindestens einer Ausführungsform ist der Graphikprozessorkern 2900 beispielhaft für ein Graphikkern-Slice, und ein Graphikprozessor, wie hier beschrieben, kann mehrere Graphikkern-Slices basierend auf einer Sollleistung und Leistungshüllen umfassen. In mindestens einer Ausführungsform kann jeder Graphikkern 2900 einen Festfunktionsblock 2930 umfassen, der mit mehreren, auch als Sub-Slices bezeichneten Teilkernen 2901A-2901F gekoppelt ist, die modulare Blöcke von Allzweck- und Festfunktionslogik umfassen.
  • In mindestens einer Ausführungsform umfasst der Festfunktionsblock 2930 eine Geometrie- und Festfunktions-Pipeline 2936, die von allen Teilkernen in dem Graphikprozessor 2900 beispielsweise bei Implementierungen von Graphikprozessoren mit geringerer Leistung und/oder geringerer Stromaufnahme gemeinsam genutzt werden kann. In mindestens einer Ausführungsform umfasst die Geometrie- und Festfunktions-Pipeline 2936 eine 3D-Festfunktions-Pipeline, eine Video-Frontend-Einheit, einen Thread-Spawner und Thread-Abfertiger sowie einen Unified Return Buffer Manager, der vereinheitlichte Rückgabepuffer verwaltet.
  • In mindestens einer Ausführungsform umfasst der Festfunktionsblock 2930 auch eine Graphik-SoC-Schnittstelle 2931, einen Graphik-Mikrocontroller 2938 und eine Medien-Pipeline 2939. Die Graphik-SoC-Schnittstelle 2937 stellt eine Schnittstelle zwischen dem Graphikkern 2900 und anderen Prozessorkernen innerhalb einer integrierten SoC-Schaltung bereit. In mindestens einer Ausführungsform ist der Graphik-Mikrocontroller 2938 ein programmierbarer Subprozessor, der konfiguriert sein kann, um verschiedene Funktionen des Graphikprozessors 2900 zu verwalten, einschließlich der Thread-Versendung, des Scheduling und der Präemption. In mindestens einer Ausführungsform umfasst die Medien-Pipeline 2939 Logik zur Erleichterung der Decodierung, Codierung, Vorverarbeitung und/oder Nachbearbeitung von Multimedia-Daten, einschließlich Bild- und Videodaten. In mindestens einer Ausführungsform implementiert die Medien-Pipeline 2939 Medienoperationen über Anforderungen an Berechnungs- oder Abtast-Logik innerhalb der Teilkerne 2901-2901F.
  • In mindestens einer Ausführungsform ermöglicht die SoC-Schnittstelle 2937 dem Graphikkern 2900, mit Allzweck-Anwendungsprozessorkernen (z.B. CPUs) und/oder anderen Komponenten innerhalb eines SoC, einschließlich Speicherhierarchieelementen, wie beispielsweise gemeinsam genutztem Last Level Cache-Speicher, System-RAM und/oder eingebettetem On-Chip- oder On-Package-DRAM, zu kommunizieren. In mindestens einer Ausführungsform kann die SoC-Schnittstelle 2937 auch Kommunikation mit Vorrichtungen mit fester Funktion innerhalb eines SoC ermöglichen, wie beispielsweise Kameraabbildungspipelines, und ermöglicht die Verwendung und/oder Implementierung globaler Speicher-Atome, die zwischen dem Graphikkern 2900 und CPUs innerhalb eines SoC gemeinsam genutzt werden können. In mindestens einer Ausführungsform kann die SoC-Schnittstelle 2937 auch Energieverwaltungssteuerungen für den Graphikkern 2900 implementieren und eine Schnittstelle zwischen einer Taktdomäne des Graphikkerns 2900 und anderen Taktdomänen innerhalb eines SoC ermöglichen. In mindestens einer Ausführungsform ermöglicht die SoC-Schnittstelle 2937 den Empfang von Befehlspuffern von einem Befehlsstreamer und einem globalen Thread-Versender, die konfiguriert sind, um Befehle und Anweisungen an jeden eines einzelnen oder mehrerer Graphikkerne innerhalb eines Graphikprozessors bereitzustellen. In mindestens einer Ausführungsform können Befehle und Anweisungen an die Medien-Pipeline 2939, wenn Medienoperationen durchzuführen sind, oder an eine Geometrie- und Festfunktions-Pipeline (z.B. Geometrie- und Festfunktions-Pipeline 2936, Geometrie- und Festfunktions-Pipeline 2914), wenn Graphikverarbeitungsoperationen durchzuführen sind, gesendet werden.
  • In mindestens einer Ausführungsform kann der Graphik-Mikrocontroller 2938 konfiguriert sein, um verschiedene Planungs- und Verwaltungsaufgaben für den Graphikkern 2900 auszuführen. In mindestens einer Ausführungsform kann der Graphik-Mikrocontroller 2938 eine Graphik- und/oder Rechen-Arbeitslast-Planung auf verschiedenen parallelen Graphik-Engines innerhalb der Ausführungseinheit (EU)-Anordnungen 2902A-2902F, 2904A-2904F innerhalb der Teilkerne 2901A-2901F durchführen. In mindestens einer Ausführungsform kann Host-Software, die auf einem CPU-Kern eines SoC mit dem Graphikkern 2900 ausgeführt wird, Arbeitslasten einer von mehreren Graphikprozessortürklingeln übergeben, welche einen Planungsvorgang auf einer geeigneten Graphik-Engine auslösen. In mindestens einer Ausführungsform umfassen Planungsoperationen ein Bestimmen, welche Arbeitslast als nächstes auszuführen ist, ein Übermitteln einer Arbeitslast an einen Befehlsstreamer, ein Vorbelegen existierender Arbeitslasten, die auf einer Engine ausgeführt werden, ein Überwachen des Fortschreitens einer Arbeitslast und ein Benachrichtigen der Host-Software, wenn eine Arbeitslast abgeschlossen ist. In mindestens einer Ausführungsform kann der Graphik-Mikrocontroller 2938 auch Zustände mit geringer Stromaufnahme oder Leerlaufzustände für den Graphikkern 2900 ermöglichen, die dem Graphikkern 2900 die Möglichkeit geben, Register innerhalb des Graphikkerns 2900 über Zustandsübergänge mit geringem Stromverbrauch unabhängig von einem Betriebssystem und/oder einer Graphiktreibersoftware auf einem System zu speichern und wiederherzustellen.
  • In mindestens einer Ausführungsform kann der Graphikkern 2900 mehr als oder weniger als die veranschaulichten Teilkerne 2901A-2901F und bis hin zu N modularen Teilkernen aufweisen. Für jeden Satz von N-Teilkernen kann der Graphikkern 2900 in mindestens einer Ausführungsform auch eine gemeinsam genutzte Funktionslogik 2910, einen gemeinsam genutzten und/oder Cache-Speicher 2912, eine Geometrie/Festfunktions-Pipeline 2914 sowie zusätzliche Festfunktionslogik 2916 zur Beschleunigung verschiedener Graphik- und Rechenverarbeitungsoperationen umfassen. In mindestens einer Ausführungsform kann die gemeinsam genutzte Funktionslogik 2910 Logikeinheiten (z.B. Abtaster-, Mathematik- und/oder Inter-Thread-Kommunikationslogik) umfassen, die von allen N Teilkernen innerhalb des Graphikkerns 2900 gemeinsam genutzt werden können. Gemeinsam genutzter und/oder Cache-Speicher 2912 kann ein Last-Level-Cache für die N Teilkerne 2901A-2901F innerhalb des Graphikkerns 2900 sein und kann ebenfalls als gemeinsam genutzter Speicher dienen, auf den mehrere Teilkerne zugreifen können. In mindestens einer Ausführungsform kann die Geometrie/Festfunktions-Pipeline 2914 anstelle der Geometrie/Festfunktions-Pipeline 2936 innerhalb des Festfunktionsblocks 2930 aufgenommen sein und kann gleiche oder ähnliche Logikeinheiten umfassen.
  • In mindestens einer Ausführungsform umfasst der Graphikkern 2900 zusätzliche Festfunktionslogik 2916, die verschiedene Festfunktionsbeschleunigungslogik zur Verwendung durch den Graphikkern 2900 umfassen kann. In mindestens einer Ausführungsform umfasst die zusätzliche Festfunktionslogik in Nur-Positions-Shading. Bei dem Nur-Positions-Shading existieren mindestens zwei Geometrie-Pipelines, während in einer Vollgeometrie-Pipeline innerhalb der Geometrie-/Festfunktions-Pipeline 2916, 2936, und eine Cull-Pipeline, welche eine zusätzliche Geometrie-Pipeline ist, welche innerhalb der zusätzlichen Festfunktionslogik 2916 umfasst sein kann. In mindestens einer Ausführungsform ist die Cull-Pipeline eine abgespeckte Version einer Vollgeometrie-Pipeline. In mindestens einer Ausführungsform können eine Vollpipeline und eine Cull-Pipeline verschiedene Instanzen einer Anwendung ausführen, wobei jede Instanz einen separaten Kontext hat. In mindestens einer Ausführungsform kann das Nur-Positions-Shading lange Cull-Läufe verworfener Dreiecke verbergen, so dass das Shading in einigen Fällen früher abgeschlossen werden kann. Beispielsweise kann in mindestens einer Ausführungsform Cull-Pipeline-Logik innerhalb der zusätzlichen Festfunktionslogik 2916 Positions-Shader parallel zu einer Hauptanwendung ausführen und erzeugt im Allgemeinen kritische Ergebnisse schneller als eine Vollpipeline, da die Cull-Pipeline das Attribut der Position von Vertices holt und schattiert, ohne eine Rasterisierung und ein Rendering von Pixeln in einem Einzelbild-Puffer durchzuführen. In mindestens einer Ausführungsform kann die Cull-Pipeline erzeugte kritische Ergebnisse verwenden, um Sichtbarkeitsinformationen für alle Dreiecke unabhängig davon zu berechnen, ob diese Dreiecke gecullt werden. In mindestens einer Ausführungsform kann eine Vollpipeline (welche in diesem Fall als eine Wiedergabepipeline bezeichnet werden kann) Sichtbarkeitsinformationen verbrauchen, um gecullte Dreiecke zu überspringen, um nur sichtbare Dreiecke zu schattieren, die schließlich an eine Rasterisierungsphase übergeben werden.
  • In mindestens einer Ausführungsform kann die zusätzliche Festfunktionslogik 2916 auch eine maschinell lernende Beschleunigungslogik, wie beispielsweise eine Festfunktion-Matrix-Multiplikationslogik, für Implementierungen einschließlich Optimierungen für das Training oder die Inferenzierung des maschinellen Lernens umfassen.
  • In mindestens einer Ausführungsform ist innerhalb jedes Graphik-Teilkerns 2901A-2901F ein Satz von Ausführungsressourcen umfasst, die verwendet werden können, um Graphik-, Medien- und Rechenoperationen im Ansprechen auf Anfragen von der Graphikpipeline, der Medien-Pipeline oder von Shader-Programmen durchzuführen. In mindestens einer Ausführungsform umfassen die Graphik-Teilkerne 2901A-2901F mehrere EU-Arrays 2902A-2902F, 2904A-2904F, Thread-Abfertigungs- und Inter-Thread-Kommunikationslogik 2903A-2903F, einen 3D-Abtaster 2905A-2905F, einen Medien-Abtaster 2906A-2906F, einen Shaderprozessor 2907A-2907F und einen gemeinsam genutzten lokalen Speicher (SLM) 2908A-2908F. Die EU-Arrays 2902A-2902F, 2904A-2904F umfassen jeweils mehrere Ausführungseinheiten, welche universelle Graphikverarbeitungseinheiten sind, die in der Lage sind, Gleitkomma- und Ganzzahl/Festpunkt-Logikoperationen im Dienst einer Graphik-, Medien- oder Rechenoperation durchzuführen, einschließlich von Graphik-, Medien- oder Rechen-Shader-Programmen. In mindestens einer Ausführungsform führt eine TD/IC-Logik 2903A-2903F lokale Thread-Abfertigungs- und Thread-Steuer-Operationen für Ausführungseinheiten innerhalb eines Teilkerns durch und erleichtert die Kommunikation zwischen Threads, die auf Ausführungseinheiten eines Teilkerns ausgeführt werden. In mindestens einer Ausführungsform kann der 3D-Abtaster 2905A-2905F Texturen oder andere 3D-Graphikdaten in den Speicher einlesen. In mindestens einer Ausführungsform kann der 3D-Abtaster Texturdaten unterschiedlich lesen, basierend auf einem konfigurierten Abtastzustand und einem Texturformat, das einer bestimmten Textur zugeordnet ist. In mindestens einer Ausführungsform kann der Medien-Abtaster 2906A-2906F ähnliche Leseoperationen durchführen, die auf einem Typ und einem Format basieren, der/das Mediendaten zugeordnet ist. In mindestens einer Ausführungsform kann jeder Graphik-Teilkern 2901A-2901F abwechselnd einen einheitlichen 3D- und Medien-Abtaster umfassen. In mindestens einer Ausführungsform können Threads, die auf Ausführungseinheiten innerhalb jedes der Teilkerne 2901A-2901F ausgeführt werden, den gemeinsam genutzten lokalen Speicher 2908A-2908F innerhalb jedes Teilkerns verwenden, um Threads, die innerhalb einer Thread-Gruppe ausgeführt werden, die Ausführung unter Verwendung eines gemeinsamen Pools von On-Chip-Speicher zu ermöglichen.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten hinsichtlich der Inferenzierungs- und/oder Trainingslogik 615 sind hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenzierungs- und/oder Trainingslogik 615 in den Graphikprozessor 2910 integriert sein. Beispielsweise können in mindestens einer Ausführungsform hier beschriebene Trainings- und/oder Inferenzierungs-Techniken eine oder mehrere der ALUs verwenden, die in der 3D-Pipeline 3010, dem Graphik-Mikrocontroller 2938, den Geometrie- und Festfunktions-Pipelines 2914 und 2936 oder einer anderen Logik in 26 verkörpert sind. Außerdem können in mindestens einer Ausführungsform die hier beschriebenen Inferenzierungs- und/oder Trainingsoperationen mit einer anderen Logik als der in 7A oder 7B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in On-Chip- oder Off-Chip-Speicher und/oder Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Graphikprozessors 2900 konfigurieren, um einen oder mehrere Algorithmen maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder die hier beschriebenen Trainingstechniken auszuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 29 gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte in dem Graphikprozessorkern 2900 von 29 verwendet.
  • 30A-30B veranschaulichen eine Threadausführungslogik 3000 einschließlich einer Anordnung von Verarbeitungselementen eines Graphikprozessorkerns gemäß mindestens einer Ausführungsform. 30A veranschaulicht mindestens eine Ausführungsform, bei welcher die Threadausführungslogik 3000 verwendet wird. 30B veranschaulicht interne Einzelheiten einer Ausführungseinheit gemäß mindestens einer Ausführungsform.
  • Wie in 30A veranschaulicht, umfasst die Thread-Ausführungslogik 3000 in mindestens einer Ausführungsform einen Shader-Prozessor 3002, einen Thread-Abfertiger 3004, einen Befehls-Cache 3006, eine Anordnung skalierbarer Ausführungseinheiten mit einer Mehrzahl von Ausführungseinheiten 3008A-3008N, einen Abtaster 3010, einen Daten-Cache 3012 und einen Datenport 3014. In mindestens einer Ausführungsform kann eine Anordnung skalierbarer Ausführungseinheiten dynamisch skaliert werden, indem eine oder mehrere Ausführungseinheiten (z.B. eine der Ausführungseinheiten 3008A, 3008B, 3008C, 3008D bis 3008N-1 und 3008N) basierend auf Berechnungsanforderungen einer Arbeitslast aktiviert oder deaktiviert werden. In mindestens einer Ausführungsform sind skalierbare Ausführungseinheiten über eine Zwischenverbindungsstruktur, die mit jeder der Ausführungseinheiten verbunden ist, miteinander verbunden. In mindestens einer Ausführungsform umfasst die Thread-Ausführungslogik 3000 eine oder mehrere Verbindungen zu Speicher, wie beispielsweise Systemspeicher oder Cache-Speicher, über eine oder mehrere des Befehls-Caches 3006, des Datenports 3014, des Abtasters 3010 und der Ausführungseinheiten 3008A-3008N. In mindestens einer Ausführungsform ist jede Ausführungseinheit (z.B. 3008A) eine eigenständige, programmierbare, universelle Recheneinheit, die in der Lage ist, mehrere Hardware-Threads gleichzeitig auszuführen, während mehrere Datenelemente für jeden Thread parallel verarbeitet werden. In mindestens einer Ausführungsform ist die Anordnung der Ausführungseinheiten 3008A-3008N skalierbar, um eine beliebige Anzahl einzelner Ausführungseinheiten zu umfassen.
  • In mindestens einer Ausführungsform werden die Ausführungseinheiten 3008A-3008N hauptsächlich zum Ausführen von Shader-Programmen verwendet. In mindestens einer Ausführungsform kann der Shader-Prozessor 3002 verschiedene Shader-Programme verarbeiten und Ausführungsthreads, die mit Shader-Programmen verknüpft sind, über einen Thread-Abfertiger 3004 versenden. In mindestens einer Ausführungsform umfasst der Thread-Abfertiger 3004 Logik, um Thread-Initiationsanforderungen von Graphik- und Medien-Pipelines zu arbitrieren und angeforderte Threads auf einer oder mehreren Ausführungseinheiten in den Ausführungseinheiten 3008A-3008N zu instanziieren. Beispielsweise kann in mindestens einer Ausführungsform eine Geometrie-Pipeline Vertex-, Tesselierungs- oder Geometrie-Shader an die Thread-Ausführungslogik zur Verarbeitung senden. In mindestens einer Ausführungsform kann der Thread-Abfertiger 3004 auch Laufzeit-Thread-Übergabe-Anforderungen von ausführenden Shader-Programmen verarbeiten.
  • In mindestens einer Ausführungsform unterstützen die Ausführungseinheiten 3008A-3008N einen Befehlssatz, der native Unterstützung vieler Standard-3D-Graphik-Shader-Anweisungen umfasst, so dass Shader-Programme aus Graphikbibliotheken (z.B. Direct 3D und OpenGL) mit einer minimalen Übersetzung ausgeführt werden. In mindestens einer Ausführungsform unterstützen Ausführungseinheiten Vertex- und Geometrie-Verarbeitung (z.B. Vertex-Programme, Geometrie-Programme, Vertex-Shader), Pixelverarbeitung (z.B. Pixel-Shader, Fragment-Shader) und Universalverarbeitung (z.B. Rechen- und Medien-Shader). In mindestens einer Ausführungsform ist jede der Ausführungseinheiten 3008A-3008N, die eine oder mehrere Arithmetik-Logikeinheiten (ALUs) umfassen, zu mehreren ausgegebenen Single Instruction Multiple Data (SIMD)-Ausführungen in der Lage, und ermöglicht der Multithread-Betrieb trotz Speicherzugriffen mit höherer Latenz eine effiziente Ausführungsumgebung. In mindestens einer Ausführungsform weist jeder Hardware-Thread innerhalb jeder Ausführungseinheit eine dedizierte Registerdatei mit hoher Bandbreite und einen zugehörigen unabhängigen Thread-Zustand auf. In mindestens einer Ausführungsform ist die Ausführung eine Mehrfachausgabe pro Takt an Pipelines, die zu Ganzzahlen, einfach und doppelt genauen Gleitkommaoperationen, SIMD-Zweigfähigkeit, logischen Operationen, transzendenten Operationen und anderen verschiedenen Operationen in der Lage sind. In mindestens einer Ausführungsform veranlasst, während auf Daten aus dem Speicher oder von einer der gemeinsam genutzten Funktionen gewartet wird, die Abhängigkeitslogik innerhalb der Ausführungseinheiten 3008A-3008N, dass ein wartender Thread schläft, bis angeforderte Daten zurückgegeben wurden. In mindestens einer Ausführungsform können Hardware-Ressourcen für die Verarbeitung anderer Threads bereitgestellt werden, während ein wartender Thread schläft. In mindestens einer Ausführungsform kann beispielsweise während einer Verzögerung in Zusammenhang mit einer Vertex-Shader-Operation, eine Ausführungseinheit Operationen für einen Pixel-Shader, einen Fragment-Shader oder eine andere Art von Shader-Programm durchführen, einschließlich eines unterschiedlichen Vertex-Shaders.
  • In mindestens einer Ausführungsform arbeitet jede Ausführungseinheit in den Ausführungseinheiten 3008A-3008N an Anordnungen bzw. Arrays von Datenelementen. In mindestens einer Ausführungsform ist eine Anzahl von Datenelementen „Ausführungsgröße“ oder Anzahl von Kanälen für eine Anweisung. In mindestens einer Ausführungsform ist ein Ausführungskanal eine logische Ausführungseinheit für den Zugriff auf Datenelemente, ein Maskieren und eine Ablaufsteuerung innerhalb von Anweisungen. In mindestens einer Ausführungsform kann eine Anzahl von Kanälen unabhängig von einer Anzahl physikalischer arithmetischer Logikeinheiten (Arithmetic Logic Units; ALUs) oder Gleitkommaeinheiten (Floating Point Units; FPUs) für einen bestimmten Graphikprozessor sein. In mindestens einer Ausführungsform unterstützen die Ausführungseinheiten 3008A-3008N Ganzzahl- und Gleitkomma-Datentypen.
  • In mindestens einer Ausführungsform umfasst ein Anweisungssatz für Ausführungseinheiten SIMD-Befehle. In mindestens einer Ausführungsform können verschiedene Datenelemente als ein gepackter Datentyp in einem Register gespeichert sein und eine Ausführungseinheit wird verschiedene Elemente basierend auf einer Datengröße der Elemente verarbeiten. Beispielsweise werden in mindestens einer Ausführungsform dann, wenn an einem 256-Bit breiten Vektor gearbeitet wird, 256 Bit eines Vektors in einem Register gespeichert und eine Ausführungseinheit arbeitet an einem Vektor als vier separate 64-Bit gepackte Datenelemente (Quad-Word (QW)-Größe-Datenelemente), acht separate 32-Bit gepackte Datenelementen (Double Word (DW)-Größe-Datenelemente), sechzehn separate 16-Bit gepackte Datenelementen (Word (W)-Größe-Datenelemente) oder zweiunddreißig separate 8-Bit-Datenelementen (Byte (B)-Größe-Datenelemente). In mindestens einer Ausführungsform sind jedoch unterschiedliche Vektorbreiten und Registergrößen möglich.
  • In mindestens einer Ausführungsform können eine oder mehrere Ausführungseinheiten zu einer fusionierten Ausführungseinheit 3009A-3009N mit einer Thread-Steuerlogik (3007A-3007N) kombiniert sein, die für fusionierte Ausführungseinheiten (Execution Units; EUs) . In mindestens einer Ausführungsform können mehrere EUs zu einer EU-Gruppe fusioniert sein. In mindestens einer Ausführungsform kann jede EU in der fusionierten EU-Gruppe konfiguriert sein, einen separaten SIMD-Hardware-Thread auszuführen. Die Anzahl von EUs in einer fusionierten EU-Gruppe variiert gemäß verschiedener Ausführungsformen. In mindestens einer Ausführungsform können pro EU verschiedene SIMD-Breiten durchgeführt werden, einschließlich, jedoch nicht beschränkt auf, SIMD8, SIMD16 und SIMD32. In mindestens einer Ausführungsform umfasst jede fusionierte Graphikausführungseinheit 3009A-3009N mindestens zwei Ausführungseinheiten. Beispielsweise umfasst in mindestens einer Ausführungsform die fusionierte Ausführungseinheit 3009A eine erste EU 3008A, eine zweite EU 3008B und eine Thread-Steuerlogik 3007A, die der ersten EU 3008A und der zweiten EU 3008B gemeinsam ist. In mindestens einer Ausführungsform steuert die Thread-Steuerlogik 3011A Threads, die auf der fusionierten Graphikausführungseinheit 3009A ausgeführt werden, welche jeder EU innerhalb der fusionierten Ausführungseinheiten 3009A-3009N erlaubt, unter Verwendung eines gemeinsamen Befehlszeigerregisters ausgeführt zu werden.
  • In mindestens einer Ausführungsform sind ein oder mehrere interne Befehls-Caches (z.B. 3006) in der Thread-Ausführungslogik 3000 umfasst, um Thread-Anweisungen für Ausführungseinheiten zwischenzuspeichern. In mindestens einer Ausführungsform sind ein oder mehrere Daten-Caches (z.B. 3012) umfasst, um Thread-Daten während der Thread-Ausführung zwischenzuspeichern. In mindestens einer Ausführungsform ist ein Abtaster 3010 umfasst, um eine Texturabtastung für 3D-Operationen und eine Medienabtastung für Medienoperationen bereitzustellen. In mindestens einer Ausführungsform umfasst der Abtaster 3010 eine spezialisierte Textur- oder Medien-Abtastfunktionalität, um Textur- oder Mediendaten während des Abtastprozesses zu verarbeiten, bevor abgetastete Daten an eine Ausführungseinheit bereitgestellt werden.
  • Während der Ausführung senden in mindestens einer Ausführungsform Graphik- und Medien-Pipelines Thread-Initiationsanforderungen über Thread-Übergabe- und Sende-Logik an die Thread-Ausführungslogik 3000. In mindestens einer Ausführungsform wird, sobald eine Gruppe von geometrischen Objekten verarbeitet und in Pixeldaten gerastert wurde, eine Pixelprozessorlogik (z.B. Pixel-Shader-Logik, Fragment-Shader-Logik usw.) innerhalb des Shader-Prozessors 3002 aufgerufen, um Ausgabeinformationen weiter zu berechnen und zu veranlassen, dass Ergebnisse auf Ausgabeoberflächen (z.B. Farbpuffer, Tiefenpuffer, Schablonenpuffer usw.) geschrieben werden. In mindestens einer Ausführungsform berechnet ein Pixel-Shader oder Fragment-Shader Werte verschiedener Vertex-Attribute, die über ein gerastertes Objekt hinweg zu interpolieren sind. In mindestens einer Ausführungsform führt die Pixelprozessorlogik innerhalb des Shader-Prozessors 3002 dann ein von der Anwendungsprogrammierschnittstelle (API) bereitgestelltes Pixel- oder Fragment-Shader-Programm aus. In mindestens einer Ausführungsform sendet, um ein Shader-Programm auszuführen, der Shader-Prozessor 3002 Threads über den Thread-Abfertiger 3004 an eine Ausführungseinheit (z.B. 3008A). In mindestens einer Ausführungsform verwendet der Shader-Prozessor 3002 Texturabtastlogik in dem Abtaster 3010, um auf Texturdaten in im Speicher gespeicherten Texturkarten zuzugreifen. In mindestens einer Ausführungsform berechnen arithmetische Operationen auf Texturdaten und zugeführten Geometriedaten Pixelfarbdaten für jedes geometrische Fragment oder verwerfen ein oder mehrere Pixel aus der weiteren Verarbeitung.
  • In mindestens einer Ausführungsform stellt ein Datenport 3014 einen Speicherzugriffsmechanismus für die Thread-Ausführungslogik 3000 bereit, um verarbeitete Daten zur weiteren Verarbeitung auf einer Graphikprozessor-Ausgabepipeline an den Speicher auszugeben. In mindestens einer Ausführungsform umfasst oder koppelt der Datenport 3014 einen oder mehrere Cache-Speicher (z.B. Daten-Cache 3012), um Daten für einen Speicherzugriff über einen Datenport zwischenzuspeichern.
  • Wie in 30B veranschaulicht, kann in mindestens einer Ausführungsform eine Graphikausführungseinheit 3008 eine Anweisungsabrufeinheit 3037, eine allgemeine Registerdateianordnung (GRF) 3024, eine architektonische Registerdateianordnung (ARF) 3026, einen Thread-Arbiter 3022, eine Sendeeinheit 3030, eine Verzweigungseinheit 3032, einen Satz von SIMD-Gleitkommaeinheiten (FPUs) 3034 und in mindestens einer Ausführungsform einen Satz von dedizierten ganzzahligen SIMD ALUs 3035 umfassen. In mindestens einer Ausführungsform umfassen die GRF 3024 und die ARF 3026 einen Satz von allgemeinen Registerdateien und Architekturregisterdateien, die jedem gleichzeitigen Hardware-Thread zugeordnet sind, der in der Graphikausführungseinheit 3008 aktiv sein kann. In mindestens einer Ausführungsform wird der Architekturzustand pro Thread in der ARF 3026 beibehalten, während Daten, die während der Thread-Ausführung verwendet werden, in der GRF 3024 gespeichert werden. In mindestens einer Ausführungsform kann der Ausführungszustand jedes Threads, einschließlich von Befehlszeigern für jeden Thread, in threadspezifischen Registern in der ARF 3026 gehalten werden.
  • In mindestens einer Ausführungsform weist die Graphikausführungseinheit 3008 eine Architektur auf, die eine Kombination aus simultanem Multi-Threading (SMT) und feinkörnigem Interleaved Multi-Threading (IMT) ist. In mindestens einer Ausführungsform weist die Architektur eine modulare Konfiguration auf, die zur Designzeit auf der Grundlage einer Sollanzahl gleichzeitiger Threads und der Anzahl von Registern pro Ausführungseinheit verfeinert werden kann, wobei Ausführungseinheitsressourcen über Logik hinweg verteilt sind, die zum Ausführen mehrerer gleichzeitiger Threads verwendet wird.
  • In mindestens einer Ausführungsform kann die Graphikausführungseinheit 3008 mehrere Anweisungen gemeinsam ausgeben, welche jeweils unterschiedliche Anweisungen sein können. In mindestens einer Ausführungsform kann der Thread-Arbiter 3022 des Graphikausführungseinheit-Threads 3008 Anweisungen an eine der Sendeeinheit 3030, der Verzweigungseinheit 3042 oder der SIMD FPU(s) 3034 zur Ausführung senden. In mindestens einer Ausführungsform kann jeder Ausführungsthread auf 128 Universalregister innerhalb der GRF 3024 zugreifen, wobei jedes Register 32 Bytes speichern kann, die als ein SIMD 8-Elementvektor von 32-Bit-Datenelementen zugänglich sind. In mindestens einer Ausführungsform weist jeder Thread der Ausführungseinheit Zugriff auf 4 KByte innerhalb der GRF 3024 auf, obwohl Ausführungsformen nicht so beschränkt sind und mehr oder weniger Registerressourcen in anderen Ausführungsformen bereitgestellt sein können. In mindestens einer Ausführungsform können bis zu sieben Threads gleichzeitig ausgeführt werden, obwohl auch eine Anzahl von Threads pro Ausführungseinheit je nach Ausführungsform variieren kann. In mindestens einer Ausführungsform, in welcher sieben Threads auf 4 KByte zugreifen können, kann die GRF 3024 insgesamt 28 KByte speichern. In mindestens einer Ausführungsform können flexible Adressierungsmodi Registern ermöglichen, gemeinsam adressiert zu werden, um breitere Register wirksam aufzubauen oder schrittförmige rechteckige Blockdatenstrukturen darzustellen.
  • In mindestens einer Ausführungsform werden Speicheroperationen, Abtasteroperationen und andere Systemkommunikationen mit längerer Latenz über „Sende“-Anweisungen gesendet, die durch eine Nachrichtenübergabe-Sendeeinheit 3030 ausgeführt werden. In mindestens einer Ausführungsform werden Verzweigungsanweisungen an eine dedizierte Verzweigungseinheit 3032 gesendet, um SIMD-Divergenz und eventuelle Konvergenz zu erleichtern.
  • In mindestens einer Ausführungsform umfasst die Ausführungseinheit 3008 eine oder mehrere SIMD-Gleitkommaeinheiten (FPU(s)) 3034 zum Durchführen von Gleitkommaoperationen. In mindestens einer Ausführungsform unterstützen die FPU(s) 3034 auch Ganzzahlberechnungen. In mindestens einer Ausführungsform können die FPU(s) 3034 bis zu einer Anzahl M von 32-Bit Gleitkomma- (oder Ganzzahl-) Operationen SIMD-ausführen oder bis zu 2M 16-Bit Ganzzahl oder 16-Bit Gleitkomma-Operationen SIMD-ausführen. In mindestens einer Ausführungsform stellt mindestens eine der FPU(s) erweiterte mathematische Fähigkeiten zur Unterstützung von transzendentalen mathematischen Funktionen und doppeltgenaues 64-Bit-Gleitkomma mit hohem Durchsatz bereit.
  • In mindestens einer Ausführungsform ist auch ein Satz von 8-Bit Ganzzahl SIMD-ALUs 3035 vorhanden, und kann speziell optimiert sein, um Operationen im Zusammenhang mit Berechnungen zum maschinellen Lernen durchzuführen.
  • In mindestens einer Ausführungsform können Arrays von mehreren Instanzen der Graphikausführungseinheit 3008 in einer Graphik-Teilkerngruppierung (z.B. einer Sub-Slice) instanziiert sein. In mindestens einer Ausführungsform kann die Ausführungseinheit 3008 Anweisungen über eine Mehrzahl von Ausführungskanälen hinweg ausführen. In mindestens einer Ausführungsform wird jeder auf der Graphikausführungseinheit 3008 ausgeführte Thread auf einem unterschiedlichen Kanal ausgeführt.
  • Die Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 615 sind hier in Verbindung mit 6A und/oder 6B bereitgestellt. In mindestens einer Ausführungsform können Abschnitt der oder die gesamte Inferenzierungs- und/oder Trainingslogik 615 in die Ausführungslogik 3000 integriert sein. Darüber hinaus können in mindestens einer Ausführungsform hier beschriebene Inferenzierungs- und/oder Trainingsoperationen mit einer anderen Logik als der in 7A oder 7B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in On-Chip- oder Off-Chip-Speicher und/oder Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs der Ausführungslogik 3000 konfigurieren, um einen oder mehrere Algorithmen maschinellen Lernens, Lernalgorithmen, neuronale Netzwerkarchitekturen, Anwendungsfälle oder die hier beschriebenen Trainingstechniken auszuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 30A und/oder 30B gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte in der Thread-Ausführungslogik 3000 von 30A und/oder in der Graphikausführungseinheit 3008 von 30B verwendet.
  • 31 veranschaulicht eine Parallelverarbeitungs-Einheit („PPU“) 3100 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist die PPU 3100 mit einem maschinenlesbarem Code konfiguriert, der, falls von der PPU 3100 ausgeführt, die PPU 3100 veranlasst, einige oder sämtliche der Prozesse und Techniken durchzuführen, die in dieser Offenbarung durchweg beschrieben sind. In mindestens einer Ausführungsform ist die PPU 3100 ein Multi-Threaded-Prozessor, der auf einer oder mehreren integrierten Schaltungsvorrichtungen implementiert ist, und der Multi-Threading als eine Latenz-verbergende Architektur benutzt, die ausgestaltet ist, um computerlesbare Anweisungen (auch als maschinenlesbare Anweisungen oder einfach als Anweisungen bezeichnet) an mehreren Threads parallel zu verarbeiten. In mindestens einer Ausführungsform bezieht sich ein Thread auf einen Ausführungsthread und ist eine Instanziierung eines Satzes von Anweisungen, die konfiguriert sind, um von der PPU 3100 ausgeführt zu werden. In mindestens einer Ausführungsform ist die PPU 3100 eine Graphikverarbeitungseinheit („GPU“), die konfiguriert ist, um eine Graphik-Rendering-Pipeline zur Verarbeitung von dreidimensionalen („3D“) Graphikdaten zu implementieren, um zweidimensionale („2D“) Bilddaten zur Anzeige auf einer Anzeigevorrichtung, wie beispielsweise einer Flüssigkristallanzeige(„LCD“)-Vorrichtung, zu erzeugen. In mindestens einer Ausführungsform wird die PPU 3100 benutzt, um Rechnungen, wie beispielsweise Operationen der linearen Algebra und Operationen des Maschinenlernens durchführen. 31 veranschaulicht ein Beispiel eines parallelen Prozessors lediglich für veranschaulichende Zwecke und sollte als ein nicht einschränkendes Beispiel von Prozessorarchitekturen ausgelegt werden, die im Umfang dieser Offenbarung in Betracht gezogen werden und die jeder geeignete Prozessor einsetzen kann, um dasselbe zu ergänzen und/oder zu ersetzen.
  • In mindestens einer Ausführungsform sind eine oder mehrere PPUs 3100 konfiguriert, um HPC(High Performance Computing), Rechenzentrum und Anwendungen maschinellen Lernens zu beschleunigen. In mindestens einer Ausführungsform ist die PPU 3100 konfiguriert, um Systeme und Anwendungen für tiefes Lernen zu beschleunigen, welche die folgenden nicht einschränken Beispiele umfassen: autonome Fahrzeugplattformen, tiefes Lernen, hochgenaue Sprache, Bild, Texterkennungssysteme, intelligente Videoanalyse, molekulare Simulationen, Wirkstoffentdeckung, Krankheitsdiagnose, Wettervorhersage, Analyse großer Datenmengen, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotertechnik, Fabrikautomation, Sprachübersetzung in Echtzeit, Online-Suchoptimierungen und personalisierte Benutzerempfehlungen und mehr.
  • In mindestens einer Ausführungsform umfasst die PPU 3100, ohne darauf beschränkt zu sein, eine Eingabe/Ausgabe(„E/A“)-Einheit 3106, eine Frontend-Einheit 3110, eine Planer-Einheit 3112, eine Arbeitsverteilungs-Einheit 3114, einen Hub 3116, eine Kreuzschiene („Xbar“) 3120, einen oder mehrere allgemeine Verarbeitungscluster („GPCs“) 3118 und eine oder mehrere Partitions-Einheiten („Speicherpartitions-Einheiten“) 3122. In mindestens einer Ausführungsform ist die PPU 3100 mit einem Host-Prozessor oder anderen PPUs 3100 über einen oder mehrere Hochgeschwindigkeits-GPU-Zwischenverbindungen („GPU-Zwischenverbindungen“) 3108 verbunden. In mindestens einer Ausführungsform ist die PPU 3100 mit einem Host-Prozessor oder anderen peripheren Vorrichtungen über eine Zwischenverbindung 3102 verbunden. In mindestens einer Ausführungsform ist die PPU 3100 mit einem lokalen Speicher verbunden, der eine oder mehrere Speichervorrichtungen („Speicher“) 3104 umfasst. In mindestens einer Ausführungsform umfassen die Speichervorrichtungen 3104, ohne darauf beschränkt zu sein, eine oder mehrere Direktzugriffsspeicher(„DRAM“)-Vorrichtungen. In mindestens einer Ausführungsform sind eine oder mehrere DRAM-Vorrichtungen als HBM(Speicher mit hoher Bandbreite)-Teilsysteme konfiguriert und/oder konfigurierbar, wobei mehrere DRAM-Dies innerhalb jeder Vorrichtung gestapelt sind.
  • In mindestens einer Ausführungsform kann sich die Hochgeschwindigkeits-GPU-Zwischenverbindung 3108 auf eine drahtgebundene mehrspurige Kommunikationsverbindung beziehen, die von Systemen verwendet wird, um eine oder mehrere PPUs 3100 zu skalieren und zu umfassen, die mit einer oder mehreren zentralen Verarbeitungseinheiten („CPUs“) kombiniert sind, unterstützt Cache-Kohärenz zwischen den PPUs 3100 und CPUs sowie CPU-Mastering. In mindestens einer Ausführungsform werden Daten und/oder Befehle mittels der Hochgeschwindigkeits-GPU-Zwischenverbindung 3108 durch den Hub 3116 an/von anderen Einheiten der PPU 3100 übertragen, wie beispielsweise eine oder mehrere Kopier-Engines, Videocodierer, Videodecodierer, Leistungsverwaltungseinheiten und andere Komponenten, die in 31 nicht explizit veranschaulicht werden können.
  • In mindestens einer Ausführungsform ist die E/A-Einheit 3106 konfiguriert, um Kommunikationen (d.h. Befehle, Daten usw.) von einem Host-Prozessor (in 31 nicht gezeigt) über den Systembus 3102 zu übertragen und zu empfangen. In mindestens einer Ausführungsform kommuniziert die E/A-Einheit 3106 direkt mit dem Host-Prozessor über den Systembus 3102 oder durch eine oder mehrere Zwischenvorrichtungen, wie beispielsweise eine Speicherbrücke. In mindestens einer Ausführungsform kann die E/A-Einheit 3106 mit einem oder mehreren anderen Prozessoren, wie beispielsweise eine oder mehrere PPUs 3199, über den Systembus 3102 kommunizieren. In mindestens einer Ausführungsformen implementiert die E/A-Einheit 3106 eine Peripheral Component Interconnect Express(„PCIe“)-Schnittstelle für Kommunikationen über einen PCIe-Bus und der Systembus 3102 ist ein PCIe-Bus. In mindestens einer Ausführungsform implementiert die E/A-Einheit 3106 Schnittstellen zum Kommunizieren mit externen Vorrichtungen.
  • In mindestens einer Ausführungsform decodiert die E/A-Einheit 3106 Pakete, die über den Systembus 3102 empfangen wurden. In mindestens einer Ausführungsform stellen mindestens einige Pakete Befehle dar, die konfiguriert sind, um die PPU 3100 zu veranlassen, verschiedene Operationen durchzuführen. In mindestens einer Ausführungsform überträgt die E/A-Einheit 3106 decodierte Befehle an verschiedene andere Einheiten der PPU 3100, wie durch Befehle spezifiziert. In mindestens einer Ausführungsform werden Befehle an die Frontend-Einheit 3110 und/oder an den Hub 3116 oder andere Einheiten der PPU 3100 übertragen, wie beispielsweise eine oder mehrere Kopier-Engines, einen Video-Codierer, einen Video-Decodierer, eine Leistungsverwaltungseinheit usw. (in 31 nicht explizit gezeigt). In mindestens einer Ausführungsform ist die E/A-Einheit 3106 konfiguriert, um Kommunikationen zwischen und unter verschiedenen logischen Einheiten der PPU 3100 weiterzuleiten.
  • In mindestens einer Ausführungsform codiert ein von dem Host-Prozessor ausgeführtes Programm einen Befehlsstrom in einem Puffer, welcher der PPU 3100 Arbeitslasten zur Verarbeitung bereitstellt. In mindestens einer Ausführungsform umfasst eine Arbeitslast Anweisungen und Daten, die durch diese Anweisungen zu verarbeiten sind. In mindestens einer Ausführungsform ist der Puffer eine Region in einem Speicher, der von sowohl dem Host-Prozessor als auch der PPU 3100 zugänglich ist (d.h. Lesen/Schreiben) - eine Host-Schnittstelleneinheit kann konfiguriert sein, um auf den Puffer in einem Systemspeicher, der mit dem Systembus 3102 verbunden ist, über Speicheranforderungen zuzugreifen, die über den Systembus 3102 durch die E/A-Einheit 3106 übertragen werden. In mindestens einer Ausführungsform schreibt der Host-Prozessor den Befehlsstrom in den Puffer und überträgt dann einen Zeiger zu einem Start des Befehlsstroms an die PPU 3100, so dass die Frontend-Einheit 3110 Zeiger zu einem oder mehreren Befehlsströme empfängt und einen oder mehrere Befehlsströme verwaltet, Befehle aus den Befehlsströmen liest und Befehle an verschiedene Einheiten der PPU 3100 weiterleitet.
  • In mindestens einer Ausführungsform ist die Frontend-Einheit 3110 mit einer Planer-Einheit 3112 gekoppelt, die verschiedene GPCs 3118 konfiguriert, um Aufgaben zu verarbeiten, die durch einen oder mehrere Befehlsströme definiert sind. In mindestens einer Ausführungsform ist die Planer-Einheit 3112 konfiguriert, um Zustandsinformation zu verfolgen, die verschiedene Aufgaben betrifft, die von der Planer-Einheit 3112 verwaltet werden, wobei die Zustandsinformation angeben kann, welchem der GPCs 3118 eine Aufgabe zugewiesen ist, ob die Aufgabe aktiv oder inaktiv ist, ein Prioritätsniveau einer Aufgabe zugeordnet ist, und so weiter. In mindestens einer Ausführungsform verwaltet die Planer-Einheit 3112 die Ausführung mehrerer Aufgaben auf einem oder mehreren der GPCs 3118.
  • In mindestens einer Ausführungsform ist die Planer-Einheit 3112 mit einer Arbeitsverteilungs-Einheit 3114 gekoppelt, die konfiguriert ist, um Aufgaben zur Ausführung auf GPCs 3118 zu versenden. In mindestens einer Ausführungsform verfolgt die Arbeitsverteilungs-Einheit 3114 eine Anzahl von eingeplanten Aufgaben, die von der Planer-Einheit 3112 empfangen werden, und die Arbeitsverteilungs-Einheit 3114 verwaltet einen Pool für anstehende Aufgaben und einen Pool für aktive Aufgaben für jeden der GPCs 3118. In mindestens einer Ausführungsform umfasst der Pool für anstehende Aufgaben eine Anzahl von Schlitzen (z.B. 31 Schlitze), die Aufgaben enthalten, die zugewiesen sind, um von einem bestimmten GPC 3118 verarbeitet zu werden; ein Pool für aktive Aufgaben kann eine Anzahl von Schlitzen (z.B. 4 Schlitze) für Aufgaben umfassen, die von den GPCs 3118 aktiv verarbeitet werden, so dass, wenn einer der GPCs 3118 die Ausführung einer Aufgabe abschließt, diese Aufgabe aus dem Pool für aktive Aufgaben für den GPC 3118 geräumt wird und eine der anderen Aufgaben aus dem Pool für anstehende Aufgaben ausgewählt und zur Ausführung auf dem GPC 3118 eingeplant wird. In mindestens einer Ausführungsform, wenn eine aktive Aufgabe auf dem GPC 3118 inaktiv ist, wie beispielsweise während darauf gewartet wird, dass eine Datenabhängigkeit behoben wird, dann wird die aktive Aufgabe aus dem GPC 3118 geräumt und zu dem Pool für anstehende Aufgaben zurückgeführt, während eine andere Aufgabe in dem Pool für anstehende Aufgaben ausgewählt und zur Ausführung auf dem GPC 3118 eingeplant wird.
  • In mindestens einer Ausführungsform kommuniziert die Arbeitsverteilungs-Einheit 3114 mit einem oder mehreren GPCs 3118 über die Kreuzschiene bzw. XBar 3120. In mindestens einer Ausführungsform ist die XBar 3120 ein Zwischenverbindung-Netzwerk, das viele der Einheiten der PPU 3100 mit anderen Einheiten der PPU 3100 koppelt und konfiguriert sein kann, um die Arbeitsverteilungs-Einheit 3114 mit einem bestimmten GPC 3118 zu koppeln. In mindestens einer Ausführungsform können eine oder mehrere andere Einheiten der PPU 3100 ebenfalls mit der XBar 3120 über den Hub 3116 verbunden sein.
  • In mindestens einer Ausführungsform werden Aufgaben von der Planer-Einheit 3112 verwaltet und an einen der GPCs 3118 durch die Arbeitsverteilungs-Einheit 3114 abgefertigt. Der GPC 3118 ist konfiguriert, um eine Aufgabe zu verarbeiten und Ergebnisse zu erzeugen. In mindestens einer Ausführungsform können Ergebnisse von anderen Aufgaben innerhalb des GPC 3118 konsumiert werden, an einen unterschiedlichen GPC 3118 über die XBar 3120 weitergeleitet oder im Speicher 3104 gespeichert werden. In mindestens einer Ausführungsform können Ergebnisse in den Speicher 3104 über die Partitions-Einheiten 3122 geschrieben werden, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in/aus dem Speicher 3104 implementieren. In mindestens einer Ausführungsform können Ergebnisse an eine andere PPU 3104 oder CPU über die Hochgeschwindigkeit-GPU-Zwischenverbindung 3108 übertragen werden. In mindestens einer Ausführungsform umfasst die PPU 3100, ohne darauf beschränkt zu sein, eine Anzahl U von Partitions-Einheiten 3122, die gleich der Anzahl getrennter und unterschiedlicher Speichervorrichtungen 3104 ist, die mit der PPU 3100 gekoppelt sind. In mindestens einer Ausführungsform wird die Partitionseinheit 3122 ausführlicher hier in Verbindung mit 33 beschrieben.
  • In mindestens einer Ausführungsform führt ein Host-Prozessor einen Treiber-Kernel aus, der eine Anwendungsprogrammmier-Schnittstelle („API“) implementiert, die einer oder mehreren Anwendungen ermöglicht, die auf dem Host-Prozessor ausgeführt werden, Operationen zur Ausführung auf der PPU 3100 einzuplanen. In mindestens einer Ausführungsform werden mehrere Rechenanwendungen gleichzeitig von der PPU 3100 ausgeführt und die PPU 3100 stellt Isolierung, Dienstqualität (QoS) und unabhängige Adressräume für die mehreren Rechenanwendungen bereit. In mindestens einer Ausführungsform erzeugt eine Anwendung Anweisungen (z.B. in Form von API-Aufrufen), die einen Treiberkernel veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 3100 zu erzeugen, und der Treiberkernel gibt Aufgaben an einen oder mehrere Streams aus, die von der PPU 3100 verarbeitet werden. In mindestens einer Ausführungsform umfasst jede Aufgabe eine oder mehrere Gruppen von in Beziehung stehender Threads, die hier als ein Warp bezeichnet werden. In mindestens einer Ausführungsform umfasst ein Warp mehrere in Beziehung stehende Threads (z.B. 31 Threads), die parallel ausgeführt werden können. In mindestens einer Ausführungsform können sich kooperierende Threads auf mehrere Threads beziehen, die Anweisungen umfassen, um eine Aufgabe durchzuführen, und die Daten durch einen gemeinsam genutzten Speicher austauschen können. In mindestens einer Ausführungsform werden Threads und kooperierende Threads ausführlicher gemäß mindestens einer Ausführungsform in Verbindung mit 33 beschrieben.
  • Eine Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten hinsichtlich der Inferenzierungs- und/oder Trainingslogik 615 werden nachstehend in Verbindung mit 6A und/oder 9B bereitgestellt. In mindestens einer Ausführungsform wird ein tief lernenden Anwendungsprozessor verwendet, um ein maschinelles Lernmodell zu trainieren, wie beispielsweise ein neuronales Netzwerk, um Informationen vorherzusagen oder zu inferenzieren, die der PPU 3100 bereitgestellt werden. In mindestens einer Ausführungsform wird ein tief lernenden Anwendungsprozessor 3100 verwendet, um Informationen basierend auf einem trainierten maschinellen Lernmodell (z.B., neuronalen Netzwerk) zu inferenzieren und vorauszusagen, das durch einen anderen Prozessor oder System oder durch die PPU 3100 trainiert wurde. In mindestens einer Ausführungsform kann die PPU 3100 verwendet werden, um ein oder mehrere hier beschriebene Anwendungsfälle eines neuronalen Netzwerks durchzuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 31 gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und des Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte in der Parallelverarbeitungseinheit 3100 von 31 verwendet.
  • 32 veranschaulicht einen allgemeinen Verarbeitungscluster („GPC“) 3200 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der GPC 3200 der GPC 3118 von 31. In mindestens einer Ausführungsform umfasst jeder GPC 3200, ohne darauf beschränkt zu sein, eine Anzahl von Hardwareeinheiten zur Verarbeitung von Aufgaben, und jeder GPC 3200 umfasst, ohne darauf beschränkt zu sein, einen Pipeline-Manager 3202, eine Vor-Raster-Operationen-Einheit („PROP“) 3204, eine Raster-Engine 3208, eine Arbeitsverteilungs-Kreuzschiene („WDX“) 3216, eine Speicherverwaltungseinheit („MMU“) 3218 und einen oder mehrere Datenverarbeitungscluster („DPCs“) 3206 und jede geeignete Kombination von Teilen.
  • In mindestens einer Ausführungsform wird der Betrieb des GPC 3200 durch den Pipeline-Manager 3202 gesteuert. In mindestens einer Ausführungsform verwaltet der Pipeline-Manager 3202 die Konfiguration eines oder mehrerer DPCs 3206 zur Verarbeitung von Aufgaben, die dem GPC 3200 zugeteilt sind. In mindestens einer Ausführungsform konfiguriert der Pipeline-Manager 3202 mindestens einen von einem oder mehreren DPCs 3206, um mindestens einen Abschnitt einer Graphik-Rendering-Pipeline zu implementieren. In mindestens einer Ausführungsform ist ein DPC 3206 konfiguriert, um ein Vertex-Shader-Programm auf einem programmierbaren Streaming-Multiprozessor („SM“) 3214 auszuführen. In mindestens einer Ausführungsform ist der Pipeline-Manager 3202 konfiguriert, um Pakete, die von einer Arbeitsverteilungs-Einheit empfangen werden, an geeignete logische Einheiten innerhalb des GPC 3200 weiterzuleiten. In mindestens einer Ausführungsform können einige Pakete an Festfunktions-Hardwareeinheiten in dem PROP 3204 und/oder der Raster-Engine 3208 weitergeleitet werden, während andere Pakete an DPCs 3206 zur Verarbeitung durch eine Primitiven-Engine 3212 oder den SM 3214 weitergeleitet werden können. In mindestens einer Ausführungsform konfiguriert der Pipeline-Manager 3202 mindestens einen der DPCs, um ein neuronales Netzwerkmodell und/oder eine Rechen-Pipeline zu implementieren.
  • In mindestens einer Ausführungsform ist die PROP-Einheit 3204 konfiguriert, um in mindestens einer Ausführungsform Daten, die von der Raster-Engine 3208 und den DPCs 3206 erzeugt wurden, an eine Raster-Operationen(„ROP“)-Einheit in der Partitions-Einheit 3122 weiterzuleiten, die oben ausführlicher in Verbindung mit 31 beschrieben ist. In mindestens einer Ausführungsform ist die PROP-Einheit 3204 konfiguriert, um Optimierungen zur Farbenmischung durchzuführen, Pixeldaten zu organisieren, Adressenübersetzungen und mehr durchzuführen. In mindestens einer Ausführungsform umfasst die Raster-Engine 3208, ohne darauf beschränkt zu sein, eine Anzahl von Festfunktions-Hardwareeinheiten, die konfiguriert sind, um verschiedene Raster-Operationen in mindestens einer Ausführungsform durchzuführen, und die Raster-Engine 3208 umfasst, ohne darauf beschränkt zu sein, eine Setup-Engine, eine Grobraster-Engine, eine Aussonderungs-Engine, eine Abschneide-Engine, eine Feinraster-Engine und eine Kachelverschmelzende Engine und jede geeignete Kombination davon. In mindestens einer Ausführungsform empfängt die Setup-Engine transformierte Vertices und erzeugt Ebenengleichungen, die geometrischen Primitiven zugeordnet sind, die durch Vertices definiert werden; Ebenengleichungen werden an die Grobraster-Engine übertragen, um Abdeckungsinformation (z.B. eine (x,y)-Abdeckungsmaske für eine Kachel) für eine Primitive zu erzeugen; die Ausgabe der Grobraster-Engine wird an die Aussonderungs-Engine übertragen, wo Fragmente, die der Primitiven zugeordnet sind, die einen z-Test nicht bestehen, ausgesondert und an eine Abschneide-Engine übertragen werden, wo Fragmente, die außerhalb eines Betrachtungsstumpfes liegen, abgeschnitten werden. In mindestens einer Ausführungsform werden Fragmente, welche die Abschneidung und Aussonderung überleben, an die Feinraster-Engine weitergeben, um Attribute für Pixelfragmente basierend auf Ebenengleichungen zu erzeugen, die durch eine Setup-Engine erzeugt werden. In mindestens einer Ausführungsform umfasst die Ausgabe der Raster-Engine 3208 Fragmente, die durch eine geeignete Entität zu verarbeiten sind, wie beispielsweise durch einem Fragment-Shader, der innerhalb eines DPC 3206 implementiert ist.
  • In mindestens einer Ausführungsform umfasst jeder in dem GPC 3200 enthaltene DPC 3206, ohne darauf beschränkt zu sein, einen M-Pipe-Controller („MPC“) 3210; eine Primitiven-Engine 3212; einen oder mehrere SMs 3214; und jede geeignete Kombination davon. In mindestens einer Ausführungsform steuert der MPC 3210 den Betrieb des DPC 3206, wobei von dem Pipeline-Manager 3202 empfangene Pakete an geeignete Einheiten im DPC 3206 weitergeleitet werden. In mindestens einer Ausführungsform werden Pakete, die einer Vertex zugeordnet sind, an die Primitiven-Engine 3212 weitergeleitet, die konfiguriert ist, um der Vertex zugeordnete Vertexattribute aus dem Speicher abzurufen; im Gegensatz dazu können einem Shader-Programm zugeordnete Pakete an den SM 3214 übertragen werden.
  • In mindestens einer Ausführungsform umfasst der SM 3214, ohne darauf beschränkt zu sein, einen programmierbaren Streaming-Prozessor, der konfiguriert ist, um Aufgaben zu verarbeiten, die durch eine Anzahl von Threads dargestellt werden. In mindestens einer Ausführungsform ist der SM 3214 multithreaded (umfasst mehrere Threads) und ist konfiguriert, um eine Mehrzahl von Threads (z.B. 31 Threads) von einer bestimmten Gruppe von Threads nebenläufig auszuführen und implementiert eine SIMD(Einzelne-Anweisung, Mehrere-Daten)-Architektur, wobei jeder Thread in einer Gruppe von Threads (d.h. einem Warp) konfiguriert ist, um einen unterschiedlichen Satz von Daten basierend auf dem gleichen Satz von Anweisungen zu verarbeiten. In mindestens einer Ausführungsform führen alle Threads in der Gruppe von Threads gleiche Anweisungen aus. In mindestens einer Ausführungsform implementiert der SM 3214 eine SIMT(Einzelne-Anweisung, Mehrere-Threads)-Architektur, wobei jeder Thread in einer Gruppe von Threads konfiguriert ist, um einen unterschiedlichen Satz von Daten basierend auf einem gleichen Satz von Anweisungen zu verarbeiten, wobei jedoch einzelnen Threads in der Gruppe von Threads ermöglicht wird, während der Ausführung zu divergieren. In mindestens einer Ausführungsform wird ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden Warp beibehalten, was eine Nebenläufigkeit zwischen Warps und eine serielle Ausführung innerhalb Warps ermöglicht, wenn Threads innerhalb des Warp divergieren. In einer weiteren Ausführungsform wird ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden einzelnen Thread beibehalten, was eine gleiche Nebenläufigkeit zwischen allen Threads, innerhalb und zwischen Warps ermöglicht. In mindestens einer Ausführungsform wird der Ausführungszustand für jeden einzelnen Thread beibehalten und Threads, welche die gleichen Anweisungen ausführen, können konvergiert und zur besseren Effizienz parallel ausgeführt werden. Mindestens eine Ausführungsform des SM 3214 wird hier ausführlicher beschrieben.
  • In mindestens einer Ausführungsform stellt die MMU 3218 eine Schnittstelle zwischen dem GPC 3200 und der Partitions-Einheit (z.B. Partitions-Einheit 3122 von 31) bereit und die MMU 3218 stellt eine Übersetzung von virtuellen Adressen in physische Adressen, einen Speicherschutz und eine Arbitrierung von Speicheranforderungen bereit. In mindestens einer Ausführungsform stellt die MMU 3218 einen oder mehrere Adressenübersetzungspuffer (Translation Lookaside Buffer; „TLBs“) zum Durchführen einer Übersetzung von virtuellen Adressen in physische Adressen im Speicher bereit.
  • Eine Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten hinsichtlich der Inferenzierungs- und/oder Trainingslogik 615 werden nachstehend in Verbindung mit 6A und/oder 9B bereitgestellt. In mindestens einer Ausführungsform wird ein tief lernenden Anwendungsprozessor verwendet, um ein maschinelles Lernmodell zu trainieren, wie beispielsweise ein neuronales Netzwerk, um Informationen vorherzusagen oder zu inferenzieren, die dem GPC 3200 bereitgestellt werden. In mindestens einer Ausführungsform wird der GPC 3200 verwendet, um Informationen basierend auf einem trainierten maschinellen Lernmodell (z.B., neuronalen Netzwerk) zu inferenzieren und vorauszusagen, das durch einen anderen Prozessor oder System oder durch den GPC 3200 trainiert wurde. In mindestens einer Ausführungsform kann die PPU 3200 verwendet werden, um ein oder mehrere hier beschriebene Anwendungsfälle eines neuronalen Netzwerks durchzuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 32 gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und des Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte in dem allgemeinen Verarbeitungscluster 3200 von 32 verwendet.
  • 33 veranschaulicht eine Speicherpartitions-Einheit 3300 eine Parallelverarbeitungs-Einheit („PPU“) gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform umfasst die Speicherpartitions-Einheit 3300, ohne darauf beschränkt zu sein, eine Raster-Operationen(„ROP“)-Einheit 3302, einen Level-2(„L2“)-Cache 3404, eine Speicherschnittstelle 3306 und jede geeignete Kombination davon. In einer Ausführungsform ist die Speicherschnittstelle 3306 mit dem Speicher gekoppelt. In einer Ausführungsform kann die Speicherschnittstelle 3306 31-, 64-, 128-, 1024-Bit-Datenbusse oder ähnliche Implementierungen für einen Hochgeschwindigkeits-Datentransfer implementieren. In mindestens einer Ausführungsform beinhaltet die PPU U Speicherschnittstellen 3306, eine Speicherschnittstelle 3306 pro Paar von Partitions-Einheiten 3300 ist, wobei jedes Paar von Partitions-Einheiten 3300 mit einer entsprechenden Speichervorrichtung verbunden ist. Beispielsweise kann in mindestens einer Ausführungsform die PPU mit bis zu Y Speichervorrichtungen, wie beispielsweise Speicherstapel mit hoher Bandbreite oder Graphikdoppeldatenraten, Version 5, synchronen dynamischen Direktzugriffsspeicher („GDDR5 SDRAM“) verbunden sein.
  • In mindestens einer Ausführungsform implementiert die Speicherschnittstelle 3306 eine Speicherschnittstelle eines Speichers mit hoher Bandbreite der zweiten Generation („HBM2“) und Y ist gleich einem halben U. In mindestens einer Ausführungsform sind HBM2-Speicherstapel auf der gleicher physischen Packung wie die PPU lokalisiert, die wesentliche Leistungs- und Flächeneinsparungen verglichen mit herkömmlichen GDDR5 SDRAM Systemen bereitstellt. In mindestens einer Ausführungsform umfasst jeder HBM2-Stapel, ohne darauf beschränkt zu sein, vier Speicher-Dies mit Y = 4, wobei jeder HBM2-Stapel, ohne darauf beschränkt zu sein, zwei 128-Bit Kanäle pro Die für eine Gesamtzahl von 8 Kanälen und eine Datenbusbreite von 1024 Bit umfasst. In mindestens einer Ausführungsform unterstützt der Speicher einen Fehlerkorrekturcode („ECC“) mit Einzelfehlerkorrektur und Doppelfehlerdetektion („SECDED“), um Daten zu schützen. ECC stellt höhere Zuverlässigkeit für Rechenanwendungen bereit, die gegen Datenverfälschung empfindlich sind.
  • In mindestens einer Ausführungsform implementiert die PPU eine Mehrebenen-Speicherhierarchie. In mindestens einer Ausführungsform unterstützt die Speicherpartitions-Einheit 3300 einen vereinheitlichten Speicher, um einen einzigen vereinheitlichten virtuellen Adressraum für die zentrale Verarbeitungseinheit („CPU“) und den Speicher der PPU bereitzustellen, wobei eine Datenteilung zwischen virtuellen Speichersystemen ermöglicht wird. In mindestens einer Ausführungsform wird die Häufigkeit von Zugriffen durch eine PPU auf den Speicher verfolgt, der auf anderen Prozessoren lokalisiert ist, um sicherzustellen, dass Speicherseiten in den physischen Speicher der PPU bewegt werden, die häufiger auf Seiten zugreift. In mindestens einer Ausführungsform unterstützt die Hochgeschwindigkeits-GPU-Zwischenverbindung 3108 Adressenübersetzungsdienste, die der PPU ermöglichen, auf Seitentabellen einer CPU direkt zuzugreifen und die einen vollen Zugriff auf den CPU-Speicher durch die PPU bereitstellen.
  • In einer Ausführungsform übertragen Kopier-Engines Daten zwischen mehreren PPUs oder zwischen PPUs und CPUs. In einer Ausführungsform können Kopier-Engines Seitenfehler für Adressen erzeugen, die nicht in Seitentabellen abgebildet sind, und die Speicherpartitionseinheit 3300 bedient dann die Seitenfehler, indem sie die Adressen in der Seitentabelle abbildet, woraufhin die Kopier-Engines die Übertragung durchführt. In mindestens einer Ausführungsform wird der Speicher für mehrere Kopier-Engine-Operationen zwischen mehreren Prozessoren fixiert (d.h., nicht auslagerbar), wodurch der verfügbare Speicher erheblich reduziert wird. In mindestens einer Ausführungsform mit Hardware-Seitenfehlern können Adressen an die Kopier-Engines übergeben werden ohne Rücksicht darauf, ob die Speicherseiten im Speicher vorliegen, und der Kopiervorgang ist transparent.
  • Daten aus dem Speicher 3104 von 31 oder einem anderen Systemspeicher werden von der Speicherpartitions-Einheit 3300 abgerufen und in dem L2-Cache-Speicher 3304 gespeichert, der On-Chip lokalisiert ist und zwischen verschiedenen GPCs gemäß mindestens einer Ausführungsform gemeinsam benutzt wird. Jede Speicherpartitions-Einheit 3300 umfasst in mindestens einer Ausführungsform einen Bereich des L2-Cache-Speichers, der einer entsprechenden Speichervorrichtung zugeordnet ist. In mindestens einer Ausführungsform können Cache-Speicher niedrigerer Ebene dann in verschiedenen Einheiten innerhalb der GPCs implementiert sein. In mindestens einer Ausführungsform kann jeder der SMs 3314 einen Level-1(„L1“)-Cache-Speicher implementieren, wobei der L1-Cache-Speicher ein privater Speicher ist, der einem bestimmten SM 3314 fest zugeordnet ist, und Daten von dem L2-Cache-Speicher 3304 werden abgerufen und in jedem von Ll-Cache-Speichern zur Verarbeitung in Funktionseinheiten der SMs 3314 gespeichert. In mindestens einer Ausführungsform ist der L2-Cache-Speicher 3304 mit der Speicherschnittstelle 3306 und dem XBar 3120 gekoppelt.
  • Die ROP-Einheit 3302 führt Graphik-Raster-Operationen, welche die Pixelfarbe betreffen, wie beispielsweise Farbenkomprimierung, Pixelmischung und mehr, in mindestens einer Ausführungsform durch. Die ROP-Einheit 3302 implementiert in mindestens einer Ausführungsform ebenfalls Tiefentesten in Verbindung mit der Raster-Engine 3208, wobei eine Tiefe für einen Abtastort, der einem Pixelfragment zugeordnet ist, von einer Aussonderungs-Engine der Raster-Engine 3208 empfangen wird. In mindestens einer Ausführungsform wird die Tiefe gegen eine entsprechende Tiefe in einem Tiefenpuffer für einen Abtastort geprüft, der einem Fragment zugeordnet ist. In mindestens einer Ausführungsform aktualisiert, wenn ein Fragment den Tiefentest für den Abtastort besteht, dann aktualisiert die ROP-Einheit 3302 den Tiefenpuffer und überträgt ein Ergebnis des Tiefentests an die Raster-Engine 3308. Es wird anerkannt, dass sich die Anzahl von Speicherpartitions-Einheiten 3300 von der Anzahl von GPCs unterscheiden kann, und daher kann in mindestens einer Ausführungsform jede ROP-Einheit 3302 mit jedem von GPCs gekoppelt werden. In mindestens einer Ausführungsform verfolgt die ROP-Einheit 3302 Pakete, die von unterschiedlichen GPCs empfangen werden, und bestimmt, welches die ROP-Einheit 3302 erzeugtes Ergebnis zu der Xbar 3120 durchgeleitet wird.
  • 34 veranschaulicht einen Streaming-Multiprozessor („SM“) 3400 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der SM 3400 der SM von 32. In mindestens einer Ausführungsform umfasst der SM 3400, ohne darauf beschränkt zu sein, einen Befehls-Cache-Speicher 3402; eine oder mehrere Planer-Einheiten 3404; eine Registerdatei 3408; einen oder mehrere Verarbeitungskerne („cores“) 3410; eine oder mehrere Spezialfunktionseinheiten („SFUs“) 3412; eine oder mehrere Lade/Speicher-Einheiten („LSUs“) 3414; ein Zwischenverbindung-Netzwerk 3416; einen gemeinsam genutzten Speicher/Level-1(„L1“)-Cache-Speicher 3418; und jede geeignete Kombination davon. In mindestens einer Ausführungsform versendet eine Arbeitsverteilungs-Einheit Aufgaben zur Ausführung auf allgemeinen Verarbeitungs-Clustern („GPCs“) von Parallelverarbeitungs-Einheiten („PPUs“) und jede Aufgabe wird einem bestimmten Datenverarbeitungscluster (Data Processing Cluster; „DPC“) innerhalb eines GPC zugeteilt, und wenn die Aufgabe einem Shader-Programm zugeordnet ist, wird die Aufgabe einem der SMs 3400 zugeteilt. In mindestens einer Ausführungsform empfängt die Planer-Einheit 3404 Aufgaben von der Arbeitsverteilungs-Einheit und verwaltet die Befehlsplanung (instruction scheduling) für einen oder mehrere Thread-Blöcke, die dem SM 3400 zugewiesen sind. In mindestens einer Ausführungsform plant die Planer-Einheit 3404 Thread-Blöcke zur Ausführung als Warps von parallelen Threads, wobei jeder Thread-Block mindestens einem Warp zugeteilt ist. In mindestens einer Ausführungsform führt jeder Warp Threads aus. In mindestens einer Ausführungsform verwaltet die Planer-Einheit 3404 mehrere unterschiedliche Thread-Blöcke, teilt Warps unterschiedlichen Thread-Blöcken zu und versendet dann Anweisungen von der Mehrzahl von unterschiedlichen kooperativen Gruppen an verschiedene Funktionseinheiten (z.B. Verarbeitungskernen 3410, SFUs 3412 und LSUs 3414) während jedes Taktzyklus.
  • In mindestens einer Ausführungsform können sich Cooperative Groups auf ein Programmiermodell zum Organisieren von Gruppen von kommunizierenden Threads beziehen, die es Entwicklern ermöglichen, die Granularität auszudrücken, bei der Threads kommunizieren, wobei der Ausdruck von reicheren, effizienteren Parallelzerlegungen ermöglicht wird. In mindestens einer Ausführungsform unterstützen Cooperative-Start-APIs die Synchronisierung unter Thread-Blöcken zur Ausführung von parallelen Algorithmen. In mindestens einer Ausführungsform stellen herkömmliche Programmiermodelle einen einzigen, einfachen Aufbau zum Synchronisieren von kooperierenden Threads bereit: eine Barriere über alle Threads eines Thread-Blocks (d.h. die Funktion syncthreads( )). In mindestens einer Ausführungsform können Programmierer Gruppen von Threads jedoch bei kleineren als Thread-Block-Granularitäten definieren und innerhalb der definierten Gruppen synchronisieren, um größere Leistung, Gestaltungsflexibilität und Software-Wiederverwendung in der Form von kollektiven gruppenweiten Funktionsschnittstellen zu ermöglichen. In mindestens einer Ausführungsform ermöglichen Cooperative Groups Programmierern, Gruppen von Threads explizit bei Sub-Block- (d.h., so klein wie ein einziger Thread) und Multi-Block-Granularitäten zu definieren und kollektive Operationen, wie beispielsweise Synchronisierung, an den Threads in einer kooperativen Gruppe durchzuführen. Ein Programmiermodell unterstützt eine saubere Zusammensetzung über Softwaregrenzen, so dass Bibliotheken und Dienstprogrammfunktionen innerhalb ihres lokalen Kontexts sicher synchronisieren können, ohne Annahmen über Konvergenz machen zu müssen. In mindestens einer Ausführungsform ermöglichen die Grundelemente kooperativer Gruppen neue Muster von kooperativer Parallelität, die, ohne darauf beschränkt zu sein, Erzeuger-Verbraucher Parallelität, opportunistische Parallelität und globale Synchronisierung über ein gesamtes Gitter von Threadblöcken umfassen.
  • In mindestens einer Ausführungsform ist eine Abfertigungseinheit 3406 konfiguriert, um Anweisungen an eine oder mehrere von Funktionseinheiten zu übertragen, und die Planer-Einheit 3404 umfasst, ohne darauf beschränkt zu sein, zwei Abfertigungseinheiten 3406, die ermöglichen, dass zwei unterschiedliche Anweisungen von dem gleichen Warp während jedes Taktzyklus abgefertigt werden. In mindestens einer Ausführungsform umfasst jede Planer-Einheit 3404 eine einzige Abfertigungseinheit 3406 oder zusätzliche Abfertigungseinheiten 3406.
  • In mindestens einer Ausführungsform umfasst jeder SM 3400 in mindestens einer Ausführungsform, ohne darauf beschränkt zu sein, die Registerdatei 3408, die einen Satz von Registern für die Funktionseinheiten des SM 3400 bereitstellt. In mindestens einer Ausführungsform ist die Registerdatei 3408 zwischen jeder der Funktionseinheiten aufgeteilt, so dass jede Funktionseinheit einem zugehörigen Abschnitt der Registerdatei 3408 zugeteilt ist. In einer anderen Ausführungsform ist die Registerdatei 3408 zwischen den unterschiedlichen Warps aufgeteilt, die von dem SM 3400 ausgeführt werden, und die Registerdatei 3408 stellt eine temporäre Speicherung für Operanden bereit, die mit Datenpfaden der Funktionseinheiten verbunden sind. In mindestens einer Ausführungsform umfasst jeder SM 3400, ohne darauf beschränkt zu sein, L Verarbeitungskerne 3410. In mindestens einer Ausführungsform umfasst der SM 3400, ohne darauf beschränkt zu sein, eine große Anzahl (z.B., 128 oder mehr) von distinkten Verarbeitungskernen 3410. In mindestens einer Ausführungsform umfasst jeder Verarbeitungskern 3410, ohne darauf beschränkt zu sein, eine vollständig in einer Pipeline angeordnete (fully-pipelined) Verarbeitungseinheit mit einfacher, doppelter oder gemischter Präzision, die, ohne darauf beschränkt zu sein, eine Gleitkommaarithmetik-Logikeinheit und eine Ganzzahlarithmetik-Logikeinheit umfasst. In mindestens einer Ausführungsform implementieren die Gleitkommaarithmetik-Logikeinheiten den IEEE 754-2008 Standard für Gleitkommaarithmetik. In mindestens einer Ausführungsform umfassen die Verarbeitungskerne 3410, ohne darauf beschränkt zu sein, 64 Einfach-Präzisions-(31-Bit)-Gleitkommakerne, 64 Ganzzahlkerne, 31 Doppel-Präzisions-(64-Bit)-Gleitkommakerne und 8 Tensorkerne.
  • Tensorkerne sind konfiguriert, um Matrixoperationen gemäß mindestens einer Ausführungsform durchzuführen. In mindestens einer Ausführungsform sind ein oder mehrere Tensorkerne in Verarbeitungskernen 3410 enthalten. In mindestens einer Ausführungsform sind Tensorkerne konfiguriert, um Matrixarithmetik tiefen Lernens, wie beispielsweise Faltungsoperationen für neuronales Netzwerktraining und Inferenzieren, durchzuführen. In mindestens einer Ausführungsform arbeitet jeder Tensorkern an einer 4x4 Matrix und führt eine Matrix-Multiplikation- und Akkumulation-Operation D=A×B+C durch, wobei A, B, C und D 4x4 Matrizen sind.
  • In mindestens einer Ausführungsform sind Matrix-Multiplikations-Eingaben A und B 16-Bit-Gleitkomma-Matrizen und die Akkumulationsmatrizen C und D sind 16-Bit-Gleitkomma- oder 31-Bit-Gleitkomma-Matrizen. In mindestens einer Ausführungsform arbeiten Tensorkerne an 16-Bit-Gleitkomma-Eingangsdaten mit 31-Bit-Gleitkomma-Akkumulation. In mindestens einer Ausführungsform verwendet 16-Bit-Gleitkomma-Multiplikation 64 Operationen und ergibt ein Produkt voller Präzision, das dann unter Verwendung einer 31-Bit-Gleitkomma-Addition mit den anderen Zwischenprodukten für eine 4x4x4-Matrix-Multiplikation akkumuliert wird. Tensorkerne werden verwendet, um in mindestens einer Ausführungsform viel größere zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen, die von diesen kleineren Elementen aufgebaut werden. In mindestens einer Ausführungsform exponiert eine API, wie beispielsweise die CUDA 9 C++ API, spezialisierte Matrix-Lade-, Matrix-Multiplikations- und Matrix-Akkumulations- und Matrix-Speicher-Operationen, um Tensorkerne von einem CUDA-C++ Programm effizient zu verwenden. In mindestens einer Ausführungsform nimmt auf CUDA-Ebene das Warp-Schnittstellenniveau 16x16 große Matrizen an, die alle 31 Threads eines Warp überspannen.
  • In mindestens einer Ausführungsform umfasst jeder SM 3400, ohne darauf beschränkt zu sein, M SFUs 3412, die Sonderfunktionen durchführen (z.B. Attributauswertung, reziproke Quadratwurzel und ähnliches). In mindestens einer Ausführungsform können die SFUs 3412, ohne darauf beschränkt zu sein, eine Baumtraversierungseinheit umfassen, die konfiguriert ist, um eine hierarchische Baumdatenstruktur zu durchlaufen. In mindestens einer Ausführungsform umfassen die SFUs 3412 eine Textureinheit, die konfiguriert ist, um Texturkarten-Filteroperationen durchzuführen. In mindestens einer Ausführungsform sind die Textureinheiten konfiguriert, um Texturkarten (z.B. eine 2D-Anordnung von Texeln) aus dem Speicher zu laden und Texturkarten abzutasten, um abgetastete Texturwerte zum Gebrauch in Shader-Programmen zu erzeugen, die durch den SM 3400 ausgeführt werden. In mindestens einer Ausführungsform werden die Texturkarten in dem gemeinsam genutzten Speicher/L1-Cache-Speicher 3418 gespeichert. In einer Ausführungsform implementieren die Textureinheiten Texturoperationen, wie beispielsweise Filteroperationen, unter Verwendung von Mip-Maps (z.B. Texturkarten von veränderlichem Detaillierungsgrad). In mindestens einer Ausführungsform umfasst jeder SM 3400, ohne darauf beschränkt zu sein, zwei Textureinheiten.
  • Jeder SM 3400 umfasst, ohne darauf beschränkt zu sein, N LSUs 3414, die Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher/L1-Cache-Speicher 3418 und der Registerdatei 3408 in mindestens einer Ausführungsform implementieren. Jeder SM 3400 umfasst, ohne darauf beschränkt zu sein, ein Zwischenverbindung-Netzwerk 3416, das jede der Funktionseinheiten mit der Registerdatei 3408 und die LSU 3414 mit der Registerdatei 3408 und dem gemeinsam genutzten Speicher/ Ll-Cache-Speicher 3418 in mindestens einer Ausführungsform verbindet. In mindestens einer Ausführungsform ist das Zwischenverbindung-Netzwerk 3416 eine Kreuzschiene, die konfiguriert sein kann, um eine beliebige der Funktionseinheiten mit irgendeinem der Register in der Registerdatei 3408 zu verbinden und die LSUs 3414 mit der Registerdatei 3408 und Speicherorten in dem gemeinsam genutzten Speicher/L1-Cache-Speicher 3418 zu verbinden.
  • In mindestens einer Ausführungsform ist der gemeinsam benutzte Speicher/L1-Cache-Speicher 3418 eine On-Chip-Speicheranordnung, die in mindestens einer Ausführungsform Datenspeicherung und Kommunikation zwischen dem SM 3400 und der Primitiven-Engine und zwischen Threads in dem SM 3400 ermöglicht. In mindestens einer Ausführungsform umfasst der gemeinsam benutzte Speicher/L1-Cache-Speicher 3418, ohne darauf beschränkt zu sein, 128KB von Speicherkapazität und ist in einem Pfad von dem SM 3400 zu der Partitions-Einheit. In mindestens einer Ausführungsform wird der gemeinsam benutzte Speicher/L1-Cache-Speicher 3418 verwendet, um in mindestens einer Ausführungsform Lese- und Schreibvorgänge zwischenzuspeichern. In mindestens einer Ausführungsform sind ein oder mehrere von dem gemeinsam genutzten Speicher/L1-Cache-Speicher 3418, L2-Cache-Speicher und dem Speicher Hintergrundspeicher.
  • Ein Kombinieren von Daten-Cache und gemeinsam genutzter Speicherfunktionalität in einen einzigen Speicherblock stellt in mindestens einer Ausführungsform eine verbesserte Leistung für beide Arten von Speicherzugriffen bereit. In mindestens einer Ausführungsform wird die Kapazität als ein Cache für Programme benutzt oder ist nutzbar, die keinen gemeinsam genutzten Speicher verwenden, wie beispielsweise, wenn ein gemeinsam genutzter Speicher konfiguriert ist, dass er die Hälfte der Kapazität verwendet, die Textur- und Lade-/Speicher-Operationen die verbleibende Kapazität verwenden können. Die Integration innerhalb des gemeinsam genutzten Speichers/L1-Caches 3518 ermöglicht dem gemeinsam genutzten Speicher/Ll-Cache 3418 als eine Hochdurchsatzleitung zum Streamen von Daten zu arbeiten, während gleichzeitig ein Zugriff auf häufig wiederverwendete Daten mit hoher Bandbreite und geringer Latenzzeit gemäß einer Ausführungsform bereitgestellt wird. In mindestens einer Ausführungsform kann, wenn für Allzweck-Parallelberechnung konfiguriert, im Vergleich mit Graphikverarbeitung eine einfachere Konfiguration verwendet werden. In mindestens einer Ausführungsform werden Festfunktions-Graphikverarbeitungseinheiten umgangen, wobei ein viel einfacheres Programmiermodell erzeugt wird. In der Allzweck-Parallelberechnungs-Konfiguration werden Blöcke von Threads der Arbeitsverteilungs-Einheit direkt DPCs in mindestens einer Ausführungsform zugewiesen und verteilt. In mindestens einer Ausführungsform führen Threads in einem Block unter Verwendung einer eindeutigen Thread-ID in der Berechnung das gleiche Programm aus, um sicherzustellen, dass jeder Thread unter Verwendung des SM 3400 eindeutige Ergebnisse erzeugt, um das Programm auszuführen und Berechnungen durchzuführen, eines gemeinsam genutzten Speicher/Ll-Cache-Speichers 3418, um zwischen Threads zu kommunizieren, und der LSU 3414, um einen globalen Speicher durch den gemeinsam genutzten Speicher/L1-Cache-Speicher 3418 und die Speicherpartitions-Einheit zu lesen und zu beschreiben. In mindestens einer Ausführungsform schreibt, wenn für Allzweck-Parallelberechnung konfiguriert, schreibt der SM 3400 Befehle, welche die Planer-Einheit 3404 verwenden kann, um neue Arbeit auf DPCs zu starten.
  • In mindestens einer Ausführungsform ist die PPU enthalten in oder gekoppelt mit einem Tischcomputer, einem Laptop-Computer, einem Tablet-Computer, einem Smartphone (z.B. einer drahtlosen handgehaltenen Vorrichtung), einem persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, einem Fahrzeug, einer Head-Mounted-Display, einer handgehaltenen elektronischen Vorrichtung und mehr. In mindestens einer Ausführungsform ist die PPU auf einem einzelnen Halbleitersubstrat verkörpert. In mindestens einer Ausführungsform ist die PPU in einem System-on-Chip („SoC“) zusammen mit einer oder mehreren anderen Vorrichtungen, wie beispielsweise zusätzlichen PPUs, Speicher, einem Rechner-mit-reduziertem-Befehlssatz(„RISC“)-CPU, einer Speicherverwaltungseinheit („MMU“), einem Digital/AnalogWandler („DAC“) und ähnlichem enthalten.
  • In mindestens einer Ausführungsform kann eine PPU auf einer Graphikkarte enthalten sein, die eine oder mehrere Speichervorrichtungen umfasst. Die Graphikkarte kann konfiguriert sein, um sich mit einem PCIe-Schlitz auf einer Hauptplatine eines Desktop-Computers schnittstellenmäßig zu verbinden. In mindestens einer Ausführungsform kann eine PPU eine integrierte Graphikverarbeitungseinheit („iGPU“) sein, die in dem Chipsatz der Hauptplatine enthalten ist.
  • Eine Inferenzierungs- und/oder Trainingslogik 615 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten hinsichtlich der Inferenzierungs- und/oder Trainingslogik 615 werden hier in Verbindung mit 6A und/oder 9B bereitgestellt. In mindestens einer Ausführungsform wird der tief lernende Anwendungsprozessor verwendet, um ein maschinelles Lernmodell zu trainieren, wie beispielsweise ein neuronales Netzwerk, um Informationen vorherzusagen oder zu inferenzieren, die dem SM 3400 bereitgestellt werden. In mindestens einer Ausführungsform wird der SM 3400 verwendet, um Informationen basierend auf einem trainierten maschinellen Lernmodell (z.B., neuronalen Netzwerk) zu inferenzieren und vorauszusagen, das durch einen anderen Prozessor oder System oder durch den SM 3400 trainiert wurde. In mindestens einer Ausführungsform kann der SM 3400 verwendet werden, um ein oder mehrere hier beschriebene Anwendungsfälle eines neuronalen Netzwerks durchzuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente benutzt, die mit Bezug auf 32 gezeigt oder beschrieben ist, um Techniken zu implementieren, die in Verbindung mit 1-5 beschrieben sind. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 615 verwendet, um eine erste Art von Operation mit einem ersten Tensor zu identifizieren, einen zweiten Tensor zu konstruieren und eine zweite Art von Operation mit dem zweiten Tensor durchzuführen. In mindestens einer Ausführungsform identifiziert die Inferenz- und/oder Trainingslogik 615 eine Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor, der eine Merkmalskarte erzeugt, um gefaltete Modi des ersten Aktivierungstensor zu identifizieren, einen zweiten Aktivierungstensor zu konstruieren und eine Merkmalskarte unter Verwendung einer Tensorkontraktion des zweiten Aktivierungstensors und des Filtertensors zu erzeugen. In mindestens einer Ausführungsform wird die Merkmalskarte in dem SM 3400 von 34 verwendet.
  • Mindestens eine Ausführungsform kann hinsichtlich der folgenden Klauseln beschrieben werden:
    1. 1. Ein Prozessor, umfassend:
      • eine oder mehrere Arithmetik-Logikeinheiten (ALUs), um eine oder mehrere Faltungsoperationen auf Bilddaten durchzuführen,
      • um eine oder mehrere Merkmalskarten zu erzeugen.
    2. 2. Der Prozessor gemäß Klausel 1, wobei die eine oder mehrere Faltungsoperationen eine erste Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor umfassen, um eine erste Merkmalskarte zu erzeugen, die durch einen Ausgangstensor dargestellt wird, und die eine oder mehrere ALUs sollen:
      • einen zweiten Aktivierungstensor konstruieren, der eine höhere Anzahl von Modi als der erste Aktivierungstensor aufweist; und
      • die erste Merkmalskarte erzeugen, durch Durchführen einer Tensorkontraktion mit dem zweiten Aktivierungstensor und dem Filtertensor.
    3. 3. Der Prozessor gemäß Klausel 2, wobei die eine oder mehrere ALUs den zweiten Aktivierungstensor konstruieren sollen, basierend mindestens teilweise auf:
      • Identifizieren eines Modus des ersten Aktivierungstensors, der nicht in dem Filtertensor vorhanden ist und der nicht in dem Ausgangstensor vorhanden ist; und
      • Ersetzen des identifizierten Modus mit einem ersten Modus von dem Ausgangstensors und einem zweiten Modus von dem Filtertensor in dem zweiten Aktivierungstensor.
    4. 4. Der Prozessor gemäß Klausel 3, wobei die eine oder mehrere ALUs den zweiten Aktivierungstensor konstruieren sollen, so dass der erste Modus und der zweite Modus des zweiten Aktivierungstensors überlappende Strides aufweisen.
    5. 5. Der Prozessor gemäß Klausel 4, wobei der identifizierte Modus des ersten Aktivierungstensors einen identifizierten Stride aufweist und die eine oder mehrere ALUs einen ersten Stride des ersten Modus und einen zweiten Stride des zweiten Modus des zweiten Aktivierungstensor auf den identifizierten Stride einstellen sollen.
    6. 6. Der Prozessor gemäß einer der Klauseln 2-5, wobei die eine oder mehrere ALUs den zweiten Aktivierungstensor unter Verwendung von Datenelementen des ersten Aktivierungstensors ohne Hinzufügen zusätzlicher Datenelemente konstruieren sollen.
    7. 7. Ein System, umfassend:
      • einen oder mehrere Prozessoren, um eine erste Art der Operation an einem Tensor durchzuführen, um eine Ausgabe zu erzeugen, durch:
      Ändern einer Darstellung des Tensors von einer ersten Anzahl von Dimensionen in eine zweite Anzahl von Dimensionen; und Durchführen einer zweiten Art von Operation an der Darstellung des Tensors mit der zweiten Anzahl von Dimensionen, um die Ausgabe zu erzeugen.
    8. 8. Das System gemäß Klausel 7, wobei die erste Art der Operation eine Faltung ist, die zweite Art der Operation eine Tensorkontraktion ist, und die zweite Anzahl von Dimensionen größer als die erste Anzahl von Dimensionen ist.
    9. 9. Das System gemäß einer der Klauseln 7-8, wobei die Ausgabe eine Merkmalskarte ist, die durch einen Ausgangstensor dargestellt wird, der Tensor ein Aktivierungstensor ist, die Faltung eine Faltung des Aktivierungstensors und eines Filtertensors ist, und der eine oder mehrere Prozessoren sollen: eine Dimension des Aktivierungstensors identifizieren, der nicht in dem Filtertensor vorhanden ist und nicht in dem Ausgangstensor vorhanden ist; und die identifizierte Dimension mit einer ersten Dimension von dem Ausgangstensor und einer zweiten Dimension von dem Filtertensor in der geänderten Darstellung des Tensors ersetzen.
    10. 10. Das System gemäß Klausel 9, wobei die erste Dimension und die zweite Dimension überlappende Strides aufweisen.
    11. 11. Das System gemäß einer der Klauseln 7-10, ferner umfassend einen Speicher, wobei der Tensor ein oder mehrere in dem Speicher gespeicherte Datenelemente umfasst, und der eine oder mehrere Prozessoren die Darstellung des Tensors ändern sollen, so dass sich zwei Dimensionen des Tensors auf einen gemeinsamen Satz von Datenelementen beziehen, die in dem einen oder mehreren Datenelementen enthalten sind.
    12. 12. Das System gemäß Klausel 7, wobei die erste Art der Operation eine Tensorkontraktion ist und die zweite Art der Operation eine Faltung ist.
    13. 13. Das System gemäß einer der Klauseln 7-12, ferner umfassend einen oder mehrere Speicher, um Parameter zu speichern, die einem oder mehreren neuronalen Netzwerken entsprechen, wobei der eine oder mehrere Prozessoren eine Inferenzierungsoperation unter Verwendung des einen oder mehrerer neuronaler Netzwerke basierend, mindestens teilweise, auf der Ausgabe der Tensorkontraktion durchführen sollen.
    14. 14. Ein maschinenlesbares Medium mit einem darauf gespeicherten Satz von Anweisungen, die, wenn von einem oder mehreren Prozessoren durchgeführt, den einen oder mehrere Prozessoren veranlassen, mindestens eine oder mehrere Merkmalskartenausgaben von einer oder mehreren Faltungsoperationen an Bilddaten durch mindestens Kontraktieren eines oder mehrerer Tensoren zu erzeugen.
    15. 15. Das maschinenlesbare Medium gemäß Klausel 14, wobei die eine oder mehrere Faltungsoperationen eine erste Faltungsoperation mit einem ersten Aktivierungstensor und einen Filtertensor umfassen, um eine erste Merkmalskarte zu erzeugen, die durch einen Ausgangstensor dargestellt wird, und wobei der Satz von Anweisungen, der, wenn durch den einen oder mehrere Prozessoren durchgeführt, ferner den einen oder mehrere Prozessoren veranlassen: einen zweiten Aktivierungstensor zu konstruieren, der eine höhere Anzahl von Modi als der erste Aktivierungstensor aufweist; und eine Tensorkontraktion mit dem zweiten Aktivierungstensor und dem Filtertensor durchzuführen, um die erste Merkmalskarte zu erzeugen.
    16. 16. Das maschinenlesbare Medium gemäß Klausel 14 oder 15, wobei der Satz von Anweisungen, die, wenn von dem einen oder mehreren Prozessoren durchgeführt, ferner den einen oder mehrere Prozessoren veranlassen:
      • einen Modus des ersten Aktivierungstensors zu identifizieren, der in dem Filtertensor nicht vorhanden ist und der in dem Ausgangstensor nicht vorhanden ist; und
      • den identifizierten Modus mit einem ersten Modus von dem Ausgangstensor und einen zweiten Modus von dem Filtertensor in dem zweiten Aktivierungstensor zu ersetzen.
    17. 17. Das maschinenlesbare Medium gemäß Klausel 16, wobei der Satz von Anweisungen, die, wenn durch den einen oder mehrere Prozessoren durchgeführt, ferner den einen oder mehrere Prozessoren veranlassen, den zweiten Aktivierungstensor zu konstruieren, so dass der erste Modus und der zweite Modus des zweiten Aktivierungstensor überlappende Strides aufweisen.
    18. 18. Das maschinenlesbare Medium gemäß einer der Klauseln 16-17, wobei der identifizierte Modus des ersten Aktivierungstensors einen identifizierten Stride aufweist, und der Satz von Anweisungen, die, wenn durch den einen oder mehrere Prozessoren durchgeführt, ferner den einen oder mehrere Prozessoren veranlassen, einen ersten Stride des ersten Modus und einen zweiten Stride des zweiten Modus des zweiten Aktivierungstensors in dem identifizierten Stride einzustellen.
    19. 19. Das maschinenlesbare Medium gemäß einer der Klauseln 15-18, wobei die erste Faltungsoperation eine zweidimensionale (2D) Faltungsoperation ist.
    20. 20. Das maschinenlesbares Medium gemäß einer der Klauseln 14-19, wobei der Satz von Anweisungen, die, wenn durch den einen oder mehrere Prozessoren durchgeführt, ferner den einen oder mehrere Prozessoren veranlassen, eine Inferenzierungsoperation unter Verwendung eines neuronalen Netzwerks basierend, mindestens teilweise, auf der ersten Merkmalskarte durchzuführen.
    21. 21. Ein Fahrzeug, umfassend:
      • ein Computer-Visionssystem, das einen oder mehrere Prozessoren umfasst, um ein oder mehrere Merkmale einer Fahrzeugbetriebsumgebung basierend mindestens teilweise auf der Verwendung eines oder mehrerer neuronaler Netzwerke zu identifizieren, um eine oder mehrere Ausgaben von einer oder mehreren Faltungsoperationen auf Bilddaten durch mindestens Kontraktieren eines oder mehrerer Tensoren zu erzeugen, um eine oder mehrere Merkmalskarten zu erzeugen; und
      • eines oder mehrere eines Antriebssystems und eines Richtungssteuersystems, um eine oder mehrere Bewegungen des Fahrzeugs basierend mindestens teilweise auf dem identifizierten einen oder mehreren Merkmale zu steuern.
    22. 22. Das Fahrzeug gemäß Klausel 21, wobei die eine oder mehrere Faltungsoperationen eine erste Faltungsoperation mit einem ersten Aktivierungstensor und einen Filtertensor umfassen, um eine erste Merkmalskarte zu erzeugen, die durch einen Ausgangstensor dargestellt wird, und der einen oder mehrere Prozessoren sollen:
      • einen zweiten Aktivierungstensor konstruieren, der eine höhere Anzahl von Modi als der erste Aktivierungstensor aufweist; und
      • die erste Merkmalskarte durch Durchführen einer Tensorkontraktion mit dem zweiten Aktivierungstensor und dem Filtertensor erzeugen.
    23. 23. Das Fahrzeug gemäß Klausel 22, wobei der eine oder mehrere Prozessoren den zweiten Aktivierungstensor konstruieren, sollen basierend mindestens teilweise auf:
      • Identifizieren eines Modus des ersten Aktivierungstensors, der nicht in dem Filtertensor vorhanden ist und nicht in dem Ausgangstensor vorhanden ist; und
      • Ersetzen des identifizierten Modus mit einem ersten Modus von dem Ausgangstensor und einem zweiten Modus von dem Filtertensor in dem zweiten Aktivierungstensor.
    24. 24. Das Fahrzeug gemäß Klausel 23, wobei der eine oder mehrere Prozessoren den zweiten Aktivierungstensor konstruieren sollen, so dass der erste Modus und der zweite Modus des zweiten Aktivierungstensors überlappende Strides aufweisen.
    25. 25. Das Fahrzeug gemäß einer der Klauseln 23-24, wobei der identifizierte Modus des ersten Aktivierungstensors einen identifizierten Stride aufweist, und der eine oder mehrere Prozessoren einen ersten Stride des ersten Modus und einen zweiten Stride des zweiten Modus des zweiten Aktivierungstensor in den identifizierten Stride einstellen sollen.
    • 26. Fahrzeug gemäß einer der Klauseln 22-25, wobei das Computer-Visionssystem einen Speicher umfasst, der erste Aktivierungstensor mehrere in dem Speicher gespeicherte Datenelemente umfasst, und der eine oder mehrere Prozessoren den zweiten Aktivierungstensor konstruieren sollen, so dass sich zwei Modi des zweiten Aktivierungstensors auf einen gemeinsamen Satz von Datenelementen beziehen, der in den mehreren Datenelementen enthalten ist.
    • 27. Verfahren, umfassend:
      • Identifizieren einer ersten Art der Operation mit einem ersten Tensor, um eine Ausgabe zu erzeugen; und
      • Erzeugen der Ausgabe durch:
        • Konstruieren eines zweiten Tensors basierend mindestens teilweise auf dem Ändern einer Anzahl von Dimensionen des ersten Tensor von einer ersten Anzahl von Dimensionen in eine zweite Anzahl von Dimensionen; und
        • Durchführen einer zweiten Art der Operation mit dem zweiten Tensor, um die Ausgabe zu erzeugen.
    • 28. Verfahren gemäß Klausel 27, wobei die erste Art der Operation eine Faltung ist, die zweite Art der Operation eine Tensorkontraktion ist und die zweite Anzahl von Dimensionen größer als die erste Anzahl von Dimensionen ist.
    • 29. Verfahren gemäß Klausel 28, wobei die Ausgabe eine Merkmalskarte ist, die durch einen Ausgangstensor dargestellt wird, der erste Tensor ein Aktivierungstensor ist, die Faltung eine Faltung des Aktivierungstensors und eines Filtertensor ist, und das Verfahren ferner umfasst:
      • Identifizieren eines Modus des Aktivierungstensors, der in dem Filtertensor nicht vorhanden ist und in dem Ausgangstensor nicht vorhanden ist; und
      • Ersetzen des identifizierten Modus mit einem ersten Modus von dem Ausgangstensor und einem zweiten Modus von dem Filtertensor in dem zweiten Tensor.
    • 30. Verfahren gemäß Klausel 29, wobei das Konstruieren des zweiten Tensors das Konstruieren des zweiten Tensors umfasst, so dass der erste Modus und der zweite Modus überlappende Strides aufweisen.
    • 31. Verfahren gemäß einer der Klauseln 28-30, wobei die Faltung eine zweidimensionale (2D) Faltung ist.
    • 32. Verfahren gemäß einer der Klauseln 28-31, ferner umfassend: Durchführen einer Inferenzierungsoperation unter Verwendung eines neuronales Netzwerk basierend, mindestens teilweise, auf der Tensorkontraktion.
    • 33. Verfahren gemäß einer der Klauseln 27-32, wobei die erste Art der Operation eine Tensorkontraktion ist und die zweite Art der Operation eine Faltung ist.
  • In mindestens einer Ausführungsform kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung oder Chip beziehen. In mindestens einer Ausführungsform können Multi-Chip-Module mit erhöhter Konnektivität verwendet werden, die On-Chip-Betrieb simulieren, und erhebliche Verbesserungen gegenüber der Benutzung einer herkömmlichen Zentralverarbeitungseinheit („CPU“) und Busimplementierung vornehmen. In mindestens einer Ausführungsform können die verschiedenen Module auch separat situiert sein oder in verschiedenen Kombinationen von Halbleiter-Plattformen nach den Wünschen des Benutzers.
  • In mindestens einer Ausführungsform werden Computerprogramme in Form von maschinenlesbaren ausführbaren Code oder Computersteuerlogikalgorithmen im Hauptspeicher 1204 und/oder der sekundären Speicherung gespeichert. Computerprogramme, wenn durch einen oder mehrere Prozessoren ausgeführt, ermöglichen dem System 1200, verschiedene Funktionen gemäß mindestens einer Ausführungsform durchzuführen. Der Speicher 1204, die Speicherung und/oder irgendeine andere Speicherung sind mögliche Beispiele von computerlesbaren Medien. In mindestens einer Ausführungsform kann sich die sekundäre Speicherung auf jedes geeignete Speicherungsform oder System beziehen, wie beispielsweise ein Festplatten-Laufwerk und/oder ein entfernbares Speicher-Laufwerk, welches ein Floppy-Disk-Laufwerk, ein Magnetband-Laufwerk, ein Kompakt-Disk-Laufwerk, digitale versatile Disk-(DVD)-Laufwerk, Aufnahme-Gerät, universaler serieller Bus (USB)-Flashspeicher usw. In mindestens einer Ausführungsform werden die Architektur und/oder Funktionalität von verschiedenen vorangehenden Figuren in Kontext der CPU 1202; dem Parallelverarbeitungssystem 1212; einer integrierten Schaltung, die mindestens einen Teil der Fähigkeiten der CPU 1202 aufweist; dem Parallelverarbeitungssystem 1212; einem Chipsatz (z.B. einer Gruppe von integrierten Schaltungen, die zum Arbeiten ausgestaltet sind und als eine Einheit zum Durchführen verwandter Funktionen verkauft werden) und/oder irgendeine geeignete Kombination integrierter Schaltungen implementiert.
  • In mindestens einer Ausführungsform werden die Architektur und/oder Funktionalität von verschiedenen vorherigen Figuren im Kontext eines universellen Computersystems, eines Platinensystems, eines Spielkonsolensystems, das für Unterhaltungszwecke dediziert ist, eines anwendungsspezifischen Systems, und mehr implementiert. In mindestens einer Ausführungsform kann das Computersystem 1200 die Form eines Desktop-Computers, eines Laptops, eines Tablet-Computers, von Servern, Supercomputern, eines Smartphones (z.B. eines drahtlosen, tragbaren Geräts), eines persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, eines Fahrzeugs, einer kopfmontierten Anzeige, einer tragbaren elektronischen Vorrichtung, einer mobilen Telefonvorrichtung, eines Fernsehers, einer Workstation, von Spielkonsolen, eines eingebetteten Systems und/oder einer beliebigen anderen Art von Logik annehmen.
  • In mindestens einer Ausführungsform umfasst das Parallelverarbeitungssystem 1212, ohne darauf beschränkt zu sein, mehrere Parallelverarbeitungseinheiten („PPUs“) 1214 und zugeordnete Speichern 1216. In mindestens einer Ausführungsform sind PPUs 1214 mit einem Host-Prozessor oder anderen peripheren Vorrichtungen über eine Zwischenverbindung 1218 und einen Schalter 1220 oder Multiplexer verbunden. In mindestens einer Ausführungsform verteilt das Parallelverarbeitungssystem 1212 Rechenaufgaben über PPUs 1214, die parallelisierbar sein können - beispielsweise als Teil der Verteilung von Rechenaufgaben über mehrere Thread Blöcke einer Graphikverarbeitungseinheit („GPU“). In mindestens einer Ausführungsform wird der Speicher gemeinsam genutzt und ist zugänglich (z.B. für Lese- und/oder Schreibzugriff) über einige oder alle der PPUs 1214, obwohl ein derartiger gemeinsam genutzter Speicher Leistungsnachteile relativ zu der Verwendung von lokalem Speicher und Registern, sich in einer PPU 1214 befinden, erleiden kann. In mindestens einer Ausführungsform wird der Betrieb von PPUs 1214 durch Verwendung eines Befehls synchronisiert, wie beispielsweise syncthreads(), wobei alle Threads in einem Block (z.B. über mehrere PPUs 1214 ausgeführt) einen bestimmten Punkt der Ausführung des Code vor der Fortsetzung erreichen.
  • Andere Variationen liegen innerhalb des Wesens der vorliegenden Offenbarung. Somit werden, obwohl die offenbarten Techniken für verschiedene Modifikationen und alternative Konstruktionen empfänglich sind, bestimmte erläuterte Ausführungsformen davon in den Zeichnungen gezeigt und wurden vorstehend ausführlich beschrieben. Es sei jedoch zu verstehen, dass keine Absicht besteht, die Offenbarung auf die offenbarte spezielle Form oder Formen zu begrenzen, sondern die Absicht besteht im Gegenteil darin, alle Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die in innerhalb des Wesens und des Umfangs der Offenbarung fallen, wie in den beigefügten Ansprüchen definiert.
  • Die Verwendung der Begriffe „einer/eine/eines“ und „der/die/das“ und ähnliche Referenzen im Kontext des Beschreibens der offenbarten Ausführungsformen (insbesondere im Kontext der folgenden Ansprüche) sind auszulegen, als sowohl den Singular als auch den Plural zu umfassen, solange nichts Anderweitiges hier angegeben oder durch den Kontext deutlich widersprochen wird, und nicht als ein Definition eines Begriffs. Die Begriffe „umfassend“, „aufweisend“, „einschließlich“ und „enthaltend“ sind als offene Begriffe auszulegen (das heißt bedeutend „umfassend, jedoch nicht beschränkt auf“), solange nicht anderweitig angemerkt. Der Begriff „verbunden,“ wenn nicht modifiziert und sich auf physische Verbindungen beziehend, ist als teilweise oder vollständig innerhalb enthaltend, befestigt an oder zusammen verbunden auszulegen, sogar wenn es etwas Intervenierendes gibt. Die Nennung von Wertebereichen hier ist lediglich bestimmt, um als ein Kurzformverfahren des einzelnen Bezugnehmens auf jeden separaten Wert zu dienen, der in den Bereich fällt, es sei denn, dass hier etwas anderes angegeben ist, und jeder separate Wert wird in die Spezifikation aufgenommen, als ob er hier einzeln wiedergegeben wäre. Die Verwendung des Begriffs „Satz“ (z.B., „ein Satz von Objekten“) oder „Teilsatz“ ist, es sei denn, es ist etwas anderes angemerkt oder dies widerspricht dem Kontext, als eine nicht leere Zusammenstellung auszulegen, die ein oder mehrere Elemente umfasst. Ferner bezeichnet, es sei denn, dass etwas anderes angemerkt ist oder dies dem Kontext widerspricht, der Begriff „Teilsatz“ eines entsprechenden Satzes nicht notwendigerweise einen richtigen Teilsatz des entsprechenden Satzes, sondern der Teilsatz und ein entsprechender Satz können gleich sein.
  • Verbindende Sprache, wie beispielsweise Ausdrücke der Form „mindestens eines von A, B, und C“, oder „mindestens eines von A, B und C“, es sei denn, das es speziell anders angemerkt ist oder anderweitig eindeutig durch den Kontext widersprochen wird, ist andernfalls in dem Kontext zu verstehen, wie sie allgemein verwendet wird, um darzustellen, dass ein Objekt, ein Begriff usw. entweder A oder B oder C oder einen beliebigen nicht leeren Teilsatz des Satzes aus A und B und C sein kann. Beispielsweise beziehen sich im veranschaulichten Beispiel eines Satzes, der drei Elemente aufweist, die verbindenden Ausdrücke „mindestens eines von A, B, und C“ und „mindestens eines von A, B und C“ auf einen der folgenden Sätze: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Somit ist eine derartige verbindende Sprache allgemein nicht bestimmt, zu implizieren, dass bestimmte Ausführungsformen verlangen, dass mindestens eines von A, mindestens eines von B, und mindestens eines von C jeweils vorhanden sind. Außerdem gibt, es sei denn, dass etwas anderes angemerkt ist oder durch den Kontext widersprochen wird, der Begriff „Mehrzahl“ einen Zustand in der Mehrzahl an (z.B., „eine Mehrzahl von Elementen“ gibt mehrere Elemente an). Die Anzahl von Elementen in einer Mehrzahl ist mindestens zwei, kann jedoch mehr sein, wenn so entweder explizit oder durch einen Kontext angegeben. Ferner bedeutet, es sei denn, dass etwas anderes angemerkt ist oder dies anderweitig aus dem Kontext offensichtlich ist, der Ausdruck „basierend auf“ „basierend mindestens teilweise auf“ und nicht „basierend allein auf.“
  • Vorgänge von hier beschriebenen Prozesses können in jeder geeigneten Reihenfolge durchgeführt werden, sofern hier nicht anderweitig angegeben oder der Kontext dem anderweitig eindeutig widerspricht. In mindestens einer Ausführungsform wird ein Prozess, wie beispielsweise jene Prozesse (oder Variationen und/oder Kombinationen davon), die hier beschrieben sind, unter der Steuerung von einem oder mehreren Computersystemen durchgeführt, die mit ausführbaren Anweisungen konfiguriert sind, und wird als Code (z.B., ausführbare Anweisungen, ein oder mehrere Computerprogramme oder ein oder mehrere Anwendungen) implementiert, der zusammen auf einem oder mehreren Prozessoren durch Hardware oder Kombinationen davon ausgeführt wird. In mindestens einer Ausführungsform wird ein Code auf einem computerlesbaren Speichermedium beispielsweise in Form eines Computerprogramms ausgeführt, das mehrere Anweisungen umfasst, die durch einen oder mehrere Prozessoren ausführbar sind. In mindestens einer Ausführungsform ist ein computerlesbares Speichermedium ein nicht flüchtiges computerlesbares Speichermedium, das flüchtige Signale ausschließt (z.B., eine propagierende transiente elektrische oder elektromagnetische Übertragung), jedoch nicht flüchtige Datenspeicherschaltungen (z.B., Puffer, Cache und Warteschlangen) innerhalb Transceivern von flüchtigen Signalen umfasst. In mindestens einer Ausführungsform ist der Code (z.B., ein ausführbarer Code oder Quellencode) auf einem Satz von einem oder mehreren nicht flüchtigen computerlesbaren Speichermedien gespeichert, die darauf gespeicherte ausführbare Anweisungen aufweisen (oder anderem Speicher, um ausführbare Anweisungen zu speichern) die, wenn durch einen oder mehreren Prozessoren eines Computersystems ausgeführt (d.h., als ein Ergebnis einer Ausführung) das Computersystem veranlassen, hier beschriebene Vorgänge durchzuführen. Ein Satz von nicht flüchtigen computerlesbaren Speicherungsmedien umfasst in mindestens einer Ausführungsform mehrere nicht flüchtige computerlesbare Speicherungsmedien und eines oder mehrere von einzelnen nicht flüchtigen Speicherungsmedien der mehreren nicht flüchtigen computerlesbaren Speichermedien Fehlen sämtlicher Code, während mehrere nicht flüchtige computerlesbare Speichermedien zusammen den gesamten Code speichern. In mindestens einer Ausführungsform werden ausführbare Anweisungen ausgeführt, so dass unterschiedliche Anweisungen durch unterschiedliche Prozessoren ausgeführt werden - beispielsweise speichert ein nicht flüchtiges computerlesbares Speichermedium Anweisungen und eine Haupt-Zentralverarbeitungseinheit („CPU“) führt einige Anweisungen aus, während eine Graphikverarbeitungseinheit („GPU“) andere Anweisungen ausführt. In mindestens einer Ausführungsform weisen unterschiedliche Komponenten eines Computersystems getrennte Prozessoren auf und unterschiedliche Prozessoren führen unterschiedliche Teilsätze von Anweisungen aus.
  • Dementsprechend sind in mindestens einer Ausführungsform Computersysteme konfiguriert, um ein oder mehrere Dienste zu implementieren, die einzeln oder gemeinsam Vorgänge von hier beschriebenen Prozessen durchführen, und derartige Computersysteme sind mit anwendbarer Hardware und/oder Software konfiguriert, welche die Durchführung von Vorgängen ermöglichen. Ferner ist ein Computersystem, das mindestens eine Ausführungsform der vorliegenden Offenbarung implementiert, eine einzelne Vorrichtung, und ist in einer anderen Ausführungsform ein verteiltes Computersystem, das mehrere Vorrichtungen umfasst, die unterschiedlich arbeiten, sodass das ein verteiltes Computersystem die hier beschriebenen Vorgänge durchführt und sodass eine einzelne Vorrichtung nicht alle Vorgänge durchführt.
  • Die Verwendung von einzelnen oder allen Beispielen oder einer hier beispielhaften bereitgestellten Formulierung (z.B., „wie beispielsweise“) ist bestimmt, lediglich Ausführungsformen der Offenbarung besser zu beleuchten und stellt keine Einschränkung des Umfangs der Offenbarung dar, es sei denn, dass etwas anderes beansprucht ist. Keine Sprache in der Spezifikation sollte so ausgelegt werden, dass sie ein beliebiges nicht beanspruchtes Element als wesentlich angibt, um die Offenbarung zu praktizieren.
  • Sämtliche Bezugnahmen, einschließlich Veröffentlichungen, Patenanmeldungen und Patente, die hier zitiert sind, werden hiermit durch Bezugnahme in dem gleichen Ausmaß aufgenommen, als ob jede Bezugnahme einzeln und speziell angegeben würde, um durch Bezugnahme aufgenommen zu werden, und in ihrer Gesamtheit hier dargelegt wären.
  • In der Beschreibung und den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen verwendet werden. Es sei zu verstehen, dass diese Begriffe nicht als Synonyme füreinander bestimmt sind. Stattdessen kann in bestimmten Beispielen „verbunden“ oder „gekoppelt“ verwendet werden, um anzugeben, dass zwei oder mehr Elemente in direktem oder indirektem physischen oder elektrischen Kontakt miteinander sind. „Gekoppelt“ kann ebenfalls bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sind, jedoch dennoch weiterhin kooperieren oder miteinander wechselwirken.
  • Sofern nicht speziell anders angegeben, wird anerkannt, dass über die gesamte Spezifikation Begriffe wie „Verarbeiten“, „Rechnen“, „Berechnen“, „Bestimmen“ oder dergleichen sich auf eine Aktion und/oder Verfahren eines Computers oder Rechensystems beziehen, oder einer ähnlichen elektronischen Vorrichtung, die Daten manipulieren und/oder Daten transformieren, die als physikalische, wie beispielsweise elektronische, Größen in den Registern des Rechensystems und/oder Speichern in andere Daten, die auf ähnliche Weise als physikalische Größen innerhalb der Speicher des Rechensystems, Registern oder anderer derartiger Informationsspeicherungs-, Übertragungs- oder Anzeigevorrichtungen dargestellt werden.
  • Auf eine ähnlichen Art und Weise kann sich der Begriff „Prozessor“ auf jede Vorrichtung oder Abschnitt einer Vorrichtung beziehen, die elektronische Daten aus Registern und/oder Speicher verarbeitet und diese elektronischen Daten in andere elektronische Daten transformiert, die in Registern und/oder Speicher gespeichert werden können. Als nicht einschränkendes Beispiele kann „Prozessor“ eine CPU oder eine GPU sein. Eine „Rechenplattform“ kann einen oder mehrere Prozessoren umfassen. Wie hier verwendet, können „Software“-Prozesse beispielsweise Software- und/oder Hardwareentitäten umfassen, die Arbeit im Laufe der Zeit durchführen, wie beispielsweise Aufgaben, Threads und intelligente Agenten. Jeder Prozess kann sich ebenfalls auf mehrere Prozesse zum Ausführen von Anweisungen der Reihe nach oder parallel, kontinuierlich oder intermittierend beziehen. Die Begriffe „System“ und „Verfahren“ werden hier austauschbar verwendet, insofern als System ein oder mehrere Verfahren verkörpern und Verfahren als ein System betrachtet werden können.
  • In dem vorliegenden Dokument können Verweise auf das Erhalten, Erfassen, Empfangen oder Eingeben von analogen oder digitalen Daten in ein Teilsystem, Computersystem oder computerimplementierte Maschine erfolgen. Der Prozess des Erhaltens, Erfassens, Empfangens oder Eingebens von analogen und digitalen Daten kann in einer Vielfalt von Möglichkeiten erreicht werden, wie beispielsweise durch Empfangen von Daten als ein Parameter eines Funktionsaufrufs oder eines Aufrufs an eine Anwendungsprogrammierschnittstelle. In einigen Implementierungen kann der Prozess des Erhaltens, Erfassens, Empfangen oder Eingebens von analogen oder digitalen Daten durch Transferieren von Daten über eine serielle oder parallele Schnittstelle erreicht werden. In einer anderen Implementierung kann der Prozess des Erhaltens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch Transferieren von Daten über ein Computernetzwerk von bereitstellender Entität zu erfassender Entität erreicht werden. Verweise können ebenfalls auf das Bereitstellen, Ausgeben, Übertragen, Senden oder Repräsentieren analoger oder digitaler Daten erfolgen. In verschiedene Beispielen können Prozesse des Bereitstellens, Ausgebens, Übertragens, Sendens oder Präsentierens analoger oder digitaler Daten durch Transferieren von Daten als ein Eingangs- oder Ausgangsparameter eines Funktionsaufruf, eines Parameters einer Anwendungsprogrammierschnittstelle oder eines Mechanismus zur Interprozesskommunikation erreicht werden.
  • Obwohl die obige Erläuterung bespielhafte Implementierungen von beschriebenen Techniken darlegt, können andere Architekturen verwendet werden, um die beschriebene Funktionalität zu implementieren, und sind bestimmt, innerhalb des Umfangs der Offenbarung zu liegen. Des Weiteren könnten, obwohl spezifische Verteilungen von Verantwortlichkeiten obenstehend zum Zwecke der Erläuterung definiert werden, verschiedene Funktionen und Verantwortlichkeiten in unterschiedlichen Weisen abhängig von den Umständen verteilt und aufgeteilt werden.
  • Des Weiteren sei zu verstehen, obwohl der Gegenstand in einer für strukturelle Merkmale und/oder methodische Handlungen spezifischen Sprache beschrieben wurde, dass der in den beigefügten Ansprüchen definierte Gegenstand nicht notwendigerweise auf beschriebene spezifische Merkmale oder Handlungen beschränkt ist. Vielmehr werden spezifische Merkmale und Handlungen als beispielhafte Formen des Implementierens der Ansprüche 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 16/559544 [0001]

Claims (33)

  1. Prozessor, umfassend: eine oder mehrere Arithmetik-Logikeinheiten (ALUs), um eine oder mehrere Faltungsoperationen auf Bilddaten durchzuführen, in dem mindestens ein oder mehrere Tensoren kontraktiert werden, um eine oder mehrere Merkmalskarten zu erzeugen.
  2. Prozessor gemäß Anspruch 1, wobei die eine oder mehrere Faltungsoperationen eine erste Faltungsoperation mit einem ersten Aktivierungstensor und einem Filtertensor umfassen, um eine erste Merkmalskarte zu erzeugen, die durch einen Ausgangstensor dargestellt wird, und die eine oder mehrere ALUs sollen: einen zweiten Aktivierungstensor konstruieren, der eine höhere Anzahl von Modi als der erste Aktivierungstensor aufweist; und die erste Merkmalskarte erzeugen, durch Durchführen einer Tensorkontraktion mit dem zweiten Aktivierungstensor und dem Filtertensor.
  3. Prozessor gemäß Anspruch 2, wobei die eine oder mehrere ALUs den zweiten Aktivierungstensor konstruieren sollen, basierend mindestens teilweise auf: Identifizieren eines Modus des ersten Aktivierungstensors, der nicht in dem Filtertensor vorhanden ist und der nicht in dem Ausgangstensor vorhanden ist; und Ersetzen des identifizierten Modus mit einem ersten Modus von dem Ausgangstensors und einem zweiten Modus von dem Filtertensor in dem zweiten Aktivierungstensor.
  4. Prozessor gemäß Anspruch 3, wobei die eine oder mehrere ALUs den zweiten Aktivierungstensor konstruieren sollen, so dass der erste Modus und der zweite Modus des zweiten Aktivierungstensors überlappende Strides aufweisen.
  5. Prozessor gemäß Anspruch 4, wobei der identifizierte Modus des ersten Aktivierungstensors einen identifizierten Stride aufweist und die eine oder mehrere ALUs einen ersten Stride des ersten Modus und einen zweiten Stride des zweiten Modus des zweiten Aktivierungstensor auf den identifizierten Stride einstellen sollen.
  6. Prozessor gemäß Anspruch 2, wobei die eine oder mehrere ALUs den zweiten Aktivierungstensor unter Verwendung von Datenelementen des ersten Aktivierungstensors ohne Hinzufügen zusätzlicher Datenelemente konstruieren sollen.
  7. System, umfassend: einen oder mehrere Prozessoren, um eine erste Art der Operation an einem Tensor durchzuführen, um eine Ausgabe zu erzeugen, durch: Ändern einer Darstellung des Tensors von einer ersten Anzahl von Dimensionen in eine zweite Anzahl von Dimensionen; und Durchführen einer zweiten Art von Operation an der Darstellung des Tensors mit der zweiten Anzahl von Dimensionen, um die Ausgabe zu erzeugen.
  8. System gemäß Anspruch 7, wobei die erste Art der Operation eine Faltung ist, die zweite Art der Operation eine Tensorkontraktion ist, und die zweite Anzahl von Dimensionen größer als die erste Anzahl von Dimensionen ist.
  9. System gemäß Anspruch 8, wobei die Ausgabe eine Merkmalskarte ist, die durch einen Ausgangstensor dargestellt wird, der Tensor ein Aktivierungstensor ist, die Faltung eine Faltung des Aktivierungstensors und eines Filtertensors ist, und der eine oder mehrere Prozessoren sollen: eine Dimension des Aktivierungstensors identifizieren, der nicht in dem Filtertensor vorhanden ist und nicht in dem Ausgangstensor vorhanden ist; und die identifizierte Dimension mit einer ersten Dimension von dem Ausgangstensor und einer zweiten Dimension von dem Filtertensor in der geänderten Darstellung des Tensors ersetzen.
  10. System gemäß Anspruch 9, wobei die erste Dimension und die zweite Dimension überlappende Strides aufweisen.
  11. System gemäß Anspruch 8, ferner umfassend einen Speicher, wobei der Tensor ein oder mehrere in dem Speicher gespeicherte Datenelemente umfasst, und der eine oder mehrere Prozessoren die Darstellung des Tensors ändern sollen, so dass sich zwei Dimensionen des Tensors auf einen gemeinsamen Satz von Datenelementen beziehen, die in dem einen oder mehreren Datenelementen enthalten sind.
  12. System gemäß Anspruch 7, wobei die erste Art der Operation eine Tensorkontraktion ist und die zweite Art der Operation eine Faltung ist.
  13. System gemäß Anspruch 8, ferner umfassend einen oder mehrere Speicher, um Parameter zu speichern, die einem oder mehreren neuronalen Netzwerken entsprechen, wobei der eine oder mehrere Prozessoren eine Inferenzierungsoperation unter Verwendung des einen oder mehrerer neuronaler Netzwerke basierend, mindestens teilweise, auf der Ausgabe der Tensorkontraktion durchführen sollen.
  14. Maschinenlesbares Medium mit einem darauf gespeicherten Satz von Anweisungen, die, wenn von einem oder mehreren Prozessoren durchgeführt, den einen oder mehrere Prozessoren veranlassen, mindestens eine oder mehrere Merkmalskartenausgaben von einer oder mehreren Faltungsoperationen an Bilddaten durch mindestens Kontraktieren eines oder mehrerer Tensoren zu erzeugen.
  15. Maschinenlesbares Medium gemäß Anspruch 14, wobei die eine oder mehrere Faltungsoperationen eine erste Faltungsoperation mit einem ersten Aktivierungstensor und einen Filtertensor umfassen, um eine erste Merkmalskarte zu erzeugen, die durch einen Ausgangstensor dargestellt wird, und wobei der Satz von Anweisungen, der, wenn durch den einen oder mehrere Prozessoren durchgeführt, ferner den einen oder mehrere Prozessoren veranlassen: einen zweiten Aktivierungstensor zu konstruieren, der eine höhere Anzahl von Modi als der erste Aktivierungstensor aufweist; und eine Tensorkontraktion mit dem zweiten Aktivierungstensor und dem Filtertensor durchzuführen, um die erste Merkmalskarte zu erzeugen.
  16. Maschinenlesbares Medium gemäß Anspruch 15, wobei der Satz von Anweisungen, die, wenn von dem einen oder mehreren Prozessoren durchgeführt, ferner den einen oder mehrere Prozessoren veranlassen: einen Modus des ersten Aktivierungstensors zu identifizieren, der in dem Filtertensor nicht vorhanden ist und der in dem Ausgangstensor nicht vorhanden ist; und den identifizierten Modus mit einem ersten Modus von dem Ausgangstensor und einen zweiten Modus von dem Filtertensor in dem zweiten Aktivierungstensor zu ersetzen.
  17. Maschinenlesbares Medium gemäß Anspruch 16, wobei der Satz von Anweisungen, die, wenn durch den einen oder mehrere Prozessoren durchgeführt, ferner den einen oder mehrere Prozessoren veranlassen, den zweiten Aktivierungstensor zu konstruieren, so dass der erste Modus und der zweite Modus des zweiten Aktivierungstensor überlappende Strides aufweisen.
  18. Maschinenlesbares Medium gemäß Anspruch 17, wobei der identifizierte Modus des ersten Aktivierungstensors einen identifizierten Stride aufweist, und der Satz von Anweisungen, die, wenn durch den einen oder mehrere Prozessoren durchgeführt, ferner den einen oder mehrere Prozessoren veranlassen, einen ersten Stride des ersten Modus und einen zweiten Stride des zweiten Modus des zweiten Aktivierungstensors in dem identifizierten Stride einzustellen.
  19. Maschinenlesbares Medium gemäß Anspruch 15, wobei die erste Faltungsoperation eine zweidimensionale (2D) Faltungsoperation ist.
  20. Maschinenlesbares Medium gemäß Anspruch 15, wobei der Satz von Anweisungen, die, wenn durch den einen oder mehrere Prozessoren durchgeführt, ferner den einen oder mehrere Prozessoren veranlassen, eine Inferenzierungsoperation unter Verwendung eines neuronalen Netzwerks basierend, mindestens teilweise, auf der ersten Merkmalskarte durchzuführen.
  21. Fahrzeug, umfassend: ein Computer-Visionssystem, das einen oder mehrere Prozessoren umfasst, um ein oder mehrere Merkmale einer Fahrzeugbetriebsumgebung basierend mindestens teilweise auf der Verwendung eines oder mehrerer neuronaler Netzwerke zu identifizieren, um eine oder mehrere Ausgaben von einer oder mehreren Faltungsoperationen auf Bilddaten durch mindestens Kontraktieren eines oder mehrerer Tensoren zu erzeugen, um eine oder mehrere Merkmalskarten zu erzeugen; und eines oder mehrere eines Antriebssystems und eines Richtungssteuersystems, um eine oder mehrere Bewegungen des Fahrzeugs basierend mindestens teilweise auf dem identifizierten einen oder mehreren Merkmale zu steuern.
  22. Fahrzeug gemäß Anspruch 21, wobei die eine oder mehrere Faltungsoperationen eine erste Faltungsoperation mit einem ersten Aktivierungstensor und einen Filtertensor umfassen, um eine erste Merkmalskarte zu erzeugen, die durch einen Ausgangstensor dargestellt wird, und der einen oder mehrere Prozessoren sollen: einen zweiten Aktivierungstensor konstruieren, der eine höhere Anzahl von Modi als der erste Aktivierungstensor aufweist; und die erste Merkmalskarte durch Durchführen einer Tensorkontraktion mit dem zweiten Aktivierungstensor und dem Filtertensor erzeugen.
  23. Fahrzeug gemäß Anspruch 22, wobei der eine oder mehrere Prozessoren den zweiten Aktivierungstensor konstruieren, sollen basierend mindestens teilweise auf: Identifizieren eines Modus des ersten Aktivierungstensors, der nicht in dem Filtertensor vorhanden ist und nicht in dem Ausgangstensor vorhanden ist; und Ersetzen des identifizierten Modus mit einem ersten Modus von dem Ausgangstensor und einem zweiten Modus von dem Filtertensor in dem zweiten Aktivierungstensor.
  24. Fahrzeug gemäß Anspruch 23, wobei der eine oder mehrere Prozessoren den zweiten Aktivierungstensor konstruieren sollen, so dass der erste Modus und der zweite Modus des zweiten Aktivierungstensors überlappende Strides aufweisen.
  25. Fahrzeug gemäß Anspruch 24, wobei der identifizierte Modus des ersten Aktivierungstensors einen identifizierten Stride aufweist, und der eine oder mehrere Prozessoren einen ersten Stride des ersten Modus und einen zweiten Stride des zweiten Modus des zweiten Aktivierungstensor in den identifizierten Stride einstellen sollen.
  26. Fahrzeug gemäß Anspruch 22, wobei das Computer-Visionssystem einen Speicher umfasst, der erste Aktivierungstensor mehrere in dem Speicher gespeicherte Datenelemente umfasst, und der eine oder mehrere Prozessoren den zweiten Aktivierungstensor konstruieren sollen, so dass sich zwei Modi des zweiten Aktivierungstensors auf einen gemeinsamen Satz von Datenelementen beziehen, der in den mehreren Datenelementen enthalten ist.
  27. Verfahren, umfassend: Identifizieren einer ersten Art der Operation mit einem ersten Tensor, um eine Ausgabe zu erzeugen; und Erzeugen der Ausgabe durch: Konstruieren eines zweiten Tensors basierend mindestens teilweise auf dem Ändern einer Anzahl von Dimensionen des ersten Tensor von einer ersten Anzahl von Dimensionen in eine zweite Anzahl von Dimensionen; und Durchführen einer zweiten Art der Operation mit dem zweiten Tensor, um die Ausgabe zu erzeugen.
  28. Verfahren gemäß Anspruch 27, wobei die erste Art der Operation eine Faltung ist, die zweite Art der Operation eine Tensorkontraktion ist und die zweite Anzahl von Dimensionen größer als die erste Anzahl von Dimensionen ist.
  29. Verfahren gemäß Anspruch 28, wobei die Ausgabe eine Merkmalskarte ist, die durch einen Ausgangstensor dargestellt wird, der erste Tensor ein Aktivierungstensor ist, die Faltung eine Faltung des Aktivierungstensors und eines Filtertensor ist, und das Verfahren ferner umfasst: Identifizieren eines Modus des Aktivierungstensors, der in dem Filtertensor nicht vorhanden ist und in dem Ausgangstensor nicht vorhanden ist; und Ersetzen des identifizierten Modus mit einem ersten Modus von dem Ausgangstensor und einem zweiten Modus von dem Filtertensor in dem zweiten Tensor.
  30. Verfahren gemäß Anspruch 29, wobei das Konstruieren des zweiten Tensors das Konstruieren des zweiten Tensors umfasst, so dass der erste Modus und der zweite Modus überlappende Strides aufweisen.
  31. Verfahren gemäß Anspruch 28, wobei die Faltung eine zweidimensionale (2D) Faltung ist.
  32. Verfahren gemäß Anspruch 28, ferner umfassend: Durchführen einer Inferenzierungsoperation unter Verwendung eines neuronalen Netzwerks basierend, mindestens teilweise, auf der Tensorkontraktion.
  33. Verfahren gemäß Anspruch 27, wobei die erste Art der Operation eine Tensorkontraktion ist und die zweite Art der Operation eine Faltung ist.
DE112020004192.1T 2019-09-03 2020-08-28 Prozessor und system, um tensoroperationen in maschinelles lernen zu konvertieren Pending DE112020004192T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/559,544 2019-09-03
US16/559,544 US20210064987A1 (en) 2019-09-03 2019-09-03 Processor and system to convert tensor operations in machine learning
PCT/US2020/048615 WO2021045976A1 (en) 2019-09-03 2020-08-28 Processor and system to convert tensor operations in machine learning

Publications (1)

Publication Number Publication Date
DE112020004192T5 true DE112020004192T5 (de) 2022-06-23

Family

ID=72433108

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020004192.1T Pending DE112020004192T5 (de) 2019-09-03 2020-08-28 Prozessor und system, um tensoroperationen in maschinelles lernen zu konvertieren

Country Status (5)

Country Link
US (1) US20210064987A1 (de)
CN (1) CN114556372A (de)
DE (1) DE112020004192T5 (de)
GB (2) GB2601664B (de)
WO (1) WO2021045976A1 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11663056B2 (en) * 2019-12-20 2023-05-30 Intel Corporation Unified programming interface for regrained tile execution
US11536851B2 (en) * 2020-09-01 2022-12-27 Spirent Communications Plc Highly scalable, low latency, GPU based GNSS simulation
US20220138551A1 (en) * 2020-10-29 2022-05-05 Arm Limited Processing data of a neural network
US20220156575A1 (en) * 2020-11-19 2022-05-19 Apple Inc. Multi-dimensional tensor support extension in neural network processor
US12002453B2 (en) * 2021-03-25 2024-06-04 Beijing Transtreams Technology Co. Ltd. Methods and devices for irregular pruning for automatic speech recognition
US11478927B1 (en) * 2021-04-01 2022-10-25 Giant.Ai, Inc. Hybrid computing architectures with specialized processors to encode/decode latent representations for controlling dynamic mechanical systems
CN115221102B (zh) * 2021-04-16 2024-01-19 中科寒武纪科技股份有限公司 用于优化片上系统的卷积运算操作的方法和相关产品
CN113259604B (zh) * 2021-05-14 2023-05-30 厦门壹普智慧科技有限公司 一种智能感知图像获取装置及方法
KR20220162971A (ko) * 2021-06-02 2022-12-09 세메스 주식회사 데이터 처리 방법 및 데이터 비교 방법
US20220405555A1 (en) * 2021-06-17 2022-12-22 International Business Machines Corporation Single function to perform combined convolution and select operations
CN113378862B (zh) * 2021-07-09 2023-12-19 上海商汤科技开发有限公司 一种图像处理方法及装置、电子设备和存储介质
AU2022439107A1 (en) 2022-02-01 2024-09-19 Landscan Llc Systems and methods for multispectral landscape mapping
CN115269205B (zh) * 2022-09-27 2022-12-27 之江实验室 一种面向神经网络计算的内存优化方法和装置
CN115759294B (zh) * 2022-11-25 2023-10-24 北京百度网讯科技有限公司 数据处理方法、装置、电子设备及存储介质
CN116205666B (zh) * 2022-12-22 2024-08-13 国网湖北省电力有限公司宜昌供电公司 一种基于RACNet的多变量电力负荷预测方法
CN116719621B (zh) * 2023-06-01 2024-05-03 上海聚水潭网络科技有限公司 一种针对海量任务的数据回写方法、装置、设备及介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4077295B2 (ja) * 2002-10-23 2008-04-16 株式会社東芝 同期型半導体記憶装置及びその動作方法
JP2015215837A (ja) * 2014-05-13 2015-12-03 株式会社デンソー 演算処理装置
US11170294B2 (en) * 2016-01-07 2021-11-09 Intel Corporation Hardware accelerated machine learning
US9959498B1 (en) * 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
KR20180053113A (ko) * 2016-11-11 2018-05-21 에스케이하이닉스 주식회사 반도체장치
CN108133223B (zh) * 2016-12-01 2020-06-26 富士通株式会社 确定卷积神经网络cnn模型的装置和方法
US11593632B2 (en) * 2016-12-15 2023-02-28 WaveOne Inc. Deep learning based on image encoding and decoding
US10726583B2 (en) * 2016-12-30 2020-07-28 Intel Corporation System and method of encoding and decoding feature maps and weights for a convolutional neural network
KR102499396B1 (ko) * 2017-03-03 2023-02-13 삼성전자 주식회사 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치의 동작 방법
US10169298B1 (en) * 2017-05-11 2019-01-01 NovuMind Limited Native tensor processor, using outer product unit

Also Published As

Publication number Publication date
GB202400017D0 (en) 2024-02-14
GB2601664A (en) 2022-06-08
GB2601664B (en) 2024-08-28
US20210064987A1 (en) 2021-03-04
GB202202279D0 (en) 2022-04-06
CN114556372A (zh) 2022-05-27
WO2021045976A1 (en) 2021-03-11

Similar Documents

Publication Publication Date Title
DE112020005156B4 (de) Verstärkendes Lernen von taktilen Greifstrategien
DE112020004192T5 (de) Prozessor und system, um tensoroperationen in maschinelles lernen zu konvertieren
DE112020005696T5 (de) Training und ableiten unter verwendung eines neuronalen netzwerkes zum vorhersagen der ausrichtung von objekten in bildern
DE112020003832T5 (de) Neuronale netzwerke zur bildregistrierung und bildsegmentierung, die unter verwendung eines registrierungssimulators trainiert werden
DE112020004302T5 (de) Trainingsstrategiesuche unter verwendung von verstärkendem lernen
DE112020004277T5 (de) Auf maschinellem Lernen basierendes Architektur-Suchverfahren für ein neuronales Netzwerk
DE112020005509T5 (de) Prozessor und system zum identifizieren von out-of-distribution- eingabedaten in neuronalen netzwerken
DE112020005206T5 (de) Bestimmen der Objektorientierung aus einem Bild mit Maschinenlernen
DE102021108042A1 (de) Verbessertes medienengagement durch tiefes lernen
DE112020003833T5 (de) Durchführen von Matrixoperationen in neuronalen Netzen
DE102020120201A1 (de) Blickerkennung unter verwendung eines oder mehrerer neuronaler netzwerke
DE112020006144T5 (de) Mastertransformationsarchitektur für Deep-Learning
DE102021124008A1 (de) Training eines neuronalen netzes unter verwendung robuster temporaler ensemblebildung
DE112019007906T5 (de) Identifizierung von mehrskaligen Merkmalen unter Verwendung eines neuronalen Netzes
DE112020005464T5 (de) Verteilte gewichtsaktualisierung für backpropagation eines neuronalen netzwerks
DE102020129425A1 (de) Geführte unsicherheit-bewusste richtlinien-optimierung: kombinieren von modellfreien und modellbasierten strategien für probeneffizientes lernen
DE102019122790A1 (de) Robotersteuerungssystem
DE102021122617A1 (de) Globales föderiertes training für neuronale netze
DE112021001762T5 (de) Erzeugen von kennzeichnungen für synthetische bilder unter verwenden eines oder mehrerer neuronaler netzwerke
DE112020005364T5 (de) Api für rekurrente neuronale netze
DE102022110000A1 (de) Dynamische gewichtsaktualisierungen für neuronale netzwerke
DE112021000351T5 (de) Maschinenlernbasiertes objekterfassungssystem
DE112021001835T5 (de) Beschriften von bildern mit einem neuronalen netz
DE102021129825A1 (de) Objekterkennung und kollisionsvermeidung unter verwendung eines neuronalen netzes
DE112020005476T5 (de) Neuronales netz zur bildausrichtung

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