DE112021007476T5 - Erhöhung der Spärlichkeit in Datensätzen - Google Patents

Erhöhung der Spärlichkeit in Datensätzen Download PDF

Info

Publication number
DE112021007476T5
DE112021007476T5 DE112021007476.8T DE112021007476T DE112021007476T5 DE 112021007476 T5 DE112021007476 T5 DE 112021007476T5 DE 112021007476 T DE112021007476 T DE 112021007476T DE 112021007476 T5 DE112021007476 T5 DE 112021007476T5
Authority
DE
Germany
Prior art keywords
data
sets
subset
neural network
memory
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
DE112021007476.8T
Other languages
English (en)
Inventor
Jeffrey Michael Pool
Chong Yu
Paulius Micikevicius
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 DE112021007476T5 publication Critical patent/DE112021007476T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • 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
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

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

Abstract

Vorrichtungen, Systeme und Techniken zur Transformation von Datensätzen, beispielsweise von Matrizen, die Ebenen neuronaler Netze darstellen, um die Spärlichkeit und/oder andere Eigenschaften der Datensätze zu erhöhen, um die Leistung bei Berechnungen, beispielsweise von Berechnungen in neuronalen Netzen, zu verbessern. In mindestens einer Ausführungsform werden eine oder mehrere Teilmengen von Daten in einem oder mehreren Sätzen von Daten als Teil eines Prozesses umgeordnet, um die Spärlichkeit in dem einen oder den mehreren Sätzen von Daten zu erhöhen, um eine oder mehrere strukturelle Spärlichkeitsbedingungen zu erfüllen.

Description

  • GEBIET DER TECHNIK
  • Mindestens eine Ausführungsform bezieht sich auf Verarbeitungsressourcen, die zur Transformation von Datensätzen, beispielsweise von Matrizen, die Ebenen neuronaler Netze darstellen, verwendet werden, um die Spärlichkeit der Datensätze zu erhöhen, um die Leistung bei verschiedenen Berechnungen zu verbessern. Zum Beispiel bezieht sich mindestens eine Ausführungsform auf Prozessoren oder Computersysteme, die dazu verwendet werden, eine oder mehrere Teilmengen von Daten in einem oder mehreren Sätzen von Daten umzuordnen, um eine Klasse von Datenwerten zu maximieren, die als Teil eines Prozesses beschnitten werden sollen, der die Datenspärlichkeit erhöht, um die Rechenleistung zu verbessern, gemäß verschiedenen hierin beschriebenen neuen Techniken.
  • STAND DER TECHNIK
  • Spärliche neuronale Netze sind neuronale Netze, bei denen eine Anzahl von Gewichtungen in jeder Ebene des neuronalen Netzes Nullwerte aufweisen. Die Matrizen, die jede Ebene darstellen, bestehen aus diesen Nullwerten. Mögliche Vorteile von spärlichen neuronalen Netzen sind reduzierter Speicherbedarf und erhöhte Leistung. Jüngste Verbesserungen der Rechenhardware beinhalten Verarbeitungskerne, die speziell für die Arbeit mit Matrizen, die spärliche neuronale Netze darstellen, konfiguriert sind. Diese Hardware bietet erhebliche Fortschritte in der Rechengeschwindigkeit, solange Matrizen, die Schichten neuronaler Netze entsprechen, bestimmte strukturierte Spärlichkeitsbedingungen erfüllen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
    • 1 ist ein Blockdiagramm, das eine neuronale Netzarchitektur veranschaulicht, wobei jede Ebene unter Verwendung von Matrizen dargestellt wird, gemäß mindestens einer Ausführungsform;
    • 2 ist ein Blockdiagramm, das Verbindungen zwischen Ebenen eines spärlichen neuronalen Netzes veranschaulicht, wobei eine Ebene durch eine spärliche Matrix dargestellt wird, gemäß mindestens einer Ausführungsform;
    • 3 ist ein Blockdiagramm, das eine Parallelverarbeitungseinheitsarchitektur veranschaulicht, die einen oder mehrere spärliche Tensorkerne umfasst, gemäß mindestens einer Ausführungsform;
    • 4 ist ein Blockdiagramm, das eine 2:4-strukturierte Spärlichkeit innerhalb einer Zeile einer spärlichen Matrix veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 5 ist ein Blockdiagramm, das Permutationen in einer Zeile einer Matrix veranschaulicht, die eine Ebene in einem neuronalen Netz darstellt, gemäß mindestens einer Ausführungsform;
    • 6 ist ein Blockdiagramm, das eine beispielhafte Permutation in Spalten einer Matrix veranschaulicht, um eine Klasse von zu beschneidenden Datenwerten zu erhöhen, um eine 2:4-strukturierte Spärlichkeit zu erfüllen, gemäß mindestens einer Ausführungsform;
    • 7 veranschaulicht einen Prozess zum Bestimmen einer oder mehrerer Gewichtungspermutationen auf einer Matrix, um eine Klasse von zu beschneidenden Datenwerten zu vergrößern, um die 2:4-strukturierte Spärlichkeit zu erfüllen, gemäß mindestens einer Ausführungsform;
    • 8A veranschaulicht Inferenz- und/oder Trainingslogik gemäß mindestens einer Ausführungsform;
    • 8B veranschaulicht Inferenz- und/oder Trainingslogik gemäß mindestens einer Ausführungsform;
    • 9 veranschaulicht das Training und den Einsatz eines neuronalen Netzes gemäß mindestens einer Ausführungsform;
    • 10 veranschaulicht ein beispielhaftes Rechenzentrumssystem gemäß mindestens einer Ausführungsform;
    • 11A veranschaulicht ein Beispiel für ein autonomes Fahrzeug, gemäß mindestens einer Ausführungsform;
    • 11B veranschaulicht ein Beispiel für Kamerapositionen und Sichtfelder für das autonome Fahrzeug von 11A gemäß mindestens einer Ausführungsform;
    • 11C ist ein Blockdiagramm, das eine beispielhafte Systemarchitektur für das autonome Fahrzeug von 11A veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 11 D ist ein Diagramm, das ein System zur Kommunikation zwischen (einem) cloudbasierten Server(n) und dem autonomen Fahrzeug aus 11A veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 12 ist ein Blockdiagramm, das ein Computersystem veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 13 ist ein Blockdiagramm, das ein Computersystem veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 14 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 15 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 16A veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 16B veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 16C veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 16D veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 16E und 16F veranschaulichen ein gemeinsam genutztes Programmiermodell gemäß mindestens einer Ausführungsform;
    • 17 veranschaulicht beispielhafte integrierte Schaltungen und zugehörige Grafikprozessoren gemäß mindestens einer Ausführungsform;
    • 18A-18B veranschaulichen beispielhafte integrierte Schaltungen und zugehörige Grafikprozessoren gemäß mindestens einer Ausführungsform;
    • 19A-19B veranschaulichen zusätzliche beispielhafte Grafikprozessorlogik gemäß mindestens einer Ausführungsform;
    • 20 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 21A veranschaulicht einen Parallelprozessor gemäß mindestens einer Ausführungsform;
    • 21B veranschaulicht eine Partitionseinheit gemäß mindestens einer Ausführungsform;
    • 21C veranschaulicht ein Verarbeitungscluster gemäß mindestens einer Ausführungsform;
    • 21D veranschaulicht einen Grafikmultiprozessor gemäß mindestens einer Ausführungsform;
    • 22 veranschaulicht ein System mit mehreren Grafikverarbeitungseinheiten (graphics processing unit - GPU) gemäß mindestens einer Ausführungsform;
    • 23 veranschaulicht einen Grafikprozessor gemäß mindestens einer Ausführungsform;
    • 24 ist ein Blockdiagramm, das eine Prozessor-Mikroarchitektur für einen Prozessor veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 25 veranschaulicht einen Deep-Learning-Anwendungsprozessor gemäß mindestens einer Ausführungsform;
    • 26 ist ein Blockdiagramm, das einen beispielhaften neuromorphen Prozessor veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 27 veranschaulicht mindestens Abschnitte eines Grafikprozessors gemäß einer oder mehreren Ausführungsformen;
    • 28 veranschaulicht mindestens Abschnitte eines Grafikprozessors gemäß einer oder mehreren Ausführungsformen;
    • 29 veranschaulicht mindestens Abschnitte eines Grafikprozessors gemäß einer oder mehreren Ausführungsformen;
    • 30 ist ein Blockdiagramm einer Grafikverarbeitungs-Engine eines Grafikprozessors gemäß mindestens einer Ausführungsform;
    • 31 ist ein Blockdiagramm von mindestens Abschnitten eines Grafikprozessorkerns gemäß mindestens einer Ausführungsform;
    • 32A-32B veranschaulichen die Thread-Ausführungslogik, die ein Array von Verarbeitungselementen eines Grafikprozessorkerns beinhaltet, gemäß mindestens einer Ausführungsform;
    • 33 veranschaulicht eine Parallelverarbeitungseinheit (parallel processing unit - „PPU“) gemäß mindestens einer Ausführungsform;
    • 34 veranschaulicht ein allgemeines Verarbeitungscluster (general processing cluster - „GPC“) gemäß mindestens einer Ausführungsform;
    • 35 veranschaulicht eine Speicherpartitionseinheit einer Parallelverarbeitungseinheit („PPU“) gemäß mindestens einer Ausführungsform;
    • 36 veranschaulicht einen Streaming-Multiprozessor gemäß mindestens einer Ausführungsform.
    • 37 ist ein beispielhaftes Datenablaufdiagramm für eine weiterentwickelte Rechenpipeline gemäß mindestens einer Ausführungsform;
    • 38 ist ein Systemdiagramm für ein beispielhaftes System zum Trainieren, Anpassen, Instanziieren und Einsetzen von Modellen für maschinelles Lernen in einer fortgeschrittenen Rechenpipeline gemäß mindestens einer Ausführungsform;
    • 39 beinhaltet eine beispielhafte Veranschaulichung einer fortgeschrittenen Rechenpipeline 3810A zur Verarbeitung von Bilddaten gemäß mindestens einer Ausführungsform;
    • 40A beinhaltet ein beispielhaftes Datenablaufdiagramm eines virtuellen Instruments, das eine Ultraschallvorrichtung unterstützt, gemäß mindestens einer Ausführungsform;
    • 40B beinhaltet ein beispielhaftes Datenablaufdiagramm eines virtuellen Instruments, das einen CT-Scanner unterstützt, gemäß mindestens einer Ausführungsform;
    • 41A veranschaulicht ein Datenablaufdiagramm für einen Prozess zum Trainieren eines Modells für maschinelles Lernen gemäß mindestens einer Ausführungsform; und
    • 41B ist eine beispielhafte Veranschaulichung einer Client-Server-Architektur zum Erweitern von Annotationswerkzeugen mit vorab trainierten Annotationsmodellen gemäß mindestens einer Ausführungsform.
  • DETAILLIERTE BESCHREIBUNG
  • 1 ist ein Blockdiagramm, das eine neuronale Netzarchitektur veranschaulicht, wobei jede Ebene 102, 106, 114, 124 unter Verwendung eines Satzes von Daten dargestellt wird, der eine Vielzahl von Elementen umfassen kann, wobei jedes Element des Satzes von Elementen zwei Positionswerte wie etwa Indizes aufweist, die als Zeilenindex und Spaltenindex bezeichnet werden können. In mindestens einer Ausführungsform können Elemente einer Matrix Werte wie etwa numerische Werte umfassen und eine oder mehrere Dimensionen aufweisen, beispielsweise wenn die Elemente einer Matrix Vektoren, Matrizen oder andere Objekte sind. In mindestens einer Ausführungsform umfasst ein strukturierter Datensatz, der zur Darstellung einer Ebene 102, 106, 114, 124 eines neuronalen Netz, wie beispielsweise einer Matrix, verwendet werden kann, Ganzzahl-, Gleitkomma- oder andere Werte, die jeweils zwei Indizes aufweisen.
  • In mindestens einer Ausführungsform besteht ein neuronales Netz im Allgemeinen aus einer oder mehreren Ebenen 102, 106, 114, 124, wobei jede Ebene 102, 106, 114, 124 ein oder mehrere Neuronen 104, 108, 110, 112, 116, 118, 120, 122, 126 umfasst. Eine Ebene 102, 106, 114, 124 besteht in einer Ausführungsform aus Datenwerten und Softwareanweisungen, die bei ihrer Ausführung die Gruppierung von Neuronen innerhalb eines neuronalen Netzes implementieren, wie hierin weiter beschrieben. In mindestens einer Ausführungsform besteht ein Neuron 104, 108, 110, 112, 116, 118, 120, 122, 126 aus Datenwerten und Softwareanweisungen, die bei ihrer Ausführung eine mathematische Funktion implementieren, die eine Beziehung zwischen einem oder mehreren Neuronen 104, 108, 110, 112, 116, 118, 120, 122, 126 einer oder mehrerer neuronalen Netzebenen 102, 106, 114, 124 beschreibt, wie hierin weiter beschrieben. In mindestens einer Ausführungsform umfasst ein neuronales Netz eine Vielzahl von Ebenen, und jede Ebene ist sichtbar oder verborgen, wie hierin weiter beschrieben.
  • In einer Ausführungsform umfasst ein neuronales Netz eine Ebene für die Eingabe 102, eine Ebene für die Ausgabe 124 oder eine oder mehrere Zwischenebenen 106, 114. In mindestens einer Ausführungsform ist eine Zwischenebene 106, 114 eine neuronale Netzebene, die mathematische Beziehungen umfasst, die in einem neuronalen Netz enthalten sind, wie hierin weiter beschrieben. In mindestens einer Ausführungsform ist eine Eingabeschicht 102 eine neuronale Netzebene 102, 106, 114, 124, die als Eingabe Datenwerte entgegennimmt und diese an nachfolgende Ebenen 106, 114, 124 in einem neuronalen Netz weiterleitet. In mindestens einer Ausführungsform ist eine Ausgabeebene 124 eine neuronale Netzebene 102, 106, 114, 124, die Datenwerte von einer oder mehreren Zwischenebenen 106, 114 eines neuronalen Netzes aggregiert und für die Ausgabe vorbereitet. In mindestens einer Ausführungsform umfasst ein neuronales Netz eine beliebige andere Konfiguration von Ebenen, die hierin weiter beschrieben ist.
  • In mindestens einer Ausführungsform verbinden sich die Neuronen 104, 108, 110, 112, 116, 118, 120, 122, 126 einer neuronalen Netzebene 102, 106, 114, 124 mit den Neuronen 104, 108, 110, 112, 116, 118, 120, 122, 126 einer anderen neuronalen Netzebene 102, 106, 114, 124. In mindestens einer Ausführungsform verbinden sich alle Neuronen 104, 108, 110, 112, 116, 118, 120, 122, 126 einer einzelnen Ebene 102, 106, 114, 124 mit allen Neuronen 104, 108, 110, 112, 116, 118, 120, 122, 126 einer nachfolgenden Ebene 102, 106, 114, 124. In einer anderen Ausführungsform verbindet sich eine Teilmenge der Neuronen 104, 108, 110, 112, 116, 118, 120, 122, 126 in einer einzelnen Ebene 102, 106, 114, 124 mit einer Teilmenge der Neuronen 104, 108, 110, 112, 116, 118, 120, 122, 126 in einer nachfolgenden Ebene 102, 106, 114, 124, wie ferner in Verbindung mit 2 beschrieben. In mindestens einer Ausführungsform stellen die Verbindungen zwischen den Neuronen 104, 108, 110, 112, 116, 118, 120, 122, 126 einer neuronalen Netzebene 102, 106, 114, 124 und den Neuronen 104, 108, 110, 112, 116, 118, 120, 122, 126 einer anderen neuronalen Netzebene 102, 106, 114, 124 eine mathematische Beziehung zwischen den Neuronen 104, 108, 110, 112, 116, 118, 120, 122, 126 der neuronalen Netzebene 102, 106, 114, 124 und den Neuronen 104, 108, 110, 112, 116, 118, 120, 122, 126 der anderen neuronalen Netzebene 102, 106, 114, 124 dar, wie hierin ferner beschrieben.
  • In mindestens einer Ausführungsformwerden die Ebenen 102, 106, 114, 124eines trainierten neuronalen Netzes durch eine Matrix 128, 130 dargestellt, die numerische Werte umfasst. In mindestens einer Ausführungsform umfasst eine Matrix 128, 130, die einer Ebene 102, 106, 114, 124 eines neuronalen Netzes entspricht, numerische Werte, die eine Beziehung zwischen Knoten 104, 108, 110, 112, 116, 118, 120, 122, 126 einer Ebene 102, 106, 114, 124 eines neuronalen Netzes und einer anderen Ebene 102, 106, 114, 124 eines neuronalen Netzes angeben. In mindestens einer Ausführungsform umfasst eine Matrix 128, 130, die einer Ebene 102, 106, 114, 124 eines neuronalen Netzes entspricht, Gewichtungsdatenwerte. In mindestens einer Ausführungsform umfasst eine Matrix 128, 130, die einer Ebene 102, 106, 114, 124 eines neuronalen Netzes entspricht, jede beliebige weitere hierin beschriebene Art von Datenwert, um eine oder mehrere Beziehungen zwischen Knoten 104, 108, 110, 112, 116, 118, 120, 122, 126 einer Ebene 102, 106, 114, 124 eines neuronalen Netzes und Knoten 104, 108, 110, 112, 116, 118, 120, 122, 126 einer anderen Ebene 102, 106, 114, 124 des neuronalen Netzes zu beschreiben.
  • In mindestens einer Ausführungsform umfassen die Matrizen 128, 130, die einer Ebene 102, 106, 114, 124 eines neuronalen Netzes entsprechen, in der jeder Knoten 104, 108, 110, 112, 116, 118, 120, 122, 126 mit jedem Knoten 104, 108, 110, 112, 116, 118, 120, 122, 126 einer anderen Ebene 102, 106, 114, 124 des neuronalen Netzes verbunden ist, keine Nullwerte und sind dichte Matrizen. In mindestens einer Ausführungsform umfassen die Matrizen 128, 130, die einer Ebene 102, 106, 114, 124 eines neuronalen Netzes entsprechen, in dem die Knoten 104, 108, 110, 112, 116, 118, 120, 122, 126 mit einer Teilmenge von Knoten 104, 108, 110, 112, 116, 118, 120, 122, 126 einer anderen Ebene 102, 106, 114, 124 in dem neuronalen Netz verbunden sind, Nullwerte und sind keine dichten Matrizen. In mindestens einer Ausführungsform ist eine Matrix 128, 130, die eine Anzahl von Nullwerten umfasst und eine Ebene 102, 106, 114, 124 eines neuronalen Netzes darstellt, deren Knoten 104, 108, 110, 112, 116, 118, 120, 122, 126 mit einer kleinen Teilmenge von Knoten einer anderen Ebene 102, 106, 114, 124 in dem neuronalen Netz verbunden sind, eine spärliche Matrix.
  • 2 ist ein Blockdiagramm, das Verbindungen zwischen Ebenen 202, 212 eines spärlichen neuronalen Netzes veranschaulicht, wobei eine Ebene 202, 212 durch eine spärliche Matrix 222 dargestellt wird, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform umfassen die Ebenen 202, 212 eines neuronalen Netzes einen oder mehrere Knoten 204, 206, 208, 210, 214, 216, 218, 220, wie oben in Verbindung mit 1 beschrieben und weiter hierin beschrieben. Ein vollständig verbundenes neuronales Netz, wie oben in Verbindung mit 1 veranschaulicht, umfasst in einer Ausführungsform Verbindungen zwischen jedem Knoten 204, 206, 208, 210, 214, 216, 218, 220 einer Ebene 202, 212 in einem neuronalen Netz mit jedem Knoten 204, 206, 208, 210, 214, 216, 218, 220 einer anderen Ebene 202, 212 in dem neuronalen Netz. In einer Ausführungsform kann dieses neuronale Netz, wenn Knoten 204, 206, 208, 210, 214, 216, 218, 220 einer Ebene 204, 206 in einem neuronalen Netz wenige oder begrenzte Verbindungen mit Knoten 204, 206, 208, 210, 214, 216, 218, 220 einer anderen Ebene 202, 212 des neuronalen Netzes aufweisen, ein spärliches neuronales Netz sein.
  • In mindestens einer Ausführungsform besteht ein spärliches neuronales Netz aus Datenwerten und Softwareanweisungen, die bei Ausführung ein neuronales Netz implementieren, das wenige oder begrenzte Verbindungen zwischen Knoten 204, 206, 208, 210, 214, 216, 218, 220 einer Ebene 202, 212 in dem neuronalen Netz und Knoten 204, 206, 208, 210, 214, 216, 218, 220 einer anderen Ebene 202, 212 in dem neuronalen Netz aufweist. Die Ebenen 202, 212 in einem spärlichen neuronalen Netz werden in einer Ausführungsform als Matrizen 222 dargestellt, die numerische Werte enthalten, die Beziehungen zwischen den Knoten 204, 206, 208, 210, 214, 216, 218, 220 angeben, die in jeder Ebene 202, 212 enthalten sind. In mindestens einer Ausführungsform ist eine Matrix 222, die eine Ebene 202, 212 in einem spärlichen neuronalen Netz darstellt, eine spärliche Matrix. In mindestens einer Ausführungsform ist eine spärliche Matrix 222 eine Matrix, die eine Mehrheit von Nullwerten aufweist. In mindestens einer Ausführungsform geben Nullwerte in einer spärlichen Matrix 222 Knoten 204, 206, 208, 210, 214, 216, 218, 220 in einer Ebene 202, 212 eines spärlichen neuronalen Netzes an, die nicht mit Knoten 204, 206, 208, 210, 214, 216, 218, 220 einer anderen Ebene 202, 212 in dem spärlichen neuronalen Netz verbunden sind.
  • In mindestens einer Ausführungsform ist eine spärliche Matrix 222 eine Matrix von Datenwerten, bei der eine Anzahl von Datenwerten Null ist. In mindestens einer Ausführungsform sind die Datenwerte einer spärlichen Matrix 222 die Koeffizienten einer linearen Gleichung oder einer beliebigen anderen Gleichung zur Definition einer Beziehung zwischen den Knoten 204, 206, 208, 210, 214, 216, 218, 220 einer neuronalen Netzebene 202, 212, wie hierin weiter beschrieben. In mindestens einer Ausführungsform sind die Datenwerte einer spärlichen Matrix 222 Gewichtungskoeffizienten, die einer linearen Gleichung oder einer beliebigen anderen Gleichung entsprechen, die eine Beziehung zwischen den Knoten 204, 206, 208, 210, 214, 216, 218, 220 eines spärlichen neuronalen Netzes definiert, wie hierin weiter beschrieben.
  • 3 ist ein Blockdiagramm, das eine Parallelverarbeitungseinheits(PPU)-Architektur 302 veranschaulicht, die einen oder mehrere spärliche Tensorkerne 306, 308, 310 umfasst, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform besteht eine PPU 302 aus Hardware, um eine oder mehrere Rechenoperationen unter Verwendung eines oder mehrerer paralleler Rechenkerne, wie beispielsweise spärlicher Tensorkerne 306, 308, 310 und/oder eines beliebigen anderen, hierin beschriebenen parallelen Verarbeitungskerns 304, durchzuführen. In mindestens einer Ausführungsform sind andere Verarbeitungskerne 304 beliebige Berechnungseinheiten, die auf einer weiter unten beschriebenen PPU 302 implementiert sind und von dieser genutzt werden. Zum Beispiel umfassen andere Verarbeitungskerne 304 Streaming-Prozessoren und/oder andere Grafik-Teilprozessoren, um parallele Berechnungen durchzuführen, wie hierin weiter beschrieben.
  • In mindestens einer Ausführungsform ist ein spärlicher Tensorkern 306, 308, 310 eine Rechenhardware zur Nutzung der mathematischen Eigenschaften spärlicher Matrizen in spärlichen neuronalen Netzen, wie oben in Verbindung mit 2 beschrieben. In mindestens einer Ausführungsform implementiert ein spärlicher Tensorkern 306, 308, 310 entweder in Hardware, Software oder in einem auf Hardware ausgeführten Mikrocode Matrix-Multiplikator-Akkumulations(MMA)-Operationen, die speziell Nullwerte in spärlichen Matrixoperanden von spärlichen neuronalen Netzen berücksichtigen, wie oben beschrieben. In mindestens einer Ausführungsform arbeitet ein spärlicher Tensorkern 306, 308, 310 in Verbindung mit anderen Ressourcen einer PPU, beispielsweise einer Grafikverarbeitungseinheit (GPU), um Operationen in neuronalen Netzen zu beschleunigen, die mit spärlichen neuronalen Netzen zusammenhängen.
  • In mindestens einer Ausführungsform verbessert ein spärlicher Tensorkern 306, 308, 310 die Berechnungsgeschwindigkeit neuronaler Netze, indem er die Eigenschaften spärlicher neuronaler Netze ausnutzt. Zum Beispiel berechnen spärliche Tensorkerne 306, 308, 310 MMA-Operationen mit höherer Geschwindigkeit, wenn mindestens ein Operand bestimmten Spärlichkeitsbedingungen entspricht. Um die Leistung der spärlichen Tensorkerne 306, 308, 310 zu verbessern, werden in einer Ausführungsform Matrizen oder andere Datenstrukturen, die eine oder mehrere Ebenen eines neuronalen Netzes darstellen, beschnitten, um die Spärlichkeit der Matrizen oder anderen Datenstrukturen zu verbessern oder anderweitig zu verändern. In mindestens einer Ausführungsform umfasst das Beschneiden ein Setzen numerischer Werte in einer Matrix oder einer anderen Datenstruktur auf Null. In mindestens einer Ausführungsform werden numerische Werte innerhalb einer Matrix oder einer anderen Datenstruktur auf Null gesetzt, um eine strukturierte Spärlichkeitsbedingung zu erfüllen, wie beispielsweise in Verbindung mit 4 beschrieben. In mindestens einer Ausführungsform wird das Beschneiden durch ein Deep-Learning-Framework oder ein anderes Softwareprogramm durchgeführt. In mindestens einer Ausführungsform beschneidet ein Deep-Learning-Framework Datenwerte in einer Matrix oder einer anderen Datenstruktur, die Ebenen eines neuronalen Netzes darstellt, ohne Rücksicht auf die in diesen Datenwerten enthaltenen Daten. In einer anderen Ausführungsform ordnen eine oder mehrere Transformationen Datenwerte in einer Matrix gemäß einer oder mehreren Permutationen um, um das Beschneiden von einer oder mehreren Arten von Daten zu minimieren, beispielsweise von Daten mit großen numerischen Werten, Gewichtungsgrößenordnungen, Gewichtungsgradienten oder einer beliebigen anderen Eigenschaft von Daten, die in der Matrix oder einer anderen Datenstruktur gespeichert sind.
  • 4 ist ein Blockdiagramm, das eine 2:4-strukturierte Spärlichkeit innerhalb einer Zeile 404, 406 einer spärlichen Matrix 402 veranschaulicht, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhalten die hierin beschriebenen oder vorgeschlagenen Techniken Prozessoren, Verfahren, Systeme und maschinenlesbare Medien, die Anweisungen umfassen, um eine Änderung der Spärlichkeit eines oder mehrerer Sätzen von Daten, wie beispielsweise Daten der Zeilen 404, 406 in einer Matrix, durch Umordnen, Permutieren oder anderweitiges Transformieren von Spalten oder anderen Gruppierungen von Daten in der Matrix zu veranlassen, um das Beschneiden einer oder mehrerer Klassen von Datenwerten in der Matrix zu erhöhen, um eine Spärlichkeitsbedingung zu erfüllen, wie beispielsweise eine 2:4-strukturierte Spärlichkeit in einer spärlichen Matrix 402. In mindestens einer Ausführungsform umfasst das Umordnen, Permutieren oder anderweitige Transformieren von Spalten oder anderen Gruppierungen von Daten in einem Datensatz, beispielsweise einer Matrix, das Ändern eines oder mehrerer Indizes oder anderer Positionswerte, die jedem Datenwert in dem Datensatz zugeordnet sind. Zum Beispiel wird zum Permutieren von Datenwerten in einer Spalte einer Matrix ein zweiter Index oder ein anderer Positionswert, der die Spalte angibt, geändert.
  • In mindestens einer Ausführungsform implementieren spärliche Tensorkerne eine verbesserte Matrix-Multiplikator-Akkumulations(MMA)-Operation oder andere verbesserte Matrixoperationen, die mit höherer Geschwindigkeit durchgeführt werden, wenn mindestens ein Operand bestimmten Spärlichkeitsbedingungen entspricht, beispielsweise Spärlichkeitsbedingungen, die durch Erhöhung der Spärlichkeit eines oder mehrerer Sätzen von Daten erfüllt werden, wobei Prozessoren, Verfahren, Systeme und maschinenlesbare Medien verwendet werden, die Anweisungen umfassen, wie sie hierin weiter beschrieben oder vorgeschlagen werden. In mindestens einer Ausführungsform sind Spärlichkeitsbedingungen mathematische Eigenschaften oder strukturierte Merkmale, die für einen Satz von Datenwerten in einer Matrix 402 erzwungen werden. Ein Beispiel für eine Spärlichkeitsbedingung ist in einer Ausführungsform die 2:4-strukturierte Spärlichkeit. In mindestens einer Ausführungsform ist die 2:4-strukturierte Spärlichkeit eine Bedingung, die auf einen Satz von Datenwerten in einer Matrix 402 angewendet wird, wobei zwei von vier Datenwerten entlang einer Zeile 404, 406 zwei Nullwerte 412, 414 aufweisen. In mindestens einer Ausführungsform beschneidet ein Deep-Learning-Framework oder ein anderes Softwareprogramm zwei von vier Werten entlang jeder Zeile in einer Matrix, um die 2:4-strukturierte Spärlichkeit einzuhalten. Um sicherzustellen, dass eine bestimmte Klasse von Datenwerten, beispielsweise kleine Anzahlen, während des Beschneidens bevorzugt werden, werden eine oder mehrere Transformationen oder Permutationen, beispielsweise das Vertauschen von Spalten, von einem Deep-Learning-Framework oder einem anderen Softwareprogramm angewendet, wie nachstehend in Verbindung mit 5 und 6 beschrieben.
  • In mindestens einer Ausführungsform weist eine Zeile i 404 in einer spärlichen Matrix 402 n Datenwerte und eine Dimension von 1 × n auf. In mindestens einer Ausführungsform sind die Datenwerte 408, 410, 412, 414 numerische Werte, die Koeffizienten einer linearen Gleichung darstellen, wie oben beschrieben und ferner hierin beschrieben. In mindestens einer Ausführungsform sind die Datenwerte 408, 410, 412, 414 Gewichtungswerte. In mindestens einer Ausführungsform sind die Gewichtungswerte Datenwerte, die einen Skalierungswert 0 ≤ x ≤ 1 angeben.
  • In mindestens einer Ausführungsform sind die Datenwerte 408, 410, 412, 414 ungleich Null 408, 410 und weisen einen Wert 0 < x ≤ 1 auf. In mindestens einer Ausführungsform sind die Datenwerte 408, 410, 412, 414 Null 414, 414 mit einem Wert x = 0. In mindestens einer Ausführungsform ist eine Spärlichkeitsbedingung eine 2:4-strukturierte Spärlichkeitsbedingung, bei der vier aufeinanderfolgende Datenwerte 408, 410, 412, 414 in einer i-ten Zeile 404, 406 einer Matrix 402 zwei Null-Datenwerte 412, 414 aufweisen. In mindestens einer Ausführungsform ist eine Spärlichkeitsbedingung eine n:m-strukturierte Spärlichkeitsbedingung. In mindestens einer Ausführungsform erzwingt eine n:m-strukturierte Spärlichkeitsbedingung n Null-Datenwerte 412, 414 für jeweils m aufeinanderfolgende Datenwerte 408, 410, 412, 414 in einer Zeile 404, 406 einer spärlichen Matrix 402. In mindestens einer Ausführungsform werden Spärlichkeitsbedingungen auf eine oder mehrere dichte Matrizen 402 auferlegt oder angewandt, die wenige oder keine Null-Datenwerte 412, 414 aufweisen, durch Verwendung von Transformationen, beispielsweise Gewichtungspermutationen und Beschneidung, die unten in Verbindung mit 5 und 6 beschrieben werden.
  • 5 ist ein Blockdiagramm, das Permutationen 512 in einer Zeile 502, 514, 530 einer Matrix veranschaulicht, die eine Ebene eines neuronalen Netzes darstellt, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform erleichtern Permutationen 512 in einer Zeile 502, 514, 530 einer Matrix das Veranlassen einer Erhöhung der Spärlichkeit von einem oder mehreren Sätzen von Daten, beispielsweise von Daten, die Matrizen entsprechen, die eine oder mehrere Ebenen eines neuronalen Netzes darstellen, oder von beliebigen anderen Daten, denen, wie oben beschrieben, strukturierte Spärlichkeitsbedingungen auferlegt werden können. In mindestens einer Ausführungsform wenden Prozessoren, Verfahren, Systeme und/oder maschinenlesbare Medien, die Anweisungen umfassen, Permutationen 512 auf einen oder mehrere Sätze von Daten unter Verwendung der hierin beschriebenen oder vorgeschlagenen Techniken an. In mindestens einer Ausführungsform entsprechen ein oder mehrere Sätze von Daten einer oder mehreren Matrizen, die eine oder mehrere Ebenen eines neuronalen Netzes darstellen. In einer anderen Ausführungsform entsprechen ein oder mehrere Sätze von Daten beliebigen anderen Daten, die zur Durchführung kombinierter Berechnungen verwendet werden können, beispielsweise Matrix-Multiplikator-Akkumulations(MMA)- oder andere Berechnungen zur Erleichterung der Verarbeitung eines oder mehrerer Sätzen von Daten. Wenn diese Matrizen wenige oder keine Null-Datenwerte enthalten, sind die Matrizen in einer Ausführungsform dichte Matrizen und stellen Ebenen eines dichten neuronalen Netzes dar, wie oben beschrieben. In einer Ausführungsform können sowohl dichte Matrizen als auch spärliche Matrizen verbesserte Matrix-Multiplikations-Akkumulations- oder andere Operationen nutzen, die von spärlichen Tensorkernen durch Verwendung von Permutationen 512 bereitgestellt werden, um strukturierte Spärlichkeitsbedingungen aufzuerlegen oder durchzusetzen. In einer Ausführungsform müssen auch dichte Matrizen beschnitten werden, wobei Datenwerte in einer Matrix auf Null gesetzt werden. In einer Ausführungsform werden Datenwerte mit einer geringen Wert- oder Gewichtungsgrößenordnung beschnitten, um den Verlust an Genauigkeit zu minimieren.
  • In mindestens einer Ausführungsform umfassen Prozessoren, Verfahren, Systeme und/oder maschinenlesbare Medien, die Anweisungen umfassen, um eine Erhöhung der Spärlichkeit in einer Matrix oder einem anderen Satz von Daten zu veranlassen, einen Schritt zur Umordnung einer oder mehrerer Teilmengen von Daten, beispielsweise von Spalten, so dass eine erste Klasse von Datenwerten für die Beschneidung gegenüber einer zweiten Klasse von Datenwerten bevorzugt wird. Zum Beispiel wendet in einer Ausführungsform ein Deep-Learning-Framework eine oder mehrere Transformationen auf Spalten einer Matrix an, um eine Menge kleiner Datenwerte zu maximieren, die während eines anderen Schritts eines Prozesses beschnitten werden sollen, um eine Erhöhung der Spärlichkeit für eine Matrix zu veranlassen. Spalten einer Matrix werden in einer Ausführungsform unter Verwendung eines Satzes von Transformationen oder Permutationen umgeordnet, die durch ein Deep-Learning-Framework bestimmt werden, um eine oder mehrere Metriken zu maximieren, die einem neuronalen Netz oder einer anderen Anwendung zugeordnet sind, die die Matrix verwendet, sowie eine Klasse von zu beschneidenden Datenwerten zu maximieren, wie beispielsweise kleine Datenwerte.
  • In mindestens einer Ausführungsform wird eine Matrix so transformiert, dass eine optimale Anzahl einer bestimmten Klasse von Datenwerten beschnitten wird, um strukturierte Spärlichkeitsbedingungen für eine dichte Matrix oder eine beliebige andere Art von Matrix für eine beliebige ursprüngliche Zeile 502 in der dichten Matrix oder einer anderen Art von Matrix zu erfüllen, eine oder mehrere Permutationen 512 an Spalten der dichten Matrix oder einer anderen Art von Matrix die Reihenfolge der Datenwerte 504, 506, 508, 510 in der ursprünglichen Zeile in eine permutierte Zeile 514 ändern, die eine unterschiedliche Reihenfolge der Datenwerte 520, 522, 524, 526 im Vergleich zu der ursprünglichen Zeile 502 aufweist. In mindestens einer Ausführungsform handelt es sich bei einer Permutation 512 um Softwareanweisungen, die bei Ausführung 512 Spalten einer Matrix permutieren oder transformieren, so dass die Reihenfolge der Datenwerte in einer ursprünglichen Zeile 502 vertauscht oder anderweitig in eine permutierte Zeile 514 geändert wird. In mindestens einer Ausführungsform ist eine ursprüngliche Zeile 502 eine Zeile in einer Matrix, die keine permutierten 512 Datenwerte 504, 506, 508, 510 aufweist. In mindestens einer Ausführungsform ist eine permutierte Zeile 514 eine Zeile in einer Matrix, in der die Reihenfolge der Datenwerte 520, 522, 524, 526 durch eine oder mehrere Gewichtungspermutationen 512 transformiert wird, die auf Spalten angewendet werden, die Datenwerte 504, 506, 508, 510 einer ursprünglichen Zeile 502 enthalten.
  • In mindestens einer Ausführungsform ist ein Streifen eine Teilmenge von m aufeinanderfolgenden Datenwerten in einem Satz von Datenwerten, die in einer Zeile 502, 514, 530 einer Matrix enthalten sind, wobei m eine Anzahl von aufeinanderfolgenden Datenwerten ist, auf die eine n:m-strukturierte Spärlichkeitsbedingung anzuwenden oder durchzusetzen ist, und m kleiner oder gleich einer Gesamtzahl von Datenwerten in einer Zeile 502, 514, 530 einer Matrix ist. Zum Beispiel ist in einer Ausführungsform ein Streifen, der einer 2:4-strukturierten Spärlichkeitsbedingung entspricht, eine 1 × 4-Matrix oder ein Vektor von Datenwerten, der eine Teilmenge eines Satzes von Datenwerten darstellt, die durch eine Zeile einer größeren zweidimensionalen Matrix repräsentiert werden. In mindestens einer Ausführungsform müssen, damit diese 1 × 4-Matrix oder dieser Streifen eine 2:4-strukturierte Spärlichkeitsbedingung erfüllt, zwei Datenwerte Null sein (oder ein kleiner Wert, der, wie unten beschrieben, auf Null beschnitten wird), und zwei Datenwerte müssen große Werte 504, 506, 508, 520, 522, 532, 534 sein.
  • In einer Ausführungsform umfasst ein Streifen in einer ursprünglichen Zeile 502 sowohl große Werte 504, 506, 508 als auch kleine Werte 510. In mindestens einer Ausführungsform ist ein großer Wert 504, 506, 508 in einer ursprünglichen Zeile 502 einer dichten Matrix ein numerischer Datenwert x, wobei 0,5 ≤ x ≤ 1. In einer anderen Ausführungsform ist ein großer Wert 504, 506, 508 in einer ursprünglichen Zeile 502 einer dichten Matrix oder einer beliebigen anderen Art von Matrix ein Datenwert x, der einen beliebigen anderen numerischen Wert ungleich Null aufweist. In mindestens einer Ausführungsform ist ein kleiner Wert 510 in einem Streifen einer ursprünglichen Zeile 502 ein numerischer Datenwert x, wobei 0 ≤ x < 0,5. In einer anderen Ausführungsform ist ein kleiner Wert 510 in einem Streifen einer ursprünglichen Zeile 502 ein numerischer Datenwert x, der einen beliebigen anderen Wert aufweist, wobei der kleine Wert 510 relativ kleiner ist als andere große Werte 504, 506, 508 in einer ursprünglichen Zeile 502.
  • Um n:m-strukturierte Spärlichkeit in einem Streifen einer ursprünglichen Zeile 502 einer Matrix anzuwenden, aufzuerlegen oder anderweitig zu erzwingen, wendet in einer Ausführungsform ein Trainings-Framework oder ein anderes neuronales Netz oder Deep-Learning-Framework, wie weiter hierin beschrieben, eine oder mehrere Permutationen 512 an, um Spalten der Matrix so zu transformieren, dass m große Werte 504, 506, 508 nicht aufeinander folgen und n von m Datenwerten in dem Streifen kleine Werte 510 sind. In mindestens einer Ausführungsform umfassen die Permutationen 512 das Vertauschen von Spalten oder eine andere Technik, um die Spaltenreihenfolge in einer Matrix zu ändern. In mindestens einer Ausführungsform werden bei den Permutationen 512 Spalten, die Datenwerte eines Streifens enthalten, mit niedriger indizierten Spalten 516 oder höher indizierten Spalten 518, die Datenwerte in einer Zeile außerhalb eines gegebenen Streifens darstellen, vertauscht oder auf andere Weise getauscht. In mindestens einer Ausführungsform permutiert ein Deep-Learning-Framework oder ein anderes Softwareprogramm einen oder mehrere Datenwerte innerhalb eines Streifens durch Umordnen von Spalten, die Datenwerte des Streifens enthalten. In mindestens einer Ausführungsform führen eine oder mehrere Permutationen 512, die auf eine ursprüngliche Zeile 502 angewendet werden, zu einer permutierten Zeile 514, die einen oder mehrere Streifen mit m Datenwerten mit n kleinen Werten 524, 526 und m-n großen Werten 520, 522 aufweist.
  • In mindestens einer Ausführungsform wird durch das Beschneiden 528 sichergestellt, dass kleine Werte 524, 526, die nicht Null sind, in einer permutierten Zeile 514 einer dichten Matrix, die wenige oder keine Nullwerte aufweist, mit der n:m-strukturierten Spärlichkeit übereinstimmen, da die n:m-strukturierte Spärlichkeit erfordert, dass n Datenwerte von m aufeinanderfolgenden Datenwerten in einer Zeile (oder einem Streifen innerhalb einer Zeile) Null sind. In mindestens einer Ausführungsform handelt es sich bei dem Beschneiden 528 um Softwareanweisungen, die bei Ausführung kleine Werte 524, 526 in einer Zeile, beispielsweise einer permutierten Zeile 514, einer Matrix, beispielsweise einer dichten Matrix oder einer beliebigen anderen Art von Matrix, auf Null einstellen. In mindestens einer Ausführungsform führt das Beschneiden 528 zu einem m-stelligen Streifen, der n Nullwerte 536, 538 und m-n große Werte 532, 534 aufweist, die mit einer n:m-strukturierten Spärlichkeitsbedingung übereinstimmen.
  • Zum Beispiel wird in einer Ausführungsform eine permutierte Zeile 514, die permutiert wurde, um zwei große Werte 520, 522 und zwei kleine Werte 524, 526 aufzuweisen, um der 2:4-strukturierten Spärlichkeit zu entsprechen, beschnitten, was zu einer beschnittenen Zeile 530 führt, die zwei Nicht-Nullwerte 532, 534 und zwei Nullwerte 536, 538 aufweist, wie es die 2:4-strukturierte Spärlichkeit erfordert. Eine beschnittene Zeile 530, die eine 2:4-strukturierte Spärlichkeit aufweist, erleichtert in einer Ausführungsform schnellere MMA-Operationen durch spärliche Tensorkerne, wie oben beschrieben und ferner hierin beschrieben. In mindestens einer Ausführungsform führt das Beschneiden 528 zu einer verringerten Genauigkeit des neuronalen Netzes, und infolgedessen werden im Folgenden verschiedene Verfahren in Verbindung mit 7 beschrieben, um einen Satz von Permutationen 512 zu bestimmen, um jegliche Auswirkungen der n:m-strukturierten Spärlichkeit in einer dichten oder spärlichen Matrix zu reduzieren und gleichzeitig eine oder mehrere andere Metriken zu maximieren, die der dichten oder spärlichen Matrix zugeordnet sind.
  • In mindestens einer Ausführungsform werden hierin beispielhaft Prozessoren, Verfahren, Systeme und/oder maschinenlesbare Medien beschrieben, die Anweisungen umfassen, um eine Erhöhung der Spärlichkeit in einer Matrix oder einem anderen Satz von Daten, der einem neuronalen Netz zugeordnet ist, zu veranlassen. In mindestens einer Ausführungsform profitieren verschiedene andere Anwendungen von Prozessoren, Verfahren, Systemen und/oder maschinenlesbaren Medien, die Anweisungen umfassen, die eine Erhöhung der Spärlichkeit in einer Matrix oder einem anderen Satz von Daten veranlassen, wie hierin beschrieben. Zum Beispiel sind die hierin beschriebenen Techniken zum Anordnen von Datenwerten in einem oder mehreren Sätzen von Daten in einer Ausführungsform verwendbar, um eine erste Klasse von Datenwerten in einer beliebigen strukturierten Bedingung, beispielsweise in Blöcken, zu sammeln und zu gruppieren. In einer anderen Ausführungsform können spärliche Matrizen, die verstreute Null-Datenwerte umfassen, die andernfalls nicht geclustert werden können, um einer bestimmten n:m-Spärlichkeitsbedingung oder einer anderen Gruppierung, beispielsweise Blöcken, zu entsprechen, gemäß anderen Merkmalen geclustert werden. Zum Beispiel können Gruppen von Nullwerten in einer Ausführungsform so geclustert werden, dass eine Matrix in Teilmatrizen unterteilt wird, um eine die Teilmatrizen umfassende Rechenlast auf zwei oder mehr Parallelverarbeitungseinheiten oder andere Berechnungsverarbeitungseinheiten zu verteilen, um eine der Matrix zugeordnete Rechenlast gleichmäßig oder auf andere Weise zu verteilen.
  • 6 ist ein Blockdiagramm, das eine beispielhafte Permutation 620 an den Spalten 604, 606, 608, 610, 612, 614, 616, 618 einer Matrix 602 veranschaulicht, um eine bestimmte Klasse von zu beschneidenden Datenwerten 620, 622 zu erhöhen, um eine 2:4-strukturierte Spärlichkeit zu erfüllen, so dass die Spärlichkeit der Matrix 602 geändert wird, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wenden Prozessoren, Verfahren, Systeme und/oder maschinenlesbare Medien, die Anweisungen umfassen, um eine Erhöhung der Spärlichkeit durch Umordnung einer oder mehrerer Teilmengen von Daten in einem oder mehreren Sätzen von Daten, wie beispielsweise Spalten 604, 606, 608, 610, 612, 614, 616, 618 in einer Matrix 602 zu veranlassen, eine oder mehrere Transformationen (beispielsweise Permutationen 624) auf die eine oder mehrere Teilmengen von Daten an, um eine Menge von einer oder mehreren Klassen von Datenwerten 620, 622 zu maximieren oder anderweitig zu verbessern, die zu beschneiden sind, um eine oder mehrere Spärlichkeitsbedingungen zu erfüllen. Zum Beispiel werden in einer Ausführungsform, wie in 6 gezeigt, Spalten 604, 606, 608, 610, 612, 614, 616, 618 einer Matrix 602 durch Permutieren 624 oder Vertauschen der Spalten 604, 606, 608, 610, 612, 614, 616, 618 umgeordnet, so dass mehr kleine Werte (small values - SV) 622 anstelle von großen Werten (large values - LV) 620 beschnitten werden, um die Spärlichkeit in der Matrix 602 zu ändern. In mindestens einer Ausführungsform ist eine Matrix 602 eine dichte Matrix oder eine spärliche Matrix, die eine Ebene eines neuronalen Netzes darstellt, wie oben in Verbindung mit 1 und 2 beschrieben und hierin weiter beschrieben. In mindestens einer Ausführungsform ist eine Matrix 602 eine beliebige andere Art von Matrix, die einer beliebigen anderen Anwendung oder einem beliebigen anderen Operanden bei einer oder mehreren Berechnungen zugeordnet ist oder diese darstellt, die von einer Zentralverarbeitungseinheit (CPU), einer Parallelverarbeitungseinheit (PPU) wie beispielsweise einer Grafikverarbeitungseinheit (GPU) oder einem beliebigen anderen hierin beschriebenen Rechenprozessor durchgeführt werden, wie hierin weiter beschrieben.
  • In mindestens einer Ausführungsform ist eine Matrix 602 ein zweidimensionaler Satz von Datenwerten 620, 622. In mindestens einer Ausführungsform sind die Datenwerte 620, 622 Nullwerte, große Werte (LV) 620 oder kleine Werte (SV) 622, wie oben beschrieben. In mindestens einer Ausführungsform ist ein großer Wert (LV) 620 ein numerischer Datenwert, der größer ist als mindestens die Hälfte der Datenwerte, die in einer Matrix 602 enthalten sind, wie oben in Verbindung mit 5 beschrieben. In mindestens einer Ausführungsform ist ein kleiner Wert (SV) 622 ein numerischer Datenwert, der kleiner ist als mindestens die Hälfte der in einer Matrix 602 enthaltenen Datenwerte, wie oben in Verbindung mit 5 beschrieben.
  • In mindestens einer Ausführungsform umfasst eine Matrix 602 Datenwerte, die in Zeilen und Spalten 604, 606, 608, 610, 612, 614, 616, 618 organisiert sind. Wie oben beschrieben, erfordert die 2:4-strukturierte Spärlichkeit in einer Ausführungsform, dass zwei Datenwerte von vier aufeinanderfolgenden Datenwerten in einer Zeile einer Matrix 602 Null sind, um Matrix-Multiplikations-Additions(MMA)-Operationen in spärlichen Tensorkernen durchzuführen. In mindestens einer Ausführungsform beschneidet (Einstellen auf Null) ein Deep-Learning-Framework oder ein anderes Softwareprogramm eine Vielzahl von Datenwerten 620, 622 in einer Matrix 602 derart, dass für jeweils m Datenwerte n Datenwerte Null sind, wie oben in Verbindung mit 5 beschrieben. Zum Beispiel beschneidet in einer Ausführungsform ein Deep-Learning-Framework oder ein anderes Softwareprogramm zwei von jeweils vier Datenwerten 620, 622 in einer Matrix 602, um die 2:4-strukturierte Spärlichkeit einzuhalten, wie durch gefüllte Datenwerte in 6 veranschaulicht.
  • In mindestens einer Ausführungsform wendet ein Trainings-Framework oder ein anderes Deep-Learning-Framework, wie hierin beschrieben, eine oder mehrere Permutationen 624 auf eine oder mehrere Matrizen 602 an, die Ebenen in einem trainierten neuronalen Netz darstellen, wie oben in Verbindung mit 5 beschrieben, und beschneidet alle Datenwerte entlang bestimmter Spalten 604, 606, 608, 610, 612, 614, 616, 618, so dass eine Spärlichkeitsbedingung erfüllt ist, um eine Erhöhung der Spärlichkeit in einer Matrix 602 zu veranlassen. Eine mögliche Ausführungsform der Permutation 620 besteht darin, dass die Spalten 604, 606, 608, 610, 612, 614, 616, 618, beispielsweise Spalte 3 608 und Spalte 6 614, vertauscht werden, um die Reihenfolge der Datenwerte innerhalb der Zeilen einer Matrix 602 zu ändern. In mindestens einer Ausführungsform führt die Permutation 624 der Spalte 3 608 und der Spalte 6 614 in einer Matrix 602 zu einer permutierten Matrix 630, die eine größere Anzahl von kleinen Werten (SV) 622 aufweist, die anstelle der großen Werte 620 zu beschneiden sind (wobei die zu beschneidenden Datenwerte als schattiert veranschaulicht sind).
  • In mindestens einer Ausführungsform umfasst eine permutierte Matrix 630 Datenwerte einer nicht-permutierten Matrix 602, nachdem ein Deep-Learning-Framework oder ein anderes Softwareprogramm eine oder mehrere Permutationen 624 anwendet. Zum Beispiel führt in einer Ausführungsform eine Permutation 624 zum Vertauschen von Spalte 3 608 und Spalte 6 614 einer nicht-permutierten Matrix 602 zu einer permutierten Matrix 622, die eine erhöhte Anzahl von kleinen Werten (SV) 622 aufweist, die von einem Deep-Learning-Framework oder einem anderen Softwareprogramm anstelle von großen Werten (LV) 620 zu beschneiden sind, um der 2:4-strukturierten Spärlichkeit zu entsprechen. In mindestens einer Ausführungsform führen vertauschte Spalte 6 626 und Spalte 3 628 dazu, dass zwei kleine Werte (SV) 622 von einem Deep-Learning-Framework oder einem anderen Softwareprogramm anstelle von zwei großen Werten (LV) 620 beschnitten werden, um eine Änderung der Spärlichkeit in Übereinstimmung mit der 2:4-strukturierten Spärlichkeit zu veranlassen. In mindestens einer Ausführungsform beschneidet ein Deep-Learning-Framework oder ein anderes Softwareprogramm Shading-Werte in einer permutierten Matrix 630, um eine Erhöhung der Spärlichkeit der permutierten Matrix 630 zu veranlassen, sodass eine verbesserte Leistung von spärlichen Tensorkernen genutzt wird.
  • In mindestens einer Ausführungsform wendet das Deep-Learning-Framework oder ein anderes Softwareprogramm eine oder mehrere Permutationen 624 auf Spalten 604, 606, 608, 610, 612, 614, 616, 618 einer Matrix 602 an, die eine Ebene eines trainierten neuronalen Netzes darstellt, was zu einer permutierten Matrix 630 führt. In mindestens einer Ausführungsform ändern sich die Ergebnisse des Inferenzierens unter Verwendung des trainierten neuronalen Netzes nicht, indem Eingabekanäle oder Spalten einer Matrix 602, die eine trainierte neuronale Netzebene darstellt, permutiert werden und entsprechende Ausgabekanäle oder Zeilen einer Matrix 602, die eine vorherige Ebene in dem trainierten neuronalen Netz darstellt, permutiert werden. Um eine oder mehrere Permutationen zu bestimmen, die auf eine oder mehrere Matrizen anzuwenden sind, die Ebenen eines trainierten neuronalen Netzes darstellen, sucht ein Trainings-Framework oder ein anderes Deep-Learning-Framework nach einem Satz von Permutationen, die die n:m-strukturierte Spärlichkeit in Matrizen 602, die Ebenen eines neuronalen Netzes entsprechen, verbessern und gleichzeitig den Verlust an Genauigkeit des neuronalen Netzes minimieren, der durch Beschneidung kleiner Datenwerte in den Matrizen 602 entsteht.
  • 7 veranschaulicht einen Prozess 700 zum Bestimmen einer oder mehrerer Permutationen auf einer Matrix, um eine Klasse von zu beschneidenden Datenwerten zu vergrößern, um die 2:4-strukturierte Spärlichkeit zu erfüllen, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann ein Prozess 700 zum Bestimmen eines Satzes von Transformationen, der Permutationen zum Umordnen einer oder mehrerer Teilmengen von Daten in einem oder mehreren Sätzen von Daten umfasst, um eine Erhöhung der Spärlichkeit in dem einen oder den mehreren Sätzen von Daten zu erleichtern, von einem Prozessor mit einer oder mehreren Schaltungen durchgeführt werden. In einer anderen Ausführungsform kann ein Prozess 700 zum Bestimmen eines Satzes von Transformationen, der Permutationen zum Umordnen einer oder mehrerer Teilmengen von Daten in einem oder mehreren Sätzen von Daten umfasst, um eine Erhöhung der Spärlichkeit in dem einen oder den mehreren Sätzen von Daten zu erleichtern, von einem System oder maschinenlesbaren Medium durchgeführt werden, das Anweisungen zum Implementieren eines Trainings-Frameworks, Deep-Learning-Frameworks oder anderen Softwareprogramms umfasst. In mindestens einer Ausführungsform können Prozessoren, Verfahren, Systeme und/oder maschinenlesbare Medien, die Anweisungen umfassen, einen Prozess 700 implementieren, um einen Satz von Permutationen zu bestimmen, um eine oder mehrere Teilmengen von Daten in einem oder mehreren Sätzen von Daten so umzuordnen, dass eine größere Anzahl einer ersten Klasse von Datenwerten durch ein Trainings-Framework, Deep-Learning-Framework oder anderes Softwareprogramm anstelle einer zweiten Klasse von Datenwerten beschnitten werden soll, um eine Erhöhung der Spärlichkeit in dem einen oder den mehreren Sätzen von Daten zu erleichtern. In mindestens einer Ausführungsform implementiert ein Trainings-Framework, Deep-Learning-Framework oder anderes Softwareprogramm einen Prozess 700, um zufällige Kanalvertauschungen durchzuführen, um eine oder mehrere Permutationen zu bestimmen, um einen oder mehrere Sätze von Daten umzuordnen, um eine n:m-strukturierte Spärlichkeit zu erleichtern und gleichzeitig eine oder mehrere Metriken zu maximieren, die dem einen oder mehreren Sätzen von Daten zugeordnet sind, wie etwa eine oder mehrere Matrizen, die einem neuronalen Netz zugeordnet sind. In mindestens einer Ausführungsform beginnt 702 ein Trainings-Framework, Deep-Learning-Framework oder anderes Softwareprogramm, indem es zwei Spalten in einer Matrix, die eine Ebene eines trainierten neuronalen Netzes darstellt, zufällig auswählt 704. In mindestens einer Ausführungsform stellen diese Spalten durch eine einzige Permutation vertauschte Spalten in einer Matrix dar.
  • In mindestens einer Ausführungsform erzeugt ein Trainings-Framework, Deep-Learning-Framework oder anderes Softwareprogramm eine geschätzte Matrix, bei der ausgewählte Spalten vertauscht 706 oder permutiert sind, und beschneidet Werte in der geschätzten Matrix 708, so dass die geschätzte Matrix 708 global eine n:m-Bedingung erfüllt, wie oben in Verbindung mit 5 beschrieben. In mindestens einer Ausführungsform bestimmt ein Trainings-Framework, ein Deep-Learning-Framework oder ein anderes Softwareprogramm, ob eine oder mehrere Metriken, die einem neuronalen Netz zugeordnet sind, das eine Ebene umfasst, die durch eine geschätzte Matrix mit vertauschten Spalten dargestellt wird, erhöht werden 710. In mindestens einer Ausführungsform ist eine einem neuronalen Netz zugeordnete Metrik eine Genauigkeit des neuronalen Netzes. In einer anderen Ausführungsform ist eine einem neuronalen Netz zugeordnete Metrik eine Erhöhung der Größenordnung der Gesamtgewichtung aller Gewichtungswerte in Matrizen, die Ebenen eines neuronalen Netzes darstellen. In einer anderen Ausführungsform ist eine einem neuronalen Netz zugeordnete Metrik ein oder mehrere Gewichtungsgradienten, die Unterschiede zwischen einem oder mehreren tatsächlichen Gewichtungswerten in einer Matrix, die eine Ebene in einem neuronalen Netz darstellt, und einem oder mehreren idealen Gewichtungswerten in einer Matrix in Trainingsdaten oder beliebigen anderen Basisdaten darstellen, die zum Trainieren des neuronalen Netzes verwendbar sind. In mindestens einer Ausführungsform ist eine Metrik ein beliebiges Basismaß an Leistung, das einer beliebigen Anwendung entspricht, die Matrizen nutzt, auf denen verschiedene Prozessoren, Systeme, Verfahren und/oder maschinenlesbare Medien, die Anweisungen zum Durchführen verschiedener hierin beschriebener Techniken umfassen, durchgeführt werden sollen.
  • In mindestens einer Ausführungsform vertauscht ein Trainings-Framework, Deep-Learning-Framework oder anderes Softwareprogramm, wenn eine oder mehrere Metriken erhöht sind 710, diese ausgewählten Spalten in einer tatsächlichen Matrix 712, die eine Ebene in einem trainierten neuronalen Netz darstellt, wie oben in Verbindung mit 6 beschrieben. Wenn ein Trainings-Framework, ein Deep-Learning-Framework oder ein anderes Softwareprogramm bestimmt, dass in einer Ausführungsform eine oder mehrere Metriken verringert sind 710, bestimmt das Trainings-Framework, Deep-Learning-Framework oder andere Softwareprogramm, ob ein Prozess 700 zum Bestimmen von Permutationen abgeschlossen ist 714. In mindestens einer Ausführungsform ist ein Prozess 700 abgeschlossen, wenn eine vorbestimmte Anzahl von Permutationen gefunden wurde oder eine zufriedenstellende Erhöhung einer oder mehrerer Metriken erreicht wurde. In mindestens einer Ausführungsform ist ein Prozess 700 abgeschlossen, wenn eine beliebige andere Metrik für den Abschluss erfüllt ist, beispielsweise die Zeit der Analyse oder die Anzahl der Änderungen an einer Matrix.
  • In mindestens einer Ausführungsform wird der Prozess 700 beendet, wenn ein Trainings-Framework, Deep-Learning-Framework oder anderes Softwareprogramm bestimmt, dass ein Prozess 700 aufgrund der Erfüllung einer oder mehrerer Bedingungen abgeschlossen ist 714. Andernfalls fährt in einer Ausführungsform ein Trainings-Framework, Deep-Learning-Framework oder anderes Softwareprogramm fort, indem es zwei zusätzliche Spalten aus einer Matrix, die eine Ebene in einem trainierten neuronalen Netz darstellt, zufällig auswählt 704.
  • In mindestens einer Ausführungsform werden zusätzliche Verfahren von einem Trainings-Framework, Deep-Learning-Framework oder anderen Softwareprogramm verwendet, um einen Satz von Permutationen zu bestimmen, um eine oder mehrere Teilmengen von Daten in einem oder mehreren Sätzen von Daten so umzuordnen, dass eine größere Anzahl einer ersten Klasse von Datenwerten durch ein Trainings-Framework, Deep-Learning-Framework oder anderes Softwareprogramm anstelle einer zweiten Klasse von Datenwerten beschnitten werden soll, um eine Erhöhung der Spärlichkeit in dem einen oder den mehreren Sätzen von Daten gemäß n:m-strukturierter Spärlichkeit und einer oder mehreren Metriken zu erleichtern. In mindestens einer Ausführungsform setzt ein Trainings-Framework, Deep-Learning-Framework oder anderes Softwareprogramm einen Prozess ein, der eine erschöpfende Suche nach allen verfügbaren Spaltenvertauschungen in einer Matrix implementiert, die eine Ebene eines trainierten neuronalen Netzes darstellt, wie die Schritte 704, 705 und 706 in Prozess 700. In mindestens einer Ausführungsform sucht ein Trainings-Framework, Deep-Learning-Framework oder anderes Softwareprogramm zufällig nach Sätzen von Permutationen, die auf eine Matrix angewendet werden können, die eine Ebene eines trainierten neuronalen Netzes darstellt, um einen Satz von Permutationen zu bestimmen.
  • In mindestens einer Ausführungsform führt ein Trainings-Framework, Deep-Learning-Framework oder ein anderes Softwareprogramm eine Greedy-Konstruktion durch, um eine oder mehrere Permutationen zu bestimmen, die auf eine Matrix anzuwenden sind, die eine Ebene eines trainierten neuronalen Netzes darstellt. In mindestens einer Ausführungsform legt ein Trainings-Framework, Deep-Learning-Framework oder anderes Softwareprogramm während der Greedy-Konstruktion eine Spalte einer Matrix fest und testet alle verbleibenden Kombinationen von Spaltenpermutationen. In einer Ausführungsform wählt ein Trainings-Framework, Deep-Learning-Framework oder anderes Softwareprogramm eine Kombination von Spaltenpermutationen aus, die die Genauigkeit des neuronalen Netzes am besten bewahrt.
  • In mindestens einer Ausführungsform führt ein Trainings-Framework, Deep-Learning-Framework oder anderes Softwareprogramm Greedy-Kanalvertauschungen durch. In mindestens einer Ausführungsform weist eine Matrix mit C Spalten C 2 2
    Figure DE112021007476T5_0001
    mögliche Spaltenvertauschungen auf, und ein Trainings-Framework, Deep-Learning-Framework oder anderes Softwareprogramm führt Spaltenvertauschungen oder Permutationen in einer Reihenfolge von höchstem Nutzen (größter Anstieg einer oder mehrerer Metriken durch eine einzelne Vertauschung) zu geringstem Nutzen (geringster Anstieg einer oder mehrerer Metriken durch eine einzelne Vertauschung) durch. In mindestens einer Ausführungsform überspringt ein Trainings-Framework, Deep-Learning-Framework oder anderes Softwareprogramm Permutationen mit Streifen (wie oben in Verbindung mit 5 beschrieben), die bereits in einer vorherigen Permutation enthalten waren. Sobald ein Trainings-Framework, Deep-Learning-Framework oder anderes Softwareprogramm alle nützlichen Permutationen durchführt, die zu einer Erhöhung der Genauigkeit führen, wiederholt in einer Ausführungsform das Trainings-Framework, Deep-Learning-Framework oder andere Softwareprogramm das Durchführen von Greedy-Kanalvertauschungen in einer gegebenen Matrix, bis die Genauigkeit einer Matrix, die eine Ebene eines trainierten neuronalen Netzes darstellt, maximiert ist.
  • INFERENZ- UND TRAININGSLOGIK
  • 8A veranschaulicht Inferenz- und/oder Trainingslogik 815, die verwendet wird, um Inferenz- und/oder Trainingsvorgänge in Verbindung mit einer oder mehreren Ausführungsformen durchzuführen. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit den 8A und/oder 8B bereitgestellt.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 ohne Einschränkung einen Code- und/oder Datenspeicher 801 beinhalten, um Vorwärts- und/oder Ausgabegewichtungs- und/oder Eingabe-/Ausgabedaten und/oder andere Parameter zu speichern, um Neuronen oder Schichten eines neuronalen Netzes zu konfigurieren, das in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder zum Inferenzieren verwendet wird. In mindestens einer Ausführungsform kann die Trainingslogik 815 einen Code- und/oder Datenspeicher 801 beinhalten oder an diesen gekoppelt sein, um Graphencode oder andere Software zu speichern, um die Zeitsteuerung und/oder die Reihenfolge zu steuern, in der Gewichtungs- und/oder andere Parameterinformationen geladen werden sollen, um Logik zu konfigurieren, die Ganzzahl- und/oder Gleitkommaeinheiten (zusammen arithmetisch-logische Einheiten (arithmetic logic units - ALU)) beinhalten. In mindestens einer Ausführungsform lädt Code, wie etwa Graphencode, Gewichtungs- oder andere Parameterinformationen in Prozessor-ALUs auf Grundlage einer Architektur eines neuronalen Netzes, dem derartiger Code entspricht. In mindestens einer Ausführungsform speichert der Code- und/oder Datenspeicher 801 Gewichtungsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzes, die in Verbindung mit einer oder mehreren Ausführungsformen trainiert oder verwendet wird, während der Vorwärtspropagierung von Eingabe-/Ausgabedaten und/oder Gewichtungsparametern während des Trainierens und/oder Inferenzierens unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 801 in einem anderen chipinternen oder chipexternen Datenspeicher, einschließlich des L1-, L2- oder L3-Caches oder Systemspeichers eines Prozessors, enthalten sein.
  • In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 801 intern oder extern zu einem oder mehreren Prozessoren oder anderen logischen Hardware-Vorrichtungen oder -Schaltungen sein. In mindestens einer Ausführungsform kann der Code und/oder Code- und/oder Datenspeicher 801 Cache-Speicher, dynamischer zufällig adressierbarer Speicher (dynamic randomly addressable memory - „DRAM“), statischer zufällig adressierbarer Speicher (static randomly addressable memory - „SRAM“), nichtflüchtiger Speicher (z. B. Flash-Speicher) oder anderer Speicher sein. In mindestens einer Ausführungsform kann eine Wahl, ob der Code und/oder Code- und/oder Datenspeicher 801 zum Beispiel zu einem Prozessor intern oder extern ist oder DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, von dem verfügbaren chipinternen oder chipexternen Speicher, den Latenzanforderungen der Trainings- und/oder Inferenzfunktionen, die durchgeführt werden, der Batch-Größe der Daten, die beim Inferenzieren und/oder Trainieren eines neuronalen Netzes verwendet werden, oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 ohne Einschränkung einen Code- und/oder Datenspeicher 805 beinhalten, um Rückwärts- und/oder Ausgabegewichtungs- und/oder Eingabe-/Ausgabedaten zu speichern, die Neuronen oder Schichten eines neuronalen Netzes entsprechen, das in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder zum Inferenzieren verwendet wird. In mindestens einer Ausführungsform speichert der Code- und/oder Datenspeicher 805 Gewichtungsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzes, die in Verbindung mit einer oder mehreren Ausführungsformen trainiert oder verwendet wird, während der Rückwärtspropagierung von Eingabe-/Ausgabedaten und/oder Gewichtungsparametern während des Trainierens und/oder Inferenzierens unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen. In mindestens einer Ausführungsform kann die Trainingslogik 815 einen Code- und/oder Datenspeicher 805 beinhalten oder an diesen gekoppelt sein, um Graphencode oder andere Software zu speichern, um die Zeitsteuerung und/oder die Reihenfolge zu steuern, in der Gewichtungs- und/oder andere Parameterinformationen geladen werden sollen, um Logik zu konfigurieren, die Ganzzahl- und/oder Gleitkommaeinheiten (zusammen arithmetisch-logische Einheiten (arithmetic logic units - ALU)) beinhalten.
  • In mindestens einer Ausführungsform bewirkt Code, wie etwa Graphencode, das Laden von Gewichtungs- oder anderen Parameterinformationen in Prozessor-ALUs auf Grundlage einer Architektur eines neuronalen Netzes, dem derartiger Code entspricht. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 805 in einem anderen chipinternen oder chipexternen Datenspeicher, einschließlich des L1-, L2- oder L3-Caches oder Systemspeichers eines Prozessors, enthalten sein. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 805 zu einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder -Schaltungen intern oder extern sein. In mindestens einer Ausführungsform kann der Code- und/oder Datenspeicher 805 Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z. B. Flash-Speicher) oder anderer Speicher sein. In mindestens einer Ausführungsform kann eine Wahl, ob der Code- und/oder Datenspeicher 805 zum Beispiel zu einem Prozessor intern oder extern ist oder DRAM, SRAM, Flash-Speicher oder einen anderen Speichertyp umfasst, von dem verfügbaren chipinternen oder chipexternen Speicher, den Latenzanforderungen der Trainings- und/oder Inferenzfunktionen, die durchgeführt werden, der Batch-Größe der Daten, die beim Inferenzieren und/oder Trainieren eines neuronalen Netzes verwendet werden, oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 801 und der Code- und/oder Datenspeicher 805 separate Speicherstrukturen sein. In mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 801 und der Code- und/oder Datenspeicher 805 eine kombinierte Speicherstruktur sein. In mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 801 und der Code- und/oder Datenspeicher 805 teilweise kombiniert und teilweise separat sein. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 801 und des Code- und/oder Datenspeichers 805 in einem anderen chipinternen oder chipexternen Datenspeicher, einschließlich des L1-, L2- oder L3-Caches oder Systemspeichers eines Prozessors, enthalten sein.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 ohne Einschränkung eine oder mehrere arithmetisch-logische Einheit(en) („ALU(s)“) 810 beinhalten, einschließlich Integer- und/oder Gleitkommaeinheiten, um logische und/oder mathematische Operationen durchzuführen, die mindestens zum Teil auf Trainings- und/oder Inferenzcode (z. B. Graphencode) basieren oder dadurch angegeben werden, wobei ein Ergebnis davon Aktivierungen (z. B. Ausgabewerte von Schichten oder Neuronen innerhalb eines neuronalen Netzes) produzieren kann, die in einem Aktivierungsspeicher 820 gespeichert sind und die Funktionen von Eingabe/Ausgabe- und/oder Gewichtungsparameterdaten sind, die in dem Code- und/oder Datenspeicher 801 und/oder dem Code- und/oder Datenspeicher 805 gespeichert sind. In mindestens einer Ausführungsform werden in dem Aktivierungsspeicher 820 gespeicherte Aktivierungen gemäß linearer algebraischer und/oder matrixbasierter Mathematik erzeugt, die durch die ALU(s) 810 als Reaktion auf das Durchführen von Anweisungen oder anderem Code durchgeführt wird, wobei in dem Code- und/oder Datenspeicher 805 und/oder dem Datenspeicher 801 gespeicherte Gewichtungswerte als Operanden zusammen mit anderen Werten, wie etwa Verzerrungswerten, Gradienteninformationen, Momentwerten oder anderen Parametern oder Hyperparametern, verwendet werden, von denen beliebige oder alle in dem Code- und/oder Datenspeicher 805 oder dem Code- und/oder Datenspeicher 801 oder einem anderen chipinternen oder -externen Speicher gespeichert sein können.
  • In mindestens einer Ausführungsform sind die ALU(s) 810 innerhalb eines oder mehrerer Prozessoren oder anderer Hardware-Logikvorrichtungen oder -Schaltungen enthalten, während in einer anderen Ausführungsform die ALU(s) 810 zu einem Prozessor oder einer anderen Hardware-Logikvorrichtung oder -Schaltung extern sein können, der/die sie verwendet (z. B. ein Koprozessor). In mindestens einer Ausführungsform können die ALUs 810 innerhalb der Ausführungseinheiten eines Prozessors oder anderweitig innerhalb einer Bank von ALUs enthalten sein, worauf die Ausführungseinheiten eines Prozessors zugreifen können, entweder innerhalb des gleichen Prozessors oder verteilt auf unterschiedliche Prozessoren unterschiedlichen Typs (z. B. zentrale Verarbeitungseinheiten, Grafikverarbeitungseinheiten, Festfunktionseinheiten usw.). In mindestens einer Ausführungsform können sich der Code- und/oder Datenspeicher 801, der Code- und/oder Datenspeicher 805 und der Aktivierungsspeicher 820 einen Prozessor oder eine andere Hardware-Logikvorrichtung oder -schaltung teilen, während sie sich in einer anderen Ausführungsform in unterschiedlichen Prozessoren oder anderen Hardware-Logikvorrichtungen oder -Schaltungen oder in einer Kombination aus gleichen und unterschiedlichen Prozessoren oder anderen Hardware-Logikvorrichtungen oder - Schaltungen befinden können. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Aktivierungsspeichers 820 in einem anderen chipinternen oder chipexternen Datenspeicher, einschließlich des L1-, L2- oder L3-Caches oder Systemspeichers eines Prozessors, enthalten sein. Darüber hinaus kann der Ableitungs- und/oder Trainingscode mit anderem Code gespeichert sein, auf den ein Prozessor oder eine andere Hardware-Logik oder -Schaltung zugreifen kann und der unter Verwendung der Abruf-, Decodier-, Planungs-, Ausführungs-, Ausscheidungs- und/oder anderen logischen Schaltungen eines Prozessors abgerufen und/oder verarbeitet wird.
  • In mindestens einer Ausführungsform kann der Aktivierungsspeicher 820 ein Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z. B. Flash-Speicher) oder ein anderer Speicher sein. In mindestens einer Ausführungsform kann sich der Aktivierungsspeicher 820 ganz oder teilweise innerhalb oder außerhalb eines oder mehrerer Prozessoren oder anderer logischer Schaltungen befinden. In mindestens einer Ausführungsform kann eine Wahl, ob der Aktivierungsspeicher 820 zum Beispiel zu einem Prozessor intern oder extern ist oder DRAM, SRAM, Flash-Speicher oder einen anderen Speichertyp umfasst, von dem verfügbaren chipinternen oder chipexternen Speicher, den Latenzanforderungen der Trainings- und/oder Inferenzfunktionen, die durchgeführt werden, der Batch-Größe der Daten, die beim Inferenzieren und/oder Trainieren eines neuronalen Netzes verwendet werden, oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform kann die in 8A veranschaulichte Inferenz- und/oder Trainingslogik 815 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung (application-specific integrated circuit - „ASIC“) verwendet werden, wie z. B. einer Tensorflow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (inference processing unit - IPU) von Graphcore™ oder einem Nervana@(z. B. „Lake Crest“)-Prozessor von Intel Corp. In mindestens einer Ausführungsform kann die in 8A veranschaulichte Inferenz- und/oder Trainingslogik 815 in Verbindung mit Hardware der Zentraleinheit („CPU“), der Grafikverarbeitungseinheit (graphics processing unit - „GPU“) oder anderer Hardware, wie etwa feldprogrammierbaren Gate-Arrays (field programmable gate arrays - „FPGAs“), verwendet werden.
  • 8B veranschaulicht die Inferenz- und/oder Trainingslogik 815 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 ohne Einschränkung eine Hardware-Logik beinhalten, in der Rechenressourcen dediziert oder anderweitig ausschließlich in Verbindung mit Gewichtungswerten oder anderen Informationen verwendet werden, die einer oder mehreren Schichten von Neuronen innerhalb eines neuronalen Netzes entsprechen. In mindestens einer Ausführungsform kann die in 8B veranschaulichte Inferenz- und/oder Trainingslogik 815 in Verbindung mit einem anwendungsspezifischen integrierten Schaltkreis (application-specific integrated circuit - ASIC) verwendet werden, wie z. B. der TensorFlow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (inference processing unit - IPU) von Graphcore™ oder einem Nervana®-Prozessor (z. B. „Lake Crest“) von Intel Corp. In mindestens einer Ausführungsform kann die in 8B veranschaulichte Inferenz- und/oder Trainingslogik 815 in Verbindung mit Hardware der Zentraleinheit (CPU), der Grafikverarbeitungseinheit (GPU) oder anderer Hardware, wie etwa feldprogrammierbaren Gate-Arrays (FPGAs), verwendet werden. In mindestens einer Ausführungsform beinhaltet die Inferenz- und/oder Trainingslogik 815, ohne Einschränkung, den Code- und/oder Datenspeicher 801 und den Code- und/oder Datenspeicher 805, die zum Speichern von Code (z. B. Graphencode), Gewichtungswerten und/oder anderen Informationen, einschließlich Bias-Werten, Gradienteninformationen, Impulswerten und/oder anderen Parameter- oder Hyperparameterinformationen, verwendet werden können. In mindestens einer Ausführungsform, die in 8B veranschaulicht ist, ist jeder von dem Code- und/oder Datenspeicher 801 und dem Code- und/oder Datenspeicher 805 einer dedizierten Berechnungsressource, wie etwa der Berechnungshardware 802 bzw. der Berechnungshardware 806, zugeordnet. In mindestens einer Ausführungsform umfasst jede von der Berechnungshardware 802 und der Berechnungshardware 806 eine oder mehrere ALU, die mathematische Funktionen, wie etwa lineare algebraische Funktionen, nur an Informationen durchführen, die im Code- und/oder Datenspeicher 801 und Code- und/oder Datenspeicher 805 gespeichert sind, deren Ergebnis im Aktivierungsspeicher 820 gespeichert ist.
  • In mindestens einer Ausführungsform entsprechen jeder der Code- und/oder Datenspeicher 801 und 805 und die entsprechende Rechenhardware 802 bzw. 806 verschiedenen Schichten eines neuronalen Netzes, so dass die resultierende Aktivierung von einem Speicher-/Rechenpaar 801/802 des Code- und/oder Datenspeichers 801 und der Rechenhardware 802 als Eingang für das nächste Speicher-/Rechenpaar 805/806 des Code- und/oder Datenspeichers 805 und der Rechenhardware 806 bereitgestellt wird, um die konzeptionelle Organisation eines neuronalen Netzes zu spiegeln. In mindestens einer Ausführungsform kann jedes der Speicher-/Rechenpaare 801/802 und 805/806 mehr als einer Schicht eines neuronalen Netzes entsprechen. In mindestens einer Ausführungsform können zusätzliche Speicher-/Rechenpaare (nicht gezeigt) im Anschluss an oder parallel zu den Speicher-/Rechenpaaren 801/802 und 805/806 in der Inferenz- und/oder Trainingslogik 815 beinhaltet sein.
  • TRAINING UND EINSATZ VON NEURONALEN NETZEN
  • 9 veranschaulicht Training und Einsatz eines tiefen neuronalen Netzes gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird das untrainierte neuronale Netz 906 unter Verwendung eines Trainingsdatensatzes 902 trainiert. In mindestens einer Ausführungsform ist das Trainings-Framework 904 ein PyTorch-Rahmen, wohingegen das Trainings-Framework 904 in anderen Ausführungsformen ein TensorFlow-, Boost-, Caffe-, Microsoft-Cognitive-Toolkit/CNTK-, MXNet-, Chainer-, Keras-, Deeplearning4j- oder ein anderes Trainings-Framework ist. In mindestens einer Ausführungsform trainiert das Trainings-Framework 904 ein untrainiertes neuronales Netz 906 und ermöglicht, dass es unter Verwendung der hierin beschriebenen Verarbeitungsressourcen trainiert wird, um ein trainiertes neuronales Netz 908 zu erzeugen. In mindestens einer Ausführungsform können die Gewichtungen zufällig oder durch Vorabtraining unter Verwendung eines Deep-Belief-Netzes gewählt werden. In mindestens einer Ausführungsform kann das Training entweder auf überwachte, teilweise überwachte oder nicht überwachte Weise durchgeführt werden.
  • In mindestens einer Ausführungsform wird das untrainierte neuronale Netz 906 unter Verwendung von überwachtem Lernen trainiert, wobei der Trainingsdatensatz 902 eine Eingabe beinhaltet, die mit einer gewünschten Ausgabe für eine Eingabe gepaart ist, oder wobei der Trainingsdatensatz 902 eine Eingabe mit einer bekannten Ausgabe beinhaltet und eine Ausgabe des neuronalen Netzes 906 manuell eingestuft wird. In mindestens einer Ausführungsform wird das untrainierte neuronale Netz 906 auf überwachte Weise trainiert und es verarbeitet Eingaben aus dem Trainingsdatensatz 902 und vergleicht die resultierenden Ausgaben mit einem Satz von erwarteten oder gewünschten Ausgaben. In mindestens einer Ausführungsform werden Fehler dann durch das untrainierte neuronale Netz 906 rückpropagiert. In mindestens einer Ausführungsform stellt das Trainings-Framework 904 Gewichtungen ein, die das untrainierte neuronale Netz 906 steuern. In mindestens einer Ausführungsform beinhaltet das Trainings-Framework 904 Werkzeuge, um zu überwachen, wie gut das untrainierte neuronale Netz 906 zu einem Modell konvergiert, wie etwa dem trainierten neuronalen Netz 908, das dazu geeignet ist, korrekte Antworten zu erzeugen, wie etwa in dem Ergebnis 914, die auf Eingabedaten wie etwa einem neuen Datensatz 912 basieren. In mindestens einer Ausführungsform trainiert das Trainings-Framework 904 das untrainierte neuronale Netz 906 wiederholt, während Gewichtungen eingestellt werden, um eine Ausgabe des untrainierten neuronalen Netzes 906 unter Verwendung einer Verlustfunktion und eines Einstellungsalgorithmus, wie etwa des stochastischen Gradientenabstiegs, zu verfeinern. In mindestens einer Ausführungsform trainiert das Trainings-Framework 904 das untrainierte neuronale Netz 906, bis das untrainierte neuronale Netz 906 eine gewünschte Genauigkeit erreicht. In mindestens einer Ausführungsform kann das trainierte neuronale Netz 908 dann zum Implementieren einer beliebigen Anzahl von Operationen des maschinellen Lernens eingesetzt werden.
  • In mindestens einer Ausführungsform wird das untrainierte neuronale Netz 906 unter Verwendung von unüberwachtem Lernen trainiert, wobei das untrainierte neuronale Netz 906 versucht, sich selbst unter Verwendung unmarkierter Daten zu trainieren. In mindestens einer Ausführungsform beinhaltet der Trainingsdatensatz 902 für nicht überwachtes Lernen Eingabedaten ohne assoziierte Ausgabedaten oder „Ground-Truth“-Daten. In mindestens einer Ausführungsform kann das untrainierte neuronale Netz 906 Gruppierungen innerhalb des Trainingsdatensatzes 902 lernen und bestimmen, wie einzelne Eingaben mit dem untrainierten Datensatz 902 in Bezug stehen. In mindestens einer Ausführungsform kann nicht überwachtes Training verwendet werden, um eine selbstorganisierende Karte in dem trainierten neuronalen Netz 908 zu erzeugen, die dazu in der Lage ist, Operationen durchzuführen, die beim Reduzieren der Dimensionalität des neuen Datensatzes 912 nützlich sind. In mindestens einer Ausführungsform kann nicht überwachtes Training auch verwendet werden, um Anomaliedetektion durchzuführen, was die Identifizierung von Datenpunkten in dem neuen Datensatz 912 ermöglicht, die von normalen Mustern des neuen Datensatzes 912 abweichen.
  • In mindestens einer Ausführungsform kann halbüberwachtes Lernen verwendet werden, wobei es sich um eine Technik handelt, bei der der Trainingsdatensatz 902 eine Mischung aus beschrifteten und unbeschrifteten Daten beinhaltet. In mindestens einer Ausführungsform kann das Trainings-Framework 904 verwendet werden, um inkrementelles Lernen durchzuführen, wie etwa durch Transferlerntechniken. In mindestens einer Ausführungsform ermöglicht das inkrementelle Lernen es dem trainierten neuronalen Netz 908, sich an den neuen Datensatz 912 anzupassen, ohne das Wissen zu vergessen, das dem trainierten neuronalen Netz 908 während des anfänglichen Trainings beigebracht wurde.
  • RECHENZENTRUM
  • 10 veranschaulicht ein beispielhaftes Rechenzentrum 1000, in dem mindestens eine Ausführungsform verwendet werden kann. In mindestens einer Ausführungsform beinhaltet das Rechenzentrum 1000 eine Rechenzentrumsinfrastrukturschicht 1010, eine Framework-Schicht 1020, eine Software-Schicht 1030 und eine Anwendungsschicht 1040.
  • In mindestens einer Ausführungsform, wie in 10 gezeigt, kann die Rechenzentrumsinfrastrukturschicht 1010 einen Ressourcen-Orchestrator 1012, gruppierte Rechenressourcen 1014 und Knoten-Rechenressourcen (node computing resources - „Knoten-C.R.s“) 1016(1)-1016(N) beinhalten, wobei „N“ eine positive ganze Zahl darstellt (die eine andere ganze Zahl „N“ sein kann als in anderen Figuren verwendet). In mindestens einer Ausführungsform können die Knoten-C.R.s 1016(1)-1016(N) eine beliebige Anzahl von zentralen Verarbeitungseinheiten („CPUs“) oder anderen Prozessoren (einschließlich Beschleunigern, feldprogrammierbarer Gate-Arrays (FPGAs), Grafikprozessoren usw.), Speichervorrichtungen 1018(1)-1018(N) (z. B. dynamischer Festwertspeicher, Festkörperspeicher oder Festplattenlaufwerke), Vorrichtungen zur Netz-Eingabe/Ausgabe (network input/output - „NW-E/A“), Netz-Switches, virtuellen Maschinen (virtual machines - „VMs“), Leistungsmodulen und Kühlmodulen usw. beinhalten, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform kann es sich bei einer oder mehreren Knoten-C.R.s aus den Knoten-C.R.s 1016(1)-1016(N) um einen Server handeln, der eine oder mehrere der vorstehend erwähnten Rechenressourcen aufweist.
  • In mindestens einer Ausführungsform können die gruppierten Rechenressourcen 1014 separate Gruppierungen von Knoten-C.R.s beinhalten, die in einem oder mehreren Racks (nicht gezeigt) oder vielen Racks untergebracht sind, die in Rechenzentren an verschiedenen geografischen Standorten untergebracht sind (ebenfalls nicht gezeigt). Separate Gruppierungen von Knoten-C.R.s innerhalb der gruppierten Rechenressourcen 1014 können in mindestens einer Ausführungsform gruppierte Rechen-, Netz-, Arbeitsspeicher- oder Datenspeicherressourcen beinhalten, die dazu konfiguriert oder zugewiesen sein können, eine oder mehrere Arbeitslasten zu unterstützen. In mindestens einer Ausführungsform können mehrere Knoten-C.R.s, die CPUs oder Prozessoren beinhalten, in einem oder mehreren Racks gruppiert sein, um Rechenressourcen zur Unterstützung einer oder mehrerer Arbeitslasten bereitzustellen. In mindestens einer Ausführungsform können ein oder mehrere Racks auch eine beliebige Anzahl von Leistungsmodulen, Kühlmodulen und Netz-Switches in beliebiger Kombination beinhalten.
  • In mindestens einer Ausführungsform kann der Ressourcen-Orchestrator 1012 eine oder mehrere Knoten-C.R.s 1016(1)-1016(N) und/oder gruppierte Rechenressourcen 1014 konfigurieren oder anderweitig steuern. In mindestens einer Ausführungsform kann der Ressourcen-Orchestrator 1012 eine Verwaltungsentität für Softwaregestaltungsinfrastruktur (software design infrastructure - „SDI“) für das Rechenzentrum 1000 beinhalten. In mindestens einer Ausführungsform kann der Ressourcen-Orchestrator 812 Hardware, Software oder eine Kombination davon beinhalten.
  • In mindestens einer Ausführungsform beinhaltet, wie in 10 gezeigt, die Framework-Schicht 1020 einen Aufgaben-Scheduler 1022, einen Konfigurationsmanager 1024, einen Ressourcenmanager 1026 und ein verteiltes Dateisystem 1028. In mindestens einer Ausführungsform kann die Framework-Schicht 1020 einen Rahmen zum Unterstützen von Software 1032 der Software-Schicht 1030 und/oder einer oder mehreren Anwendungen 1042 der Anwendungsschicht 1040 beinhalten. In mindestens einer Ausführungsform kann/können die Software 1032 bzw. die Anwendung(en) 1042 webbasierte Dienst-Software oder -Anwendungen beinhalten, wie etwa diejenigen, die von Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt werden. In mindestens einer Ausführungsform kann es sich bei der Framework-Schicht 1020 um eine Art freien und quelloffenen Software-Webanwendungsrahmen wie etwa Apache Spark™ (im Folgenden „Spark“) handeln, der das verteilte Dateisystem 1028 für die Verarbeitung großer Datenmengen (z. B. „Big Data“) verwenden kann, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform kann der Aufgaben-Scheduler 1032 einen Spark-Treiber beinhalten, um die Planung von Arbeitslasten zu erleichtern, die durch verschiedene Schichten des Rechenzentrums 1000 unterstützt werden. In mindestens einer Ausführungsform kann der Konfigurationsverwalter 1024 dazu in der Lage sein, unterschiedliche Schichten, wie etwa die Software-Schicht 1030 und die Framework-Schicht 1020, einschließlich Spark und des verteilten Dateisystems 1028, zu konfigurieren, um die Verarbeitung großer Datenmengen zu unterstützen. In mindestens einer Ausführungsform kann der Ressourcenverwalter 1026 dazu in der Lage sein, geclusterte oder gruppierte Rechenressourcen zu verwalten, die zur Unterstützung des verteilten Dateisystems 1028 und des Aufgaben-Schedulers 1022 abgebildet oder zugewiesen sind. In mindestens einer Ausführungsform können geclusterte oder gruppierte Rechenressourcen gruppierte Rechenressourcen 1014 in der Rechenzentrumsinfrastrukturschicht 1010 beinhalten. In mindestens einer Ausführungsform kann sich der Ressourcenverwalter 1026 mit dem Ressourcen-Orchestrator 1012 koordinieren, um diese abgebildeten oder zugewiesenen Rechenressourcen zu verwalten.
  • In mindestens einer Ausführungsform kann die in der Softwareschicht 1030 beinhaltete Software 1032 Software beinhalten, die mindestens von Abschnitten der Knoten C.R.s 1016(1)-1016(N), den gruppierten Rechenressourcen 1014 und/oder dem verteilten Dateisystem 1028 der Framework-Schicht 1020 verwendet wird. Zu einem oder mehreren Typen von Software können in mindestens einer Ausführungsform Software zum Durchsuchen von Internet-Webseiten, Software zum Scannen von E-Mails auf Viren, Datenbank-Software und Software für Streaming-Videoinhalte gehören, ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform können die in der Anwendungsschicht 1040 beinhalteten Anwendungen 1042 eine oder mehrere Arten von Anwendungen beinhalten, die von mindestens Teilen der Knoten C.R.s 1016(1)-1016(N), gruppierten Rechenressourcen 1014 und/oder verteilten Dateisystemen 1028 der Framework-Schicht 1020 verwendet werden. Zu einem oder mehreren Typen von Anwendungen können in mindestens einer Ausführungsform eine beliebige Anzahl von einer Genomikanwendung, einer Anwendung zur kognitiven Berechnung und einer Anwendung für maschinelles Lernen gehören, einschließlich Trainings- oder Inferenz-Software, Rahmen-Software für maschinelles Lernen (z. B. PyTorch, TensorFlow, Caffe usw.) oder anderer Anwendungen für maschinelles Lernen, die in Verbindung mit einer oder mehreren Ausführungsformen verwendet werden, ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform können beliebige des Konfigurationsverwalters 1024, des Ressourcenverwalters 1026 und des Ressourcen-Orchestrators 1012 eine beliebige Anzahl und Art von selbstmodifizierenden Handlungen implementieren, die auf einer beliebigen Menge und Art von Daten basieren, die auf eine beliebige technisch machbare Weise erfasst wurden. In mindestens einer Ausführungsform können selbstmodifizierende Handlungen einen Rechenzentrumsbetreiber des Rechenzentrums 1000 dahingehend entlasten, möglicherweise schlechte Konfigurationsentscheidungen zu treffen und möglicherweise nicht ausgelastete und/oder schlecht funktionierende Abschnitte eines Rechenzentrums zu vermeiden.
  • In mindestens einer Ausführungsform kann das Rechenzentrum 1000 Werkzeuge, Dienste, Software oder andere Ressourcen beinhalten, um ein oder mehrere maschinelle Lernmodelle zu trainieren oder Informationen unter Verwendung eines oder mehrerer maschineller Lernmodelle gemäß einer oder mehrerer hierin beschriebener Ausführungsformen vorherzusagen oder abzuleiten. Zum Beispiel kann in mindestens einer Ausführungsform ein maschinelles Lernmodell trainiert werden, indem die Gewichtungsparameter gemäß einer neuronalen Netzarchitektur unter Verwendung von Software und Rechenressourcen berechnet werden, die oben in Bezug auf das Rechenzentrum 1000 beschrieben wurden. In mindestens einer Ausführungsform können trainierte maschinelle Lernmodelle, die einem oder mehreren neuronalen Netzen entsprechen, verwendet werden, um Informationen abzuleiten oder vorherzusagen, wobei die oben beschriebenen Ressourcen in Bezug auf das Rechenzentrum 1000 verwendet werden, indem Gewichtungsparameter verwendet werden, die durch eine oder mehrere hierin beschriebene Trainingstechniken berechnet werden.
  • In mindestens einer Ausführungsform kann ein Rechenzentrum CPUs, anwendungsspezifische integrierte Schaltungen (ASICs), GPUs, FPGAs oder andere Hardware verwenden, um das Training und/oder Inferenzieren unter Verwendung der oben beschriebenen Ressourcen auszuführen. Darüber hinaus können eine oder mehrere der vorstehend beschriebenen Software- und/oder Hardware-Ressourcen als Dienst konfiguriert sein, um Benutzern das Trainieren oder Durchführen der Ableitung von Informationen zu ermöglichen, wie z. B. Bilderkennung, Spracherkennung oder andere Dienste der künstlichen Intelligenz.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 815 im System aus 10 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • In mindestens einer Ausführungsform können Permutationen 512 und Beschneidung 528 zur Erzwingung von n:m-strukturierter Spärlichkeit im System aus 10 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • AUTONOMES FAHRZEUG
  • 11A veranschaulicht ein beispielhaftes autonomes Fahrzeug 1100 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das autonome Fahrzeug 1100 (hierin alternativ als „Fahrzeug 1100“ bezeichnet) ohne Einschränkung ein Personenkraftwagen sein, wie etwa ein Auto, ein Truck, ein Bus und/oder ein anderer Fahrzeugtyp, der einen oder mehrere Fahrgäste aufnimmt. In mindestens einer Ausführungsform kann das Fahrzeug 1100 ein Sattelschlepper sein, der zum Befördern von Fracht verwendet wird. In mindestens einer Ausführungsform kann das Fahrzeug 1100 ein Flugzeug, ein Roboterfahrzeug oder eine andere Art von Fahrzeug sein.
  • Autonome Fahrzeuge können im Hinblick auf Automatisierungslevels beschrieben werden, die von der National Highway Traffic Safety Administration („NHTSA“), einer Abteilung des US-Verkehrsministeriums, und der Society of Automotive Engineers („SAE“) „Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles“ (z. B. Standard Nr. J3016-201806, veröffentlicht am 15. Juni 2018, Standard Nr. J3016-201609, veröffentlicht am 30. September 2016, sowie frühere und zukünftige Versionen dieses Standards) definiert sind. In einer oder mehreren Ausführungsformen kann das Fahrzeug 1100 zu einer Funktionalität gemäß einem oder mehreren von Level 1 bis einschließlich Level 5 der Levels für autonomes Fahren in der Lage sein. Zum Beispiel kann in mindestens einer Ausführungsform das Fahrzeug 1100 in Abhängigkeit von der Ausführungsform zu einer bedingten Automatisierung (Level 3), einer hohen Automatisierung (Level 4) und/oder einer vollständigen Automatisierung (Level 5) in der Lage sein.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1100 ohne Einschränkung Komponenten wie etwa ein Fahrgestell, eine Fahrzeugkarosserie, Räder (z. B. 2, 4, 6, 8, 18 usw.), Reifen, Achsen und andere Komponenten eines Fahrzeugs beinhalten. In mindestens einer Ausführungsform kann das Fahrzeug 1100 ohne Einschränkung ein Antriebssystem 1150 beinhalten, wie etwa eine Brennkraftmaschine, ein Hybridelektrotriebwerk, einen vollelektrischen Motor und/oder einen anderen Typ von Antriebssystem. In mindestens einer Ausführungsform kann das Antriebssystem 1150 mit einem Antriebsstrang des Fahrzeugs 1100 verbunden sein, der ohne Einschränkung ein Getriebe beinhalten kann, um den Antrieb des Fahrzeugs 1100 zu ermöglichen. In mindestens einer Ausführungsform kann das Antriebssystem 1150 als Reaktion auf das Empfangen von Signalen von einer Drossel/Fahrpedal(en) 1152 gesteuert werden.
  • In mindestens einer Ausführungsform wird ein Lenksystem 1154, das ohne Einschränkung ein Lenkrad beinhalten kann, verwendet, um das Fahrzeug 1100 zu lenken (z. B. entlang eines gewünschten Pfads oder einer gewünschten Route), wenn das Antriebssystem 1150 in Betrieb ist (z. B., wenn das Fahrzeug 1100 in Bewegung ist). In mindestens einer Ausführungsform kann das Lenksystem 1154 Signale von Lenkaktor(en) 1156 empfangen. In mindestens einer Ausführungsform kann ein Lenkrad für die Funktionalität einer vollständigen Automatisierung (Level 5) optional sein. In mindestens einer Ausführungsform kann ein Bremssensorsystem 1146 verwendet werden, um Fahrzeugbremsen als Reaktion auf das Empfangen von Signalen von Bremsaktor(en) 1148 und/oder Bremssensoren zu betreiben.
  • In mindestens einer Ausführungsform stellen (eine) Steuerung(en) 1136, die ohne Einschränkung ein oder mehrere Systeme auf einem Chip (system on chips - „SoCs“) (in 11A nicht gezeigt) und/oder (eine) Grafikverarbeitungseinheit(en) („GPU(s)“) beinhalten können, Signale (z. B. repräsentativ für Befehle) für ein(e) oder mehrere Komponenten und/oder Systeme des Fahrzeugs 1100 bereit. Zum Beispiel können in mindestens einer Ausführungsform die Steuerung(en) 1136 Signale zum Betreiben von Fahrzeugbremsen über die Bremsaktor(en) 1148, zum Betreiben des Lenksystems 1154 über die Lenkaktor(en) 1156, zum Betreiben des Antriebssystems 1150 über die Drossel/Fahrpedal(e) 1152 senden. In mindestens einer Ausführungsform können die Steuerung(en) 1136 eine oder mehrere bordeigene (z. B. integrierte) Rechenvorrichtungen beinhalten, die Sensorsignale verarbeiten und Betriebsbefehle ausgeben (z. B. Signale, die Befehle darstellen), um autonomes Fahren zu ermöglichen und/oder einen menschlichen Fahrer beim Fahren des Fahrzeugs 1100 zu unterstützen. In mindestens einer Ausführungsform können die Steuerung(en) 1136 eine erste Steuerung für Funktionen des autonomen Fahrens, eine zweite Steuerung für funktionelle Sicherheitsfunktionen, eine dritte Steuerung für eine Funktionalität der künstlichen Intelligenz (z. B. maschinelles Sehen), eine vierte Steuerung für eine Infotainment-Funktionalität, eine fünfte Steuerung für Redundanz in Notfällen und/oder andere Steuerungen beinhalten. In mindestens einer Ausführungsform kann eine einzelne Steuerung zwei oder mehr der vorstehenden Funktionalitäten handhaben, können zwei oder mehr Steuerungen eine einzelne Funktionalität handhaben und/oder eine beliebige Kombination davon.
  • In mindestens einer Ausführungsform stellen die Steuerung(en) 1136 Signale zum Steuern einer/eines oder mehrerer Komponenten und/oder Systeme des Fahrzeugs 1100 als Reaktion auf Sensordaten bereit, die von einem oder mehreren Sensoren empfangen werden (z. B. Sensoreingaben). In mindestens einer Ausführungsform können Sensordaten zum Beispiel und ohne Einschränkung empfangen werden von Sensor(en) 1158 von globalen Navigationssatellitensystemen (global navigation satellite systems - „GNSS“) (z. B. Sensor(en) des globalen Positionsbestimmungssystems), RADAR-Sensor(en) 1160, Ultraschallsensor(en) 1162, LIDAR-Sensor(en) 1164, Sensor(en) 1166 einer Trägheitsmesseinheit (inertial measurement unit - „IMU“) (z. B. Beschleunigungsmesser(n), Gyroskop(en), einem Magnetkompass oder Magnetkompassen, Magnetometer(n) usw.), Mikrofon(en) 1196, Stereokamera(s) 1168, Weitsichtkamera(s) 1170 (z. B. Fischaugenkameras), Infrarotkamera(s) 1172, Rundumkamera(s) 1174 (z. B. 360-Grad-Kameras), Langstreckenkameras (in 11A nicht gezeigt), Mittelstreckenkamera(s) (in 11A nicht gezeigt), Geschwindigkeitssensor(en) 1144 (z. B. zum Messen der Geschwindigkeit des Fahrzeugs 1100), Schwingungssensor(en) 1142, Lenksensor(en) 1140, Bremssensor(en) (z. B. als Teil des Bremssensorsystems 1146) und/oder anderen Sensortypen.
  • In mindestens einer Ausführungsform können eine oder mehrere der Steuerung(en) 1136 Eingaben (z. B. durch Eingabedaten dargestellt) von einem Kombiinstrument 1132 des Fahrzeugs 1100 empfangen und Ausgaben (z. B. durch Ausgabedaten, Anzeigedaten usw. dargestellt) über eine Mensch-Maschine-Schnittstellen(human-machine interface -„HMI“)-Anzeige 1134, einen akustischen Melder, einen Lautsprecher und/oder über andere Komponenten des Fahrzeugs 1100 bereitstellen. In mindestens einer Ausführungsform können die Ausgaben Informationen wie Fahrzeuggeschwindigkeit, Drehzahl, Zeit, Kartendaten (z. B. eine hochauflösende Karte (in 11A nicht gezeigt), Positionsdaten (z. B. die Position des Fahrzeugs 1100, z. B. auf einer Karte), Richtung, Position anderer Fahrzeuge (z. B. ein Belegungsgitter), Informationen über Objekte und den Status von Objekten, wie von der/den Steuerung(en) 1136 wahrgenommen, usw. beinhalten. Beispielsweise kann in mindestens einer Ausführungsform die HMI-Anzeige 1134 Informationen über das Vorhandensein eines oder mehrerer Objekte (z. B. eines Straßenschilds, eines Warnschilds, einer umschaltenden Ampel usw.) und/oder Informationen über Fahrmanöver anzeigen, die das Fahrzeug durchgeführt hat, gerade durchführt oder durchführen wird (z. B. jetzt die Spur wechseln, in zwei Meilen die Ausfahrt 34B nehmen usw.).
  • In mindestens einer Ausführungsform beinhaltet das Fahrzeug 1100 ferner eine Netzschnittstelle 1124, die drahtlose Antenne(n) 1126 und/oder Modem(s) zum Kommunizieren über ein oder mehrere Netze verwenden kann. Zum Beispiel kann in mindestens einer Ausführungsform die Netzschnittstelle 1124 dazu in der Lage sein, über Netze mit Long-Term Evolution („LTE“), Breitband-Codemultiplexverfahren (Wideband Code Division Multiple Access - „WCDMA“), Universal Mobile Telecommunications System („UMTS“), Global System for Mobile Communication („GSM“), IMT-CDMA Multi-Carrier („CDMA2000“) usw. zu kommunizieren. In mindestens einer Ausführungsform können die drahtlose(n) Antenne(n) 1126 auch Kommunikation zwischen Objekten in der Umgebung (z. B. Fahrzeugen, mobilen Vorrichtungen usw.) unter Verwendung von lokalen Netz(en), wie etwa Bluetooth, Bluetooth Low Energy („LE“), Z-Wave, ZigBee usw., und/oder Weitverkehrsnetz(en) mit geringem Leistungsverbrauch (low power wide-area networks - „LPWANs“), wie etwa LoRaWAN-Protokollen, SigFox-Protokollen usw., ermöglichen.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 im System aus 11A für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • In mindestens einer Ausführungsform können Permutationen 512 und Beschneidung 528 zur Erzwingung von n:m-strukturierter Spärlichkeit im System aus 11A für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • 11B veranschaulicht ein Beispiel für Kamerapositionen und Sichtfelder für das autonome Fahrzeug 1100 von 11A gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform stellen die Kameras und die entsprechenden Sichtfelder eine beispielhafte Ausführungsform dar und sind nicht als einschränkend aufzufassen. Zum Beispiel können in mindestens einer Ausführungsform zusätzliche und/oder alternative Kameras enthalten sein und/oder die Kameras können sich an unterschiedlichen Stellen an dem Fahrzeug 1100 befinden.
  • In mindestens einer Ausführungsform können die Kameratypen für Kameras Digitalkameras beinhalten, die für die Verwendung mit Komponenten und/oder Systemen eines Fahrzeugs 1100 angepasst werden können, sind aber nicht darauf beschränkt. In mindestens einer Ausführungsform können die Kameras mit dem Automobilsicherheitsintegritätslevel (automotive safety integrity level - „ASIL“) B und/oder mit einem anderen ASIL betrieben werden. In mindestens einer Ausführungsform können die Kameratypen je nach Ausführungsform eine beliebige Bildaufnahmerate, wie 60 Bilder pro Sekunde (fps), 1220 fps, 240 fps usw., erreichen. In mindestens einer Ausführungsform können die Kameras Rolling Shutter, Global Shutter, einen anderen Verschlusstyp oder eine Kombination davon verwenden. In mindestens einer Ausführungsform kann die Farbfilteranordnung eine Rot-Klar-Klar-Klar-Farbfilteranordnung („RCCC“), eine Rot-Klar-Klar-Blau-Farbfilteranordnung („RCCB“), eine Rot-Blau-Grün-Klar-Farbfilteranordnung („RBGC“), eine Foveon X3-Farbfilteranordnung, eine Bayer-Sensor-Farbfilteranordnung („RGGB“), eine Monochromsensor-Farbfilteranordnung und/oder eine andere Art von Farbfilteranordnung aufweisen. In mindestens einer Ausführungsform können zur Erhöhung der Lichtempfindlichkeit Klar-Pixel-Kameras, wie z. B. Kameras mit einer RCCC-, einer RCCB- und/oder einer RBGC-Farbfilteranordnung, verwendet werden.
  • In einigen Beispielen können eine oder mehrere der Kamera(s) verwendet werden, um Funktionen der weiterentwickelten Fahrerassistenzsysteme (advanced driver assistance systems - ADAS) durchzuführen (z. B. als Teil einer redundanten oder ausfallsicheren Ausgestaltung). So kann in mindestens einer Ausführungsform eine Multifunktions-Monokamera installiert sein, die Funktionen wie Spurhalteassistent, Verkehrszeichenassistent und intelligente Scheinwerfersteuerung bietet. In mindestens einer Ausführungsform können eine oder mehrere der Kameras (z. B. alle Kameras) simultan Bilddaten (z. B. Video) aufnehmen und bereitstellen.
  • In mindestens einer Ausführungsform können eine oder mehrere Kameras in einer Montagebaugruppe, wie etwa einer kundenspezifisch entworfenen (dreidimensional („3D“) gedruckten) Baugruppe, montiert sein, um Streulicht und Reflexionen aus dem Inneren des Fahrzeugs 1100 (z. B. Reflexionen von dem Armaturenbrett, die in den Windschutzscheibenspiegeln reflektiert werden) herauszuschneiden, die die Bilddatenerfassungsfähigkeiten der Kameras beeinträchtigen können. Unter Bezugnahme auf Seitenspiegelmontagebaugruppen können in mindestens einer Ausführungsform die Seitenspiegelbaugruppen kundenspezifisch 3D-gedruckt werden, sodass eine Kameramontageplatte mit einer Form eines Seitenspiegels übereinstimmt. In mindestens einer Ausführungsform können die Kameras in den Außenspiegeln integriert sein. In mindestens einer Ausführungsform können bei Seitensichtkameras die Kameras auch innerhalb von 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 1100 beinhaltet (z. B. nach vorne gerichtete Kameras), für die Umgebungsansicht verwendet werden, um dabei zu helfen, nach vorne gerichtete Pfade und Hindernisse zu identifizieren, und um mit Hilfe eines oder mehrerer Steuerungen 1136 und/oder Steuer-SoCs Informationen bereitzustellen, die für die Erstellung eines Belegungsgitters und/oder die Bestimmung bevorzugter Fahrzeugpfade entscheidend sind. In mindestens einer Ausführungsform können nach vorn gerichtete Kameras verwendet werden, um viele ähnliche ADAS-Funktionen wie LIDAR durchzuführen, einschließlich ohne Einschränkung Notbremsung, Fußgängerdetektion und Kollisionsvermeidung. In mindestens einer Ausführungsform können nach vorne gerichtete Kameras auch für ADAS-Funktionen und -Systeme verwendet werden, einschließlich, aber nicht beschränkt auf eine Warnung vor dem Verlassen der Fahrspur („LDW“), autonome Geschwindigkeitsregelung („ACC“) und/oder andere Funktionen wie Verkehrszeichenerkennung.
  • In mindestens einer Ausführungsform kann eine Vielzahl von Kameras in einer nach vorne gerichteten Konfiguration verwendet werden, darunter beispielsweise eine monokulare Kameraplattform, die einen CMOS(„Komplementärer Metalloxid-Halbleiter“)-Farbbildgeber umfasst. In mindestens einer Ausführungsform kann eine Weitsichtkamera 1170 verwendet werden, um Objekte wahrzunehmen, die aus einer Peripherie ins Blickfeld kommen (z. B. Fußgänger, kreuzender Verkehr oder Fahrräder). Obwohl in 11 B nur eine Weitsichtkamera 1170 veranschaulicht ist, kann in anderen Ausführungsformen eine beliebige Anzahl (einschließlich null) von Weitsichtkameras an dem Fahrzeug 1100 vorhanden sein. In mindestens einer Ausführungsform kann eine beliebige Anzahl von Langstreckenkameras 1198 (z. B. ein Weitsichtstereokamerapaar) zur tiefenbasierten Objektdetektion verwendet werden, insbesondere für Objekte, für die ein neuronales Netz noch nicht trainiert worden ist. In mindestens einer Ausführungsform können die Langstreckenkameras 1198 auch zur Objektdetektion und -klassifizierung sowie zur grundlegenden Objektverfolgung verwendet werden.
  • In mindestens einer Ausführungsform kann auch eine beliebige Anzahl von Stereokameras 1168 in einer nach vorne gerichteten Konfiguration beinhaltet sein. In mindestens einer Ausführungsform können eine oder mehrere der Stereokameras 1168 eine integrierte Steuereinheit beinhalten, die eine skalierbare Verarbeitungseinheit umfasst, die eine programmierbare Logik („FPGA“) und einen Mehrkern-Mikroprozessor mit einer integrierten Schnittstelle für ein Controller Area Network („CAN“) oder Ethernet auf einem einzelnen Chip bereitstellen kann. In mindestens einer Ausführungsform kann eine derartige Einheit verwendet werden, um eine 3D-Karte einer Umgebung des Fahrzeugs 1100 zu erzeugen, einschließlich einer Abstandsschätzung für alle Punkte in einem Bild. In mindestens einer Ausführungsform können eine oder mehrere der Stereokameras 1168 ohne Einschränkung kompakte Stereosichtsensoren beinhalten, die ohne Einschränkung zwei Kameraobjektive (je eines links und rechts) und einen Bildverarbeitungschip beinhalten können, die den Abstand von dem Fahrzeug 1100 zu einem Zielobjekt messen und die erzeugten Informationen (z. B. Metadaten) verwenden können, um autonome Notbrems- und Spurverlassenswarnfunktionen zu aktivieren. In mindestens einer Ausführungsform können andere Typen von Stereokameras 1168 zusätzlich oder alternativ zu den hierin beschriebenen verwendet werden.
  • In mindestens einer Ausführungsform können Kameras mit einem Sichtfeld, das Teile der Umgebung seitlich des Fahrzeugs 1100 beinhaltet (z. B. Seitenkameras), für die Umgebungsansicht verwendet werden, die Informationen zur Erstellung und Aktualisierung eines Belegungsrasters sowie zur Erzeugung von Seitenaufprallwarnungen liefert. Zum Beispiel könnten in mindestens einer Ausführungsform die Rundumkameras 1174 (z. B. vier Rundumkameras, wie in 11 B veranschaulicht) an dem Fahrzeug 1100 positioniert sein. In mindestens einer Ausführungsform können die Rundumkameras 1174 ohne Einschränkung eine beliebige Anzahl und Kombination von Weitsichtkameras, Fischaugenkameras, 360-Grad-Kameras und/oder ähnlichen Kameras beinhalten. Zum Beispiel können in mindestens einer Ausführungsform vier Fischaugenkameras an einer Vorderseite, einer Rückseite und Seiten des Fahrzeugs 1100 positioniert sein. In mindestens einer Ausführungsform kann das Fahrzeug 1100 drei Rundumkameras 1174 (z. B. links, rechts und hinten) verwenden und eine oder mehrere andere Kameras (z. B. eine nach vorn gerichtete Kamera) als vierte Rundumsichtkamera ausnutzen.
  • In mindestens einer Ausführungsform können Kameras mit einem Sichtfeld, das Abschnitte einer Umgebung hinter dem Fahrzeug 1100 beinhaltet (z. B. Rückfahrkameras), für die Einparkhilfe, für die Rundumsicht, für Heckkollisionswarnungen und zum Erstellen und Aktualisieren eines Belegungsgitters verwendet werden. In mindestens einer Ausführungsform kann eine große Vielfalt an Kameras verwendet werden, einschließlich, aber nicht beschränkt auf, Kameras, die auch als nach vorn gerichtete Kameras geeignet sind (z. B. Langstreckenkameras 1198 und/oder Mittelstreckenkameras 1176, Stereokameras 1168, Infrarotkameras 1172 usw.), wie hierin beschrieben.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 im System aus 11B für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • In mindestens einer Ausführungsform können Permutationen 512 und Beschneidung 528 zur Erzwingung von n:m-strukturierter Spärlichkeit im System aus 11 B für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • 11C ist ein Blockdiagramm, das eine beispielhafte Systemarchitektur für das autonome Fahrzeug 1100 aus 11A gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform ist jede/jedes der Komponenten, Merkmale und Systeme des Fahrzeugs 1100 in 11C als über einen Bus 1102 verbunden veranschaulicht. In mindestens einer Ausführungsform kann der Bus 1102 ohne Einschränkung eine CAN-Datenschnittstelle (hierin alternativ als „CAN-Bus“ bezeichnet) beinhalten. In mindestens einer Ausführungsform kann ein CAN ein Netz innerhalb des Fahrzeugs 1100 sein, das zum Unterstützen beim Steuern verschiedener Merkmale und Funktionen des Fahrzeugs 1100 verwendet wird, wie etwa Betätigung von Bremsen, Beschleunigung, Bremsung, Lenkung, Scheibenwischern usw. In mindestens einer Ausführungsform kann der Bus 1102 so konfiguriert sein, dass er Dutzende oder sogar Hunderte von Knoten aufweist, jeder mit seiner eigenen eindeutigen Kennung (z. B. einer CAN-ID). In mindestens einer Ausführungsform kann der Bus 1102 ausgelesen werden, um Lenkradwinkel, Geschwindigkeit über Grund, Motorumdrehungen pro Minute (revolutions per minute - „RPMs“), Tastenpositionen und/oder andere Fahrzeugstatusindikatoren zu ermitteln. In mindestens einer Ausführungsform kann der Bus 1102 ein CAN-Bus sein, der mit ASIL B konform ist.
  • In mindestens einer Ausführungsform können zusätzlich zu oder alternativ zu CAN auch FlexRay und/oder Ethernet-Protokolle verwendet werden. In mindestens einer Ausführungsform kann eine beliebige Anzahl von Bussen, die den Bus 1102 bilden, vorhanden sein, die ohne Einschränkung null oder mehr CAN-Busse, null oder mehr FlexRay-Busse, null oder mehr Ethernet-Busse und/oder null oder mehr andere Arten von Bussen unter Verwendung eines anderen Protokolls beinhalten können. In mindestens einer Ausführungsform können zwei oder mehr Busse verwendet werden, um unterschiedliche Funktionen durchzuführen, und/oder zur Redundanz verwendet werden. Zum Beispiel kann ein erster Bus für die Funktionalität der Kollisionsvermeidung verwendet werden und ein zweiter Bus für die Betätigungssteuerung verwendet werden. In mindestens einer Ausführungsform kann jeder Bus des Busses 1102 mit beliebigen Komponenten des Fahrzeugs 1100 kommunizieren und zwei oder mehr Busse des Busses 1102 können mit entsprechenden Komponenten kommunizieren. In mindestens einer Ausführungsform kann jedes einer beliebigen Anzahl von Systemen auf Chips („SoCs“) 1104 (wie etwa dem SoC 1104(A) und SoC 1104(B), jede der Steuerungen 1136 und/oder jeder Computer innerhalb des Fahrzeugs Zugriff auf die gleichen Eingabedaten (z. B. Eingaben von Sensoren des Fahrzeugs 1100) haben und mit einem gemeinsamen Bus, wie etwa dem CAN-Bus, verbunden sein.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1100 eine oder mehrere Steuerungen 1136 beinhalten, wie etwa diejenigen, die hierin in Bezug auf 11A beschrieben sind. In mindestens einer Ausführungsform können die Steuerungen 1136 für eine Vielfalt an Funktionen verwendet werden. In mindestens einer Ausführungsform können die Steuerungen 1136 an beliebige von verschiedenen anderen Komponenten und Systemen des Fahrzeugs 1100 gekoppelt sein und zur Steuerung des Fahrzeugs 1100, der künstlichen Intelligenz des Fahrzeugs 1100, des Infotainments für das Fahrzeug 1100 und/oder anderer Funktionen verwendet werden.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1100 eine beliebige Anzahl von SoCs 1104 beinhalten. In mindestens einer Ausführungsform kann jedes der SoCs 1104 ohne Einschränkung zentrale Verarbeitungseinheiten („CPUs“) 1106, Grafikverarbeitungseinheiten („GPUs“) 1108, Prozessoren 1110, Caches 1112, einen oder mehrere Beschleuniger 1114, einen oder mehrere Datenspeicher 1116 und/oder andere nicht veranschaulichte Komponenten und Merkmale beinhalten. In mindestens einer Ausführungsform können die SoCs 1104 zum Steuern des Fahrzeugs 1100 in einer Vielfalt an Plattformen und Systemen verwendet werden. Zum Beispiel können in mindestens einer Ausführungsform die SoCs 1104 in einem System (z. B. System des Fahrzeugs 1100) mit einer hochauflösenden (High Definition - „HD“) Karte 1122 kombiniert werden, die Kartenauffrischungen und/oder -aktualisierungen über die Netzschnittstelle 1124 von einem oder mehreren Servern (in 11C nicht gezeigt) erlangen kann.
  • In mindestens einer Ausführungsform können die CPUs 1106 einen CPU-Cluster oder CPU-Komplex (hierin alternativ als „CCPLEX“ bezeichnet) beinhalten. In mindestens einer Ausführungsform können die CPUs 1106 mehrere Kerne und/oder Level-Zwei-(„L2“-)Caches beinhalten. Zum Beispiel können in mindestens einer Ausführungsform die CPUs 1106 acht Kerne in einer kohärenten Mehrprozessorkonfiguration beinhalten. In mindestens einer Ausführungsform können die CPUs 1106 vier Doppelkerncluster beinhalten, wobei jeder Cluster einen dedizierten L2-Cache aufweist (z. B. einen 2 Megabyte (MB) großen L2-Cache). In mindestens einer Ausführungsform können die CPUs 1106 (z. B. CCPLEX) so konfiguriert sein, dass sie simultane Clusteroperationen unterstützen, sodass eine beliebige Kombination von Clustern der CPUs 1106 zu einem beliebigen gegebenen Zeitpunkt aktiv sein kann.
  • In mindestens einer Ausführungsform können eine oder mehrere derCPU(s) 1106 Leistungsverwaltungsfähigkeiten implementieren, die ohne Einschränkung eines oder mehrere der folgenden Merkmale beinhalten: einzelne Hardwareblöcke können automatisch taktgesteuert werden, wenn sie inaktiv sind, um dynamische Leistung zu sparen; jeder Kerntakt kann gesteuert werden, wenn ein derartiger Kern aufgrund der Ausführung von Wait-for-lnterrupt(„WFI“)-/Wait-for-Event-(„WFE“)-Anweisungen keine Anweisungen aktiv ausführt; jeder Kern kann unabhängig leistungsgesteuert sein; jeder Kerncluster kann unabhängig taktgesteuert sein, wenn alle Kerne taktgesteuert oder leistungsgesteuert sind; und/oder jeder Kerncluster kann unabhängig leistungsgesteuert sein, wenn alle Kerne leistungsgesteuert sind. In mindestens einer Ausführungsform können die CPU(s) 1106 ferner einen erweiterten Algorithmus zum Verwalten von Leistungszuständen implementieren, bei dem zulässige Leistungszustände und erwartete Aufwachzeiten vorgegeben werden und die Hardware/der Mikrocode bestimmt, in welchen besten Leistungszustand für einen Kern, einen Cluster und einen CCPLEX einzutreten ist. In mindestens einer Ausführungsform können die Verarbeitungskerne vereinfachte Leistungsstatus-Eintragssequenzen in der Software unterstützen, wobei die Arbeit in den Mikrocode ausgelagert wird.
  • In mindestens einer Ausführungsform können die GPUs 1108 eine integrierte GPU beinhalten (hierin alternativ als „iGPU“ bezeichnet). In mindestens einer Ausführungsform können die GPUs 1108 programmierbar sein und für parallele Arbeitslasten effizient sein. In mindestens einer Ausführungsform können die GPUs 1108 einen erweiterten Tensor-Anweisungssatz verwenden. In einer Ausführungsform können die GPUs 1108 einen oder mehrere Streaming-Mikroprozessoren beinhalten, wobei jeder Streaming-Mikroprozessor einen Level-Eins-(„L1“-)Cache beinhalten kann (z. B. einen L1-Cache mit einer Speicherkapazität von mindestens 96 KB), und zwei oder mehr Streaming-Mikroprozessoren können einen L2-Cache gemeinsam nutzen (z. B. einen L2-Cache mit einer Speicherkapazität von 512 KB). In mindestens einer Ausführungsform können die GPUs 1108 mindestens acht Streaming-Mikroprozessoren beinhalten. In mindestens einer Ausführungsform können die GPUs 1108 Berechnungs-Anwendungsprogrammierschnittstellen (application programming interfaces - APIs) verwenden. In mindestens einer Ausführungsform können die GPUs 1108 eine oder mehrere Parallelrechenplattformen und/oder Programmiermodelle (z. B. das CUDA-Modell von NVIDIA) verwenden.
  • In mindestens einer Ausführungsform können eine oder mehrere der GPUs 1108 für die beste Rechenleistung in Automobil- und eingebetteten Anwendungsfällen leistungsoptimiert sein. Zum Beispiel könnten in einer Ausführungsform die GPUs 1108 auf einer Fin-Feldeffekttransistor-(„FinFET“-)Schaltung hergestellt sein. In mindestens einer Ausführungsform kann jeder Streaming-Mikroprozessor eine Anzahl von Verarbeitungskernen mit gemischter Genauigkeit beinhalten, die in mehrere Blöcke partitioniert sind. Beispielsweise können 64 PF32-Kerne und 32 PF64-Kerne in vier Verarbeitungsblöcke unterteilt sein. In mindestens einer Ausführungsform können jedem Verarbeitungsblock 16 FP32-Kerne, 8 FP64-Kerne, 16 INT32-Kerne, zwei NVIDIA Tensorkernen mit gemischter Genauigkeit für Deep-Learning-Matrixarithmetik, ein Level-Null-Befehlscache („L0“), ein Warp-Scheduler, eine Dispatch-Einheit und/oder eine 64-KB-Registerdatei zugewiesen sein. In mindestens einer Ausführungsform können Streaming-Mikroprozessoren unabhängige parallele Ganzzahl- und Gleitkomma-Datenpfade aufweisen, um eine effiziente Ausführung von Arbeitslasten mit einer Mischung aus Berechnungen und Adressierungsberechnungen zu ermöglichen. In mindestens einer Ausführungsform können Streaming-Mikroprozessoren eine unabhängige Thread-Planungsfunktion aufweisen, um eine feinkörnigere Synchronisierung und Zusammenarbeit zwischen parallelen Threads zu ermöglichen. In mindestens einer Ausführungsform können Streaming-Mikroprozessoren eine Einheit aus kombiniertem L1-Daten-Cache und gemeinsam genutztem Speicher beinhalten, um die Performance zu verbessern, während die Programmierung vereinfacht wird.
  • In mindestens einer Ausführungsform können eine oder mehrere der GPUs 1108 einen Speicher mit hoher Bandbreite (high bandwidth memory - „HBM“) und/oder ein 16-GB-HBM2-Speicherteilsystem beinhalten, um in einigen Beispielen eine Spitzenspeicherbandbreite von etwa 900 GB/Sekunde bereitzustellen. In mindestens einer Ausführungsform kann zusätzlich oder alternativ zu HBM-Speicher ein synchroner Grafik-Direktzugriffsspeicher (synchronous graphics random-access memory - „SGRAM“) verwendet werden, wie etwa ein synchroner Direktzugriffsspeicher vom Graphics-Double-Data-Rate-Typ fünf (graphics double data rate type five - „GDDR5“).
  • In mindestens einer Ausführungsform können die GPUs 1108 Unified-Memory-Technologie beinhalten. In mindestens einer Ausführungsform kann die Unterstützung von Adressübersetzungsdiensten (address translation services - „ATS“) verwendet werden, um zu ermöglichen, dass die GPUs 1108 direkt auf Seitentabellen von CPUs 1106 zugreifen. In mindestens einer Ausführungsform kann, wenn die Speicherverwaltungseinheit (memory management unit - „MMU“) einer GPU der GPUs 1108 einen Fehler erleidet, eine Adressübersetzungsanforderung an die CPUs 1106 übertragen werden. Als Reaktion darauf können 2 CPUs der CPUs 1106 in mindestens einer Ausführungsform in ihren Seitentabellen nach einer Virtuell-auf-Physisch-Abbildung für eine Adresse suchen und die Übersetzung zurück an die GPUs 1108 übertragen. In mindestens einer Ausführungsform kann die einheitliche Speichertechnologie einen einzelnen einheitlichen virtuellen Adressraum für Speicher sowohl der CPUs 1106 als auch der GPUs 1108 ermöglichen, wodurch die Programmierung der GPUs 1108 und die Portierung von Anwendungen auf die GPUs 1108 vereinfacht werden.
  • In mindestens einer Ausführungsform können die GPUs 1108 eine beliebige Anzahl von Zugriffszählern beinhalten, die die Häufigkeit des Zugriffs der GPUs 1108 auf den Speicher anderer Prozessoren verfolgen können. In mindestens einer Ausführungsform kann der/können die Zugriffszähler dazu beitragen, sicherzustellen, dass Speicherseiten in physischen Speicher eines Prozessors verschoben werden, der am häufigsten auf Seiten zugreift, wodurch die Effizienz für Speicherbereiche, die von mehreren Prozessoren gemeinsam genutzt werden, verbessert wird.
  • In mindestens einer Ausführungsform können eines oder mehrere SoCs 1104 eine beliebige Anzahl von Caches 1112 beinhalten, einschließlich der hier beschriebenen. In mindestens einer Ausführungsform könnten die Caches 1112 zum Beispiel einen Level-Drei-(„L3“-)Cache beinhalten, der sowohl den CPUs 1106 als auch den GPUs 1108 zur Verfügung steht (der z. B. mit den CPUs 1106 und GPUs 1108 verbunden ist). In mindestens einer Ausführungsform können die Caches 1112 einen Rückschreib-Cache beinhalten, der die Zustände von Zeilen nachverfolgen kann, wie etwa durch Verwenden eines Cache-Kohärenzprotokolls (z. B. MEI, MESI, MSI usw.). In mindestens einer Ausführungsform kann ein L3-Cache in Abhängigkeit von der Ausführungsform 4 MB Speicher oder mehr beinhalten, obwohl auch kleinere Cache-Größen verwendet werden können.
  • In mindestens einer Ausführungsform können eines oder mehrere SoCs 1104 einen oder mehrere Beschleuniger 1114 (z. B. Hardware-Beschleuniger, Software-Beschleuniger oder eine Kombination davon) beinhalten. In mindestens einer Ausführungsform können die SoCs 1104 einen Hardware-Beschleunigungscluster beinhalten, der optimierte Hardware-Beschleuniger und/oder einen großen chipinternen Speicher beinhalten kann. In mindestens einer Ausführungsform kann großer chipinterner Speicher (z. B. 4 MB SRAM) einen Hardware-Beschleunigungscluster zum Beschleunigen neuronaler Netze und anderer Berechnungen ermöglichen. In mindestens einer Ausführungsform kann ein Hardware-Beschleunigungscluster verwendet werden, um die GPUs 1108 zu ergänzen und einige Tasks der GPUs 1108 auszulagern (z. B. mehr Zyklen der GPUs 1108 zum Durchführen anderer Tasks freizumachen). In mindestens einer Ausführungsform könnte der/könnten die Beschleuniger 1114 für zielgerichtete Arbeitslasten (z. B. Wahrnehmung, neuronale Faltungsnetze (convolutional neural networks - „CNNs“), rekurrente neuronale Netze (recurrent neural networks - „RNNs“) usw.) verwendet werden, die stabil genug sind, um für eine Beschleunigung geeignet zu sein. In mindestens einer Ausführungsform kann ein CNN ein regionsbasiertes oder regionales neuronales Faltungsnetz („RCNN“) und schnelles RCNN (wie z. B. für die Objekterkennung verwendet) oder eine andere Art von CNN beinhalten.
  • In mindestens einer Ausführungsform können die Beschleuniger 1114 (z. B. Hardware-Beschleunigungscluster) einen oder mehrere Deep-Learning-Beschleuniger („DLA“) aufweisen. DLAs können in mindestens einer Ausführungsform ohne Einschränkung eine oder mehrere Tensor-Verarbeitungseinheiten (Tensor processing units - „TPUs“) beinhalten, die so konfiguriert sein können, dass sie zusätzliche zehn Billionen Operationen pro Sekunde für Deep-Learning-Anwendungen und Inferenzieren bereitstellen. In mindestens einer Ausführungsform kann es sich bei den TPUs um Beschleuniger handeln, die für die Durchführung von Bildverarbeitungsfunktionen ausgestaltet und optimiert sind (z. B. für CNNs, RCNNs usw.). In mindestens einer Ausführungsform kann können die DLAs darüber hinaus für einen bestimmten Satz neuronaler Netztypen und Gleitkommaoperationen sowie für Inferenzierung optimiert sein. In mindestens einer Ausführungsform kann das Design von DLAs mehr Leistung pro Millimeter bieten als eine typische Allzweck-GPU und übertrifft in der Regel die Leistung einer CPU bei weitem. In mindestens einer Ausführungsform können die TPUs mehrere Funktionen ausführen, einschließlich einer Einzelinstanz-Faltungsfunktion, die z. B. INT8-, INT16- und FP16-Datentypen sowohl für Merkmale als auch für Gewichte sowie Postprozessorfunktionen unterstützt. In mindestens einer Ausführungsform können die DLAs neuronale Netze, insbesondere CNNs, an verarbeiteten oder unverarbeiteten Daten für beliebige einer Vielfalt von Funktionen schnell und effizient ausführen, darunter zum Beispiel und ohne Einschränkung: ein CNN für die Identifizierung und Detektion von Objekten unter Verwendung von Daten von Kamerasensoren; ein CNN für die Abstandsschätzung unter Verwendung von Daten von Kamerasensoren; ein CNN für die Detektion und Identifizierung und Detektion von Einsatzfahrzeugen unter Verwendung von Daten von Mikrofonen; ein CNN für die Gesichtserkennung und Identifizierung von Fahrzeugbesitzern unter Verwendung von Daten von Kamerasensoren; und/oder ein CNN für sicherheits- und/oder sicherungsbezogene Ereignisse.
  • In mindestens einer Ausführungsform können die DLAs jede Funktion der GPUs 1108 ausführen, und durch die Verwendung eines Inferenzbeschleunigers kann ein Entwickler beispielsweise für jede Funktion entweder den/die DLAs oder die GPUs 1108 als Ziel verwenden. In mindestens einer Ausführungsform kann sich ein Gestalter zum Beispiel auf die Verarbeitung von CNNs und Gleitkommaoperationen an den DLAs konzentrieren und andere Funktionen den GPUs 1108 und/oder Beschleunigern 1114 überlassen.
  • In mindestens einer Ausführungsform können die Beschleuniger 1114 einen programmierbaren Bildverarbeitungsbeschleuniger („PVA“) umfassen, der hier alternativ auch als Computervision-Beschleuniger bezeichnet werden kann. In mindestens einer Ausführungsform kann der PVA zum Beschleunigen von Algorithmen für maschinelles Sehen für weiterentwickelte Fahrerassistenzsysteme („ADAS“) 1138, autonomes Fahren, Augmented-Reality-(„AR“-)Anwendungen und/oder Virtual-Reality-(„VR“-)Anwendungen ausgestaltet und konfiguriert sein. In mindestens einer Ausführungsform kann der PVA ein Gleichgewicht zwischen Rechenleistung und Flexibilität bereitstellen. In mindestens einer Ausführungsform kann jeder PVA beispielsweise und ohne Einschränkung eine beliebige Anzahl von Rechenkernen mit reduziertem Befehlssatz („RISC“), direkten Speicherzugriff („DMA“) und/oder eine beliebige Anzahl von Vektorprozessoren aufweisen.
  • In mindestens einer Ausführungsform können die RISC-Kerne mit Bildsensoren (z. B. Bildsensoren einer der hier beschriebenen Kameras), Bildsignalprozessoren, usw. interagieren. In mindestens einer Ausführungsform kann jeder RISC-Kern eine beliebige Menge an Speicher aufweisen. In mindestens einer Ausführungsform können die RISC-Kerne je nach Ausführungsform eines von mehreren Protokollen verwenden. In mindestens einer Ausführungsform können RISC-Kerne ein Echtzeitbetriebssystem („RTOS“) ausführen. In mindestens einer Ausführungsform können RISC-Kerne mit einer oder mehreren integrierten Schaltungseinrichtungen, anwendungsspezifischen integrierten Schaltungen („ASICs“) und/oder Speichereinrichtungen implementiert sein. In mindestens einer Ausführungsform könnten die RISC-Kerne beispielsweise einen Anweisungs-Cache und/oder einen eng gekoppelten RAM beinhalten.
  • In mindestens einer Ausführungsform kann ein DMA es Komponenten der PVAs ermöglichen, unabhängig von den CPUs 1106 auf den Systemspeicher zuzugreifen. In mindestens einer Ausführungsform kann DMA eine beliebige Anzahl von Merkmalen unterstützen, die zum Bereitstellen der Optimierung eines PVA verwendet werden, einschließlich der Unterstützung von mehrdimensionaler Adressierung und/oder zirkulärer Adressierung, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform kann ein DMA bis zu sechs oder mehr Dimensionen der Adressierung unterstützen, die ohne Einschränkung Blockbreite, Blockhöhe, Blocktiefe, horizontales Block-Stepping, vertikales Block-Stepping und/oder Tiefen-Stepping aufweisen können.
  • In mindestens einer Ausführungsform können Vektorprozessoren programmierbare Prozessoren sein, die so konzipiert sein können, dass sie die Programmierung für Computer-Vision-Algorithmen effizient und flexibel ausführen und Signalverarbeitungsfunktionen bereitstellen. In mindestens einer Ausführungsform kann ein PVA einen PVA-Kern und zwei Vektorverarbeitungs-Subsystem-Partitionen aufweisen. In mindestens einer Ausführungsform kann ein PVA-Kern ein Prozessor-Subsystem, DMA-Engines (z. B. zwei DMA-Engines) und/oder andere Peripheriegeräte aufweisen. In mindestens einer Ausführungsform kann ein Vektorverarbeitungs-Subsystem als eine primäre Verarbeitungseinheit eines PVAs fungieren und eine Vektorverarbeitungseinheit („VPU“), einen Befehlscache und/oder einen Vektorspeicher (z. B. „VMEM“) aufweisen. In mindestens einer Ausführungsform kann der VPU-Kern einen digitalen Signalprozessor aufweisen, wie z. B. einen digitalen Signalprozessor mit mehreren Daten für eine Anweisung („SIMD“) und sehr langen Anweisungsworten („VLIW“). In mindestens einer Ausführungsform kann eine Kombination aus SIMD und VLIW den Durchsatz und die Geschwindigkeit erhöhen.
  • In mindestens einer Ausführungsform kann jeder Vektorprozessor einen Befehlscache beinhalten und mit einem dedizierten Speicher verbunden sein. Infolgedessen kann in mindestens einer Ausführungsform jeder der Vektorprozessoren so konfiguriert sein, dass er unabhängig von anderen Vektorprozessoren arbeitet. In mindestens einer Ausführungsform können Vektorprozessoren, die in einem bestimmten PVA enthalten sind, so konfiguriert sein, dass sie Datenparallelität verwenden. Beispielsweise können in mindestens einer Ausführungsform mehrere Vektorprozessoren, die in einem einzigen PVA enthalten sind, einen allgemeinen Computer-Vision-Algorithmus ausführen, jedoch für unterschiedliche Bildbereiche. In mindestens einer Ausführungsform können Vektorprozessoren, die in einem bestimmten PVA enthalten sind, gleichzeitig verschiedene Bildverarbeitungsalgorithmen für ein Bild oder sogar verschiedene Algorithmen für aufeinander folgende Bilder oder Abschnitte eines Bildes ausführen. In mindestens einer Ausführungsform kann unter anderem eine beliebige Anzahl von PVAs in einem Hardware-Beschleunigungscluster und eine beliebige Anzahl von Vektorprozessoren in jedem PVA vorhanden sein. In mindestens einer Ausführungsform kann der PVA zusätzlichen Speicher für Fehlerkorrekturcode (error correcting code - „ECC“) beinhalten, um die Gesamtsystemsicherheit zu erhöhen.
  • In mindestens einer Ausführungsform kann können die Beschleuniger 1114 ein On-Chip-Computer-Vision-Netz und einen statischen Direktzugriffsspeicher (static random-access memory-„SRAM“ beinhalten, um SRAM mit hoher Bandbreite und geringer Latenz für die Beschleuniger 1114 bereitzustellen. In mindestens einer Ausführungsform kann chipinterner Speicher mindestens 4 MB SRAM beinhalten, der zum Beispiel und ohne Einschränkung acht feldkonfigurierbare Speicherblöcke umfasst, auf die sowohl ein PVA als auch ein DLA zugreifen können. In mindestens einer Ausführungsform kann jedes Paar von Speicherblöcken eine erweiterte Peripheriebusschnittstelle („APB“), Konfigurationsschaltungen, eine Steuerung und einen Multiplexer aufweisen. In mindestens einer Ausführungsform kann jeder beliebige Speichertyp verwendet werden. In mindestens einer Ausführungsform können ein PVA und ein DLA über einen Backbone auf den Speicher zugreifen, der einem PVA und einem DLA einen Hochgeschwindigkeitszugriff auf den Speicher ermöglicht. In mindestens einer Ausführungsform kann ein Backbone ein Computer-Vision-Netz auf dem Chip aufweisen, das einen PVA und einen DLA mit dem Speicher verbindet (z. B. unter Verwendung einer APB).
  • In mindestens einer Ausführungsform kann ein On-Chip-Computer-Vision-Netz eine Schnittstelle beinhalten, die vor der Übermittlung von Steuersignalen/Adressen/Daten bestimmt, dass sowohl ein PVA als auch ein DLA einsatzbereite und gültige Signale liefern. In mindestens einer Ausführungsform kann eine Schnittstelle getrennte Phasen und getrennte Kanäle für die Übertragung von Steuersignalen/Adressen/Daten sowie eine Burst-Kommunikation für die kontinuierliche Datenübertragung vorsehen. In mindestens einer Ausführungsform kann eine Schnittstelle den Normen der International Organization for Standardization („ISO“) 26262 oder der International Electrotechnical Commission („IEC“) 61508 entsprechen, obwohl andere Normen und Protokolle verwendet werden können.
  • In mindestens einer Ausführungsform können eines oder mehrere der SoCs 1104 einen Echtzeitstrahlverfolgungs-Hardware-Beschleuniger beinhalten. In mindestens einer Ausführungsform kann der Echtzeitstrahlverfolgungs-Hardware-Beschleuniger verwendet werden, um schnell und effizient Positionen und Ausdehnungen von Objekten (z. B. innerhalb eines Weltmodells) zu bestimmen, um Echtzeitvisualisierungssimulationen zu erzeugen, für die RADAR-Signalinterpretation, für die Schallausbreitungssynthese und/oder -analyse, für die Simulation von SONAR-Systemen, für die allgemeine Wellenausbreitungssimulation, für den Vergleich mit LIDAR-Daten zum Zwecke der Lokalisierung und/oder für andere Funktionen und/oder für andere Anwendungen.
  • In mindestens einer Ausführungsform kann/können der/die Beschleuniger 1114 eine breite Palette von Anwendungen für das autonome Fahren aufweisen. In mindestens einer Ausführungsform kann ein PVA für wichtige Verarbeitungsstufen im ADAS und in autonomen Fahrzeugen verwendet werden. In mindestens einer Ausführungsform eignen sich die Fähigkeiten eines PVAs gut für algorithmische Bereiche, die eine vorhersehbare Verarbeitung bei geringer Leistung und geringer Latenz benötigen. Anders ausgedrückt, zeigt ein PVA eine gute Rechenleistung für halbdichte oder dichte reguläre Berechnungen, auch an kleinen Datensätzen, die vorhersagbare Laufzeiten bei niedriger Latenz und niedriger Leistung erfordern könnten. In mindestens einer Ausführungsform, wie etwa in dem Fahrzeug 1100, könnten die PVAs so ausgestaltet sein, dass sie klassische Algorithmen des maschinellen Sehens ausführen, da sie bei der Objektdetektion und beim Betreiben an Integermathematik effizient sein können.
  • Zum Beispiel wird gemäß mindestens einer Ausführungsform der Technologie ein PVA zum Ausführen von Computer-Stereo-Vision verwendet. In mindestens einer Ausführungsform kann bei einigen Beispielen ein auf semiglobalem Matching basierender Algorithmus verwendet werden, obwohl dies nicht als Einschränkung gedacht ist. In mindestens einer Ausführungsform werden bei Anwendungen für das autonome Fahren der Stufen 3-5 Bewegungsschätzungen/Stereoabgleich während der Fahrt verwendet (z. B. Struktur aus Bewegung, Fußgängererkennung, Fahrspurerkennung usw.). In mindestens einer Ausführungsform kann ein PVA Computer-Stereosichtfunktionen auf Eingaben von zwei monokularen Kameras ausführen.
  • In mindestens einer Ausführungsform kann ein PVA verwendet werden, um dichten optischen Fluss durchzuführen. Zum Beispiel könnte ein PVA in mindestens einer Ausführungsform RADAR-Rohdaten verarbeiten (z. B. unter Verwendung einer schnellen 4D-Fourier-Transformation), um verarbeitete RADAR-Daten bereitzustellen. In mindestens einer Ausführungsform wird ein PVA für die Flugzeittiefenverarbeitung verwendet, indem Flugzeit-Rohdaten verarbeitet werden, um z. B. verarbeitete Flugzeitdaten bereitzustellen.
  • In mindestens einer Ausführungsform kann ein DLA verwendet werden, um jede beliebige Art von Netz zu betreiben, um die Kontrolle und die Fahrsicherheit zu verbessern, was zum Beispiel und ohne Einschränkung ein neuronales Netz beinhaltet, das für jede Objekterkennung ein Maß für die Konfidenz ausgibt. In mindestens einer Ausführungsform kann das Vertrauen als Wahrscheinlichkeit dargestellt oder interpretiert werden, oder als relative „Gewichtung“ jeder Erkennung im Vergleich zu anderen Erkennungen. In mindestens einer Ausführungsform ermöglicht es ein Konfidenzmaß dem System, darüber hinaus Entscheidungen darüber zu treffen, welche Erkennungen als echte positive Erkennungen und welche als falsch positive Erkennungen betrachtet werden sollen. In mindestens einer Ausführungsform kann ein System einen Schwellenwert für die Zuverlässigkeit festlegen und nur Erkennungen, die den Schwellenwert überschreiten, als echte positive Erkennungen betrachten. In einer Ausführungsform, in der ein automatisches Notbremssystem („AEB“) verwendet wird, würden falsch positive Erkennungen dazu führen, dass das Fahrzeug automatisch eine Notbremsung durchführt, was natürlich unerwünscht ist. In mindestens einer Ausführungsform können sehr sichere Erkennungen als Auslöser für ein AEB angesehen werden. In mindestens einer Ausführungsform kann ein DLA ein neuronales Netz zur Regression des Konfidenzwerts ausführen. In mindestens einer Ausführungsform kann das neuronale Netz als seine Eingabe mindestens eine Teilmenge von Parametern verwenden, wie etwa die Abmessungen des Begrenzungsrahmens, die (z. B. von einem anderen Teilsystem) erlangte Grundebenenschätzung, die Ausgabe von IMU-Sensoren 1166, die mit der Ausrichtung des Fahrzeugs 1100 korreliert, den Abstand, die 3D-Standortschätzungen des Objekts, die von dem neuronalen Netz und/oder anderen Sensoren (z. B. LIDAR-Sensoren 1164 oder RADAR-Sensoren 1160) erlangt werden, sowie andere.
  • In mindestens einer Ausführungsform können ein oder mehrere SoCs 1104 einen oder mehrere Datenspeicher 1116 (z. B. einen Speicher) beinhalten. In mindestens einer Ausführungsform kann es sich bei den Datenspeichern 1116 um chipinternen Speicher der SoCs 1104 handeln, der neuronale Netze speichern kann, die auf den GPUs 1108 und/oder einem DLA ausgeführt werden sollen. In mindestens einer Ausführungsform kann die Kapazität der Datenspeichers 1116 groß genug sein, um mehrere Instanzen von neuronalen Netzen zur Redundanz und Sicherheit zu speichern. In mindestens einer Ausführungsform kann der/können die Datenspeicher 1116 L2- oder L3-Caches umfassen.
  • In mindestens einer Ausführungsform können ein oder mehrere SoCs 1104 eine beliebige Anzahl von Prozessoren 1110 (z. B. eingebettete Prozessoren) beinhalten. In mindestens einer Ausführungsform können die Prozessoren 1110 einen Booting- und Leistungsverwaltungsprozessor beinhalten, der ein dedizierter Prozessor und Teilsystem sein kann, um Booting-Leistungs- und -verwaltungsfunktionen und die damit verbundene Sicherheitsdurchsetzung zu handhaben. In mindestens einer Ausführungsform kann der Booting- und Leistungsverwaltungsprozessor ein Teil einer Booting-Sequenz der SoCs 1104 sein und Laufzeit-Leistungsverwaltungsdienste bereitstellen. In mindestens einer Ausführungsform kann ein Booting-Leistungs- und Verwaltungsprozessor Takt- und Spannungsprogrammierung, Unterstützung bei Übergängen des Systems in einen Zustand mit niedriger Leistung, Verwaltung von Thermo- und Temperatursensoren der SoCs 1104 und/oder Verwaltung von Leistungszuständen der SoCs 1104 bereitstellen. In mindestens einer Ausführungsform kann jeder Temperatursensor als Ringoszillator implementiert sein, dessen Ausgangsfrequenz proportional zur Temperatur ist, und die SoCs 1104 können Ringoszillatoren verwenden, um Temperaturen von CPUs 1106, GPUs 1108 und/oder Beschleunigern 1114 zu detektieren. Falls bestimmt wird, dass Temperaturen einen Schwellenwert überschreiten, kann in mindestens einer Ausführungsform ein Booting- und Leistungsverwaltungsprozessor dann in eine Temperaturfehlerroutine eintreten und die SoCs 1104 in einen Zustand mit niedrigerer Leistung versetzen und/oder das Fahrzeug 1100 in einen Modus des Fahrens zu einem sicheren Halt versetzen (z. B. das Fahrzeug 1100 zu einem sicheren Halt bringen).
  • In mindestens einer Ausführungsform können die Prozessoren 1110 ferner einen Satz von eingebetteten Prozessoren beinhalten, die als Audioverarbeitungs-Engine dienen können, die ein Audioteilsystem sein kann, das eine vollständige Hardware-Unterstützung für Mehrkanal-Audio über mehrere Schnittstellen sowie eine breite und flexible Palette von Audio-E/A-Schnittstellen ermöglicht. In mindestens einer Ausführungsform ist eine Audioverarbeitungs-Engine ein dedizierter Prozessorkern mit einem digitalen Signalprozessor mit dediziertem RAM.
  • In mindestens einer Ausführungsform können die Prozessoren 1110 darüber hinaus eine stets eingeschaltete Prozessor-Engine aufweisen, die die notwendigen Hardware-Funktionen zur Unterstützung von Sensor-Management mit geringem Stromverbrauch und Aufwach-Anwendungsfälle bereitstellen kann. In mindestens einer Ausführungsform kann die stets eingeschaltete Prozessor-Engine ohne Einschränkung einen Prozessorkern, einen eng gekoppelten RAM, unterstützende Peripheriegeräte (z. B. Zeitgeber und Unterbrechungssteuerungen), verschiedene E/A-Steuerungsperipheriegeräte und Routing-Logik beinhalten.
  • In mindestens einer Ausführungsform können die Prozessoren 1110 darüber hinaus eine Sicherheitscluster-Engine aufweisen, die ohne Einschränkung ein dediziertes Prozessorteilsystem zur Handhabung des Sicherheitsmanagements für Automobilanwendungen aufweist. In mindestens einer Ausführungsform kann eine Sicherheitscluster-Engine ohne Einschränkung zwei oder mehr Prozessorkerne, einen eng gekoppelten RAM, unterstützende Peripheriegeräte (z. B. Zeitgeber, eine Unterbrechungssteuerung usw.) und/oder Routing-Logik beinhalten. In einem Sicherheitsmodus können zwei oder mehr Kerne in mindestens einer Ausführungsform in einem Gleichschrittmodus arbeiten und als ein einzelner Kern mit einer Vergleichslogik funktionieren, um beliebige Unterschiede zwischen ihren Vorgängen zu erkennen. In mindestens einer Ausführungsform können die Prozessoren 1110 ferner eine Echtzeitkamera-Engine beinhalten, die ohne Einschränkung ein dediziertes Prozessorteilsystem zum Handhaben der Echtzeitkameraverwaltung beinhalten kann. In mindestens einer Ausführungsform können die Prozessoren 1110 ferner einen Signalprozessor mit hohem Dynamikbereich beinhalten, der ohne Einschränkung einen Bildsignalprozessor beinhalten kann, der eine Hardware-Engine ist, die Teil einer Kameraverarbeitungspipeline ist.
  • In mindestens einer Ausführungsform können die Prozessoren 1110 einen Videobild-Compositor beinhalten, der ein Verarbeitungsblock sein kann (z. B. auf einem Mikroprozessor implementiert), der Video-Nachbearbeitungsfunktionen implementiert, die von einer Videowiedergabeanwendung benötigt werden, um ein endgültiges Bild für ein Playerfenster zu erzeugen. In mindestens einer Ausführungsform kann ein Videobildkompositor eine Objektivverzeichnungskorrektur an den Weitsichtkameras 1170, Rundumkameras 1174 und/oder kabineninternen Überwachungskamerasensoren durchführen. In mindestens einer Ausführungsform werden die kabineninternen Überwachungskamerasensoren vorzugsweise durch ein neuronales Netz überwacht, das auf einer anderen Instanz des SoC 1104 läuft und so konfiguriert ist, dass es Ereignisse in der Kabine erkennt und entsprechend reagiert. In mindestens einer Ausführungsform kann ein kabineninternes System ohne Einschränkung Lippenlesen durchführen, um den Mobilfunkdienst zu aktivieren und einen Anruf zu tätigen, E-Mails zu diktieren, ein Ziel des Fahrzeugs zu ändern, ein Infotainmentsystem des Fahrzeugs und dessen Einstellungen zu aktivieren oder zu ändern oder sprachaktiviertes Surfen im Internet bereitzustellen. In mindestens einer Ausführungsform stehen einem Fahrer bestimmte Funktionen zur Verfügung, wenn ein Fahrzeug in einem autonomen Modus betrieben wird, und sind ansonsten deaktiviert.
  • Der Videobild-Compositor kann eine verbesserte zeitliche Rauschunterdrückung zur räumlichen und zeitlichen Rauschunterdrückung beinhalten. Zum Beispiel gwichtet in mindestens einer Ausführungsform, wenn Bewegung in einem Video auftritt, die Rauschunterdrückung die räumliche Information angemessen und verringert Gewichte der Information, die von benachbarten Bildern geliefert wird. In mindestens einer Ausführungsform, bei der ein Bild oder ein Abschnitt eines Bildes keine Bewegung aufweist, kann die vom Videobildkompositor durchgeführte zeitliche Rauschreduzierung Informationen aus einem vorherigen Bild verwenden, um das Rauschen im aktuellen Bild zu reduzieren.
  • In mindestens einer Ausführungsform kann ein Videobildkompositor auch dazu konfiguriert sein, eine Stereorektifizierung an eingegebenen Stereolinsenbildern auszuführen. In mindestens einer Ausführungsform kann ein Videobildkompositor ferner für die Benutzerschnittstellenzusammensetzung verwendet werden, wenn ein Desktop des Betriebssystems in Verwendung ist und die GPUs 1108 nicht zum kontinuierlichen Rendern neuer Oberflächen erforderlich sind. Wenn die GPUs 1108 eingeschaltet sind und aktiv 3D-Rendering durchführen, kann in mindestens einer Ausführungsform ein Videobildkompositor verwendet werden, um die GPUs 1108 abzuladen, um die Rechenleistung und Reaktionsfähigkeit zu verbessern.
  • In mindestens einer Ausführungsform können ein oder mehrere SoCs 1104 ferner eine serielle Schnittstelle für mobile Industrieprozessorschnittstellen (mobile industry processor interface - „MIPI“) für den Empfang von Video und Input von Kameras, eine Hochgeschwindigkeitsschnittstelle und/oder einen Videoeingangsblock beinhalten, der für Kamera- und verwandte Pixeleingabefunktionen verwendet werden kann. In mindestens einer Ausführungsform können eines oder mehrere der SoCs 1104 ferner Eingabe/Ausgabe-Steuerungen beinhalten, die durch Software gesteuert werden können und zum Empfangen von E/A-Signalen verwendet werden können, die keiner bestimmten Rolle zugewiesen sind.
  • In mindestens einer Ausführungsform können ein oder mehrere SoC der SoCs 1104 ferner eine breite Palette von Peripherieschnittstellen beinhalten, um die Kommunikation mit Peripheriegeräten, Audiocodierern/-decodierern („Codecs“), Leistungsverwaltung und/oder anderen Vorrichtungen zu ermöglichen. In mindestens einer Ausführungsform können die SoCs 1104 verwendet werden, um Daten von Kameras (z. B. über Gigabit-Multimedia-Serial-Link- und Ethernet-Kanäle verbunden), Sensoren (z. B. LIDAR-Sensoren 1164, RADAR-Sensoren 1160 usw., die über Ethernet-Kanäle verbunden sein können), Daten von dem Bus 1102 (z. B. Geschwindigkeit des Fahrzeugs 1100, Lenkradposition usw.), Daten von GNSS-Sensoren 1158 (z. B. über einen Ethernet-Bus oder einen CAN-Bus verbunden) usw. zu verarbeiten. In mindestens einer Ausführungsform können ein oder mehrere SoC der SoCs 1104 ferner dedizierte Massenspeichersteuerungen mit hoher Rechenleistung beinhalten, die eigene DMA-Engines beinhalten können und die verwendet werden können, um CPUs 1106 routinemäßige Datenverwaltungs-Tasks abzunehmen.
  • In mindestens einer Ausführungsform können die SoCs 1104 eine ganzheitliche Plattform mit einer flexiblen Architektur sein, die die Automatisierungslevel 3-5 umfasst und somit eine umfassende funktionale Sicherheitsarchitektur bietet, die Computer-Vision und ADAS-Techniken für Vielfalt und Redundanz effizient nutzt, eine Plattform für einen flexiblen, zuverlässigen Fahrsoftware-Stack bietet, zusammen mit Deep-Learning-Tools. In mindestens einer Ausführungsform können die SoCs 1104 schneller, zuverlässiger und sogar energieeffizienter und platzeffizienter sein als herkömmliche Systeme. Zum Beispiel können in mindestens einer Ausführungsform der/die Beschleuniger 1114, wenn sie mit den CPUs 1106, GPUs 1108 und Datenspeichern 1116 kombiniert sind, eine schnelle, effiziente Plattform für autonome Fahrzeuge der Levels 3-5 bereitstellen.
  • In mindestens einer Ausführungsform können Computer-Vision-Algorithmen auf CPUs ausgeführt werden, die mit einer übergeordneten Programmiersprache wie etwa C konfiguriert werden können, um eine Vielzahl von Verarbeitungsalgorithmen über eine Vielzahl von visuellen Daten auszuführen. In mindestens einer Ausführungsform sind CPUs jedoch oft nicht in der Lage, die Leistungsanforderungen vieler Bildverarbeitungsanwendungen zu erfüllen, wie z. B. die Anforderungen an die Ausführungszeit und den Stromverbrauch. In mindestens einer Ausführungsform sind viele CPUs nicht in der Lage, komplexe Objekterkennungsalgorithmen in Echtzeit auszuführen, die in fahrzeuginternen ADAS-Anwendungen und in praktischen autonomen Fahrzeugen der Levels 3-5 verwendet werden.
  • Die hierin beschriebenen Ausführungsformen ermöglichen es, dass mehrere neuronale Netze simultan und/oder sequenziell durchgeführt und die Ergebnisse miteinander kombiniert werden, um eine autonome Fahrfunktionalität der Levels 3-5 zu ermöglichen. Zum Beispiel kann in mindestens einer Ausführungsform ein CNN, das auf einem DLA oder einer diskreten GPU (z. B. GPUs 1120) ausgeführt wird, eine Text- und Worterkennung beinhalten, die das Lesen und Verstehen von Verkehrsschildern ermöglicht, einschließlich Schildern, für die ein neuronales Netz nicht speziell trainiert worden ist. In mindestens einer Ausführungsform kann ein DLA ferner ein neuronales Netz beinhalten, das dazu in der Lage ist, ein Zeichen zu identifizieren, zu interpretieren und ein semantisches Verständnis davon bereitzustellen und dieses semantische Verständnis an Pfadplanungsmodule weiterzugeben, die auf einem CPU-Komplex laufen.
  • In mindestens einer Ausführungsform können mehrere neuronale Netze gleichzeitig betrieben werden, wie es für die Fahrlevel 3, 4 oder 5 erforderlich ist. In mindestens einer Ausführungsform kann zum Beispiel ein Warnschild mit der Aufschrift „Vorsicht: Blinkende Lichter weisen auf Vereisung hin“ zusammen mit einem elektrischen Licht durch mehrere neuronale Netze unabhängig oder gemeinsam interpretiert werden. In mindestens einer Ausführungsform kann ein derartiges Warnschild selbst durch ein erstes eingesetztes neuronales Netz (z. B. ein neuronales Netz, das trainiert wurde) als Verkehrsschild identifiziert werden und ein Text „Blinkende Lichter weisen auf Vereisung hin“ kann durch ein zweites eingesetztes neuronales Netz interpretiert werden, das eine Pfadplanungssoftware des Fahrzeugs (die vorzugsweise auf einem CPU-Komplex ausgeführt wird) darüber informiert, dass, wenn blinkende Lichter detektiert werden, vereiste Bedingungen vorliegen. In mindestens einer Ausführungsform kann ein blinkendes Licht identifiziert werden, indem ein drittes eingesetztes neuronales Netz über mehrere Einzelbilder hinweg betrieben wird, das eine Pfadplanungssoftware des Fahrzeugs über ein Vorhandensein (oder ein Nichtvorhandensein) von blinkenden Lichtern informiert. In mindestens einer Ausführungsform können alle drei neuronalen Netze simultan laufen, wie etwa innerhalb eines DLA und/oder auf GPUs 1108.
  • In mindestens einer Ausführungsform kann ein CNN zur Gesichtserkennung und Fahrzeugidentifikation Daten von Kamerasensoren verwenden, um die Anwesenheit eines autorisierten Fahrers und/oder Fahrzeugbesitzers zu identifizieren 1100. In mindestens einer Ausführungsform kann eine stets eingeschaltete Sensorverarbeitungs-Engine verwendet werden, um ein Fahrzeug zu entriegeln, wenn sich ein Besitzer einer Fahrertür nähert und Lichter einschaltet, und um in einem Sicherheitsmodus ein derartiges Fahrzeug zu deaktivieren, wenn ein Besitzer ein derartiges Fahrzeug verlässt. Auf diese Weise stellen die SoCs 1104 Sicherheit gegen Diebstahl und/oder Carjacking bereit.
  • In mindestens einer Ausführungsform kann ein CNN zur Erkennung und Identifizierung von Rettungsfahrzeugen Daten von Mikrofonen 1196 verwenden, um Sirenen von Notfahrzeugen zu erkennen und zu identifizieren. In mindestens einer Ausführungsform verwenden die SoCs 1104 ein CNN zum Klassifizieren von Umgebungs- und Stadtgeräuschen sowie zum Klassifizieren von visuellen Daten. In mindestens einer Ausführungsform wird ein CNN, das auf einem DLA läuft, dafür trainiert, eine relative Annäherungsgeschwindigkeit eines Einsatzfahrzeugs zu identifizieren (z. B. durch Verwenden eines Dopplereffekts). In mindestens einer Ausführungsform kann ein CNN auch dafür trainiert werden, Einsatzfahrzeuge zu identifizieren, die für ein lokales Gebiet, in dem ein Fahrzeug betrieben wird, spezifisch sind, wie durch die GNSS-Sensoren 1158 identifiziert. In mindestens einer Ausführungsform versucht ein CNN, wenn es in Europa betrieben wird, europäische Sirenen zu detektieren, und in Nordamerika versucht ein CNN, nur nordamerikanische Sirenen zu identifizieren. In mindestens einer Ausführungsform kann, sobald ein Einsatzfahrzeug detektiert wird, ein Steuerprogramm verwendet werden, um mit der Hilfe der Ultraschallsensoren 1162 eine Sicherheitsroutine für Einsatzfahrzeuge auszuführen, um ein Fahrzeug zu verlangsamen, an einen Straßenrand zu fahren, ein Fahrzeug zu parken und/oder ein Fahrzeug im Leerlauf laufen zu lassen, bis die Einsatzfahrzeuge vorbeigefahren sind.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1100 eine CPU 1118 (z. B. diskrete CPU oder dCPU) enthalten, die über eine Hochgeschwindigkeitsverbindung (z. B. PCIe) mit dem SoC 1104 gekoppelt werden kann. In mindestens einer Ausführungsform können die CPUs 1118 zum Beispiel einen X86-Prozessor beinhalten. Die CPUs 1118 können dazu verwendet werden, eine beliebige einer Vielfalt von Funktionen durchzuführen, einschließlich zum Beispiel des Vermittelns potenziell inkonsistenter Ergebnisse zwischen ADAS-Sensoren und SoCs 1104 und/oder des Überwachens des Status und Zustands der Steuerungen 1136 und/oder eines Infotainmentsystems auf einem Chip („Infotainment-SoC“) 1130.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1100 GPUs 1120 (z. B. diskrete GPUs oder dGPUs) beinhalten, die über eine Hochgeschwindigkeitszusammenschaltung (z. B. NVLINK-Kanal von NVIDIA) an die SoCs 1104 gekoppelt sein können. In mindestens einer Ausführungsform können die GPUs 1120 eine zusätzliche Funktionalität für künstliche Intelligenz bereitstellen, wie etwa durch Ausführen redundanter und/oder unterschiedlicher neuronaler Netze, und sie können zum Trainieren und/oder Aktualisieren neuronaler Netze mindestens zum Teil auf Grundlage von Eingaben (z. B. Sensordaten) von Sensoren eines Fahrzeugs 1100 verwendet werden.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1100 ferner die Netzschnittstelle 1124 beinhalten, die ohne Einschränkung drahtlose Antennen 1126 beinhalten kann (z. B. eine oder mehrere drahtlose Antennen für unterschiedliche Kommunikationsprotokolle, wie etwa eine Mobilfunkantenne, eine Bluetooth-Antenne usw.). In mindestens einer Ausführungsform kann die Netzschnittstelle 1124 verwendet werden, um eine drahtlose Verbindungsfähigkeit mit Internet-Cloud-Diensten (z. B. mit Servern und/oder anderen Netzvorrichtungen), mit anderen Fahrzeugen und/oder mit Rechenvorrichtungen (z. B. Client-Vorrichtungen von Fahrgästen) zu ermöglichen. In mindestens einer Ausführungsform kann zum Kommunizieren mit anderen Fahrzeugen eine direkte Verknüpfung zwischen dem Fahrzeug 110 und einem anderen Fahrzeug hergestellt werden und/oder eine indirekte Verknüpfung (z. B. über Netze und über das Internet) hergestellt werden. In mindestens einer Ausführungsform können direkte Verknüpfungen unter Verwendung einer Fahrzeug-zu-Fahrzeug-Kommunikationsverknüpfung hergestellt werden. In mindestens einer Ausführungsform kann eine Fahrzeug-zu-Fahrzeug-Kommunikationsverknüpfung dem Fahrzeug 1100 Informationen über Fahrzeuge in der Nähe des Fahrzeugs 1100 bereitstellen (z. B. Fahrzeuge vor, neben und/oder hinter dem Fahrzeug 1100). In mindestens einer Ausführungsform kann eine derartige vorgenannte Funktionalität Teil einer kooperativen adaptiven Geschwindigkeitssteuerungsfunktionalität des Fahrzeugs 1100 sein.
  • In mindestens einer Ausführungsform kann die Netzschnittstelle 1124 ein SoC beinhalten, das eine Modulations- und Demodulationsfunktionalität bereitstellt und es den Steuerungen 1136 ermöglicht, über drahtlose Netze zu kommunizieren. In mindestens einer Ausführungsform kann die Netzschnittstelle 1124 ein Hochfrequenz-Frontend für die Aufwärtskonvertierung vom Basisband auf die Hochfrequenz und die Abwärtskonvertierung von der Hochfrequenz auf das Basisband beinhalten. In mindestens einer Ausführungsform können die Frequenzkonvertierungen auf eine beliebige technisch machbare Weise durchgeführt werden. Beispielsweise können Frequenzumwandlungen durch bekannte Verfahren und/oder unter Verwendung von Superheterodyn-Verfahren durchgeführt werden. In mindestens einer Ausführungsform kann die Hochfrequenz-Front-End-Funktionalität durch einen separaten Chip bereitgestellt werden. In mindestens einer Ausführungsform können die Netzschnittstellen eine drahtlose Funktionalität zum Kommunizieren über LTE, WCDMA, UMTS, GSM, CDMA2000, Bluetooth, Bluetooth LE, Wi-Fi, Z-Wave, ZigBee, LoRaWAN und/oder andere drahtlose Protokolle beinhalten.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1100 ferner einen oder mehrere Datenspeicher 1128 beinhalten, die ohne Einschränkung chipexternen (z. B. außerhalb der SoCs 1104 liegenden) Speicher beinhalten können. In mindestens einer Ausführungsform kann der/können die Datenspeicher 1128 ohne Einschränkung ein oder mehrere Speicherelemente beinhalten, darunter RAM, SRAM, dynamischen Direktzugriffsspeicher (dynamic random-access memory - „DRAM“), Video-Direktzugriffsspeicher (video random-access memory - „VRAM“), Flash-Speicher, Festplatten und/oder andere Komponenten und/oder Vorrichtungen, die mindestens ein Datenbit speichern können.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1100 ferner GNSS-Sensoren 1158 (z. B. GPS- und/oder unterstützte GPS-Sensoren) beinhalten, um bei Funktionen zur Kartierung, Wahrnehmung, Erzeugung des Belegungsgitters und/oder Pfadplanung zu helfen. In mindestens einer Ausführungsform kann eine beliebige Anzahl von GNSS-Sensoren 1158 verwendet werden, einschließlich zum Beispiel und ohne Einschränkung eines GPS unter Verwendung eines USB-Steckers mit einer Ethernet-zu-Seriell-Brücke (z. B. RS-232-Brücke).
  • In mindestens einer Ausführungsform kann das Fahrzeug 1100 ferner RADAR-Sensoren 1160 beinhalten. In mindestens einer Ausführungsform können die RADAR-Sensoren 1160 durch das Fahrzeug 1100 zur Fahrzeugdetektion mit großer Reichweite verwendet werden, auch bei Dunkelheit und/oder schlechten Wetterbedingungen. In mindestens einer Ausführungsform können die RADAR-Funktionssicherheitslevel ASIL B sein. In mindestens einer Ausführungsform können die RADAR-Sensoren 1160 einen CAN-Bus und/oder den Bus 1102 (z. B. zum Übertragen der durch die RADAR-Sensoren 1160 erzeugten Daten) zum Steuern von und Zugriff auf Objektverfolgungsdaten verwenden, wobei in einigen Beispielen Zugriff auf Ethernet-Kanäle zum Zugreifen auf Rohdaten besteht. In mindestens einer Ausführungsform kann eine große Vielfalt von RADAR-Sensortypen verwendet werden. Zum Beispiel und ohne Einschränkung können die RADAR-Sensoren 1160 für die Verwendung als Front-, Heck- und Seiten-RADAR geeignet sein. In mindestens einer Ausführungsform handelt es sich bei einem oder mehreren Sensoren der RADAR-Sensoren 1160 um einen Impuls-Doppler-RADAR-Sensor.
  • In mindestens einer Ausführungsform können die RADAR-Sensoren 1160 unterschiedliche Konfigurationen beinhalten, wie etwa mit großer Reichweite und schmalem Sichtfeld, mit geringer Reichweite und breitem Sichtfeld, mit seitlicher Abdeckung mit kurzer Reichweite usw. In mindestens einer Ausführungsform kann das RADAR mit großer Reichweite für die adaptive Geschwindigkeitssteuerungsfunktionalität verwendet werden. In mindestens einer Ausführungsform können RADAR-Systeme mit großer Reichweite ein breites Sichtfeld bereitstellen, das durch zwei oder mehr unabhängige Scans realisiert wird, wie etwa innerhalb einer Reichweite von 250 m (Metern). In mindestens einer Ausführungsform können die RADAR-Sensoren 1160 dabei helfen, zwischen statischen und sich bewegenden Objekten zu unterscheiden, und durch das ADAS-System 1138 für den Notbremsassistenten und die Vorwärtskollisionswarnung verwendet werden. In mindestens einer Ausführungsform können die Sensoren 1160, die in einem RADAR-System mit großer Reichweite enthalten sind, ohne Einschränkung ein monostatisches multimodales RADAR mit mehreren (z. B. sechs oder mehr) festen RADAR-Antennen und einer Hochgeschwindigkeits-CAN- und FlexRay-Schnittstelle beinhalten. In mindestens einer Ausführungsform mit sechs Antennen können vier zentrale Antennen ein fokussiertes Strahlenmuster erzeugen, das dazu ausgestaltet ist, die Umgebung des Fahrzeugs 1100 bei höheren Geschwindigkeiten mit minimalen Störungen durch den Verkehr auf den benachbarten Fahrspuren aufzuzeichnen. In mindestens einer Ausführungsform können zwei weitere Antennen das Sichtfeld erweitern, wodurch es möglich ist, Fahrzeuge, die in eine Fahrspur des Fahrzeugs 1100 einfahren oder diese verlassen, schnell zu detektieren.
  • In mindestens einer Ausführungsform können RADAR-Systeme mit mittlerer Reichweite beispielsweise eine Reichweite von bis zu 160 m (vorne) oder 80 m (hinten) und ein Sichtfeld von bis zu 42 Grad (vorne) oder 150 Grad (hinten) beinhalten. In mindestens einer Ausführungsform können RADAR-Systeme mit kurzer Reichweite ohne Einschränkung eine beliebige Anzahl von RADAR-Sensoren 1160 beinhalten, die für die Installation an beiden Enden eines hinteren Stoßfängers ausgestaltet sind. Wenn das RADAR-Sensorsystem an beiden Enden eines hinteren Stoßfängers installiert ist, kann es in mindestens einer Ausführungsform zwei Strahlen erzeugen, die tote Winkel in einer rückwärtigen Richtung und neben einem Fahrzeug konstant überwachen. In mindestens einer Ausführungsform können RADAR-Systeme mit kurzer Reichweite in dem ADAS-System 1138 zur Detektion des toten Winkels und/oder zur Spurwechselassistenz verwendet werden.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1100 ferner Ultraschallsensoren 1162 beinhalten. In mindestens einer Ausführungsform können die Ultraschallsensoren 1162, die an einer vorderen, einer hinteren und/oder seitlichen Stelle des Fahrzeugs 1100 positioniert sein können, für die Einparkhilfe und/oder zum Erstellen und Aktualisieren eines Belegungsgitters verwendet werden. In mindestens einer Ausführungsform kann eine große Vielfalt von Ultraschallsensoren 1162 verwendet werden und können unterschiedliche Ultraschallsensoren 1162 für unterschiedliche Detektionsreichweiten (z. B. 2,5 m, 4 m) verwendet werden. In mindestens einer Ausführungsform können die Ultraschallsensoren 1162 bei funktionellen Sicherheitslevels von ASIL B betrieben werden.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1100 LIDAR-Sensoren 1164 beinhalten. In mindestens einer Ausführungsform können die LIDAR-Sensoren 1164 zur Objekt- und Fußgängerdetektion, Notbremsung, Kollisionsvermeidung und/oder für andere Funktionen verwendet werden. In mindestens einer Ausführungsform können die LIDAR-Sensoren 1164 bei dem funktionellen Sicherheitslevel ASIL B betrieben werden. In mindestens einer Ausführungsform kann das Fahrzeug 1100 mehrere LIDAR-Sensoren 1164 (z. B. zwei, vier, sechs usw.) beinhalten, die einen Ethernet-Kanal verwenden können (um z. B. einem Gigabit-Ethernet-Switch Daten bereitzustellen).
  • In mindestens einer Ausführungsform können die LIDAR-Sensoren 1164 dazu 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 handelsübliche LIDAR-Sensoren 1164 zum Beispiel eine beworbene Reichweite von ungefähr 100 m aufweisen, mit einer Genauigkeit von 2 cm bis 3 cm und mit Unterstützung für eine 100 Mbps-Ethernet-Verbindung. In mindestens einer Ausführungsform können ein oder mehrere nicht hervorstehende LIDAR-Sensoren verwendet werden. In einer derartigen Ausführungsform können die LIDAR-Sensoren 1164 eine kleine Vorrichtung beinhalten, die in eine vordere, eine hintere, eine seitliche Stelle und/oder eine Eckstelle des Fahrzeugs 1100 eingebettet sein kann. In mindestens einer Ausführungsform können die LIDAR-Sensoren 1164 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 200 m selbst bei Objekten mit niedrigem Reflexionsvermögen bereitstellen. In mindestens einer Ausführungsform können die an der Front montierten LIDAR-Sensoren 1164 für ein horizontales Sichtfeld zwischen 45 Grad und 135 Grad konfiguriert sein.
  • In mindestens einer Ausführungsform können auch LIDAR-Technologien wie 3D-Flash-LIDAR verwendet werden. In mindestens einer Ausführungsform verwendet 3D-Flash-LIDAR einen Laserblitz als Übertragungsquelle, um die Umgebung des Fahrzeugs 1100 bis zu ungefähr 200 m zu erleuchten. In mindestens einer Ausführungsform umfasst eine Flash-LIDAR-Einheit ohne Einschränkung einen Rezeptor, der die Laserimpuls-Laufzeit und das reflektierte Licht an jedem Pixel aufzeichnet, was wiederum einer Reichweite von dem Fahrzeug 1100 zu Objekten entspricht. In mindestens einer Ausführungsform kann Blitz-LIDAR ermöglichen, dass mit jedem Laserblitz hochgenaue und verzerrungsfreie Bilder der Umgebung erzeugt werden. In mindestens einer Ausführungsform können vier Flash-LIDAR-Sensoren eingesetzt werden, einer an jeder Seite des Fahrzeugs 1100. In mindestens einer Ausführungsform beinhalten 3D-Blitz-LIDAR-Systeme ohne Einschränkung eine Festkörper-3D-Staring-Array-LIDAR-Kamera ohne bewegliche Teile außer einem Lüfter (z. B. eine nicht scannende LIDAR-Vorrichtung). In mindestens einer Ausführungsform kann die Flash-LIDAR-Vorrichtung einen 5-Nanosekunden-Laserimpuls der Klasse I (augensicher) pro Bild verwenden und das reflektierte Laserlicht als 3D-Reichweitenpunktwolke und gemeinsam registrierte Intensitätsdaten erfassen.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1100 ferner IMU-Sensoren 1166 beinhalten. In mindestens einer Ausführungsform können die IMU-Sensoren 1166 in einer Mitte einer Hinterachse des Fahrzeugs 1100 angeordnet sein. In mindestens einer Ausführungsform können die IMU-Sensoren 1166 zum Beispiel und ohne Einschränkung Beschleunigungsmesser, Magnetometer, Gyroskope, einen Magnetkompass, Magnetkompasse und/oder andere Sensortypen beinhalten. In mindestens einer Ausführungsform, wie etwa bei sechsachsigen Anwendungen, können die IMU-Sensoren 1166 ohne Einschränkung Beschleunigungsmesser und Gyroskope beinhalten. In mindestens einer Ausführungsform, wie etwa bei neunachsigen Anwendungen, können die IMU-Sensoren 1166 ohne Einschränkung Beschleunigungsmesser, Gyroskope und Magnetometer beinhalten.
  • In mindestens einer Ausführungsform können die IMU-Sensoren 1166 als miniaturisiertes GPS-gestütztes Trägheitsnavigationssystem (GPS-Aided Inertial Navigation System - „GPS/INS“) mit hoher Rechenleistung implementiert sein, das Trägheitssensoren von mikroelektromechanischen Systemen (micro-electro-mechanical systems - „MEMS“), einen hochempfindlichen GPS-Empfänger und weiterentwickelte Kalman-Filteralgorithmen kombiniert, um Schätzungen von Position, Geschwindigkeit und Lage bereitzustellen. In mindestens einer Ausführungsform können die IMU-Sensoren 1166 es dem Fahrzeug 1100 ermöglichen, seinen Kurs zu schätzen, ohne dass Eingaben von einem Magnetsensor erforderlich sind, indem Änderungen der Geschwindigkeit direkt von einem GPS beobachtet und an die IMU-Sensoren 1166 korreliert werden. In mindestens einer Ausführungsform können die IMU-Sensoren 1166 und GNSS-Sensoren 1158 in einer einzelnen integrierten Einheit kombiniert sein.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1100 mit Mikrofonen 1196 ausgestattet sein, die in und/oder um das Fahrzeug 1100 platziert sind. In mindestens einer Ausführungsform können die Mikrofone 1196 unter anderem zur Detektion und Identifizierung von Einsatzfahrzeugen verwendet werden.
  • Das Fahrzeug 1100 kann außerdem eine beliebige Anzahl von Kameratypen umfassen, einschließlich Stereokameras 1168, Weitwinkelkameras 1170, Infrarotkameras 1172, Rundumkameras 1174, Langstreckenkameras 1198 und Mittelstreckenkameras 1176 und/oder andere Kameratypen. In mindestens einer Ausführungsform können Kameras verwendet werden, um Bilddaten um die gesamte Peripherie des Fahrzeugs 1100 herum zu erfassen. Welche Typen von Kameras verwendet werden, hängt in mindestens einer Ausführungsform von dem Fahrzeug 1100 ab. In mindestens einer Ausführungsform kann eine beliebige Kombination von Kameratypen verwendet werden, um die notwendige Abdeckung um das Fahrzeug 1100 herum bereitzustellen. In mindestens einer Ausführungsform kann eine Anzahl von eingesetzten Kameras in Abhängigkeit von der Ausführungsform unterschiedlich sein. In mindestens einer Ausführungsform könnte das Fahrzeug 1100 zum Beispiel sechs Kameras, sieben Kameras, zehn Kameras, zwölf Kameras oder eine andere Anzahl von Kameras beinhalten. In mindestens einer Ausführungsform können Kameras beispielsweise und ohne Einschränkung Gigabit-Multimedia-Serial-Link- („GMSL“-) und/oder Gigabit-Ethernet-Kommunikation unterstützen. In mindestens einer Ausführungsform könnte jede Kamera so sein wie bereits hierin in Bezug auf 11A und 11 B detaillierter beschrieben.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1100 ferner Vibrationssensoren 1142 beinhalten. In mindestens einer Ausführungsform können die Schwingungssensoren 1142 Schwingungen von Komponenten des Fahrzeugs 1100, wie etwa Achsen, messen. Zum Beispiel können in mindestens einer Ausführungsform Änderungen der Vibrationen eine Änderung des Straßenbelags angeben. Wenn zwei oder mehr Schwingungssensoren 1142 verwendet werden, können in mindestens einer Ausführungsform die Unterschiede zwischen den Schwingungen verwendet werden, um die Reibung oder den Schlupf des Straßenbelags zu bestimmen (z. B., wenn ein Unterschied der Schwingung zwischen einer leistungsbetriebenen Achse und einer sich frei drehenden Achse besteht).
  • In mindestens einer Ausführungsform kann das Fahrzeug 1100 ADAS-System 1138 beinhalten. In mindestens einer Ausführungsform kann das ADAS-System 1138 in einigen Beispielen ohne Einschränkung ein SoC beinhalten. In mindestens einer Ausführungsform kann das ADAS-System 1138 ohne Einschränkung eine beliebige Anzahl und Kombination eines Systems zur autonomen/adaptiven/automatischen Geschwindigkeitssteuerung (autonomous/adaptive/automatic cruise control - „ACC“), eines Systems zur kooperativen adaptiven Geschwindigkeitssteuerung (cooperative adaptive cruise control - „CACC“), eines Systems zur Vorwärtszusammenstoßwarnung (forward crash warning - „FCW“), eines automatischen Systems zur Notbremsung („AEB“), eines Systems zur Spurverlassenswarnung („LDW“), eines Systems zur Spurhalteassistenz (lane keep assist - „LKA“), eines Systems zur Totwinkelwarnung (blind spot warning - „BSW“), eines Systems zur Querverkehrswarnung (rear cross-traffic warning - „RCTW“), eines Systems zur Kollisionswarnung (collision warning - „CW“), eines Systems zur Spurzentrierung (lane centering - „LC“) und/oder anderer Systeme, Merkmale und/oder Funktionen beinhalten.
  • In mindestens einer Ausführungsform kann das ACC-System RADAR-Sensoren 1160, LIDAR-Sensoren 1164 und/oder eine beliebige Anzahl von Kameras verwenden. In mindestens einer Ausführungsform kann das ACC-System ein Längs-ACC-System und/oder ein Quer-ACC-System beinhalten. In mindestens einer Ausführungsform überwacht und steuert ein Längs-ACC-System den Abstand zu einem anderen Fahrzeug, das sich unmittelbar vor dem Fahrzeug 1100 befindet, und es stellt die Geschwindigkeit des Fahrzeugs 1100 automatisch ein, um einen sicheren Abstand zu vorausfahrenden Fahrzeugen einzuhalten. In mindestens einer Ausführungsform führt ein Quer-ACC-System eine Abstandshaltung durch und es rät dem Fahrzeug 1100, die Fahrspur zu wechseln, wenn dies notwendig ist. In mindestens einer Ausführungsform steht eine Quer-ACC mit anderen ADAS-Anwendungen, wie etwa LC und CW, in Bezug.
  • In mindestens einer Ausführungsform verwendet ein CACC-System Informationen von anderen Fahrzeugen, die über die Netzschnittstelle 1124 und/oder die Funkantennen 1126 von anderen Fahrzeugen über eine drahtlose Verknüpfung oder indirekt über eine Netzverbindung (z. B. über das Internet) empfangen werden können. In mindestens einer Ausführungsform können direkte Verknüpfungen durch eine Fahrzeug-zu-Fahrzeug(„F-F“)-Kommunikationsverknüpfung bereitgestellt werden, während indirekte Verknüpfungen durch eine Infrastruktur-zu-Fahrzeug(„I-F“)-Kommunikationsverknüpfung bereitgestellt werden können. Im Allgemeinen stellt das F-F-Kommunikationskonzept Informationen über unmittelbar vorausfahrende Fahrzeuge (z. B. Fahrzeuge, die sich unmittelbar vor dem und auf derselben Spur wie das Fahrzeug 1100 befinden) bereit, während die I-F-Kommunikation Informationen über den weiter entfernt vorausfahrenden Verkehr bereitstellt. In mindestens einer Ausführungsform kann ein CACC-System entweder eines oder beides von I-F- und F-F-Informationsquellen beinhalten. In mindestens einer Ausführungsform kann ein CACC-System angesichts der Informationen über Fahrzeuge vor dem Fahrzeug 1100 zuverlässiger sein und hat es das Potenzial, den Gleichmäßigkeit des Verkehrsfluss zu verbessern und Staus auf der Straße zu reduzieren.
  • In mindestens einer Ausführungsform ist ein FCW-System so konzipiert, dass es den Fahrer vor einer Gefahr warnt, so dass der Fahrer Korrekturmaßnahmen ergreifen kann. In mindestens einer Ausführungsform verwendet ein FCW-System eine nach vorn gerichtete Kamera und/oder RADAR-Sensoren 1160, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, die elektrisch sind, um eine Rückmeldung des Fahrers bereitzustellen, wie z. B. eine Anzeige, ein Lautsprecher und/oder eine vibrierende Komponente. In mindestens einer Ausführungsform kann ein FCW-System eine Warnung bereitstellen, wie etwa in Form eines Tons, einer visuellen Warnung, einer Schwingung und/oder eines schnellen Bremsimpulses.
  • In mindestens einer Ausführungsform detektiert ein AEB-System eine drohende Vorwärtskollision mit einem anderen Fahrzeug oder einem anderen Objekt und es kann automatisch die Bremsen betätigen, falls ein Fahrer nicht innerhalb eines vorgegebenen Zeit- oder Abstandsparameters eine korrigierende Maßnahme ergreift. In mindestens einer Ausführungsform kann das AEB-System nach vorn gerichtete Kameras und/oder RADAR-Sensoren 1160 verwenden, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind. Wenn ein AEB-System eine Gefahr detektiert, warnt es in mindestens einer Ausführungsform typischerweise zuerst einen Fahrer, um eine korrigierende Maßnahme zu ergreifen, um eine Kollision zu vermeiden, und falls dieser Fahrer keine korrigierende Maßnahme ergreift, kann dieses AEB-System automatisch die Bremsen in dem Bestreben betätigen, einen Aufprall einer vorhergesagten Kollision zu verhindern oder mindestens abzuschwächen. In mindestens einer Ausführungsform kann das AEB-System Techniken wie etwa dynamische Bremsunterstützung und/oder Bremsung aufgrund eines bevorstehenden Zusammenstoßes beinhalten.
  • In mindestens einer Ausführungsform stellt ein LDW-System optische, akustische und/oder taktile Warnungen bereit, wie Lenkrad- oder Sitzvibrationen, um den Fahrer zu warnen, wenn das Fahrzeug 1100 die Fahrbahnmarkierungen überquert. In mindestens einer Ausführungsform wird ein LDW-System nicht aktiviert, wenn ein Fahrer ein absichtliches Verlassen der Fahrspur angibt, wie etwa durch Betätigen des Blinkers. In mindestens einer Ausführungsform kann ein LDW-System nach vorn und zur Seite gerichtete Kameras verwenden, die an einen dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, das heißt elektrisch gekoppelt, um eine Rückmeldung des Fahrers bereitzustellen, wie etwa eine Anzeige, einen Lautsprecher und/oder eine vibrierende Komponente. In mindestens einer Ausführungsform ist ein LKA-System eine Variation des LDW-Systems. In mindestens einer Ausführungsform stellt ein LKA-System eine Lenkeingabe oder eine Bremsung bereit, um das Fahrzeug 1100 zu korrigieren, wenn das Fahrzeug 1100 beginnt, seine Fahrspur zu verlassen.
  • In mindestens einer Ausführungsform erkennt und warnt ein BSW-System den Fahrer vor Fahrzeugen, die sich im toten Winkel des Fahrzeugs befinden. In mindestens einer Ausführungsform kann das BSW-System einen visuellen, akustischen und/oder taktilen Alarm bereitstellen, um anzugeben, dass das Einfädeln in oder Wechseln von Fahrspuren unsicher ist. In mindestens einer Ausführungsform kann ein BSW-System eine zusätzliche Warnung bereitstellen, wenn ein Fahrer einen Blinker verwendet. In mindestens einer Ausführungsform kann ein BSW-System nach hinten gerichtete Kameras und/oder RADAR-Sensoren 1160 verwenden, die an einen dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, das heißt elektrisch an eine Rückmeldung des Fahrers gekoppelt, wie etwa eine Anzeige, einen Lautsprecher und/oder eine vibrierende Komponente.
  • In mindestens einer Ausführungsform kann ein RCTW-System eine visuelle, akustische und/oder taktile Benachrichtigung bereitstellen, wenn beim Rückwärtsfahren des Fahrzeugs 1100 ein Objekt außerhalb einer Reichweite der Rückfahrkamera erkannt wird. In mindestens einer Ausführungsform beinhaltet ein RCTW-System ein AEB-System, um sicherzustellen, dass Fahrzeugbremsen betätigt werden, um einen Zusammenstoß zu vermeiden. In mindestens einer Ausführungsform kann ein RCTW-System einen oder mehrere nach hinten gerichtete RADAR-Sensoren 1160 verwenden, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, die elektrisch gekoppelt sind, um eine Rückmeldung des Fahrers bereitzustellen, wie z. B. eine Anzeige, ein Lautsprecher und/oder eine vibrierende Komponente.
  • In mindestens einer Ausführungsform können herkömmliche ADAS-Systeme zu falsch-positiven Ergebnissen neigen, die für den Fahrer ärgerlich und ablenkend sein können, aber typischerweise nicht katastrophal sind, weil herkömmliche ADAS-Systeme einen Fahrer warnen und dem Fahrer die Möglichkeit geben, zu entscheiden, ob eine Sicherheitsbedingung wirklich vorliegt und entsprechend zu handeln. In mindestens einer Ausführungsform entscheidet das Fahrzeug 1100 im Falle von widersprüchlichen Ergebnissen selbst, ob das Ergebnis eines primären Computers oder eines sekundären Computers (z. B. einer ersten Steuerung oder einer zweiten Steuerung der Steuerungen 1136) zu beachten ist. In mindestens einer Ausführungsform kann das ADAS-System 1138 zum Beispiel ein Reserve- und/oder sekundärer Computer sein, der einem Rationalitätsmodul eines Reserve-Computers Wahrnehmungsinformationen bereitstellt. In mindestens einer Ausführungsform kann ein Rationalitätsmonitor eines Reserve-Computers redundante diverse Software auf Hardware-Komponenten ausführen, um Fehler in der Wahrnehmung und bei dynamischen Fahr-Tasks zu detektieren. In mindestens einer Ausführungsform können die Ausgaben des ADAS-Systems 1138 für eine Kontroll-MCU bereitgestellt werden. Falls Ausgaben aus einem primären Computer und Ausgaben aus einem sekundären Computer einander widersprechen, bestimmt eine Überwachungs-MCU in mindestens einer Ausführungsform, wie der Widerspruch beizulegen ist, um einen sicheren Betrieb sicherzustellen.
  • In mindestens einer Ausführungsform kann ein primärer Computer konfiguriert werden, um einer übergeordneten MCU einen Konfidenzwert bereitzustellen, der anzeigt, wie groß die Konfidenz des primären Computers in ein ausgewähltes Ergebnis ist. In mindestens einer Ausführungsform kann die überwachende MCU der Anweisung des Primärcomputers folgen, wenn der Vertrauenswert einen Schwellenwert überschreitet, unabhängig davon, ob der Sekundärcomputer ein widersprüchliches oder inkonsistentes Ergebnis liefert. In mindestens einer Ausführungsform kann eine übergeordnete MCU, wenn ein Konfidenzwert einen Schwellenwert nicht erreicht und primäre und sekundäre Computer unterschiedliche Ergebnisse (z. B. einen Konflikt) anzeigen, zwischen den Computern vermitteln, um ein angemessenes Ergebnis zu bestimmen.
  • In mindestens einer Ausführungsform kann die übergeordnete MCU kann konfiguriert sein, um ein neuronales Netz auszuführen, das ausgebildet und konfiguriert ist, um basierend auf den Ausgaben des primären Computers und den Ausgaben des sekundären Computers Bedingungen zu bestimmen, unter denen der sekundäre Computer Fehlalarme ausgibt. In mindestens einer Ausführungsform können die neuronalen Netze in einer übergeordneten MCU lernen, wann die Ausgabe eines sekundären Computers vertrauenswürdig ist und wann nicht. Zum Beispiel können in mindestens einer Ausführungsform, wenn es sich bei dem sekundären Computer beispielsweise um ein RADAR-basiertes FCW-System handelt, neuronale Netze in dieser übergeordneten MCU erkennen, wann ein FCW-System metallische Objekte identifiziert, die tatsächlich keine Gefahren darstellen, wie z. B. ein Drainagerost oder eine Schachtabdeckung, die einen Alarm auslöst. In mindestens einer Ausführungsform kann ein neuronales Netz in einer übergeordneten MCU lernen, den LDW außer Kraft zu setzen, wenn ein sekundäres Computersystem ein kamerabasiertes LDW-System ist und ein Verlassen der Spur tatsächlich das sicherste Manöver ist. In mindestens einer Ausführungsform kann eine Überwachungs-MCU mindestens eines von einem DLA oder einer GPU beinhalten, der/die zum Ausführen von neuronalen Netzen mit assoziiertem Speicher geeignet ist. In mindestens einer Ausführungsform kann eine Überwachungs-MCU eine Komponente eines oder mehrerer SoCs 1104 umfassen und/oder als solche enthalten sein.
  • In mindestens einer Ausführungsform kann das ADAS-System 1138 einen sekundären Computer beinhalten, der die ADAS-Funktionalität nach den herkömmlichen Regeln der Computervision ausführt. In mindestens einer Ausführungsform kann dieser sekundäre Computer klassische Regeln des maschinellen Sehens (wenn-dann) verwenden und das Vorhandensein von neuronalen Netzen in einer Überwachungs-MCU die Zuverlässigkeit, Sicherheit und Rechenleistung verbessern. In mindestens einer Ausführungsform wird das Gesamtsystem durch die unterschiedliche Implementierung und die absichtliche Nichtidentität fehlertoleranter, insbesondere gegenüber Fehlern, die durch Softwarefunktionen (oder Software-Hardware-Schnittstellen) verursacht werden. Falls zum Beispiel in mindestens einer Ausführungsform ein Software-Bug oder -Fehler in der auf einem primären Computer laufenden Software vorliegt und ein nicht identischer Software-Code, der auf einem sekundären Computer läuft, ein konsistentes Gesamtergebnis bereitstellt, dann kann eine Überwachungs-MCU eine größere Konfidenz dafür aufweisen, dass ein Gesamtergebnis korrekt ist und ein Bug in der Software oder Hardware auf diesem primären Computer keinen wesentlichen Fehler verursacht.
  • In mindestens einer Ausführungsform kann eine Ausgabe des ADAS-Systems 1138 in den Wahrnehmungsblock des primären Computers und/oder in den Block für dynamische Fahraufgaben des primären Computers eingespeist werden. Falls das ADAS-System 1138 zum Beispiel eine Vorwärtszusammenstoßwarnung aufgrund eines unmittelbar vorausliegenden Objekts angibt, kann ein Wahrnehmungsblock in mindestens einer Ausführungsform diese Information beim Identifizieren von Objekten verwenden. In mindestens einer Ausführungsform kann ein sekundärer Computer ein eigenes neuronales Netz aufweisen, das trainiert wird und somit ein Risiko von falsch positiven Ergebnissen reduziert, wie hierin beschrieben.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1100 ferner einen Infotainment-SoC 1130 (z. B. ein bordeigenes Infotainment-System (IVI)) beinhalten. Obwohl als es als ein SoC veranschaulicht und beschrieben ist, kann das Infotainment-SoC 1130 in mindestens einer Ausführungsform kein SoC sein und ohne Einschränkung zwei oder mehr diskrete Komponenten beinhalten. In mindestens einer Ausführungsform kann das Infotainment-SoC 1130 ohne Einschränkung eine Kombination aus Hardware und Software beinhalten, die verwendet werden kann, um dem Fahrzeug 1100 Audio (z. B. Musik, einen persönlichen digitalen Assistenten, Navigationsanweisungen, Nachrichten, Radio usw.), Video (z. B. TV, Filme, Streaming usw.), Telefon (z. B. Freisprechen), Netzverbindungsfähigkeit (z. B. LTE, WiFi usw.) und/oder Informationsdienste (z. B. Navigationssysteme, Rückwärtseinparkhilfe, ein Radiodatensystem, fahrzeugbezogene Informationen wie etwa Kraftstofffüllstand, insgesamt zurückgelegte Strecke, Bremskraftstofffüllstand, Ölfüllstand, Tür öffnen/schließen, Luftfilterinformationen usw.) bereitzustellen. Das Infotainment-SoC 1130 könnte zum Beispiel Radios, Plattenspieler, Navigationssysteme, Videowiedergabevorrichtungen, USB- und Bluetooth-Verbindungsfähigkeit, Carputer, In-Car-Entertainment, WiFi, Audiosteuerelemente am Lenkrad, ein Freisprech-Sprachsteuerelement, eine Heads-up-Anzeige (heads-up display - „HUD“), eine HMI-Anzeige 1134, eine Telematikvorrichtung, ein Steuerfeld (z. B. zum Steuern von und/oder Interagieren mit verschiedenen Komponenten, Merkmalen und/oder Systemen) und/oder andere Komponenten beinhalten. In mindestens einer Ausführungsform kann das Infotainment-SoC 1130 ferner verwendet werden, um Benutzern des Fahrzeugs 1100 Informationen (z. B. visuell und/oder akustisch) bereitzustellen, wie etwa Informationen von dem ADAS-System 1138, Informationen zum autonomen Fahren, wie etwa geplante Fahrzeugmanöver, Trajektorien, Umgebungsinformationen (z. B. Kreuzungsinformationen, Fahrzeuginformationen, Straßeninformationen usw.) und/oder andere Informationen.
  • In mindestens einer Ausführungsform kann der Infotainment-SoC 1130 eine beliebige Menge und Art von GPU-Funktionalität beinhalten. In mindestens einer Ausführungsform kann das Infotainment-SoC 1130 über den Bus 1102 mit anderen Vorrichtungen, Systemen und/oder Komponenten des Fahrzeugs 1100 kommunizieren. In mindestens einer Ausführungsform kann das Infotainment-SoC 1130 an eine Überwachungs-MCU gekoppelt sein, sodass eine GPU eines Infotainment-Systems einige Selbstfahrfunktionen ausführen kann, falls die primären Steuerungen 1136 (z. B. primäre und/oder Reserve-Computer des Fahrzeugs 1100) ausfallen. In mindestens einer Ausführungsform kann das Infotainment-SoC 1130 das Fahrzeug 1100 in einen Modus des Fahrens zu einem sicheren Halt versetzen, wie hierin beschrieben.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1100 außerdem ein Kombiinstrument 1132 (z. B. ein digitales Armaturenbrett, ein elektronisches Kombiinstrument, eine digitale Instrumententafel usw.) enthalten. In mindestens einer Ausführungsform kann das Kombiinstrument 1132 ohne Einschränkung eine Steuerung und/oder einen Supercomputer (z. B. eine diskrete Steuerung oder einen diskreten Supercomputer) beinhalten. In mindestens einer Ausführungsform kann das Kombiinstrument 1132 ohne Einschränkung eine beliebige Anzahl und Kombination eines Satzes von Messausrüstung beinhalten, wie etwa Geschwindigkeitsmesser, Kraftstoffstand, Öldruck, Drehzahlmesser, Wegstreckenzähler, Blinker, Schaltknüppelpositionsangabe, Sicherheitsgurt-Warnleuchten, Feststellbremsen-Warnleuchten, Motorfehlfunktionsleuchten, Informationen über ergänzende Rückhaltesysteme (z. B. Airbags), Beleuchtungssteuerelemente, Sicherheitssystemsteuerelemente, Navigationsinformationen usw. In einigen Beispielen können Informationen angezeigt und/oder von dem Infotainment-SoC 1130 und dem Kombiinstrument 1132 gemeinsam genutzt werden. In mindestens einer Ausführungsform kann das Kombiinstrument 1132 als Teil des Infotainment-SoC 1130 enthalten sein oder umgekehrt.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 im System aus 11C für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • In mindestens einer Ausführungsform können Permutationen 512 und Beschneidung 528 zur Erzwingung von n:m-strukturierter Spärlichkeit im System aus 11C für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • 11 D ist ein Diagramm eines Systems 1176 für die Kommunikation zwischen cloudbasierten Servern und autonomem Fahrzeug 1100 aus 11A gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das System 1176 ohne Einschränkung den/die Server 1178, die Netze 1190 und eine beliebige Anzahl und einen beliebigen Typ von Fahrzeugen, einschließlich des Fahrzeugs 1100, beinhalten. In mindestens einer Ausführungsform kann der /können die Server 1178 ohne Einschränkung eine Vielzahl von GPUs 1184(A)-1184(H) (hierin zusammen als GPUs 1184 bezeichnet), PCIe-Switches 1182(A)-1182(D) (hierin zusammen als PCIe-Switches 1182 bezeichnet) und/oder CPUs 1180(A)-1180(B) (hierin zusammen als CPUs 1180 bezeichnet) beinhalten. In mindestens einer Ausführungsform können die GPUs 1184, CPUs 1180 und PCIe-Switches 1182 mit Hochgeschwindigkeitszusammenschaltungen zusammengeschaltet sein, wie zum Beispiel und ohne Einschränkung den NVLink-Schnittstellen 1188, die von NVIDIAentwickelt wurden, und/oder PCle-Verbindungen 1186. In mindestens einer Ausführungsform sind die GPUs 1184 über ein NVLink- und/oder NVSwitch-SoC verbunden und die GPUs 1184 und die PCle-Switches 1182 über PCIe-Zusammenschaltungen verbunden. Obwohl acht GPUs 1184, zwei CPUs 1180 und vier PCle-Switches 1182 veranschaulicht sind, soll dies nicht einschränkend sein. In mindestens einer Ausführungsform kann jeder der Servers 1178 ohne Einschränkung eine beliebige Anzahl von GPUs 1184, CPUs 1180 und/oder PCIe-Switches 1182 in beliebiger Kombination beinhalten. Zum Beispiel könnten in mindestens einer Ausführungsform die Server 1178 jeweils acht, sechzehn, zweiunddreißig und/oder mehr GPUs 1184 beinhalten.
  • In mindestens einer Ausführungsform könne die Server 1178 über Netze 1190 und von Fahrzeugen Bilddaten empfangen, die für Bilder stehen, die unerwartete oder veränderte Straßenbedingungen zeigen, wie z. B. kürzlich begonnene Straßenarbeiten. In mindestens einer Ausführungsform kann der/können die Server 1178 über die Netze 1190 und an die Fahrzeuge neuronale Netze 1192, aktualisiert oder anderweitig, und/oder Karteninformationen 1194 übertragen, einschließlich ohne Einschränkung Informationen bezüglich Verkehrs- und Straßenbedingungen. In mindestens einer Ausführungsform können Aktualisierungen der Karteninformationen 1194 ohne Einschränkung Aktualisierungen für die HD-Karte 1122 beinhalten, wie etwa Informationen bezüglich Baustellen, Schlaglöchern, Umleitungen, Überschwemmungen und/oder anderer Hindernisse. In mindestens einer Ausführungsform können die neuronalen Netze 1192 und/oder Karteninformationen 1194 aus einem neuen Training und/oder Erfahrungen resultiert haben, die in Daten dargestellt werden, die von einer beliebigen Anzahl von Fahrzeugen in einer Umgebung empfangen wurden, und/oder mindestens zum Teil auf Training basieren, das in einem Rechenzentrum (z. B. unter Verwendung von den Servern 1178 und/oder anderen Servern) durchgeführt wurde.
  • In mindestens einer Ausführungsform können die Server 1178 verwendet werden, um maschinelle Lernmodelle (z. B. neuronale Netze) zu trainieren, die mindestens teilweise auf Trainingsdaten basieren. In mindestens einer Ausführungsform können die Trainingsdaten von Fahrzeugen erzeugt werden und/oder können sie in einer Simulation (z. B. unter Verwendung einer Spiele-Engine) erzeugt werden. In mindestens einer Ausführungsform wird eine beliebige Menge von Trainingsdaten markiert (z. B. wenn das zugeordnete neuronale Netz von überwachtem Lernen profitiert) und/oder einer anderen Vorverarbeitung unterzogen. In mindestens einer Ausführungsform wird eine beliebige Menge von Trainingsdaten nicht markiert und/oder vorverarbeitet (z. B., wenn das assoziierte neuronale Netz kein überwachtes Lernen erfordert). In mindestens einer Ausführungsform können, sobald die Modelle des maschinellen Lernens trainiert sind, die Modelle des maschinellen Lernens durch Fahrzeuge verwendet werden (z. B. über die Netze 1190 an Fahrzeuge übertragen werden) und/oder die Modelle des maschinellen Lernens können durch den/die Server 1178 verwendet werden, um Fahrzeuge aus der Ferne zu überwachen.
  • In mindestens einer Ausführungsform können die Server 1178 Daten von Fahrzeugen empfangen und Daten auf aktuelle neuronale Netze für intelligentes Inferenzieren in Echtzeit anwenden. In mindestens einer Ausführungsformkönnen die Server 1178 Deep-Learning-Supercomputer und/oder dedizierte KI-Computer beinhalten, die durch die GPUs 1184 angetrieben werden, wie etwa die von NVIDIA entwickelten DGX- und DGX-Station-Maschinen. In mindestens einer Ausführungsform kann der/können die Server 1178 jedoch eine Deep-Learning-Infrastruktur beinhalten, die CPU-angetriebene Rechenzentren verwendet.
  • In mindestens einer Ausführungsform kann die Deep-Learning-Infrastruktur der Server 1178 eine schnelle Echtzeit-Inferenzierung ermöglichen und diese Funktion nutzen, um den Zustand von Prozessoren, Software und/oder der zugehörigen Hardware im Fahrzeug 1100 zu bewerten und zu überprüfen. Zum Beispiel kann in mindestens einer Ausführungsform die Deep-Learning-Infrastruktur periodische Aktualisierungen von dem Fahrzeug 1100 empfangen, wie etwa eine Sequenz von Bildern und/oder Objekten, die das Fahrzeug 1100 in dieser Sequenz von Bildern lokalisiert hat (z. B. über maschinelles Sehen und/oder andere Techniken des maschinellen Lernens zur Objektklassifizierung). In mindestens einer Ausführungsform kann die Deep-Learning-Infrastruktur ihr eigenes neuronales Netz ausführen, um Objekte zu identifizieren und sie mit Objekten zu vergleichen, die durch das Fahrzeug 1100 identifiziert wurden, und falls die Ergebnisse nicht übereinstimmen und die Deep-Learning-Infrastruktur zu dem Schluss kommt, dass die KI in dem Fahrzeug 1100 eine Fehlfunktion aufweist, dann kann der/können die Server 1178 ein Signal an das Fahrzeug 1100 übertragen, das einen ausfallsicheren Computer des Fahrzeugs 1100 anweist, die Steuerung zu übernehmen, die Fahrgäste zu benachrichtigen und ein sicheres Parkmanöver durchzuführen.
  • In mindestens einer Ausführungsform können die Server 1178 GPUs 1184 und einen oder mehrere programmierbare Inferenzbeschleuniger (z. B. NVIDIA TensorRT 3-Vorrichtungen) beinhalten. In mindestens einer Ausführungsform kann eine Kombination von GPU-angetriebenen Servern und Inferenzbeschleunigung eine Reaktionsfähigkeit in Echtzeit ermöglichen. In mindestens einer Ausführungsform, wenn z. B. die Performance weniger kritisch ist, können von CPUs, FPGAs und anderen Prozessoren angetriebene Server für die Inferenzierung verwendet werden. In mindestens einer Ausführungsform werden die Hardware-Strukturen 815 verwendet, um eine oder mehrere Ausführungsformen durchzuführen. Details bezüglich der Hardware-Strukturen 815 sind hierin in Verbindung mit 8A und/oder 8B bereitgestellt.
  • COMPUTERSYSTEME
  • 12 ist ein Blockdiagramm, das ein beispielhaftes Computersystem veranschaulicht, das ein System mit miteinander verbundenen Vorrichtungen und Komponenten, ein System auf einem Chip (SOC) oder eine Kombination davon sein kann, das mit einem Prozessor gebildet wird, der Ausführungseinheiten zur Ausführung einer Anweisung gemäß mindestens einer Ausführungsform beinhalten kann. In mindestens einer Ausführungsform kann ein Computersystem 1200 ohne Einschränkung eine Komponente, wie etwa einen Prozessor 1202, beinhalten, um Ausführungseinheiten einschließlich Logik zum Durchführen von Algorithmen für Prozessdaten gemäß der vorliegenden Offenbarung zu verwenden, wie etwa in der hierin beschriebenen Ausführungsform. In mindestens einer Ausführungsform kann das Computersystem 1200 Prozessoren beinhalten, wie etwa die PENTIUM®-Prozessorfamilie, die Mikroprozessoren Xeon™, Itanium®, XScale™ und/oder StrongARM™, Intel® Core™ oder Intel® Nervana™, die von der Intel Corporation in Santa Clara, Kalifornien, erhältlich sind, obwohl auch andere Systeme (einschließlich PCs, die andere Mikroprozessoren, Engineering-Arbeitsstationen, Set-Top-Boxen und dergleichen aufweisen) verwendet werden können. In mindestens einer Ausführungsform kann das Computersystem 1200 eine Version des Betriebssystems WINDOWS ausführen, das von der Microsoft Corporation in Redmond, Washington, erhältlich ist, obwohl auch andere Betriebssysteme (zum Beispiel UNIX und Linux), eingebettete Software und/oder grafische Benutzerschnittstellen verwendet werden können.
  • Ausführungsformen können auch in anderen Vorrichtungen wie Handheld-Geräten und eingebetteten Anwendungen verwendet werden. Einige Beispiele für tragbare Einrichtungen weisen Mobiltelefone, Internetprotokollgeräte, Digitalkameras, persönliche digitale Assistenten („PDAs“) und Handheld-PCs auf. In mindestens einer Ausführungsform können eingebettete Anwendungen eine Mikrosteuerung, einen digitalen Signalprozessor („DSP“), ein System auf einem Chip, Netzcomputer („NetPCs“), Set-Top-Boxen, Netz-Hubs, Weitverkehrsnetz(wide area network - „WAN“)-Switches oder ein beliebiges anderes System beinhalten, das eine oder mehrere Anweisungen gemäß mindestens einer Ausführungsform durchführen kann.
  • In mindestens einer Ausführungsform kann das Computersystem 1200 ohne Einschränkung einen Prozessor 1202 beinhalten, der ohne Einschränkung eine oder mehrere Ausführungseinheiten 1208 beinhalten kann, um ein maschinelles Lernmodelltraining und/oder Inferenzieren gemäß den hierin beschriebenen Techniken durchzuführen. In mindestens einer Ausführungsform ist das Computersystem 1200 ein Einzelprozessor-Desktop- oder -Serversystem, aber in einer anderen Ausführungsform kann das Computersystem 1200 ein Multiprozessorsystem sein. In mindestens einer Ausführungsform kann der Prozessor 1202 ohne Einschränkung einen Mikroprozessor für einen Complex Instruction Set Computer („CISC“), einen Mikroprozessor für Reduced Instruction Set Computing („RISC“), einen Very-Long-Instruction-Word-(„VLIW“-)Mikroprozessor, einen Prozessor, der eine Kombination von Anweisungssätzen implementiert, oder eine beliebige andere Prozessorvorrichtung, wie etwa einen digitalen Signalprozessor, beinhalten. In mindestens einer Ausführungsform kann der Prozessor 1202 an einen Prozessorbus 1210 gekoppelt sein, der Datensignale zwischen dem Prozessor 1202 und anderen Komponenten in dem Computersystem 1200 übertragen kann.
  • In mindestens einer Ausführungsform kann der Prozessor 1202 ohne Einschränkung einen internen Level 1 („L1“)-Cache-Speicher („Cache“) 1204 beinhalten. In mindestens einer Ausführungsform kann der Prozessor 1202 einen einzelnen internen Cache oder mehrere Levels von internem Cache aufweisen. In mindestens einer Ausführungsform kann sich der Cache-Speicher extern zu dem Prozessor 1202 befinden. Andere Ausführungsformen können auch eine Kombination aus sowohl internen als auch externen Caches beinhalten, und zwar in Abhängigkeit von der jeweiligen Implementierung und den Anforderungen. In mindestens einer Ausführungsform kann eine Registerbank 1206 unterschiedliche Typen von Daten in verschiedenen Registern speichern, einschließlich ohne Einschränkung Integerregistern, Gleitkommaregistern, Statusregistern und eines Anweisungszeigerregisters.
  • In mindestens einer Ausführungsform befindet sich die Ausführungseinheit 1208, die ohne Einschränkung eine Logik zum Ausführen von Ganzzahl- und Gleitkommaoperationen beinhaltet, ebenfalls im Prozessor 1202. In mindestens einer Ausführungsform kann der Prozessor 1202 auch Festwertspeicher (read only memory - „ROM“) für Mikrocode („ucode“) beinhalten, der Mikrocode für bestimmte Makrobefehle speichert. In mindestens einer Ausführungsform kann die Ausführungseinheit 1208 Logik zum Handhaben eines gepackten Anweisungssatzes 1209 beinhalten. In mindestens einer Ausführungsform können durch die Aufnahme des gepackten Anweisungssatzes 1209 in einen Anweisungssatz eines Universalprozessors zusammen mit der damit assoziierten Schaltung zum Ausführen von Anweisungen Operationen, die durch viele Multimedia-Anwendungen verwendet werden, unter Verwendung von gepackten Daten in dem Prozessor 1202 durchgeführt werden. In einer oder mehreren Ausführungsformen können viele Multimedia-Anwendungen beschleunigt und effizienter ausgeführt werden, indem die volle Breite des Datenbusses eines Prozessors zum Durchführen von Operationen an gepackten Daten verwendet wird, wodurch die Notwendigkeit entfallen kann, kleinere Dateneinheiten über den Datenbus dieses Prozessors zu übermitteln, um eine oder mehrere Operationen an einem Datenelement nach dem anderen durchzuführen.
  • In mindestens einer Ausführungsform kann die Ausführungseinheit 1208 auch in Mikrosteuerungen, eingebetteten Prozessoren, Grafikvorrichtungen, DSPs und anderen Typen von Logikschaltungen verwendet werden. In mindestens einer Ausführungsform kann das Computersystem 1200 ohne Einschränkung einen Speicher 1220 beinhalten. In mindestens einer Ausführungsform kann der Speicher 1220 eine Vorrichtung mit dynamischem Direktzugriffsspeicher („DRAM“), eine Vorrichtung mit statischem Direktzugriffsspeicher („SRAM“), eine Flash-Speichervorrichtung oder eine andere Speichervorrichtung sein. In mindestens einer Ausführungsform kann der Speicher 1220 Anweisungen 1219 und/oder Daten 1221 speichern, die durch Datensignale dargestellt werden, die durch den Prozessor 1202 ausgeführt werden können.
  • In mindestens einer Ausführungsform kann ein Systemlogikchip an den Prozessorbus 1210 und den Speicher 1220 gekoppelt sein. In mindestens einer Ausführungsform kann ein Systemlogikchip ohne Einschränkung einen Speichersteuerungs-Hub (memory controller hub - „MCH“) 1216 beinhalten und der Prozessor 1202 mit dem MCH 1216 über den Prozessorbus 1210 kommunizieren. In mindestens einer Ausführungsform kann der MCH 1216 dem Speicher 1220 einen Speicherpfad 1218 mit hoher Bandbreite für die Anweisungs- und Datenspeicherung sowie für die Speicherung von Grafikbefehlen, Daten und Texturen bereitstellen. In mindestens einer Ausführungsform kann der MCH 1216 Datensignale zwischen dem Prozessor 1202, dem Speicher 1220 und anderen Komponenten in dem Computersystem 1200 leiten und Datensignale zwischen dem Prozessorbus 1210, dem Speicher 1220 und einer System-E/A-Schnittstelle 1222 überbrücken. In mindestens einer Ausführungsform kann ein Systemlogikchip einen Grafikport zum Koppeln an eine Grafiksteuerung bereitstellen. In mindestens einer Ausführungsform kann der MCH 1216 durch einen Speicherpfad 1218 mit hoher Bandbreite an den Speicher 1220 gekoppelt sein und eine Grafik-/Videokarte 1212 durch eine Accelerated-Graphics-Port-(„AGP“-)Zusammenschaltung 1214 an den MCH 1216 gekoppelt sein.
  • In mindestens einer Ausführungsform kann das Computersystem 1200 die System-E/A-Schnittstelle 1222 als einen proprietären Hub-Schnittstellenbus verwenden, um den MCH 1216 mit einem E/A-Steuerungs-Hub (I/O controller hub - „ICH“) 1230 zu koppeln. In mindestens einer Ausführungsform kann der ICH 1230 direkte Verbindungen zu einigen E/A-Vorrichtungen über einen lokalen E/A-Bus bereitstellen. In mindestens einer Ausführungsform kann ein lokaler E/A-Bus ohne Einschränkung einen Hochgeschwindigkeits-E/A-Bus zum Verbinden von Peripheriegeräten mit dem Speicher 1220, einem Chipsatz und dem Prozessor 1202 beinhalten. Beispiele können ohne Einschränkung eine Audiosteuerung 1229, einen Firmware-Hub („Flash-BIOS“) 1228, einen drahtlosen Sendeempfänger 1226, einen Datenspeicher 1224, eine ältere E/A-Steuerung 1223, die Benutzereingabe- und Tastaturschnittstellen enthält, einen seriellen Erweiterungsport 1227, wie etwa einen Universal-Serial-Bus-(„USB“-)Port, und eine Netzsteuerung 1234 beinhalten. In mindestens einer Ausführungsform kann der Datenspeicher 1224 ein Festplattenlaufwerk, ein Diskettenlaufwerk, eine CD-ROM-Vorrichtung, eine Flash-Speichervorrichtung oder eine andere Massenspeichervorrichtung umfassen.
  • In mindestens einer Ausführungsform veranschaulicht 12 ein System, das zusammengeschaltete Hardware-Vorrichtungen oder „Chips“ beinhaltet, wohingegen 12 in anderen Ausführungsformen ein beispielhaftes SoC veranschaulichen kann. In mindestens einer Ausführungsform können die in 12 veranschaulichten Vorrichtungen mit proprietären Zusammenschaltungen, standardisierten Zusammenschaltungen (z. B. PCIe) oder einer Kombination davon zusammengeschaltet sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten des Computersystems 1200 unter Verwendung von Compute-Express-Link-(CXL-)Zusammenschaltungen zusammengeschaltet.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 im System aus 12 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • In mindestens einer Ausführungsform können Permutationen 512 und Beschneidung 528 zur Erzwingung von n:m-strukturierter Spärlichkeit im System aus 12 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • 13 ist ein Blockdiagramm, das eine elektronische Vorrichtung 1300 zur Nutzung eines Prozessors 1310 gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform kann die elektronische Vorrichtung 1300 zum Beispiel und ohne Einschränkung ein Notebook, ein Tower-Server, ein Rack-Server, ein Blade-Server, ein Laptop, ein Desktop, ein Tablet, eine mobile Vorrichtung, ein Telefon, ein eingebetteter Computer oder eine beliebige andere geeignete elektronische Vorrichtung sein.
  • In mindestens einer Ausführungsform kann die elektronische Vorrichtung 1300 ohne Einschränkung einen Prozessor 1310 beinhalten, der kommunikativ mit einer beliebigen Anzahl oder Art von Komponenten, Peripheriegeräten, Modulen oder Vorrichtungen gekoppelt ist. In mindestens einer Ausführungsform ist der Prozessor 1310 unter Verwendung eines Busses oder einer Schnittstelle gekoppelt, wie etwa eines I2C-Busses, eines Systemverwaltungsbusses (System Management Bus - „SMBus“), eines Low-Pin-Count(LPC-)Busses, einer seriellen Peripherieschnittstelle (Serial Peripheral Interface - „SPI“), eines High-Definition-Audio(„HDA“-)Busses, eines Serial-Advance-Technology-Attachment(„SATA“-)Busses, eines Universal Serial Bus („USB“) (Version 1, 2, 3 usw.) oder eines Universal-Asynchronous-Receiver/Transmitter(„UART“-)Busses. In mindestens einer Ausführungsform veranschaulicht 13 ein System, das zusammengeschaltete Hardware-Vorrichtungen oder „Chips“ beinhaltet, wohingegen 13 in anderen Ausführungsformen ein beispielhaftes SoC veranschaulichen kann. In mindestens einer Ausführungsform können die in 13 veranschaulichten Vorrichtungen mit proprietären Zusammenschaltungen, standardisierten Zusammenschaltungen (z. B. PCIe) oder einer Kombination davon zusammengeschaltet sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten aus 13 unter Verwendung von Compute-Express-Link-(CXL-)Zusammenschaltungen zusammengeschaltet.
  • In mindestens einer Ausführungsform kann 13 eine Anzeige 1324, einen Touchscreen 1325, ein Touchpad 1330, eine Einheit zur Nahfeldkommunikation (Near Field Communications-„NFC“) 1345, einen Sensor-Hub 1340, einen Thermosensor 1346, einen Express-Chipsatz (Express Chipset - „EC“) 1335, ein Trusted Platform Module („TPM“) 1338, BIOS-/Firmware-/Flash-Speicher („BIOS, FW-Flash“) 1322, einen DSP 1360, ein Laufwerk 1320, wie etwa ein Halbleiterlaufwerk (Solid State Disk - „SSD“) oder ein Festplattenlaufwerk (Hard Disk Drive - „HDD“), eine Einheit für ein drahtloses lokales Netz (wireless local area network - „WLAN“) 1350, eine Bluetooth-Einheit 1352, eine Einheit für ein drahtloses Weitverkehrsnetz (Wireless Wide Area Network - „WWAN“) 1356, eine Einheit für ein globales Positionsbestimmungssystem (Global Positioning System - GPS) 1355, eine Kamera („USB-3.0-Kamera“) 1354, wie etwa eine USB-3.0-Kamera, und/oder eine Low-Power-Double-Data-Rate-(„LPDDR“-)Speichereinheit („LPDDR3“) 1315, die zum Beispiel in einem LPDDR3-Standard implementiert ist, beinhalten. Diese Komponenten können jeweils auf eine beliebige geeignete Weise implementiert sein.
  • In mindestens einer Ausführungsform können andere Komponenten durch hierin beschriebene Komponenten kommunikativ an den Prozessor 1310 gekoppelt sein. In mindestens einer Ausführungsform können ein Beschleunigungsmesser 1341, ein Umgebungslichtsensor (ambient light sensor - „ALS“) 1342, ein Kompass 1343 und ein Gyroskop 1344 kommunikativ an den Sensor-Hub 1340 gekoppelt sein. In mindestens einer Ausführungsform können ein Thermosensor 1339, ein Lüfter 1337, eine Tastatur 1336 und ein Touchpad 1330 kommunikativ an den EC 1335 gekoppelt sein. In mindestens einer Ausführungsform können Lautsprecher 1363, Kopfhörer 1364 und ein Mikrofon („Mikro“) 1365 kommunikativ an eine Audioeinheit („Audiocodec und Klasse-D-Verst.“) 1362 gekoppelt sein, die wiederum kommunikativ an den DSP 1360 gekoppelt sein kann. In mindestens einer Ausführungsform kann die Audioeinheit 1362 zum Beispiel und ohne Einschränkung einen Audiocodierer/-decodierer („Codec“) und einen Klasse-D-Verstärker beinhalten. In mindestens einer Ausführungsform kann eine SIM-Karte („SIM“) 1357 kommunikativ an die WWAN-Einheit 1356 gekoppelt sein. In mindestens einer Ausführungsform können Komponenten wie etwa die WLAN-Einheit 1350 und die Bluetooth-Einheit 1352 sowie die WWAN-Einheit 1356 in einem Next Generation Form Factor („NGFF“) implementiert sein.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 im System aus 13 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • In mindestens einer Ausführungsform können Permutationen 512 und Beschneidung 528 zur Erzwingung von n:m-strukturierter Spärlichkeit im System aus 13 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • 14 veranschaulicht ein Computersystem 1400 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist das Computersystem 1400 so konfiguriert, dass es verschiedene Prozesse und Verfahren implementiert, die in dieser Offenbarung beschrieben sind.
  • In mindestens einer Ausführungsform umfasst das Computersystem 1400 ohne Einschränkung mindestens eine Zentralverarbeitungseinheit („CPU“) 1402, die an einen Kommunikationsbus 1410 angeschlossen ist, der unter Verwendung eines beliebigen geeigneten Protokolls implementiert ist, wie PCI („Peripheral Component Interconnect“), Peripheral Component Interconnect Express („PCI-Express“), AGP („Accelerated Graphics Port“), HyperTransport oder ein anderes Bus- oder Punkt-zu-Punkt-Kommunikationsprotokoll. In mindestens einer Ausführungsform beinhaltet das Computersystem 1400 ohne Einschränkung einen Hauptspeicher 1404 und Steuerlogik (z. B. implementiert als Hardware, Software oder eine Kombination davon) und Daten werden in dem Hauptspeicher 1404 gespeichert, der die Form eines Direktzugriffsspeichers („RAM“) annehmen kann. In mindestens einer Ausführungsform stellt ein Netzschnittstellen-Teilsystem („Netzschnittstelle“) 1422 eine Schnittstelle zu anderen Rechenvorrichtungen und Netzen bereit, um Daten von anderen Systemen mit dem Computersystem 1400 zu empfangen und an diese zu übertragen.
  • In mindestens einer Ausführungsform beinhaltet das Computersystem 1400 ohne Einschränkung Eingabevorrichtungen 1408, ein paralleles Verarbeitungssystem 1412 und Anzeigevorrichtungen 1406, die mit einer herkömmlichen Kathodenstrahlröhre („CRT“), einer Flüssigkristallanzeige („LCD“), einer Leuchtdiodenanzeige („LED“), einer Plasmaanzeige oder anderen geeigneten Anzeigetechnologien implementiert werden können. In mindestens einer Ausführungsform werden Benutzereingaben von Eingabevorrichtungen 1408 wie Tastatur, Maus, Touchpad, Mikrofon usw. empfangen. In mindestens einer Ausführungsform kann jedes hierin beschriebene Modul auf einer einzigen Halbleiterplattform untergebracht werden, um ein Verarbeitungssystem zu bilden.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 im System aus 14 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • In mindestens einer Ausführungsform können Permutationen 512 und Beschneidung 528 zur Erzwingung von n:m-strukturierter Spärlichkeit im System aus 14 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • 15 veranschaulicht ein Computersystem 1500 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet das Computersystem 1500 ohne Einschränkung einen Computer 1510 und einen USB-Stick 1520. In mindestens einer Ausführungsform kann der Computer 1510 ohne Einschränkung eine beliebige Anzahl und einen beliebigen Typ von Prozessoren (nicht gezeigt) und einen Speicher (nicht gezeigt) beinhalten. In mindestens einer Ausführungsform beinhaltet der Computer 1510 ohne Einschränkung einen Server, eine Cloud-Instanz, einen Laptop und einen Desktop-Computer.
  • In mindestens einer Ausführungsform beinhaltet der USB-Stick 1520, ohne Einschränkung, eine Verarbeitungseinheit 1530, eine USB-Schnittstelle 1540 und eine USB-Schnittstellenlogik 1550. In mindestens einer Ausführungsform kann die Verarbeitungseinheit 1530 ein beliebiges Anweisungsausführungssystem, -apparat oder - vorrichtung sein, das dazu in der Lage ist, Anweisungen auszuführen. In mindestens einer Ausführungsform kann die Verarbeitungseinheit 1530 ohne Einschränkung eine beliebige Anzahl und einen beliebigen Typ von Verarbeitungskernen (nicht gezeigt) beinhalten. In mindestens einer Ausführungsform umfasst die Verarbeitungseinheit 1530 eine anwendungsspezifische integrierte Schaltung („ASIC“), die zum Durchführen beliebiger Mengen und Typen von Operationen optimiert ist, die mit maschinellem Lernen assoziiert sind. Zum Beispiel ist in mindestens einer Ausführungsform die Verarbeitungseinheit 1530 eine Tensor-Verarbeitungseinheit („TPC“), die zum Durchführen von Inferenzoperationen des maschinellen Lernens optimiert ist. In mindestens einer Ausführungsform ist die Verarbeitungseinheit 1530 eine Sichtverarbeitungseinheit (vision processing unit - „VPU“), die für zum Durchführen von Inferenzoperationen des maschinellen Sehens und des maschinellen Lernens optimiert ist.
  • In mindestens einer Ausführungsform kann die USB-Schnittstelle 1540 eine beliebige Art von USB-Stecker oder USB-Buchse sein. Zum Beispiel ist in mindestens einer Ausführungsform die USB-Schnittstelle 1540 eine USB-3.0-Typ-C-Buchse für Daten und Leistung. In mindestens einer Ausführungsform ist die USB-Schnittstelle 1540 ein USB-3.0-Typ-A-Stecker. In mindestens einer Ausführungsform kann die USB-Schnittstellenlogik 1550 eine beliebige Menge und einen beliebigen Typ von Logik beinhalten, die es der Verarbeitungseinheit 1530 ermöglicht, über den USB-Stecker 1540 eine Schnittstelle mit Vorrichtungen (z. B. dem Computer 1510) zu bilden.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 im System aus 15 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • In mindestens einer Ausführungsform können Permutationen 512 und Beschneidung 528 zur Erzwingung von n:m-strukturierter Spärlichkeit im System aus 15 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • 16A veranschaulicht eine beispielhafte Architektur, in der eine Vielzahl von GPUs 1610(1)-1610(N) über Hochgeschwindigkeitsverknüpfungen 1640(1)-1640(N) (z. B. Busse, Punkt-zu-Punkt-Zusammenschaltungen usw.) kommunikativ an eine Vielzahl von Mehrkernprozessoren 1605(1)-1605(M) gekoppelt ist. In mindestens einer Ausführungsform unterstützen die Hochgeschwindigkeitsverknüpfungen 1640(1)-1640(N) einen Kommunikationsdurchsatz von 4 GB/s, 30 GB/s, 80 GB/s oder höher. In mindestens einer Ausführungsform können verschiedene Zusammenschaltungsprotokolle verwendet werden, einschließlich, aber nicht beschränkt auf, PCIe 4.0 oder 5.0 und NVLink 2.0. In verschiedenen Figuren stellen „N“ und „M“ positive ganze Zahlen dar, deren Werte von Figur zu Figur unterschiedlich sein können.
  • Zusätzlich und in einer Ausführungsform sind zwei oder mehr der GPUs 1610 über Hochgeschwindigkeitsverknüpfungen 1629(1)-1629(2) zusammengeschaltet, die unter Verwendung ähnlicher oder anderer Protokolle/Verknüpfungen implementiert sein können als derjenigen, die für die Hochgeschwindigkeitsverknüpfungen 1640(1)-1640(N) verwendet werden. Auf ähnliche Weise können zwei oder mehr der Mehrkernprozessoren 1605 über eine Hochgeschwindigkeitsverknüpfung 1628 verbunden sein, bei der es sich um Busse eines symmetrischen Multiprozessors (symmetric multi-processor - SMP) handeln kann, die mit 20 GB/s, 30 GB/s, 120 GB/s oder höher betrieben werden. Alternativ kann die gesamte Kommunikation zwischen den verschiedenen in 16A gezeigten Systemkomponenten unter Verwendung von ähnlichen Protokollen/Verknüpfungen erzielt werden (z. B. über eine gemeinsame Zusammenschaltungsstruktur).
  • In einer Ausführungsform ist jeder Mehrkernprozessor 1605 jeweils über Speicherzusammenschaltungen 1626(1)-1626(M) kommunikativ an einen Prozessorspeicher 1601(1)-1601(M) gekoppelt und jede GPU 1610(1)-1610(N) jeweils über GPU-Speicherzusammenschaltungen 1650(1)-1650(N) kommunikativ an den GPU-Speicher 1620(1)-1620(N) gekoppelt. In mindestens einer Ausführungsform können die Speicherzusammenschaltungen 1626 und 1650 ähnliche oder unterschiedliche Speicherzugriffstechnologien nutzen. Bei den Prozessorspeichern 1601(1)-1601(M) und den GPU-Speichern 1620 kann es sich beispielsweise und ohne Einschränkung um flüchtige Speicher, wie etwa dynamische Direktzugriffsspeicher (DRAMs) (einschließlich gestapelter DRAMs), Grafik-DDR-SDRAM (GDDR) (z. B. GDDR5, GDDR6) oder Speicher mit hoher Bandbreite (High Bandwidth Memory - HBM), und/oder um nichtflüchtige Speicher, wie etwa 3D XPoint oder Nano-Ram, handeln. In mindestens einer Ausführungsform kann ein Abschnitt der Prozessorspeicher 1601 flüchtiger Speicher sein und ein anderer Abschnitt nichtflüchtiger Speicher sein (z. B. unter Verwendung einer Speicherhierarchie mit zwei Levels (two-level memory - 2LM)).
  • Obwohl, wie hierin beschrieben, verschiedene Mehrkernprozessoren 1605 und GPUs 1610 physisch mit einem bestimmten Speicher 1601 bzw. 1620 gekoppelt sein können und/oder eine einheitliche Speicherarchitektur implementiert werden kann, bei der ein virtueller Systemadressraum (auch als „effektiver Adressraum“ bezeichnet) auf verschiedene physische Speicher verteilt ist. Zum Beispiel können die Prozessorspeicher 1601 (1)-1601(M) jeweils 64 GB Systemspeicheradressraum umfassen und die GPU-Speicher 1620(1)-1620(N) jeweils 32 GB Systemspeicheradressraum umfassen, was zu einem adressierbaren Speicher von insgesamt 256 GB führt, wenn M=2 und N=4. Andere Werte für N und M sind möglich.
  • 16B veranschaulicht zusätzliche Details für eine Verbindung zwischen einem Mehrkernprozessor 1607 und einem Grafikbeschleunigungsmodul 1646 gemäß einer beispielhaften Ausführungsform. In mindestens einer Ausführungsform kann das Grafikbeschleunigungsmodul 1646 einen oder mehrere GPU-Chips beinhalten, die auf einer Leitungskarte integriert sind, die über eine Hochgeschwindigkeitsverknüpfung 1640 (z. B. einen PCle-Bus, NVLink usw.) an den Prozessor 1607 gekoppelt ist. In mindestens einer Ausführungsform kann das Grafikbeschleunigungsmodul 1646 alternativ auf einem Gehäuse oder Chip mit dem Prozessor 1607 integriert sein.
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 1607 eine Vielzahl von Kernen 1660A-1660D, jeder mit einem Adressenübersetzungspuffer (translation lookaside buffer-„TLB“) 1661A-1661D und einem oder mehreren Caches 1662A-1662D. In mindestens einer Ausführungsform können die Kerne 1660A-1660D verschiedene andere Komponenten zum Ausführen von Anweisungen und Verarbeiten von Daten beinhalten, die nicht veranschaulicht sind. In mindestens einer Ausführungsform können die Caches 1662A-1662D Level-1-(L1-) und Level-2-(L2-)Caches umfassen. Außerdem können ein oder mehrere gemeinsam genutzte Caches 1656 in den Caches 1662A-1662D enthalten sein und von Sätzen von Kernen 1660A-1660D gemeinsam genutzt werden. Eine Ausführungsform des Prozessors 1607 beinhaltet zum Beispiel 24 Kerne, jeder mit einem eigenen L1-Cache, zwölf gemeinsam genutzten L2-Caches und zwölf gemeinsam genutzten L3-Caches. In dieser Ausführungsform werden ein oder mehrere L2- und L3-Caches von zwei benachbarten Kernen gemeinsam genutzt. In mindestens einer Ausführungsform sind der Prozessor 1607 und das Grafikbeschleunigungsmodul 1646 mit dem Systemspeicher 1614 verbunden, der die Prozessorspeicher 1601(1)-1601(M) aus 16A beinhalten kann.
  • In mindestens einer Ausführungsform wird die Kohärenz für Daten und Anweisungen, die in verschiedenen Caches 1662A-1662D, 1656 und im Systemspeicher 1614 gespeichert sind, über eine Zwischenkernkommunikation über einen Kohärenzbus 1664 aufrechterhalten. Zum Beispiel kann in mindestens einer Ausführungsform jeder Cache eine Cache-Kohärenzlogik/-schaltung aufweisen, die damit assoziiert ist, um als Reaktion auf detektierte Lese- oder Schreibvorgänge in konkreten Cache-Zeilen über den Kohärenzbus 1664 zu kommunizieren. In mindestens einer Ausführungsform wird ein Cache-Snooping-Protokoll über den Kohärenzbus 1664 implementiert, um Cache-Zugriffe per Snooping zu kontrollieren.
  • In mindestens einer Ausführungsform koppelt eine Proxy-Schaltung 1625 das Grafikbeschleunigungsmodul 1646 kommunikativ an den Kohärenzbus 1664, sodass das Grafikbeschleunigungsmodul 1646 an einem Cache-Kohärenzprotokoll als Peer der Kerne 1660A-1660D teilnehmen kann. Insbesondere stellt in mindestens einer Ausführungsform eine Schnittstelle 1635 Verbindungsfähigkeit mit der Proxy-Schaltung 1625 über eine Hochgeschwindigkeitsverknüpfung 1640 bereit und eine Schnittstelle 1637 verbindet das Grafikbeschleunigungsmodul 1646 mit der Hochgeschwindigkeitsverknüpfung 1640.
  • In mindestens einer Ausführungsform stellt eine Beschleuniger-Integrationsschaltung 1636 Cache-Verwaltungs-, Speicherzugriffs-, Kontextverwaltungs- und Unterbrechungsverwaltungsdienste im Auftrag einer Vielzahl von Grafikverarbeitungs-Engines 1631(1)-1631(N) des Grafikbeschleunigungsmoduls 1646 bereit. In mindestens einer Ausführungsform können die Grafikverarbeitungs-Engines 1631 (1)-1631(N) jeweils eine separate Grafikverarbeitungseinheit (GPU) umfassen. In mindestens einer Ausführungsform können die Grafikverarbeitungs-Engines 1631(1)-1631(N) alternativ unterschiedliche Typen von Grafikverarbeitungs-Engines innerhalb einer GPU umfassen, wie etwa Grafikausführungseinheiten, Medienverarbeitungs-Engines (z. B. Videocodierer/- decodierer), Abtaster und Blit-Engines. In mindestens einer Ausführungsform kann das Grafikbeschleunigungsmodul 1646 eine GPU mit einer Vielzahl von Grafikverarbeitungs-Engines 1631(1)-1631(N) sein oder die Grafikverarbeitungs-Engines 1631(1)-1631(N) können einzelne GPUs sein, die auf einem gemeinsamen Gehäuse, einer Leitungskarte oder einem Chip integriert sind.
  • In mindestens einer Ausführungsform beinhaltet die Beschleunigerintegrationsschaltung 1636 eine Speicherverwaltungseinheit (MMU) 1639 zum Ausführen verschiedener Speicherverwaltungsfunktionen wie Übersetzungen von virtuellem in physischen Speicher (auch als Übersetzungen von effektivem in realen Speicher bezeichnet) und Speicherzugriffsprotokolle für den Zugriff auf den Systemspeicher 1614. Die MMU 1639 kann in mindestens einer Ausführungsform auch einen Adressenübersetzungspuffer (TLB) (nicht gezeigt) für das Caching von Übersetzungen von virtuellen/effektiven in physische/reale Adressen beinhalten. In mindestens einer Ausführungsform kann ein Cache 1638 Befehle und Daten für einen effizienten Zugriff durch die Grafikverarbeitungs-Engines 1631(1)-1631(N) speichern. In mindestens einer Ausführungsform werden die in dem Cache 1638 und in den Grafikspeichern 1633(1)-1633(M) gespeicherten Daten mit den Kern-Caches 1662A-1662D, 1656 und dem Systemspeicher 1614 kohärent gehalten, möglicherweise unter Verwendung einer Abrufeinheit 1644. Wie erwähnt, kann dies über die Proxy-Schaltung 1625 im Auftrag des Caches 1638 und der Speicher 1633(1)-1633(M) erzielt werden (z. B. Senden von Aktualisierungen an den Cache 1638 in Bezug auf Modifikationen/Zugriffe auf Cache-Zeilen in den Prozessor-Caches 1662A-1662D, 1656 und Empfangen von Aktualisierungen von dem Cache 1638).
  • In mindestens einer Ausführungsform speichert ein Satz von Registern 1645 Kontextdaten für Threads, die von den Grafikverarbeitungs-Engines 1631(1)-1631(N) ausgeführt werden, und eine Kontextverwaltungsschaltung 1648 verwaltet Thread-Kontexte. Zum Beispiel kann die Kontextverwaltungsschaltung 1648 Sicherungs- und Wiederherstellungsoperationen durchführen, um Kontexte verschiedener Threads während Kontextumschaltungen zu sichern und wiederherzustellen (z. B., wenn ein erster Thread gesichert und ein zweiter Thread gespeichert wird, damit ein zweiter Thread durch eine Grafikverarbeitungs-Engine ausgeführt werden kann). Zum Beispiel kann die Kontextverwaltungsschaltung 1648 bei einer Kontextumschaltung derzeitige Registerwerte in einer bezeichneten Region in dem Speicher speichern (z. B. identifiziert durch einen Kontextzeiger). Sie kann dann bei der Rückkehr zu einem Kontext die Registerwerte wiederherstellen. In mindestens einer Ausführungsform empfängt und verarbeitet eine Unterbrechungsverwaltungsschaltung 1647 von Systemvorrichtungen empfangene Unterbrechungen.
  • In einer Implementation werden virtuelle/effektive Adressen von einer Grafikverarbeitungs-Engine 1631 durch die MMU 1639 in reale/physische Adressen in dem Systemspeicher 1614 übersetzt. In mindestens einer Ausführungsform unterstützt die Beschleuniger-Integrationsschaltung 1636 mehrere (z. B. 4, 8, 16) Grafikbeschleunigermodule 1646 und/oder andere Beschleunigervorrichtungen. Das Grafikbeschleunigermodul 1646 kann in mindestens einer Ausführungsform für eine einzelne Anwendung dediziert sein, die auf dem Prozessor 1607 ausgeführt wird, oder von mehreren Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform ist eine virtualisierte Grafikausführungsumgebung dargestellt, in der die Ressourcen der Grafikverarbeitungs-Engines 1631(1)-1631 (N) mit mehreren Anwendungen oder virtuellen Maschinen (VMs) gemeinsam genutzt werden. In mindestens einer Ausführungsform können die Ressourcen in „Slices“ unterteilt werden, die unterschiedlichen VMs und/oder Anwendungen basierend auf Verarbeitungsanforderungen und Prioritäten, die mit VMs und/oder Anwendungen assoziiert sind, zugewiesen sind.
  • In mindestens einer Ausführungsform fungiert die Beschleuniger-Integrationsschaltung 1636 als eine Brücke zu einem System für das Grafikbeschleunigungsmodul 1646 und stellt Adressübersetzungs- und Systemspeicher-Cache-Dienste bereit. Darüber hinaus kann die Beschleuniger-Integrationsschaltung 1636 in mindestens einer Ausführungsform Virtualisierungseinrichtungen für einen Host-Prozessor bereitstellen, um die Virtualisierung der Grafikverarbeitungs-Engines 1631(1)-1631(N), Unterbrechungen und Speicherverwaltung zu verwalten.
  • Da in mindestens einer Ausführungsform die Hardware-Ressourcen der Grafikverarbeitungs-Engines 1631(1)-1631(N) explizit auf einen realen Adressraum abgebildet sind, den der Host-Prozessor 1607 sieht, kann ein beliebiger Host-Prozessor diese Ressourcen direkt unter Verwendung eines effektiven Adresswerts adressieren. In mindestens einer Ausführungsform ist eine Funktion der Beschleuniger-Integrationsschaltung 1636 die physische Trennung der Grafikverarbeitungs-Engines 1631(1)-1631(N), sodass sie einem System als unabhängige Einheiten erscheinen.
  • In mindestens einer Ausführungsform sind ein oder mehrere Grafikspeicher 1633(1)-1633(M) mit jeder der Grafikverarbeitungs-Engines 1631(1)-1631(N) gekoppelt und gilt N=M. In mindestens einer Ausführungsform speichern die Grafikspeicher 1633(1)-1633(M) Anweisungen und Daten, die durch jede der Grafikverarbeitungs-Engines 1631(1)-1631(N) verarbeitet werden. In mindestens einer Ausführungsform kann es sich bei den Grafikspeichern 1633(1)-1633(M) um flüchtige Speicher, wie etwa DRAMs (einschließlich gestapelter DRAMs), GDDR-Speicher (z. B. GDDR5, GDDR6) oder HBM, und/oder um nichtflüchtige Speicher, wie etwa 3D XPoint oder Nano-Ram, handeln.
  • In einer Ausführungsform werden zum Reduzieren des Datenverkehrs über die Hochgeschwindigkeitsverknüpfung 1640 Verzerrungstechniken verwendet, um sicherzustellen, dass es sich bei den in den Grafikspeichern 1633(1)-1633(M) gespeicherten Daten um Daten handelt, die am häufigsten durch die Grafikverarbeitungs-Engines 1631(1)-1631(N) verwendet werden und vorzugsweise nicht durch die Kerne 1660A-1660D verwendet werden (zumindest nicht häufig). Auf ähnliche Weise versucht in mindestens einer Ausführungsform ein Verzerrungsmechanismus, Daten, die von den Kernen (und vorzugsweise nicht von den Grafikverarbeitungs-Engines 1631(1)-1631(N)) benötigt werden, innerhalb der Caches 1662A-1662D, 1656 und des Systemspeichers 1614 zu behalten.
  • 16C veranschaulicht eine weitere beispielhafte Ausführungsform, bei der die Beschleuniger-Integrationsschaltung 1636 in den Prozessor 1607 integriert ist. In dieser Ausführungsform kommunizieren die Grafikverarbeitungs-Engines 1631(1)-1631(N) direkt über die Hochgeschwindigkeitsverknüpfung 1640 mit der Beschleuniger-Integrationsschaltung 1636 über die Schnittstelle 1637 und die Schnittstelle 1635 (die wiederum eine beliebige Form von Bus- oder Schnittstellenprotokoll sein können). In mindestens einer Ausführungsform kann die Beschleuniger-Integrationsschaltung 1636 ähnliche Operationen durchführen wie diejenigen, die in Bezug auf 16B beschrieben sind, aber möglicherweise mit einem höheren Durchsatz, da sie sich in unmittelbarer Nähe zu dem Kohärenzbus 1664 und den Caches 1662A-1662D, 1656 befindet. Mindestens eine Ausführungsform unterstützt unterschiedliche Programmiermodelle, einschließlich eines Programmiermodells mit dediziertem Prozess (ohne Virtualisierung des Grafikbeschleunigungsmoduls) und gemeinsam genutzter Programmiermodelle (mit Virtualisierung), die Programmiermodelle beinhalten können, die durch die Beschleuniger-Integrationsschaltung 1636 gesteuert werden, und Programmiermodelle, die durch das Grafikbeschleunigungsmodul 1646 gesteuert werden.
  • In mindestens einer Ausführungsform sind die Grafikverarbeitungs-Engines 1631(1)-1631(N) für eine einzelne Anwendung oder einen einzelnen Prozess unter einem einzelnen Betriebssystem dediziert. In mindestens einer Ausführungsform kann eine einzelne Anwendung andere Anwendungsanforderungen zu der Grafikverarbeitungs-Engines 1631(1)-1631(N) lenken und so eine Virtualisierung innerhalb einer VM/Partition bereitstellen.
  • In mindestens einer Ausführungsform können die Grafikverarbeitungs-Engines 1631(1)-1631(N) von mehreren VM-/Anwendungspartitionen gemeinsam genutzt werden. In mindestens einer Ausführungsform können gemeinsam genutzte Modelle einen System-Hypervisor verwenden, um die Grafikverarbeitungs-Engines 1631(1)-1631(N) zu virtualisieren und den Zugriff durch jedes Betriebssystem zu ermöglichen. Bei Systemen mit einzelner Partition ohne Hypervisor befinden sich die Grafikverarbeitungs-Engines 1631(1)-1631(N) in mindestens einer Ausführungsform im Besitz eines Betriebssystems. In mindestens einer Ausführungsform kann ein Betriebssystem die Grafikverarbeitungs-Engines 1631(1)-1631(N) virtualisieren, um Zugriff auf jeden Prozess oder jede Anwendung bereitzustellen.
  • In mindestens einer Ausführungsform wählt das Grafikbeschleunigungsmodul 1646 oder eine einzelne Grafikverarbeitungs-Engine 1631(1)-1631(N) ein Prozesselement unter Verwendung eines Prozessidentifikators aus. In mindestens einer Ausführungsform sind die Prozesselemente in dem Systemspeicher 1614 gespeichert und unter Verwendung der hierin beschriebenen Technik zur Übersetzung von effektiven Adressen in reale Adressen adressierbar. In mindestens einer Ausführungsform kann ein Prozessidentifikator ein implementationsspezifischer Wert sein, der einem Host-Prozess bereitgestellt wird, wenn er seinen Kontext bei der Grafikverarbeitungs-Engine 1631(1)-1631(N) registriert (das heißt, die Systemsoftware aufruft, um ein Prozesselement zu einer mit dem Prozesselement verknüpften Liste hinzuzufügen). In mindestens einer Ausführungsform können die unteren 16 Bit eines Prozessidentifikators eine Abweichung eines Prozesselements innerhalb einer mit dem Prozesselement verknüpften Liste sein.
  • 16D veranschaulicht einen beispielhaften Beschleunigerintegrations-Slice 1690. In mindestens einer Ausführungsform umfasst ein „Slice“ einen vorgegebenen Abschnitt der Verarbeitungsressourcen der Beschleuniger-Integrationsschaltung 1636. In mindestens einer Ausführungsform ist eine Anwendung effektiver Adressraum 1682 innerhalb des Systemspeichers 1614, der Prozesselemente 1683 speichert. In mindestens einer Ausführungsform werden Prozesselemente 1683 als Reaktion auf GPU-Aufrufe 1681 von Anwendungen 1680, die auf dem Prozessor 1607 ausgeführt werden, gespeichert. In mindestens einer Ausführungsform enthält ein Prozesselement 1683 den Prozesszustand für die entsprechende Anwendung 1680. In mindestens einer Ausführungsform kann ein in dem Prozesselement 1683 enthaltener Arbeitsdeskriptor (work descriptor- WD) 1684 eine einzelne durch eine Anwendung angeforderte Aufgabe sein oder einen Zeiger auf eine Warteschlange von Aufgaben enthalten. In mindestens einer Ausführungsform ist der WD 1684 ein Zeiger auf eine Aufgabeanforderungswarteschlange im effektiven Adressraum 1682 einer Anwendung.
  • In mindestens einer Ausführungsform können das Grafikbeschleunigungsmodul 1646 und/oder die einzelnen Grafikverarbeitungs-Engines 1631(1 )-1631(N) von allen oder einer Teilmenge der Prozesse in einem System gemeinsam genutzt werden. In mindestens einer Ausführungsform kann eine Infrastruktur zum Einrichten der Prozesszustände und zum Senden eines WD 1684 an ein Grafikbeschleunigungsmodul 1646 zum Starten einer Aufgabe in einer virtualisierten Umgebung enthalten sein.
  • In mindestens einer Ausführungsform ist ein Programmiermodell für dedizierte Prozesse implementierungsspezifisch. In mindestens einer Ausführungsform besitzt in diesem Modell ein einzelner Prozess das Grafikbeschleunigungsmodul 1646 oder eine einzelne Grafikverarbeitungs-Engine 1631. Wenn das Grafikbeschleunigungsmodul 1646 durch einen einzelnen Prozess in Besitz genommen ist, initialisiert ein Hypervisor in mindestens einer Ausführungsform die Beschleuniger-Integrationsschaltung 1636 für eine besitzende Partition und ein Betriebssystem initialisiert die Beschleuniger-Integrationsschaltung 1636 für einen besitzenden Prozess, wenn das Grafikbeschleunigungsmodul 1646 zugeordnet ist.
  • In mindestens einer Ausführungsform ruft im Betrieb eine WD-Abrufeinheit 1691 in der Beschleuniger-Integrations-Slice 1690 den nächsten WD 1684 ab, der eine Angabe der Arbeit beinhaltet, die von einer oder mehreren Grafikverarbeitungs-Engines des Grafikbeschleunigungsmoduls 1646 zu erledigen ist. In mindestens einer Ausführungsform können Daten von dem WD 1684 in den Registern 1645 gespeichert und durch die MMU 1639, die Unterbrechungsverwaltungsschaltung 1647 und/oder die Kontextverwaltungsschaltung 1648 verwendet werden, wie veranschaulicht. Eine Ausführungsform der MMU 1639 beinhaltet zum Beispiel eine Segment-/Seitenlaufschaltung zum Zugreifen auf Segment-/Seitentabellen 1686 innerhalb des virtuellen Adressraums 1685 eines OS. In mindestens einer Ausführungsform kann die Unterbrechungsverwaltungsschaltung 1647 von dem Grafikbeschleunigungsmodul 1646 empfangene Unterbrechungsereignisse 1692 verarbeiten. Beim Durchführen von Grafikoperationen wird in mindestens einer Ausführungsform eine durch eine Grafikverarbeitungs-Engine 1631(1)-1631(N) erzeugte effektive Adresse 1693 durch die MMU 1639 in eine reale Adresse übersetzt.
  • In einer Ausführungsform werden Register 1645 für jede Grafikverarbeitungs-Engine 1631(1)-1631(N) und/oder jedes Grafikbeschleunigungsmodul 1646 dupliziert und sie können durch einen Hypervisor oder ein Betriebssystem initialisiert werden. Jedes dieser duplizierten Register kann in mindestens einer Ausführungsform in einer Beschleuniger-Integrations-Slice 1690 beinhaltet sein. Beispielhafte Register, die von einem Hypervisor initialisiert werden können, sind in Tabelle 1 gezeigt. Tabelle 1 - Durch Hypervisor initialisierte Register
    Register-Nr. Beschreibung
    1 Slice-Steuerregister
    2 Bereichszeiger geplante Prozesse reale Adresse (RA)
    3 Autoritätsmasken-Überschreibungsregister
    4 Unterbrechungsvektor-Tabelleneintragsversatz
    5 Unterbrechungsvektor-Tabelleneintragsbegrenzung
    6 Zustandsregister
    7 Logische Partitions-ID
    8 Datensatzzeiger Hypervisor-Beschleuniger-Nutzung reale Adresse (RA)
    9 Speicherbeschreibungsregister
  • Beispielhafte Register, die durch ein Betriebssystem initialisiert werden können, sind in Tabelle 2 gezeigt. Tabelle 2 - Durch das Betriebssystem initialisierte Register
    Register-Nr. Beschreibung
    1 Prozess- und Thread-Identifikation
    2 Kontext-Sicherungs-/-Wiederherstellungszeiger effektive Adresse (EA)
    3 Datensatzzeiger Beschleuniger-Nutzung virtuelle Adresse (VA)
    4 Speichersegmenttabellenzeiger virtuelle Adresse (VA)
    5 Autoritätsmaske
    6 Arbeitsdeskriptor
  • In mindestens einer Ausführungsform ist jeder WD 1684 spezifisch für ein konkretes Grafikbeschleunigungsmodul 1646 und/oder die Grafikverarbeitungs-Engines 1631(1)-1631(N). In mindestens einer Ausführungsform enthält er alle Informationen, die für eine Grafikverarbeitungs-Engine 1631(1)-1631(N) erforderlich sind, um Arbeit zu verrichten, oder er kann ein Zeiger auf einen Speicherort sein, an dem eine Anwendung eine Befehlswarteschlange von abzuschließender Arbeit eingerichtet hat.
  • 16E veranschaulicht zusätzliche Details für eine beispielhafte Ausführungsform eines gemeinsam genutzten Modells. Diese Ausführungsform beinhaltet einen realen Hypervisor-Adressraum 1698, in dem eine Prozesselementliste 1699 gespeichert ist. In mindestens einer Ausführungsform kann auf den realen Hypervisor-Adressraum 1698 über einen Hypervisor 1696 zugegriffen werden, der die Grafikbeschleunigungsmodul-Engines für das Betriebssystem 1695 virtualisiert.
  • In mindestens einer Ausführungsform ermöglichen gemeinsam genutzte Programmiermodelle, dass alle oder eine Teilmenge von Prozessen aus allen oder einer Teilmenge von Partitionen in einem System ein Grafikbeschleunigungsmodul 1646 verwenden. In mindestens einer Ausführungsform gibt es zwei Programmiermodelle, bei denen das Grafikbeschleunigungsmodul 1646 von mehreren Prozessen und Partitionen gemeinsam genutzt wird, nämlich über Zeit-Slices gemeinsam genutzt und über gerichtete Grafik gemeinsam genutzt.
  • In mindestens einer Ausführungsform besitzt in diesem Modell der System-Hypervisor 1696 das Grafikbeschleunigungsmodul 1646 und stellt dessen Funktion allen Betriebssystemen 1695 zur Verfügung. Damit ein Grafikbeschleunigungsmodul 1646 die Virtualisierung durch den System-Hypervisor 1696 unterstützt, muss in mindestens einer Ausführungsform das Grafikbeschleunigungsmodul 1646 bestimmte Anforderungen einhalten, wie etwa (1) die Aufgabenanforderung einer Anwendung muss autonom sein (das heißt, der Zustand muss zwischen den Aufgaben nicht beibehalten werden), oder das Grafikbeschleunigungsmodul 1646 muss einen Mechanismus zum Sichern und Wiederherstellen von Kontext bereitstellen, (2) das Grafikbeschleunigungsmodul 1646 garantiert, dass die Aufgabenanforderung einer Anwendung innerhalb einer vorgegebenen Zeitspanne abgeschlossen wird, einschließlich etwaiger Übersetzungsfehler, oder das Grafikbeschleunigungsmodul 1646 stellt eine Fähigkeit bereit, die Verarbeitung einer Aufgabe vorwegzunehmen, und (3) dem Grafikbeschleunigungsmodul 1646 muss Fairness zwischen den Prozessen garantiert werden, wenn es in einem gerichteten gemeinsam genutzten Programmiermodell arbeitet.
  • In mindestens einer Ausführungsform muss die Anwendung 1680 einen Systemaufruf des Betriebssystems 1695 mit einem Grafikbeschleunigungsmodultyp, einem Arbeitsdeskriptor (WD), einem Autoritätsmaskenregister(Authority Mask Register - AMR)-Wert und einem Kontext-Sicherungs-/-Wiederherstellungsbereichszeiger (Context Save/Restore Area Pointer - CSRP) ausführen. In mindestens einer Ausführungsform beschreibt der Typ des Grafikbeschleunigungsmoduls eine gezielte Beschleunigungsfunktion für einen Systemaufruf. In mindestens einer Ausführungsform kann der Typ des Grafikbeschleunigungsmoduls ein systemspezifischer Wert sein. In mindestens einer Ausführungsform ist der WD spezifisch für das Grafikbeschleunigungsmodul 1646 formatiert und kann in Form eines Befehls des Grafikbeschleunigungsmoduls 1646, eines effektiven Adresszeigers auf eine benutzerdefinierte Struktur, eines effektiven Adresszeigers auf eine Befehlswarteschlange oder einer beliebigen anderen Datenstruktur vorliegen, welche die vom Grafikbeschleunigungsmodul 1646 zu verrichtende Arbeit beschreibt.
  • In mindestens 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 Wert, der an ein Betriebssystem übergeben wird, vergleichbar mit einer Anwendung, die einen AMR festlegt. Falls in mindestens einer Ausführungsform Implementationen der Beschleuniger-Integrationsschaltung 1636 (nicht gezeigt) und des Grafikbeschleunigungsmoduls 1646 kein Benutzer-Autoritätsmasken-Überschreibungsregister (User Authority Mask Override Register - UAMOR) unterstützen, kann ein Betriebssystem einen derzeitigen UAMOR-Wert auf einen AMR-Wert anwenden, bevor ein AMR in einem Hypervisor-Aufruf übergeben wird. In mindestens einer Ausführungsform kann der Hypervisor 1696 optional einen derzeitigen Wert für ein Autoritätsmasken-Überschreibungsregister (Authority Mask Override Register - AMOR) anwenden, bevor ein AMR in dem Prozesselement 1683 platziert wird. In mindestens einer Ausführungsform ist CSRP eines der Register 1645, die eine effektive Adresse eines Bereichs im effektiven Adressraum 1682 einer Anwendung für das Grafikbeschleunigungsmodul 1646 zum Sichern und Wiederherstellen des Kontextzustands enthalten. In mindestens einer Ausführungsform ist dieser Zeiger optional, falls zwischen Aufgaben oder bei der Präemption einer Aufgabe kein Zustand gespeichert werden muss. In mindestens einer Ausführungsform kann der Kontext-Sicherungs-/- Wiederherstellungsbereich ein gepinnter Systemspeicher sein.
  • Beim Empfang eines Systemaufrufs kann das Betriebssystem 1695 überprüfen, ob die Anwendung 1680 registriert ist und die Berechtigung zur Verwendung des Grafikbeschleunigungsmoduls 1646 erhalten hat. In mindestens einer Ausführungsform ruft das Betriebssystem 1695 dann den Hypervisor 1696 mit den in Tabelle 3 gezeigten Informationen auf. Tabelle 3 - OS-zu-Hypervisor-Aufrufparameter
    Parameter-Nr. Beschreibung
    1 Ein Arbeitsdeskriptor (WD)
    2 Ein Autoritätsmaskenregister(AMR)-Wert (möglicherweise maskiert)
    3 Ein Kontext-Sicherungs-/-Wiederherstellungsbereichszeiger (CSRP) mit effektiver Adresse (EA)
    4 Eine Prozess-ID (PID) und optionale Thread-ID (TID)
    5 Ein Beschleunigernutzungsdatensatzzeiger (accelerator utilization record pointer - AURP) mit virtueller Adresse (VA)
    6 Virtuelle Adresse eines Speichersegmenttabellenzeigers (storage segment table pointer - SSTP)
    7 Eine logische Unterbrechungsdienstnummer (logical interrupt service number - LISN)
  • In mindestens einer Ausführungsform prüft der Hypervisor 1696 beim Empfang eines Hypervisor-Aufrufs, ob das Betriebssystem 1695 registriert ist und die Berechtigung zur Verwendung des Grafikbeschleunigungsmoduls 1646 erhalten hat. In mindestens einer Ausführungsform setzt der Hypervisor 1696 dann das Prozesselement 1683 in eine mit dem Prozesselement verknüpfte Liste für einen entsprechenden Typ des Grafikbeschleunigungsmoduls 1646 ein. In mindestens einer Ausführungsform kann ein Prozesselement die in Tabelle 4 gezeigten Informationen beinhalten. Tabelle 4 - Prozesselementinformationen
    Element-Nr. Beschreibung
    1 Ein Arbeitsdeskriptor (WD)
    2 Ein Autoritätsmaskenregister(AMR)-Wert (möglicherweise maskiert)
    3 Ein Kontext-Sicherungs-/-Wiederherstellungsbereichszeiger (CSRP) mit effektiver Adresse (EA)
    4 Eine Prozess-ID (PID) und optionale Thread-ID (TID)
    5 Ein Beschleunigernutzungsdatensatzzeiger (accelerator utilization record pointer - AURP) mit virtueller Adresse (VA)
    6 Virtuelle Adresse eines Speichersegmenttabellenzeigers (storage segment table pointer - SSTP)
    7 Eine logische Unterbrechungsdienstnummer (logical interrupt service number - LISN)
    8 Unterbrechungsvektortabelle, abgeleitet von Hypervisor-Aufrufparametern
    9 Ein Zustandsregister(SR)-Wert
    10 Eine logische Partitions-ID (LPID)
    11 Ein Datensatzzeiger Hypervisor-Beschleuniger-Nutzung mit realer Adresse (RA)
    12 Speicherdeskriptorregister (Storage Descriptor Register- SDR)
  • In mindestens einer Ausführungsform initialisiert der Hypervisor eine Vielzahl von Registern 1645 für Beschleunigerintegrations-Slices 1690.
  • Wie in 16F veranschaulicht, wird in mindestens einer Ausführungsform ein einheitlicher Speicher verwendet, der über einen gemeinsamen virtuellen Speicheradressraum adressierbar ist, der für den Zugriff auf die physischen Prozessorspeicher 1601(1)-1601(N) und die GPU-Speicher 1620(1)-1620(N) verwendet wird. In dieser Implementation nutzen Operationen, die auf den GPUs 1610(1)-1610(N) ausgeführt werden, einen gleichen virtuellen/effektiven Speicheradressraum für den Zugriff auf die Prozessorspeicher 1601(1)-1601(M) und umgekehrt, was die Programmierbarkeit vereinfacht. In mindestens einer Ausführungsform wird ein erster Abschnitt eines virtuellen/effektiven Adressraums dem Prozessorspeicher 1601(1) zugewiesen, ein zweiter Abschnitt dem zweiten Prozessorspeicher 1601(N), ein dritter Abschnitt dem GPU-Speicher 1620(1) und so weiter. In mindestens einer Ausführungsform wird dadurch ein gesamter virtueller/effektiver Speicherraum (mitunter als effektiver Adressraum bezeichnet) über jeden der Prozessorspeicher 1601 und GPU-Speicher 1620 verteilt, was ermöglicht, dass ein beliebiger Prozessor oder eine beliebige GPU auf einen beliebigen physischen Speicher mit einer virtuellen Adresse zugreifen kann, die auf diesen Speicher abgebildet ist.
  • In einer Ausführungsform stellt die Verzerrungs-/Kohärenzverwaltungsschaltung 1694A-1694E innerhalb einer oder mehrerer MMUs 1639A-1639E die Cache-Kohärenz zwischen Caches eines oder mehrerer Host-Prozessoren (z. B. 1605) und GPUs 1610 sicher und implementiert Verzerrungstechniken, die physische Speicher angeben, in denen bestimmte Typen von Daten gespeichert werden sollten. Wenngleich in mindestens einer Ausführungsform mehrere Instanzen der Verzerrungs-/Kohärenzverwaltungsschaltung 1694A-1694E in 16F veranschaulicht sind, kann die Verzerrungs-/Kohärenzschaltung innerhalb einer MMU eines oder mehrerer Host-Prozessoren 1605 und/oder innerhalb der Beschleuniger-Integrationsschaltung 1636 implementiert sein.
  • In einer Ausführungsform können GPU-Speicher 1620 als Teil des Systemspeichers zugeordnet werden und der Zugriff erfolgt über die Technologie des gemeinsam genutzten virtuellen Speichers (SVM), ohne dass die mit der vollständigen System-Cache-Kohärenz verbundenen Leistungsnachteile auftreten. In mindestens einer Ausführungsform stellt eine Fähigkeit, dass auf GPU-Speicher 1620 als Systemspeicher ohne lästigen Cache-Kohärenz-Overhead zugegriffen wird, eine vorteilhafte Betriebsumgebung für GPU-Abladung bereit. In mindestens einer Ausführungsform ermöglicht diese Anordnung es der Software des Host-Prozessors 1605, ohne den Overhead der traditionellen E/A-DMA-Datenkopien Operanden einzurichten und auf Berechnungsergebnisse zuzugreifen. In mindestens einer Ausführungsform sind an derartigen traditionellen Kopien Treiberaufrufe, Unterbrechungen und auf Speicher abgebildete E/A-Zugriffe (memory mapped I/O accesses - MMIO-Zugriffe) beteiligt, die alle in Bezug auf einfache Speicherzugriffe ineffizient sind. In mindestens einer Ausführungsform kann eine Fähigkeit, ohne Cache-Kohärenz-Overheads auf GPU-Speicher 1620 zuzugreifen, für die Ausführungszeit einer abgeladenen Berechnung entscheidend sein. In Fällen mit erheblichem Streaming-Schreibspeicherverkehr kann zum Beispiel der Cache-Kohärenz-Overhead eine effektive Schreibbandbreite, die durch eine GPU 1610 gesehen wird, in mindestens einer Ausführungsform erheblich reduzieren. In mindestens einer Ausführungsform können die Effizienz der Operandeneinrichtung, die Effizienz des Ergebniszugriffs und die Effizienz der GPU-Berechnung eine Rolle bei der Bestimmung der Effektivität einer GPU-Offload spielen.
  • In mindestens einer Ausführungsform wird die Auswahl von GPU-Verzerrung und Host-Prozessorverzerrung durch eine Verzerrungs-Tracker-Datenstruktur angetrieben. In mindestens einer Ausführungsform kann zum Beispiel eine Verzerrungstabelle verwendet werden, die eine seitengranulare Struktur sein kann (z. B. mit einer Granularität einer Speicherseite gesteuert), die 1 oder 2 Bit pro GPU-gebundener Speicherseite beinhaltet. In mindestens einer Ausführungsform kann eine Verzerrungstabelle in einem gestohlenen Speicherbereich eines oder mehrerer GPU-Speicher 1620 implementiert werden, mit oder ohne Verzerrungs-Cache in einer GPU 1610 (um z. B. häufig/kürzlich verwendete Einträge einer Verzerrungstabelle zwischenzuspeichern). Alternativ kann in mindestens einer Ausführungsform eine gesamte Verzerrungstabelle innerhalb einer GPU aufbewahrt werden.
  • In mindestens einer Ausführungsform wird vor dem eigentlichen Zugriff auf einen GPU-Speicher auf einen Verzerrungstabelleneintrag zugegriffen, der mit jedem Zugriff auf einen GPU-Speicher 1620 verknüpft ist, wodurch folgende Operationen ausgelöst werden. In mindestens einer Ausführungsform werden lokale Anforderungen von einer GPU 1610, die ihre Seite in der GPU-Verzerrung finden, direkt an einen entsprechenden GPU-Speicher 1620 weitergeleitet. In mindestens einer Ausführungsform werden lokale Anforderungen von einer GPU, die ihre Seite in der Host-Verzerrung finden, an den Prozessor 1605 weitergeleitet (z. B. über eine Hochgeschwindigkeitsverknüpfung, wie hierin beschrieben). In mindestens einer Ausführungsform schließen Anforderungen von dem Prozessor 1605, die eine angeforderte Seite in der Host-Prozessor-Verzerrung finden, eine Anforderung wie ein normales Lesen des Speichers ab. Alternativ können Anforderungen, die an eine GPU-Verzerrungsseite gerichtet sind, an eine GPU 1610 weitergeleitet werden. In mindestens einer Ausführungsform kann eine GPU dann eine Seite in eine Host-Prozessor-Neigung umwandeln, wenn er aktuell keine Seite verwendet. In mindestens einer Ausführungsform kann der Bias-Zustand einer Seite entweder durch einen softwarebasierten Mechanismus, einen hardwareunterstützten softwarebasierten Mechanismus oder, für eine begrenzte Anzahl von Fällen, einen rein hardwarebasierten Mechanismus geändert werden.
  • In mindestens einer Ausführungsform verwendet ein Mechanismus zum Ändern des Verzerrungszustands einen API-Aufruf (z. B. OpenCL), der wiederum den Gerätetreiber einer GPU aufruft, der wiederum eine Nachricht (oder einen Befehlsdeskriptor) an eine GPU sendet, um sie anzuweisen, einen Verzerrungszustand zu ändern und bei einigen Übergängen eine Operation zum Spülen des Cache in einem Host auszuführen. In mindestens einer Ausführungsform wird eine Cache-Leerungsoperation für einen Übergang von der Verzerrung des Host-Prozessors 1605 zur Verzerrung der GPU verwendet, jedoch nicht für einen entgegengesetzten Übergang.
  • In einer Ausführungsform wird die Cache-Kohärenz aufrechterhalten, indem bewirkt wird, dass GPU-verzerrte Seiten durch den Host-Prozessor 1605 vorübergehend nicht zwischengespeichert werden können. Um auf diese Seiten zuzugreifen, kann in mindestens einer Ausführungsform der Prozessor 1605 Zugriff von der GPU 1610 anfordern, die den Zugriff sofort gewähren kann oder auch nicht. Um die Kommunikation zwischen dem Prozessor 1605 und der GPU 1610 zu reduzieren, ist es daher in mindestens einer Ausführungsform vorteilhaft, sicherzustellen, dass GPU-verzerrte Seiten solche sind, die durch eine GPU, aber nicht den Host-Prozessor 1605, benötigt werden und umgekehrt.
  • Die Hardwarestrukturen 815 werden verwendet, um eine oder mehrere Ausführungsformen durchzuführen. Details bezüglich Hardwarestrukturen 815 können hierin in Verbindung mit 8A und/oder 8B bereitgestellt sein.
  • 17 veranschaulicht beispielhafte integrierte Schaltungen und zugehörige Grafikprozessoren, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden können, gemäß verschiedenen hierin beschriebenen Ausführungsformen. Zusätzlich zu dem, was veranschaulicht ist, können andere Logiken und Schaltungen in mindestens einer Ausführungsform enthalten sein, einschließlich zusätzlicher Grafikprozessoren/Kerne, Peripherieschnittstellensteuerungen oder Universalprozessorkerne.
  • 17 ist ein Blockdiagramm, das eine beispielhafte integrierte Schaltung 1700 als System auf einem Chip, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann, veranschaulicht, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet die integrierte Schaltung 1700 einen oder mehrere Anwendungsprozessoren 1705 (z. B. CPUs), mindestens einen Grafikprozessor 1710 und sie kann zusätzlich einen Bildprozessor 1715 und/oder einen Videoprozessor 1720 beinhalten, von denen jeder beliebige ein modularer IP-Kern sein kann. In mindestens einer Ausführungsform beinhaltet die integrierte Schaltung 1700 eine Peripherie- oder Buslogik, die eine USB-Steuerung 1725, eine UART-Steuerung 1730, eine SPI/SDIO-Steuerung 1735 und eine I22S/I22C-Steuerung 1740 beinhaltet. In mindestens einer Ausführungsform kann die integrierte Schaltung 1700 eine Anzeigevorrichtung 1745 beinhalten, die an eine oder mehrere von einer High-Definition-Multimedia-Interface-(HDMI-)Steuerung 1750 und einer Mobile-Industry-Processor-Interface-(MIPI-)Anzeigeschnittstelle 1755 gekoppelt ist. In mindestens einer Ausführungsform kann die Speicherung durch ein Flash-Speicherteilsystem 1760 bereitgestellt sein, das Flash-Speicher und eine Flash-Speichersteuerung beinhaltet. In mindestens einer Ausführungsform kann eine Speicherschnittstelle über eine Speichersteuerung 1765 für den Zugriff auf SDRAM- oder SRAM-Speichervorrichtungen bereitgestellt sein. In mindestens einer Ausführungsform beinhalten einige integrierte Schaltungen zusätzlich eine eingebettete Sicherheits-Engine 1770.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 in der integrierten Schaltung 1700 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • In mindestens einer Ausführungsform können Permutationen 512 und Beschneidung 528 zur Erzwingung von n:m-strukturierter Spärlichkeit in der integrierten Schaltung 1700 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • 18A-18B veranschaulichen beispielhafte integrierte Schaltungen und zugehörige Grafikprozessoren, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden können, gemäß verschiedenen hierin beschriebenen Ausführungsformen. Zusätzlich zu dem, was veranschaulicht ist, können andere Logik und Schaltungen in mindestens einer Ausführungsform enthalten sein, einschließlich zusätzlicher Grafikprozessoren/-kerne, Peripherieschnittstellensteuerungen oder Universalprozessorkerne.
  • Die 18A-18B sind Blockdiagramme, die beispielhafte Grafikprozessoren zur Verwendung innerhalb eines SoC gemäß hierin beschriebenen Ausführungsformen veranschaulichen. 18A veranschaulicht einen beispielhaften Grafikprozessor 1810 einer integrierten Schaltung als System auf einem Chip, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann, gemäß mindestens einer Ausführungsform. 18B veranschaulicht einen zusätzlichen beispielhaften Grafikprozessor 1840 einer integrierten Schaltung als System auf einem Chip, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der Grafikprozessor 1810 aus 18A ein Grafikprozessorkern mit niedriger Leistung. In mindestens einer Ausführungsform ist der Grafikprozessor 1840 aus 18B ein Grafikprozessorkern mit höherer Rechenleistung. In mindestens einer Ausführungsform kann jeder der Grafikprozessoren 1810, 1840 eine Variante des Grafikprozessors 1710 aus 17 sein.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 1810 einen Vertex-Prozessor 1805 und einen oder mehrere Fragmentprozessor(en) 1815A-1815N (z. B. 1815A, 1815B, 1815C, 1815D bis 1815N-1 und 1815N). In mindestens einer Ausführungsform kann der Grafikprozessor 1810 unterschiedliche Shader-Programme über separate Logik ausführen, sodass der Vertexprozessor 1805 zum Ausführen von Operationen für Vertex-Shader-Programme optimiert ist, während ein oder mehrere Fragmentprozessoren 1815A-1815N Shading-Operationen für Fragmente (z. B. Pixel) für Fragment- oder Pixel-Shader-Programme ausführen. In mindestens einer Ausführungsform führt der Vertexprozessor 1805 eine Vertexverarbeitungsstufe einer 3D-Grafik-Pipeline durch und erzeugt Primitive und Vertexdaten. In mindestens einer Ausführungsform verwenden die Fragmentprozessoren 1815A-1815N Primitiv- und Vertexdaten, die durch den Vertexprozessor 1805 erzeugt wurden, um einen Bildspeicher zu produzieren, der auf einer Anzeigevorrichtung angezeigt wird. In mindestens einer Ausführungsform sind die Fragmentprozessoren 1815A-1815N zum Ausführen von Fragment-Shader-Programmen optimiert, wie sie in einer OpenGL-API bereitgestellt sind, die zum Durchführen ähnlicher Operationen wie ein Pixel-Shader-Programm verwendet werden können, wie es in einer Direct-3D-API bereitgestellt ist.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 1810 zusätzlich eine oder mehrere Speicherverwaltungseinheiten (MMUs) 1820A-1820B, Caches 1825A-1825B und Schaltungszusammenschaltungen 1830A-1830B. In mindestens einer Ausführungsform stellen eine oder mehrere MMUs 1820A-1820B die Abbildung von virtuellen auf physische Adressen für den Grafikprozessor 1810 bereit, einschließlich für den Vertexprozessor 1805 und/oder die Fragmentprozessoren 1815A-1815N, der/die auf in Speicher gespeicherte Vertex- oder Bild-/Texturdaten verweisen kann/können, zusätzlich zu den in einem oder mehreren Caches 1825A-1825B gespeicherten Vertex- oder Bild-/Texturdaten. In mindestens einer Ausführungsform können eine oder mehrere MMUs 1820A-1820B mit anderen MMUs innerhalb eines Systems synchronisiert werden, einschließlich einer oder mehrerer MMUs, die mit einem oder mehreren Anwendungsprozessoren 1705, Bildprozessoren 1715 und/oder Videoprozessoren 1720 aus 17 assoziiert sind, sodass jeder Prozessor 1705-1720 an einem gemeinsam genutzten oder einheitlichen virtuellen Speichersystem teilnehmen kann. In mindestens einer Ausführungsform ermöglichen es eine oder mehrere Schaltungszusammenschaltungen 1830A-1830B dem Grafikprozessor 1810, entweder über einen internen Bus des SoC oder über eine direkte Verbindung Schnittstellen mit anderen IP-Kernen innerhalb des SoC zu bilden.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 1840 einen oder mehrere Shader-Kerne 1855A-1855N (z. B., 1855A, 1855B, 1855C, 1855D, 1855E, 1855F, bis 1855N-1 und 1855N), wie in 18B gezeigt, die eine einheitliche Shader-Kern-Architektur bereitstellt, in der ein einziger 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 Compute-Shadern. In mindestens einer Ausführungsform kann die Anzahl der Shader-Kerne variieren. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 1840 einen Zwischenkern-Task-Verwalter 1845, der als Thread-Zuteiler fungiert, um Ausführungs-Threads einem oder mehreren Shader-Kernen 1855A-1855N zuzuteilen, sowie eine Kachelungseinheit 1858 zum Beschleunigen von Kachelungsoperationen für das kachelbasierte Rendering, bei dem Rendering-Operationen für eine Szene in dem Bildraum unterteilt werden, um zum Beispiel die lokale räumliche Kohärenz innerhalb einer Szene auszunutzen oder die Verwendung interner Caches zu optimieren.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 in der integrierten Schaltung 18A und/oder 18B für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • In mindestens einer Ausführungsform können Permutationen 512 und Beschneidung 528 zur Erzwingung von n:m-strukturierter Spärlichkeit in der integrierten Schaltung 18A und/oder 18B für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • 19A-19B veranschaulichen zusätzliche beispielhafte Grafikprozessorlogik, gemäß hierin beschriebenen Ausführungsformen. 19A veranschaulicht einen Grafikkern 1900, der in mindestens einer Ausführungsform innerhalb des Grafikprozessors 1710 aus 17 enthalten sein kann und in mindestens einer Ausführungsform ein einheitlicher Shader-Kern 1855A-1855N wie in 18B sein kann. 19B veranschaulicht eine hochparallele Universal-Grafikverarbeitungseinheit (general-purpose graphics processing unit - „GPGPU“) 1930, die in mindestens einer Ausführungsform für den Einsatz auf einem Multi-Chip-Modul geeignet ist.
  • In mindestens einer Ausführungsform beinhaltet der Grafikkern 1900 einen gemeinsam genutzten Anweisungszwischenspeicher 1902, eine Textureinheit 1918 und einen Zwischenspeicher/gemeinsam genutzten Speicher 1920, die Ausführungsressourcen innerhalb des Grafikkerns 1900 gemeinsam sind. In mindestens einer Ausführungsform kann der Grafikkern 1900 mehrere Slices 1901A-1901N oder eine Partition für jeden Kern beinhalten, und ein Grafikprozessor kann mehrere Instanzen des Grafikkerns 1900 beinhalten. In mindestens einer Ausführungsform können die Slices 1901A-1901N Unterstützungslogik beinhalten, die einen lokalen Anweisungs-Cache 1904A-1904N, einen Thread-Scheduler 1906A-1906N, einen Thread-Zuteiler 1908A-1908N und einen Satz von Registern 1910A-1910N beinhaltet. In mindestens einer Ausführungsform können die Slices 1901A-1901N einen Satz zusätzlicher Funktionseinheiten (additional function units-AFUs 1912A-1912N), Gleitkommaeinheiten (floating-point units - FPUs 1914A-1914N), arithmetisch-logischer Einheiten für Integer (ALUs 1916A-1916N), Adressberechnungseinheiten (address computational units - ACUs 1913A-1913N), Gleitkommaeinheiten mit doppelter Genauigkeit (double-precision floating-point units - DPFPUs 1915A-1915N) und Matrixverarbeitungseinheiten (matrix processing units - MPUs 1917A-1917N) beinhalten.
  • In mindestens einer Ausführungsform können die FPUs 1914A-1914N Gleitkommaoperationen mit einfacher Genauigkeit (32 Bit) und mit halber Genauigkeit (16 Bit) ausführen, während die DPFPUs 1915A-1915N Gleitkommaoperationen mit doppelter Genauigkeit (64 Bit) ausführen. In mindestens einer Ausführungsform können die ALUs 1916A-1916N ganzzahlige Operationen mit variabler Präzision mit einer Genauigkeit von 8-Bit, 16-Bit und 32-Bit ausführen und können für Operationen mit gemischter Präzision konfiguriert sein. In mindestens einer Ausführungsform können die MPUs 1917A-1917N auch für Matrixoperationen mit gemischter Genauigkeit konfiguriert sein, die Gleitkomma- und 8-Bit-Ganzzahloperationen mit halber Genauigkeit beinhalten. In mindestens einer Ausführungsform können die MPUs 1917-1917N eine Vielfalt von Matrixoperationen durchführen, um Anwendungsrahmen für maschinelles Lernen zu beschleunigen, einschließlich des Ermöglichens der Unterstützung für eine beschleunigte allgemeine Matrix-zu-Matrix-Multiplikation (general matrix to matrix multiplication - GEMM). In mindestens einer Ausführungsform können die AFUs 1912A-1912N zusätzliche logische Operationen ausführen, die nicht von Gleitkomma- oder Ganzzahleinheiten unterstützt werden, die trigonometrische Operationen (z. B. Sinus, Cosinus usw.) beinhalten.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 in Grafikkern 1900 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • In mindestens einer Ausführungsform können Permutationen 512 und Beschneidung 528 zur Erzwingung von n:m-strukturierter Spärlichkeit in Grafikkern 1900 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • 19B veranschaulicht eine Allzweck-Grafikverarbeitungseinheit (GPGPU) 1930, die so konfiguriert werden kann, dass sie in mindestens einer Ausführungsform hochparallele Rechenoperationen durch ein Array von Grafikverarbeitungseinheiten ausführen kann. In mindestens einer Ausführungsform kann die GPGPU 1930 direkt mit anderen Instanzen der GPGPU 1930 verbunden sein, um einen Multi-GPU-Cluster zu erzeugen, um die Trainingsgeschwindigkeit für tiefe neuronale Netze zu verbessern. In mindestens einer Ausführungsform beinhaltet die GPGPU 1930 eine Hostschnittstelle 1932, um eine Verbindung mit einem Hostprozessor zu ermöglichen. In mindestens einer Ausführungsform ist die Host-Schnittstelle 1932 eine PCI-Express-Schnittstelle. In mindestens einer Ausführungsform kann es sich bei der Hostschnittstelle 1932 um eine herstellerspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur handeln. In mindestens einer Ausführungsform empfängt die GPGPU 1930 Befehle von einem Hostprozessor und verwendet einen globalen Scheduler 1934, um Ausführungsthreads, die diesen Befehlen zugeordnet sind, an einen Satz von Rechenclustern 1936A-1936H zu verteilen. In mindestens einer Ausführungsform teilen sich die Rechencluster 1936A-1936H einen schnellen Pufferspeicher 1938. In mindestens einer Ausführungsform kann der Cache-Speicher 1938 als übergeordneter Cache für Cache-Speicher innerhalb der Rechencluster 1936A-1936H dienen.
  • In mindestens einer Ausführungsform beinhaltet die GPGPU 1930 einen Speicher 1944A-1944B, der über einen Satz von Speichersteuerungen 1942A-1942B mit Rechenclustern 1936A-1936H gekoppelt ist. In mindestens einer Ausführungsform kann der Speicher 1944A-1944B verschiedene Typen von Speichervorrichtungen beinhalten, darunter dynamischer Direktzugriffsspeicher (DRAM) oder Grafik-Direktzugriffsspeicher, wie etwa synchroner Grafik-Direktzugriffsspeicher (SGRAM), darunter Grafik-Double-Data-Rate-(GDDR-)Speicher.
  • In mindestens einer Ausführungsform beinhalten die Rechencluster 1936A-1936H jeweils einen Satz von Grafikkernen, wie z. B. den Grafikkern 1900 aus 19A, der mehrere Arten von Integer- und Fließkomma-Logikeinheiten beinhalten kann, die Rechenoperationen bei einer Reihe von Genauigkeiten durchführen können, die auch für Berechnungen des maschinellen Lernens geeignet sind. Zum Beispiel kann in mindestens einer Ausführungsform mindestens eine Teilmenge von Gleitkommaeinheiten in jedem der Rechencluster 1936A-1936H dazu konfiguriert sein, 16-Bit- oder 32-Bit-Gleitkommaoperationen auszuführen, während eine andere Teilmenge von Gleitkommaeinheiten dazu konfiguriert sein können, 64-Bit-Gleitkommaoperationen auszuführen.
  • In mindestens einer Ausführungsform können mehrere Instanzen der GPGPU 1930 dazu konfiguriert sein, als Rechencluster zu arbeiten. In mindestens einer Ausführungsform variiert die Kommunikation, die von den Rechenclustern 1936A-1936H für die Synchronisation und den Datenaustausch verwendet wird, zwischen den Ausführungsformen. In mindestens einer Ausführungsform kommunizieren mehrere Instanzen der GPGPU 1930 über die Hostschnittstelle 1932. In mindestens einer Ausführungsform beinhaltet die GPGPU 1930 einen E/A-Hub 1939, der die GPGPU 1930 mit einer GPU-Link 1940 koppelt, der eine direkte Verbindung zu anderen Instanzen der GPGPU 1930 ermöglicht. In mindestens einer Ausführungsform ist der GPU-Link 1940 an eine dedizierte GPU-zu-GPU-Brücke gekoppelt, welche die Kommunikation und Synchronisation zwischen mehreren Instanzen der GPGPU 1930 ermöglicht. In mindestens einer Ausführungsform ist die GPU-Verknüpfung 1940 mit einer Hochgeschwindigkeitszusammenschaltung gekoppelt, um Daten an andere GPGPUs oder Parallelprozessoren zu übertragen und davon zu empfangen. In mindestens einer Ausführungsform befinden sich mehrere Instanzen der GPGPU 1930 in getrennten Datenverarbeitungssystemen und kommunizieren über eine Netzvorrichtung, auf die über die Hostschnittstelle 1932 zugegriffen werden kann. In mindestens einer Ausführungsform kann die GPU-Verknüpfung 1940 so konfiguriert sein, dass eine Verbindung zu einem Host-Prozessor zusätzlich zu oder alternativ zu der Host-Schnittstelle 1932 ermöglicht wird.
  • In mindestens einer Ausführungsform kann die GPGPU 1930 dazu konfiguriert sein, neuronale Netze zu trainieren. In mindestens einer Ausführungsform kann die GPGPU 1930 innerhalb einer Inferenzplattform verwendet werden. In mindestens einer Ausführungsform, in der die GPGPU 1930 für die Inferenz verwendet wird, kann die GPGPU 1930 weniger Rechencluster 1936A-1936H beinhalten, als wenn die GPGPU 1930 zum Trainieren eines neuronalen Netzes verwendet wird. In mindestens einer Ausführungsform kann sich die dem Speicher 1944A-1944B zugeordnete Speichertechnologie zwischen Inferenz- und Trainingskonfigurationen unterscheiden, wobei Speichertechnologien mit höherer Bandbreite Trainingskonfigurationen gewidmet sind. In mindestens einer Ausführungsform kann eine Inferenzkonfiguration der GPGPU 1930 inferenzspezifische Anweisungen unterstützen. In mindestens einer Ausführungsform kann eine Inferenzierungskonfiguration beispielsweise Unterstützung für eine oder mehrere 8-Bit-Integer-Skalarprodukt-Anweisungen bereitstellen, die während der Inferenzierungsvorgänge für eingesetzte neuronale Netze verwendet werden können.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 in der GPGPU 1930 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • In mindestens einer Ausführungsform können Permutationen 512 und Beschneidung 528 zur Erzwingung von n:m-strukturierter Spärlichkeit in der GPGPU 1930 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • 20 ist ein Blockdiagramm, das ein Rechensystem 2000 veranschaulicht, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet das Rechensystem 2000 ein Verarbeitungsteilsystem 2001, das einen oder mehrere Prozessoren 2002 und einen Systemspeicher 2004 aufweist, die über einen Zusammenschaltungspfad kommunizieren, der einen Speicher-Hub 2005 beinhalten kann. In mindestens einer Ausführungsform kann der Speicher-Hub 2005 eine getrennte Komponente innerhalb einer Chipsatzkomponente sein oder kann in einen oder mehrere Prozessoren 2002 integriert sein. In mindestens einer Ausführungsform ist der Speicher-Hub 2005 über eine Kommunikationsverbindung 2006 mit einem E/A-Teilsystem 2011 gekoppelt. In mindestens einer Ausführungsform beinhaltet das E/A-Teilsystem 2011 einen E/A-Hub 2007, der es dem Rechensystem 2000 ermöglichen kann, Eingaben von einer oder mehreren Eingabevorrichtungen 2008 zu empfangen. In mindestens einer Ausführungsform kann der E/A-Hub 2007 es einer Anzeigesteuerung, die in einem oder mehreren Prozessoren 2002 enthalten sein kann, ermöglichen, einer oder mehreren Anzeigevorrichtungen 2010A Ausgaben bereitzustellen. In mindestens einer Ausführungsform können eine oder mehrere mit dem E/A-Hub 2007 gekoppelte Anzeigevorrichtungen 2010A eine lokale, interne oder eingebettete Anzeigevorrichtung beinhalten.
  • In mindestens einer Ausführungsform beinhaltet das Verarbeitungsteilsystem 2001 einen oder mehrere Parallelprozessor(en) 2012, die über einen Bus oder eine andere Kommunikationsverknüpfung 2013 mit dem Speicher-Hub 2005 gekoppelt sind. In mindestens einer Ausführungsform kann die Kommunikationsverknüpfung 2013 eine/eines von einer beliebigen Anzahl von standardbasierten Kommunikationsverknüpfungstechnologien oder -protokollen verwenden, wie etwa, aber nicht beschränkt auf, PCI Express oder eine anbieterspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur sein. In mindestens einer Ausführungsform bilden ein oder mehrere Parallelprozessoren 2012 ein rechnerisch fokussiertes Parallel- oder Vektorverarbeitungssystem, das eine große Anzahl von Verarbeitungskernen und/oder Verarbeitungsclustern beinhalten kann, wie etwa einen Prozessor mit vielen integrierten Kernen (many-integrated core - MIC). In mindestens einer Ausführungsform bilden einige oder alle der Parallelprozessoren 2012 ein Grafikverarbeitungsteilsystem, das Pixel an eine oder mehrere Anzeigevorrichtungen 2010A ausgeben kann, die über den E/A-Hub 2007 gekoppelt sind. In mindestens einer Ausführungsform können die Parallelprozessoren 2012 zudem eine Anzeigesteuerung und eine Anzeigeschnittstelle (nicht gezeigt) beinhalten, um eine direkte Verbindung zu einer oder mehreren Anzeigevorrichtungen 2010B zu ermöglichen.
  • In mindestens einer Ausführungsform kann eine Systemspeichereinheit 2014 mit dem E/A-Hub 2007 verbunden sein, um einen Speichermechanismus für das Rechensystem 2000 bereitzustellen. In mindestens einer Ausführungsform kann ein E/A-Switch 2016 verwendet werden, um einen Schnittstellenmechanismus bereitzustellen, der Verbindungen zwischen dem E/A-Hub 2007 und anderen Komponenten ermöglicht, wie etwa einem Netzadapter 2018 und/oder einem drahtlosen Netzadapter 2019, die in eine Plattform integriert werden können, sowie verschiedenen anderen Vorrichtungen, die über eine oder mehrere Erweiterungsvorrichtungen 2020 hinzugefügt werden können. In mindestens einer Ausführungsform kann der Netzadapter 2018 ein Ethernet-Adapter oder ein anderer drahtgebundener Netzadapter sein. In mindestens einer Ausführungsform kann der drahtlose Netzadapter 2019 eine oder mehrere Wi-Fi-, Bluetooth-, Nahfeldkommunikations- (NFC-) oder eine andere Netzvorrichtung beinhalten, die ein oder mehrere drahtlose Funkgeräte beinhaltet.
  • In mindestens einer Ausführungsform kann das Rechensystem 2000 andere, nicht explizit gezeigte Komponenten beinhalten, einschließlich USB- oder anderer Portverbindungen, optischer Speicherlaufwerke, Videoaufnahmevorrichtungen und dergleichen, die ebenfalls mit dem E/A-Hub 2007 verbunden sein können. In mindestens einer Ausführungsform können die Kommunikationspfade, die verschiedene Komponenten in 20 zusammenschalten, unter Verwendung beliebiger geeigneter Protokolle implementiert werden, wie etwa auf PCI (Peripheral Component Interconnect) basierender Protokolle (z. B. PCI-Express) oder anderer Bus- oder Punkt-zu-Punkt-Kommunikationsschnittstellen und/oder -protokolle, wie etwa NV-Link-Hochgeschwindigkeitszusammenschaltung, oder Zusammenschaltungsprotokolle.
  • In mindestens einer Ausführungsform beinhalten die Parallelprozessoren 2012 Schaltungen, die für die Grafik- und Videoverarbeitung optimiert sind, einschließlich zum Beispiel Videoausgabeschaltungen, und sie stellen eine Grafikverarbeitungseinheit (GPU) dar. In mindestens einer Ausführungsform beinhalten die Parallelprozessoren 2012 Schaltungen, die für Universalverarbeitung optimiert sind. In mindestens einer Ausführungsform können die Komponenten des Rechensystems 2000 in ein oder mehrere andere Systemelemente auf einer einzelnen integrierten Schaltung integriert sein. Zum Beispiel können in mindestens einer Ausführungsform die Parallelprozessoren 2012, der Speicher-Hub 2005, die Prozessoren 2002 und der E/A-Hub 2007 in eine integrierte Schaltung als System auf einem Chip (SoC) integriert sein. In mindestens einer Ausführungsform können die Komponenten des Rechensystems 2000 in ein einzelnes Gehäuse integriert sein, um eine Konfiguration mit einem System in einem Gehäuse (system in package - SIP) zu bilden. In mindestens einer Ausführungsform kann mindestens ein Abschnitt der Komponenten des Rechensystems 2000 in ein Multi-Chip-Modul (multi-chip module - MCM) integriert sein, das mit anderen Multi-Chip-Modulen zu einem modularen Rechensystem zusammengeschaltet sein kann.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 im System aus FIG. 2000 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • In mindestens einer Ausführungsform können Permutationen 512 und Beschneidung 528 zur Erzwingung von n:m-strukturierter Spärlichkeit im System aus FIG. 2000 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • PROZESSOREN
  • 21A veranschaulicht einen Parallelprozessor 2100 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform können verschiedene Komponenten des Parallelprozessors 2100 unter Verwendung einer oder mehrerer integrierter Schaltungen implementiert werden, wie etwa programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASICs) oder feldprogrammierbare Gate-Arrays (FPGAs). In mindestens einer Ausführungsform ist der veranschaulichte Parallelprozessor 2100 eine Variante eines oder mehrerer Parallelprozessoren 2012, die in 20 gemäß einer beispielhaften Ausführungsform gezeigt sind.
  • In mindestens einer Ausführungsform beinhaltet der Parallelprozessor 2100 eine Parallelverarbeitungseinheit 2102. In mindestens einer Ausführungsform beinhaltet die Parallelverarbeitungseinheit 2102 eine E/A-Einheit 2104, die Kommunikation mit anderen Vorrichtungen ermöglicht, einschließlich anderer Instanzen der Parallelverarbeitungseinheit 2102. In mindestens einer Ausführungsform kann die E/A-Einheit 2104 direkt mit anderen Vorrichtungen verbunden sein. In mindestens einer Ausführungsform ist die E/A-Einheit 2104 über die Verwendung einer Hub- oder Switch-Schnittstelle, wie etwa eines Speicher-Hubs 2105, mit anderen Vorrichtungen verbunden. In mindestens einer Ausführungsform bilden Verbindungen zwischen dem Speicher-Hub 2105 und der E/A-Einheit 2104 eine Kommunikationsverknüpfung 2113. In mindestens einer Ausführungsform ist die E/A-Einheit 2104 mit einer Host-Schnittstelle 2106 und einer Speicherkreuzschiene 2116 verbunden, wobei die Host-Schnittstelle 2106 Befehle empfängt, die auf das Durchführen von Verarbeitungsoperationen gerichtet sind, und die Speicherkreuzschiene 2116 Befehle empfängt, die auf das Durchführen von Speicheroperationen gerichtet sind.
  • In mindestens einer Ausführungsform kann, wenn die Host-Schnittstelle 2106 einen Befehlspuffer über die E/A-Einheit 2104 empfängt, die Host-Schnittstelle 2106 Arbeitsoperationen zum Durchführen dieser Befehle an ein Frontend 2108 richten. In mindestens einer Ausführungsform ist das Frontend 2108 mit einem Scheduler 2110 gekoppelt, der so konfiguriert ist, dass er Befehle oder andere Arbeitselemente an ein Verarbeitungsclusterarray 2112 verteilt. In mindestens einer Ausführungsform stellt der Scheduler 2110 sicher, dass das Verarbeitungsclusterarray 2112 ordnungsgemäß konfiguriert ist und sich in einem gültigen Zustand befindet, bevor Tasks an ein Cluster eines Verarbeitungsclusterarrays 2112 verteilt werden. In mindestens einer Ausführungsform ist der Scheduler 2110 über Firmware-Logik implementiert, die auf einer Mikrosteuerung ausgeführt wird. In mindestens einer Ausführungsform ist die Mikrosteuerungs-implementierte Scheduler 2110 so konfigurierbar, dass er komplexe Planungs- und Arbeitsverteilungsoperationen mit grober und feiner Granularität durchführt, was eine schnelle Präemption und Kontextumschaltung von Threads ermöglicht, die auf dem Verarbeitungsarray 2112 ausgeführt werden. In mindestens einer Ausführungsform kann die Host-Software Arbeitslasten für die Planung auf dem Verarbeitungsclusterarray 2112 über einen von mehreren Grafikverarbeitungspfaden nachweisen. In mindestens einer Ausführungsform können die Arbeitslasten dann durch die Logik des Schedulers 2110 innerhalb einer Mikrosteuerung, der den Scheduler 2110 beinhaltet, automatisch auf das Verarbeitungsarraycluster 2112 verteilt werden.
  • In mindestens einer Ausführungsform kann das Array 2112 bis zu „N“ Verarbeitungscluster beinhalten (z. B. Cluster 2114A, Cluster 2114B bis hin zu Cluster 2114N), wobei „N“ eine positive ganze Zahl darstellt (die eine andere ganze Zahl „N“ sein kann als in anderen Figuren verwendet). In mindestens einer Ausführungsform kann jeder Cluster 2114A-2114N des Verarbeitungsclusterarrays 2112 eine große Anzahl von nebenläufigen Threads ausführen. In mindestens einer Ausführungsform kann der Scheduler 2110 den Clustern 2114A-2114N des Verarbeitungsclusterarrays 2112 Arbeit zuweisen, indem er verschiedene Planungs- und/oder Arbeitsverteilungsalgorithmen verwendet, die in Abhängigkeit von der Arbeitslast variieren können, die für jeden Typ von Programm oder Berechnung entsteht. In mindestens einer Ausführungsform kann die Planung dynamisch durch den Scheduler 2110 gehandhabt werden oder teilweise durch Compiler-Logik während der Kompilierung der Programmlogik unterstützt werden, die für die Ausführung durch das Verarbeitungsclusterarray 2112 konfiguriert ist. In mindestens einer Ausführungsform können unterschiedliche Cluster 2114A-2114N des Verarbeitungsclusterarrays 2112 zum Verarbeiten unterschiedlicher Programmtypen oder zum Durchführen unterschiedlicher Berechnungstypen zugewiesen sein.
  • In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 2112 dazu konfiguriert sein, verschiedene Arten von parallelen Verarbeitungsoperationen auszuführen. In mindestens einer Ausführungsform ist das Verarbeitungsclusterarray 2112 dazu konfiguriert, universelle Parallelrechenoperationen durchzuführen. In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 2112 zum Beispiel Logik zum Ausführen von Verarbeitungs-Tasks beinhalten, einschließlich des Filterns von Video- und/oder Audiodaten, des Durchführens von Modellierungsoperationen, einschließlich Physikoperationen, und des Durchführens von Datentransformationen.
  • In mindestens einer Ausführungsform ist das Verarbeitungsclusterarray 2112 dazu konfiguriert, parallele Grafikverarbeitungsoperationen auszuführen. In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 2112 zusätzliche Logik beinhalten, um die Ausführung derartiger Grafikverarbeitungsoperationen zu unterstützen, einschließlich, aber nicht beschränkt auf, Texturabtastlogik, um Texturoperationen durchzuführen, sowie Tesselierungslogik und andere Vertexverarbeitungslogik. In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 2112 so konfiguriert sein, dass es grafikverarbeitungsbezogene Shader-Programme ausführt, wie etwa, aber nicht beschränkt auf, Vertex-Shader, Tesselierungs-Shader, Geometrie-Shader und Pixel-Shader. In mindestens einer Ausführungsform kann die Parallelverarbeitungseinheit 2102 Daten aus dem Systemspeicher über die E/A-Einheit 2104 zur Verarbeitung übermitteln. In mindestens einer Ausführungsform können während der Verarbeitung die übermittelten Daten in einem chipinternen Speicher (z. B. dem Parallelprozessorspeicher 2122) während der Verarbeitung gespeichert und dann wieder in den Systemspeicher geschrieben werden.
  • In mindestens einer Ausführungsform, wenn die Parallelverarbeitungseinheit 2102 zum Ausführen der Grafikverarbeitung verwendet wird, kann der Scheduler 2110 so konfigurierbar sein, dass er ein Verarbeitungspensum in ungefähr gleich große Aufgaben aufteilt, um eine bessere Verteilung der Grafikverarbeitungsoperationen auf mehrere Cluster 2114A-2114N des Verarbeitungsclusterarrays 2112 zu ermöglichen. In mindestens einer Ausführungsform können Abschnitte des Verarbeitungsclusterarrays 2112 so konfiguriert sein, dass sie unterschiedliche Verarbeitungstypen durchführen. Zum Beispiel kann in mindestens einer Ausführungsform ein erster Abschnitt so konfiguriert sein, dass er Vertex-Shading und Topologieerzeugung durchführt, kann ein zweiter Abschnitt so konfiguriert sein, dass er Tesselations- und Geometrie-Shading durchführt, und kann ein dritter Abschnitt so konfiguriert sein, dass er Pixel-Shading oder andere Bildschirmraumvorgänge durchführt, um ein gerendertes Bild zur Anzeige zu produzieren. In mindestens einer Ausführungsform können Zwischendaten, die durch einen oder mehrere der Cluster 2114A-2114N produziert werden, in Puffern gespeichert werden, um zu ermöglichen, dass die Zwischendaten zur weiteren Verarbeitung zwischen den Clustern 2114A-2114N übertragen werden.
  • In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 2112 über den Scheduler 2110, der Befehle zur Definition von Verarbeitungsaufgaben vom Frontend 2108 erhält, auszuführende Verarbeitungsaufgaben empfangen. In mindestens einer Ausführungsform können die Verarbeitungs-Tasks Indizes der zu verarbeitenden Daten beinhalten, z. B. Oberflächen(-Patch)-Daten, Primitivdaten, Vertex-Daten und/oder Pixeldaten, sowie Statusparameter und Befehle, die definieren, wie die Daten verarbeitet werden sollen (z. B. welches Programm ausgeführt werden soll). In mindestens einer Ausführungsform kann der Scheduler 2110 so konfiguriert sein, dass er den Tasks entsprechende Indizes abruft, oder er kann Indizes von dem Frontend 2108 empfangen. In mindestens einer Ausführungsform kann das Frontend 2108 so konfiguriert sein, dass es sicherstellt, dass das Verarbeitungsclusterarray 2112 in einen gültigen Zustand konfiguriert wird, bevor eine durch eingehende Befehlspuffer (z. B. Batch-Puffer, Push-Puffer usw.) vorgegebene Arbeitslast initiiert wird.
  • In mindestens einer Ausführungsform kann jede von einer oder mehreren Instanzen der Parallelverarbeitungseinheit 2102 mit einem Parallelprozessorspeicher 2122 gekoppelt sein. In mindestens einer Ausführungsform kann auf den Parallelprozessorspeicher 2122 über die Speicherkreuzschiene 2116 zugegriffen werden, die Speicheranforderungen von dem Verarbeitungsclusterarray 2112 sowie von der E/A-Einheit 2104 empfangen kann. In mindestens einer Ausführungsform kann die Speicherkreuzschiene 2116 über eine Speicherschnittstelle 2118 auf den Parallelprozessorspeicher 2122 zugreifen. In mindestens einer Ausführungsform kann die Speicherschnittstelle 2118 mehrere Partitionseinheiten (z. B. Partitionseinheit 2120A, Partitionseinheit 2120B bis Partitionseinheit 2120N) beinhalten, die jeweils an einen Abschnitt (z. B. Speichereinheit) des Parallelprozessorspeichers 2122 gekoppelt werden können. In mindestens einer Ausführungsform ist eine Anzahl der Partitionseinheiten 2120A-2120N so konfiguriert, dass sie gleich einer Anzahl von Speichereinheiten ist, sodass eine erste Partitionseinheit 2120A eine entsprechende erste Speichereinheit 2124A aufweist, eine zweite Partitionseinheit 2120B eine entsprechende Speichereinheit 2124B aufweist und eine N-te Partitionseinheit 2120N eine entsprechende N-te Speichereinheit 2124N aufweist. In mindestens einer Ausführungsform kann eine Anzahl der Partitionseinheiten 2120A-2120N nicht gleich einer Anzahl der Speichereinheiten sein.
  • In mindestens einer Ausführungsform können die Speichereinheiten 2124A-2124N verschiedene Typen von Speichervorrichtungen beinhalten, darunter dynamischer Direktzugriffsspeicher (DRAM) oder Grafik-Direktzugriffsspeicher, wie etwa synchroner Grafik-Direktzugriffsspeicher (SGRAM), darunter Grafik-Double-Data-Rate-(GDDR-)Speicher. In mindestens einer Ausführungsform können die Speichereinheiten 2124A-2124N auch 3D-Stapelspeicher beinhalten, einschließlich, aber nicht beschränkt auf, Speicher mit hoher Bandbreite (HBM). In mindestens einer Ausführungsform können Rendering-Ziele, wie etwa Bildspeicher oder Texturkarten, über die Speichereinheiten 2124A-2124N hinweg gespeichert werden, was es den Partitionseinheiten 2120A-2120N ermöglicht, Abschnitte jedes Rendering-Ziels parallel zu schreiben, um die verfügbare Bandbreite des Parallelprozessorspeichers 2122 effizient zu nutzen. In mindestens einer Ausführungsform kann eine lokale Instanz des Parallelprozessorspeichers 2122 zugunsten einer einheitlichen Speicherausgestaltung ausgeschlossen werden, die Systemspeicher in Verbindung mit lokalem Cache-Speicher nutzt.
  • In mindestens einer Ausführungsform kann ein beliebiger der Cluster 2114A-2114N des Verarbeitungsclusterarrays 2112 Daten verarbeiten, die in beliebige der Speichereinheiten 2124A-2124N im Parallelprozessorspeicher 2122 geschrieben werden. In mindestens einer Ausführungsform kann die Speicherkreuzschiene 2116 so konfiguriert sein, dass sie eine Ausgabe jedes Clusters 2114A-2114N an eine beliebige Partitionseinheit 2120A-2120N oder an einen anderen Cluster 2114A-2114N übermittelt, der zusätzliche Verarbeitungsoperationen an einer Ausgabe ausführen kann. In mindestens einer Ausführungsform kann jeder Cluster 2114A-2114N durch die Speicherkreuzschiene 2116 mit der Speicherschnittstelle 2118 kommunizieren, um aus verschiedenen externen Speichervorrichtungen zu lesen oder in diese zu schreiben. In mindestens einer Ausführungsform weist die Speicherkreuzschiene 2116 eine Verbindung mit der Speicherschnittstelle 2118 auf, um mit der E/A-Einheit 2104 zu kommunizieren, sowie eine Verbindung mit einer lokalen Instanz des Parallelprozessorspeichers 2122, was es den Verarbeitungseinheiten innerhalb der unterschiedlichen Verarbeitungscluster 2114A-2114N ermöglicht, mit Systemspeicher oder anderem Speicher zu kommunizieren, der nicht lokal zu der Parallelverarbeitungseinheit 2102 ist. In mindestens einer Ausführungsform kann die Speicherkreuzschiene 2116 virtuelle Kanäle verwenden, um Verkehrsströme zwischen Clustern 2114A-2114N und Partitionseinheiten 2120A-2120N zu trennen.
  • In mindestens einer Ausführungsform können mehrere Instanzen der Parallelverarbeitungseinheit 2102 auf einer einzelnen Erweiterungskarte bereitgestellt werden oder können mehrere Erweiterungskarten miteinander verbunden sein. In mindestens einer Ausführungsform können unterschiedliche Instanzen der Parallelverarbeitungseinheit 2102 so konfiguriert sein, dass sie zusammenarbeiten, auch wenn die unterschiedlichen Instanzen unterschiedliche Anzahlen von Verarbeitungskernen, unterschiedliche Mengen von lokalem Parallelprozessorspeicher und/oder andere Konfigurationsunterschiede aufweisen. Zum Beispiel können in mindestens einer Ausführungsform einige Instanzen der Parallelverarbeitungseinheit 2102 Gleitkommaeinheiten mit höherer Genauigkeit in Bezug auf andere Instanzen beinhalten. In mindestens einer Ausführungsform können Systeme, die eine oder mehrere Instanzen der Parallelverarbeitungseinheit 2102 oder des Parallelprozessors 2100 einbeziehen, in einer Vielfalt von Konfigurationen und Formfaktoren implementiert sein, einschließlich, aber nicht beschränkt auf, Desktop-, Laptop- oder tragbarer persönlicher Computer, Server, Arbeitsstationen, Spielekonsolen und/oder eingebetteter Systeme.
  • 21B ist ein Blockdiagramm einer Partitionseinheit 2120 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist die Partitionseinheit 2120 eine Instanz einer der Partitionseinheiten 2120A-2120N aus 21A. In mindestens einer Ausführungsform beinhaltet die Partitionseinheit 2120 einen L2-Cache 2121, eine Bildspeicherschnittstelle 2125 und eine ROP 2126 (raster operations unit - Rasteroperationeneinheit). In mindestens einer Ausführungsform ist der L2-Cache 2121 ein Lese-/Schreib-Cache, der so konfiguriert ist, dass er Lade- und Sicherungsoperationen durchführt, die von der Speicherkreuzschiene 2116 und der ROP 2126 empfangen werden. In mindestens einer Ausführungsform werden Lesefehler und dringende Rückschreibanforderungen durch den L2-Cache 2121 an die Bildspeicherschnittstelle 2125 zur Verarbeitung ausgegeben. In mindestens einer Ausführungsform können Aktualisierungen auch über die Bildspeicherschnittstelle 2125 zur Verarbeitung an einen Bildspeicher gesendet werden. In mindestens einer Ausführungsform bildet die Bildspeicherschnittstelle 2125 eine Schnittstelle mit einer der Speichereinheiten in dem Parallelprozessorspeicher, wie etwa mit den Speichereinheiten 2124A-2124N aus 21 (z. B. innerhalb des Parallelprozessorspeichers 2122).
  • In mindestens einer Ausführungsform ist die ROP 2126 eine Verarbeitungseinheit, die Rasteroperationen wie Schablonen, Z-Test, Überblendung usw. ausführt. In mindestens einer Ausführungsform gibt die ROP 2126 dann verarbeitete Grafikdaten aus, die im Grafikspeicher abgelegt werden. In mindestens einer Ausführungsform beinhaltet die ROP 2126 Komprimierungslogik, um Tiefen- oder Farbdaten, die in den Speicher geschrieben werden, zu komprimieren und Tiefen- oder Farbdaten, die aus dem Speicher gelesen werden, zu dekomprimieren. In mindestens einer Ausführungsform kann die Komprimierungslogik eine verlustfreie Komprimierungslogik sein, die einen oder mehrere von mehreren Komprimierungsalgorithmen verwendet. In mindestens einer Ausführungsform kann eine Art der Komprimierung, die von der ROP 2126 ausgeführt wird, basierend auf statistischen Eigenschaften der zu komprimierenden Daten variieren. Zum Beispiel wird in mindestens einer Ausführungsform die Delta-Farbkomprimierung an Tiefen- und Farbdaten auf einer Kachelbasis durchgeführt.
  • In mindestens einer Ausführungsform ist die ROP 2126 in jedem Verarbeitungscluster (z. B. Cluster 2114A-2114N aus 21A) statt in der Partitionseinheit 2120 enthalten. In mindestens einer Ausführungsform werden Lese- und Schreibanforderungen für Pixeldaten anstelle von Pixelfragmentdaten über die Speicherkreuzschiene 2116 übertragen. In mindestens einer Ausführungsform können verarbeitete Grafikdaten auf einer Anzeigevorrichtung angezeigt werden, wie etwa einer der einen oder der mehreren Anzeigevorrichtungen 2010 aus 20, zur weiteren Verarbeitung durch die Prozessoren 2002 geroutet werden oder zur weiteren Verarbeitung durch eine der Verarbeitungsentitäten innerhalb des Parallelprozessors 2100 aus 21A geroutet werden.
  • 21C ist ein Blockdiagramm eines Verarbeitungsclusters 2114 innerhalb einer Parallelverarbeitungseinheit gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist ein Verarbeitungscluster eine Instanz eines der Verarbeitungscluster 2114A-2114N aus 21A. In mindestens einer Ausführungsform kann der Verarbeitungscluster 2114 so konfiguriert sein, dass er viele Threads parallel ausführt, wobei sich „Thread“ auf eine Instanz eines konkreten Programms bezieht, die an einem konkreten Satz von Eingabedaten ausgeführt wird. In mindestens einer Ausführungsform werden SIMD(Single-Instruction, Multiple-Data)-Anweisungsausgabetechniken verwendet, um die parallele Ausführung einer großen Anzahl von Threads zu unterstützen, ohne mehrere unabhängige Anweisungseinheiten bereitzustellen. In mindestens einer Ausführungsform werden SIMT(Single-Instruction, Multiple-Thread)-Techniken verwendet, um die parallele Ausführung einer großen Anzahl von im Allgemeinen synchronisierten Threads zu unterstützen, wobei eine gemeinsame Anweisungseinheit verwendet wird, die so konfiguriert ist, dass sie Anweisungen an einen Satz von Verarbeitungs-Engines in jedem der Verarbeitungscluster ausgibt.
  • In mindestens einer Ausführungsform kann die Operation des Verarbeitungsclusters 2114 über einen Pipelinemanager 2132 gesteuert werden, der die Verarbeitungsaufgaben auf parallele SIMT-Prozessoren verteilt. In mindestens einer Ausführungsform empfängt der Pipelineverwalter 2132 Anweisungen von dem Scheduler 2110 aus 21A und verwaltet die Ausführung dieser Anweisungen über einen Grafik-Multiprozessor 2134 und/oder eine Textureinheit 2136. In mindestens einer Ausführungsform ist der Grafikmultiprozessor 2134 eine beispielhafte Instanz eines SIMT-Parallelprozessors. In mindestens einer Ausführungsform können jedoch verschiedene Typen von SIMT-Parallelprozessoren mit unterschiedlichen Architekturen innerhalb des Verarbeitungsclusters 2114 enthalten sein. In mindestens einer Ausführungsform können eine oder mehrere Instanzen des Grafik-Multiprozessors 2134 innerhalb eines Verarbeitungsclusters 2114 enthalten sein. In mindestens einer Ausführungsform kann der Grafik-Multiprozessor 2134 Daten verarbeiten und eine Datenkreuzschiene 2140 kann verwendet werden, um verarbeitete Daten an eines von mehreren möglichen Zielen, einschließlich anderer Shader-Einheiten, zu verteilen. In mindestens einer Ausführungsform kann der Pipelineverwalter 2132 die Verteilung von verarbeiteten Daten erleichtern, indem er Ziele für zu verteilende verarbeitete Daten über die Datenkreuzschiene 2140 vorgibt.
  • In mindestens einer Ausführungsform kann jeder Grafikmultiprozessor 2134 innerhalb des Verarbeitungsclusters 2114 einen identischen Satz funktionaler Ausführungslogik beinhalten (z. B. arithmetische Logikeinheiten, Ladespeichereinheiten usw.). In mindestens einer Ausführungsform kann die funktionelle Ausführungslogik pipelineartig konfiguriert sein, wobei neue Anweisungen ausgegeben werden können, bevor vorherige Anweisungen abgeschlossen sind. In mindestens einer Ausführungsform unterstützt die funktionale Ausführungslogik eine Vielzahl von Operationen, darunter Ganzzahl- und Gleitkommaarithmetik, Vergleichsoperationen, boolesche Operationen, Bitverschiebung und die Berechnung verschiedener algebraischer Funktionen. In mindestens einer Ausführungsform kann dieselbe Hardware einer funktionellen Einheit ausgenutzt werden, um unterschiedliche Vorgänge durchzuführen, und eine beliebige Kombination von funktionellen Einheiten vorhanden sein.
  • In mindestens einer Ausführungsform bilden die an den Verarbeitungscluster 2114 übertragenen Anweisungen einen Thread. In mindestens einer Ausführungsform ist ein Satz von Threads, der über einen Satz von Parallelverarbeitungs-Engines ausgeführt werden, eine Thread-Gruppe. In mindestens einer Ausführungsform führt eine Thread-Gruppe ein gemeinsames Programm an unterschiedlichen Eingabedaten aus. In mindestens einer Ausführungsform kann jeder Thread innerhalb einer Thread-Gruppe einer anderen Verarbeitungs-Engine innerhalb eines Grafik-Multiprozessors 2134 zugeordnet sein. In mindestens einer Ausführungsform kann eine Thread-Gruppe weniger Threads beinhalten als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 2134. Wenn eine Thread-Gruppe weniger Threads beinhaltet als eine Anzahl von Verarbeitungs-Engines, können in mindestens einer Ausführungsform eine oder mehrere der Verarbeitungs-Engines während der Zyklen, in denen diese Thread-Gruppe verarbeitet wird, inaktiv sein. In mindestens einer Ausführungsform kann eine Thread-Gruppe auch mehr Threads beinhalten als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 2134. Wenn eine Thread-Gruppe mehr Threads als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 2134 beinhaltet, kann das Verarbeiten in mindestens einer Ausführungsform über aufeinanderfolgende Taktzyklen durchgeführt werden. In mindestens einer Ausführungsform können mehrere Thread-Gruppen nebenläufig auf einem Grafik-Multiprozessor 2134 ausgeführt werden.
  • In mindestens einer Ausführungsform beinhaltet der Grafikmultiprozessor 2134 einen internen Cache-Speicher zum Ausführen von Lade- und Speicheroperationen. In mindestens einer Ausführungsform kann der Grafik-Multiprozessor 2134 auf einen internen Cache verzichten und einen Cache-Speicher (z. B. L1-Cache 2148) innerhalb des Verarbeitungsclusters 2114 verwenden. In mindestens einer Ausführungsform hat jeder Grafik-Multiprozessor 2134 auch Zugriff auf L2-Caches innerhalb von Partitionseinheiten (z. B. Partitionseinheiten 2120A-2120N aus 21A), die von allen Verarbeitungsclustern 2114 gemeinsam genutzt werden und zum Übermitteln von Daten zwischen Threads verwendet werden können. In mindestens einer Ausführungsform kann der Grafikmultiprozessor 2134 auch auf den chipexternen globalen Speicher zugreifen, der einen oder mehrere von dem lokalen Parallelprozessorspeicher und/oder dem Systemspeicher beinhalten kann. In mindestens einer Ausführungsform kann ein beliebiger Speicher, der zu der Parallelverarbeitungseinheit 2102 extern ist, als globaler Speicher verwendet werden. In mindestens einer Ausführungsform beinhaltet der Verarbeitungscluster 2114 mehrere Instanzen des Grafik-Multiprozessors 2134 und er kann gemeinsame Anweisungen und Daten teilen, die in dem L1-Cache 2148 gespeichert sein können.
  • In mindestens einer Ausführungsform kann jeder Verarbeitungscluster 2114 eine MMU 2145 (Speicherverwaltungseinheit) beinhalten, die dazu konfiguriert ist, virtuelle Adressen in physische Adressen zuzuordnen. In mindestens einer Ausführungsform können sich eine oder mehrere Instanzen der MMU 2145 innerhalb der Speicherschnittstelle 2118 aus 21A befinden. In mindestens einer Ausführungsform beinhaltet die MMU 2145 einen Satz von Seitentabelleneinträgen (page table entries - PTEs), der dazu verwendet wird, eine virtuelle Adresse auf eine physische Adresse einer Kachel abzubilden, sowie optional einen Cache-Zeilenindex. In mindestens einer Ausführungsform kann die MMU 2145 Adressenübersetzungspuffer (TLB) oder Caches beinhalten, die sich innerhalb des Grafik-Multiprozessors 2134 oder L1-Cache 2148 oder Verarbeitungsclusters 2114 befinden können. In mindestens einer Ausführungsform wird eine physische Adresse verarbeitet, um den Oberflächendatenzugriff lokal zu verteilen, um eine effiziente Anforderungsverschachtelung zwischen den Partitionseinheiten zu ermöglichen. In mindestens einer Ausführungsform kann ein Cache-Zeilenindex verwendet werden, um zu bestimmen, ob eine Anforderung für eine Cache-Zeile ein Treffer oder ein Fehler ist.
  • In mindestens einer Ausführungsform kann das Verarbeitungscluster 2114 so konfiguriert sein, dass jeder Grafikmultiprozessor 2134 mit einer Textureinheit 2136 gekoppelt ist, um Textur-Zuordnungsoperationen auszuführen, z. B. Bestimmen von Textur-Abtast-Positionen, Lesen von Texturdaten und Filtern von Texturdaten. In mindestens einer Ausführungsform werden die Texturdaten aus einem internen Textur-L1-Cache (nicht gezeigt) oder aus einem L1-Cache innerhalb des Grafik-Multiprozessors 2134 gelesen und je nach Bedarf aus einem L2-Cache, dem lokalen Parallelprozessorspeicher oder dem Systemspeicher abgerufen. In mindestens einer Ausführungsform gibt jeder Grafik-Multiprozessor 2134 verarbeitete Tasks an die Datenkreuzschiene 2140 aus, um einen verarbeiteten Task einem anderen Verarbeitungscluster 2114 zur weiteren Verarbeitung bereitzustellen oder um einen verarbeiteten Task über die Speicherkreuzschiene 2116 in einem L2-Cache, lokalen Parallelprozessorspeicher oder Systemspeicher zu speichern. In mindestens einer Ausführungsform ist eine preROP 2142 (Vor-Rasteroperationeneinheit) so konfiguriert, dass sie Daten von dem Grafik-Multiprozessor 2134 empfängt und Daten an ROP-Einheiten leitet, die sich in den hierin beschriebenen Partitionseinheiten befinden können (z. B. Partitionseinheiten 2120A-2120N aus 21A). In mindestens einer Ausführungsform kann die preROP-Einheit 2142 Optimierungen für die Farbmischung, das Organisieren von Pixelfarbdaten und das Durchführen von Adressübersetzungen durchführen.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 im Grafikverarbeitungscluster 2114 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • In mindestens einer Ausführungsform können Permutationen 512 und Beschneidung 528 zur Erzwingung von n:m-strukturierter Spärlichkeit im Grafikverarbeitungscluster 2114 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • 21D zeigt einen Grafikmultiprozessor 2134, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der Grafik-Multiprozessor 2134 mit dem Pipelineverwalter 2132 des Verarbeitungsclusters 2114 gekoppelt. In mindestens einer Ausführungsform weist der Grafik-Multiprozessor 2134 eine Ausführungspipeline auf, die einen Anweisungs-Cache 2152, eine Anweisungseinheit 2154, eine Adressabbildungseinheit 2156, eine Registerbank 2158, einen oder mehrere Kerne 2162 einer Universal-Grafikverarbeitungseinheit (GPGPU) und eine oder mehrere Lade-/Speichereinheiten 2166 beinhaltet, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform sind die GPGPU-Kerne 2162 und die Lade-/Speichereinheiten 2166 über eine Speicher- und Cache-Zusammenschaltung 2168 mit dem Cache-Speicher 2172 und dem gemeinsam genutzten Speicher 2170 gekoppelt.
  • In mindestens einer Ausführungsform empfängt der Anweisungs-Cache 2152 einen Stream von auszuführenden Anweisungen von dem Pipelineverwalter 2132. In mindestens einer Ausführungsform werden die Anweisungen in dem Anweisungs-Cache 2152 zwischengespeichert und durch eine Anweisungseinheit 2154 zur Ausführung zugeteilt. In mindestens einer Ausführungsform kann die Anweisungseinheit 2154 Anweisungen als Thread-Gruppen (z. B. Warps) zuteilen, wobei jeder Thread der Thread-Gruppe einer anderen Ausführungseinheit innerhalb der GPGPU-Kerne 2162 zugeordnet wird. In mindestens einer Ausführungsform kann eine Anweisung auf einen beliebigen von einem lokalen, gemeinsam genutzten oder globalen Adressraum zugreifen, indem sie eine Adresse innerhalb eines einheitlichen Adressraums spezifiziert. In mindestens einer Ausführungsform kann die Adressabbildungseinheit 2156 verwendet werden, um Adressen in einem einheitlichen Adressraum in eine eindeutige Speicheradresse zu übersetzen, auf die durch die Lade-/Speichereinheiten 2166 zugegriffen werden kann.
  • In mindestens einer Ausführungsform stellt die Registerdatei 2158 einen Satz von Registern für Funktionseinheiten des Grafikmultiprozessors 2134 bereit. In mindestens einer Ausführungsform stellt die Registerbank 2158 einen temporären Datenspeicher für Operanden bereit, die mit Datenpfaden von funktionellen Einheiten (z. B. GPGPU-Kernen 2162, Lade-/Speichereinheiten 2166) des Grafik-Multiprozessors 2134 verbunden sind. In mindestens einer Ausführungsform ist die Registerbank 2158 derart zwischen den einzelnen funktionellen Einheiten aufgeteilt, dass jeder funktionellen Einheit ein dedizierter Abschnitt der Registerbank 2158 zugewiesen ist. In mindestens einer Ausführungsform ist die Registerbank 2158 auf unterschiedliche Warps aufgeteilt, die durch den Grafik-Multiprozessor 2134 ausgeführt werden.
  • In mindestens einer Ausführungsform können die GPGPU-Kerne 2162 jeweils Gleitkommaeinheiten (FPUs) und/oder arithmetisch-logische Einheiten (ALUs) für Integer beinhalten, die zum Ausführen von Anweisungen des Grafik-Multiprozessors 2134 verwendet werden. In mindestens einer Ausführungsform können die GPGPU-Kerne 2162 eine ähnliche Architektur aufweisen oder sich bezüglich der Architektur unterscheiden. In mindestens einer Ausführungsform beinhaltet ein erster Abschnitt der GPGPU-Kerne 2162 eine FPU mit einfacher Genauigkeit und eine Integer-ALU, während ein zweiter Abschnitt der GPGPU-Kerne eine FPU mit doppelter Genauigkeit beinhaltet. In mindestens einer Ausführungsform können FPUs den Standard IEEE 754-2008 für Gleitkommaarithmetik implementieren oder Gleitkommaarithmetik mit variabler Genauigkeit ermöglichen. In mindestens einer Ausführungsform kann der Grafik-Multiprozessor 2134 zusätzlich eine oder mehrere Festfunktions- oder Spezialfunktionseinheiten beinhalten, um spezifische Funktionen, wie etwa Operationen zum Kopieren von Rechtecken oder Pixel-Blending, durchzuführen. In mindestens einer Ausführungsform können einer oder mehrere der GPGPU-Kerne 2162 auch Fest- oder Spezialfunktionslogik beinhalten.
  • In mindestens einer Ausführungsform beinhalten die GPGPU-Kerne 2162 eine SIMD-Logik, die in der Lage ist, eine einzige Anweisung auf mehreren Sätzen von Daten auszuführen. In mindestens einer Ausführungsform können die GPGPU-Kerne 2162 SIMD4-, SIMD8- und SIMD16-Anweisungen physisch ausführen und SIMD1-, SIMD2- und SIMD32-Anweisungen logisch ausführen. In mindestens einer Ausführungsform können SIMD-Anweisungen für GPGPU-Kerne zur Kompilierzeit von einem Shader-Compiler erzeugt werden oder automatisch erzeugt werden, wenn Programme ausgeführt 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 Programms, das für ein SIMT-Ausführungsmodell ausgestaltet ist, über einen einzigen SIMD-Befehl ausgeführt werden. Zum Beispiel können in mindestens einer Ausführungsform acht SIMT-Threads, die gleiche oder ähnliche Vorgänge durchführen, parallel über eine einzelne SIMD8-Logikeinheit ausgeführt werden.
  • In mindestens einer Ausführungsform ist die Speicher- und Cache-Verbindung 2168 ein Zusammenschaltungsnetz, das jede Funktionseinheit des Grafikmultiprozessors 2134 mit der Registerdatei 2158 und dem gemeinsamen Speicher 2170 verbindet. In mindestens einer Ausführungsform ist die Speicher- und Cache-Zusammenschaltung 2168 eine Kreuzschienen-Zusammenschaltung, die es der Lade-/Speichereinheit 2166 ermöglicht, Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher 2170 und der Registerbank 2158 zu implementieren. In mindestens einer Ausführungsform kann die Registerbank 2158 mit der gleichen Frequenz wie die GPGPU-Kerne 2162 arbeiten, sodass die Datenübermittlung zwischen den GPGPU-Kernen 2162 und der Registerbank 2158 eine sehr geringe Latenz aufweisen kann. In mindestens einer Ausführungsform kann der gemeinsam genutzte Speicher 2170 verwendet werden, um die Kommunikation zwischen Threads zu ermöglichen, die auf funktionellen Einheiten innerhalb des Grafik-Multiprozessors 2134 ausgeführt werden. In mindestens einer Ausführungsform kann der Cache-Speicher 2172 zum Beispiel als Daten-Cache verwendet werden, um Texturdaten zwischenzuspeichern, die zwischen funktionellen Einheiten und der Textureinheit 2136 kommuniziert werden. In mindestens einer Ausführungsform kann der gemeinsam genutzte Speicher 2170 auch als programmverwalteter Cache verwendet werden. In mindestens einer Ausführungsform können Threads, die auf den GPGPU-Kernen 2162 ausgeführt werden, zusätzlich zu den automatisch zwischengespeicherten Daten, die innerhalb des Cache-Speichers 2172 gespeichert sind, programmatisch Daten innerhalb des gemeinsam genutzten Speichers speichern.
  • In mindestens einer Ausführungsform ist ein Parallelprozessor oder eine GPGPU, wie hierin beschrieben, kommunikativ mit Host-/Prozessorkernen gekoppelt, um Grafikoperationen, Operationen des maschinellen Lernens, Musteranalyseoperationen und verschiedene GPU-Funktionen für allgemeine Zwecke (GPGPU) zu beschleunigen. In mindestens einer Ausführungsform kann die GPU über einen Bus oder eine andere Verbindung (z. B. eine Hochgeschwindigkeitsverbindung wie PCIe oder NVLink) mit dem Host-Prozessor (den Prozessorkernen) kommunikativ verbunden sein. In mindestens einer Ausführungsform kann die GPU in demselben Gehäuse oder Chip wie die Kerne integriert sein und über einen internen Prozessorbus bzw. eine interne Verbindung (d. h. innerhalb des Gehäuses oder Chips) mit den Kernen kommunizieren. In mindestens einer Ausführungsform können die Prozessorkerne unabhängig von derArt des Anschlusses der GPU der GPU Arbeit in Form von Befehlsfolgen/Befehlen zuweisen, die in einem Arbeitsdeskriptor enthalten sind. In mindestens einer Ausführungsform verwendet diese GPU dann dedizierte Schaltung/Logik zum effizienten Verarbeiten dieser Befehle/Anweisungen.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 im Grafikkern 2134 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • In mindestens einer Ausführungsform können Permutationen 512 und Beschneidung 528 zur Erzwingung von n:m-strukturierter Spärlichkeit im Grafikmultiprozessor 2134 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • 22 veranschaulicht ein Mehrfach-GPU-Rechensystem 2200 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das Mehrfach-GPU-Rechensystem 2200 einen Prozessor 2202 beinhalten, der über einen Host-Schnittstellen-Switch 2204 an mehrere Universal-Grafikverarbeitungseinheiten (GPGPUs) 2206A-D gekoppelt ist. In mindestens einer Ausführungsform ist der Host-Schnittstellen-Switch 2204 eine PCI-Express-Switch-Vorrichtung, die den Prozessor 2202 an einen PCI-Express-Bus koppelt, über den der Prozessor 2202 mit den GPGPUs 2206A-D kommunizieren kann. In mindestens einer Ausführungsform können die GPGPUs 2206A-D über einen Satz von Hochgeschwindigkeits-Punkt-zu-Punkt-GPU-zu-GPU-Verknüpfungen 2216 zusammengeschaltet sein. In mindestens einer Ausführungsform sind die GPU-zu-GPU-Verknüpfungen 2216 mit jeder der GPGPUs 2206A-D über eine dedizierte GPU-Verknüpfung verbunden. In mindestens einer Ausführungsform ermöglichen die P2P-GPU-Verknüpfungen 2216 direkte Kommunikation zwischen jeder der GPGPUs 2206A-D, ohne dass Kommunikation über den Host-Schnittstellenbus 2204 erforderlich ist, mit dem der Prozessor 2202 verbunden ist. In mindestens einer Ausführungsform, bei der GPU-zu-GPU-Verkehr zu den P2P-GPU-Verknüpfungen 2216 geleitet wird, bleibt der Host-Schnittstellenbus 2204 für den Systemspeicherzugriff oder zum Kommunizieren mit anderen Instanzen des Mehr-GPU-Rechensystems 2200 verfügbar, zum Beispiel über eine oder mehrere Netzvorrichtungen. Während in mindestens einer Ausführungsform die GPGPUs 2206A-D mit dem Prozessor 2202 über den Host-Schnittstellen-Switch 2204 verbunden sind, beinhaltet der Prozessor 2202 in mindestens einer Ausführungsform eine direkte Unterstützung für P2P-GPU-Verknüpfungen 2216 und kann direkt mit den GPGPUs 2206A-D verbunden sein.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 im Multi-GPU-Rechensystem 2200 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • In mindestens einer Ausführungsform können Permutationen 512 und Beschneidung 528 zur Erzwingung von n:m-strukturierter Spärlichkeit im Multi-GPU-Rechensystem 2200 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • 23 ist ein Blockdiagramm eines Grafikprozessors 2300 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2300 eine Ringzusammenschaltung 2302, ein Pipeline-Frontend 2304, eine Medien-Engine 2337 und Grafikkerne 2380A-2380N. In mindestens einer Ausführungsform koppelt die Ringzusammenschaltung 2302 den Grafikprozessor 2300 an andere Verarbeitungseinheiten, einschließlich anderer Grafikprozessoren oder eines oder mehrerer Universalprozessorkerne. In mindestens einer Ausführungsform ist der Grafikprozessor 2300 einer von vielen Prozessoren, die in ein Mehrkern-Verarbeitungssystem integriert sind.
  • In mindestens einer Ausführungsform empfängt der Grafikprozessor2300 Batches von Befehlen über die Ringzusammenschaltung 2302. In mindestens einer Ausführungsform werden eingehende Befehle durch einen Befehls-Streamer 2303 in dem Pipeline-Frontend 2304 interpretiert. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2300 skalierbare Ausführungslogik zum Durchführen von 3D-Geometrieverarbeitung und Medienverarbeitung über die Grafikkerne 2380A-2380N. In mindestens einer Ausführungsform führt der Befehls-Streamer 2303 der Geometriepipeline 2336 Befehle für 3D-Geometrieverarbeitungsbefehle zu. In mindestens einer Ausführungsform führt der Befehls-Streamer 2303 für mindestens einige Medienverarbeitungsbefehle Befehle einem Video-Frontend 2334 zu, das mit der Medien-Engine 2337 gekoppelt ist. In mindestens einer Ausführungsform beinhaltet die Medien-Engine 2337 eine Videoqualitäts-Engine (Video Quality Engine - VQE) 2330 für die Video- und Bildnachverarbeitung und eine Engine zum Codieren/Decodieren in mehreren Formaten (multi-format encode/decode - MFX) 2333 zum Bereitstellen von hardwarebeschleunigter Codierung und Decodierung von Mediendaten. In mindestens einer Ausführungsform erzeugen die Geometriepipeline 2336 und die Medien-Engine 2337 jeweils Ausführungs-Threads für Thread-Ausführungsressourcen, die durch mindestens einen Grafikkern 2380 bereitgestellt sind.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2300 skalierbare Thread-Ausführungsressourcen mit Grafikkernen 2380A-2380N (die modular sein können und mitunter als Kern-Slices bezeichnet sind), die jeweils mehrere Teilkerne 2350A-50N, 2360A-2360N (mitunter als Kernteil-Slices bezeichnet) aufweisen. In mindestens einer Ausführungsform kann der Grafikprozessor 2300 eine beliebige Anzahl von Grafikkernen 2380A aufweisen. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2300 einen Grafikkern 2380A, der mindestens einen ersten Teilkern 2350A und einen zweiten Teilkern 2360A aufweist. In mindestens einer Ausführungsform ist der Grafikprozessor 2300 ein Prozessor niedriger Leistung mit einem einzelnen Teilkern (z. B. 2350A). In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2300 mehrere Grafikkerne 2380A-2380N, von denen jeder einen Satz von ersten Teilkernen 2350A-2350N und einen Satz von zweiten Teilkernen 2360A-2360N beinhaltet. In mindestens einer Ausführungsform beinhaltet jeder Teilkern in den ersten Teilkernen 2350A-2350N mindestens einen ersten Satz von Ausführungseinheiten 2352A-2352N und Medien-/Texturabtastern 2354A-2354N. In mindestens einer Ausführungsform beinhaltet jeder Teilkern in den zweiten Teilkernen 2360A-2360N mindestens einen zweiten Satz von Ausführungseinheiten 2362A-2362N und Abtastern 2364A-2364N. In mindestens einer Ausführungsform nutzen die Teilkerne 2350A-2350N, 2360A-2360N jeweils einen Satz von gemeinsam genutzten Ressourcen 2370A-2370N gemeinsam. In mindestens einer Ausführungsform gehören ein gemeinsam genutzter Cache-Speicher und eine Pixelvorgangslogik zu den gemeinsam genutzten Ressourcen.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815 im Grafikprozessor 2300 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • In mindestens einer Ausführungsform können Permutationen 512 und Beschneidung 528 zur Erzwingung von n:m-strukturierter Spärlichkeit im Grafikprozessor 2300 für Inferenzierungs- und Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen für neuronale Netze oder Anwendungsfällen für neuronale Netze berechnet wurden.
  • 24 ist ein Blockdiagramm, das die Mikroarchitektur für einen Prozessor 2400, der Logikschaltungen zum Durchführen von Anweisungen beinhalten kann, gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform kann der Prozessor 2400 Anweisungen durchführen, einschließlich x86-Anweisungen, ARM-Anweisungen, spezialisierter Anweisungen für anwendungsspezifische integrierte Schaltungen (ASICs) usw. In mindestens einer Ausführungsform kann der Prozessor 2400 Register zum Speichern von gepackten Daten beinhalten, wie etwa 64 Bit breite MMX™-Register in Mikroprozessoren, die mit der MMX-Technologie der Intel Corporation aus Santa Clara, Kalifornien, ausgestattet sind. In mindestens einer Ausführungsform können MMX-Register, die sowohl in Integer- als auch in Gleitkommaform verfügbar sind, mit Elementen mit gepackten Daten arbeiten, die mit Single-Instruction-Multiple-Data-(„SIMD“-) und Streaming-SIMD-Erweiterungs-(„SSE“-)Anweisungen einhergehen. In mindestens einer Ausführungsform können 128 Bit breite XMM-Register, die sich auf die SSE2-, SSE3-, SSE4-, AVX- oder darüber hinausgehende Technologie beziehen (allgemein als „SSEx“ bezeichnet), solche Paket-Datenoperanden halten. In mindestens einer Ausführungsform kann der Prozessor 2400 Anweisungen zum Beschleunigen von Algorithmen für maschinelles Lernen oder Deep Learning, Training oder Inferenzieren durchführen.
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 2400 ein In-Order-Frontend („Frontend“) 2401 zum Abrufen von auszuführenden Anweisungen und zur Vorbereitung von Anweisungen, die später in einer Prozessorpipeline verwendet werden sollen. In mindestens einer Ausführungsform kann das Frontend 2401 mehrere Einheiten beinhalten. In mindestens einer Ausführungsform ruft ein Anweisungsvorababrufer 2426 Anweisungen aus dem Speicher ab und speist die Anweisungen in einen Anweisungsdecodierer 2428 ein, der die Anweisungen wiederum decodiert oder interpretiert. Zum Beispiel decodiert in mindestens einer Ausführungsform der Anweisungsdecodierer 2428 eine empfangene Anweisung in eine oder mehrere Operationen, die als „Mikroanweisungen“ oder „Mikrooperationen“ bezeichnet werden (auch als „Mikro-Ops“ oder „µops" bezeichnet) und die eine Maschine ausführen kann. In mindestens einer Ausführungsform parst der Anweisungsdecodierer 2428 eine Anweisung in einen Opcode und entsprechende Daten- und Steuerfelder, die durch die Mikroarchitektur verwendet werden können, um Operationen gemäß mindestens einer Ausführungsform durchzuführen. In mindestens einer Ausführungsform kann ein Ablaufverfolgungscache 2430 decodierte µops in programmgeordnete Sequenzen oder Abläufe in einer µop-Warteschlange 2434 zur Ausführung zusammenstellen. Wenn der Ablaufverfolgungscache 2430 auf eine komplexe Anweisung stößt, stellt in mindestens einer Ausführungsform ein Mikrocode-ROM 2432 die für den Abschluss einer Operation notwendigen µops bereit.
  • In mindestens einer Ausführungsform können einige Anweisungen in einen einzigen Mikro-OP umgewandelt werden, während andere mehrere Mikro-OPs benötigen, um eine vollständige Operation durchzuführen. In mindestens einer Ausführungsform kann, falls mehr als vier Mikro-Ops benötigt werden, um eine Anweisung abzuschließen, der Anweisungsdecodierer 2428 auf den Mikrocode-ROM 2432 zugreifen, um diese Anweisung durchzuführen. In mindestens einer Ausführungsform kann eine Anweisung in eine kleine Anzahl von Mikro-Ops zur Verarbeitung in dem Anweisungsdecodierer 2428 decodiert werden. In mindestens einer Ausführungsform kann eine Anweisung innerhalb des Mikrocode-ROM 2432 gespeichert werden, wenn eine Reihe von Mikro-Ops zum Erzielen einer derartigen Operation benötigt werden sollte. In mindestens einer Ausführungsform bezieht sich der Ablaufverfolgungscache 2430 auf ein programmierbares logisches Array (programmable logic array - „PLA“) für den Einsprungpunkt, um einen korrekten Mikroanweisungszeiger zum Lesen von Mikrocodesequenzen zu bestimmen, um eine oder mehrere Anweisungen aus dem Mikrocode-ROM 2432 gemäß mindestens einer Ausführungsform abzuschließen. In mindestens einer Ausführungsform kann das Frontend 2401 einer Maschine, nachdem der Mikrocode-ROM 2432 die Sequenzierung von Mikro-Ops für eine Anweisung fertiggestellt hat, das Abrufen von Mikro-Ops aus dem Ablaufverfolgungscache 2430 wiederaufnehmen.
  • In mindestens einer Ausführungsform kann die Out-of-Order-Ausführungs-Engine („Out-of-Order-Engine“) 2403 Anweisungen zur Ausführung vorbereiten. In mindestens einer Ausführungsform verfügt die Out-of-Order-Ausführungslogik über eine Reihe von Puffern, um den Fluss der Anweisungen zu glätten und neu zu ordnen, um die Rechenleistung zu optimieren, während sie eine Pipeline durchlaufen und zur Ausführung eingeplant werden. In mindestens einer Ausführungsform umfasst die Out-of-Order-Ausführungs-Engine 2403 ohne Einschränkung einen Zuweiser/Registerumbenenner 2440, eine Speicher-µop-Warteschlange 2442, eine Integer-/Gleitkomma-µop-Warteschlange 2444, einen Speicher-Scheduler 2446, einen schnellen Scheduler 2402, einen langsamen/allgemeinen Gleitkomma-Scheduler („langsamer/allgemeiner FP-Scheduler“) 2404 und einen einfachen Gleitkomma-Scheduler („einfacher FP-Scheduler“) 2406. In mindestens einer Ausführungsform werden der schnelle Scheduler 2402, der langsame/allgemeine Gleitkomma-Scheduler 2404 und der einfache Gleitkomma-Scheduler 2406 hierin auch zusammen als „µop-Scheduler 2402, 2404, 2406“ bezeichnet. In mindestens einer Ausführungsform weist der Zuweiser/Registerumbenenner 2440 Maschinenpuffer und Ressourcen zu, die jede uop für die Ausführung benötigt. In mindestens einer Ausführungsform benennt der Zuweiser/Registerumbenenner 2440 logische Register in Einträge in einer Registerbank um. In mindestens einer Ausführungsform weist der Zuweiser/Registerumbenenner 2440 auch einen Eintrag für jede µop in einer von zwei µop-Warteschlangen zu, und zwar in der Speicher-µop-Warteschlange 2442 für Speicheroperationen und der Integer-/Gleitkomma-µop-Warteschlange 2444 für Nicht-Speicheroperationen, vor dem Speicher-Scheduler 2446 und den µop-Schedulern 2402, 2404, 2406. In mindestens einer Ausführungsform bestimmen die µop-Scheduler 2402, 2404, 2406 auf Grundlage der Bereitschaft ihrer abhängigen Eingaberegister-Operandenquellen und der Verfügbarkeit der Ausführungsressourcen, die µops benötigen, um ihre Operation abzuschließen, wann eine µop zur Ausführung bereit ist. In mindestens einer Ausführungsform kann der schnelle Scheduler 2402 auf jeder Hälfte des Haupttaktzyklus planen, während der langsame/allgemeine Gleitkomma-Scheduler 2404 und der einfache Gleitkomma-Scheduler 2406 einmal pro Hauptprozessortaktzyklus planen können. In mindestens einer Ausführungsform vermitteln die µop-Scheduler 2402, 2404, 2406 Zuteilungsports, um µops zur Ausführung einzuplanen.
  • In mindestens einer Ausführungsform umfasst der Ausführungsblock 2411 ohne Einschränkung eine Integerregisterdatei/ein Umgehungsnetz 2408, eine Fließkommaregisterdatei/ein Umgehungsnetz („FP-Registerdatei/Umgehungsnetz“) 2410, Adresserzeugungseinheiten (address generation units - „AGUs“) 2412 und 2414, schnelle arithmetische Logikeinheiten (ALUs) („schnelle ALUs“) 2416 und 2418, eine langsame arithmetische Logikeinheit („langsame ALU“) 2420, eine Fließkomma-ALU („FP“) 2422 und eine Fließkomma-Bewegungseinheit („FP-Bewegung“) 2424. In mindestens einer Ausführungsform werden die Integerregisterbank/das Umgehungsnetz 2408 und die Gleitkommaregisterbank/das Umgehungsnetz 2410 hierin auch als „Registerbänke 2408, 2410“ bezeichnet. In mindestens einer Ausführungsform werden die AGUSs 2412 und 2414, die schnellen ALUs 2416 und 2418, die langsame ALU 2420, die Gleitkomma-ALU 2422 und die Gleitkomma-Bewegungseinheit 2424 hierin auch als „Ausführungseinheiten 2412, 2414, 2416, 2418, 2420, 2422 und 2424“ bezeichnet. In mindestens einer Ausführungsform kann der Ausführungsblock 2411 ohne Einschränkung eine beliebige Anzahl (einschließlich null) und einen beliebigen Typ von Registerbänken, Umgehungsnetzen, Adresserzeugungseinheiten und Ausführungseinheiten in beliebiger Kombination beinhalten.
  • In mindestens einer Ausführungsform können Registernetze 2408, 2410 zwischen den UOP-Schedulern 2402, 2404, 2406 und den Ausführungseinheiten 2412, 2414, 2416, 2418, 2420, 2422 und 2424 angeordnet sein. In mindestens einer Ausführungsform führt die Integerregisterbank/das Umgehungsnetz 2408 Integeroperationen durch. In mindestens einer Ausführungsform führt die Gleitkommaregisterbank/das Umgehungsnetz 2410 Gleitkommaoperationen durch. In mindestens einer Ausführungsform kann jedes der Registernetze 2408, 2410 ohne Einschränkung ein Umgehungsnetz beinhalten, das gerade abgeschlossene Ergebnisse, die noch nicht in eine Registerbank geschrieben wurden, umgehen oder zu neuen abhängigen µops weiterleiten kann. In mindestens einer Ausführungsform können die Registernetze 2408, 2410 miteinander Daten kommunizieren. In mindestens einer Ausführungsform kann die Integerregisterbank/das Umgehungsnetz 2408 ohne Einschränkung zwei separate Registerbänke beinhalten, eine Registerbank für Daten niederer Ordnung mit zweiunddreißig Bit und eine zweite Registerbank für Daten hoher Ordnung mit zweiunddreißig Bit. In mindestens einer Ausführungsform kann die Gleitkommaregisterbank/das Umgehungsnetz 2410 ohne Einschränkung 128 Bit breite Einträge beinhalten, da Gleitkommaanweisungen typischerweise Operanden mit einer Breite von 64 bis 128 Bit aufweisen.
  • In mindestens einer Ausführungsform können die Ausführungseinheiten 2412, 2414, 2416, 2418, 2420, 2422, 2424 Anweisungen ausführen. In mindestens einer Ausführungsform speichern die Registernetze 2408, 2410 Integer- und Gleitkommadaten-Operandenwerte, die Mikroanweisungen benötigen, um ausgeführt zu werden. In mindestens einer Ausführungsform kann der Prozessor 2400 ohne Einschränkung eine beliebige Anzahl und Kombination der Ausführungseinheiten 2412, 2414, 2416, 2418, 2420, 2422, 2424 beinhalten. In mindestens einer Ausführungsform können die Gleitkomma-ALU 2422 und die Gleitkomma-Bewegungseinheit 2424 Gleitkomma-, MMX-, SIMD-, AVX- und SSE- oder andere Operationen ausführen, einschließlich spezialisierter Anweisungen des maschinellen Lernens. In mindestens einer Ausführungsform kann die Gleitkomma-ALU 2422 ohne Einschränkung einen 64 Bit mal 64 Bit großen Gleitkommadividierer zum Ausführen von Divisions-, Quadratwurzel- und Rest-Mikro-Ops beinhalten. In mindestens einer Ausführungsform können Befehle, die einen Fließkommawert beinhalten, mit Fließkomma-Hardware gehandhabt werden. In mindestens einer Ausführungsform können ALU-Operationen an die schnellen ALUs 2416, 2418 übergeben werden. In mindestens einer Ausführungsform können die schnellen ALUs 2416, 2418 schnelle Operationen mit einer effektiven Latenz von einem halben Taktzyklus ausführen. In mindestens einer Ausführungsform gehen die meisten komplexen Integeroperationen an die langsame ALU 2420, da die langsame ALU 2420 ohne Einschränkung Integerausführungs-Hardware für Operationen vom Typ mit langer Latenz beinhalten kann, wie etwa einen Multiplikator, Verschiebungen, Flag-Logik und Verzweigungsverarbeitung. In mindestens einer Ausführungsform können die Lade-/Speicheroperationen eines Speichers durch die AGUs 2412, 2414 ausgeführt werden. In mindestens einer Ausführungsform können die schnelle ALU 2416, die schnelle ALU 2418 und die langsame ALU 2420 Ganzzahl-Operationen mit 64-Bit-Datenoperanden ausführen. In mindestens einer Ausführungsform können die schnelle ALU 2416, die schnelle ALU 2418 und die langsame ALU 2420 so implementiert sein, dass sie eine Vielfalt von Datenbitgrößen unterstützen, darunter sechzehn, zweiunddreißig, 128, 256 usw. In mindestens einer Ausführungsform können die Gleitkomma-ALU 2422 und die Gleitkomma-Bewegungseinheit 2424 so implementiert sein, dass sie einen Bereich von Operanden unterstützen, der Bits mit verschiedenen Breiten aufweist, wie etwa 128 Bit breite Operanden mit gepackten Daten in Verbindung mit SIMD- und Multimedia-Anweisungen.
  • In mindestens einer Ausführungsform leiten die uop-Scheduler 2402, 2404, 2406 abhängige Operationen ein, bevor die Ausführung einer übergeordneten Last beendet ist. In mindestens einer Ausführungsform kann der Prozessor 2400, da µops in dem Prozessor 2400 spekulativ geplant und ausgeführt werden können, auch Logik zum Handhaben von Speicherfehlern beinhalten. In mindestens einer Ausführungsform können, falls eine Datenlast in einem Daten-Cache einen Fehler verursacht, abhängige Operationen in einer Pipeline im Gange sein, die einen Scheduler mit temporär inkorrekten Daten verlassen haben. In mindestens einer Ausführungsform verfolgt ein Wiederholungsmechanismus die Anweisungen, die falsche Daten verwenden, und führt sie erneut aus. In mindestens einer Ausführungsform kann es erforderlich sein, abhängige Operationen erneut auszuführen, während unabhängige Operationen zu Ende geführt werden können. In mindestens einer Ausführungsform können Scheduler und ein Wiederholungsmechanismus von mindestens einer Ausführungsform eines Prozessors auch so ausgelegt sein, dass sie Befehlssequenzen für Textstring-Vergleichsoperationen abfangen.
  • In mindestens einer Ausführungsform können sich „Register“ auf bordeigene Prozessorspeicherorte beziehen, die als Teil von Anweisungen zum Identifizieren von Operanden verwendet werden können. In mindestens einer Ausführungsform kann es sich bei den Registern um solche handeln, die von außerhalb des Prozessors (aus der Sicht eines Programmierers) verwendet werden können. In mindestens einer Ausführungsform können die Register nicht auf einen bestimmten Schaltungstyp beschränkt sein. Vielmehr kann ein Register in mindestens einer Ausführungsform Daten speichern, Daten bereitstellen und hier beschriebene Funktionen ausführen. In mindestens einer Ausführungsform können die hierin beschriebenen Register von einem Schaltkreis innerhalb eines Prozessors unter Verwendung einer beliebigen Anzahl verschiedener Techniken implementiert werden, wie z. B. dedizierte physische Register, dynamisch zugewiesene physische Register unter Verwendung von Registerumbenennungen, Kombinationen aus dedizierten und dynamisch zugewiesenen physischen Registern usw. In mindestens einer Ausführungsform speichern Ganzzahl-Register 32-Bit-Ganzzahl-Daten. Eine Registerbank aus mindestens einer Ausführungsform beinhaltet zudem acht Multimedia-SIMD-Register für gepackte Daten.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 815 in den Ausführungsblock 2411 und andere gezeigte oder nicht gezeigte Speicher oder Register einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in dem Ausführungsblock 2411 veranschaulichten ALUs verwenden. Darüber hinaus können Gewichtungsparameter im chipinternen oder chipexternen Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Ausführungsblocks 2411 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, Architekturen, Anwendungsfälle oder Trainingstechniken für neuronale Netze durchzuführen.
  • 25 veranschaulicht einen Deep-Learning-Anwendungsprozessor 2500 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform verwendet der Deep-Learning-Anwendungsprozessor 2500 Anweisungen, die bei Ausführung durch den Deep-Learning-Anwendungsprozessor 2500 den Deep-Learning-Anwendungsprozessor 2500 dazu veranlassen, einige oder alle der in dieser gesamten Offenbarung beschriebenen Prozesse und Techniken durchzuführen. In mindestens einer Ausführungsform ist der Deep-Learning-Anwendungsprozessor 2500 eine anwendungsspezifische integrierte Schaltung (ASIC). In mindestens einer Ausführungsform führt der Anwendungsprozessor 2500 Matrixmultiplikationsoperationen entweder „fest verdrahtet“ in Hardware als Ergebnis des Durchführens einer oder mehrerer Anweisungen oder beides durch. In mindestens einer Ausführungsform beinhaltet der Deep-Learning-Anwendungsprozessor 2500 ohne Einschränkung Verarbeitungscluster 2510(1)-2510(12), chipübergreifende Verknüpfungen (Inter-Chip Links - „ICLs“) 2520(1)-2520(12), chipübergreifende Steuerungen (Inter-Chip Controllers - „ICCs“) 2530(1)-2530(2), Speicher mit hoher Bandbreite der zweiten Generation (high-bandwidth memory second generation - „HBM2“) 2540(1)-2540(4), Speichersteuerungen (memory controllers - „Mem Ctrlrs“) 2542(1)-2542(4), eine Bitübertragungsschicht mit Speicher mit hoher Bandbreite (high bandwidth memory physical layer - „HBM PHY“) 2544(1)-2544(4), eine zentrale Verwaltungssteuerungs-Verarbeitungseinheit („Verwaltungssteuerungs-CPU“) 2550, eine serielle Peripherieschnittstelle, eine zwischenintegrierte Schaltung und einen Universal-Eingabe/Ausgabe-Block („SPI, I2C, GPIO“) 2560, eine Interconnect-Express-Steuerung für Peripheriekomponenten und einen Direktspeicherzugriffsblock („PCle-Steuerung und DMA“) 2570 und einen sechzehnspurigen Interconnect-Express-Port für Peripheriekomponenten („PCI-Express x 16“) 2580.
  • In mindestens einer Ausführungsform können die Verarbeitungscluster 2510 Deep-Learning-Operationen ausführen, die Inferenz- oder Vorhersageoperationen beinhalten, die auf Gewichtungsparametern basieren, die mit einem oder mehreren Trainingsverfahren, einschließlich der hierin beschriebenen, berechnet wurden. In mindestens einer Ausführungsform kann jeder Verarbeitungscluster 2510 ohne Einschränkung eine beliebige Anzahl und einen beliebigen Typ von Prozessoren beinhalten. In mindestens einer Ausführungsform kann der Deep-Learning-Anwendungsprozessor 2500 eine beliebige Anzahl und einen beliebigen Typ von Verarbeitungsclustern 2500 beinhalten. In mindestens einer Ausführungsform sind die chipübergreifenden Verknüpfungen 2520 bidirektional. In mindestens einer Ausführungsform ermöglichen die chipübergreifenden Verknüpfungen 2520 und die chipübergreifenden Steuerungen 2530 mehreren Deep-Learning-Anwendungsprozessoren 2500 den Austausch von Informationen, einschließlich Aktivierungsinformationen, die aus dem Durchführen eines oder mehrerer Algorithmen des maschineller Lernens resultieren, die in einem oder mehreren neuronalen Netzen verkörpert sind. In mindestens einer Ausführungsform kann der Deep-Learning-Anwendungsprozessor 2500 eine beliebige Anzahl (einschließlich null) und einen beliebigen Typ von ICLs 2520 und ICCs 2530 beinhalten.
  • In mindestens einer Ausführungsform stellen die HBM2s 2540 insgesamt 32 Gigabyte (GB) Speicher bereit. In mindestens einer Ausführungsform ist HBM2 2540(i) sowohl mit der Speichersteuerung 2542(i) als auch der HBM PHY 2544(i) assoziiert, wobei „i“ eine willkürliche ganze Zahl ist. In mindestens einer Ausführungsform kann eine beliebige Anzahl von HBM2s 2540 einen beliebigen Typ und eine beliebige Gesamtmenge an Speicher mit hoher Bandbreite bereitstellen und mit einer beliebigen Anzahl (einschließlich null) und einem beliebigen Typ von Speichersteuerungen 2542 und HBM PHYs 2544 assoziiert sein. In mindestens einer Ausführungsform können SPI, I2C, GPIO 2560, PCIe-Steuerung und DMA 2570 und/oder PCIe 2580 durch eine beliebige Anzahl und einen beliebigen Typ von Blöcken ersetzt werden, die eine beliebige Anzahl und einen beliebigen Typ von Kommunikationsstandards in einer beliebigen technisch machbaren Weise ermöglichen.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie etwa ein neuronales Netz, zu trainieren, um dem Deep-Learning-Anwendungsprozessor 2500 bereitgestellte Informationen vorherzusagen oder zu inferenzieren. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor 2500 verwendet, um Informationen auf Grundlage eines trainierten Modells des maschinellen Lernens (z. B. eines neuronalen Netzes) zu inferenzieren oder vorherzusagen, das durch einen anderen Prozessor oder ein anderes System oder durch den Deep-Learning-Anwendungsprozessor 2500 trainiert wurde. In mindestens einer Ausführungsform kann der Prozessor 2500 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netze durchzuführen.
  • 26 ist ein Blockdiagramm eines neuromorphen Prozessors 2600 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der neuromorphe Prozessor 2600 eine oder mehrere Eingaben von Quellen außerhalb des neuromorphen Prozessors 2600 empfangen. In mindestens einer Ausführungsform können diese Eingaben an ein oder mehrere Neuronen 2602 innerhalb des neuromorphen Prozessors 2600 übertragen werden. In mindestens einer Ausführungsform können die Neuronen 2602 und Komponenten davon unter Verwendung von Schaltungen oder Logik implementiert sein, einschließlich einer oder mehrerer arithmetisch-logischer Einheiten (ALUs). In mindestens einer Ausführungsform kann der neuromorphe Prozessor 2600 ohne Einschränkung Tausende oder Millionen von Instanzen von Neuronen 2602 beinhalten, aber es kann eine beliebige geeignete Anzahl von Neuronen 2602 verwendet werden. In mindestens einer Ausführungsform kann jede Instanz des Neurons 2602 einen Neuroneneingang 2604 und einen Neuronenausgang 2606 beinhalten. In mindestens einer Ausführungsform können die Neuronen 2602 Ausgaben erzeugen, die an Eingänge anderer Instanzen von Neuronen 2602 übertragen werden können. Zum Beispiel können in mindestens einer Ausführungsform die Neuroneneingänge 2604 und die Neuronenausgänge 2606 über Synapsen 2608 zusammengeschaltet sein.
  • In mindestens einer Ausführungsform können die Neuronen 2602 und die Synapsen 2608 so miteinander verbunden sein, dass der neuromorphe Prozessor 2600 arbeitet, um die vom neuromorphen Prozessor 2600 empfangenen Informationen zu verarbeiten oder zu analysieren. In mindestens einer Ausführungsform können die Neuronen 2602 einen Ausgabeimpuls (oder „Fire“ oder „Spike“) übertragen, wenn die über den Neuroneneingang 2604 empfangenen Eingaben einen Schwellenwert überschreiten. In mindestens einer Ausführungsform können die Neuronen 2602 die an den Neuroneneingängen 2604 empfangenen Signale summieren oder integrieren. Zum Beispiel können in mindestens einer Ausführungsform die Neuronen 2602 als leckende Integrate-and-Fire-Neuronen implementiert sein, wobei, falls eine Summe (als „Membranpotential“ bezeichnet) einen Schwellenwert überschreitet, das Neuron 2602 eine Ausgabe (oder „Feuern“) unter Verwendung einer Übertragungsfunktion, wie etwa einer Sigmoid- oder Schwellenwertfunktion, erzeugen kann. In mindestens einer Ausführungsform kann ein leckendes Integrate-and-Fire-Neuron Signale, die an den Neuroneneingängen 2604 empfangen werden, zu einem Membranpotential summieren und auch einen Abklingfaktor (oder ein Leck) anwenden, um ein Membranpotential zu reduzieren. In mindestens einer Ausführungsform kann ein leckendes Integrate-and-Fire-Neuron feuern, falls mehrere Eingabesignale an den Neuroneneingängen 2604 schnell genug empfangen werden, um einen Schwellenwert zu überschreiten (d. h., bevor ein Membranpotential zu weit nach unten abklingt, um zu feuern). In mindestens einer Ausführungsform können die Neuronen 2602 unter Verwendung von Schaltungen oder Logik implementiert sein, die Eingaben empfangen, Eingaben in ein Membranpotential integrieren und ein Membranpotential abklingen lassen. In mindestens einer Ausführungsform können Eingaben gemittelt werden oder kann eine beliebige andere geeignete Übertragungsfunktion verwendet werden. Darüber hinaus können die Neuronen 2602 in mindestens einer Ausführungsform ohne Einschränkung Komparatorschaltungen oder -logik beinhalten, die einen Ausgabe-Spike an dem Neuronenausgang 2606 erzeugen, wenn das Ergebnis des Anwendens einer Übertragungsfunktion auf den Neuroneneingang 2604 einen Schwellenwert überschreitet. In mindestens einer Ausführungsform kann das Neuron 2602, sobald es feuert, zuvor empfangene Eingabeinformationen ignorieren, indem es zum Beispiel ein Membranpotential auf 0 oder einen anderen geeigneten Standardwert zurücksetzt. In mindestens einer Ausführungsform kann das Neuron 2602, sobald das Membranpotential auf 0 zurückgesetzt wurde, nach einer geeigneten Zeitspanne (oder Refraktärzeit) den normalen Betrieb wiederaufnehmen.
  • In mindestens einer Ausführungsform können die Neuronen 2602 über Synapsen 2608 miteinander verbunden sein. In mindestens einer Ausführungsform können die Synapsen 2608 arbeiten, um Signale von einem Ausgang eines ersten Neurons 2602 an einen Eingang eines zweiten Neurons 2602 zu übertragen. In mindestens einer Ausführungsform können die Neuronen 2602 Informationen über mehr als eine Instanz der Synapse 2608 übertragen. In mindestens einer Ausführungsform können eine oder mehrere Instanzen des Neuronenausgangs 2606 über eine Instanz der Synapse 2608 mit einer Instanz des Neuroneneingangs 2604 in dem gleichen Neuron 2602 verbunden sein. In mindestens einer Ausführungsform kann eine Instanz des Neurons 2602, die eine über eine Instanz der Synapse 2608 zu übertragende Ausgabe erzeugt, als „präsynaptisches Neuron“ in Bezug auf diese Instanz der Synapse 2608 bezeichnet werden. In mindestens einer Ausführungsform kann eine Instanz des Neurons 2602, die eine über eine Instanz der Synapse 2608 übertragene Eingabe empfängt, als „postsynaptisches Neuron“ in Bezug auf diese Instanz der Synapse 2608 bezeichnet werden. Da eine Instanz des Neurons 2602 Eingaben von einer oder mehreren Instanzen der Synapse 2608 empfangen kann und auch Ausgaben über eine oder mehrere Instanzen der Synapse 2608 übertragen kann, kann in mindestens einer Ausführungsform eine einzelne Instanz des Neurons 2602 daher sowohl ein „präsynaptisches Neuron“ als auch ein „postsynaptisches Neuron“ in Bezug auf verschiedene Instanzen der Synapsen 2608 sein.
  • In mindestens einer Ausführungsform können die Neuronen 2602 in einer oder mehreren Schichten organisiert sein. In mindestens einer Ausführungsform kann jede Instanz des Neurons 2602 einen Neuronenausgang 2606 aufweisen, der sich durch eine oder mehrere Synapsen 2608 zu einem oder mehreren Neuroneneingängen 2604 auffächern kann. In mindestens einer Ausführungsform können die Neuronenausgänge 2606 der Neuronen 2602 in einer ersten Schicht 2610 mit den Neuroneneingängen 2604 der Neuronen 2602 in einer zweiten Schicht 2612 verbunden sein. In mindestens einer Ausführungsform kann die Schicht 2610 als „vorwärtsgekoppelte Schicht“ bezeichnet werden. In mindestens einer Ausführungsform kann sich jede Instanz des Neurons 2602 in einer Instanz der ersten Schicht 2610 zu jeder Instanz des Neurons 2602 in der zweiten Schicht 2612 auffächern. In mindestens einer Ausführungsform kann die erste Schicht 2610 als „vollständig verbundene vorwärtsgekoppelte Schicht“ bezeichnet werden. In mindestens einer Ausführungsform kann sich jede Instanz des Neurons 2602 in einer Instanz der zweiten Schicht 2612 zu weniger als allen Instanzen des Neurons 2602 in einer dritten Schicht 2614 auffächern. In mindestens einer Ausführungsform kann die zweite Schicht 2612 als „spärlich verbundene vorwärtsgekoppelte Schicht“ bezeichnet werden. In mindestens einer Ausführungsform können sich die Neuronen 2602 in der zweiten Schicht 2612 zu den Neuronen 2602 in mehreren anderen Schichten auffächern, einschließlich zu den Neuronen 2602, die sich ebenfalls in der zweiten Schicht 2612 befinden. In mindestens einer Ausführungsform kann die zweite Schicht 2612 als „rekurrente Schicht“ bezeichnet werden. In mindestens einer Ausführungsform kann der neuromorphe Prozessor 2600 ohne Einschränkung eine beliebige geeignete Kombination von rekurrenten Schichten und vorwärtsgekoppelten Schichten beinhalten, einschließlich, ohne Einschränkung, sowohl wenig verbundene vorwärtsgekoppelte Schichten als auch vollständig verbundene vorwärtsgekoppelte Schichten.
  • In mindestens einer Ausführungsform kann der neuromorphe Prozessor 2600 ohne Einschränkung eine rekonfigurierbare Zusammenschaltungsarchitektur oder dedizierte fest verdrahtete Zusammenschaltungen beinhalten, um die Synapse 2608 mit den Neuronen 2602 zu verbinden. In mindestens einer Ausführungsform kann der neuromorphe Prozessor 2600 ohne Einschränkung Schaltung oder Logik beinhalten, die es ermöglicht, Synapsen je nach Bedarf auf Grundlage der Topologie des neuronalen Netzes und des Neuronen-Fan-In/-Out unterschiedlichen Neuronen 2602 zuzuweisen. Zum Beispiel können in mindestens einer Ausführungsform die Synapsen 2608 mit den Neuronen 2602 unter Verwendung einer Zusammenschaltungsstruktur, wie etwa eines Netzes auf einem Chip, oder mit dedizierten Verbindungen verbunden sein. In mindestens einer Ausführungsform können die Synapsenzusammenschaltungen und ihre Komponenten unter Verwendung einer Schaltung oder Logik implementiert sein.
  • 27 ist ein Blockdiagramm eines Verarbeitungssystems gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet das System 2700 einen oder mehrere Prozessoren 2702 und einen oder mehrere Grafikprozessoren 2708 und es kann ein Einzelprozessor-Desktopsystem, ein Multiprozessor-Arbeitsstationssystem oder ein Serversystem sein, das eine große Anzahl von Prozessoren 2702 oder Prozessorkernen 2707 aufweist. In mindestens einer Ausführungsform ist das System 2700 eine Verarbeitungsplattform, die in eine integrierte Schaltung als System auf einem Chip (SoC) zur Verwendung in mobilen, tragbaren oder eingebetteten Vorrichtungen integriert ist.
  • In mindestens einer Ausführungsform kann das System 2700 eine serverbasierte Spieleplattform, eine Spielekonsole, einschließlich einer Spiele- und Medienkonsole, eine mobile Spielekonsole, eine tragbare Spielekonsole oder eine Online-Spielekonsole beinhalten oder in diese integriert sein. In mindestens einer Ausführungsform ist das System 2700 ein Mobiltelefon, ein Smartphone, eine Tablet-Rechenvorrichtung oder eine mobile Internet-Vorrichtung. In mindestens einer Ausführungsform kann das Verarbeitungssystem 2700 auch eine tragbare Vorrichtung beinhalten, mit dieser gekoppelt oder in diese integriert sein, wie etwa eine Smartwatch-Wearable-Vorrichtung, eine Smart-Eyewear-Vorrichtung, eine Augmented-Reality-Vorrichtung oder eine Virtual-Reality-Vorrichtung. In mindestens einer Ausführungsform ist das Verarbeitungssystem 2700 eine Fernseh- oder Set-Top-Box-Vorrichtung, die einen oder mehrere Prozessoren 2702 und eine grafische Schnittstelle aufweist, die durch einen oder mehrere Grafikprozessoren 2708 erzeugt wird.
  • In mindestens einer Ausführungsform beinhalten ein oder mehrere Prozessoren 2702 jeweils einen oder mehrere Prozessorkerne 2707 zur Verarbeitung von Anweisungen, die, wenn sie ausgeführt werden, Operationen für System- und Benutzersoftware ausführen. In mindestens einer Ausführungsform ist jeder von einem oder mehreren Prozessorkernen 2707 so konfiguriert, dass er eine spezifische Anweisungssequenz 2709 verarbeitet. In mindestens einer Ausführungsform kann die Anweisungssequenz 2709 Complex Instruction Set Computing (CISC), Reduced Instruction Set Computing (RISC) oder Rechnen über ein Very Long Instruction Word (VLIW) ermöglichen. In mindestens einer Ausführungsform können die Prozessorkerne 2707 jeweils eine andere Anweisungssequenz 2709 verarbeiten, die Anweisungen beinhalten kann, um die Emulation anderer Anweisungssequenzen zu erleichtern. In mindestens einer Ausführungsform kann der Prozessorkern 2707 auch andere Verarbeitungsvorrichtungen beinhalten, wie etwa einen digitalen Signalprozessor (DSP).
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 2702 einen Cache-Speicher 2704. In mindestens einer Ausführungsform kann der Prozessor 2702 einen einzelnen internen Cache oder mehrere Levels von internem Cache aufweisen. In mindestens einer Ausführungsform wird der Cache-Speicher von verschiedenen Komponenten des Prozessors 2702 gemeinsam genutzt. In mindestens einer Ausführungsform verwendet der Prozessor 2702 auch einen externen Cache (z. B. einen Level-3-(L3-)Cache oder Last-Level-Cache (LLC)) (nicht gezeigt), der unter Verwendung bekannter Cache-Kohärenztechniken von den Prozessorkernen 2707 gemeinsam genutzt werden kann. In mindestens einer Ausführungsform ist in dem Prozessor 2702 zusätzlich eine Registerbank 2706 enthalten, die unterschiedliche Typen von Registern zum Speichern unterschiedlicher Datentypen beinhalten kann (z. B. Integerregister, Gleitkommaregister, Statusregister und ein Anweisungszeigerregister). In mindestens einer Ausführungsform kann die Registerdatei 2706 Allzweckregister oder andere Register beinhalten.
  • In mindestens einer Ausführungsform sind ein oder mehrere Prozessoren 2702 mit einem oder mehreren Schnittstellenbus(sen) 2710 gekoppelt, um Kommunikationssignale, wie etwa Adress-, Daten- oder Steuersignale, zwischen dem Prozessor 2702 und anderen Komponenten in dem System 2700 zu übertragen. In mindestens einer Ausführungsform kann der Schnittstellenbus 2710 ein Prozessorbus sein, wie etwa eine Version eines Direct-Media-Interface-(DMI-)Busses. In mindestens einer Ausführungsform ist der Schnittstellenbus 2710 nicht auf einen DMI-Bus beschränkt, sondern kann einen oder mehrere Peripheral-Component-Interconnect-Busse (z. B. PCI, PCI Express), Speicherbusse oder andere Typen von Schnittstellenbussen beinhalten. In mindestens einer Ausführungsform beinhalten die Prozessoren 2702 eine integrierte Speichersteuerung 2716 und einen Plattformsteuerungs-Hub 2730. In mindestens einer Ausführungsform ermöglicht die Speichersteuerung 2716 die Kommunikation zwischen einer Speichervorrichtung und anderen Komponenten des Systems 2700, während der Plattformsteuerungs-Hub (platform controller hub - PCH) 2730 Verbindungen mit E/A-Vorrichtungen über einen lokalen E/A-Bus bereitstellt.
  • In mindestens einer Ausführungsform kann eine Speichervorrichtung 2720 eine Vorrichtung mit dynamischem Direktzugriffsspeicher (DRAM), eine Vorrichtung mit statischem Direktzugriffsspeicher (SRAM), eine Flash-Speicher-Vorrichtung, eine Phasenwechsel-Speichervorrichtung oder eine andere Speichervorrichtung mit geeigneter Leistungsfähigkeit sein, um als Prozessspeicher zu dienen. In mindestens einer Ausführungsform kann die Speichervorrichtung 2720 als Systemspeicher für das System 2700 arbeiten, um Daten 2722 und Anweisungen 2721 zur Verwendung zu speichern, wenn ein oder mehrere Prozessoren 2702 eine Anwendung oder einen Prozess ausführen. In mindestens einer Ausführungsform ist die Speichersteuerung 2716 zudem an einen optionalen externen Grafikprozessor 2712 gekoppelt, der mit einem oder mehreren Grafikprozessoren 2708 in den Prozessoren 2702 kommunizieren kann, um Grafik- und Medienoperationen durchzuführen. In mindestens einer Ausführungsform kann eine Anzeigevorrichtung 2711 mit den Prozessor(en) 2702 verbunden sein. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 2711 eine oder mehrere von einer internen Anzeigevorrichtung, wie in einer mobilen elektronischen Vorrichtung oder einer Laptop-Vorrichtung, oder einer externen Anzeigevorrichtung beinhalten, die über eine Anzeigeschnittstelle (z. B. DisplayPort usw.) angeschlossen ist. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 2711 eine am Kopf befestigte Anzeige (head mounted display - HMD) beinhalten, wie etwa eine stereoskopische Anzeigevorrichtung zur Verwendung bei Virtual-Reality-(VR-)Anwendungen oder Augmented-Reality-(AR-)Anwendungen.
  • In mindestens einer Ausführungsform ermöglicht der Plattformsteuerungs-Hub 2730, dass Peripheriegeräte mit der Speichervorrichtung 2720 und dem Prozessor 2702 über einen Hochgeschwindigkeits-E/A-Bus verbunden werden. In mindestens einer Ausführungsform beinhalten die E/A-Peripheriegeräte eine Audiosteuerung 2746, eine Netzsteuerung 2734, eine Firmware-Schnittstelle 2728, einen drahtlosen Sendeempfänger 2726, Berührungssensoren 2725 und eine Datenspeichervorrichtung 2724 (z. B. Festplattenlaufwerk, Flash-Speicher usw.). In mindestens einer Ausführungsform kann die Datenspeichervorrichtung 2724 über eine Speicherschnittstelle (z. B. SATA) oder über einen Peripheriebus, wie etwa einen Peripheral-Component-Interconnect-Bus (z. B. PCI, PCI Express), verbunden sein. In mindestens einer Ausführungsform können die Berührungssensoren 2725 Touchscreen-Sensoren, Drucksensoren oder Fingerabdrucksensoren beinhalten. In mindestens einer Ausführungsform kann der drahtlose Sendeempfänger 2726 ein Wi-Fi-Sendeempfänger, ein Bluetooth-Sendeempfänger oder ein Sendeempfänger für ein mobiles Netz, wie etwa ein 3G-, 4G- oder Long-Term-Evolution-(LTE-)Sendeempfänger sein. In mindestens einer Ausführungsform ermöglicht die Firmware-Schnittstelle 2728 die Kommunikation mit der System-Firmware und kann zum Beispiel eine Unified Extensible Firmware Interface (UEFI) sein. In mindestens einer Ausführungsform kann die Netzsteuerung 2734 eine Netzverbindung zu einem drahtgebundenen Netz ermöglichen. In mindestens einer Ausführungsform ist eine Hochleistungsnetzsteuerung (nicht gezeigt) mit dem Schnittstellenbus 2710 gekoppelt. In mindestens einer Ausführungsform ist die Audiosteuerung 2746 eine Mehrkanal-High-Definition-Audiosteuerung. In mindestens einer Ausführungsform beinhaltet das System 2700 eine optionale ältere E/A-Steuerung 2740 zum Koppeln von älteren Vorrichtungen (z. B. Personal System 2 (PS/2)) an das System 2700. In mindestens einer Ausführungsform kann der Plattformsteuerungs-Hub 2730 auch mit einer oder mehreren Universal-Serial-Bus-(USB-)Steuerungen 2742 verbunden sein, die mit Eingabevorrichtungen, wie etwa Kombinationen aus Tastatur und Maus 2743, einer Kamera 2744 oder anderen USB-Eingabevorrichtungen, verbunden sind.
  • In mindestens einer Ausführungsform kann eine Instanz der Speichersteuerung 2716 und des Speicher-Hubs 2730 in einen diskreten externen Grafikprozessor, z. B. den externen Grafikprozessor 2712, integriert sein. In mindestens einer Ausführungsform können der Plattformsteuerungs-Hub 2730 und/oder die Speichersteuerung 2716 extern zu einem oder mehreren Prozessoren 2702 sein. Zum Beispiel kann das System 2700 in mindestens einer Ausführungsform eine externe Speichersteuerung 2716 und einen Plattformsteuerungs-Hub 2730 beinhalten, der als Speichersteuerungs-Hub und Peripheriesteuerungs-Hub innerhalb eines Systemchipsatzes konfiguriert sein kann, der mit den Prozessoren 2702 in Kommunikation steht.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 815 in den Grafikprozessor 2700 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in einer 3D-Pipeline verkörperten ALUs verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 8A oder 8B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter im chipinternen oder chipexternen Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 2700 konfigurieren, um einen oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, Architekturen, Anwendungsfälle oder Trainingstechniken für neuronale Netze durchzuführen.
  • 28 ist ein Blockdiagramm eines Prozessors 2800, der einen oder mehrere Prozessorkerne 2802A-2802N, eine integrierte Speichersteuerung 2814 und einen integrierten Grafikprozessor 2808 aufweist, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozessor 2800 zusätzliche Kerne bis einschließlich des zusätzlichen Kerns 2802N beinhalten, die durch Kästen mit gestrichelten Linien dargestellt sind. In mindestens einer Ausführungsform beinhaltet jeder der Prozessorkerne 2802A-2802N eine oder mehrere interne Cache-Einheiten 2804A-2804N. In mindestens einer Ausführungsform weist jeder Prozessorkern auch Zugriff auf eine oder mehrere gemeinsam genutzte Cache-Einheiten 2806 auf.
  • In mindestens einer Ausführungsform stellen die internen Cache-Einheiten 2804A-2804N und die gemeinsam genutzten Cache-Einheiten 2806 eine Cache-Speicherhierarchie innerhalb des Prozessors 2800 dar. In mindestens einer Ausführungsform können die Cache-Speichereinheiten 2804A-2804N mindestens ein Level von Anweisungs- und Daten-Cache innerhalb jedes Prozessorkerns und ein oder mehrere Levels von gemeinsam genutztem Cache mittleren Levels, wie etwa ein Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cache-Levels, beinhalten, wobei ein höchstes Cache-Level vor dem externen Speicher als LLC klassifiziert ist. In mindestens einer Ausführungsform hält die Cache-Kohärenzlogik die Kohärenz zwischen verschiedenen Cache-Einheiten 2806 und 2804A-2804N aufrecht.
  • In mindestens einer Ausführungsform kann der Prozessor 2800 auch einen Satz von einer oder mehreren Bussteuerungseinheiten 2816 und einen Systemagentenkern 2810 beinhalten. In mindestens einer Ausführungsform verwalten Bussteuerungseinheiten 2816 einen Satz von Peripheriebussen, wie etwa einen oder mehrere PCI- oder PCI-Express-Busse. In mindestens einer Ausführungsform stellt der Systemagentenkern 2810 eine Verwaltungsfunktionalität für verschiedene Prozessorkomponenten bereit. In mindestens einer Ausführungsform beinhaltet der Systemagentenkern 2810 eine oder mehrere integrierte Speichersteuerungen 2814, um den Zugriff auf verschiedene externe Speichervorrichtungen (nicht gezeigt) zu verwalten.
  • In mindestens einer Ausführungsform beinhalten einer oder mehrere der Prozessorkerne 2802A-2802N Unterstützung für simultanes Multi-Threading. In mindestens einer Ausführungsform beinhaltet der Systemagentenkern 2810 Komponenten zum Koordinieren und Betreiben der Kerne 2802A-2802N während der Multi-Thread-Verarbeitung. In mindestens einer Ausführungsform kann der Systemagentenkern 2810 zusätzlich eine Leistungssteuereinheit (power control unit - PCU) beinhalten, die Logik und Komponenten zum Regulieren eines oder mehrerer Leistungszustände der Prozessorkerne 2802A-2802N und des Grafikprozessors 2808 beinhaltet.
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 2800 zusätzlich den Grafikprozessor 2808 zur Ausführung von Operationen zur Grafikverarbeitung. In mindestens einer Ausführungsform ist der Grafikprozessor 2808 mit gemeinsam genutzten Cache-Einheiten 2806 und dem Systemagentenkern 2810 gekoppelt, der eine oder mehrere integrierte Speichersteuerungen 2814 beinhaltet. In mindestens einer Ausführungsform beinhaltet der Systemagentenkern 2810 zudem eine Anzeigesteuerung 2811, um die Grafikprozessorausgabe zu einer oder mehreren gekoppelten Anzeigen zu treiben. In mindestens einer Ausführungsform kann die Anzeigesteuerung 2811 auch ein separates Modul sein, das über mindestens eine Zusammenschaltung mit dem Grafikprozessor 2808 gekoppelt ist, oder sie kann in den Grafikprozessor 2808 integriert sein.
  • In mindestens einer Ausführungsform wird eine Ringzusammenschaltung 2812 verwendet, um interne Komponenten des Prozessors 2800 zu koppeln. In mindestens einer Ausführungsform kann eine alternative Zusammenschaltungseinheit verwendet werden, wie z. B. eine Punkt-zu-Punkt-Zusammenschaltung, eine geschaltete Zusammenschaltung oder andere Techniken. In mindestens einer Ausführungsform ist der Grafikprozessor 2808 über eine E/A-Verknüpfung 2813 mit der Ringzusammenschaltung 2812 gekoppelt.
  • In mindestens einer Ausführungsform stellt die E/A-Verknüpfung 2813 mindestens eine von mehreren Sorten von E/A-Zusammenschaltungen dar, einschließlich einer gehäuseinternen E/A-Zusammenschaltung, welche die Kommunikation zwischen verschiedenen Prozessorkomponenten und einem eingebetteten Speichermodul 2818 mit hoher Leistungsfähigkeit, wie z. B. einem eDRAM-Modul, ermöglicht. In mindestens einer Ausführungsform verwenden jeder der Prozessorkerne 2802A-2802N und der Grafikprozessor 2808 ein eingebettetes Speichermodul 2818 als gemeinsam genutzten Last-Level-Cache.
  • In mindestens einer Ausführungsform sind die Prozessorkerne 2802A-2802N homogene Kerne, die eine gemeinsame Anweisungssatzarchitektur ausführen. In mindestens einer Ausführungsform sind die Prozessorkerne 2802A-2802N bezüglich der Anweisungssatzarchitektur (instruction set architecture - ISA) heterogen, wobei einer oder mehrere der Prozessorkerne 2802A-2802N einen gemeinsamen Anweisungssatz ausführen, während ein oder mehrere andere Kerne der Prozessorkerne 2802A-2802N eine Teilmenge eines gemeinsamen Anweisungssatzes oder eines anderen Anweisungssatzes ausführen. In mindestens einer Ausführungsform sind die Prozessorkerne 2802A-2802N bezüglich der Mikroarchitektur heterogen, wobei ein oder mehrere Kerne, die einen relativ betrachtet höheren Leistungsverbrauch aufweisen, mit einem oder mehreren Kernen, die einen niedrigeren Leistungsverbrauch aufweisen, gekoppelt sind. In mindestens einer Ausführungsform kann der Prozessor 2800 auf einem oder mehreren Chips oder als SoC-integrierte Schaltung implementiert sein.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 815 in den Grafikprozessor 2810 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in einer 3D-Pipeline verkörperten ALUs, Grafikkerne 2802, gemeinsam genutzte Logik oder andere Logik in 28 verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 8A oder 8B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Prozessors 2800 konfigurieren, um einen oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, Architekturen, Anwendungsfälle oder Trainingstechniken für neuronale Netze durchzuführen.
  • 29 ist ein Blockdiagramm eines Grafikprozessors 2900, bei dem es sich um eine diskrete Grafikverarbeitungseinheit oder um einen mit einer Vielzahl von Verarbeitungskernen integrierten Grafikprozessor handeln kann. In mindestens einer Ausführungsform kommuniziert der Grafikprozessor 2900 über eine auf Speicher abgebildete E/A-Schnittstelle mit Registern auf dem Grafikprozessor 2900 und mit in Speicher abgelegten Befehlen. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2900 eine Speicherschnittstelle 2914 zum Zugreifen auf Speicher. In mindestens einer Ausführungsform ist die Speicherschnittstelle 2914 eine Schnittstelle zu lokalem Speicher, einem oder mehreren internen Caches, einem oder mehreren gemeinsam genutzten externen Caches und/oder zu Systemspeicher.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2900 zudem eine Anzeigesteuerung 2902, um Anzeigeausgabedaten zu einer Anzeigevorrichtung 2920 zu treiben. In mindestens einer Ausführungsform beinhaltet die Anzeigesteuerung 2902 Hardware für eine oder mehrere Überlagerungsebenen für die Anzeigevorrichtung 2920 und die Komposition mehrerer Schichten von Video- oder Benutzerschnittstellenelementen. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 2920 eine interne oder externe Anzeigevorrichtung sein. In mindestens einer Ausführungsform ist die Anzeigevorrichtung 2920 eine am Kopf befestigte Anzeigevorrichtung, wie etwa eine Virtual-Reality-(VR-)Anzeigevorrichtung oder eine Augmented-Reality-(AR-)Anzeigevorrichtung. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2900 eine Videocodec-Engine 2906 zum Codieren, Decodieren oder Transcodieren von Medien in, aus oder zwischen einem oder mehreren Mediencodierformaten, einschließlich, aber nicht beschränkt auf, Moving-Picture-Experts-Group-(MPEG-)Formate wie etwa MPEG-2, Advanced-Video-Coding-(AVC-)Formate wie etwa H.264/MPEG-4 AVC sowie Society of Motion Picture & Television Engineers (SMPTE) 421M/VC-1 und Joint-Photographic-Experts-Group-(JPEG-)Formate wie etwa JPEG und Motion JPEG (MJPEG).
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2900 eine Block Image Transfer (BLIT)-Engine 2904, um zweidimensionale (2D) Rasterisierungsoperationen auszuführen, die zum Beispiel Bit-Boundary Block Transfers beinhalten. In mindestens einer Ausführungsform werden jedoch 2D-Grafikoperationen unter Verwendung einer oder mehreren Komponenten einer Grafikverarbeitungs-Engine (graphics processing engine - GPE) 2910 durchgeführt. In mindestens einer Ausführungsform ist die GPE 2910 eine Rechen-Engine zum Durchführen von Grafikoperationen, einschließlich dreidimensionaler (3D) Grafikoperationen und Medienoperationen.
  • In mindestens einer Ausführungsform beinhaltet die GPE 2910 eine 3D-Pipeline 2912 zum Ausführen von 3D-Operationen, wie z. B. das Rendern dreidimensionaler Bilder und Szenen unter Verwendung von Verarbeitungsfunktionen, die auf 3D-Primitivformen (z. B. Rechteck, Dreieck usw.) wirken. In mindestens einer Ausführungsform beinhaltet die 3D-Pipeline 2912 programmierbare Elemente und Festfunktionselemente, die verschiedene Tasks durchführen und/oder Ausführungs-Threads für ein 3D-/Medienteilsystem 2915 erzeugen. Während die 3D-Pipeline 2912 zum Durchführen von Medienoperationen verwendet werden kann, beinhaltet die GPE 2910 in mindestens einer Ausführungsform auch eine Medienpipeline 2916, die zum Durchführen von Medienoperationen, wie etwa Videonachverarbeitung und Bildverbesserung, verwendet wird.
  • In mindestens einer Ausführungsform beinhaltet die Medienpipeline 2916 Festfunktions- oder programmierbare Logikeinheiten, um eine oder mehrere spezialisierte Operationen im Medienbereich auszuführen, wie z. B. Videodecodierbeschleunigung, Videoentflechtung und Videocodierbeschleunigung anstelle oder im Auftrag der Videocodec-Engine 2906. In mindestens einer Ausführungsform beinhaltet die Medienpipeline 2916 zusätzlich eine Thread-Erzeugungseinheit, um Threads zum Ausführen auf dem 3D-/Medienteilsystem 2915 zu erzeugen. In mindestens einer Ausführungsform führen erzeugte Threads Berechnungen für Medienoperationen auf einer oder mehreren Grafikausführungseinheiten aus, die in dem 3D-/Medienteilsystem 2915 enthalten sind.
  • In mindestens einer Ausführungsform beinhaltet das 3D/Medien-Teilsystem 2915 eine Logik zur Ausführung von Threads, die von der 3D-Pipeline 2912 und der Medienpipeline 2916 erzeugt wurden. In mindestens einer Ausführungsform senden die 3D-Pipeline 2912 und die Medienpipeline 2916 Thread-Ausführungsanforderungen an das 3D-/Medienteilsystem 2915, das Thread-Zuteilungslogik zum Vermitteln und Zuteilen verschiedener Anforderungen an verfügbare Thread-Ausführungsressourcen beinhaltet. In mindestens einer Ausführungsform beinhalten die Ausführungsressourcen ein Array von Grafikausführungseinheiten zum Verarbeiten von 3D- und Medien-Threads. In mindestens einer Ausführungsform beinhaltet das 3D-/Medienteilsystem 2915 einen oder mehrere interne Caches für Thread-Anweisungen und Daten. In mindestens einer Ausführungsform beinhaltet das Teilsystem 2915 auch gemeinsam genutzten Speicher, einschließlich Registern und adressierbaren Speichers, um Daten zwischen Threads gemeinsam zu nutzen und Ausgabedaten zu speichern.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 815 in den Grafikprozessor 2900 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in der 3D-Pipeline 2912 verkörperten ALUs verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 8A oder 8B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 2900 konfigurieren, um einen oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, Architekturen, Anwendungsfälle oder Trainingstechniken für neuronale Netze durchzuführen.
  • 30 ist ein Blockdiagramm einer Grafikverarbeitungs-Engine 3010 eines Grafikprozessors gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist die Grafikverarbeitungs-Engine (GPE) 3010 eine Version der in 29 gezeigten GPE 2910. In mindestens einer Ausführungsform ist eine Medienpipeline 3016 optional und möglicherweise nicht explizit innerhalb der GPE 3010 enthalten. In mindestens einer Ausführungsform ist ein separater Medien- und/oder Bildprozessor an die GPE 3010 gekoppelt.
  • In mindestens einer Ausführungsform ist die GPE 3010 mit einem Befehlsstreamer 3003 gekoppelt oder beinhaltet einen solchen, der einen Befehlsstrom an eine 3D-Pipeline 3012 und/oder Medienpipeline 3016 bereitstellt. In mindestens einer Ausführungsform ist der Befehls-Streamer 3003 an Speicher gekoppelt, bei dem es sich um Systemspeicher oder um einen oder mehrere von internem Cache-Speicher und gemeinsam genutztem Cache-Speicher handeln kann. In mindestens einer Ausführungsform empfängt der Befehls-Streamer 3003 Befehle aus Speicher und sendet Befehle an die 3D-Pipeline 3012 und/oder die Medienpipeline 3016. In mindestens einer Ausführungsform handelt es sich bei den Befehlen um Anweisungen, Primitive oder Mikrooperationen, die aus einem Ringpuffer abgerufen werden, der Befehle für die 3D-Pipeline 3012 und die Medienpipeline 3016 speichert. In mindestens einer Ausführungsform kann ein Ringpuffer zusätzlich Batch-Befehlspuffer beinhalten, die Batches von mehreren Befehlen speichern. In mindestens einer Ausführungsform können die Befehle für die 3D-Pipeline 3012 auch Bezugnahmen auf Daten beinhalten, die in Speicher gespeichert sind, wie etwa, aber nicht beschränkt auf, Vertex- und Geometriedaten für die 3D-Pipeline 3012 und/oder Bilddaten und Speicherobjekte für die Medienpipeline 3016. In mindestens einer Ausführungsform verarbeiten die 3D-Pipeline 3012 und die Medienpipeline 3016 Befehle und Daten, indem sie Operationen durchführen oder einen oder mehrere Ausführungs-Threads einem Grafikkernarray 3014 zuteilen. In mindestens einer Ausführungsform beinhaltet das Grafikkernarray 3014 einen oder mehrere Blöcke von Grafikkernen (z. B. Grafikkerne 3015A, Grafikkerne 3015B), wobei jeder Block einen oder mehrere Grafikkerne beinhaltet. In mindestens einer Ausführungsform beinhaltet jeder Grafikkern einen Satz von Grafikausführungsressourcen, der eine Universal- und eine grafikspezifische Ausführungslogik zum Durchführen von Grafik- und Rechenoperationen sowie Logik zur Texturverarbeitung mit fester Funktion und/oder zur Beschleunigung des maschinellen Lernens und der künstlichen Intelligenz, einschließlich der Inferenz- und/oder Trainingslogik 815 in 8A und 8B, beinhaltet.
  • In mindestens einer Ausführungsform beinhaltet die 3D-Pipeline 3012 eine Festfunktion und eine programmierbare Logik zur Verarbeitung eines oder mehrerer Shader-Programme, wie z. B. Vertex-Shader, Geometrie-Shader, Pixel-Shader, Fragment-Shader, Compute-Shader oder andere Shader-Programme, durch Verarbeitung von Anweisungen und Weiterleitung von Ausführungsthreads an das Grafikkernarray 3014. In mindestens einer Ausführungsform stellt das Grafikkernarray 3014 einen einheitlichen Block von Ausführungsressourcen zur Verwendung beim Verarbeiten von Shader-Programmen bereit. In mindestens einer Ausführungsform beinhaltet eine Mehrzweck-Ausführungslogik (z. B. Ausführungseinheiten) innerhalb der Grafikkerne 3015A-3015B des Grafikkernarrays 3014 Unterstützung für verschiedene 3D-API-Shader-Sprachen und sie kann mehrere simultane Ausführungs-Threads ausführen, die mit mehreren Shadern assoziiert sind.
  • In mindestens einer Ausführungsform beinhaltet das Grafikkernarray 3014 auch eine Ausführungslogik zum Durchführen von Medienfunktionen, wie etwa Video- und/oder Bildverarbeitung. In mindestens einer Ausführungsform beinhalten die Ausführungseinheiten zusätzlich Universallogik, die so programmiert werden kann, dass sie zusätzlich zu Grafikverarbeitungsoperationen parallele Universalrechenoperationen durchführt.
  • In mindestens einer Ausführungsform können Ausgabedaten, die von Threads erzeugt werden, die auf dem Grafikkernarray 3014 ausgeführt werden, in einem Unified Return Buffer (URB) 3018 an den Speicher ausgegeben werden. In mindestens einer Ausführungsform kann der URB 3018 Daten für mehrere Threads speichern. In mindestens einer Ausführungsform kann der URB 3018 verwendet werden, um Daten zwischen unterschiedlichen Threads zu senden, die auf dem Grafikkernarray 3014 ausgeführt werden. In mindestens einer Ausführungsform kann der URB 3018 zusätzlich für die Synchronisation zwischen Threads auf dem Grafikkernarray 3014 und der Festfunktionslogik innerhalb der gemeinsam genutzten Funktionslogik 3020 verwendet werden.
  • In mindestens einer Ausführungsform ist das Grafikkernarray 3014 skalierbar, so dass das Grafikkernarray 3014 eine variable Anzahl von Grafikkernen beinhaltet, von denen jeder eine variable Anzahl von Ausführungseinheiten basierend auf einem angestrebten Energie- und Leistungsniveau von GPE 3010 aufweist. In mindestens einer Ausführungsform sind die Ausführungsressourcen dynamisch skalierbar, sodass die Ausführungsressourcen nach Bedarf aktiviert oder deaktiviert werden können.
  • In mindestens einer Ausführungsform ist das Grafikkernarray 3014 mit der gemeinsamen Funktionslogik 3020 gekoppelt, die mehrere Ressourcen beinhaltet, die von den Grafikkernen im Grafikkernarray 3014 gemeinsam genutzt werden. In mindestens einer Ausführungsform sind die gemeinsam genutzten Funktionen, die durch die gemeinsam genutzte Funktionslogik 3020 durchgeführt werden, in Hardware-Logikeinheiten verkörpert, die eine spezialisierte Ergänzungsfunktionalität für das Grafikkernarray 3014 bereitstellen. In mindestens einer Ausführungsform beinhaltet die gemeinsam genutzte Funktionslogik 3020 eine Abtastereinheit 3021, eine Mathematikeinheit 3022 und Logik 3023 zur Zwischen-Thread-Kommunikation (interthread communication - ITC), ist aber nicht darauf beschränkt. In mindestens einer Ausführungsform sind ein oder mehrere Caches 3025 in der gemeinsam genutzten Funktionslogik 3020 enthalten oder an diese gekoppelt.
  • In mindestens einer Ausführungsform wird eine gemeinsam genutzte Funktion verwendet, wenn die Nachfrage nach einer speziellen Funktion nicht ausreicht, um sie in das Grafikkernarray 3014 aufzunehmen. In mindestens einer Ausführungsform wird eine einzelne Instanziierung einer spezialisierten Funktion in der gemeinsam genutzten Funktionslogik 3020 verwendet und von anderen Ausführungsressourcen innerhalb des Grafikkernarrays 3014 gemeinsam genutzt. In mindestens einer Ausführungsform können spezifische gemeinsam genutzte Funktionen innerhalb der gemeinsam genutzten Funktionslogik 3020, die durch das Grafikkernarray 3014 intensiv genutzt werden, in der gemeinsam genutzten Funktionslogik 3316 innerhalb des Grafikkernarrays 3014 enthalten sein. In mindestens einer Ausführungsform kann die gemeinsam genutzte Funktionslogik 3316 innerhalb des Grafikkernarrays 3014 einen Teil der oder die gesamte Logik innerhalb der gemeinsam genutzten Funktionslogik 3020 beinhalten. In mindestens einer Ausführungsform können alle Logikelemente innerhalb der gemeinsam genutzten Funktionslogik 3020 innerhalb der gemeinsam genutzten Funktionslogik 3026 des Grafikkernarrays 3014 dupliziert werden. In mindestens einer Ausführungsform ist die gemeinsam genutzte Funktionslogik 3020 zugunsten der gemeinsam genutzten Funktionslogik 3026 innerhalb des Grafikkernarrays 3014 ausgeschlossen.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 815 in den Grafikprozessor 3010 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in der 3D-Pipeline 3012 verkörperten ALUs, Grafikkerne 3015, gemeinsam genutzte Logik 3026, gemeinsam genutzte Logik 3020 oder andere Logik in 30 verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 8A oder 8B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 3010 konfigurieren, um einen oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, Architekturen, Anwendungsfälle oder Trainingstechniken für neuronale Netze durchzuführen.
  • 31 ist ein Blockdiagramm von Hardware-Logik eines Grafikprozessorkerns 3100 gemäß mindestens einer hierin beschriebenen Ausführungsform. In mindestens einer Ausführungsform ist der Grafikprozessorkern 3100 in einem Grafikkernarray enthalten. In mindestens einer Ausführungsform kann es sich bei dem Grafikprozessorkern 3100, mitunter als Kern-Slice bezeichnet, um einen oder mehrere Grafikkerne innerhalb eines modularen Grafikprozessors handeln. In mindestens einer Ausführungsform ist der Grafikprozessorkern 3100 beispielhaft für einen Grafikkern-Slice und ein Grafikprozessor, wie hierin beschrieben, kann auf Grundlage der angestrebten Leistungs- und Rechenleistungshüllkurven mehrere Grafikkern-Slices beinhalten. In mindestens einer Ausführungsform kann jeder Grafikkern 3100 einen Festfunktionsblock 3130 beinhalten, der mit mehreren Teilkernen 3101A-3101 F gekoppelt ist, die auch als Teil-Slices bezeichnet werden und modulare Blöcke von Universal- und Festfunktionslogik beinhalten.
  • In mindestens einer Ausführungsform beinhaltet der Festfunktionsblock 3130 eine Geometrie- und Festfunktionspipeline 3136, die von allen Teilkernen im Grafikprozessor 3100 gemeinsam genutzt werden kann, zum Beispiel in Grafikprozessorimplementierungen mit geringerer Leistung und/oder geringerem Stromverbrauch. In mindestens einer Ausführungsform beinhaltet die Geometrie- und Festfunktionspipeline 3136 eine 3D-Festfunktionspipeline, eine Video-Frontend-Einheit, einen Thread-Erzeuger und Thread-Zuteiler sowie einen Verwalter für einheitlichen Rückgabepuffer, der einheitlichen Rückgabepuffer verwaltet.
  • In mindestens einer Ausführungsform beinhaltet der Festfunktionsblock 3130 auch eine Grafik-SoC-Schnittstelle 3137, eine Grafik-Mikrosteuerung 3138 und eine Medienpipeline 3139. In mindestens einer Ausführungsform stellt die Grafik-SoC-Schnittstelle 3137 eine Schnittstelle zwischen dem Grafikkern 3100 und anderen Prozessorkernen innerhalb einer integrierten Schaltung als System auf einem Chip bereit. In mindestens einer Ausführungsform ist die Grafik-Mikrosteuerung 3138 ein programmierbarer Teilprozessor, der so konfiguriert werden kann, dass er verschiedene Funktionen des Grafikprozessors 3100 verwaltet, einschließlich Thread-Zuteilung, - Planung und -Präemption. In mindestens einer Ausführungsform beinhaltet die Medienpipeline 3139 Logik zum Erleichtern der Decodierung, Codierung, Vorverarbeitung und/oder Nachverarbeitung von Multimedia-Daten, einschließlich Bild- und Videodaten. In mindestens einer Ausführungsform implementiert die Medienpipeline 3139 Medienoperationen über Anforderungen an Rechen- oder Abtastlogik innerhalb der Teilkerne 3101A-3101F.
  • In mindestens einer Ausführungsform ermöglicht die SoC-Schnittstelle 3137 dem Grafikkern 3100 die Kommunikation mit Universal-Anwendungsprozessorkernen (z. B. CPUs) und/oder anderen Komponenten innerhalb eines SoCs, einschließlich Speicherhierarchieelementen, wie zum Beispiel einem gemeinsam genutzten Last-Level-Cache-Speicher, System-RAM und/oder eingebettetem chipinternen oder gehäuseinternen DRAM. In mindestens einer Ausführungsform kann die SoC-Schnittstelle 3137 auch Kommunikation mit Festfunktionsvorrichtungen innerhalb eines SoC ermöglichen, wie etwa Kamera-Bildgebungspipelines, und sie ermöglicht die Verwendung von globalem atomarem Speicher und/oder implementiert diesen, der von dem Grafikkern 3100 und den CPUs innerhalb eines SoCs gemeinsam genutzt werden kann. In mindestens einer Ausführungsform kann die Grafik-SoC-Schnittstelle 3137 auch Leistungsverwaltungssteuerelemente für den Grafikprozessorkern 3100 implementieren und eine Schnittstelle zwischen einer Taktdomäne des Grafikprozessorkerns 3100 und anderen Taktdomänen innerhalb eines SoC ermöglichen. In mindestens einer Ausführungsform ermöglicht die SoC-Schnittstelle 3137 den Empfang von Befehlspuffern von einem Befehls-Streamer und einem globalen Thread-Zuteiler, die so konfiguriert sind, dass sie jedem von einem oder mehreren Grafikkernen innerhalb eines Grafikprozessors Befehle und Anweisungen bereitstellen. In mindestens einer Ausführungsform können Befehle und Anweisungen der Medienpipeline 3139 zugeteilt werden, wenn Medienoperationen durchgeführt werden sollen, oder einer Geometrie- und Festfunktionspipeline (z. B. der Geometrie- und Festfunktionspipeline 3136 und/oder der Geometrie- und Festfunktionspipeline 3114), wenn Grafikverarbeitungsoperationen durchgeführt werden sollen.
  • In mindestens einer Ausführungsform kann die Grafik-Mikrosteuerung 3138 so konfiguriert sein, dass sie verschiedene Planungs- und Verwaltungsaufgaben für den Grafikkern 3100 durchführt. In mindestens einer Ausführungsform kann die Grafik-Mikrosteuerung 3138 die Planung der Grafik- und/oder Rechenarbeitslast auf verschiedenen Grafikparallel-Engines innerhalb der Arrays 3102A-3102F, 3104A-3104F der Ausführungseinheiten (execution unit - EU) innerhalb der Teilkerne 3101A-3101F durchführen. In mindestens einer Ausführungsform kann Host-Software, die auf einem CPU-Kern eines SoC, einschließlich des Grafikkerns 3100, ausgeführt wird, Arbeitslasten an einen von mehreren Grafikprozessorpfaden absenden, der eine Planungsoperation auf einer zweckmäßigen Grafik-Engine aufruft. In mindestens einer Ausführungsform umfassen die Planungsvorgänge das Bestimmen, welche Arbeitslast als Nächstes laufen soll, das Übermitteln einer Arbeitslast an einen Befehls-Streamer, das Vorwegnehmen vorhandener Arbeitslasten, die auf einer Engine laufen, das Überwachen des Fortschritts einer Arbeitslast und das Benachrichtigen der Host-Software, wenn eine Arbeitslast abgeschlossen ist. In mindestens einer Ausführungsform kann die Grafik-Mikrosteuerung 3138 auch Zustände mit niedriger Leistung oder inaktive Zustände für den Grafikkern 3100 erleichtern, wobei dem Grafikkern 3100 eine Fähigkeit bereitgestellt wird, Register innerhalb des Grafikkerns 3100 über Zustandsübergänge mit niedriger Leistung unabhängig von einem Betriebssystem und/oder einer Grafiktreiber-Software auf einem System zu sichern und wiederherzustellen.
  • In mindestens einer Ausführungsform kann der Grafikkern 3100 mehr oder weniger als die veranschaulichten Teilkerne 3101A-3101F aufweisen, und zwar bis zu N modularen Teilkernen. Für jeden Satz von N Teilkernen kann der Grafikkern 3100 in mindestens einer Ausführungsform auch gemeinsam genutzte Funktionslogik 3110, gemeinsam genutzten und/oder Cache-Speicher 3112, eine Geometrie-/Festfunktionspipeline 3114 sowie zusätzliche Festfunktionslogik 3116 zum Beschleunigen verschiedener Grafik- und Rechenverarbeitungsoperationen beinhalten. In mindestens einer Ausführungsform kann die gemeinsam genutzte Funktionslogik 3110 Logikeinheiten (z. B. Abtaster-, Mathematik- und/oder Zwischen-Thread-Kommunikationslogik) beinhalten, die von N Teilkernen innerhalb des Grafikkerns 3100 gemeinsam genutzt werden können. In mindestens einer Ausführungsform kann der gemeinsam genutzte und/oder Cache-Speicher 3112 Last-Level-Cache für N Teilkerne 3101A-3101 F innerhalb des Grafikkerns 3100 sein und auch als gemeinsam genutzter Speicher dienen, auf den mehrere Teilkerne zugreifen können. In mindestens einer Ausführungsform kann die Geometrie-/Festfunktionspipeline 3114 anstelle der Geometrie-/Festfunktionspipeline 3136 innerhalb des Festfunktionsblocks 3130 enthalten sein und ähnliche Logikeinheiten beinhalten.
  • In mindestens einer Ausführungsform beinhaltet der Grafikkern 3100 eine zusätzliche Festfunktionslogik 3116, die verschiedene Festfunktions-Beschleunigungslogiken zur Verwendung durch den Grafikkern 3100 beinhalten kann. In mindestens einer Ausführungsform beinhaltet die zusätzliche Festfunktionslogik 3116 eine zusätzliche Geometriepipeline für die Verwendung beim Shading von nur der Position. Beim Shading von nur der Position existieren mindestens zwei Geometriepipelines, wohingegen eine vollständige Geometriepipeline innerhalb der Geometrie- und Festfunktionspipelines 3114, 3136 und eine Culling-Pipeline, die eine zusätzliche Geometriepipeline ist, die innerhalb der zusätzlichen Festfunktionslogik 3116 enthalten sein kann. In mindestens einer Ausführungsform ist eine Culling-Pipeline eine abgespeckte Version einer vollständigen Geometriepipeline. In mindestens einer Ausführungsform können eine vollständige Pipeline und eine Cull-Pipeline verschiedene Instanzen einer Anwendung ausführen, wobei jede Instanz einen eigenen Kontext hat. In mindestens einer Ausführungsform kann eine Schattierung von lediglich der Position lange Ausleseläufe von verworfenen Dreiecken verbergen, wodurch die Schattierung in einigen Fällen früher abgeschlossen werden kann. Zum Beispiel kann in mindestens einer Ausführungsform die Culling-Pipeline-Logik innerhalb der zusätzlichen Festfunktionslogik 3116 Positions-Shader parallel zu einer Hauptanwendung ausführen und erzeugt im Allgemeinen kritische Ergebnisse schneller als eine vollständige Pipeline, da eine Culling-Pipeline Positionsattribute von Vertices abruft und schattiert, ohne eine Rasterung und ein Rendering von Pixeln in einem Bildspeicher auszuführen. In mindestens einer Ausführungsform kann eine Culling-Pipeline erzeugte kritische Ergebnisse verwenden, um Sichtbarkeitsinformationen für alle Dreiecke zu berechnen, ohne Rücksicht darauf, ob diese Dreiecke Culling unterzogen werden. In mindestens einer Ausführungsform kann eine vollständige Pipeline (die in diesem Fall als Wiederholungspipeline bezeichnet werden kann) Sichtbarkeitsinformationen verbrauchen, um Culling unterzogene Dreiecke zu überspringen, um nur sichtbare Dreiecke zu schattieren, die schließlich an eine Rasterungsphase übergeben werden.
  • In mindestens einer Ausführungsform kann die zusätzliche Festfunktionslogik 3116 auch eine Logik zur Beschleunigung des maschinellen Lernens beinhalten, wie z. B. eine Festfunktions-Matrixmultiplikationslogik, für Implementierungen, die Optimierungen für das Training oder inferenzieren des maschinellen Lernens beinhalten.
  • In mindestens einer Ausführungsform beinhaltet jeder grafische Teilkern 3101A-3101F einen Satz von Ausführungsressourcen, die zur Ausführung von Grafik-, Medien- und Rechenoperationen als Reaktion auf Anforderungen von Grafikpipeline-, Medienpipeline- oder Shader-Programmen verwendet werden können. In mindestens einer Ausführungsform beinhalten die Grafikteilkerne 3101A-3101F mehrere EU-Arrays 3102A-3102F, 3104A-3104F, Logik 3103A-3103F zur Thread-Zuteilung und Zwischen-Thread-Kommunikation (thread dispatch/inter-thread communication - TD/IC), einen 3D- (z. B. Textur-) Abtaster 3105A-3105F, einen Medienabtaster 3106A-3106F, einen Shader-Prozessor 3107A-3107F und gemeinsam genutzten lokalen Speicher (shared local memory - SLM) 3108A-3108F. In mindestens einer Ausführungsform beinhalten die EU-Arrays 3102A-3102F, 3104A-3104F jeweils mehrere Ausführungseinheiten, bei denen es sich um Universal-Grafikverarbeitungseinheiten handelt, die dazu in der Lage sind, Gleitkomma- und Integer-/Festkomma-Logikoperationen im Dienste einer Grafik-, Medien- oder Rechenoperation, einschließlich Grafik-, Medien- oder Rechen-Shader-Programmen, durchzuführen. In mindestens einer Ausführungsform führt die TD/IC-Logik 3103A-3103F lokale Thread-Zuteilungs- und Thread-Steueroperationen für Ausführungseinheiten innerhalb eines Teilkerns aus und sie erleichtert die Kommunikation zwischen Threads, die auf Ausführungseinheiten eines Teilkerns ausgeführt werden. In mindestens einer Ausführungsform können die 3D-Abtaster 3105A-3105F Textur- oder andere mit 3D-Grafik verwandte Daten in Speicher lesen. In mindestens einer Ausführungsform können die 3D-Abtaster Texturdaten auf Grundlage eines konfigurierten Abtastzustands und eines Texturformats, das mit einer gegebenen Textur assoziiert ist, unterschiedlich lesen. In mindestens einer Ausführungsform können die Medienabtaster 3106A-3106F ähnliche Leseoperationen auf Grundlage eines Typs und Formats, die mit den Mediendaten assoziiert sind, durchführen. In mindestens einer Ausführungsform kann jeder Grafikteilkern 3101A-3101F alternativ einen einheitlichen 3D-Abtaster und Medienabtaster beinhalten. In mindestens einer Ausführungsform können Threads, die auf Ausführungseinheiten innerhalb jedes der Teilkerne 3101A-3101F ausgeführt werden, den gemeinsam genutzten lokalen Speicher 3108A-3108F innerhalb jedes Teilkerns verwenden, um es Threads, die innerhalb einer Thread-Gruppe ausgeführt werden, zu ermöglichen, unter Verwendung eines gemeinsamen Pools von chipinternem Speicher ausgeführt zu werden.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 815 in den Grafikprozessor 3110 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in einer 3D-Pipeline verkörperten ALUs, die Grafik-Mikrosteuerung 3138, die Geometrie- und Festfunktionspipeline 3114 und 3136 oder andere Logik in 31 verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 8A oder 8B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 3100 konfigurieren, um einen oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, Architekturen, Anwendungsfälle oder Trainingstechniken für neuronale Netze durchzuführen.
  • 32A-32B veranschaulichen Thread-Ausführungslogik 3200, die ein Array von Verarbeitungselementen eines Grafikprozessorkerns beinhaltet, gemäß mindestens einer Ausführungsform. 32A veranschaulicht mindestens eine Ausführungsform, in der die Thread-Ausführungslogik 3200 verwendet wird. 32B veranschaulicht beispielhafte interne Details einer Grafikausführungseinheit 3208 gemäß mindestens einer Ausführungsform.
  • Wie in 32A veranschaulicht, beinhaltet die Thread-Ausführungslogik 3200 in mindestens einer Ausführungsform einen Shader-Prozessor 3202, einen Thread-Dispatcher 3204, einen Anweisungs-Cache 3206, ein skalierbares Ausführungseinheitenarray, einschließlich einer Vielzahl von Ausführungseinheiten 3207A-3207N und 3208A-3208N, einen Abtaster 3210, einen Daten-Cache 3212 und einen Datenport 3214. In mindestens einer Ausführungsform kann ein skalierbares Ausführungseinheitenarray dynamisch skalieren, indem eine oder mehrere Ausführungseinheiten (z. B. beliebige der Ausführungseinheiten 3208A-N oder 3207A-N) zum Beispiel auf Grundlage von Rechenanforderungen einer Arbeitslast aktiviert oder deaktiviert werden. In mindestens einer Ausführungsform sind die skalierbaren Ausführungseinheiten über eine Zusammenschaltungsstruktur zusammengeschaltet, die mit jeder Ausführungseinheit verknüpft ist. In mindestens einer Ausführungsform beinhaltet die Thread-Ausführungslogik 3200 eine oder mehrere Verbindungen mit Speicher, wie etwa Systemspeicher oder Cache-Speicher, durch eines oder mehrere des Anweisungs-Caches 3206, des Datenports 3214, des Abtasters 3210 und der Ausführungseinheiten 3207 oder 3208. In mindestens einer Ausführungsform ist jede Ausführungseinheit (z. B. 3207A) eine eigenständige programmierbare Universalrecheneinheit, die dazu in der Lage ist, mehrere simultane Hardware-Threads auszuführen, während mehrere Datenelemente parallel für jeden Thread verarbeitet werden. In mindestens einer Ausführungsform ist das Array der Ausführungseinheiten 3207 und/oder 3208 so skalierbar, dass es eine beliebige Anzahl einzelner Ausführungseinheiten beinhaltet.
  • In mindestens einer Ausführungsform werden die Ausführungseinheiten 3207 und/oder 3208 hauptsächlich zur Ausführung von Shader-Programmen verwendet. In mindestens einer Ausführungsform kann der Shader-Prozessor 3202 verschiedene Shader-Programme verarbeiten und mit den Shader-Programmen assoziierte Ausführungs-Threads über einen Thread-Zuteiler 3204 zuteilen. In mindestens einer Ausführungsform beinhaltet der Thread-Zuteiler 3204 Logik zum Vermitteln von Thread-Initiierungsanforderungen von Grafik- und Medienpipelines und zum Instanziieren angeforderter Threads auf einer oder mehreren Ausführungseinheiten in den Ausführungseinheiten 3207 und/oder 3208. Zum Beispiel kann in mindestens einer Ausführungsform eine Geometriepipeline Vertex-, Tesselations- oder Geometrie-Shader zur Verarbeitung an die Thread-Ausführungslogik versenden. In mindestens einer Ausführungsform kann der Thread-Zuteiler 3204 auch Laufzeit-Thread-Erzeugungsanforderungen von ausführenden Shader-Programmen verarbeiten.
  • In mindestens einer Ausführungsform unterstützen die Ausführungseinheiten 3207 und/oder 3208 einen Satz von Anweisungen, der eine native Unterstützung für viele Standard-3D-Grafik-Shader-Anweisungen beinhaltet, so dass Shader-Programme aus Grafikbibliotheken (z. B. Direct-3D und OpenGL) mit einer minimalen Übersetzung ausgeführt werden. In mindestens einer Ausführungsform unterstützen die Ausführungseinheiten Vertex- und Geometrieverarbeitung (z. B. Vertexprogramme, Geometrieprogramme und/oder 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 3207 und/oder 3208, die eine oder mehrere arithmetische Logikeinheiten (ALUs) beinhalten, zur Multi-Issue-Single-Instruction-Multiple-Data(SIMD)-Ausführung in der Lage, und der Mehr-Thread-Betrieb ermöglicht eine effiziente Ausführungsumgebung trotz höherer Latenz bei Speicherzugriffen. In mindestens einer Ausführungsform weist jeder Hardware-Thread innerhalb jeder Ausführungseinheit eine dedizierte Registerdatei mit hoher Bandbreite und einen assoziierten unabhängigen Thread-Status auf. In mindestens einer Ausführungsform erfolgt die Ausführung mit mehreren Ausgaben pro Takt an Pipelines, die für Integer- und Fließkommavorgänge mit einfacher oder doppelter Genauigkeit, SIMD-Verzweigungsfähigkeit, logische Vorgänge, transzendentale Vorgänge und andere verschiedene Vorgänge in der Lage sind. In mindestens einer Ausführungsform bewirkt die Abhängigkeitslogik in den Ausführungseinheiten 3207 und/oder 3208, dass ein wartender Thread schläft, bis die angeforderten Daten zurückgegeben wurden, während er auf Daten aus dem Speicher oder einer der gemeinsam genutzten Funktionen wartet. In mindestens einer Ausführungsform können, während ein wartender Thread schläft, Hardware-Ressourcen der Verarbeitung anderer Threads gewidmet werden. Zum Beispiel kann in mindestens einer Ausführungsform eine Ausführungseinheit während einer Verzögerung, die mit einem Vertex-Shader-Vorgang assoziiert ist, Vorgänge für einen Pixel-Shader, Fragment-Shader oder eine andere Art von Shader-Programm, einschließlich eines anderen Vertex-Shaders, durchführen.
  • In mindestens einer Ausführungsform arbeitet jede Ausführungseinheit in den Ausführungseinheiten 3207 und/oder 3208 an Arrays von Datenelementen. In mindestens einer Ausführungsform ist die Anzahl der Datenelemente eine „Ausführungsgröße“ oder die Anzahl der Kanäle für eine Anweisung. In mindestens einer Ausführungsform ist ein Ausführungskanal eine logische Ausführungseinheit für den Zugriff auf Datenelemente, die Maskierung und die Flusssteuerung innerhalb von Anweisungen. In mindestens einer Ausführungsform kann die Anzahl der Kanäle unabhängig von einer Anzahl der physischen arithmetisch-logischen Einheiten (ALUs) oder Gleitkommaeinheiten (FPUs) für einen konkreten Grafikprozessor sein. In mindestens einer Ausführungsform unterstützen die Ausführungseinheiten 3207 und/oder 3208 Integer- und Fließkommadatenarten.
  • In mindestens einer Ausführungsform beinhaltet ein Satz von Anweisungen für die Ausführungseinheit SIMD-Anweisungen. In mindestens einer Ausführungsform können verschiedene Datenelemente als gepackter Datentyp in einem Register gespeichert werden, und die Ausführungseinheit verarbeitet verschiedene Elemente basierend auf der Datengröße der Elemente. Zum Beispiel werden in mindestens einer Ausführungsform bei der Bearbeitung eines 256 Bit breiten Vektors 256 Bits eines Vektors in einem Register gespeichert, und eine Ausführungseinheit bearbeitet einen Vektor als vier separate gepackte 64-Bit-Datenelemente (Datenelemente der Größe Quad-Word (QW)), als acht separate gepackte 32-Bit-Datenelemente (Datenelemente der Größe Double Word (DW)), als sechzehn separate gepackte 16-Bit-Datenelemente (Datenelemente der Größe Word (W)) oder als zweiunddreißig separate 8-Bit-Datenelemente (Datenelemente der Größe Byte (B)). In mindestens einer Ausführungsform sind jedoch andere Vektorbreiten und Registergrößen möglich.
  • In mindestens einer Ausführungsform können eine oder mehrere Ausführungseinheiten zu einer fusionierten Ausführungseinheit 3209A-3209N kombiniert werden, die Thread-Steuerlogik (3211A-3211N) aufweist, die fusionierten EUs gemeinsam ist, wie etwa die Ausführungseinheit 3207A, die mit der Ausführungseinheit 3208A zu der fusionierten Ausführungseinheit 3209A fusioniert wird. In mindestens einer Ausführungsform können mehrere EUs zu einer EU-Gruppe fusioniert werden. In mindestens einer Ausführungsform kann jede EU in einer fusionierten EU-Gruppe so ausgestaltet sein, dass sie einen separaten SIMD-Hardware-Thread ausführt, wobei die Anzahl der EUs in einer fusionierten EU-Gruppe je nach Ausführungsform variieren kann. In mindestens einer Ausführungsform können verschiedene SIMD-Breiten pro EU durchgeführt werden, einschließlich, aber nicht beschränkt auf, SIMD8, SIMD16 und SIMD32. In mindestens einer Ausführungsform beinhaltet jede fusionierte Grafikausführungseinheit 3209A-3209N mindestens zwei Ausführungseinheiten. Zum Beispiel beinhaltet in mindestens einer Ausführungsform die fusionierte Ausführungseinheit 3209A eine erste EU 3207A, eine zweite EU 3208A und Thread-Steuerlogik 3211A, die der ersten EU 3207A und der zweiten EU 3208A gemeinsam ist. In mindestens einer Ausführungsform steuert die Thread-Steuerlogik 3211A Threads, die auf der fusionierten Grafikausführungseinheit 3209A ausgeführt werden, sodass jede EU innerhalb der fusionierten Ausführungseinheiten 3209A-3209N unter Verwendung eines gemeinsamen Anweisungszeigerregisters ausgeführt werden kann.
  • In mindestens einer Ausführungsform beinhaltet die Thread-Ausführungslogik 3200 einen oder mehrere interne Anweisungs-Caches (z. B. 3206), um Thread-Anweisungen für Ausführungseinheiten zwischenzuspeichern. In mindestens einer Ausführungsform sind ein oder mehrere Daten-Caches (z. B. 3212) enthalten, um Thread-Daten während der Thread-Ausführung zwischenzuspeichern. In mindestens einer Ausführungsform ist ein Abtaster 3210 enthalten, um Texturabtastung für 3D-Operationen und Medienabtastung für Medienoperationen bereitzustellen. In mindestens einer Ausführungsform beinhaltet der Abtaster 3210 eine spezialisierte Textur- oder Medienabtastfunktionalität, um Textur- oder Mediendaten während eines Abtastprozesses zu verarbeiten, bevor die abgetasteten Daten einer Ausführungseinheit bereitgestellt werden.
  • In mindestens einer Ausführungsform senden Grafik- und Medienpipelines während der Ausführung Anforderungen zur Thread-Initialisierung an die Thread-Ausführungslogik 3200 über eine Thread-Erzeugungs- und Zuteilungslogik. In mindestens einer Ausführungsform wird, sobald eine Gruppe geometrischer Objekte verarbeitet und in Pixeldaten gerastert wurde, die Pixelprozessorlogik (z. B. Pixel-Shader-Logik, Fragment-Shader-Logik usw.) innerhalb des Shader-Prozessors 3202 aufgerufen, um Ausgabeinformationen weiter zu berechnen und zu veranlassen, dass die Ergebnisse in Ausgabeflächen (z. B. Farbpuffer, Tiefenpuffer, Schablonenpuffer usw.) geschrieben werden. In mindestens einer Ausführungsform berechnet ein Pixel-Shader oder Fragment-Shader die Werte verschiedener Vertexattribute, die über ein gerastertes Objekt interpoliert werden sollen. In mindestens einer Ausführungsform führt die Pixelprozessorlogik innerhalb des Shader-Prozessors 3202 dann ein über eine Anwendungsprogrammierschnittstelle (API) zugeführtes Pixel- oder Fragment-Shader-Programm aus. In mindestens einer Ausführungsform teilt der Shader-Prozessor 3202 zum Ausführen eines Shader-Programms Threads über den Thread-Zuteiler 3204 einer Ausführungseinheit (z. B. 3208A) zu. In mindestens einer Ausführungsform verwendet der Shader-Prozessor 3202 die Texturabtastlogik in dem Abtaster 3210, um auf Texturdaten in Texturkarten zuzugreifen, die in Speicher gespeichert sind. In mindestens einer Ausführungsform werden durch arithmetische Vorgänge an Texturdaten und Eingabegeometriedaten Pixelfarbdaten für jedes geometrische Fragment berechnet oder ein oder mehrere Pixel von der weiteren Verarbeitung ausgeschlossen.
  • In mindestens einer Ausführungsform stellt der Datenport 3214 einen Speicherzugriffsmechanismus für die Thread-Ausführungslogik 3200 bereit, um verarbeitete Daten zur weiteren Verarbeitung in einer Grafikprozessor-Ausgabepipeline in den Speicher auszugeben. In mindestens einer Ausführungsform beinhaltet der Datenport 3214 einen oder mehrere Cache-Speicher (z. B. den Daten-Cache 3212) oder ist an diesen gekoppelt, um Daten für den Speicherzugriff über einen Datenport zwischenzuspeichern.
  • Wie in 32B veranschaulicht, kann eine Grafikausführungseinheit 3208 in mindestens einer Ausführungsform eine Anweisungsabrufeinheit 3237, ein Array allgemeiner Registerdateien (general register file array - GRF) 3224, ein Array architektonischer Registerdateien (architectural register file array - ARF) 3226, einen Thread-Arbiter 3222, eine Sendeeinheit 3230, eine Verzweigungseinheit 3232, einen Satz SIMD-Gleitkommaeinheiten (FPUs) 3234 und einen Satz dedizierter ganzzahliger SIMD-ALUs 3235 beinhalten. In mindestens einer Ausführungsform beinhalten die GRF 3224 und die ARF 3226 einen Satz allgemeiner Registerbänke und Architekturregisterbänke, die mit jedem simultanen Hardware-Thread assoziiert sind, der in der Grafikausführungseinheit 3208 aktiv sein kann. In mindestens einer Ausführungsform wird der architektonische Zustand pro Thread in der ARF 3226 verwaltet, während die während der Thread-Ausführung verwendeten Daten in der GRF 3224 gespeichert werden. In mindestens einer Ausführungsform kann der Ausführungszustand jedes Threads, einschließlich der Anweisungszeiger für jeden Thread, in Thread-spezifischen Registern in der ARF 3226 aufbewahrt werden.
  • In mindestens einer Ausführungsform weist die Grafikausführungseinheit 3208 eine Architektur auf, die eine Kombination aus simultanem Multi-Threading (Simultaneous Multi-Threading - SMT) und feinkörnigem verschachteltem Multi-Threading (Interleaved Multi-Threading - IMT) ist. In mindestens einer Ausführungsform weist die Architektur eine modulare Konfiguration auf, die zur Ausgestaltungszeit basierend auf einer Zielanzahl von simultanen Threads und der Anzahl von Registern pro Ausführungseinheit fein abgestimmt werden kann, wobei die Ressourcen der Ausführungseinheit auf die Logik aufgeteilt werden, die zur Ausführung mehrerer simultaner Threads verwendet wird.
  • In mindestens einer Ausführungsform kann die Grafikausführungseinheit 3208 mehrere Anweisungen gemeinsam ausgeben, wobei es sich um unterschiedliche Anweisungen handeln kann. In mindestens einer Ausführungsform kann der Thread-Vermittler 3222 des Grafikausführungseinheits-Threads 3208 Anweisungen einer der Sendeeinheit 3230, der Verzweigungseinheit 3232 oder der SIMD-FPU(s) 3234 zur Ausführung zuteilen. In mindestens einer Ausführungsform kann jeder Ausführungs-Thread auf 128 Universalregister innerhalb der GRF 3224 zugreifen, wobei jedes Register 32 Byte speichern kann, die als SIMD-8-Elementvektor von 32-Bit-Datenelementen zugänglich sind. In mindestens einer Ausführungsform weist jeder Thread der Ausführungseinheit Zugriff auf 4 Kilobyte innerhalb der GRF 3224 auf, obwohl Ausführungsformen nicht derart beschränkt sind und in anderen Ausführungsformen mehr oder weniger Registerressourcen bereitgestellt sein können. In mindestens einer Ausführungsform können bis zu sieben Threads simultan ausgeführt werden, obwohl die Anzahl der Threads pro Ausführungseinheit gemäß Ausführungsform auch variieren kann. In mindestens einer Ausführungsform, in der sieben Threads auf 4 Kilobyte zugreifen können, kann die GRF 3224 insgesamt 28 Kilobyte speichern. In mindestens einer Ausführungsform können flexible Adressierungsmodi zulassen, dass Register gemeinsam adressiert werden, um effektiv breitere Register aufzubauen oder gestaffelte rechteckige Blockdatenstrukturen darzustellen.
  • In mindestens einer Ausführungsform werden Speicheroperationen, Abtasteroperationen und andere Systemkommunikation mit längerer Latenz über „Sende“-Anweisungen zugeteilt, die durch Nachrichtenweitergabe an die Sendeeinheit 3230 ausgeführt werden. In mindestens einer Ausführungsform werden Verzweigungsanweisungen der Verzweigungseinheit 3232 zugeteilt, um SIMD-Divergenz und schließlich -Konvergenz zu erleichtern.
  • In mindestens einer Ausführungsform beinhaltet die Grafikausführungseinheit 3208 eine oder mehrere SIMD-Gleitkomma-Einheiten (FPUs) 3234 zum Ausführen von Gleitkomma-Operationen. In mindestens einer Ausführungsform unterstützen die FPUs 3234 auch Integerberechnung. In mindestens einer Ausführungsform können die FPUs 3234 bis zu einer Anzahl von M 32-Bit-Gleitkomma- (oder -Integer-) Operationen über SIMD ausführen oder bis zu 2M 16-Bit-Integer- oder 16-Bit-Gleitkommaoperationen über SIMD ausführen. In mindestens einer Ausführungsform stellt mindestens eine FPU erweiterte mathematische Fähigkeiten bereit, um transzendentale mathematische Funktionen mit hohem Durchsatz und 64-Bit-Gleitkomma mit doppelter Genauigkeit zu unterstützen. In mindestens einer Ausführungsform ist auch ein Satz von 8-Bit-Integer-SIMD-ALUs 3235 vorhanden, der spezifisch zum Durchführen von Operationen, die mit Berechnungen für maschinelles Lernen assoziiert sind, optimiert sein kann.
  • In mindestens einer Ausführungsform können Arrays aus mehreren Instanzen der Grafikausführungseinheit 3208 in einer Gruppierung von Grafik-Teilkernen (z. B. einem Teil-Slice) instanziiert werden. In mindestens einer Ausführungsform kann die Ausführungseinheit 3208 Anweisungen über eine Vielzahl von Ausführungskanälen hinweg ausführen. In mindestens einer Ausführungsform wird jeder Thread, der auf der Grafikausführungseinheit 3208 ausgeführt wird, auf einem anderen Kanal ausgeführt.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 815 in die Thread-Ausführungslogik 3200 einbezogen sein. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 8A oder 8B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs der Thread-Ausführungslogik 3200 konfigurieren, um einen oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, Architekturen, Anwendungsfälle oder Trainingstechniken für neuronale Netze durchzuführen.
  • 33 veranschaulicht eine Parallelverarbeitungseinheit („PPU“) 3300 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist die PPU 3300 mit maschinenlesbarem Code konfiguriert, der bei Ausführung durch die PPU 3300 die PPU 3300 dazu veranlasst, einige oder alle der in dieser gesamten Offenbarung beschriebenen Prozesse und Techniken durchzuführen. In mindestens einer Ausführungsform ist die PPU 3300 ein Multi-Thread-Prozessor, der auf einer oder mehreren Vorrichtungen mit integrierter Schaltung implementiert ist und der Multi-Threading als Technik zur Latenzverbergung nutzt, die dazu ausgestaltet ist, computerlesbare Anweisungen (auch als maschinenlesbare Anweisungen oder einfach Anweisungen bezeichnet) auf mehreren Threads parallel zu verarbeiten. In mindestens einer Ausführungsform bezieht sich ein Thread auf einen Ausführungs-Thread und er ist eine Instanziierung eines Satzes von Anweisungen, der dazu konfiguriert ist, durch die PPU 3300 ausgeführt zu werden. In mindestens einer Ausführungsform ist die PPU 3300 eine Grafikverarbeitungseinheit („GPU“), die so konfiguriert ist, dass sie eine Grafik-Rendering-Pipeline zum Verarbeiten dreidimensionaler („3D“) Grafikdaten implementiert, um zweidimensionale („2D“) Bilddaten zur Anzeige auf einer Anzeigevorrichtung, wie etwa einer Vorrichtung mit Flüssigkristallanzeige („LCD“), zu erzeugen. In mindestens einer Ausführungsform wird die PPU 3300 genutzt, um Berechnungen, wie etwa lineare Algebraoperationen und Operationen des maschinellen Lernens, durchzuführen. 33 veranschaulicht ein Beispiel für einen Parallelprozessor, der nur zu Veranschaulichungszwecken dient und als nicht einschränkendes Beispiel für Prozessorarchitekturen ausgelegt werden sollte, die innerhalb des Umfangs dieser Offenbarung in Betracht gezogen werden, und dass ein beliebiger geeigneter Prozessor zur Ergänzung und/oder als Ersatz für diesen eingesetzt werden kann.
  • In mindestens einer Ausführungsform sind eine oder mehrere PPUs 3300 dazu konfiguriert, High Performance Computing („HPC“), Rechenzentren und maschinelle Lernanwendungen zu beschleunigen. In mindestens einer Ausführungsform ist die PPU 3300 so konfiguriert, dass sie Deep-Learning-Systeme und -Anwendungen beschleunigt, einschließlich der folgenden nicht einschränkenden Beispiele: Plattformen für autonome Fahrzeuge, Deep Learning, Sprach-, Bild- und Texterkennungssysteme mit hoher Genauigkeit, intelligente Videoanalytik, Molekularsimulationen, Arzneimittelforschung, Krankheitsdiagnose, Wettervorhersage, Big-Data-Analytik, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotik, Fabrikautomatisierung, Echtzeit-Sprachübersetzung, Online-Suchoptimierungen und personalisierte Benutzerempfehlungen und mehr.
  • In mindestens einer Ausführungsform beinhaltet die PPU 3300 ohne Einschränkung eine Eingabe/Ausgabe-(„E/A“-)Einheit 3306, eine Frontend-Einheit 3310, eine Scheduler-Einheit 3312, eine Arbeitsverteilungseinheit 3314, einen Hub 3316, eine Kreuzschiene (crossbar- „XBar“) 3320, einen oder mehrere Universalverarbeitungscluster („GPCs“) 3318 und eine oder mehrere Partitionseinheiten („Speicherpartitionseinheiten“) 3322. In mindestens einer Ausführungsform ist die PPU 3300 mit einem Host-Prozessor oder anderen PPUs 3300 über eine oder mehrere Hochgeschwindigkeits-GPU-Zusammenschaltungen („GPU-Zusammenschaltungen“) 3308 verbunden. In mindestens einer Ausführungsform ist die PPU 3300 über einen Systembus 3302 mit einem Host-Prozessor oder anderen Peripherievorrichtungen verbunden. In mindestens einer Ausführungsform ist die PPU 3300 mit einem lokalen Speicher verbunden, der eine oder mehrere Speichervorrichtungen („Speicher“) 3304 umfasst. In mindestens einer Ausführungsform beinhalten die Speichervorrichtungen 3304 ohne Einschränkung eine oder mehrere Vorrichtungen mit dynamischem Direktzugriffsspeicher („DRAM“). In mindestens einer Ausführungsform sind eine oder mehrere DRAM-Vorrichtungen als Teilsysteme mit Speicher mit hoher Bandbreite („HBM“) konfiguriert und/oder konfigurierbar, wobei mehrere DRAM-Dies in jeder Vorrichtung gestapelt sind.
  • In mindestens einer Ausführungsform kann sich die Hochgeschwindigkeits-GPU-Zusammenschaltung 3308 auf eine drahtgebundene Mehrspur-Kommunikationsverbindung beziehen, die von Systemen zur Skalierung verwendet wird und eine oder mehrere PPUs 3300 in Kombination mit einer oder mehreren Zentraleinheiten („CPUs“) beinhaltet, die Cache-Kohärenz zwischen PPUs 3300 und CPUs sowie CPU-Mastering unterstützt. In mindestens einer Ausführungsform werden Daten und/oder Befehle durch die Hochgeschwindigkeits-GPU-Zusammenschaltung 3308 über den Hub 3316 zu/von anderen Einheiten der PPU 3300 übertragen, wie etwa einer/einem oder mehreren Kopier-Engines, Videocodierern, Videodecodierern, Leistungsverwaltungseinheiten und anderen Komponenten, die in 33 möglicherweise nicht explizit veranschaulicht sind.
  • In mindestens einer Ausführungsform ist die E/A-Einheit 3306 dazu konfiguriert, Kommunikationen (z. B. Befehle, Daten) von einem Hostprozessor (in 33 nicht veranschaulicht) über den Systembus 3302 zu übermitteln und zu empfangen. In mindestens einer Ausführungsform kommuniziert die E/A-Einheit 3306 mit dem Host-Prozessor direkt über den Systembus 3302 oder durch eine oder mehrere Zwischenvorrichtungen wie etwa eine Speicherbrücke. In mindestens einer Ausführungsform kann die E/A-Einheit 3306 über den Systembus 3302 mit einem oder mehreren anderen Prozessoren kommunizieren, wie etwa einer oder mehreren der PPUs 3300. In mindestens einer Ausführungsform implementiert die E/A-Einheit 3306 eine Peripheral-Component-lnterconnect-Express-(„PCIe“-)Schnittstelle für die Kommunikation über einen PCle-Bus. In mindestens einer Ausführungsform implementiert die E/A-Einheit 3306 Schnittstellen zum Kommunizieren mit externen Vorrichtungen.
  • In mindestens einer Ausführungsform decodiert die E/A-Einheit 3306 über den Systembus 3302 empfangene Pakete. In mindestens einer Ausführungsform stellen mindestens einige Pakete Befehle dar, die so konfiguriert sind, dass sie die PPU 3300 dazu veranlassen, verschiedene Operationen durchzuführen. In mindestens einer Ausführungsform überträgt die E/A-Einheit 3306 decodierte Befehle an verschiedene andere Einheiten der PPU 3300, wie durch Befehle vorgegeben. In mindestens einer Ausführungsform werden Befehle an die Frontend-Einheit 3310 übertragen und/oder an den Hub 3316 oder andere Einheiten der PPU 3300 übertragen, wie etwa eine oder mehrere Kopier-Engines, einen Videocodierer, einen Videodecodierer, eine Leistungsverwaltungseinheit usw. (in 33 nicht explizit veranschaulicht). In mindestens einer Ausführungsform ist die E/A-Einheit 3306 so konfiguriert, dass sie Kommunikation zwischen und unter verschiedenen logischen Einheiten der PPU 3300 routet.
  • In mindestens einer Ausführungsform codiert ein vom Hostprozessor ausgeführtes Programm einen Befehlsstrom in einem Puffer, der der PPU 3300 Arbeitslasten zur Verarbeitung bereitstellt. In mindestens einer Ausführungsform umfasst eine Arbeitslast Anweisungen und Daten, die von diesen Anweisungen verarbeitet werden sollen. In mindestens einer Ausführungsform ist ein Puffer eine Region in einem Speicher, auf die sowohl ein Host-Prozessor als auch die PPU 3300 zugreifen können (z. B. Lesen/Schreiben) - eine Host-Schnittstelleneinheit kann so konfiguriert sein, dass sie auf diesen Puffer in einem Systemspeicher, der mit dem Systembus 3302 verbunden ist, über Speicheranforderungen zugreift, die über den Systembus 3302 durch die E/A-Einheit 3306 übertragen werden. In mindestens einer Ausführungsform schreibt ein Host-Prozessor einen Befehlsstream in einen Puffer und überträgt dann einen Zeiger für einen Start eines Befehlsstreams an die PPU 3300, sodass die Frontend-Einheit 3310 Zeiger für einen oder mehrere Befehlsstreams empfängt und einen oder mehrere Befehlsstreams verwaltet, indem sie Befehle aus Befehlsstreams liest und Befehle an verschiedene Einheiten der PPU 3300 weiterleitet.
  • In mindestens einer Ausführungsform ist die Frontend-Einheit 3310 an die Scheduler-Einheit 3312 gekoppelt, die verschiedene GPCs 3318 zum Verarbeiten von Tasks konfiguriert, die durch einen oder mehrere Befehlsstreams definiert sind. In mindestens einer Ausführungsform ist die Scheduler-Einheit 3312 so konfiguriert, dass sie Zustandsinformationen in Bezug auf verschiedene durch die Scheduler-Einheit 3312 verwaltete Tasks verfolgt, wobei die Zustandsinformationen angeben können, welchem der GPCs 3318 ein Task zugeordnet ist, ob der Task aktiv oder inaktiv ist, welcher Prioritätslevel mit dem Task assoziiert ist, und so weiter. In mindestens einer Ausführungsform verwaltet die Scheduler-Einheit 3312 die Ausführung einer Vielzahl von Tasks auf einem oder mehreren GPCs 3318.
  • In mindestens einer Ausführungsform ist die Scheduler-Einheit 3312 mit der Arbeitsverteilungseinheit 3314 gekoppelt, die dazu konfiguriert ist, Aufgaben zur Ausführung auf den GPCs 3318 zu verteilen. In mindestens einer Ausführungsform verfolgt die Arbeitsverteilungseinheit 3314 eine Anzahl geplanter Tasks nach, die von der Scheduler-Einheit 3312 empfangen wurde, und die Arbeitsverteilungseinheit 3314 verwaltet einen Pool ausstehender Tasks und einen Pool aktiver Tasks für jeden der GPCs 3318. In mindestens einer Ausführungsform umfasst der Pool ausstehender Tasks eine Anzahl von Schlitzen (z. B. 32 Schlitze), die Tasks enthalten, die zur Verarbeitung durch einen konkreten GPC 3318 zugeordnet sind; ein Pool aktiver Tasks kann eine Anzahl von Schlitzen (z. B. 4 Schlitze) für Tasks umfassen, die aktiv durch die GPCs 3318 verarbeitet werden, sodass, wenn einer der GPCs 3318 die Ausführung eines Tasks abschließt, dieser Task aus diesem Pool aktiver Tasks für den GPC 3318 entfernt wird und ein anderer Task aus einem Pool ausstehender Tasks ausgewählt und zur Ausführung auf dem GPC 3318 eingeplant wird. Falls ein aktiver Task auf dem GPC 3318 inaktiv ist, wie etwa, während er darauf wartet, dass eine Datenabhängigkeit aufgelöst wird, dann wird in mindestens einer Ausführungsform dieser aktive Task aus dem GPC 3318 entfernt und in diesen Pool ausstehender Tasks zurückgeführt, während ein anderer Task in diesem Pool ausstehender Tasks ausgewählt und zur Ausführung auf dem GPC 3318 eingeplant wird.
  • In mindestens einer Ausführungsform kommuniziert die Arbeitsverteilungseinheit 3314 mit einem oder mehreren GPCs 3318 über die XBar 3320. In mindestens einer Ausführungsform ist die XBar 3320 ein Zusammenschaltungsnetz, das viele Einheiten der PPU 3300 an andere Einheiten der PPU 3300 koppelt und dazu konfiguriert sein kann, die Arbeitsverteilungseinheit 3314 an einen konkreten GPC 3318 zu koppeln. In mindestens einer Ausführungsform können auch eine oder mehrere andere Einheiten der PPU 3300 über den Hub 3316 mit der XBar 3320 verbunden sein.
  • In mindestens einer Ausführungsform werden die Aufgaben von der Scheduler-Einheit 3312 verwaltet und von der Arbeitsverteilungseinheit 3314 an einen der GPCs 3318 weitergeleitet. In mindestens einer Ausführungsform ist der GPC 3318 so konfiguriert, dass er einen Task verarbeitet und Ergebnisse erzeugt. In mindestens einer Ausführungsform können die Ergebnisse durch andere Tasks innerhalb des GPC 3318 verbraucht, über die XBar 3320 an einen anderen GPC 3318 geroutet oder in dem Speicher 3304 gespeichert werden. In mindestens einer Ausführungsform können die Ergebnisse über die Partitionseinheiten 3322, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in den/aus dem Speicher 3304 implementieren, in den Speicher 3304 geschrieben werden. In mindestens einer Ausführungsform können die Ergebnisse über die Hochgeschwindigkeits-GPU-Zusammenschaltung 3308 an eine andere PPU 3304 oder CPU übertragen werden. In mindestens einer Ausführungsform beinhaltet die PPU 3300 ohne Einschränkung eine Anzahl U von Partitionseinheiten 3322, die gleich einer Anzahl von separaten und unterschiedlichen Speichervorrichtungen 3304 ist, die an die PPU 3300 gekoppelt sind, wie hierin in Verbindung mit 35 detaillierter beschrieben.
  • In mindestens einer Ausführungsform führt ein Hostprozessor ein Treiberkernel aus, der eine Anwendungsprogrammierschnittstelle („API“) implementiert, die es einer oder mehreren auf einem Hostprozessor ausgeführten Anwendungen ermöglicht, Operationen zur Ausführung auf der PPU 3300 zu planen. In mindestens einer Ausführungsform werden mehrere Rechenanwendungen simultan durch die PPU 3300 ausgeführt und die PPU 3300 stellt Isolierung, Dienstgüte (quality of service - „QoS“) und unabhängige Adressräume für mehrere Rechenanwendungen bereit. In mindestens einer Ausführungsform erzeugt eine Anwendung Anweisungen (z. B. in Form von API-Aufrufen), die einen Treiberkernel dazu veranlassen, einen oder mehrere Tasks zur Ausführung durch die PPU 3300 zu erzeugen, und dieser Treiberkernel gibt Tasks an einen oder mehrere Streams aus, die durch die PPU 3300 verarbeitet werden. In mindestens einer Ausführungsform umfasst jede Task eine oder mehrere Gruppen zugehöriger Threads, die als Warp bezeichnet werden können. In mindestens einer Ausführungsform umfasst ein Warp eine Vielzahl zusammengehöriger Threads (z. B. 32 Threads), die parallel ausgeführt werden können. In mindestens einer Ausführungsform können sich kooperierende Threads auf eine Vielzahl von Threads beziehen, die Anweisungen zur Durchführung von Tasks enthalten und die Daten über einen gemeinsam genutzten Speicher austauschen. In mindestens einer Ausführungsform werden Threads und kooperierende Threads in Verbindung mit 35 detaillierter beschrieben.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie etwa ein neuronales Netz, zu trainieren, um der PPU 3300 bereitgestellte Informationen vorherzusagen oder zu inferenzieren. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor 3300 verwendet, um Informationen auf Grundlage eines trainierten Modells des maschinellen Lernens (z. B. eines neuronalen Netzes) zu inferenzieren oder vorherzusagen, das durch einen anderen Prozessor oder ein anderes System oder durch die PPU 3300 trainiert wurde. In mindestens einer Ausführungsform kann die PPU 3300 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netze durchzuführen.
  • 34 veranschaulicht einen Universalverarbeitungscluster („GPC“) 3400 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform handelt es sich bei dem GPC 3400 um den GPC 3318 aus 33. In mindestens einer Ausführungsform beinhaltet jeder GPC 3400 ohne Einschränkung eine Anzahl von Hardware-Einheiten zum Verarbeiten von Tasks und beinhaltet jeder GPC 3400 ohne Einschränkung einen Pipelineverwalter 3402, eine Vor-Rasteroperationeneinheit (pre-raster operations unit - „preROP“) 3404, eine Raster-Engine 3408, eine Arbeitsverteilungskreuzschiene (work distribution crossbar - „WDX“) 3416, eine Speicherverwaltungseinheit („MMU“) 3418, einen oder mehrere Datenverarbeitungscluster (Data Processing Clusters - „DPCs“) 3406 und eine beliebige geeignete Kombination von Teilen.
  • In mindestens einer Ausführungsform wird der Betrieb des GPC 3400 durch den Pipelineverwalter 3402 gesteuert. In mindestens einer Ausführungsform verwaltet der Pipelineverwalter 3402 die Konfiguration eines oder mehrerer DPCs 3406 für die Verarbeitung von Tasks, die dem GPC 3400 zugewiesen sind. In mindestens einer Ausführungsform konfiguriert der Pipelineverwalter 3402 mindestens einen von einem oder mehreren DPCs 3406 dazu, mindestens einen Abschnitt einer Grafik-Rendering-Pipeline zu implementieren. In mindestens einer Ausführungsform ist der DPC 3406 dazu konfiguriert, ein Vertex-Shader-Programm auf einem programmierbaren Streaming-Multiprozessor (streaming multi-processor- „SM“) 3414 auszuführen. In mindestens einer Ausführungsform ist der Pipelineverwalter 3402 so konfiguriert, dass er die von einer Arbeitsverteilungseinheit empfangenen Pakete an zweckmäßige logische Einheiten innerhalb des GPC 3400 routet, und in mindestens einer Ausführungsform können einige Pakete an Festfunktions-Hardwareeinheiten in dem preROP 3404 und/oder der Raster-Engine 3408 geroutet werden, während andere Pakete zum Verarbeiten durch eine Primitiv-Engine 3412 oder den SM 3414 an die DPCs 3406 geroutet werden können. In mindestens einer Ausführungsform konfiguriert der Pipelineverwalter 3402 mindestens einen der DPCs 3406 zum Implementieren eines Modells eines neuronalen Netzes und/oder einer Rechenpipeline.
  • In mindestens einer Ausführungsform ist die preROP-Einheit 3404 dazu konfiguriert, die von der Rasterengine 3408 und den DPCs 3406 erzeugten Daten an eine Rasteroperations („ROP“)-Einheit in der Partitionseinheit 3322 weiterzuleiten, die oben in Verbindung mit 33 näher beschrieben ist. In mindestens einer Ausführungsform ist die preROP-Einheit 3404 so konfiguriert, dass sie unter anderem Optimierungen für die Farbmischung durchführt, Pixelfarbdaten organisiert und Adressübersetzungen durchführt. In mindestens einer Ausführungsform beinhaltet die Raster-Engine 3408 ohne Einschränkung eine Anzahl von Festfunktions-Hardwareeinheiten, die so konfiguriert sind, dass sie verschiedene Rasteroperationen durchführen, und in mindestens einer Ausführungsform beinhaltet die Raster-Engine 3408 ohne Einschränkung eine Setup-Engine, eine Grobraster-Engine, eine Culling-Engine, eine Clipping-Engine, eine Feinraster-Engine, eine Kachelverschmelzungs-Engine und eine beliebige geeignete Kombination davon. In mindestens einer Ausführungsform empfängt die Setup-Engine transformierte Vertices und sie erzeugt Ebenengleichungen, die mit dem durch die Vertices definierten geometrischen Primitiv assoziiert sind; die Ebenengleichungen werden an eine Grobraster-Engine übertragen, um Abdeckungsinformationen (z. B. eine x-, y-Abdeckungsmaske für eine Kachel) für das Primitiv zu erzeugen; die Ausgabe einer Grobraster-Engine wird an eine Culling-Engine übertragen, in der Fragmente, die mit einem Primitiv assoziiert sind und einen z-Test nicht bestehen, Culling unterzogen werden und an eine Clipping-Engine übertragen werden, in der Fragmente, die außerhalb eines Sichtkegelstumpfes liegen, Clipping unterzogen werden. In mindestens einer Ausführungsform werden Fragmente, die das Clipping und Culling überstehen, an eine Feinraster-Engine übergeben, um Attribute für Pixelfragmente auf Grundlage von Ebenengleichungen zu erzeugen, die durch eine Setup-Engine erzeugt werden. In mindestens einer Ausführungsform umfasst eine Ausgabe der Raster-Engine 3408 Fragmente, die durch eine beliebige geeignete Entität, wie etwa durch einen innerhalb des DPC 3406 implementierten Fragment-Shader, verarbeitet werden sollen.
  • In mindestens einer Ausführungsform umfasst jeder DPC 3406, der im GPC 3400 enthalten ist, ohne Einschränkung einen M-Pipe-Steuerung („MPC“) 3410, eine Primitivengine 3412, einen oder mehrere SMs 3414 und jede beliebige geeignete Kombination davon. In mindestens einer Ausführungsform steuert die MPC 3410 den Betrieb des DPC 3406 und routet von dem Pipelineverwalter 3402 empfangene Pakete an die entsprechenden Einheiten in dem DPC 3406. In mindestens einer Ausführungsform werden Pakete, die mit einem Vertex assoziiert sind, an die Primitiv-Engine 3412 geroutet, die so konfiguriert ist, dass sie Vertexattribute, die mit einem Vertex assoziiert sind, aus dem Speicher abruft; im Gegensatz dazu können Pakete, die mit einem Shader-Programm assoziiert sind, an den SM 3414 übertragen werden.
  • In mindestens einer Ausführungsform umfasst der SM 3414 ohne Einschränkung einen programmierbaren Streaming-Prozessor, der so konfiguriert ist, dass er Tasks verarbeitet, die durch eine Anzahl von Threads dargestellt sind. In mindestens einer Ausführungsform weist der SM 3414 mehrere Threads auf und ist so konfiguriert, dass er eine Vielzahl von Threads (z. B. 32 Threads) aus einer konkreten Gruppe von Threads nebenläufig ausführt und eine Single-Instruction-Multiple-Data-(„SIMD“-)Architektur implementiert, bei der jeder Thread in einer Gruppe von Threads (z. B. ein Warp) so konfiguriert ist, dass er einen anderen Datensatz auf Grundlage des gleichen Anweisungssatzes verarbeitet. In mindestens einer Ausführungsform führen alle Threads in einer Gruppe von Threads einen gemeinsamen Satz von Anweisungen aus. In mindestens einer Ausführungsform implementiert der SM 3414 eine Single-Instruction-Multiple Thread(„SIMT“)-Architektur, bei der jeder Thread in einer Gruppe von Threads so konfiguriert ist, dass er einen anderen Datensatz basierend auf diesem gemeinsamen Anweisungssatz verarbeitet, wobei jedoch die einzelnen Threads in einer Gruppe von Threads während der Ausführung divergieren dürfen. In mindestens einer Ausführungsform werden ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden Warp beibehalten, wodurch Nebenläufigkeit zwischen Warps und serielle Ausführung innerhalb von Warps ermöglicht werden, wenn Threads innerhalb eines Warps divergieren. In einer anderen Ausführungsform werden ein Programmzähler, ein Aufrufstack und ein Ausführungsstatus für jeden einzelnen Thread gehalten, 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, die gemeinsame Anweisungen ausführen, können zur besseren Effizienz konvergiert und parallel ausgeführt werden. Mindestens eine Ausführungsform des SM 3414 wird hierin detaillierter beschrieben.
  • In mindestens einer Ausführungsform stellt die MMU 3418 eine Schnittstelle zwischen dem GPC 3400 und einer Speicherpartitionseinheit (z. B. der Partitionseinheit 3322 aus 33) bereit und stellt die MMU 3418 die Übersetzung virtueller Adressen in physische Adressen, den Speicherschutz und die Vermittlung von Speicheranforderungen bereit. In mindestens einer Ausführungsform stellt die MMU 3418 einen oder mehrere Adressenübersetzungspuffer („TLBs“) zum Durchführen der Übersetzung von virtuellen Adressen in physische Adressen in Speicher bereit.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie etwa ein neuronales Netz, zu trainieren, um dem GPC 3400 bereitgestellte Informationen vorherzusagen oder zu inferenzieren. In mindestens einer Ausführungsform wird der GPC 3400 verwendet, um Informationen auf Grundlage eines trainierten Modells des maschinellen Lernens (z. B. eines neuronalen Netzes) zu inferenzieren oder vorherzusagen, das durch einen anderen Prozessor oder ein anderes System oder durch den GPC 3400 trainiert wurde. In mindestens einer Ausführungsform kann der GPC 3400 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netze durchzuführen.
  • 35 veranschaulicht eine Speicherpartitionseinheit 3500 einer Parallelverarbeitungseinheit („PPU“) gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet die Speicherpartitionseinheit 3500 ohne Einschränkung eine Einheit 3502 für Rasteroperationen („ROP“), einen Level-Zwei-(„L2“-)Cache 3504, eine Speicherschnittstelle 3506 und eine beliebige geeignete Kombination davon. In mindestens einer Ausführungsform ist die Speicherschnittstelle 3506 an Speicher gekoppelt. In mindestens einer Ausführungsform kann die Speicherschnittstelle 3506 32-, 64-, 128-, 1024-Bit-Datenbusse oder dergleichen für die Hochgeschwindigkeitsdatenübermittlung implementieren. In mindestens einer Ausführungsform beinhaltet die PPU U Speicherschnittstellen 3506, wobei U eine positive ganze Zahl ist, mit einer Speicherschnittstelle 3506 pro Paar von Partitionseinheiten 3500, wobei jedes Paar von Partitionseinheiten 3500 mit einer entsprechenden Speichervorrichtung verbunden ist. In mindestens einer Ausführungsform kann die PPU zum Beispiel mit bis zu Y Speichervorrichtungen verbunden sein, wie etwa mit Speicherstapeln mit hoher Bandbreite oder mit einem synchronen dynamischen Direktzugriffsspeicher mit Graphics-Double-Data-Rate-Version 5 („GDDR5-SDRAM“).
  • In mindestens einer Ausführungsform implementiert die Speicherschnittstelle 3506 eine Speicherschnittstelle mit Speicher mit hoher Bandbreite der zweiten Generation („HBM2“) und Y ist gleich der Hälfte von U. In mindestens einer Ausführungsform befinden sich HBM2-Speicherstapel auf einem physischen Gehäuse mit einer PPU, was im Vergleich zu herkömmlichen GDDR5-SDRAM-Systemen erhebliche Leistungs- und Flächeneinsparungen bereitstellt. In mindestens einer Ausführungsform beinhaltet jeder HBM2-Stapel ohne Einschränkung vier Speicher-Dies mit Y=4, wobei jeder HBM2-Stapel zwei 128-Bit-Kanäle pro Die für insgesamt 8 Kanäle und eine Datenbusbreite von 1024 Bit beinhaltet. In mindestens einer Ausführungsform unterstützt der Speicher den Single-Error Correcting Double-Error Detecting („SECDED“) Error Correction Code („ECC“) zum Schutz der Daten. ECC bietet in mindestens einer Ausführungsform eine höhere Zuverlässigkeit für Datenverarbeitungsanwendungen, die empfindlich auf Datenverfälschung reagieren.
  • In mindestens einer Ausführungsform implementiert die PPU eine mehrstufige Speicherhierarchie. In mindestens einer Ausführungsform unterstützt die Speicherpartitionseinheit 3500 einen einheitlichen Speicher, um einen einzelnen einheitlichen virtuellen Adressraum für den Speicher der zentralen Verarbeitungseinheit („CPU“) und der PPU bereitzustellen, wodurch die gemeinsame Nutzung von Daten zwischen virtuellen Speichersystemen ermöglicht wird. In mindestens einer Ausführungsform wird die Häufigkeit von Zugriffen durch eine PPU auf einen Speicher, der sich auf anderen Prozessoren befindet, verfolgt, um sicherzustellen, dass Speicherseiten in den physischen Speicher der PPU verschoben werden, die häufiger auf Seiten zugreift. In mindestens einer Ausführungsform unterstützt die Hochgeschwindigkeits-GPU-Zusammenschaltung 3308 Adressübersetzungsdienste, die es der PPU ermöglichen, direkt auf die Seitentabellen der CPU zuzugreifen, und einer PPU vollen Zugriff auf den CPU-Speicher bereitstellen.
  • In mindestens einer Ausführungsform übertragen Kopierengines Daten zwischen mehreren PPUs oder zwischen PPUs und CPUs. In mindestens einer Ausführungsform können Kopier-Engines Seitenfehler für Adressen erzeugen, die nicht in Seitentabellen zugeordnet sind, und die Speicherpartitionseinheit 3500 bedient dann Seitenfehler, indem sie die Adressen in der Seitentabelle zuordnet, woraufhin die Kopier-Engine eine Übertragung ausführt. In mindestens einer Ausführungsform ist der Speicher für mehrere Kopier-Engine-Vorgänge zwischen mehreren Prozessoren gepinnt (d. h. nicht auslagerbar), was den verfügbaren Speicher erheblich reduziert. In mindestens einer Ausführungsform können bei Hardware-Seitenfehlern Adressen an Kopier-Engines übergeben werden, ohne Rücksicht darauf, ob Speicherseiten speicherresident sind und ein Kopierprozess transparent ist.
  • Daten aus dem Speicher 3304 von 33 oder einem anderen Systemspeicher werden von der Speicherpartitionseinheit 3500 abgerufen und im L2-Cache 3504 gespeichert, der sich gemäß mindestens einer Ausführungsform auf dem Chip befindet und von verschiedenen GPCs gemeinsam genutzt wird. Jede Speicherpartitionseinheit 3500 beinhaltet in mindestens einer Ausführungsform ohne Einschränkung mindestens einen Abschnitt des L2-Caches, der mit einer entsprechenden Speichervorrichtung assoziiert ist. In mindestens einer Ausführungsform sind die Caches der unteren Levels in verschiedenen Einheiten innerhalb der GPCs implementiert. In mindestens einer Ausführungsform kann jeder der SMs 3414 aus 34 einen Level-1-(„L1“-)Cache implementieren, wobei dieser L1-Cache ein privater Speicher ist, der für einen konkreten SM 3414 dediziert ist, und Daten aus dem L2-Cache 3504 werden abgerufen und in jedem L1-Cache zum Verarbeiten in funktionellen Einheiten der SMs 3414 gespeichert. In mindestens einer Ausführungsform ist der L2-Cache 3504 an die Speicherschnittstelle 3506 und die in 33 gezeigte XBar 3320 gekoppelt.
  • Die ROP-Einheit 3502 führt in mindestens einer Ausführungsform Grafikrasteroperationen aus, die sich auf die Pixelfarbe beziehen, wie z. B. Farbkomprimierung, Pixelüberblendung und mehr. In mindestens einer Ausführungsform implementiert die ROP-Einheit 3502 die Tiefenprüfung in Verbindung mit der Raster-Engine 3408, wobei sie eine Tiefe für eine Abtaststelle, die mit einem Pixelfragment assoziiert ist, von einer Culling-Engine der Raster-Engine 3408 empfängt. In mindestens einer Ausführungsform wird die Tiefe gegen eine entsprechende Tiefe in einem Tiefenpuffer für eine mit einem Fragment assoziierte Abtaststelle geprüft. Falls dieses Fragment die Tiefenprüfung für diese Abtaststelle besteht, aktualisiert die ROP-Einheit 3502 dann in mindestens einer Ausführungsform den Tiefenpuffer und überträgt ein Ergebnis dieser Tiefenprüfung an die Raster-Engine 3408. Es versteht sich, dass sich eine Anzahl der Partitionseinheiten 3500 von einer Anzahl der GPCs unterscheiden kann und daher kann jede ROP-Einheit 3502 in mindestens einer Ausführungsform an jeden GPC gekoppelt sein. In mindestens einer Ausführungsform verfolgt die ROP-Einheit 3502 die von verschiedenen GPCs empfangenen Pakete und bestimmt, ob ein durch die ROP-Einheit 3502 erzeugtes Ergebnis zu der XBar 3320 durchgeroutet werden soll.
  • 36 veranschaulicht einen Streaming-Multiprozessor („SM“) 3600 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der SM 3600 der SM aus 34. In mindestens einer Ausführungsform beinhaltet der SM 3600 ohne Einschränkung einen Anweisungs-Cache 3602, eine oder mehrere Scheduler-Einheiten 3604, eine Registerbank 3608, einen oder mehrere Verarbeitungskerne („Kerne“) 3610, eine oder mehrere Spezialfunktionseinheiten (special function units - „SFUs“) 3612, eine oder mehrere Lade-/Speichereinheiten (load/store units - „LSUs“) 3614, ein Zusammenschaltungsnetz 3616, einen gemeinsam genutzten Speicher/Level-Eins-(„L1“-)Cache 3618 und/oder eine beliebige geeignete Kombination davon.
  • In mindestens einer Ausführungsform teilt eine Arbeitsverteilungseinheit Tasks zur Ausführung auf Universalverarbeitungsclustern („GPCs“) von Parallelverarbeitungseinheiten („PPUs“) zu und jeder Task wird einem konkreten Datenverarbeitungscluster („DPC“) innerhalb eines GPC zugewiesen, und falls ein Task mit einem Shader-Programm assoziiert ist, wird dieser Task einem der SMs 3600 zugewiesen. In mindestens einer Ausführungsform empfängt die Scheduler-Einheit 3604 Tasks von einer Arbeitsverteilungseinheit und sie verwaltet die Anweisungsplanung für einen oder mehrere Thread-Blöcke, die dem SM 3600 zugeordnet sind. In mindestens einer Ausführungsform plant die Scheduler-Einheit 3604 Thread-Blöcke für die Ausführung als Warps aus parallelen Threads, wobei jedem Thread-Block mindestens ein Warp zugewiesen ist. In mindestens einer Ausführungsform führt jeder Warp Threads aus. In mindestens einer Ausführungsform verwaltet die Planer-Einheit 3604 eine Vielzahl von unterschiedlichen Thread-Blöcken, indem sie unterschiedlichen Thread-Blöcken Warps zuweist und dann während jedes Taktzyklus Anweisungen aus einer Vielzahl von unterschiedlichen kooperativen Gruppen an verschiedene funktionelle Einheiten (z. B. Verarbeitungskerne 3610, SFUs 3612 und LSUs 3614) verteilt.
  • In mindestens einer Ausführungsform können sich kooperative Gruppen auf ein Programmiermodell zum Organisieren von Gruppen kommunizierender Threads beziehen, das es Entwicklern erlaubt, die Granularität auszudrücken, mit der Threads kommunizieren, und so den Ausdruck satterer, effizienterer paralleler Dekompositionen ermöglicht. In mindestens einer Ausführungsform unterstützen kooperative Start-APIs die Synchronisierung zwischen Thread-Blöcken zur Ausführung paralleler Algorithmen. In mindestens einer Ausführungsform bieten Anwendungen herkömmlicher Programmiermodelle ein einziges, einfaches Konstrukt für die Synchronisierung kooperierender Threads: eine Barriere über alle Threads eines Thread-Blocks (z. B. die Funktion syncthreads()). In mindestens einer Ausführungsform können Programmierer jedoch Gruppen von Threads mit einer kleineren Granularität als der des Thread-Blocks definieren und innerhalb der definierten Gruppen synchronisieren, um eine höhere Leistung, Designflexibilität und Software-Wiederverwendung in Form von gemeinsamen gruppenweiten Funktionsschnittstellen zu ermöglichen. In mindestens einer Ausführungsform ermöglichen kooperative Gruppen Programmierern, Gruppen von Threads explizit auf Subblock- (d. h. so klein wie ein einzelner Thread) und Multiblock-Granularität zu definieren und kollektive Operationen wie die Synchronisierung auf Threads in einer kooperativen Gruppe durchzuführen. In mindestens einer Ausführungsform unterstützt das Programmiermodell eine saubere Komposition über Softwaregrenzen hinweg, so dass Bibliotheken und Dienstprogramme innerhalb ihres lokalen Kontexts sicher synchronisieren können, ohne dass Annahmen über Konvergenz getroffen werden müssen. In mindestens einer Ausführungsform ermöglichen Primitive der kooperativen Gruppen neue Muster der kooperativen Parallelität, einschließlich, aber nicht beschränkt auf, Produzent-Konsument-Parallelität, opportunistische Parallelität und globale Synchronisation über ein gesamtes Gitter von Thread-Blöcken.
  • In mindestens einer Ausführungsform ist eine Zuteilungseinheit 3606 so konfiguriert, dass sie Anweisungen an eine oder mehrere Funktionseinheiten und die Scheduler-Einheit 3604 übermittelt, und beinhaltet ohne Einschränkung zwei Zuteilungseinheiten 3606, die es ermöglichen, dass zwei verschiedene Anweisungen aus einem gemeinsamen Warp während jedes Taktzyklus zugeteilt werden. In mindestens einer Ausführungsform beinhaltet jede Scheduler-Einheit 3604 eine einzelne Zuteilungseinheit 3606 oder zusätzliche Zuteilungseinheiten 3606.
  • In mindestens einer Ausführungsform beinhaltet jeder SM 3600 in mindestens einer Ausführungsform ohne Einschränkung die Registerbank 3608, die einen Satz von Registern für funktionelle Einheiten des SM 3600 bereitstellt. In mindestens einer Ausführungsform ist die Registerbank 3608 auf jede funktionelle Einheit aufgeteilt, sodass jeder funktionellen Einheit ein dedizierter Abschnitt der Registerbank 3608 zugewiesen ist. In mindestens einer Ausführungsform ist die Registerbank 3608 auf unterschiedliche Warps aufgeteilt, die durch den SM 3600 ausgeführt werden, und die Registerbank 3608 stellt temporären Datenspeicher für Operanden bereit, die mit Datenpfaden von funktionellen Einheiten verbunden sind. In mindestens einer Ausführungsform umfasst jeder SM 3600 ohne Einschränkung eine Vielzahl von L Verarbeitungskernen 3610, wobei L eine positive ganze Zahl ist. In mindestens einer Ausführungsform beinhaltet der SM 3600 ohne Einschränkung eine große Anzahl (z. B. 128 oder mehr) von unterschiedlichen Verarbeitungskernen 3610. In mindestens einer Ausführungsform beinhaltet jeder Verarbeitungskern 3610 ohne Einschränkung eine Vollpipelineverarbeitungseinheit mit einfacher Genauigkeit, doppelter Genauigkeit und/oder gemischter Genauigkeit, die ohne Einschränkung eine arithmetisch-logische Einheit für Gleitkommazahlen und eine arithmetisch-logische Einheit für Integer beinhaltet. In mindestens einer Ausführungsform implementieren die arithmetischen Fließkomma-Logikeinheiten den IEEE-754-2008-Standard für Fließkommaarithmetik. In mindestens einer Ausführungsform beinhalten die Verarbeitungskerne 3610 ohne Einschränkung 64 Gleitkommakerne mit einfacher Genauigkeit (32 Bit), 64 Integerkerne, 32 Gleitkommakerne mit doppelter Genauigkeit (64 Bit) und 8 Tensorkerne.
  • Tensorkerne sind gemäß mindestens einer Ausführungsform dazu konfiguriert, Matrixoperationen durchzuführen. In mindestens einer Ausführungsform sind ein oder mehrere Tensorkerne in den Verarbeitungskernen 3610 enthalten. In mindestens einer Ausführungsform sind die Tensorkerne so konfiguriert, dass sie Deep-Learning-Matrixarithmetik durchführen, wie z. B. Faltungsvorgänge für das Training und die Inferenzierung neuronaler Netze. In mindestens einer Ausführungsform arbeitet jeder Tensorkern mit einer 4x4-Matrix und führt eine Matrixmultiplikations- und Akkumulationsoperation D = A X B + C durch, wobei A, B, C und D 4x4-Matrizen sind.
  • In mindestens einer Ausführungsform sind die Eingaben für den Multiplikator A und B 16-Bit-Gleitkomma-Matrizen und die Akkumulationsmatrizen C und D 16-Bit-Gleitkomma- oder 32-Bit-Gleitkomma-Matrizen. In mindestens einer Ausführungsform arbeiten die Tensorkerne mit 16-Bit-Gleitkomma-Eingangsdaten und 32-Bit-Gleitkomma-Akkumulation. In mindestens einer Ausführungsform werden für die 16-Bit-Gleitkommamultiplikation 64 Operationen verwendet, was zu einem Produkt mit voller Genauigkeit führt, das dann unter Verwendung einer 32-Bit-Gleitkomma-Adition mit anderen Zwischenprodukten zu einer 4x4x4-Matrixmultiplikation akkumuliert wird. In mindestens einer Ausführungsform werden Tensor-Kerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen, die aus diesen kleineren Elementen aufgebaut sind. In mindestens einer Ausführungsform stellt eine API wie die CUDA 9 C++ API spezialisierte Operationen zum Laden, Multiplizieren und Akkumulieren von Matrizen sowie zum Speichern von Matrizen bereit, um Tensorkerne von einem CUDA-C++-Programm aus effizient zu nutzen. In mindestens einer Ausführungsform wird auf einem CUDA-Level auf einer Warp-Level-Schnittstelle von Matrizen der Größe 16x16 ausgegangen, die sich über alle 32 Threads des Warp erstrecken.
  • In mindestens einer Ausführungsform umfasst jeder SM 3600 ohne Einschränkung M SFUs 3612, die Spezialfunktionen durchführen (z. B. Attributbewertung, reziproke Quadratwurzel und dergleichen). In mindestens einer Ausführungsform beinhalten die SFUs 3612 ohne Einschränkung eine Baumtraversierungseinheit, die so konfiguriert ist, dass sie eine hierarchische Baumdatenstruktur traversiert. In mindestens einer Ausführungsform beinhalten die SFUs 3612 ohne Einschränkung eine Textureinheit, die dazu konfiguriert ist, Texturkartenfilteroperationen durchzuführen. In mindestens einer Ausführungsform sind die Textureinheiten dazu konfiguriert, Texturkarten (z. B. ein 2D-Array von Texeln) aus Speicher zu laden und Texturkarten abzutasten, um abgetastete Texturwerte zur Verwendung in Shader-Programmen zu produzieren, die durch den SM 3600 ausgeführt werden. In mindestens einer Ausführungsform werden die Texturkarten in dem gemeinsam genutzten Speicher/L1-Cache 3618 gespeichert. In mindestens einer Ausführungsform implementieren die Textureinheiten Texturvorgänge, wie z. B. Filterungsvorgänge unter Verwendung von MIP-Karten (z. B. Texturkarten mit variierenden Detaillevels), gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet jeder SM 3600 ohne Einschränkung zwei Textureinheiten.
  • Jeder SM 3600 umfasst ohne Einschränkung N LSUs 3614, die in mindestens einer Ausführungsform Lade- und Speicheroperationen zwischen dem gemeinsamen Speicher/L1-Cache 3618 und der Registerdatei 3608 implementieren. Das Zusammenschaltungsnetz 3616 verbindet in mindestens einer Ausführungsform jede funktionelle Einheit mit der Registerbank 3608 und die LSU 3614 mit der Registerbank 3608 und dem gemeinsam genutzten Speicher/L1-Cache 3618. In mindestens einer Ausführungsform ist das Zusammenschaltungsnetz 3616 eine Kreuzschiene, die so konfiguriert sein kann, dass sie beliebige funktionelle Einheiten mit beliebigen Registern in der Registerbank 3608 verbindet und LSUs 3614 mit der Registerbank 3608 und Speicherorten in dem gemeinsam genutzten Speicher/L1-Cache 3618 verbindet.
  • In mindestens einer Ausführungsform ist der gemeinsam genutzte Speicher/L1-Cache 3618 ein Array von chipinternem Speicher, der die Datenspeicherung und die Kommunikation zwischen SM 3600 und Primitivengine sowie zwischen Threads im SM 3600 ermöglicht. In mindestens einer Ausführungsform umfasst der gemeinsam genutzte Speicher/L1-Cache 3618 ohne Einschränkung eine Speicherkapazität von 128 KB und er befindet sich in einem Pfad von dem SM 3600 zu einer Partitionseinheit. In mindestens einer Ausführungsform wird der gemeinsam genutzte Speicher/L1-Cache 3618 in mindestens einer Ausführungsform zum Zwischenspeichern von Lese- und Schreibvorgängen verwendet. In mindestens einer Ausführungsform sind einer oder mehrere von dem gemeinsam genutzten Speicher/L1-Cache 3618, L2-Cache und Speicher Ergänzungsspeicher.
  • Die Kombination von Datencache und gemeinsamem Speicher in einem 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 durch Programme, die keinen gemeinsam genutzten Speicher verwenden, als Cache verwendet oder sie kann so verwendet werden, wie etwa, falls der gemeinsam genutzte Speicher so konfiguriert ist, dass er die Hälfte einer Kapazität verwendet, und Textur- und Lade-/Speicheroperationen die verbleibende Kapazität verwenden können. Die Integration in den gemeinsam genutzten Speicher/L1-Cache 3618 ermöglicht dem gemeinsam genutzten Speicher/L1-Cache 3618 gemäß mindestens einer Ausführungsform das Fungieren als eine Leitung mit hohem Durchsatz für Streaming-Daten, während simultan ein Zugriff mit hoher Bandbreite und niedriger Latenz auf häufig wiederverwendete Daten bereitgestellt wird. In mindestens einer Ausführungsform kann bei einer Konfiguration für Universalparallelberechnungen eine einfachere Konfiguration im Vergleich zur Grafikverarbeitung verwendet werden. In mindestens einer Ausführungsform werden Grafikverarbeitungseinheiten mit festen Funktionen umgangen, wodurch ein wesentlich einfacheres Programmiermodell entsteht. Bei einer Konfiguration für Universalparallelberechnungen ordnet eine Arbeitsverteilungseinheit in mindestens einer Ausführungsform Blöcke von Threads direkt den DPCs zu und verteilt diese. In mindestens einer Ausführungsform führen Threads in einem Block ein gemeinsames Programm aus, wobei eine eindeutige Thread-ID bei der Berechnung verwendet wird, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, wobei der SM 3600 zum Ausführen des Programms und Durchführen von Berechnungen verwendet wird, der gemeinsam genutzte Speicher/L1-Cache 3618 zum Kommunizieren zwischen den Threads verwendet wird und die LSU 3614 zum Lesen des und Schreiben in den globalen Speicher durch den gemeinsam genutzten Speicher/L1-Cache 3618 und die Speicherpartitionseinheit verwendet wird. Bei der Konfiguration für Universalparallelberechnungen schreibt der SM 3600 in mindestens einer Ausführungsform Befehle, die durch die Scheduler-Einheit 3604 verwendet werden können, um neue Arbeit in den DPCs zu starten.
  • In mindestens einer Ausführungsform ist eine PPU in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, Servern, Supercomputern, einem Smartphone (z. B. einer drahtlosen, handgehaltenen Vorrichtung), einem persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, einem Fahrzeug, einer kopfmontierten Anzeige, einer handgehaltenen elektronischen Vorrichtung und mehr enthalten oder damit gekoppelt. In mindestens einer Ausführungsform ist die PPU auf einem einzigen Halbleitersubstrat untergebracht. In mindestens einer Ausführungsform ist die PPU in einem System-on-a-Chip („SoC“) zusammen mit einer oder mehreren anderen Einrichtungen wie zusätzlichen PPUs, Speicher, einer CPU mit reduziertem Befehlssatz („RISC“), einer Speicherverwaltungseinheit („MMU“), einem Digital-Analog-Wandler („DAC“) und dergleichen vorhanden.
  • In mindestens einer Ausführungsform kann eine PPU in einer Grafikkarte beinhaltet sein, die eine oder mehrere Speichervorrichtungen beinhaltet. In mindestens einer Ausführungsform kann die Grafikkarte so ausgestaltet sein, dass sie mit einem PCIe-Steckplatz auf einem Motherboard eines Desktop-Computers verbunden werden kann. In mindestens einer Ausführungsform kann diese PPU eine integrierte Grafikverarbeitungseinheit („iGPU“) sein, die im Chipsatz einer Hauptplatine enthalten ist.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie etwa ein neuronales Netz, zu trainieren, um dem SM 3600 bereitgestellte Informationen vorherzusagen oder zu inferenzieren. In mindestens einer Ausführungsform wird der SM 3600 verwendet, um Informationen auf Grundlage eines trainierten Modells des maschinellen Lernens (z. B. eines neuronalen Netzes) zu inferenzieren oder vorherzusagen, das durch einen anderen Prozessor oder ein anderes System oder durch den SM 3600 trainiert wurde. In mindestens einer Ausführungsform kann der SM 3600 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netze durchzuführen.
  • Es werden Ausführungsformen offenbart, die mit einer virtualisierten Rechenplattform für weiterentwickeltes Rechnen in Bezug stehen, wie etwa Bildinferenz und Bildverarbeitung in medizinischen Anwendungen. Ohne Einschränkung können Ausführungsformen Radiografie, Magnetresonanztomografie (MRT), Nuklearmedizin, Ultraschall, Sonografie, Elastografie, fotoakustische Bildgebung, Tomografie, Echokardiografie, funktionelle Nahinfrarotspektroskopie und Magnetpartikelbildgebung oder eine Kombination davon beinhalten. In mindestens einer Ausführungsform können eine virtualisierte Rechenplattform und die hierin beschriebenen damit assoziierten Prozesse zusätzlich oder alternativ, ohne Einschränkung, in der Forensikanalyse, der Erkennung und Abbildung des Untergrunds (z. B. Ölexploration, Archäologie, Paläontologie usw.), der Topografie, der Ozeanografie, der Geologie, der Osteologie, der Meteorologie, der intelligenten Bereichs- oder Objektverfolgung und -überwachung, der Sensordatenverarbeitung (z. B. RADAR, SONAR, LIDAR usw.) und/oder der Genomik und Gensequenzierung verwendet werden.
  • Unter Bezugnahme auf 37 ist 37 ein beispielhaftes Datenablaufdiagramm für einen Prozess 3700 zum Erzeugen und Einsetzen einer Bildverarbeitungs- und -inferenzierungspipeline gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozess 3700 zur Verwendung mit Bildgebungsvorrichtungen, Verarbeitungsvorrichtungen, Genomikvorrichtungen, Gensequenzierungsvorrichtungen, Radiologievorrichtungen und/oder anderen Vorrichtungstypen in einer oder mehreren Einrichtungen 3702 eingesetzt werden, wie etwa medizinischen Einrichtungen, Krankenhäusern, Gesundheitsinstituten, Kliniken, Forschungs- oder Diagnoselabors usw. In mindestens einer Ausführungsform kann der Prozess 3700 zum Durchführen einer Genomanalyse und -inferenz an Sequenzierungsdaten eingesetzt werden. Beispiele für Genomanalysen, die unter Verwendung der hierin beschriebenen Systeme und Prozesse durchgeführt werden können, beinhalten ohne Einschränkung Varianten-Calling, Mutationsdetektion und Quantifizierung der Genexpression.
  • In mindestens einer Ausführungsform kann der Prozess 3700 innerhalb eines Trainingssystems 3704 und/oder eines Einsatzsystems 3706 ausgeführt werden. In mindestens einer Ausführungsform kann das Trainingssystem 3704 verwendet werden, um das Training, den Einsatz und die Implementation von Modellen des maschinellen Lernens (z. B. neuronale Netze, Objektdetektionsalgorithmen, Algorithmen des maschinellen Sehens usw.) zur Verwendung in dem Einsatzsystem 3706 durchzuführen. In mindestens einer Ausführungsform kann das Einsatzsystem 3706 so konfiguriert sein, dass es Verarbeitungs- und Rechenressourcen in einer verteilten Rechenumgebung ablädt, um die Infrastrukturanforderungen in der Einrichtung 3702 zu reduzieren. In mindestens einer Ausführungsform kann das Einsatzsystem 3706 eine gestraffte Plattform zum Auswählen, individuellen Anpassen und Implementieren virtueller Instrumente zur Verwendung mit Bildgebungsvorrichtungen (z. B. MRT, CT-Scan, Röntgen, Ultraschall usw.) oder Sequenzierungsvorrichtungen in der Einrichtung 3702 bereitstellen. In mindestens einer Ausführungsform können virtuelle Instrumente softwaredefinierte Anwendungen zur Durchführung eines oder mehrerer Verarbeitungsvorgänge in Bezug auf Bildgebungsdaten beinhalten, die von Bildgebungsvorrichtungen, Sequenzierungsvorrichtungen, Radiologievorrichtungen und/oder anderen Vorrichtungsarten erzeugt werden. In mindestens einer Ausführungsform können eine oder mehrere Anwendungen in einer Pipeline Dienste (z. B. Ableitung, Visualisierung, Berechnung, KI usw.) des Einsatzsystems 3706 während der Ausführung von Anwendungen verwenden oder aufrufen.
  • In mindestens einer Ausführungsform können einige der in fortgeschrittenen Verarbeitungs- und Inferenzierungspipelines verwendeten Anwendungen maschinelle Lernmodelle oder andere KI verwenden, um einen oder mehrere Verarbeitungsschritte durchzuführen. In mindestens einer Ausführungsform können Modelle des maschinellen Lernens in der Einrichtung 3702 unter Verwendung von Daten 3708 (wie etwa Bildgebungsdaten) trainiert werden, die in der Einrichtung 3702 erzeugt wurden (und auf einem oder mehreren Servern eines Bildarchivierungs- und Kommunikationssystems (picture archiving and communication system - PACS) in der Einrichtung 3702 gespeichert sind), und sie können unter Verwendung von Bildgebungs- oder Sequenzierungsdaten 3708 aus einer anderen Einrichtung oder anderen Einrichtungen (z. B. einem anderen Krankenhaus, Labor, einer anderen Klinik usw.) oder einer Kombination davon trainiert werden. In mindestens einer Ausführungsform kann das Trainingssystem 3704 verwendet werden, um Anwendungen, Dienste und/oder andere Ressourcen zum Erzeugen von funktionierenden, einsatzfähigen Modellen des maschinellen Lernens für das Einsatzsystem 3706 bereitzustellen.
  • In mindestens einer Ausführungsform kann eine Modellregistrierung 3724 durch einen Objektspeicher unterstützt werden, der Versionierung und Objektmetadaten unterstützen kann. In mindestens einer Ausführungsform kann der Zugriff auf den Objektspeicher zum Beispiel durch eine mit Cloud-Speicher (z. B. einer Cloud 3826 aus 38) kompatible Anwendungsprogrammierschnittstelle (API) von innerhalb einer Cloud-Plattform erfolgen. In mindestens einer Ausführungsform können Modelle des maschinellen Lernens innerhalb der Modellregistrierungsdatenbank 3724 durch Entwickler oder Partner eines Systems, das mit einer API interagiert, hochgeladen, aufgelistet, modifiziert oder gelöscht werden. In mindestens einer Ausführungsform kann eine API Zugriff auf Verfahren bereitstellen, die es Benutzern mit entsprechenden Anmeldeinformationen ermöglichen, Modelle mit Anwendungen zu assoziieren, sodass Modelle als Teil der Ausführung von containerisierten Instanziierungen von Anwendungen ausgeführt werden können.
  • In mindestens einer Ausführungsform kann eine Trainingspipeline 3804 (38) ein Szenario beinhalten, in dem die Einrichtung 3702 ihr eigenes maschinelles Lernmodell trainiert oder ein bestehendes maschinelles Lernmodell aufweist, das optimiert oder aktualisiert werden muss. In mindestens einer Ausführungsform können Bildgebungsdaten 3708, die durch Bildgebungsvorrichtungen, Sequenzierungsvorrichtungen und/oder andere Vorrichtungstypen erzeugt wurden, empfangen werden. In mindestens einer Ausführungsform kann, sobald Bildgebungsdaten 3708 empfangen werden, die Klgestützte Annotation 3710 verwendet werden, um beim Erzeugen von Annotationen zu helfen, die den Bildgebungsdaten 3708 entsprechen, die als Ground-Truth-Daten für ein Modell des maschinellen Lernens verwendet werden sollen. In mindestens einer Ausführungsform kann die KI-gestützte Annotation 3710 ein oder mehrere Modelle des maschinellen Lernens (z. B. neuronale Faltungsnetze (CNNs)) beinhalten, die darauf trainiert werden können, Annotationen zu erzeugen, die bestimmten Typen von Bildgebungsdaten 3708 (z. B. von bestimmten Vorrichtungen) und/oder bestimmten Typen von Anomalien in den Bildgebungsdaten 3708 entsprechen. In mindestens einer Ausführungsform können die Kl-gestützten Annotationen 3710 dann direkt verwendet oder unter Verwendung eines Annotationswerkzeugs (z. B. von einem Forscher, Kliniker, Arzt, Wissenschaftler usw.) eingestellt oder fein abgestimmt werden, um Ground-Truth-Daten zu erzeugen. In mindestens einer Ausführungsform können in einigen Beispielen beschriftete Klinikdaten 3712 (z. B. Annotationen, die von einem Kliniker, Arzt, Wissenschaftler, Techniker usw. bereitgestellt werden) als Ground-Truth-Daten für das Training eines Modells des maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform können die Kl-gestützten Annotationen 3710, beschrifteten Klinikdaten 3712 oder eine Kombination davon als Ground-Truth-Daten für das Training eines Modells des maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform kann ein trainiertes Modell des maschinellen Lernens als Ausgabemodell 3716 bezeichnet werden und durch das Einsatzsystem 3706 verwendet werden, wie hierin beschrieben.
  • In mindestens einer Ausführungsform kann die Trainingspipeline 3804 (38) ein Szenario beinhalten, in dem die Einrichtung 3702 ein Modell des maschinellen Lernens zur Verwendung bei der Ausführung einer oder mehrerer Verarbeitungs-Tasks für eine oder mehrere Anwendungen im Einsatzsystem 3706 benötigt, die Einrichtung 3702 aber möglicherweise derzeit nicht über ein solches Modell des maschinellen Lernens verfügt (oder möglicherweise nicht über ein Modell verfügt, das für solche Zwecke optimiert, effizient oder effektiv ist). In mindestens einer Ausführungsform kann ein bestehendes Modell des maschinellen Lernens aus der Modellregistrierungsdatenbank 3724 ausgewählt werden. In mindestens einer Ausführungsform kann die Modellregistrierungsdatenbank 3724 Modelle des maschinellen Lernens beinhalten, die zum Durchführen einer Vielfalt von unterschiedlichen Inferenz-Tasks an Bildgebungsdaten trainiert sind. In mindestens einer Ausführungsform können die Modelle des maschinellen Lernens in der Modellregistrierungsdatenbank 3724 an Bildgebungsdaten von anderen Einrichtungen als der Einrichtung 3702 trainiert worden sein (z. B. Einrichtungen, die sich an einem anderen Ort befinden). In mindestens einer Ausführungsform können die Modelle des maschinellen Lernens an Bildgebungsdaten von einem Ort, zwei Orten oder einer beliebigen Anzahl von Orten trainiert worden sein. In mindestens einer Ausführungsform kann das Training an Bildgebungsdaten eines spezifischen Ortes an diesem Ort oder mindestens auf eine Weise stattfinden, welche die Vertraulichkeit der Bildgebungsdaten schützt oder die Übertragung von Bildgebungsdaten außerhalb des Gebäudes einschränkt (z. B. zur Einhaltung von HIPAA-Vorschriften, Datenschutzbestimmungen usw.). In mindestens einer Ausführungsform kann ein Modell des maschinellen Lernens, sobald es an einem Ort trainiert - oder teilweise trainiert - wurde, zur Modellregistrierungsdatenbank 3724 hinzugefügt werden. In mindestens einer Ausführungsform kann ein Modell des maschinellen Lernens dann in einer beliebigen Anzahl von anderen Einrichtungen erneut trainiert oder aktualisiert werden und ein erneut trainiertes oder aktualisiertes Modell kann in der Modellregistrierungsdatenbank 3724 verfügbar gemacht werden. In mindestens einer Ausführungsform kann dann ein Modell des maschinellen Lernens aus der Modellregistrierungsdatenbank 3724 ausgewählt werden - und als Ausgabemodell 3716 bezeichnet werden - und in dem Einsatzsystem 3706 verwendet werden, um einen oder mehrere Verarbeitungs-Tasks für eine oder mehrere Anwendungen eines Einsatzsystems durchzuführen.
  • In mindestens einer Ausführungsform kann die Trainingspipeline 3804 (38) in einem Szenario verwendet werden, in dem die Einrichtung 3702 ein Modell des maschinellen Lernens zur Verwendung bei der Ausführung einer oder mehrerer Verarbeitungs-Tasks für eine oder mehrere Anwendungen im Einsatzsystem 3706 erfordert, die Einrichtung 3702 aber möglicherweise derzeit nicht über ein solches Modell des maschinellen Lernens verfügt (oder möglicherweise nicht über ein Modell verfügt, das für solche Zwecke optimiert, effizient oder effektiv ist). In mindestens einer Ausführungsform könnte ein aus der Modellregistrierungsdatenbank 3724 ausgewähltes Modell des maschinellen Lernens aufgrund von Unterschieden bei den Populationen, genetischen Variationen, der Robustheit der zum Trainieren eines Modells des maschinellen Lernens verwendeten Trainingsdaten, der Verschiedenartigkeit der Anomalien der Trainingsdaten und/oder anderer Probleme mit den Trainingsdaten nicht für die in der Einrichtung 3702 erzeugten Bildgebungsdaten 3708 fein abgestimmt oder optimiert sein. In mindestens einer Ausführungsform kann die Kl-gestützte Annotation 3710 verwendet werden, um beim Erzeugen von Annotationen zu helfen, die den Bildgebungsdaten 3708 entsprechen, die als Ground-Truth-Daten für das erneute Trainieren oder Aktualisieren eines Modells des maschinellen Lernens verwendet werden sollen. In mindestens einer Ausführungsform können beschriftete Klinikdaten 3712 (z. B. Annotationen, die von einem Kliniker, Arzt, Wissenschaftler usw. bereitgestellt werden) als Ground-Truth-Daten für das Training eines Modells des maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform kann das erneute Trainieren oder Aktualisieren eines Modells des maschinellen Lernens als Modelltraining 3714 bezeichnet werden. In mindestens einer Ausführungsform kann das Modelltraining 3714 - z. B. Kl-gestützte Annotationen 3710, beschriftete Klinikdaten 3712 oder eine Kombination davon - als Ground-Truth-Daten für das erneute Training oder Aktualisieren eines Modells des maschinellen Lernens verwendet werden.
  • In mindestens einer Ausführungsform kann das Einsatzsystem 3706 Software 3718, Dienste 3720, Hardware 3722 und/oder andere Komponenten, Merkmale und Funktionalitäten beinhalten. In mindestens einer Ausführungsform kann das Einsatzsystem 3706 einen Software-„Stapel“ beinhalten, sodass die Software 3718 auf den Diensten 3720 aufgebaut sein kann und die Dienste 3720 verwenden kann, um einige oder alle Verarbeitungs-Tasks durchzuführen, und die Dienste 3720 und die Software 3718 können auf der Hardware 3722 aufgebaut sein und die Hardware 3722 verwenden, um Verarbeitungs-, Speicher- und/oder andere Rechen-Tasks des Einsatzsystems 3706 auszuführen.
  • In mindestens einer Ausführungsform kann die Software 3718 eine beliebige Anzahl von verschiedenen Containern beinhalten, wobei jeder Container eine Instanziierung einer Anwendung ausführen kann. In mindestens einer Ausführungsform kann jede Anwendung eine oder mehrere Verarbeitungs-Tasks in einer weiterentwickelten Verarbeitungs- und Inferenzierungspipeline durchführen (z. B. Inferenzierung, Objekterkennung, Merkmalserkennung, Segmentierung, Bildverbesserung, Kalibrierung usw.). In mindestens einer Ausführungsform kann für jeden Typ von Bildgebungsvorrichtung (z. B. CT, MRT, Röntgen, Ultraschall, Sonografie, Echokardiografie usw.), Sequenzierungsvorrichtung, Radiologievorrichtung, Genomikvorrichtung usw. eine beliebige Anzahl von Containern vorhanden sein, die einen Datenverarbeitungs-Task in Bezug auf Bildgebungsdaten 3708 (oder andere Datentypen, wie etwa die hierin beschriebenen), die durch eine Vorrichtung erzeugt werden, durchführen können. In mindestens einer Ausführungsform kann eine weiterentwickelte Verarbeitungs- und Inferenzpipeline auf Grundlage von Auswahlen unterschiedlicher Container definiert werden, die zum Verarbeiten von Bildgebungsdaten 3708 gewünscht oder erforderlich sind, zusätzlich zu Containern, die Bildgebungsdaten zur Verwendung durch jeden Container und/oder zur Verwendung durch die Einrichtung 3702 nach dem Verarbeiten durch eine Pipeline empfangen und konfigurieren (z. B. zur Rückkonvertierung von Ausgaben in einen verwendbaren Datentyp, wie etwa Daten der digitalen Bildgebung und Kommunikation in der Medizin (digital imaging and communications in medicine - DICOM), Daten eines Radiologieinformationssystems (radiology information system - RIS), Daten eines Klinikinformationssystems (clinical information system - CIS), Daten zum Aufruf einer entfernten Prozedur (remote procedure call - RPC), Daten, die im Wesentlichen mit einer Schnittstelle zur Darstellungszustandsübermittlung (representation state transfer - REST) konform sind, Daten, die im Wesentlichen mit einer dateibasierten Schnittstelle konform sind, und/oder Rohdaten, zur Speicherung und Anzeige in der Einrichtung 3702). In mindestens einer Ausführungsform kann eine Kombination von Containern innerhalb der Software 3718 (die z. B. eine Pipeline bilden) als virtuelles Instrument bezeichnet werden (wie hierin detaillierter beschrieben) und ein virtuelles Instrument kann Dienste 3720 und Hardware 3722 ausnutzen, um einige oder alle Verarbeitungs-Tasks von in Containern instanziierten Anwendungen auszuführen.
  • In mindestens einer Ausführungsform kann eine Datenverarbeitungspipeline Eingabedaten (z. B. Bildgebungsdaten 3708) in einem DICOM-, RIS-, CIS-, REST-konformen, RPC-, Roh- und/oder einem anderen Format als Reaktion auf eine Inferenzanforderung (z. B. eine Anforderung von einem Benutzer des Einsatzsystems 3706, wie zum Beispiel einem Kliniker, einem Arzt, einem Radiologen usw.) empfangen. In mindestens einer Ausführungsform können die Eingabedaten ein oder mehrere Bilder, Videos und/oder andere Datendarstellungen darstellen, die von einer oder mehreren Bildgebungsvorrichtungen, Sequenzierungsvorrichtungen, Radiologievorrichtungen, Genomikvorrichtungen und/oder anderen Vorrichtungsarten erzeugt werden. In mindestens einer Ausführungsform können die Daten als Teil der Datenverarbeitungspipeline einer Vorverarbeitung unterzogen werden, um die Daten für die Verarbeitung durch eine oder mehrere Anwendungen vorzubereiten. In mindestens einer Ausführungsform kann eine Nachverarbeitung an einer Ausgabe einer oder mehrerer Inferenzierungs-Tasks oder anderen Verarbeitungs-Tasks einer Pipeline durchgeführt werden, um Ausgabedaten für eine nächste Anwendung vorzubereiten und/oder um Ausgabedaten für die Übertragung und/oder Verwendung durch einen Benutzer vorzubereiten (z. B. als Reaktion auf eine Inferenzierungsanforderung). In mindestens einer Ausführungsform können Ableitungs-Tasks von einem oder mehreren Modellen des maschinellen Lernens ausgeführt werden, z. B. von trainierten oder eingesetzten neuronalen Netzen, die Ausgabemodelle 3716 des Trainingssystems 3704 enthalten können.
  • In mindestens einer Ausführungsform können die Aufgaben der Datenverarbeitungspipeline in einem oder mehreren Containern gekapselt sein, die jeweils eine diskrete, voll funktionsfähige Instanziierung einer Anwendung und einer virtualisierten Rechenumgebung darstellen, die in der Lage ist, auf maschinelle Lernmodelle zu verweisen. In mindestens einer Ausführungsform können Container oder Anwendungen in einem privaten (z. B. zugriffsbeschränkten) Bereich einer Container-Registrierungsdatenbank (hierin detaillierter beschrieben) veröffentlicht werden und trainierte oder eingesetzte Modelle können in der Modellregistrierungsdatenbank 3724 gespeichert und mit einer oder mehreren Anwendungen assoziiert werden. In mindestens einer Ausführungsform können Abbilder von Anwendungen (z. B. Container-Abbilder) in einer Container-Registrierungsdatenbank verfügbar sein und sobald sie von einem Benutzer aus einer Container-Registrierungsdatenbank für den Einsatz in einer Pipeline ausgewählt wurden, kann ein Abbild verwendet werden, um einen Container für eine Instanziierung einer Anwendung zur Verwendung durch das System eines Benutzers zu erzeugen.
  • In mindestens einer Ausführungsform können Entwickler (z. B. Softwareentwickler, Kliniker, Ärzte usw.) Anwendungen (z. B. in Form von Containern) zum Durchführen von Bildverarbeitungsprozessen und/oder Inferenzieren auf zugeführten Daten entwickeln, veröffentlichen und speichern. In mindestens einer Ausführungsform können die Entwicklung, Veröffentlichung und/oder Speicherung unter Verwendung eines Softwareentwicklungskits (software development kit - SDK) durchgeführt werden, das einem System zugeordnet ist (z. B. um sicherzustellen, dass eine Anwendung und/oder ein entwickelter Container mit einem System konform oder kompatibel ist). In mindestens einer Ausführungsform kann eine entwickelte Anwendung lokal (z. B. in einer ersten Einrichtung, an Daten von einer ersten Einrichtung) mit einem SDK getestet werden, das mindestens einige der Dienste 3720 als ein System unterstützen kann (z. B. System 3800 aus 38). Da DICOM-Objekte zwischen einem und Hunderten von Bildern oder anderen Datenarten enthalten können und aufgrund einer Variation der Daten, kann ein Entwickler in mindestens einer Ausführungsform für die Verwaltung (z. B. das Festlegen von Konstrukten für, den Einbau von Vorverarbeitungen in eine Anwendung usw.) der Extraktion und Vorbereitung eingehender DICOM-Daten verantwortlich sein. In mindestens einer Ausführungsform kann eine Anwendung, sobald sie durch das System 3800 validiert wurde (z. B. bezüglich Genauigkeit, Sicherheit, Patientendatenschutz usw.), in einer Containerregistrierungsdatenbank zur Auswahl und/oder Implementation durch einen Benutzer (z. B. ein Krankenhaus, eine Klinik, ein Labor, einen Gesundheitsdienstleister usw.) verfügbar sein, um einen oder mehrere Verarbeitungs-Tasks in Bezug auf Daten in einer Einrichtung (z. B. einer zweiten Einrichtung) eines Benutzers durchzuführen.
  • In mindestens einer Ausführungsform können Entwickler dann Anwendungen oder Container über ein Netz für den Zugriff und die Verwendung durch Benutzer eines Systems (z. B. System 3800 von 38) freigeben. In mindestens einer Ausführungsform können abgeschlossene und validierte Anwendungen oder Container in einer Containerregistrierungsdatenbank gespeichert werden und damit assoziierte Modelle des maschinellen Lernens in der Modellregistrierungsdatenbank 3724 gespeichert werden. In mindestens einer Ausführungsform kann eine anfordernde Entität (z. B. ein Benutzer in einer medizinischen Einrichtung) - die eine Inferenz- oder Bildverarbeitungsanforderung bereitstellt - eine Containerregistrierungsdatenbank und/oder Modellregistrierungsdatenbank 3724 nach einer Anwendung, einem Container, einem Datensatz, einem Modell des maschinellen Lernens usw. durchsuchen, eine gewünschte Kombination von Elementen zur Aufnahme in die Datenverarbeitungspipeline auswählen und eine Bildverarbeitungsanforderung absenden. In mindestens einer Ausführungsform kann eine Anforderung Eingabedaten (und in einigen Beispielen damit assoziierte Patientendaten) enthalten, die zur Durchführung einer Anforderung notwendig sind, und/oder kann eine Auswahl von Anwendungen und/oder Modellen des maschinellen Lernens enthalten, die bei der Verarbeitung einer Anforderung ausgeführt werden sollen. In mindestens einer Ausführungsform kann eine Anforderung dann an eine oder mehrere Komponenten des Einsatzsystems 3706 (z. B. eine Cloud) übergeben werden, um die Verarbeitung der Datenverarbeitungspipeline durchzuführen. In mindestens einer Ausführungsform kann die Verarbeitung durch das Einsatzsystem 3706 die Referenzierung ausgewählter Elemente (z. B. Anwendungen, Container, Modelle usw.) aus einer Containerregistrierungsdatenbank und/oder Modellregistrierungsdatenbank 3724 beinhalten. In mindestens einer Ausführungsform können, sobald Ergebnisse von einer Pipeline erzeugt wurden, die Ergebnisse an einen Benutzer als Referenz zurückgegeben werden (z. B. zur Ansicht in einer Ansichtanwendungssuite, die auf einer lokalen Workstation oder einem lokalen Endgerät vor Ort ausgeführt wird). In mindestens einer Ausführungsform kann ein Radiologe Ergebnisse von einer Datenverarbeitungspipeline empfangen, die eine beliebige Anzahl von Anwendungen und/oder Containern enthält, wobei die Ergebnisse die Erkennung von Anomalien in Röntgenbildern, CT-Scans, MRTs usw. enthalten können.
  • In mindestens einer Ausführungsform können zur Unterstützung der Verarbeitung oder Ausführung von Anwendungen oder Containern in Pipelines Dienste 3720 genutzt werden. In mindestens einer Ausführungsform können die Dienste 3720 Rechendienste, Dienste für künstliche Intelligenz (Kl), Visualisierungsdienste und/oder andere Diensttypen beinhalten. In mindestens einer Ausführungsform können die Dienste 3720 eine Funktionalität bereitstellen, die eine oder mehrere Anwendungen in der Software 3718 gemeinsam haben, sodass die Funktionalität zu einem Dienst abstrahiert werden kann, der durch Anwendungen aufgerufen oder ausgenutzt werden kann. In mindestens einer Ausführungsform kann die durch die Dienste 3720 bereitgestellte Funktionalität dynamisch und effizienter laufen, während sie ebenfalls gut skalierbar ist, indem es Anwendungen erlaubt wird, Daten parallel zu verarbeiten (z. B. unter Verwendung einer Parallelrechenplattform 3830 (38)). Anstatt dass jede Anwendung, die eine gleiche Funktionalität teilt, die durch einen Dienst 3720 angeboten wird, eine entsprechende Instanz des Dienstes 3720 aufweisen muss, kann der Dienst 3720 in mindestens einer Ausführungsform von verschiedenen Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform können die Dienste einen Inferenzierungsserver oder eine Inferenzierungs-Engine beinhalten, der/die als nicht einschränkende Beispiele für die Ausführung von Erkennungs- oder Segmentierungs-Tasks verwendet werden kann. In mindestens einer Ausführungsform kann ein Modelltrainingsdienst enthalten sein, der die Fähigkeit bereitstellen kann, Modelle des maschinellen Lernens zu trainieren und/oder erneut zu trainieren. In mindestens einer Ausführungsform kann ferner ein Datenerweiterungsdienst enthalten sein, der die Extraktion, Größenänderung, Skalierung und/oder andere Erweiterung von GPU-beschleunigten Daten (z. B. DICOM-Daten, RIS-Daten, CIS-Daten, REST-konformen Daten, RPC-Daten, Rohdaten usw.) bereitstellen kann. In mindestens einer Ausführungsform kann ein Visualisierungsdienst verwendet werden, der Bild-Rendering-Effekte - wie etwa Strahlverfolgung, Rasterung, Entrauschen, Schärfung usw. - hinzufügen kann, um zweidimensionale (2D) und/oder dreidimensionale (3D) Modelle realistischer zu gestalten. In mindestens einer Ausführungsform können Dienste für virtuelle Instrumente enthalten sein, die Strahlformung, Segmentierung, Inferenzierung, Bildgebung und/oder Unterstützung für andere Anwendungen innerhalb von Pipelines virtueller Instrumente bereitstellen.
  • In mindestens einer Ausführungsform, in der ein Dienst 3720 einen KI-Dienst (z. B. einen Inferenzdienst) beinhaltet, können ein oder mehrere Modelle des maschinellen Lernens, die mit einer Anwendung zur Anomaliedetektion (z. B. Tumoren, Wachstumsauffälligkeiten, Narbenbildung usw.) assoziiert sind, ausgeführt werden, indem ein Inferenzdienst (z. B. ein Inferenzserver) aufgerufen wird (z. B. als API-Aufruf), um Modelle des maschinellen Lernens oder deren Verarbeitung als Teil der Anwendungsausführung auszuführen. In mindestens einer Ausführungsform, in der eine andere Anwendung ein oder mehrere Modelle des maschinellen Lernens für Segmentierungs-Tasks enthält, kann eine Anwendung einen Inferenzierungsdienst aufrufen, um Modelle des maschinellen Lernens zur Durchführung eines oder mehrerer mit Segmentierungs-Tasks assoziierten Verarbeitungsvorgängen auszuführen. In mindestens einer Ausführungsform kann die Software 3718, die eine weiterentwickelte Verarbeitungs- und Inferenzpipeline implementiert, die eine Segmentierungsanwendung und eine Anomaliedetektionsanwendung beinhaltet, gestrafft werden, da jede Anwendung einen gleichen Inferenzdienst zum Durchführen eines oder mehrerer Inferenz-Tasks aufrufen kann.
  • In mindestens einer Ausführungsform kann die Hardware 3722 GPUs, CPUs, Grafikkarten, ein Kl-/Deep-Learning-System (z. B. einen Kl-Supercomputer wie das DGX-Supercomputersystem von NVIDIA), eine Cloud-Plattform oder eine Kombination davon beinhalten. In mindestens einer Ausführungsform können verschiedene Arten von Hardware 3722 verwendet werden, um eine effiziente, zweckgebundene Unterstützung für Software 3718 und Dienste 3720 im Einsatzsystem 3706 bereitzustellen. In mindestens einer Ausführungsform kann die Verwendung von GPU-Verarbeitung für die Verarbeitung lokal (z. B. in der Einrichtung 3702), innerhalb eines Kl-/Deep-Learning-Systems, in einem Cloud-System und/oder in anderen Verarbeitungskomponenten des Einsatzsystems 3706 implementiert werden, um die Effizienz, Genauigkeit und Wirksamkeit der Bildverarbeitung, Bildrekonstruktion, Segmentierung, MRT-Untersuchungen, Schlaganfall- oder Herzinfarkt-Erkennung (z. B. in Echtzeit), Bildqualität beim Rendering usw. zu verbessern. In mindestens einer Ausführungsform kann eine Einrichtung Bildgebungsvorrichtungen, Genomikvorrichtungen, Sequenzierungsvorrichtungen und/oder andere Vorrichtungen vor Ort beinhalten, die GPUs nutzen können, um Bildgebungsdaten zu erzeugen, die für die Anatomie eines Patienten repräsentativ sind.
  • In mindestens einer Ausführungsform können die Software 3718 und/oder die Dienste 3720 für die GPU-Verarbeitung im Hinblick auf Deep Learning, maschinelles Lernen und/oder Hochleistungsrechnen optimiert sein, als nicht einschränkende Beispiele. In mindestens einer Ausführungsform kann mindestens ein Teil der Rechenumgebung des Einsatzsystems 3706 und/oder des Trainingssystems 3704 in einem Rechenzentrum auf einem oder mehreren Supercomputern oder Rechensystemen mit hoher Rechenleistung mit GPU-optimierter Software (z. B. Hardware- und Software-Kombination des DGX-Systems von NVIDIA) ausgeführt werden. In mindestens einer Ausführungsform können Rechenzentren mit HIPAA-Bestimmungen konform sein, sodass der Empfang, die Verarbeitung und die Übertragung von Bildgebungsdaten und/oder anderen Patientendaten in Bezug auf den Schutz von Patientendaten sicher gehandhabt werden. In mindestens einer Ausführungsform kann die Hardware 3722 eine beliebige Anzahl von GPUs beinhalten, die zur parallelen Verarbeitung von Daten, wie hierin beschrieben, herangezogen werden können. In mindestens einer Ausführungsform kann die Cloud-Plattform ferner GPU-Verarbeitung für die GPU-optimierte Ausführung von Deep-Learning-Tasks, Tasks des maschinellen Lernens oder anderen Rechen-Tasks beinhalten. In mindestens einer Ausführungsform kann die Cloud-Plattform (z. B. NGC von NVIDIA) unter Verwendung von KI-/Deep-Learning-Supercomputern und/oder GPU-optimierter Software (z. B. wie auf DGX-Systemen von NVIDIA bereitgestellt) als Hardware-Abstraktions- und - Skalierungsplattform ausgeführt werden. In mindestens einer Ausführungsform kann die Cloud-Plattform ein Anwendungscontainer-Clustering-System oder ein Orchestrierungssystem (z. B. KUBERNETES) auf mehreren GPUs integrieren, um eine nahtlose Skalierung und Lastverteilung zu ermöglichen.
  • 38 ist eine Systemdarstellung für ein beispielhaftes System 3800 zum Erzeugen und Einsetzen einer Bildgebungseinsatzpipeline gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das System 3800 verwendet werden, um den Prozess 3700 aus 37 und/oder andere Prozesse, einschließlich weiterentwickelter Verarbeitungs- und Inferenzpipelines, zu implementieren. In mindestens einer Ausführungsform kann das System 3800 das Trainingssystem 3704 und das Einsatzsystem 3706 beinhalten. In mindestens einer Ausführungsform können das Trainingssystem 3704 und das Einsatzsystem 3706 unter Verwendung von Software 3718, Diensten 3720 und/oder Hardware 3722, wie hierin beschrieben, implementiert werden.
  • In mindestens einer Ausführungsform kann das System 3800 (z. B. das Trainingssystem 3704 und/oder das Einsatzsystem 3706) in einer Rechenumgebung in der Cloud (z. B. unter Verwendung der Cloud 3826) implementiert werden. In mindestens einer Ausführungsform kann das System 3800 lokal in Bezug auf eine Einrichtung des Gesundheitswesens oder als Kombination aus sowohl Cloud- als auch lokalen Rechenressourcen implementiert werden. In mindestens einer Ausführungsform können in Ausführungsformen, in denen Cloud Computing implementiert ist, Patientendaten von einer oder mehreren Komponenten des Systems 3800 getrennt oder nicht durch diese verarbeitet werden, was die Verarbeitung nicht konform mit HIPAA- und/oder anderen Vorschriften oder Gesetzen zur Datenhandhabung und zum Datenschutz machen würde. In mindestens einer Ausführungsform kann der Zugriff auf die APIs in der Cloud 3826 durch erlassene Sicherheitsmaßnahmen oder -protokolle auf autorisierte Benutzer beschränkt sein. In mindestens einer Ausführungsform kann ein Sicherheitsprotokoll Web-Token beinhalten, die von einem Authentifizierungsdienst (z. B. AuthN, AuthZ, Gluecon usw.) signiert sein können und eine entsprechende Autorisierung tragen können. In mindestens einer Ausführungsform können APIs von virtuellen Instrumenten (hierin beschrieben) oder anderen Instanziierungen des Systems 3800 auf einen Satz von öffentlichen IPs beschränkt sein, die für die Interaktion sicherheitsüberprüft oder autorisiert wurden.
  • In mindestens einer Ausführungsform können verschiedene Komponenten des Systems 3800 unter Verwendung einer Vielzahl verschiedener Netzarten, die unter anderem lokale Netze (LANs) und/oder Weitverkehrsnetze (WANs) beinhalten, über verdrahtete und/oder drahtlose Kommunikationsprotokolle miteinander kommunizieren. In mindestens einer Ausführungsform kann die Kommunikation zwischen Einrichtungen und Komponenten des Systems 3800 (z. B. zum Übertragen von Inferenzanforderungen, zum Empfangen von Ergebnissen von Inferenzanforderungen usw.) über einen Datenbus oder Datenbusse, drahtlose Datenprotokolle (Wi-Fi), drahtgebundene Datenprotokolle (z. B. Ethernet) usw. kommuniziert werden.
  • In mindestens einer Ausführungsform kann das Trainingssystem 3704 Trainingspipelines 3804 ausführen, die denen ähnlich sind, die hierin in Bezug auf 37 beschrieben sind. In mindestens einer Ausführungsform, in der ein oder mehrere Modelle des maschinellen Lernens in Einsatzpipelines 3810 durch das Einsatzsystem 3706 verwendet werden sollen, können Trainingspipelines 3804 verwendet werden, um ein oder mehrere (z. B. vorab trainierte) Modelle zu trainieren oder erneut zu trainieren und/oder eines oder mehrere der vorab trainierten Modelle 3806 zu implementieren (z. B. ohne eine Notwendigkeit eines erneuten Trainings oder einer Aktualisierung). In mindestens einer Ausführungsform können als Ergebnis der Trainingspipelines 3804 Ausgabemodelle 3716 erzeugt werden. In mindestens einer Ausführungsform können die Trainingspipelines 3804 eine beliebige Anzahl von Verarbeitungsschritten beinhalten, zum Beispiel, aber nicht beschränkt auf, die Konvertierung oder Anpassung von Bildgebungsdaten (oder anderen Eingabedaten) (z. B. unter Verwendung eines DICOM-Adapters 3802A zum Konvertieren von DICOM-Bildern in ein anderes Format, das für die Verarbeitung durch jeweilige Modelle des maschinellen Lernens geeignet ist, wie etwa das Format der Neuroimaging Informatics Technology Initiative (NlfTI)), Kt-gestützte Annotation 3710, Beschriftung oder Annotation von Bildgebungsdaten 3708, um beschriftete Klinikdaten 3712 zu erzeugen, Modellauswahl aus einer Modellregistrierungsdatenbank, Modelltraining 3714, Training, erneutes Training oder Aktualisieren von Modellen und/oder andere Verarbeitungsschritte. In mindestens einer Ausführungsform können für unterschiedliche Modelle des maschinellen Lernens, die durch das Einsatzsystem 3706 verwendet werden, unterschiedliche Trainingspipelines 3804 verwendet werden. In mindestens einer Ausführungsform kann für ein erstes Modell des maschinellen Lernens eine Trainingspipeline 3804 verwendet werden, die einem ersten Beispiel ähnlich ist, das in Bezug auf 37 beschrieben ist, für ein zweites Modell des maschinellen Lernens eine Trainingspipeline 3804 verwendet werden, die einem zweiten Beispiel ähnlich ist, das in Bezug auf 37 beschrieben ist, und für ein drittes Modell des maschinelles Lernens eine Trainingspipeline 3804 verwendet werden, die einem dritten Beispiel ähnlich ist, das in Bezug auf 37 beschrieben ist. In mindestens einer Ausführungsform kann eine beliebige Kombination von Tasks innerhalb des Trainingssystems 3704 verwendet werden, in Abhängigkeit davon, was für jedes jeweilige Modell des maschinellen Lernens erforderlich ist. In mindestens einer Ausführungsform können eines oder mehrere der Modelle des maschinellen Lernens bereits trainiert und einsatzbereit sein, sodass die Modelle des maschinellen Lernens möglicherweise keiner Verarbeitung durch das Trainingssystem 3704 unterzogen werden und durch das Einsatzsystem 3706 implementiert werden können.
  • In mindestens einer Ausführungsform können die Ausgabemodelle 3716 und/oder die vorab trainierten Modelle 3806 alle Arten von maschinellen Lernmodellen beinhalten, je nach Implementierung oder Ausführungsform. In mindestens einer Ausführungsform und ohne Einschränkung können durch das System 3800 verwendete maschinelle Lernmodelle des maschinellen Lernens unter Verwendung von linearer Regression, logistischer Regression, Entscheidungsbäumen, Stützvektormaschinen (support vector machines - SVM), naivem Bayes-Klassifikator, k-nächstem Nachbarn (k-nearest neighbor - Knn), K-Means-Clustering, Random Forest, Dimensionsreduktionsalgorithmen, Gradientenverstärkungsalgorithmen, neuronalen Netzen (z. B. Autocodierern, faltenden, rekurrenten, Perzeptronen, langem Kurzzeitgedächtnis (Long/Short Term Memory - LSTM), Hopfield, Boltzmann, Deep Belief, entfaltenden, erzeugenden gegnerischen, Flüssigkeitszustandsmaschine usw.) und/oder andere Typen von Modellen des maschinellen Lernens beinhalten.
  • In mindestens einer Ausführungsform können die Trainingspipelines 3804 eine Kl-gestützte Anmerkung beinhalten, wie hierin in Bezug auf mindestens 41B ausführlicher beschrieben. In mindestens einer Ausführungsform können beschriftete Klinikdaten 3712 (z. B. herkömmliche Annotation) durch eine beliebige Anzahl von Techniken erzeugt werden. In mindestens einer Ausführungsform können Markierungen oder andere Annotationen in einem Zeichenprogramm (z. B. einem Annotationsprogramm), einem Programm zur computergestützten Konstruktion (Computer Aided Design - CAD), einem Markierungsprogramm, einer anderen Art von Programm, das zur Erzeugung von Annotationen oder Markierungen für Ground Truth geeignet ist, erzeugt werden und/oder in einigen Beispielen von Hand gezeichnet werden. In mindestens einer Ausführungsform können die Ground-Truth-Daten synthetisch produziert (z. B. aus Computermodellen oder Renderings), real produziert (z. B. aus Daten der realen Welt konstruiert und produziert), maschinell automatisiert (z. B. unter Verwendung von Merkmalsanalyse und Lernen, um Merkmale aus den Daten zu extrahieren und dann Markierungen zu erzeugen), von Menschen annotiert (z. B. definiert ein Markierer oder Annotationsexperte die Position der Markierungen) und/oder eine Kombination davon sein. In mindestens einer Ausführungsform können für jede Instanz der Bildgebungsdaten 3708 (oder eines anderen Datentyps, der durch Modelle des maschinellen Lernens verwendet wird) entsprechende Ground-Truth-Daten vorhanden sein, die durch das Trainingssystem 3704 erzeugt werden. In mindestens einer Ausführungsform kann die KI-gestützte Annotation als Teil der Einsatzpipelines 3810 durchgeführt werden; entweder zusätzlich zu oder anstelle der Kl-gestützten Annotation, die in den Trainingspipelines 3804 enthalten ist. In mindestens einer Ausführungsform kann das System 3800 eine mehrschichtige Plattform beinhalten, die eine Software-Schicht (z. B. Software 3718) von Diagnoseanwendungen (oder anderen Anwendungstypen) beinhalten kann, die eine oder mehrere medizinische Bildgebungs- und Diagnosefunktionen durchführen kann. In mindestens einer Ausführungsform kann das System 3800 kommunikativ an (z. B. über verschlüsselte Verknüpfungen) PACS-Servernetze einer oder mehrerer Einrichtungen gekoppelt sein. In mindestens einer Ausführungsform kann das System 3800 so konfiguriert sein, dass es auf Daten (z. B. DICOM-Daten, RIS-Daten, Rohdaten, CIS-Daten, REST-konforme Daten, RPC-Daten, Rohdaten usw.) von PACS-Servern zugreift und diese referenziert (z. B. über einen DICOM-Adapter 3802 oder einen Adapter für einen anderen Datentyp, wie etwa RIS, CIS, REST-konform, RPC, Rohdaten usw.), um Operationen durchzuführen, wie etwa Trainieren von Modellen des maschinellen Lernens, Einsetzen von Modellen des maschinellen Lernens, Bildverarbeitung, Inferenzieren und/oder andere Operationen.
  • In mindestens einer Ausführungsform kann eine Software-Schicht als sichere, verschlüsselte und/oder authentifizierte API implementiert werden, über die Anwendungen oder Container von einer oder mehreren externen Umgebungen (z. B. Einrichtung 3702) gerufen (z. B. aufgerufen) werden können. In mindestens einer Ausführungsform können Anwendungen dann einen oder mehrere Dienste 3720 aufrufen oder ausführen, um Rechen-, Kl- oder Visualisierungs-Tasks durchzuführen, die mit jeweiligen Anwendungen assoziiert sind, und die Software 3718 und/oder die Dienste 3720 können die Hardware 3722 ausnutzen, um Verarbeitungs-Tasks auf effektive und effiziente Weise durchzuführen.
  • In mindestens einer Ausführungsform kann das Einsatzsystem 3706 Einsatzpipelines 3810 ausführen. In mindestens einer Ausführungsform können Einsatzpipelines 3810 eine beliebige Anzahl von Anwendungen beinhalten, die sequenziell, nicht sequenziell oder auf andere Weise auf Bildgebungsdaten (und/oder andere Datentypen) angewendet werden können, die durch Bildgebungsvorrichtungen, Sequenzierungsvorrichtungen, Genomikvorrichtungen usw. erzeugt werden - einschließlich Kt-gestützter Annotation, wie vorstehend beschrieben. In mindestens einer Ausführungsform, wie hierin beschrieben, kann eine Einsatzpipeline 3810 für eine einzelne Vorrichtung als virtuelles Instrument für eine Vorrichtung bezeichnet werden (z. B. ein virtuelles Ultraschallinstrument, ein virtuelles CT-Scan-Instrument, ein virtuelles Sequenzierungsinstrument usw.). In mindestens einer Ausführungsform kann für eine einzelne Vorrichtung in Abhängigkeit von Informationen, die von Daten gewünscht sind, die durch eine Vorrichtung erzeugt wurden, mehr als eine Einsatzpipeline 3810 vorhanden sein. Wenn Detektionen von Anomalien anhand einer MRT-Maschine gewünscht sind, kann in mindestens einer Ausführungsform eine erste Einsatzpipeline 3810 vorhanden sein, und wenn Bildverbesserung anhand einer Ausgabe einer MRT-Maschine gewünscht ist, kann eine zweite Einsatzpipeline 3810 vorhanden sein.
  • In mindestens einer Ausführungsform können die für Einsatzpipelines 3810 verfügbaren Anwendungen alle Anwendungen beinhalten, die zum Ausführen von Verarbeitungsaufgaben an Bildgebungsdaten oder anderen Daten von Vorrichtungen verwendet werden können. In mindestens einer Ausführungsform können unterschiedliche Anwendungen für die Bildverbesserung, Segmentierung, Rekonstruktion, Anomalieerkennung, Objekterkennung, Merkmalserkennung, Behandlungsplanung, Dosimetrie, Strahlenplanung (oder andere Strahlenbehandlungsprozeduren) und/oder andere Analyse-, Bildverarbeitungs- oder Inferenzierungs-Tasks zuständig sein. In mindestens einer Ausführungsform kann das Einsatzsystem 3706 Konstrukte für jede der Anwendungen definieren, sodass die Benutzer des Einsatzsystems 3706 (z. B. medizinische Einrichtungen, Labors, Kliniken usw.) die Konstrukte verstehen und die Anwendungen für die Implementation innerhalb ihrer jeweiligen Einrichtung anpassen können. In mindestens einer Ausführungsform kann eine Anwendung zur Bildrekonstruktion für die Aufnahme in die Einsatzpipeline 3810 ausgewählt werden, doch der durch eine Bildgebungsvorrichtung erzeugte Datentyp kann sich von einem innerhalb einer Anwendung verwendeten Datentyp unterscheiden. In mindestens einer Ausführungsform kann der DICOM-Adapter 3802B (und/oder ein DICOM-Lesegerät) oder ein Adapter oder ein Lesegerät für einen anderen Datentyp (z. B. RIS, CIS, REST-konform, RPC, Rohdaten usw.) innerhalb der Einsatzpipeline 3810 verwendet werden, um Daten in eine Form zu konvertieren, die durch eine Anwendung innerhalb des Einsatzsystems 3706 verwendet werden kann. In mindestens einer Ausführungsform kann der Zugriff auf DICOM-, RIS-, CIS-, REST-konforme, RPC-, Rohdaten- und/oder andere Datenartbibliotheken akkumuliert und vorverarbeitet werden, einschließlich der Decodierung, Extraktion und/oder Durchführung von Faltungen, Farbkorrekturen, Schärfe-, Gamma- und/oder anderen Augmentationen der Daten. In mindestens einer Ausführungsform können DICOM-, RIS-, CIS-, REST-konforme, RPC- und/oder Rohdaten ungeordnet sein und kann ein Vorlauf ausgeführt werden, um gesammelte Daten zu organisieren oder zu sortieren. Da verschiedene Anwendungen in mindestens einer Ausführungsform Bildoperationen gemeinsam nutzen können, kann in einigen Ausführungsformen eine Datenerweiterungsbibliothek (z. B. als einer der Dienste 3720) verwendet werden, um diese Operationen zu beschleunigen. In mindestens einer Ausführungsform kann zur Vermeidung von Engpässen herkömmlicher Verarbeitungsansätze, die sich auf CPU-Verarbeitung stützen, die Parallelrechenplattform 3830 zur GPU-Beschleunigung dieser Verarbeitungs-Tasks verwendet werden.
  • In mindestens einer Ausführungsform kann eine Bildrekonstruktionsanwendung eine Verarbeitungsaufgabe beinhalten, die die Verwendung eines maschinellen Lernmodells beinhaltet. In mindestens einer Ausführungsform kann ein Benutzer sein eigenes Modell des maschinellen Lernens verwenden oder ein Modell des maschinellen Lernens aus der Modellregistrierungsdatenbank 3724 auswählen wollen. In mindestens einer Ausführungsform kann ein Benutzer sein eigenes Modell des maschinellen Lernens implementieren oder ein Modell des maschinellen Lernens zur Aufnahme in eine Anwendung zur Durchführung einer Verarbeitungs-Task auswählen. In mindestens einer Ausführungsform können die Anwendungen auswählbar und anpassbar sein und durch die Definition von Konstrukten von Anwendungen werden der Einsatz und die Implementation von Anwendungen für einen bestimmten Benutzer als eine nahtlosere Benutzererfahrung dargestellt. In mindestens einer Ausführungsform können Einsatzpipelines 3810 durch Ausnutzen anderer Merkmale des Systems 3800 - wie etwa der Dienste 3720 und der Hardware 3722 - noch benutzerfreundlicher sein, eine einfachere Integration bereitstellen und genauere, effizientere und raschere Ergebnisse produzieren.
  • In mindestens einer Ausführungsform kann das Einsatzsystem 3706 eine Benutzerschnittstelle 3814 (z. B. eine grafische Benutzerschnittstelle, eine Webschnittstelle usw.) beinhalten, die dazu verwendet werden kann, Anwendungen zur Aufnahme in die Einsatzpipelines 3810 auszuwählen, Anwendungen anzuordnen, Anwendungen oder Parameter oder Konstrukte davon zu modifizieren oder zu ändern, die Einsatzpipelines 3810 während der Einrichtung und/oder des Einsatzes zu verwenden und mit ihr zu interagieren und/oder anderweitig mit dem Einsatzsystem 3706 zu interagieren. In mindestens einer Ausführungsform, obwohl nicht in Bezug auf das Trainingssystem 3704 veranschaulicht, kann die Benutzerschnittstelle 3814 (oder eine andere Benutzerschnittstelle) zum Auswählen von Modellen für die Verwendung in dem Einsatzsystem 3706, zum Auswählen von Modellen für das Training oder das erneute Training in dem Trainingssystem 3704 und/oder zum anderweitigen Interagieren mit dem Trainingssystem 3704 verwendet werden.
  • In mindestens einer Ausführungsform kann der Pipelineverwalter 3812 zusätzlich zu einem Anwendungsorchestrierungssystem 3828 verwendet werden, um die Interaktion zwischen Anwendungen oder Containern der Einsatzpipelines 3810 und Diensten 3720 und/oder Hardware 3722 zu verwalten. In mindestens einer Ausführungsform kann der Pipelineverwalter 3812 so konfiguriert sein, dass er Interaktionen von Anwendung zu Anwendung, von Anwendung zu Dienst 3720 und/oder von Anwendung oder Dienst zu Hardware 3722 erleichtert. Obwohl er der Veranschaulichung nach in der Software 3718 enthalten ist, soll dies in mindestens einer Ausführungsform nicht einschränkend sein und in einigen Beispielen (wie z. B. in 39 veranschaulicht) kann der Pipelineverwalter 3812 in den Diensten 3720 enthalten sein. In mindestens einer Ausführungsform kann das Anwendungsorchestrierungssystem 3828 (z. B. Kubernetes, DOCKER usw.) ein Container-Orchestrierungssystem beinhalten, das Anwendungen zu Containern als logische Einheiten zur Koordination, Verwaltung, Skalierung und zum Einsatz gruppieren kann. In mindestens einer Ausführungsform kann durch das Assoziieren von Anwendungen aus den Einsatzpipelines 3810 (z. B. einer Rekonstruktionsanwendung, einer Segmentierungsanwendung usw.) mit einzelnen Containern jede Anwendung in einer in sich geschlossenen Umgebung (z. B. auf Kernel-Level) ausgeführt werden, um die Geschwindigkeit und Effizienz zu erhöhen.
  • In mindestens einer Ausführungsform kann jede Anwendung und/oder jeder Container (oder ein Abbild davon) individuell entwickelt, modifiziert und eingesetzt werden (z. B. kann ein erster Benutzer oder Entwickler eine erste Anwendung entwickeln, modifizieren und einsetzen, und ein zweiter Benutzer oder Entwickler kann eine zweite Anwendung separat von einem ersten Benutzer oder Entwickler entwickeln, modifizieren und einsetzen), was es ermöglicht, sich auf eine Aufgabe einer einzelnen Anwendung und/oder eines einzelnen Containers zu konzentrieren, ohne durch Aufgaben einer anderen Anwendung oder eines anderen Containers behindert zu werden. In mindestens einer Ausführungsform kann die Kommunikation und Kooperation zwischen unterschiedlichen Containern oder Anwendungen durch den Pipelineverwalter 3812 und das Anwendungsorchestrierungssystem 3828 unterstützt werden. In mindestens einer Ausführungsform kann, solange eine erwartete Eingabe und/oder Ausgabe jedes Containers oder jeder Anwendung einem System bekannt ist (z. B. auf Grundlage von Konstrukten von Anwendungen oder Containern), das Anwendungsorchestrierungssystem 3828 und/oder der Pipelineverwalter 3812 die Kommunikation unter und zwischen jedem der Anwendungen oder Container sowie die gemeinsame Nutzung von Ressourcen unter und zwischen diesen erleichtern. Da eine oder mehrere Anwendungen oder Container in den Einsatzpipelines 3810 gleiche Dienste und Ressourcen gemeinsam nutzen können, kann das Anwendungsorchestrierungssystem 3828 in mindestens einer Ausführungsform die gemeinsame Nutzung von Diensten oder Ressourcen zwischen und unter verschiedenen Anwendungen oder Containern orchestrieren, deren Last verteilen und bestimmen. In mindestens einer Ausführungsform kann ein Scheduler verwendet werden, um den Ressourcenbedarf von Anwendungen oder Containern, die aktuelle Nutzung oder geplante Nutzung dieser Ressourcen und die Ressourcenverfügbarkeit zu verfolgen. In mindestens einer Ausführungsform kann ein Scheduler somit Ressourcen unterschiedlichen Anwendungen zuweisen und Ressourcen zwischen und unter Anwendungen im Hinblick auf Bedarf und Verfügbarkeit eines Systems verteilen. In einigen Beispielen kann ein Scheduler (und/oder eine andere Komponente des Anwendungsorchestrierungssystems 3828) die Ressourcenverfügbarkeit und -verteilung auf Grundlage von Beschränkungen bestimmen, die einem System auferlegt werden (z. B. Benutzerbeschränkungen), wie etwa Dienstgüte (QoS), Dringlichkeit des Bedarfs an Datenausgaben (um z. B. zu bestimmen, ob Echtzeitverarbeitung oder verzögerte Verarbeitung ausgeführt werden soll) usw.
  • In mindestens einer Ausführungsform können die Dienste 3720, die durch Anwendungen oder Container in dem Einsatzsystem 3706 ausgenutzt und gemeinsam genutzt werden, Rechendienste 3816, KI-Dienste 3818, Visualisierungsdienste 3820 und/oder andere Diensttypen beinhalten. In mindestens einer Ausführungsform können Anwendungen einen oder mehrere der Dienste 3720 aufrufen (z. B. ausführen), um Verarbeitungsoperationen für eine Anwendung durchzuführen. In mindestens einer Ausführungsform können die Rechendienste 3816 durch Anwendungen ausgenutzt werden, um Superrechnen oder andere Tasks des Hochleistungsrechnens (HPC) durchzuführen. In mindestens einer Ausführungsform können die Rechendienste 3816 ausgenutzt werden, um Parallelverarbeitung (z. B. unter Verwendung einer Parallelrechenplattform 3830) zum Verarbeiten von Daten durch eine oder mehrere Anwendungen und/oder einen oder mehrere Tasks einer einzelnen Anwendung im Wesentlichen simultan durchzuführen. In mindestens einer Ausführungsform kann die Parallelrechenplattform 3830 (z. B. CUDA von NVIDIA) Universaldatenverarbeitung auf GPUs (GPGPU) ermöglichen (z. B. GPUs 3822). In mindestens einer Ausführungsform kann eine Software-Schicht der Parallelrechenplattform 3830 Zugriff auf virtuelle Anweisungssätze und Parallelberechnungselemente von GPUs zur Ausführung von Rechenkernels bereitstellen. In mindestens einer Ausführungsform kann die Parallelrechenplattform 3830 Speicher beinhalten und in einigen Ausführungsformen kann ein Speicher zwischen und unter mehreren Containern und/oder zwischen und unter unterschiedlichen Verarbeitungs-Tasks innerhalb eines einzelnen Containers gemeinsam genutzt werden. In mindestens einer Ausführungsform können Aufrufe für Interprozesskommunikation (inter-process communication - IPC) für mehrere Container und/oder für mehrere Prozesse innerhalb eines Containers erzeugt werden, um gleiche Daten aus einem gemeinsam genutzten Speichersegment der Parallelrechenplattform 3830 zu verwenden (z. B., wenn mehrere unterschiedliche Stufen einer Anwendung oder mehrere Anwendungen gleiche Informationen verarbeiten). In mindestens einer Ausführungsform können dieselben Daten an demselben Speicherort für eine beliebige Anzahl von Verarbeitungs-Tasks verwendet werden (z. B. zur selben Zeit, zu unterschiedlichen Zeiten usw.), anstatt eine Kopie der Daten zu erstellen und die Daten an unterschiedliche Orte im Speicher zu verschieben (z. B. ein Lese-/Schreibvorgang). In mindestens einer Ausführungsform können, da Daten verwendet werden, um neue Daten als Ergebnis der Verarbeitung zu generieren, diese Informationen über einen neuen Ort von Daten gespeichert und von verschiedenen Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform kann ein Ort der Daten und ein Ort von aktualisierten oder modifizierten Daten Teil einer Definition sein, wie Nutzdaten innerhalb von Containern zu verstehen sind.
  • In mindestens einer Ausführungsform können KI-Dienste 3818 genutzt werden, um Inferenzieren für die Ausführung von maschinellen Lernmodellen durchzuführen, die mit Anwendungen verbunden sind (z. B. mit der Aufgabe, eine oder mehrere Verarbeitungsaufgaben einer Anwendung auszuführen). In mindestens einer Ausführungsform können die KI-Dienste 3818 das KI-System 3824 ausnutzen, um Modelle des maschinellen Lernens (z. B. neuronale Netze wie etwa CNNs) für Segmentierung, Rekonstruktion, Objektdetektion, Merkmalsdetektion, Klassifizierung und/oder andere Inferenz-Tasks auszuführen. In mindestens einer Ausführungsform können die Anwendungen der Einsatzpipelines 3810 eines oder mehrere der Ausgabemodelle 3716 aus dem Trainingssystem 3704 und/oder andere Modelle der Anwendungen verwenden, um Inferenz an Bildgebungsdaten (z. B. DICOM-Daten, RIS-Daten, CIS-Daten, REST-konformen Daten, RPC-Daten, Rohdaten usw.) durchzuführen. In mindestens einer Ausführungsform können zwei oder mehr Beispiele für das Inferenzieren unter Verwendung des Anwendungsorchestrierungssystems 3828 (z. B. eines Schedulers) verfügbar sein. In mindestens einer Ausführungsform kann eine erste Kategorie einen Pfad mit hoher Priorität/geringer Latenz beinhalten, der höhere Service Level Agreements erreichen kann, z. B. für die Durchführung von Inferenzierungen bei dringenden Anforderungen während eines Notfalls oder für einen Radiologen während der Diagnose. In mindestens einer Ausführungsform kann eine zweite Kategorie einen Pfad mit Standardpriorität beinhalten, der für Anfragen verwendet werden kann, die nicht dringend sind oder bei denen die Analyse zu einem späteren Zeitpunkt durchgeführt werden kann. In mindestens einer Ausführungsform kann das Anwendungsorchestrierungssystem 3828 Ressourcen (z. B. Dienste 3720 und/oder Hardware 3722) auf Grundlage von Prioritätspfaden für unterschiedliche Inferenz-Tasks der KI-Dienste 3818 verteilen.
  • In mindestens einer Ausführungsform kann der gemeinsam genutzte Speicher an die KI-Dienste 3818 innerhalb des Systems 3800 angebunden sein. In mindestens einer Ausführungsform kann der gemeinsam genutzte Datenspeicher als ein Cache (oder eine andere Speichervorrichtungsart) arbeiten und zur Verarbeitung von Inferenzierungsanforderungen von Anwendungen verwendet werden. In mindestens einer Ausführungsform kann, wenn eine Inferenzanforderung abgesendet wird, eine Anforderung durch einen Satz von API-Instanzen des Einsatzsystems 3706 empfangen werden und eine oder mehrere Instanzen können ausgewählt werden (z. B. für beste Anpassung, für Lastverteilung usw.), um eine Anforderung zu verarbeiten. In mindestens einer Ausführungsform kann zum Verarbeiten einer Anforderung eine Anforderung in eine Datenbank eingegeben werden, ein Modell des maschinellen Lernens kann aus der Modellregistrierungsdatenbank 3724 lokalisiert werden, falls es sich nicht bereits in einem Cache befindet, ein Validierungsschritt kann sicherstellen, dass ein zweckmäßiges Modell des maschinellen Lernens in einen Cache (z. B. einen gemeinsam genutzten Datenspeicher) geladen wird, und/oder eine Kopie eines Modells kann in einem Cache gesichert werden. In mindestens einer Ausführungsform kann ein Scheduler (z. B. des Pipelineverwalters 3812) verwendet werden, um eine Anwendung zu starten, auf die in einer Anforderung verwiesen wird, falls eine Anwendung nicht bereits läuft oder falls nicht genügend Instanzen einer Anwendung vorhanden sind. In mindestens einer Ausführungsform kann ein Inferenzierungsserver gestartet werden, wenn ein Inferenzierungsserver zur Ausführung eines Modells nicht bereits gestartet ist. In mindestens einer Ausführungsform kann pro Modell eine beliebige Anzahl von Inferenzservern gestartet werden. In mindestens einer Ausführungsform können in einem Pull-Modell, in dem Inferenzserver geclustert sind, Modelle zwischengespeichert werden, wann immer eine Lastverteilung vorteilhaft ist. In mindestens einer Ausführungsform können Inferenzserver statisch in entsprechende, verteilte Server geladen werden.
  • In mindestens einer Ausführungsform kann die Inferenzierung mithilfe eines Inferenzservers durchgeführt werden, der in einem Container ausgeführt wird. In mindestens einer Ausführungsform kann eine Instanz eines Inferenzservers mit einem Modell (und optional einer Vielzahl von Versionen eines Modells) assoziiert sein. In mindestens einer Ausführungsform kann, falls eine Instanz eines Inferenzservers nicht existiert, wenn eine Anforderung zum Durchführen einer Inferenz an einem Modell empfangen wird, eine neue Instanz geladen werden. In mindestens einer Ausführungsform kann beim Starten eines Inferenzservers ein Modell an einen Inferenzserver übergeben werden, sodass der gleiche Container zum Bedienen unterschiedlicher Modelle verwendet werden kann, solange der Inferenzserver als andere Instanz läuft.
  • In mindestens einer Ausführungsform kann während der Anwendungsausführung eine Inferenzanforderung für eine gegebene Anwendung empfangen werden und ein Container (der z. B. eine Instanz eines Inferenzservers hostet) geladen (falls noch nicht geschehen) und eine Startprozedur aufgerufen werden. In mindestens einer Ausführungsform kann Vorverarbeitungslogik in einem Container eingehende Daten laden, decodieren und/oder beliebige zusätzliche Vorverarbeitung an diesen durchführen (z. B. unter Verwendung von CPUs und/oder GPUs). In mindestens einer Ausführungsform kann ein Container, sobald die Daten für die Inferenz vorbereitet sind, eine Inferenz nach Bedarf an den Daten durchführen. In mindestens einer Ausführungsform kann dies einen einzelnen Inferenzaufruf an einem Bild (z. B. einem Handröntgenbild) beinhalten oder Inferenz an Hunderten von Bildern (z. B. einem Brust-CT) erfordern. In mindestens einer Ausführungsform kann eine Anwendung Ergebnisse vor dem Abschluss zusammenfassen, was ohne Einschränkung eine einzelne Konfidenzbewertung, eine Segmentierung auf Pixellevel, eine Segmentierung auf Voxellevel, das Generieren einer Visualisierung oder das Generieren von Text zum Zusammenfassen von Befunden beinhalten kann. In mindestens einer Ausführungsform können unterschiedlichen Modellen oder Anwendungen unterschiedliche Prioritäten zugeordnet werden. Zum Beispiel können einige Modelle eine Echtzeitpriorität (TAT weniger als eine Minute) aufweisen, während andere eine niedrigere Priorität aufweisen können (z. B. TAT weniger als 10 Minuten). In mindestens einer Ausführungsform können die Modellausführungszeiten von der anfordernden Institution oder Entität gemessen werden und können die Zeit für die Durchquerung des Partnernetzes sowie die Ausführung auf einem Inferenzierungsdienst beinhalten.
  • In mindestens einer Ausführungsform kann die Übermittlung von Anforderungen zwischen den Diensten 3720 und den Inferenzanwendungen hinter einem Software-Entwicklungskit (SDK) verborgen sein und der robuste Transport durch eine Warteschlange bereitgestellt sein. In mindestens einer Ausführungsform wird eine Anforderung über eine API für eine individuelle Anwendungs-/Tenant-ID-Kombination in eine Warteschlange gestellt und zieht ein SDK eine Anforderung aus einer Warteschlange und gibt eine Anforderung an eine Anwendung weiter. In mindestens einer Ausführungsform kann ein Name einer Warteschlange in einer Umgebung bereitgestellt sein, aus der ein SDK diesen aufnimmt. In mindestens einer Ausführungsform kann die asynchrone Kommunikation durch eine Warteschlange nützlich sein, da sie es einer beliebigen Instanz einer Anwendung ermöglichen kann, die Arbeit aufzunehmen, sobald sie verfügbar wird. In mindestens einer Ausführungsform können die Ergebnisse durch eine Warteschlange zurück übermittelt werden, um sicherzustellen, dass keine Daten verloren gehen. In mindestens einer Ausführungsform können Warteschlangen auch eine Fähigkeit bereitstellen, Arbeit zu segmentieren, da Arbeit mit höchster Priorität an eine Warteschlange gehen kann, mit der die meisten Instanzen einer Anwendung verbunden sind, während Arbeit mit niedrigster Priorität an eine Warteschlange gehen kann, mit der nur eine einzelne Instanz verbunden ist, die Tasks in der empfangenen Reihenfolge verarbeitet. In mindestens einer Ausführungsform kann eine Anwendung auf einer GPU-beschleunigten Instanz laufen, die in der Cloud 3826 erzeugt wurde, und ein Inferenzdienst kann das Inferenzieren auf einer GPU durchführen.
  • In mindestens einer Ausführungsform können Visualisierungsdienste 3820 genutzt werden, um Visualisierungen zur Anzeige der Ausgaben von Anwendungen und/oder Einsatzpipelines 3810 zu erzeugen. In mindestens einer Ausführungsform können die GPUs 3822 durch die Visualisierungsdienste 3820 ausgenutzt werden, um Visualisierungen zu erzeugen. In mindestens einer Ausführungsform können Rendering-Effekte, wie etwa Strahlverfolgung, durch die Visualisierungsdienste 3820 implementiert werden, um Visualisierungen mit höherer Qualität zu erzeugen. In mindestens einer Ausführungsform können Visualisierungen ohne Einschränkung 2D-Bild-Renderings, 3D-Volumen-Renderings, 3D-Volumenrekonstruktionen, 2D-Tomografiescheiben, Virtual-Reality-Anzeigen, Augmented-Reality-Anzeigen usw. beinhalten. In mindestens einer Ausführungsform können virtualisierte Umgebungen verwendet werden, um eine virtuelle interaktive Anzeige oder Umgebung (z. B. eine virtuelle Umgebung) für die Interaktion durch Benutzer eines Systems (z. B. Ärzte, Pfleger, Radiologen usw.) zu erzeugen. In mindestens einer Ausführungsform können die Visualisierungsdienste 3820 einen internen Visualizer, Kinematik und/oder andere Rendering- oder Bildverarbeitungsfähigkeiten oder -funktionen (z. B. Strahlverfolgung, Rasterung, interne Optik usw.) beinhalten.
  • In mindestens einer Ausführungsform kann die Hardware 3722 GPUs 3822, ein KI-System 3824, eine Cloud 3826 und/oder jede beliebige andere Hardware beinhalten, die zur Ausführung des Trainingssystems 3704 und/oder des Einsatzsystems 3706 verwendet wird. In mindestens einer Ausführungsform können die GPUs 3822 (z. B. TESLA- und/oder QUADRO-GPUs von NVIDIA) eine beliebige Anzahl von GPUs beinhalten, die zum Ausführen von Verarbeitungs-Tasks von Rechendiensten 3816, Kl-Diensten 3818, Visualisierungsdiensten 3820, anderen Diensten und/oder beliebigen von Merkmalen oder Funktionen der Software 3718 verwendet werden können. In Bezug auf die KI-Dienste 3818 können die GPUs 3822 zum Beispiel zum Durchführen von Vorverarbeitung an Bildgebungsdaten (oder anderen Datentypen, die durch Modelle des maschinellen Lernens verwendet werden), Nachverarbeitung an Ausgaben der Modelle des maschinellen Lernens und/oder zum Durchführen von Inferenzieren (z. B. zum Ausführen von Modellen des maschinellen Lernens) verwendet werden. In mindestens einer Ausführungsform können die Cloud 3826, das KI-System 3824 und/oder andere Komponenten des Systems 3800 die GPUs 3822 verwenden. In mindestens einer Ausführungsform kann die Cloud 3826 eine GPU-optimierte Plattform für Deep-Learning-Tasks beinhalten. In mindestens einer Ausführungsform kann das Kl-System 3824 GPUs verwenden und die Cloud 3826 - oder mindestens ein Abschnitt, der mit Deep Learning oder Inferenzieren beauftragt ist - kann unter Verwendung eines oder mehrerer Kl-Systeme 3824 ausgeführt werden. Obwohl es sich bei der Hardware 3722 der Veranschaulichung nach um diskrete Komponenten handelt, soll dies demnach nicht einschränkend sein und beliebige Komponenten der Hardware 3722 können mit beliebigen anderen Komponenten der Hardware 3722 kombiniert oder durch diese ausgenutzt werden.
  • In mindestens einer Ausführungsform kann das KI-System 3824 ein zweckbestimmtes Computersystem (z. B. einen Supercomputer oder einen HPC) beinhalten, das dazu konfiguriert ist, Inferenzieren, Deep Learning, maschinelles Lernen und/oder andere Aufgaben der künstlichen Intelligenz auszuführen. In mindestens einer Ausführungsform kann das KI-System 3824 (z. B. DGX von NVIDIA) GPU-optimierte Software (z. B. einen Software-Stapel) beinhalten, die unter Verwendung einer Vielzahl von GPUs 3822 zusätzlich zu CPUs, RAM, Datenspeicher und/oder anderen Komponenten, Merkmalen oder Funktionen ausgeführt werden kann. In mindestens einer Ausführungsform können ein oder mehrere KI-Systeme 3824 in der Cloud 3826 (z. B. in einem Rechenzentrum) implementiert sein, um einige oder alle der Kt-basierten Verarbeitungs-Tasks des Systems 3800 durchzuführen.
  • In mindestens einer Ausführungsform kann die Cloud 3826 eine GPUbeschleunigte Infrastruktur (z. B. NGC von NVIDIA) beinhalten, die eine GPU-optimierte Plattform für die Ausführung von Verarbeitungsaufgaben des Systems 3800 bereitstellen kann. In mindestens einer Ausführungsform kann die Cloud 3826 ein KI-System 3824 zum Durchführen eines oder mehrerer KI-basierter Tasks des Systems 3800 beinhalten (z. B. als Hardware-Abstraktions- und -Skalierungsplattform). In mindestens einer Ausführungsform kann die Cloud 3826 in das Anwendungsorchestrierungssystem 3828 integriert sein, das mehrere GPUs ausnutzt, um eine nahtlose Skalierung und Lastverteilung zwischen und unter den Anwendungen und Diensten 3720 zu ermöglichen. In mindestens einer Ausführungsform kann die Cloud 3826 damit beauftragt sein, mindestens einige der Dienste 3720 des Systems 3800 auszuführen, einschließlich der Rechendienste 3816, der KI-Dienste 3818 und/oder der Visualisierungsdienste 3820, wie hierin beschrieben. In mindestens einer Ausführungsform kann die Cloud 3826 Inferenz mit kleinen und großen Batches durchführen (z. B. unter Ausführung von TENSOR RT von NVIDIA), eine beschleunigte Parallelrechen-API und -Plattform 3830 bereitstellen (z. B. CUDA von NVIDIA), ein Anwendungsorchestrierungssystem 3828 ausführen (z. B. KUBERNETES), eine Grafik-Rendering-API und -Plattform bereitstellen (z. B. für Strahlverfolgung, 2D-Grafik, 3D-Grafik und/oder andere Rendering-Techniken, um Kinematik mit höherer Qualität zu erzeugen) und/oder sie kann andere Funktionen für das System 3800 bereitstellen.
  • In mindestens einer Ausführungsform kann die Cloud 3826 in dem Bestreben, die Vertraulichkeit von Patientendaten zu wahren (z. B. wenn Patientendaten oder - aufzeichnungen außerhalb der eigenen Räumlichkeiten verwendet werden sollen), ein Register beinhalten - wie z. B. ein Deep-Learning-Container-Register. In mindestens einer Ausführungsform kann eine Registrierungsdatenbank Container für Instanziierungen von Anwendungen speichern, die Vorverarbeitungs-, Nachverarbeitungs- oder andere Verarbeitungs-Tasks an Patientendaten durchführen können. In mindestens einer Ausführungsform kann die Cloud 3826 Daten empfangen, die sowohl Patientendaten als auch Sensordaten in Containern enthalten, die angeforderte Verarbeitung nur für die Sensordaten in diesen Containern ausführen und dann eine resultierende Ausgabe und/oder Visualisierungen an geeignete Parteien und/oder Vorrichtungen weiterleiten (z. B. medizinische Vorrichtungen vor Ort, die zur Visualisierung oder Diagnose verwendet werden), ohne dass Patientendaten extrahiert, gespeichert müssen oder anderweitig darauf zugegriffen werden muss. In mindestens einer Ausführungsform wird die Vertraulichkeit der Patientendaten in Übereinstimmung mit HIPAA- und/oder anderen Datenvorschriften gewahrt.
  • 39 beinhaltet eine beispielhafte Veranschaulichung einer Einsatzpipeline 3810A zum Verarbeiten von Bildgebungsdaten gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das System 3800 - und insbesondere das Einsatzsystem 3706 - verwendet werden, um die Einsatzpipelines 3810A individuell anzupassen, zu aktualisieren und/oder in eine oder mehrere Produktionsumgebungen zu integrieren. In mindestens einer Ausführungsform beinhaltet die Einsatzpipeline 3810A aus 39 ein nicht einschränkendes Beispiel für eine Einsatzpipeline 3810A, die durch einen konkreten Benutzer (oder ein Team von Benutzern) in einer Einrichtung (z. B. in einem Krankenhaus, einer Klinik, einem Labor, einer Forschungsumgebung usw.) individuell definiert sein kann. In mindestens einer Ausführungsform kann ein Benutzer zum Definieren von Einsatzpipelines 381 0A für einen CT-Scanner 3902 - zum Beispiel aus einer Containerregistrierungsdatenbank - eine oder mehrere Anwendungen auswählen, die spezifische Funktionen oder Tasks in Bezug auf die durch den CT-Scanner 3902 erzeugten Bildgebungsdaten durchführen. In mindestens einer Ausführungsform können Anwendungen auf die Einsatzpipeline 3810A als Container angewendet werden, die die Dienste 3720 und/oder Hardware 3722 des Systems 3800 ausnutzen können. Darüber hinaus kann die Einsatzpipeline 3810A zusätzliche Verarbeitungs-Tasks oder Anwendungen beinhalten, die implementiert werden können, um Daten für die Verwendung durch Anwendungen vorzubereiten (z. B. können der DICOM-Adapter 3802B und ein DICOM-Lesegerät 3906 in der Einsatzpipeline 3810A verwendet werden, um Daten für die Verwendung durch eine CT-Rekonstruktion 3908, eine Organsegmentierung 3910 usw. vorzubereiten). In mindestens einer Ausführungsform kann die Einsatzpipeline 3810A für einen konsistenten Einsatz, eine einmalige Verwendung oder für eine andere Häufigkeit oder ein anderes Intervall individuell angepasst oder ausgewählt werden. In mindestens einer Ausführungsform kann ein Benutzer die CT-Rekonstruktion 3908 und die Organsegmentierung 3910 für mehrere Probanden über ein spezifisches Intervall wünschen und daher die Pipeline 3810A für diesen Zeitraum einsetzen. In mindestens einer Ausführungsform kann ein Benutzer für jede Anforderung von dem System 3800 die Anwendungen auswählen, die ein Benutzer möchte, um Verarbeitung an diesen Daten für diese Anforderung durchzuführen. In mindestens einer Ausführungsform kann die Einsatzpipeline 3810A in einem beliebigen Intervall eingestellt werden und aufgrund der Anpassungsfähigkeit und Skalierbarkeit einer Container-Struktur innerhalb des Systems 3800 kann dies ein nahtloser Prozess sein.
  • In mindestens einer Ausführungsform kann die Einsatzpipeline 3810A von 39 einen CT-Scanner 3902 beinhalten, der Bildgebungsdaten eines Patienten oder einer Person erzeugt. In mindestens einer Ausführungsform können die Bildgebungsdaten des CT-Scanners 3902 auf PACS-Servern 3904 gespeichert werden, die mit einer Einrichtung assoziiert sind, in der sich der CT-Scanner 3902 befindet. In mindestens einer Ausführungsform kann der/können die PACS-Server 3904 Software- und/oder Hardware-Komponenten beinhalten, die mit den Bildgebungsmodalitäten (z. B. dem CT-Scanner 3902) in einer Einrichtung eine direkte Schnittstelle bilden können. In mindestens einer Ausführungsform kann der DICOM-Adapter 3802B das Senden und Empfangen von DICOM-Objekten unter Verwendung von DICOM-Protokollen ermöglichen. In mindestens einer Ausführungsform kann der DICOM-Adapter 3802B bei der Vorbereitung oder Konfiguration von DICOM-Daten von PACS-Servern 3904 für die Verwendung durch die Einsatzpipeline 3810A helfen. In mindestens einer Ausführungsform kann der Pipeline-Manager 3812 Daten an die Einsatzpipeline 3810A durchrouten, sobald DICOM-Daten durch den DICOM-Adapter 3802B verarbeitet sind. In mindestens einer Ausführungsform kann das DICOM-Lesegerät 3906 Bilddateien und beliebige damit assoziierte Metadaten aus DICOM-Daten extrahieren (z. B. Sinogramm-Rohdaten, wie in der Visualisierung 3916A veranschaulicht). In mindestens einer Ausführungsform können Arbeitsdateien, die extrahiert werden, in einem Cache gespeichert werden, um eine schnellere Verarbeitung durch andere Anwendungen in der Einsatzpipeline 3810A zu ermöglichen. In mindestens einer Ausführungsform kann, sobald das DICOM-Lesegerät 3906 das Extrahieren und/oder Speichern von Daten beendet hat, ein Abschlusssignal an den Pipelineverwalter 3812 kommuniziert werden. In mindestens einer Ausführungsform kann der Pipelineverwalter 3812 dann eine oder mehrere andere Anwendungen oder Container in der Einsatzpipeline 3810A initiieren oder aufrufen.
  • In mindestens einer Ausführungsform kann die Anwendung CT-Rekonstruktion 3908 und/oder der Container ausgeführt werden, sobald Daten (z. B. Sinogramm-Rohdaten) für die Verarbeitung durch die Anwendung CT-Rekonstruktion 3908 verfügbar sind. In mindestens einer Ausführungsform kann die CT-Rekonstruktion 3908 Sinogramm-Rohdaten aus einem Cache lesen, eine Bilddatei aus den Sinogramm-Rohdaten rekonstruieren (wie z. B. in der Visualisierung 3916B veranschaulicht) und die resultierende Bilddatei in einem Cache speichern. In mindestens einer Ausführungsform kann bei Abschluss der Rekonstruktion dem Pipelineverwalter 3812 signalisiert werden, dass der Rekonstruktions-Task abgeschlossen ist. In mindestens einer Ausführungsform kann, sobald die Rekonstruktion abgeschlossen ist und eine rekonstruierte Bilddatei in einem Cache (oder einer anderen Speichervorrichtung) gespeichert werden kann, die Anwendung und/oder der Container für die Organsegmentierung 3910 durch den Pipelineverwalter 3812 ausgelöst werden. In mindestens einer Ausführungsform kann die Anwendung und/oder der Container für die Organsegmentierung 3910 eine Bilddatei aus einem Cache lesen, eine Bilddatei normalisieren oder in ein für die Inferenz geeignetes Format konvertieren (z. B. eine Bilddatei in eine Eingabeauflösung eines Modells des maschinellen Lernens konvertieren) und die Inferenz gegen ein normalisiertes Bild ausführen. Um Inferenz an einem normalisierten Bild auszuführen, kann sich die Anwendung und/oder der Container für die Organsegmentierung 3910 in mindestens einer Ausführungsform auf die Dienste 3720 stützen und der Pipelineverwalter 3812 und/oder das Anwendungsorchestrierungssystem 3828 können die Verwendung der Dienste 3720 durch die Anwendung und/oder den Container für die Organsegmentierung 3910 erleichtern. Zum Beispiel kann in mindestens einer Ausführungsform die Anwendung und/oder der Container für die Organsegmentierung 3910 die KI-Dienste 3818 ausnutzen, um Inferenz an einem normalisierten Bild durchzuführen, und die KI-Dienste 3818 können die Hardware 3722 (z. B. das KI-System 3824) ausnutzen, um die KI-Dienste 3818 auszuführen. In mindestens einer Ausführungsform kann ein Ergebnis einer Inferenz eine Maskendatei sein (wie z. B. in der Visualisierung 3916C veranschaulicht), die in einem Cache (oder einer anderen Speichervorrichtung) gespeichert werden kann.
  • In mindestens einer Ausführungsform kann, sobald Anwendungen, die DICOM-Daten und/oder aus DICOM-Daten extrahierte Daten verarbeiten, die Verarbeitung abgeschlossen haben, ein Signal für den Pipelineverwalter 3812 erzeugt werden. In mindestens einer Ausführungsform kann der Pipelineverwalter 3812 dann ein DICOM-Schreibgerät 3912 ausführen, um Ergebnisse aus einem Cache (oder einer anderen Speichervorrichtung) zu lesen und Ergebnisse in ein DICOM-Format (z. B. als DICOM-Ausgabe 3914) zur Verwendung durch Benutzer in einer Einrichtung, die eine Anforderung erzeugten, zu verpacken. In mindestens einer Ausführungsform kann die DICOM-Ausgabe 3914 dann an den DICOM-Adapter 3802B übertragen werden, um die DICOM-Ausgabe 3914 für die Speicherung auf den PACS-Servern 3904 vorzubereiten (z. B. für die Ansicht durch einen DICOM-Viewer in einer Einrichtung). In mindestens einer Ausführungsform können als Reaktion auf eine Anforderung zur Rekonstruktion und Segmentierung Visualisierungen 3916B und 3916C erzeugt werden und einem Benutzer für Diagnose-, Forschungs- und/oder andere Zwecke zur Verfügung gestellt werden.
  • Obwohl als aufeinanderfolgende Anwendung in der Einsatzpipeline 3810A veranschaulicht, können die Anwendungen CT-Rekonstruktion 3908 und Organsegmentierung 3910 in mindestens einer Ausführungsform parallel verarbeitet werden. In mindestens einer Ausführungsform, in der die Anwendungen keine Abhängigkeiten voneinander aufweisen und Daten für jede Anwendung verfügbar sind (z. B., nachdem das DICOM-Lesegerät 3906 Daten extrahiert hat), können Anwendungen gleichzeitig, im Wesentlichen gleichzeitig oder mit einer gewissen Überlappung ausgeführt werden. In mindestens einer Ausführungsform, in der zwei oder mehr Anwendungen ähnliche Dienste 3720 erfordern, kann ein Scheduler des Systems 3800 zur Lastverteilung und zum Verteilen von Rechen- oder Verarbeitungsressourcen zwischen und unter verschiedenen Anwendungen verwendet werden. In mindestens einer Ausführungsform kann die Parallelrechenplattform 3830 zum Durchführen von Parallelverarbeitung für Anwendungen verwendet werden, um die Laufzeit der Einsatzpipeline 381 0A zu verkürzen, um Ergebnisse in Echtzeit bereitzustellen.
  • In mindestens einer Ausführungsform und unter Bezugnahme auf die 40A-40B kann das Einsatzsystem 3706 als ein oder mehrere virtuelle Instrumente implementiert werden, um unterschiedliche Funktionalitäten - wie zum Beispiel Bildverarbeitung, Segmentierung, Verbesserung, Kl, Visualisierung und Ableitung - mit Bildgebungsvorrichtungen (z. B. CT-Scannern, Röntgenvorrichtungen, MRT-Vorrichtungen usw.), Sequenzierungsvorrichtungen, Genomikvorrichtungen und/oder anderen Vorrichtungsarten auszuführen. In mindestens einer Ausführungsform kann das System 3800 die Erstellung und Bereitstellung von virtuellen Instrumenten ermöglichen, die eine softwaredefinierte Einsatzpipeline 3810 beinhalten können, die durch eine Vorrichtung erzeugte rohe/unverarbeitete Eingabedaten empfangen und verarbeitete/rekonstruierte Daten ausgeben kann. In mindestens einer Ausführungsform können Einsatzpipelines 3810 (z. B. 3810A und 3810B), die virtuelle Instrumente darstellen, Intelligenz in einer Pipeline implementieren, wie etwa durch Ausnutzen von Modellen des maschinellen Lernens, um einem System containerisierte Inferenzunterstützung bereitzustellen. In mindestens einer Ausführungsform können virtuelle Instrumente eine beliebige Anzahl von Containern ausführen, die jeweils Instanziierungen von Anwendungen beinhalten. In mindestens einer Ausführungsform, wie etwa, wenn Echtzeitverarbeitung gewünscht ist, können Einsatzpipelines 3810, die virtuelle Instrumente darstellen, statisch sein (z. B. können Container und/oder Anwendungen festgelegt sein), während in anderen Beispielen Container und/oder Anwendungen für virtuelle Instrumente aus einem Pool von Anwendungen oder Ressourcen (z. B. innerhalb einer Containerregistrierungsdatenbank k) ausgewählt werden können (z. B. pro Anforderung).
  • In mindestens einer Ausführungsform kann das System 3800 als ein oder mehrere virtuelle Instrumente vor Ort in einer Einrichtung instanziiert oder ausgeführt werden, z. B. in einem Berechnungssystem, das neben einer radiologischen Maschine, einer Bildgebungsvorrichtung und/oder einem anderen Gerätetyp in einer Einrichtung eingesetzt wird oder anderweitig damit kommuniziert. In mindestens einer Ausführungsform kann jedoch eine Installation in den Räumlichkeiten innerhalb eines Rechensystems einer Vorrichtung selbst (z. B. eines Rechensystems, das einstückig zu einer Bildgebungsvorrichtung ist), in einem lokalen Rechenzentrum (z. B. einem Rechenzentrum in den Räumlichkeiten) und/oder in einer Cloud-Umgebung (z. B. in der Cloud 3826) instanziiert oder ausgeführt werden. In mindestens einer Ausführungsform kann das Einsatzsystem 3706, das als virtuelles Instrument arbeitet, in einigen Beispielen durch einen Supercomputer oder ein anderes HPC-System instanziiert werden. In mindestens einer Ausführungsform kann die Vor-Ort-Installation die Nutzung hoher Bandbreiten (z. B. über lokale Kommunikationsschnittstellen mit höherem Durchsatz, wie z. B. RF über Ethernet) für die Echtzeitverarbeitung ermöglichen. In mindestens einer Ausführungsform kann Verarbeitung in Echtzeit oder nahezu in Echtzeit besonders nützlich sein, wenn ein virtuelles Instrument eine Ultraschallvorrichtung oder eine andere Bildgebungsmodalität unterstützt, bei der sofortige Visualisierungen erwartet oder für genaue Diagnosen und Analysen erforderlich sind. In mindestens einer Ausführungsform kann eine Cloud-Computing-Architektur zu dynamischem Bursting zu einem Cloud-Computing-Dienstleister oder einem anderen Rechen-Cluster in der Lage sein, wenn die lokale Nachfrage die Kapazität oder Fähigkeit vor Ort übersteigt. In mindestens einer Ausführungsform kann eine Cloud-Architektur, wenn sie implementiert ist, für das Training neuronaler Netze oder anderer Modelle des maschinellen Lernens abgestimmt werden, wie hierin in Bezug auf das Trainingssystem 3704 beschrieben. In mindestens einer Ausführungsform können Modelle des maschinellen Lernens mit vorhandenen Trainingspipelines kontinuierlich lernen und sich verbessern, da sie zusätzliche Daten von Vorrichtungen verarbeiten, die sie unterstützen. In mindestens einer Ausführungsform können virtuelle Instrumente unter Verwendung von zusätzlichen Daten, neuen Daten, existierenden Modellen des maschinellen Lernens und/oder aktualisierten Modellen des maschinellen Lernens kontinuierlich verbessert werden.
  • In mindestens einer Ausführungsform kann ein Computersystem einen Teil oder die gesamte hierin beschriebene Hardware 3722 beinhalten, und die Hardware 3722 kann auf verschiedene Arten verteilt sein, einschließlich innerhalb einer Vorrichtung, als Teil einer Rechenvorrichtung, die mit einer Vorrichtung gekoppelt ist und sich in deren Nähe befindet, in einem lokalen Rechenzentrum in einer Einrichtung und/oder in der Cloud 3826. Da das Einsatzsystem 3706 und die damit assoziierten Anwendungen oder Container in Software erstellt werden (z. B. als diskrete containerisierte Instanziierungen von Anwendungen), können in mindestens einer Ausführungsform das Verhalten, der Betrieb und die Konfiguration von virtuellen Instrumenten sowie die durch virtuelle Instrumente erzeugten Ausgaben nach Wunsch modifiziert oder individuell angepasst werden, ohne dass die Rohausgabe einer Vorrichtung, die ein virtuelles Instrument unterstützt, geändert oder verändert werden muss.
  • 40A beinhaltet ein beispielhaftes Datenablaufdiagramm eines virtuellen Instruments, das eine Ultraschallvorrichtung unterstützt, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die Einsatzpipeline 3810B einen oder mehrere der Dienste 3720 des Systems 3800 ausnutzen. In mindestens einer Ausführungsform können die Einsatzpipeline 3810B und die Dienste 3720 die Hardware 3722 eines Systems entweder lokal oder in der Cloud 3826 ausnutzen. In mindestens einer Ausführungsform, obwohl nicht veranschaulicht, kann der Prozess 4000 durch den Pipelineverwalter 3812, das Anwendungsorchestrierungssystem 3828 und/oder die Parallelrechenplattform 3830 erleichtert werden.
  • In mindestens einer Ausführungsform kann der Prozess 4000 den Empfang von Bildgebungsdaten von einer Ultraschallvorrichtung 4002 beinhalten. In mindestens einer Ausführungsform können die Bildgebungsdaten auf den PACS-Servern in einem DICOM-Format (oder einem anderen Format, wie etwa RIS, CIS, REST-konform, RPC, Rohdaten usw.) gespeichert sein und durch das System 3800 zur Verarbeitung durch die Einsatzpipeline 3810 empfangen werden, die als virtuelles Instrument (z. B. ein virtueller Ultraschall) für die Ultraschallvorrichtung 4002 ausgewählt oder individuell angepasst wurde. In mindestens einer Ausführungsform können die Bildgebungsdaten direkt von einer Bildgebungsvorrichtung (z. B. Ultraschallvorrichtung 4002) empfangen und durch ein virtuelles Instrument verarbeitet werden. In mindestens einer Ausführungsform kann ein Wandler oder ein anderer Signalkonverter, der kommunikativ zwischen einer Bildgebungsvorrichtung und einem virtuellen Instrument gekoppelt ist, die von einer Bildgebungsvorrichtung erzeugten Signaldaten in Bilddaten umwandeln, die von einem virtuellen Instrument verarbeitet werden können. In mindestens einer Ausführungsform können Rohdaten und/oder Bilddaten auf das DICOM-Lesegerät 3906 angewendet werden, um Daten zur Verwendung durch Anwendungen oder Container der Einsatzpipeline 3810B zu extrahieren. In mindestens einer Ausführungsform kann das DICOM-Lesegerät 3906 die Datenerweiterungsbibliothek 4014 (z. B. DALI von NVIDIA) als Dienst 3720 (z. B. als einen der Rechendienstes 3816) nutzen, um Daten zu extrahieren, deren Größe zu ändern, sie neu zu skalieren und/oder anderweitig für die Verwendung durch Anwendungen oder Container vorzubereiten.
  • In mindestens einer Ausführungsform kann nach der Aufbereitung der Daten eine Rekonstruktionsanwendung 4006 und/oder ein Container ausgeführt werden, um die Daten der Ultraschallvorrichtung 4002 in eine Bilddatei zu rekonstruieren. In mindestens einer Ausführungsform kann nach der Rekonstruktion 4006 oder gleichzeitig mit der Rekonstruktion 4006 eine Anwendung und/oder ein Container zur Erkennung 4008 für die Erkennung von Anomalien, Objekten, Merkmalen und/oder anderen Erkennungsaufgaben im Zusammenhang mit Daten ausgeführt werden. In mindestens einer Ausführungsform kann eine während der Rekonstruktion 4006 erzeugte Bilddatei während der Erkennung 4008 verwendet werden, um Anomalien, Objekte, Merkmale usw. zu identifizieren. In mindestens einer Ausführungsform kann die Anwendung zur Erkennung 4008 eine Inferenzengine 4016 (z. B. als einer der KI-Dienste 3818) nutzen, um Inferenzen auf Daten durchzuführen, um Erkennungen zu generieren. In mindestens einer Ausführungsform können ein oder mehrere maschinelle Lernmodelle (z. B. vom Trainingssystem 3704) von der Anwendung Erkennung 4008 ausgeführt oder aufgerufen werden.
  • In mindestens einer Ausführungsform können, sobald die Rekonstruktion 4006 und/oder Detektion 4008 abgeschlossen ist/sind, die aus diesen Anwendungen und/oder Containern ausgegebenen Daten verwendet werden, um Visualisierungen 4010 zu erzeugen, wie etwa die Visualisierung 4012 (z. B. eine Graustufenausgabe), die auf einer Arbeitsstation oder einem Anzeigeendgerät angezeigt wird. In mindestens einer Ausführungsform kann die Visualisierung es einem Techniker oder einem anderen Benutzer ermöglichen, die Ergebnisse der Einsatzpipeline 3810B in Bezug auf die Ultraschallvorrichtung 4002 zu visualisieren. In mindestens einer Ausführungsform kann die Visualisierung 4010 durch Nutzung einer Renderkomponente 4018 des Systems 3800 (z. B. eines der Visualisierungsdienste 3820) ausgeführt werden. In mindestens einer Ausführungsform kann die Rendering-Komponente 4018 einen 2D-, OpenGL- oder Strahlverfolgungsdienst ausführen, um die Visualisierung 4012 zu erzeugen.
  • 40B beinhaltet ein beispielhaftes Datenablaufdiagramm eines virtuellen Instruments, das einen CT-Scanner unterstützt, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die Einsatzpipeline 3810C einen oder mehrere der Dienste 3720 des Systems 3800 ausnutzen. In mindestens einer Ausführungsform können die Einsatzpipeline 3810C und die Dienste 3720 die Hardware 3722 eines Systems entweder lokal oder in der Cloud 3826 ausnutzen. In mindestens einer Ausführungsform, obwohl nicht veranschaulicht, kann der Prozess 4020 durch den Pipelineverwalter 3812, das Anwendungsorchestrierungssystem 3828 und/oder die Parallelrechenplattform 3830 erleichtert werden.
  • In mindestens einer Ausführungsform kann der Prozess 4020 einen CT-Scanner 4022 beinhalten, der Rohdaten erzeugt, die vom DICOM-Lesegerät 3906 empfangen werden können (z. B. direkt, über einen PACS-Server 3904, nach der Verarbeitung usw.). In mindestens einer Ausführungsform kann ein virtuelles CT (durch die Einsatzpipeline 3810C instanziiert) eine erste Echtzeitpipeline zum Überwachen eines Patienten (z. B. Patientenbewegungsdetektions-KI 4026) und/oder zum Einstellen oder Optimieren der Belichtung des CT-Scanners 4022 (z. B. unter Verwendung der Belichtungssteuer-KI 4024) beinhalten. In mindestens einer Ausführungsform können eine oder mehrere der Anwendungen (z. B. 4024 und 4026) einen Dienst 3720 ausnutzen, wie etwa die KI-Dienste 3818. In mindestens einer Ausführungsform können die Ausgaben der Anwendung (oder des Containers) für die Belichtungssteuer-Kl 4024 und/oder der Anwendung (oder des Containers) für die Patientenbewegungsdetektions-Kl 4026 als Rückmeldung an den CT-Scanner 4022 und/oder einen Techniker verwendet werden, um die Belichtung (oder andere Einstellungen des CT-Scanners 4022) einzustellen und/oder einen Patienten zu informieren, sich weniger zu bewegen.
  • In mindestens einer Ausführungsform kann die Einsatzpipeline 3810C eine Nicht-Echtzeit-Pipeline zur Analyse der vom CT-Scanner 4022 erzeugten Daten beinhalten. In mindestens einer Ausführungsform kann eine zweite Pipeline die Anwendung und/oder den Container für die CT-Rekonstruktion 3908, eine Anwendung und/oder einen Container für eine Grobdetektions-Kl 4028, eine Anwendung und/oder einen Container für eine Feindetektions-KI 4032 (wenn z. B. bestimmte Ergebnisse durch die Grobdetektions-KI 4028 detektiert werden), eine Anwendung und/oder einen Container für eine Visualisierung 4030 und eine Anwendung und/oder einen Container für das DICOM-Schreibgerät 3912 (und/oder ein Schreibgerät für einen anderen Datentyp, wie etwa RIS, CIS, REST-konform, RPC, Rohdaten usw.) beinhalten. In mindestens einer Ausführungsform können die durch den CT-Scanner 4022 erzeugten Rohdaten durch Pipelines der Einsatzpipeline 3810C (als virtuelles CT-Instrument instanziiert) gegeben werden, um Ergebnisse zu erzeugen. In mindestens einer Ausführungsform können die Ergebnisse des DICOM-Schreibers 3912 zur Anzeige übertragen und/oder auf den PACS-Servern 3904 zum/zur späteren Abruf, Analyse oder Anzeige durch einen Techniker, eine Fachkraft oder anderen Benutzer gespeichert werden.
  • 41A veranschaulicht ein Datenablaufdiagramm für einen Prozess 4100 zum Trainieren, erneuten Trainieren oder Aktualisieren eines Modells des maschinellen Lernens gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozess 4100 als nicht einschränkendes Beispiel unter Verwendung des Systems 3800 aus 38 ausgeführt werden. In mindestens einer Ausführungsform kann der Prozess 4100 die Dienste 3720 und/oder die Hardware 3722 des Systems 3800 ausnutzen, wie hierin beschrieben. In mindestens einer Ausführungsform können verfeinerte Modelle 4112, die durch den Prozess 4100 erzeugt wurden, durch das Einsatzsystem 3706 für eine oder mehrere containerisierte Anwendungen in Einsatzpipelines 3810 ausgeführt werden.
  • In mindestens einer Ausführungsform kann das Modelltraining 3714 das Neutrainieren oder Aktualisieren eines Ausgangsmodells 4104 (z. B. eines vorab trainierten Modells) unter Verwendung neuer Trainingsdaten (z. B. neuer Eingabedaten, wie Kundendatensatz 4106, und/oder neuer Ground-Truth-Daten in Verbindung mit Eingabedaten) beinhalten. In mindestens einer Ausführungsform können zum erneuten Trainieren oder Aktualisieren des anfänglichen Modells 4104 die Ausgabe- oder Verlustschichten des anfänglichen Modells 4104 zurückgesetzt oder gelöscht und/oder durch aktualisierte oder neue Ausgabe- oder Verlustschichten ersetzt werden. In mindestens einer Ausführungsform kann das anfängliche Modell 4104 bereits fein abgestimmte Parameter (z. B. Gewichtungen und/oder Verzerrungen) aufweisen, die aus einem früheren Training übriggeblieben sind, sodass das Training oder das erneute Training 3714 nicht so lange dauern oder so viel Verarbeitung erfordern kann wie das Training eines Modells von Grund auf. In mindestens einer Ausführungsform können während des Modelltrainings 3714 durch Zurücksetzen oder Ersetzen der Ausgabe- oder Verlustschichten des anfänglichen Modells 4104 die Parameter aktualisiert und für einen neuen Datensatz auf Grundlage von Verlustberechnungen neu abgestimmt werden, die mit der Genauigkeit der Ausgabe- oder Verlustschichten beim Erzeugen von Vorhersagen an einem neuen Kundendatensatz 4106 (z. B. Bilddaten 3708 aus 37) assoziiert sind.
  • In mindestens einer Ausführungsform können vortrainierte Modelle 3806 in einem Datenspeicher oder einer Registrierung (z. B. Modellregistrierung 3724 von 37) gespeichert werden. In mindestens einer Ausführungsform können die vorab trainierten Modelle 3806 mindestens teilweise in einer oder mehreren anderen Einrichtungen als der Einrichtung, die den Prozess 4100 ausführt, trainiert worden sein. In mindestens einer Ausführungsform können zum Schutz der Privatsphäre und der Rechte von Patienten, Probanden oder Klienten unterschiedlicher Einrichtungen die vorab trainierten Modelle 3806 in den Räumlichkeiten unter Verwendung von Kunden- oder Patientendaten, die in den Räumlichkeiten erzeugt wurden, trainiert worden sein. In mindestens einer Ausführungsform können die vorab trainierten Modelle 3806 unter Verwendung der Cloud 3826 und/oder anderer Hardware 3722 trainiert werden, aber vertrauliche, datenschutzrechtlich geschützte Patientendaten dürfen nicht an beliebige Komponenten der Cloud 3826 (oder anderer Hardware außerhalb der eigenen Räumlichkeiten) übermittelt werden, durch diese verwendet werden oder für diese zugänglich sein. In mindestens einer Ausführungsform, in der ein vorab trainiertes Modell 3806 unter Verwendung von Patientendaten von mehr als einer Einrichtung trainiert wird, kann das vorab trainierte Modell 3806 einzeln für jede Einrichtung trainiert worden sein, bevor es an Patienten- oder Kundendaten einer anderen Einrichtung trainiert wird. In mindestens einer Ausführungsform, wie etwa, wenn Kunden- oder Patientendaten von Datenschutzbedenken ausgenommen wurden (z. B. durch eine Verzichtserklärung, für die experimentelle Verwendung usw.) oder wenn Kunden- oder Patientendaten in einem öffentlichen Datensatz enthalten sind, können Kunden- oder Patientendaten von einer beliebigen Anzahl von Einrichtungen verwendet werden, um das vorab trainierte Modell 3806 innerhalb und/oder außerhalb der eigenen Räumlichkeiten zu trainieren, wie etwa in einem Rechenzentrum oder einer anderen Cloud-Computing-Infrastruktur.
  • In mindestens einer Ausführungsform kann ein Benutzer bei der Auswahl von Anwendungen zur Verwendung in Einsatzpipelines 3810 auch maschinelle Lernmodelle auswählen, die für bestimmte Anwendungen verwendet werden sollen. In mindestens einer Ausführungsform kann ein Benutzer kein Modell zur Verwendung aufweisen, sodass ein Benutzer ein vorab trainiertes Modell 3806 zum Verwenden mit einer Anwendung auswählen kann. In mindestens einer Ausführungsform ist das vorab trainierte Modell 3806 möglicherweise nicht dafür optimiert, genaue Ergebnisse an dem Kundendatensatz 4106 einer Einrichtung eines Benutzers zu erzeugen (z. B. auf Grundlage der Patientenvielfalt, der Demografie, der Typen der verwendeten medizinischen Bildgebungsvorrichtungen usw.). In mindestens einer Ausführungsform kann das vorab trainierte Modell 3806 vor dem Einsetzen des vorab trainierten Modells 3806 in der Einsatzpipeline 3810 zur Verwendung mit einer Anwendung(en) für die Verwendung in einer jeweiligen Einrichtung aktualisiert, erneut trainiert und/oder fein abgestimmt werden.
  • In mindestens einer Ausführungsform kann ein Benutzer das vorab trainierte Modell 3806 auswählen, das aktualisiert, neutrainiert und/oder feinabgestimmt werden soll, und das vorab trainierte Modell 3806 kann als Ausgangsmodell 4104 für das Trainingssystem 3704 innerhalb des Prozesses 4100 bezeichnet werden. In mindestens einer Ausführungsform kann der Kundendatensatz 4106 (z. B. Bildgebungsdaten, Genomikdaten, Sequenzierungsdaten oder andere Datentypen, die durch Vorrichtungen in einer Einrichtung erzeugt werden) verwendet werden, um das Modelltraining 3714 (das ohne Einschränkung Transferlernen beinhalten kann) an dem anfänglichen Modell 4104 durchzuführen, um das verfeinerte Modell 4112 zu erzeugen. In mindestens einer Ausführungsform können die Ground-Truth-Daten, die dem Kundendatensatz 4106 entsprechen, durch das Trainingssystem 3704 erzeugt werden. In mindestens einer Ausführungsform können Ground-Truth-Daten mindestens teilweise von Klinikern, Wissenschaftlern, Ärzten, Fachkräften in einer Einrichtung erzeugt werden (z. B. als beschriftete Klinikdaten 3712 aus 37).
  • In mindestens einer Ausführungsform kann in einigen Beispielen die KI-gestützte Annotation 3710 verwendet werden, um Ground-Truth-Daten zu erzeugen. In mindestens einer Ausführungsform kann die KI-gestützte Annotation 3710 (z. B. unter Verwendung eines SDK für die KI-gestützt Annotation implementiert) Modelle des maschinellen Lernens (z. B. neuronale Netze) ausnutzen, um vorgeschlagene oder vorhergesagte Ground-Truth-Daten für einen Kundendatensatz zu erzeugen. In mindestens einer Ausführungsform kann der Benutzer 4110 Annotationswerkzeuge innerhalb einer Benutzerschnittstelle (einer grafischen Benutzerschnittstelle (graphical user interface - GUI)) auf der Rechenvorrichtung 4108 verwenden.
  • In mindestens einer Ausführungsform kann der Benutzer 4110 über die Rechenvorrichtung 4108 mit einer GUI interagieren, um Annotationen oder Autoannotationen zu bearbeiten oder fein abzustimmen. In mindestens einer Ausführungsform kann eine Polygonbearbeitungsmerkmal verwendet werden, um Vertices eines Polygons an genauere oder feiner abgestimmte Positionen zu verschieben.
  • In mindestens einer Ausführungsform können, sobald Ground-Truth-Daten mit dem Kundendatensatz 4106 assoziiert sind, die Ground-Truth-Daten (z. B. aus Klgestützter Annotation, manueller Markierung usw.) während des Modelltrainings 3714 verwendet werden, um das verfeinerte Modell 4112 zu erzeugen. In mindestens einer Ausführungsform kann der Kundendatensatz 4106 beliebig oft auf das anfängliche Modell 4104 angewendet werden und die Ground-Truth-Daten können verwendet werden, um die Parameter des anfänglichen Modells 4104 zu aktualisieren, bis ein akzeptables Genauigkeitslevel für das verfeinerte Modell 4112 erreicht ist. In mindestens einer Ausführungsform kann das verfeinerte Modell 4112, sobald das verfeinerte Modell 4112 erzeugt ist, innerhalb einer oder mehrerer Einsatzpipelines 3810 in einer Einrichtung zum Durchführen eines oder mehrerer Verarbeitungs-Tasks in Bezug auf medizinische Bildgebungsdaten eingesetzt werden.
  • In mindestens einer Ausführungsform kann das verfeinerte Modell 4112 zu den vortrainierten Modellen 3806 in der Modellregistrierung 3724 hochgeladen werden, um von einer anderen Einrichtung ausgewählt zu werden. In mindestens einer Ausführungsform kann dieser Prozess in einer beliebigen Anzahl von Einrichtungen durchgeführt werden, sodass das verfeinerte Modell 4112 an neuen Datensätzen beliebig oft weiter verfeinert werden kann, um ein universelleres Modell zu erzeugen.
  • 41 B ist eine beispielhafte Veranschaulichung einer Client-Server-Architektur 4132 zum Erweitern von Annotationswerkzeugen mit vorab trainierten Annotationsmodellen gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform können die Kl-gestützten Annotationswerkzeuge 4136 auf Grundlage einer Client-Server-Architektur 4132 instanziiert werden. In mindestens einer Ausführungsform können die Annotationswerkzeuge 4136 in Bildgebungsanwendungen zum Beispiel Radiologen beim Identifizieren von Organen und Auffälligkeiten unterstützen. In mindestens einer Ausführungsform können Bildgebungsanwendungen Software-Werkzeuge beinhalten, die dem Benutzer 4110 dabei helfen, als nicht einschränkendes Beispiel einige Extrempunkte an einem konkreten Organ von Interesse auf Rohbildern 4134 (z. B. auf einem 3D-MRT- oder CT-Scan) zu identifizieren und automatisch annotierte Ergebnisse für alle 2D-Scheiben eines konkreten Organs zu empfangen. In mindestens einer Ausführungsform können die Ergebnisse in einem Datenspeicher als Trainingsdaten 4138 gespeichert und als (zum Beispiel und ohne Einschränkung) Ground-Truth-Daten für das Training verwendet werden. In mindestens einer Ausführungsform kann ein Deep-Learning-Modell, wenn die Rechenvorrichtung 4108 Extrempunkte für die KI-gestützte Annotation 3710 sendet, beispielsweise diese Daten als Eingabe empfangen und Inferenzergebnisse eines segmentierten Organs oder einer Auffälligkeit zurückgeben. In mindestens einer Ausführungsform können vorab instanziierte Annotationswerkzeuge, wie z. B. das Kl-gestützte Annotationswerkzeug 4136B in 41B, durch API-Aufrufe (z. B. API-Aufruf 4144) an einen Server, beispielsweise einen Annotationsassistenzserver 4140, erweitert werden, der einen Satz von vorab trainierten Modellen 4142 beinhalten kann, der zum Beispiel in einer Annotationsmodellregistrierungsdatenbank gespeichert ist. In mindestens einer Ausführungsform kann eine Annotationsmodellregistrierungsdatenbank vorab trainierte Modelle 4142 (z. B. Modelle des maschinellen Lernens, wie z. B. Deep-Learning-Modelle) speichern, die vorab trainiert sind, um eine KI-gestützte Annotation an einem konkreten Organ oder einer Auffälligkeit auszuführen. In mindestens einer Ausführungsform können diese Modelle durch Verwenden von Trainingspipelines 3804 weiter aktualisiert werden. In mindestens einer Ausführungsform können vorab installierte Annotationswerkzeuge im Verlauf der Zeit verbessert werden, wenn neue beschriftete Klinikdaten 3712 hinzugefügt werden.
  • Die Inferenz- und/oder Trainingslogik 815 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 815 sind nachstehend in Verbindung mit 8A und/oder 8B bereitgestellt
  • In mindestens einer Ausführungsform kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung oder einen solchen Chip beziehen. In mindestens einer Ausführungsform können Multi-Chip-Module mit erhöhter Verbindungsfähigkeit verwendet werden, die den chipinternen Betrieb simulieren und wesentliche Verbesserungen gegenüber der Nutzung einer herkömmlichen Implementation mit einer zentralen Verarbeitungseinheit („CPU“) und einem Bus bieten. In mindestens einer Ausführungsform können verschiedene Module je nach Wunsch des Benutzers auch separat oder in verschiedenen Kombinationen von Halbleiterplattformen untergebracht sein.
  • In mindestens einer Ausführungsform, unter erneuter Bezugnahme auf 14, sind Computerprogramme in Form von maschinenlesbarem ausführbaren Code oder Computersteuerlogik-Algorithmen im Hauptspeicher 1404 und/oder im Sekundärspeicher gespeichert. Falls sie durch einen oder mehrere Prozessoren ausgeführt werden, ermöglichen es Computerprogramme dem System 1400, verschiedene Funktionen gemäß mindestens einer Ausführungsform durchzuführen. In mindestens einer Ausführungsform sind Arbeitsspeicher 1404, Datenspeiche und/oder beliebiger anderer Speicher mögliche Beispiele für computerlesbare Medien. In mindestens einer Ausführungsform kann sich der Sekundärspeicher auf eine beliebige geeignete Speichervorrichtung oder -system beziehen, wie etwa ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Compact-Disk-Laufwerk, ein Digital-Versatile-Disk-(„DVD“-)Laufwerk, eine Aufzeichnungsvorrichtung, einen Universal-Serial-Bus-(„USB“-)Flash-Speicher usw. darstellt. In mindestens einer Ausführungsform werden die Architektur und/oder die Funktionalität verschiedener vorheriger Figuren im Kontext der CPU 1402, des Parallelverarbeitungssystems 1412, einer integrierten Schaltung, die mindestens zu einem Teil der Fähigkeiten sowohl der CPU 1402 als auch des Parallelverarbeitungssystems 1412 in der Lage ist, eines Chipsatzes (z. B. einer Gruppe integrierter Schaltungen, die so ausgestaltet ist, dass sie als Einheit zum Durchführen verwandter Funktionen arbeitet und verkauft wird, usw.) und/oder einer beliebigen geeigneten Kombination integrierter Schaltungen implementiert.
  • In mindestens einer Ausführungsform wird die Architektur und/oder Funktionalität verschiedener vorhergehender Figuren im Zusammenhang mit einem allgemeinen Computersystem, einem Leiterplattensystem, einem Spielkonsolensystem für Unterhaltungszwecke, einem anwendungsspezifischen System usw. umgesetzt. In mindestens einer Ausführungsform kann das Computersystem 1400 die Form eines Desktop-Computers, eines Laptop-Computers, eines Tablet-Computers, von Servern, von Supercomputern, eines Smartphones (z. B. einer drahtlosen tragbaren Vorrichtung), eines persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, eines Fahrzeugs, einer am Kopf befestigten Anzeige, einer tragbaren elektronischen Vorrichtung, einer Mobiltelefonvorrichtung, eines Fernsehgeräts, einer Arbeitsstation, von Spielekonsolen, eines eingebetteten Systems und/oder eines beliebigen anderen Typs von Logik annehmen.
  • In mindestens einer Ausführungsform beinhaltet das Parallelverarbeitungssystem 1412 ohne Einschränkung eine Vielzahl von Parallelverarbeitungseinheiten („PPUs“) 1414 und damit assoziierte Speicher 1416. In mindestens einer Ausführungsform sind die PPUs 1414 mit einem Hostprozessor oder anderen peripheren Vorrichtungen über eine Zusammenschaltung 1418 und einen Schalter 1420 oder Multiplexer verbunden. In mindestens einer Ausführungsform verteilt das Parallelverarbeitungssystem 1412 Rechenaufgaben auf PPUs 1414, die parallelisierbar sein können - zum Beispiel als Teil der Verteilung von Rechenaufgaben auf mehrere Thread-Blöcke der Grafikverarbeitungseinheit („GPU“). In mindestens einer Ausführungsform wird der Speicher gemeinsam genutzt und ist für einige oder alle PPUs 1414 zugänglich (z. B. für Lese- und/oder Schreibzugriffe), obwohl ein solcher gemeinsam genutzter Speicher zu Leistungseinbußen im Vergleich zur Nutzung von lokalem Speicher und Registern führen kann, die in einer PPU 1414 resident sind. In mindestens einer Ausführungsform wird der Betrieb der PPUs 1414 durch Verwendung eines Befehls wie etwa _syncthreads() synchronisiert, wobei alle Threads in einem Block (z. B. über mehrere PPUs 1414 hinweg ausgeführt) einen bestimmten Punkt der Codeausführung erreichen müssen, bevor sie fortfahren.
  • Andere Variationen liegen innerhalb des Geistes der vorliegenden Offenbarung. Somit können zwar bezüglich der offenbarten Verfahren diverse Modifikationen und alternative Konstruktionen vorgenommen werden, bestimmte veranschaulichte Ausführungsformen davon werden jedoch in den Zeichnungen gezeigt und wurden vorangehend ausführlich beschrieben. Allerdings versteht es sich, dass nicht die Absicht verfolgt wird, die Offenbarung auf die spezifische(n) offenbarte(n) Form oder Formen einzuschränken, sondern die Absicht ganz im Gegenteil darin besteht, sämtliche Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die in den Geist und Umfang der wie in den beigefügten Ansprüchen definierten Offenbarung fallen.
  • Mindestens eine Ausführungsform der Offenbarung kann im Hinblick auf die folgenden Klauseln beschrieben werden:
    1. 1. Prozessor, umfassend:
      • eine oder mehrere Schaltungen, um eine Erhöhung der Spärlichkeit eines oder mehrerer Sätze von Daten zu veranlassen, indem mindestens Elemente in dem einen oder den mehreren Sätzen von Daten umgeordnet werden, mit denen eine oder mehrere Berechnungen durch den Prozessor durchgeführt werden sollen.
    2. 2. Prozessor nach Klausel 1, wobei die eine oder mehreren Schaltungen die Erhöhung der Spärlichkeit mindestens durch Umordnen von Elementen in dem einen oder den mehreren Sätzen von Daten veranlassen, so dass der eine oder die mehreren Sätze von Daten eine oder mehrere Teilmengen von Daten umfassen, die mit einer oder mehreren strukturellen Spärlichkeitsbedingungen übereinstimmen.
    3. 3. Prozessor nach Klausel 2, wobei die eine oder mehrere strukturelle Spärlichkeitsbedingungen dem einen oder den mehreren Sätzen von Daten eine Beschränkung auferlegen, wodurch der eine oder die mehreren Teilmengen von Daten mindestens eine erste Menge von Nicht-Null-Datenwerten und eine zweite Menge von Null-Datenwerten umfassen.
    4. 4. Prozessor nach Klausel 2 oder 3, wobei die eine oder die mehreren Schaltungen Elemente in dem einen oder den mehreren Sätzen von Daten umordnen, indem sie eine erste Teilmenge der einen oder der mehreren Teilmengen von Daten, die eine erste Position in dem einen oder den mehreren Sätzen von Daten aufweisen, mit einer zweiten Teilmenge von Daten, die eine zweite Position in dem einen oder den mehreren Sätzen von Daten aufweisen, vertauschen.
    5. 5. Prozessor nach einer der Klauseln 1 -4, wobei:
      • der eine oder die mehreren Sätze von Daten numerische Werte umfassen, die unter Verwendung mindestens eines ersten Indexes und eines zweiten Indexes zugänglich sind; und
      • der eine oder die mehreren Sätze von Daten eine erste Teilmenge von Daten umfassen, die dem ersten Index zugeordnet sind, und eine zweite Teilmenge von Daten, die dem zweiten Index zugeordnet sind; und
      • die eine oder die mehreren Schaltungen die Erhöhung der Spärlichkeit durch mindestens Austauschen der numerischen Werte der ersten Teilmenge von Daten, die dem ersten Index zugeordnet sind, mit der zweiten Teilmenge von Daten, die der zweiten Matrix zugeordnet sind, veranlassen.
    6. 6. Prozessor nach einer der Klauseln 1-5, wobei der eine oder die mehreren Sätze von Daten numerische Werte umfassen, die Gewichtungsparametern entsprechen, die einem oder mehreren neuronalen Netzen zugeordnet sind.
    7. 7. Prozessor nach einer der Klauseln 1-6, wobei jeder Datenwert in dem einen oder den mehreren Sätzen von Daten einem ersten Indexwert und einem zweiten Indexwert zugeordnet ist, wobei der erste Indexwert und der zweite Indexwert eine Position jedes Datenwertes in dem einen oder den mehreren Sätzen von Daten angeben.
    8. 8. Prozessor nach einer der Klauseln 1-7, wobei die eine oder die mehreren Schaltungen die Erhöhung der Spärlichkeit des einen oder der mehreren Sätze von Daten unter Verwendung eines Deep-Learning-Frameworks veranlassen, um einen Satz von Transformationen zu bestimmen, um zwei oder mehr Teilmengen von Daten in dem einen oder den mehreren Sätzen von Daten zu vertauschen, wobei das Deep-Learning-Framework ferner einen oder mehrere Datenwerte in den zwei oder mehr Teilmengen von Daten auf Null einstellt.
    9. 9. System, umfassend:
      • einen oder mehrere Prozessoren; und
      • Speicher, der Anweisungen beinhaltet, die bei Ausführung durch den einen oder die mehreren Prozessoren das Computersystem mindestens zu Folgendem veranlassen:
        • Veranlassen einer Erhöhung der Spärlichkeit eines oder mehrerer Sätze von Daten durch mindestens Umordnen von Elementen in dem einen oder den mehreren Sätzen von Daten, auf denen eine oder mehrere Berechnungen durch den einen oder die mehreren Prozessoren durchgeführt werden sollen.
    10. 10. System nach Klausel 9, wobei die Anweisungen ferner Anweisungen beinhalten, die bei Ausführung durch den einen oder die mehreren Prozessoren ein Deep-Learning-Framework veranlassen, den einen oder die mehreren Sätze von Daten mindestens teilweise basierend auf einer oder mehreren Spärlichkeitsbedingungen zu transformieren.
    11. 11. System nach Klausel 10, wobei die eine oder mehreren Spärlichkeitsbedingungen mindestens eine Bedingung umfassen, wobei eine Teilmenge des einen oder der mehreren Sätze von Daten mindestens eine erste Menge von Nicht-Null-Datenwerten und eine zweite Menge von Null-Datenwerten umfasst.
    12. 12. System nach Klausel 10 oder 11, wobei das Deep-Learning-Framework den einen oder die mehreren Sätze von Daten durch Austauschen mindestens einer ersten Teilmenge des einen oder der mehreren Sätze von Daten, die einem ersten Positionswert zugeordnet sind, mit mindestens einer zweiten Teilmenge des einen oder der mehreren Sätze von Daten, die einem zweiten Positionswert zugeordnet sind, transformiert.
    13. 13. System nach einer der Klauseln 10-12, wobei das Deep-Learning-Framework einen Satz von Transformationen bestimmt, um die Elemente in dem einen oder den mehreren Sätzen von Daten durch Folgendes umzuordnen:
      • zufälliges Auswählen einer ersten Teilmenge des einen oder der mehreren Sätze von Daten, die einem ersten Positionswert zugeordnet sind, und einer zweiten Teilmenge des einen oder der mehreren Sätze von Daten, die einem zweiten Positionswert zugeordnet sind;
      • Austauschen der ersten Teilmenge und der zweiten Teilmenge;
      • Einstellen eines oder mehrerer Datenwerte in der ersten Teilmenge und der zweiten Teilmenge auf einen Nullwert;
      • Berechnen einer Metrik, die einem neuronalen Netz zugeordnet ist, das dem einen oder den mehreren Sätzen von Daten entspricht; und
      • als Ergebnis davon, dass die Metrik größer als eine andere Metrik ist, Hinzufügen einer Transformation, die den ersten Positionswert und den zweiten Positionswert umfasst, zu dem Satz von Transformationen.
    14. 14. System nach einer der Klauseln 9-13, wobei der eine oder die mehreren Sätze von Daten einer oder mehreren Ebenen eines neuronalen Netzes zugeordnet sind und der eine oder die mehreren Sätze von Datenwerten nur numerische Werte umfassen, die nicht Null sind.
    15. 15. System nach einer der Klauseln 9-14, wobei die Anweisungen ferner Anweisungen beinhalten, die bei Ausführung durch den einen oder die mehreren Prozessoren die Erhöhung der Spärlichkeit veranlassen, indem sie einen oder mehrere Datenwerte in einer Teilmenge des einen oder der mehreren Sätze von Daten auf einen Nullwert einstellen, wobei der eine oder die mehreren Datenwerte in der Teilmenge numerische Werte sind, die einen oder mehrere Gewichtungswerte darstellen, die einem neuronalen Netz zugeordnet sind, und wobei die Teilmenge mindestens teilweise basierend auf einer Spärlichkeitsbedingung bestimmt wird.
    16. 16. System nach einer der Klauseln 9-15, wobei der eine oder die mehreren Prozessoren Parallelverarbeitungseinheiten sind, wobei die Parallelverarbeitungseinheiten einen oder mehrere spärliche Tensorkerne umfassen, um die eine oder die mehreren Berechnungen mindestens teilweise basierend auf einer oder mehreren strukturellen Bedingungen auf dem einen oder den mehreren Sätzen von Daten zu beschleunigen.
    17. 17. Verfahren, umfassend:
      • Veranlassen einer Erhöhung der Spärlichkeit eines oder mehrerer Sätze von Daten durch mindestens Umordnen von Elementen in dem einen oder den mehreren Sätzen von Daten, auf denen eine oder mehrere Berechnungen durchgeführt werden sollen.
    18. 18. Verfahren nach Klausel 17, ferner umfassend Veranlassen der Erhöhung der Spärlichkeit des einen oder der mehreren Sätze von Daten unter Verwendung eines Deep-Learning-Frameworks, wobei das Deep-Learning-Framework mindestens die Elemente in dem einen oder den mehreren Sätzen von Daten so umordnet, dass der eine oder die mehreren Sätze von Daten eine oder mehrere Teilmengen von Daten umfassen, die mit einer oder mehreren strukturellen Spärlichkeitsbedingungen übereinstimmen.
    19. 19. Verfahren nach Klausel 18, wobei die eine oder mehreren strukturellen Spärlichkeitsbedingungen mindestens eine Einschränkung für den einen oder die mehreren Sätze von Daten umfassen, wobei die Einschränkung erfordert, dass der eine oder die mehreren Teilmengen von Daten mindestens eine erste Menge von Nicht-Null-Datenwerten und eine zweite Menge von Null-Datenwerten umfassen.
    20. 20. Verfahren nach Klausel 18 oder 19, wobei das Deep-Learning-Framework die Elemente in dem einen oder den mehreren Sätzen von Daten umordnet, indem es eine erste Teilmenge der einen oder mehreren Teilmengen von Daten, die eine erste Position in dem einen oder den mehreren Sätzen von Daten aufweisen, mit einer zweiten Teilmenge der einen oder der mehreren Teilmengen von Daten, die eine zweite Position in dem einen oder den mehreren Sätzen von Daten aufweisen, vertauscht.
    21. 21. Verfahren nach einer der Klauseln 18-20, wobei das Deep-Learning-Framework einen Satz von Transformationen bestimmt, um die Elemente in dem einen oder den mehreren Sätzen von Daten durch Folgendes umzuordnen:
      • zufälliges Auswählen einer ersten Teilmenge der einen oder mehreren Teilmengen von Daten, die einem ersten Positionswert zugeordnet sind, und einer zweiten Teilmenge der einen oder mehreren Teilmengen von Daten, die einem zweiten Positionswert zugeordnet sind;
      • Austauschen der ersten Teilmenge und der zweiten Teilmenge;
      • Einstellen eines oder mehrerer Datenwerte in der ersten Teilmenge und der zweiten Teilmenge auf einen Nullwert;
      • Berechnen eines metrischen Wertes, der einem neuronalen Netz zugeordnet ist, das dem einen oder den mehreren Sätzen von Daten entspricht; und
      • als Ergebnis davon, dass der metrische Wert größer als ein anderer metrischer Wert ist, Hinzufügen einer Transformation, die den ersten Positionswert und den zweiten Positionswert umfasst, zu dem Satz von Transformationen.
    22. 22. Verfahren nach einer der Klauseln 18-21, wobei das Deep-Learning-Framework einen Satz von Transformationen bestimmt, um die Elemente in dem einen oder den mehreren Sätzen von Daten durch Folgendes umzuordnen:
      • Auswählen einer ersten Teilmenge des einen oder der mehreren Sätze von Daten und einer zweiten Teilmenge des einen oder der mehreren Sätze von Daten;
      • Bestimmen einer oder mehrerer erster Transformationen der ersten Teilmenge, wobei die eine oder mehreren ersten Transformationen einen ersten einen oder mehrere Sätze sequentieller Datenwerte in der ersten Teilmenge mit einem zweiten einen oder mehreren Sätzen sequentieller Datenwerte in der ersten Teilmenge austauschen, so dass ein erster, einem neuronalen Netz zugeordneter metrischer Wert größer ist als ein zweiter, dem neuronalen Netz zugeordneter metrischer Wert;
      • Bestimmen einer oder mehrerer zweiter Transformationen der zweiten Teilmenge, wobei die eine oder mehreren zweiten Transformationen einen ersten einen oder mehrere Sätze sequentieller Datenwerte in der zweiten Teilmenge mit einem zweiten einen oder mehreren Sätzen sequentieller Datenwerte in der zweiten Teilmenge austauschen, so dass ein dritter, dem neuronalen Netz zugeordneter metrischer Wert größer ist als der zweite, dem neuronalen Netz zugeordnete metrische Wert; und
      • Kombinieren der einen oder mehreren ersten Transformationen mit der einen oder den mehreren zweiten Transformationen in den Satz von Transformationen.
    23. 23. Verfahren nach einer der Klauseln 17-22, wobei der eine oder die mehreren Sätze von Daten einer oder mehreren Ebenen eines neuronalen Netzes zugeordnet sind, die einen verbesserten metrischen Wert als Ergebnis der Erhöhung der Spärlichkeit aufweisen.
    24. 24. Verfahren nach einer der Klauseln 17-23, wobei die Erhöhung der Spärlichkeit ferner dadurch veranlasst wird, dass ein oder mehrere Datenwerte in einer Teilmenge des einen oder der mehreren Sätze von Daten auf einen Null-Datenwert eingestellt werden, so dass ein oder mehrere Operanden der einen oder mehreren Berechnungen eine oder mehrere Spärlichkeitsbedingungen erfüllen.
    25. 25. Verfahren nach einer der Klauseln 17-24, wobei eine oder mehrere Parallelverarbeitungseinheiten die eine oder mehreren Berechnungen durchführen, wobei die eine oder mehreren Parallelverarbeitungseinheiten einen oder mehrere spärliche Tensorkerne umfassen, um eine oder mehrere strukturelle Bedingungen als Ergebnis der Erhöhung der Spärlichkeit zu nutzen.
    26. 26. Maschinenlesbares Medium, das einen darauf gespeicherten Satz von Anweisungen aufweist, die bei Durchführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren mindestens zu Folgendem veranlassen:
      • Veranlassen einer Erhöhung der Spärlichkeit eines oder mehrerer Sätze von Daten durch mindestens Umordnen von Elementen in dem einen oder den mehreren Sätzen von Daten, auf denen eine oder mehrere Berechnungen durch den einen oder die mehreren Prozessoren durchgeführt werden sollen.
    27. 27. Maschinenlesbares Medium nach Klausel 26, wobei der Satz von Anweisungen ferner Anweisungen umfasst, die bei Durchführung durch den einen oder die mehreren Prozessoren den einen oder die mehreren Prozessoren veranlassen, die Elemente in dem einen oder den mehreren Sätzen von Daten durch Anwenden eines Satzes von Transformationen auf den einen oder die mehreren Sätze von Daten gemäß einer oder mehreren strukturellen Spärlichkeitsbedingungen umzuordnen.
    28. 28. Maschinenlesbares Medium nach Klausel 27, wobei die eine oder mehreren strukturellen Spärlichkeitsbedingungen mindestens eine Einschränkung für den einen oder die mehreren Sätze von Daten umfassen, wobei die Einschränkung erfordert, dass die eine oder mehreren Teilmengen von Daten mindestens eine erste Menge von Nicht-Null-Datenwerten und eine zweite Menge von Null-Datenwerten umfassen.
    29. 29. Maschinenlesbares Medium nach Klausel 27 oder 28, wobei der Satz von Transformationen mindestens eine Transformation umfasst, die eine erste Teilmenge des einen oder der mehreren Sätze von Daten, die einen ersten Positionswert in dem einen oder den mehreren Sätzen von Daten aufweisen, mit einer zweiten Teilmenge des einen oder der mehreren Sätze von Daten, die einen zweiten Positionswert in dem einen oder den mehreren Sätzen von Daten aufweisen, austauscht.
    30. 30. Maschinenlesbares Medium nach einer der Klauseln 26-29, wobei der Satz von Anweisungen ferner Anweisungen umfasst, die bei Durchführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen, einen Satz von Transformationen zu bestimmen, um die Elemente in dem einen oder den mehreren Sätzen von Daten durch Folgendes umzuordnen:
      • zufälliges Auswählen einer ersten Teilmenge des einen oder der mehreren Sätze von Daten, die einem ersten Positionswert zugeordnet sind, und einer zweiten Teilmenge des einen oder der mehreren Sätze von Daten, die einem zweiten Positionswert zugeordnet sind;
      • Austauschen der ersten Teilmenge und der zweiten Teilmenge;
      • Einstellen eines oder mehrerer Datenwerte in der ersten Teilmenge und der zweiten Teilmenge auf einen Nullwert;
      • Berechnen eines metrischen Wertes, der einem neuronalen Netz zugeordnet ist, das dem einen oder den mehreren Sätzen von Daten entspricht; und
      • als Ergebnis davon, dass der metrische Wert größer als ein anderer metrischer Wert ist, Hinzufügen einer Transformation, die den ersten Positionswert und den zweiten Positionswert umfasst, zu dem Satz von Transformationen.
    31. 31. Maschinenlesbares Medium nach einer der Klauseln 26-30, wobei der Satz von Anweisungen ferner Anweisungen umfasst, die bei Durchführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen, die Elemente in dem einen oder den mehreren Sätzen von Daten umzuordnen, indem sie eine erste Teilmenge des einen oder der mehreren Sätze von Daten, die einen ersten Positionswert aufweisen, und eine zweite Teilmenge des einen oder der mehreren Sätze von Daten, die eine zweite Position aufweisen, auswählen und die erste Teilmenge und die zweite Teilmenge austauschen, um eine Menge einer Klasse von Datenwerten in dem einen oder den mehreren Sätzen von Daten zu erhöhen, die gemäß einer oder mehrerer Spärlichkeitsbedingungen beschnitten werden sollen.
    32. 32. Maschinenlesbares Medium nach einer der Klauseln 26-31, wobei der eine oder die mehreren Prozessoren ferner einen oder mehrere spärliche Tensorkerne umfassen, um die eine oder die mehreren Berechnungen mindestens teilweise basierend auf der Erhöhung der Spärlichkeit des einen oder der mehreren Sätze von Daten durchzuführen.
    33. 33. Maschinenlesbares Medium nach einer der Klauseln 26-32, wobei der Satz von Anweisungen ferner Anweisungen umfasst, die bei Durchführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen, die Erhöhung der Spärlichkeit zu veranlassen, indem sie einen oder mehrere Datenwerte in einer Teilmenge des einen oder der mehreren Sätze von Daten auf einen Null-Datenwert einstellen, so dass ein oder mehrere Operanden der einen oder der mehreren Berechnungen eine oder mehrere Spärlichkeitsbedingungen erfüllen.
    34. 34. Maschinenlesbares Medium nach einer der Klauseln 26-33, wobei der eine oder die mehreren Sätze von Daten einer oder mehreren Ebenen eines neuronalen Netzes zugeordnet sind, die eine verbesserte Genauigkeit als Ergebnis der Erhöhung der Spärlichkeit aufweisen.
  • Die Verwendung der Ausdrücke „ein“ und „eine“ und „der/die/das“ und ähnlicher Referenten im Kontext des Beschreibens offenbarter Ausführungsformen (insbesondere im Kontext der folgenden Ansprüche) ist so auszulegen, dass sie sowohl den Singular als auch den Plural abdeckt, sofern hierin nichts anderes angegeben ist oder der Kontext dem eindeutig widerspricht, und nicht als Definition eines Ausdrucks. Die Ausdrücke „umfassend“, „aufweisend“, „beinhaltend“ und „enthaltend“ sind als offene Ausdrücke auszulegen (die „einschließlich, aber nicht beschränkt auf“ bedeuten), sofern nicht anderweitig angemerkt. Wenn es unmodifiziert vorliegt und sich auf physische Verbindungen bezieht, ist „verbunden“ als teilweise oder vollständig ineinander enthalten, aneinander angebracht oder aneinander angefügt auszulegen, auch wenn ein Element dazwischenliegt. Die Nennung von Wertebereichen hierin soll lediglich als kurzes Verfahren zur einzelnen Bezugnahme auf jeden separaten Wert dienen, der in den Bereich fällt, es sei denn, hierin ist etwas anderes angegeben, und jeder separate Wert ist in die Beschreibung eingeschlossen, als ob er einzeln hierin wiedergegeben wäre. In mindestens einer Ausführungsform ist die Verwendung des Ausdrucks „Satz“ bzw. „Menge“ (z. B. „ein Satz bzw. eine Menge von Gegenständen“) oder „Teilmenge“ als eine nicht leere Sammlung auszulegen, die ein oder mehrere Elemente umfasst, es sei denn, es ist etwas anderes angemerkt oder der Kontext widerspricht dem. Sofern nichts anderes angegeben ist oder der Kontext dem widerspricht, bezeichnet ferner der Ausdruck „Teilmenge“ eines entsprechenden Satzes nicht notwendigerweise eine richtige Teilmenge des entsprechenden Satzes, sondern die Teilmenge und der entsprechende Satz können gleich sein.
  • Sofern nicht spezifisch etwas anderes genannt ist oder der Kontext dem eindeutig widerspricht, ist verbindende Sprache, wie etwa Formulierungen der Form „wenigstens eines von A, B und C“ oder „mindestens eines von A, B und C“, andernfalls in dem Kontext zu verstehen, in dem sie allgemein verwendet werden, um darzustellen, dass ein Gegenstand, ein Ausdruck usw. entweder A oder B oder C oder eine beliebige nicht leere Teilmenge des Satzes aus A und B und C sein kann. Zum Beispiel beziehen sich in dem veranschaulichten Beispiel eines Satzes, der drei Elemente aufweist, beziehen sich die verbindenden Formulierungen „wenigstens eines von A, B und C“ und „mindestens eines von A, B und C“ auf einen beliebigen der folgenden Sätze: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Somit soll derartige verbindende Sprache im Allgemeinen nicht implizieren, dass bestimmte Ausführungen es erforderlich machen, dass mindestens eines von A, mindestens eines von B und mindestens eines von C vorhanden ist. Sofern nichts anderes angemerkt ist oder der Kontext dem widerspricht, gibt der Ausdruck „Vielzahl“ einen Zustand der Pluralität an (z. B. gibt „eine Vielzahl von Gegenständen“ mehrere Gegenstände an). In mindestens einer Ausführungsform beträgt die Anzahl der Gegenstände in einer Vielzahl mindestens zwei, es können aber auch mehr sein, wenn dies entweder explizit oder durch den Kontext angegeben ist. Sofern nichts anderes genannt ist oder es anderweitig aus dem Kontext ersichtlich ist, bedeutet die Formulierung „auf Grundlage von“ „mindestens zum Teil auf Grundlage von“ und nicht „ausschließlich auf Grundlage von“.
  • Hierin beschriebene Operationen von Prozessen können in einer beliebigen geeigneten Reihenfolge durchgeführt werden, sofern es hierin nicht anders angegeben ist oder der Kontext dem anderweitig eindeutig widerspricht. In mindestens einer Ausführungsform wird ein Prozess, wie etwa die hierin beschriebenen Prozesse (oder Variationen und/oder Kombinationen davon), unter der Steuerung von einem oder mehreren Computersystemen durchgeführt, die mit ausführbaren Anweisungen konfiguriert sind, und er ist als Code (z. B. ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen), der zusammen auf einem oder mehreren Prozessoren ausgeführt wird, durch Hardware oder Kombinationen davon implementiert. In mindestens einer Ausführungsform ist Code auf einem computerlesbaren Speichermedium gespeichert, zum Beispiel in Form eines Computerprogramms, das eine Vielzahl von Anweisungen umfasst, die durch einen oder mehrere Prozessoren ausgeführt werden können. In mindestens einer Ausführungsform ist ein computerlesbares Speichermedium ein nichttransitorisches computerlesbares Speichermedium, das transitorische Signale (z. B. eine sich ausbreitende transiente elektrische oder elektromagnetische Übertragung) ausschließt, aber nichttransitorische Datenspeicherschaltungen (z. B. Puffer, Cache und Warteschlangen) innerhalb von Sendeempfängern von transitorischen Signalen einschließt. In mindestens einer Ausführungsform ist der Code (z. B. ausführbarer Code oder Quellcode) auf einem Satz von einem oder mehreren nichttransitorischen computerlesbaren Speichermedien gespeichert, auf denen ausführbare Anweisungen gespeichert sind (oder einem anderen Speicher zum Speichern ausführbarer Anweisungen), die bei Ausführung (d. h. als Ergebnis der Ausführung) durch einen oder mehrere Prozessoren eines Computersystems das Computersystem dazu veranlassen, hierin beschriebene Operationen durchzuführen. Ein Satz von nichttransitorischen computerlesbaren Speichermedien umfasst in mindestens einer Ausführungsform mehrere nichttransitorische computerlesbare Speichermedien und einem oder mehreren der einzelnen nichttransitorischen Speichermedien mehrerer nichttransitorischer computerlesbarer Speichermedien fehlt der gesamte Code, während mehrere nichttransitorische computerlesbare Speichermedien zusammen den gesamten Code speichern. In mindestens einer Ausführungsform werden die ausführbaren Anweisungen so ausgeführt, dass unterschiedliche Anweisungen durch unterschiedliche Prozessoren ausgeführt werden - zum Beispiel speichert ein nichttransitorisches computerlesbares Speichermedium Anweisungen und eine hauptsächliche zentrale Verarbeitungseinheit („CPU“) führt einige der Anweisungen aus, während eine Grafikverarbeitungseinheit („GPU“) andere Anweisungen ausführt. In mindestens einer Ausführungsform weisen unterschiedliche Komponenten eines Computersystems separate Prozessoren auf und führen unterschiedliche Prozessoren unterschiedliche Teilmengen von Anweisungen aus.
  • Dementsprechend sind in mindestens einer Ausführungsform Computersysteme so konfiguriert, dass sie einen oder mehrere Dienste implementieren, die einzeln oder zusammen Operationen der hierin beschriebenen Prozesse durchführen, und derartige Computersysteme sind mit geeigneter Hardware und/oder Software konfiguriert, die eine Durchführung der Operationen ermöglichen. Ferner ist ein Computersystem, das mindestens eine Ausführungsform der vorliegenden Offenbarung implementiert, eine einzelne Vorrichtung und in einer anderen Ausführungsform ein verteiltes Computersystem, das mehrere Vorrichtungen umfasst, die unterschiedlich arbeiten, sodass das verteilte Computersystem die hierin beschriebenen Operationen durchführt und sodass eine einzelne Vorrichtung nicht alle Operationen durchführt.
  • Die Verwendung jeglicher und aller Beispiele oder beispielhafter Wortwahl (z. B. „wie etwa“), die hierin bereitgestellt ist, soll lediglich die Ausführungsformen der Offenbarung besser verdeutlichen und stellt keine Einschränkung des Umfangs der Offenbarung dar, es sei denn, es ist etwas anderes beansprucht. Keinerlei Wortwahl in der Beschreibung sollte so ausgelegt werden, dass sie ein beliebiges nicht beanspruchtes Element als für die Umsetzung der Offenbarung wesentlich angibt.
  • Jegliche Referenzen, einschließlich Veröffentlichungen, Patentanmeldungen und Patenten, die hierin erwähnt werden, sind hiermit durch Bezugnahme in demselben Maße aufgenommen, als wäre jede Referenz einzeln und spezifisch als durch Referenz eingeschlossen angegeben und in ihrer Gesamtheit hierin ausgeführt.
  • In der Beschreibung und den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen verwendet werden. Es versteht sich, dass diese Ausdrücke nicht als Synonyme füreinander beabsichtigt sein können. Vielmehr kann in konkreten Beispielen „verbunden“ oder „gekoppelt“ verwendet werden, um anzugeben, dass zwei oder mehr Elemente in direktem oder indirektem physischem oder elektrischem Kontakt miteinander stehen. Mit „gekoppelt“ kann auch gemeint sein, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, jedoch trotzdem miteinander zusammenwirken oder interagieren.
  • Sofern nicht ausdrücklich anders angegeben, versteht es sich, dass sich Begriffe wie „Verarbeitung“, „Berechnung“, „Berechnen“, „Bestimmen“ oder dergleichen in der gesamten Beschreibung auf Handlungen und/oder Prozesse eines Computers oder Rechensystems oder einer ähnlichen elektronischen Rechenvorrichtung, die Daten, die als physische, z. B. elektronische, Größen in den Registern und/oder Speichern des Rechensystems dargestellt sind, manipulieren und/oder in andere Daten umwandeln, die auf ähnliche Weise als physische Größen in den Speichern, Registern oder anderen derartigen Informationsspeicher-, -übertragungs- oder -anzeigevorrichtungen des Rechensystems dargestellt sind.
  • Auf ähnliche Weise kann sich der Ausdruck „Prozessor“ auf eine beliebige Vorrichtung oder einen beliebigen Abschnitt einer Vorrichtung beziehen, die/der elektronische Daten aus Registern und/oder Speicher verarbeitet und diese elektronischen Daten in andere elektronische Daten umwandelt, die in Registern und/oder Speicher gespeichert werden können. Als nicht einschränkende Beispiele kann der „Prozessor“ eine CPU oder eine GPU sein. Eine „Rechenplattform“ kann einen oder mehrere Prozessoren umfassen. Wie hierin verwendet, können „Software“-Prozesse zum Beispiel Software- und/oder Hardware-Entitäten beinhalten, die im Verlauf der Zeit Arbeit verrichten, wie etwa Tasks, Threads und intelligente Agenten. Außerdem kann sich jeder Prozess auf mehrere Prozesse beziehen, um Anweisungen nacheinander oder parallel, kontinuierlich oder intermittierend auszuführen. In mindestens einer Ausführungsform werden die Ausdrücke „System“ und „Verfahren“ hierin insofern austauschbar verwendet, dass ein System ein oder mehrere Verfahren verkörpern kann und die Verfahren als System betrachtet werden können.
  • Im vorliegenden Dokument kann auf das Erhalten, Erfassen, Empfangen oder Eingeben von analogen oder digitalen Daten in ein Teilsystem, ein Computersystem oder eine computerimplementierte Maschine Bezug genommen werden. In mindestens einer Ausführungsform kann der Prozess des Erhaltens, Erfassens, Empfangens oder Eingebens von analogen und digitalen Daten auf eine Vielfalt von Weisen erzielt werden, wie etwa durch das Empfangen von Daten als Parameter eines Funktionsaufrufs oder eines Aufrufs einer Anwendungsprogrammierschnittstelle. In einigen Implementationen kann der Prozess des Erhaltens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch die Übertragung von Daten über eine serielle oder parallele Schnittstelle erfolgen. In einer anderen Implementierung kann der Prozess des Erhaltens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch das Übermitteln von Daten über ein Computernetz von der bereitstellenden Entität zu der erfassenden Entität erfolgen. Es kann auch auf das Bereitstellen, Ausgeben, Übermitteln, Senden oder Darstellen von analogen oder digitalen Daten Bezug genommen werden. In verschiedenen Beispielen kann der Prozess des Bereitstellens, Ausgebens, Übermittelns, Sendens oder Darstellens von analogen oder digitalen Daten durch das Übermitteln von Daten als Eingabe- oder Ausgabeparameter eines Funktionsaufrufs, eines Parameters einer Anwendungsprogrammierschnittstelle oder eines Interprozesskommunikationsmechanismus erfolgen.
  • Obwohl die vorstehende Erörterung beispielhafte Implementationen der beschriebenen Techniken darlegt, können auch andere Architekturen verwendet werden, um die beschriebene Funktionalität zu implementieren, und sie sollen im Umfang dieser Offenbarung liegen. Darüber hinaus könnten, obwohl spezifische Verteilungen von Zuständigkeiten zum Zwecke der Erörterung vorstehend definiert sind, verschiedene Funktionen und Zuständigkeiten in Abhängigkeit von den Umständen anders verteilt und aufgeteilt werden.
  • Obwohl der Gegenstand ferner in für Strukturmerkmale und/oder Verfahrenshandlungen spezifischer Sprache beschrieben wurde, versteht sich, dass der in den beigefügten Ansprüchen beanspruchte Gegenstand nicht unbedingt auf die beschriebenen spezifischen Merkmale oder Handlungen beschränkt ist. Vielmehr werden spezifische Merkmale und Handlungen als beispielhafte Formen zum Implementieren 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 Nicht-Patentliteratur
    • mindestens Teilen der Knoten C.R.s 1016(1)-1016(N [0063]

Claims (34)

  1. Prozessor, umfassend: eine oder mehrere Schaltungen, um eine Erhöhung der Spärlichkeit eines oder mehrerer Sätze von Daten zu veranlassen, indem mindestens Elemente in dem einen oder den mehreren Sätzen von Daten umgeordnet werden, mit denen eine oder mehrere Berechnungen durch den Prozessor durchgeführt werden sollen.
  2. Prozessor nach Anspruch 1, wobei die eine oder mehreren Schaltungen die Erhöhung der Spärlichkeit mindestens durch Umordnen von Elementen in dem einen oder den mehreren Sätzen von Daten veranlassen, so dass der eine oder die mehreren Sätze von Daten eine oder mehrere Teilmengen von Daten umfassen, die mit einer oder mehreren strukturellen Spärlichkeitsbedingungen übereinstimmen.
  3. Prozessor nach Anspruch 2, wobei die eine oder mehrere strukturelle Spärlichkeitsbedingungen dem einen oder den mehreren Sätzen von Daten eine Beschränkung auferlegen, wodurch der eine oder die mehreren Teilmengen von Daten mindestens eine erste Menge von Nicht-Null-Datenwerten und eine zweite Menge von Null-Datenwerten umfassen.
  4. Prozessor nach Anspruch 2, wobei die eine oder die mehreren Schaltungen Elemente in dem einen oder den mehreren Datensätzen umordnen, indem sie eine erste Teilmenge der einen oder der mehreren Teilmengen von Daten, die eine erste Position in dem einen oder den mehreren Datensätzen aufweisen, mit einer zweiten Teilmenge der einen oder der mehreren Teilmengen von Daten, die eine zweite Position in dem einen oder den mehreren Datensätzen aufweisen, vertauschen.
  5. Prozessor nach Anspruch 1, wobei: der eine oder die mehreren Sätze von Daten numerische Werte umfassen, die unter Verwendung mindestens eines ersten Indexes und eines zweiten Indexes zugänglich sind; und der eine oder die mehreren Sätze von Daten eine erste Teilmenge von Daten umfassen, die dem ersten Index zugeordnet sind, und eine zweite Teilmenge von Daten, die dem zweiten Index zugeordnet sind; und die eine oder die mehreren Schaltungen die Erhöhung der Spärlichkeit durch mindestens Austauschen der numerischen Werte der ersten Teilmenge von Daten, die dem ersten Index zugeordnet sind, mit der zweiten Teilmenge von Daten, die der zweiten Matrix zugeordnet sind, veranlassen.
  6. Prozessor nach Anspruch 1, wobei der eine oder die mehreren Sätze von Daten numerische Werte umfassen, die Gewichtungsparametern entsprechen, die einem oder mehreren neuronalen Netzen zugeordnet sind.
  7. Prozessor nach Anspruch 1, wobei jeder Datenwert in dem einen oder den mehreren Sätzen von Daten einem ersten Indexwert und einem zweiten Indexwert zugeordnet ist, wobei der erste Indexwert und der zweite Indexwert eine Position jedes Datenwertes in dem einen oder den mehreren Sätzen von Daten angeben.
  8. Prozessor nach Anspruch 1, wobei die eine oder die mehreren Schaltungen die Erhöhung der Spärlichkeit des einen oder der mehreren Sätze von Daten unter Verwendung eines Deep-Learning-Frameworks veranlassen, um einen Satz von Transformationen zu bestimmen, um zwei oder mehr Teilmengen von Daten in dem einen oder den mehreren Sätzen von Daten zu vertauschen, wobei das Deep-Learning-Framework ferner einen oder mehrere Datenwerte in den zwei oder mehr Teilmengen von Daten auf Null einstellt.
  9. System, umfassend: einen oder mehrere Prozessoren; und Speicher, der Anweisungen beinhaltet, die bei Ausführung durch den einen oder die mehreren Prozessoren das Computersystem mindestens zu Folgendem veranlassen: Veranlassen einer Erhöhung der Spärlichkeit eines oder mehrerer Sätze von Daten durch mindestens Umordnen von Elementen in dem einen oder den mehreren Sätzen von Daten, auf denen eine oder mehrere Berechnungen durch den einen oder die mehreren Prozessoren durchgeführt werden sollen.
  10. System nach Anspruch 9, wobei die Anweisungen ferner Anweisungen beinhalten, die bei Ausführung durch den einen oder die mehreren Prozessoren ein Deep-Learning-Framework veranlassen, den einen oder die mehreren Sätze von Daten mindestens teilweise basierend auf einer oder mehreren Spärlichkeitsbedingungen zu transformieren.
  11. System nach Anspruch 10, wobei die eine oder mehreren Spärlichkeitsbedingungen mindestens eine Bedingung umfassen, wobei eine Teilmenge des einen oder der mehreren Sätze von Daten mindestens eine erste Menge von Nicht-Null-Datenwerten und eine zweite Menge von Null-Datenwerten umfasst.
  12. System nach Anspruch 10, wobei das Deep-Learning-Framework den einen oder die mehreren Sätze von Daten durch Austauschen mindestens einer ersten Teilmenge des einen oder der mehreren Sätze von Daten, die einem ersten Positionswert zugeordnet sind, mit mindestens einer zweiten Teilmenge des einen oder der mehreren Sätze von Daten, die einem zweiten Positionswert zugeordnet sind, transformiert.
  13. System nach Anspruch 10, wobei das Deep-Learning-Framework einen Satz von Transformationen bestimmt, um die Elemente in dem einen oder den mehreren Sätzen von Daten durch Folgendes umzuordnen: zufälliges Auswählen einer ersten Teilmenge des einen oder der mehreren Sätze von Daten, die einem ersten Positionswert zugeordnet sind, und einer zweiten Teilmenge des einen oder der mehreren Sätze von Daten, die einem zweiten Positionswert zugeordnet sind; Austauschen der ersten Teilmenge und der zweiten Teilmenge; Einstellen eines oder mehrerer Datenwerte in der ersten Teilmenge und der zweiten Teilmenge auf einen Nullwert; Berechnen einer Metrik, die einem neuronalen Netz zugeordnet ist, das dem einen oder den mehreren Sätzen von Daten entspricht; und als Ergebnis davon, dass die Metrik größer als eine andere Metrik ist, Hinzufügen einer Transformation, die den ersten Positionswert und den zweiten Positionswert umfasst, zu dem Satz von Transformationen.
  14. System nach Anspruch 9, wobei der eine oder die mehreren Sätze von Daten einer oder mehreren Ebenen eines neuronalen Netzes zugeordnet sind und der eine oder die mehreren Sätze von Datenwerten nur numerische Werte umfassen, die nicht Null sind.
  15. System nach Anspruch 9, wobei die Anweisungen ferner Anweisungen beinhalten, die bei Ausführung durch den einen oder die mehreren Prozessoren die Erhöhung der Spärlichkeit veranlassen, indem sie einen oder mehrere Datenwerte in einer Teilmenge des einen oder der mehreren Sätze von Daten auf einen Nullwert einstellen, wobei der eine oder die mehreren Datenwerte in der Teilmenge numerische Werte sind, die einen oder mehrere Gewichtungswerte darstellen, die einem neuronalen Netz zugeordnet sind, und wobei die Teilmenge mindestens teilweise basierend auf einer Spärlichkeitsbedingung bestimmt wird.
  16. System nach Anspruch 9, wobei der eine oder die mehreren Prozessoren Parallelverarbeitungseinheiten sind, wobei die Parallelverarbeitungseinheiten einen oder mehrere spärliche Tensorkerne umfassen, um die eine oder die mehreren Berechnungen mindestens teilweise basierend auf einer oder mehreren strukturellen Bedingungen auf dem einen oder den mehreren Sätzen von Daten zu beschleunigen.
  17. Verfahren, umfassend: Veranlassen einer Erhöhung der Spärlichkeit eines oder mehrerer Sätze von Daten durch mindestens Umordnen von Elementen in dem einen oder den mehreren Sätzen von Daten, auf denen eine oder mehrere Berechnungen durchgeführt werden sollen.
  18. Verfahren nach Anspruch 17, ferner umfassend Veranlassen der Erhöhung der Spärlichkeit des einen oder der mehreren Sätze von Daten unter Verwendung eines Deep-Learning-Frameworks, wobei das Deep-Learning-Framework mindestens die Elemente in dem einen oder den mehreren Sätzen von Daten so umordnet, dass der eine oder die mehreren Sätze von Daten eine oder mehrere Teilmengen von Daten umfassen, die mit einer oder mehreren strukturellen Spärlichkeitsbedingungen übereinstimmen.
  19. Verfahren nach Anspruch 18, wobei die eine oder mehreren strukturellen Spärlichkeitsbedingungen mindestens eine Einschränkung für den einen oder die mehreren Sätze von Daten umfassen, wobei die Einschränkung erfordert, dass der eine oder die mehreren Teilmengen von Daten mindestens eine erste Menge von Nicht-Null-Datenwerten und eine zweite Menge von Null-Datenwerten umfassen.
  20. Verfahren nach Anspruch 18, wobei das Deep-Learning-Framework die Elemente in dem einen oder den mehreren Sätzen von Daten umordnet, indem es eine erste Teilmenge der einen oder mehreren Teilmengen von Daten, die eine erste Position in dem einen oder den mehreren Sätzen von Daten aufweisen, mit einer zweiten Teilmenge der einen oder der mehreren Teilmengen von Daten, die eine zweite Position in dem einen oder den mehreren Sätzen von Daten aufweisen, vertauscht.
  21. Verfahren nach Anspruch 18, wobei das Deep-Learning-Framework einen Satz von Transformationen bestimmt, um die Elemente in dem einen oder den mehreren Sätzen von Daten durch Folgendes umzuordnen: zufälliges Auswählen einer ersten Teilmenge der einen oder mehreren Teilmengen von Daten, die einem ersten Positionswert zugeordnet sind, und einer zweiten Teilmenge der einen oder mehreren Teilmengen von Daten, die einem zweiten Positionswert zugeordnet sind; Austauschen der ersten Teilmenge und der zweiten Teilmenge; Einstellen eines oder mehrerer Datenwerte in der ersten Teilmenge und der zweiten Teilmenge auf einen Nullwert; Berechnen eines metrischen Wertes, der einem neuronalen Netz zugeordnet ist, das dem einen oder den mehreren Sätzen von Daten entspricht; und als Ergebnis davon, dass der metrische Wert größer als ein anderer metrischer Wert ist, Hinzufügen einer Transformation, die den ersten Positionswert und den zweiten Positionswert umfasst, zu dem Satz von Transformationen.
  22. Verfahren nach Anspruch 18, wobei das Deep-Learning-Framework einen Satz von Transformationen bestimmt, um die Elemente in dem einen oder den mehreren Sätzen von Daten durch Folgendes umzuordnen: Auswählen einer ersten Teilmenge des einen oder der mehreren Sätze von Daten und einer zweiten Teilmenge des einen oder der mehreren Sätze von Daten; Bestimmen einer oder mehrerer erster Transformationen der ersten Teilmenge, wobei die eine oder mehreren ersten Transformationen einen ersten einen oder mehrere Sätze sequentieller Datenwerte in der ersten Teilmenge mit einem zweiten einen oder mehreren Sätzen sequentieller Datenwerte in der ersten Teilmenge austauschen, so dass ein erster, einem neuronalen Netz zugeordneter metrischer Wert größer ist als ein zweiter, dem neuronalen Netz zugeordneter metrischer Wert; Bestimmen einer oder mehrerer zweiter Transformationen der zweiten Teilmenge, wobei die eine oder mehreren zweiten Transformationen einen ersten einen oder mehrere Sätze sequentieller Datenwerte in der zweiten Teilmenge mit einem zweiten einen oder mehreren Sätzen sequentieller Datenwerte in der zweiten Teilmenge austauschen, so dass ein dritter, dem neuronalen Netz zugeordneter metrischer Wert größer ist als der zweite, dem neuronalen Netz zugeordnete metrische Wert; und Kombinieren der einen oder mehreren ersten Transformationen mit der einen oder den mehreren zweiten Transformationen in den Satz von Transformationen.
  23. Verfahren nach Anspruch 17, wobei der eine oder die mehreren Sätze von Daten einer oder mehreren Ebenen eines neuronalen Netzes zugeordnet sind, die einen verbesserten metrischen Wert als Ergebnis der Erhöhung der Spärlichkeit aufweisen.
  24. Verfahren nach Anspruch 17, wobei die Erhöhung der Spärlichkeit ferner dadurch veranlasst wird, dass ein oder mehrere Datenwerte in einer Teilmenge des einen oder der mehreren Sätze von Daten auf einen Null-Datenwert eingestellt werden, so dass ein oder mehrere Operanden der einen oder mehreren Berechnungen eine oder mehrere Spärlichkeitsbedingungen erfüllen.
  25. Verfahren nach Anspruch 17, wobei eine oder mehrere Parallelverarbeitungseinheiten die eine oder mehreren Berechnungen durchführen, wobei die eine oder mehreren Parallelverarbeitungseinheiten einen oder mehrere spärliche Tensorkerne umfassen, um eine oder mehrere strukturelle Bedingungen als Ergebnis der Erhöhung der Spärlichkeit zu nutzen.
  26. Maschinenlesbares Medium, das einen darauf gespeicherten Satz von Anweisungen aufweist, die bei Durchführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren mindestens zu Folgendem veranlassen: Veranlassen einer Erhöhung der Spärlichkeit eines oder mehrerer Sätze von Daten durch mindestens Umordnen von Elementen in dem einen oder den mehreren Sätzen von Daten, auf denen eine oder mehrere Berechnungen durch den einen oder die mehreren Prozessoren durchgeführt werden sollen.
  27. Maschinenlesbares Medium nach Anspruch 26, wobei der Satz von Anweisungen ferner Anweisungen umfasst, die bei Durchführung durch den einen oder die mehreren Prozessoren den einen oder die mehreren Prozessoren veranlassen, die Elemente in dem einen oder den mehreren Sätzen von Daten durch Anwenden eines Satzes von Transformationen auf den einen oder die mehreren Sätze von Daten gemäß einer oder mehreren strukturellen Spärlichkeitsbedingungen umzuordnen.
  28. Maschinenlesbares Medium nach Anspruch 27, wobei die eine oder mehreren strukturellen Spärlichkeitsbedingungen mindestens eine Einschränkung für den einen oder die mehreren Sätze von Daten umfassen, wobei die Einschränkung erfordert, dass die eine oder mehreren Teilmengen von Daten mindestens eine erste Menge von Nicht-Null-Datenwerten und eine zweite Menge von Null-Datenwerten umfassen.
  29. Maschinenlesbares Medium nach Anspruch 27, wobei der Satz von Transformationen mindestens eine Transformation umfasst, die eine erste Teilmenge des einen oder der mehreren Sätze von Daten, die einen ersten Positionswert in dem einen oder den mehreren Sätzen von Daten aufweisen, mit einer zweiten Teilmenge des einen oder der mehreren Sätze von Daten, die einen zweiten Positionswert in dem einen oder den mehreren Sätzen von Daten aufweisen, austauscht.
  30. Maschinenlesbares Medium nach Anspruch 26, wobei der Satz von Anweisungen ferner Anweisungen umfasst, die bei Durchführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen, einen Satz von Transformationen zu bestimmen, um die Elemente in dem einen oder den mehreren Sätzen von Daten durch Folgendes umzuordnen: zufälliges Auswählen einer ersten Teilmenge des einen oder der mehreren Sätze von Daten, die einem ersten Positionswert zugeordnet sind, und einer zweiten Teilmenge des einen oder der mehreren Sätze von Daten, die einem zweiten Positionswert zugeordnet sind; Austauschen der ersten Teilmenge und der zweiten Teilmenge; Einstellen eines oder mehrerer Datenwerte in der ersten Teilmenge und der zweiten Teilmenge auf einen Nullwert; Berechnen eines metrischen Wertes, der einem neuronalen Netz zugeordnet ist, das dem einen oder den mehreren Sätzen von Daten entspricht; und als Ergebnis davon, dass der metrische Wert größer als ein anderer metrischer Wert ist, Hinzufügen einer Transformation, die den ersten Positionswert und den zweiten Positionswert umfasst, zu dem Satz von Transformationen.
  31. Maschinenlesbares Medium nach Anspruch 26, wobei der Satz von Anweisungen ferner Anweisungen umfasst, die bei Durchführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen, die Elemente in dem einen oder den mehreren Sätzen von Daten umzuordnen, indem sie eine erste Teilmenge des einen oder der mehreren Sätze von Daten, die einen ersten Positionswert aufweisen, und eine zweite Teilmenge des einen oder der mehreren Sätze von Daten, die eine zweite Position aufweisen, auswählen und die erste Teilmenge und die zweite Teilmenge austauschen, um eine Menge einer Klasse von Datenwerten in dem einen oder den mehreren Sätzen von Daten zu erhöhen, die gemäß einer oder mehrerer Spärlichkeitsbedingungen beschnitten werden sollen.
  32. Maschinenlesbares Medium nach Anspruch 26, wobei der eine oder die mehreren Prozessoren ferner einen oder mehrere spärliche Tensorkerne umfassen, um die eine oder die mehreren Berechnungen mindestens teilweise basierend auf der Erhöhung der Spärlichkeit des einen oder der mehreren Sätze von Daten durchzuführen.
  33. Maschinenlesbares Medium nach Anspruch 26, wobei der Satz von Anweisungen ferner Anweisungen umfasst, die bei Durchführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen, die Erhöhung der Spärlichkeit zu veranlassen, indem sie einen oder mehrere Datenwerte in einer Teilmenge des einen oder der mehreren Sätze von Daten auf einen Null-Datenwert einstellen, so dass ein oder mehrere Operanden der einen oder der mehreren Berechnungen eine oder mehrere Spärlichkeitsbedingungen erfüllen.
  34. Maschinenlesbares Medium nach Anspruch 26, wobei der eine oder die mehreren Sätze von Daten einer oder mehreren Ebenen eines neuronalen Netzes zugeordnet sind, die eine verbesserte Genauigkeit als Ergebnis der Erhöhung der Spärlichkeit aufweisen.
DE112021007476.8T 2021-04-09 2021-04-09 Erhöhung der Spärlichkeit in Datensätzen Pending DE112021007476T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/086080 WO2022213341A1 (en) 2021-04-09 2021-04-09 Increasing sparsity in data sets

Publications (1)

Publication Number Publication Date
DE112021007476T5 true DE112021007476T5 (de) 2024-01-25

Family

ID=83509298

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112021007476.8T Pending DE112021007476T5 (de) 2021-04-09 2021-04-09 Erhöhung der Spärlichkeit in Datensätzen

Country Status (6)

Country Link
US (1) US20220327101A1 (de)
JP (1) JP2024514374A (de)
KR (1) KR20220140694A (de)
CN (1) CN115461759A (de)
DE (1) DE112021007476T5 (de)
WO (1) WO2022213341A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117149778B (zh) * 2023-10-30 2024-01-16 之江实验室 稀疏张量运算加速方法、系统、计算机设备和存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001086431A1 (en) * 2000-05-05 2001-11-15 Lee Ruby B A method and system for performing subword permutation instructions for use in two-dimensional multimedia processing
US6898691B2 (en) * 2001-06-06 2005-05-24 Intrinsity, Inc. Rearranging data between vector and matrix forms in a SIMD matrix processor
US10346944B2 (en) * 2017-04-09 2019-07-09 Intel Corporation Machine learning sparse computation mechanism
US10572568B2 (en) * 2018-03-28 2020-02-25 Intel Corporation Accelerator for sparse-dense matrix multiplication
KR20210024865A (ko) * 2019-08-26 2021-03-08 삼성전자주식회사 데이터를 처리하는 방법 및 장치
CN112069460A (zh) * 2020-09-18 2020-12-11 Oppo广东移动通信有限公司 数据处理方法、装置以及电子设备
US11977885B2 (en) * 2020-11-30 2024-05-07 Intel Corporation Utilizing structured sparsity in systolic arrays
US20220383121A1 (en) * 2021-05-25 2022-12-01 Applied Materials, Inc. Dynamic activation sparsity in neural networks

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
mindestens Teilen der Knoten C.R.s 1016(1)-1016(N

Also Published As

Publication number Publication date
KR20220140694A (ko) 2022-10-18
US20220327101A1 (en) 2022-10-13
JP2024514374A (ja) 2024-04-02
WO2022213341A1 (en) 2022-10-13
CN115461759A (zh) 2022-12-09

Similar Documents

Publication Publication Date Title
DE112020001253T5 (de) Techniken zum Trainieren eines neuronalen Netzes unter Verwendung von Transformationen
DE102021124008A1 (de) Training eines neuronalen netzes unter verwendung robuster temporaler ensemblebildung
DE102021122617A1 (de) Globales föderiertes training für neuronale netze
DE102021113105A1 (de) Techniken zum modifizieren und trainieren eines neuronalen netzwerks
DE112021003301T5 (de) Techniken zur klassifikation mit neuronalen netzen
DE112021002945T5 (de) Kontextbezogene Bildübersetzung mit Hilfe neuronaler Netze
DE112020005364T5 (de) Api für rekurrente neuronale netze
DE102021129825A1 (de) Objekterkennung und kollisionsvermeidung unter verwendung eines neuronalen netzes
DE102021125238A1 (de) Auf fourier-transformation basierte bildsynthese unter verwendung von neuralen netzen
DE102021108927A1 (de) Abstandsbestimmungen unter verwendung eines oder mehrerer neuronaler netzwerke
DE112021000953T5 (de) Erzeugung von kennzeichen mittels neuronaler netze
DE112021001461T5 (de) Verbesserte objektidentifizierung mittels eines oder mehrerer neuronaler netze
DE102022114796A1 (de) Pretraining-framework für neuronale netzwerke
DE112021001946T5 (de) Attribut-bewusste bildgeneration unter verwendung von neuronalen netzwerken
DE112021001807T5 (de) Beschleunigtes Training für neuronale Netzmodelle
DE112021001102T5 (de) Hybride quantisierung von neuronalen netzen für edge-computing-anwendungen
DE102021125533A1 (de) Generierung von differenzierten datenschutzdatensätzen unter verwendung von generativen modellen
DE102021132071A1 (de) Scheduler für neuronales netz
DE102021121493A1 (de) Techniken zum beschneiden neuronaler netzwerke
DE102021131760A1 (de) Anwendungsprogrammierschnittstelle für berechnungen einesneuronalen netzes
DE102022104392A1 (de) Trainingsverfahren für neuronale netze
DE112021007439T5 (de) Erzeugung von begrenzungsrahmen
DE112020007872T5 (de) Erzeugung von bewegten dreidimensionalen modellen unter verwendung von bewegungsübertragung
DE102022129308A1 (de) Verfahren zum partitionieren neuronaler netze
DE112022003525T5 (de) Techniken zur bestimmung der dimensionen von daten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06N0003040000

Ipc: G06N0003049500

R082 Change of representative

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