-
TECHNISCHES GEBIET
-
Mindestens eine Ausführungsform bezieht sich auf Verarbeitungsressourcen zum Reduzieren von Abhängigkeiten in einem neuronalen Netzwerk. Zum Beispiel bezieht sich mindestens eine Ausführungsform auf Prozessoren, die bewirken, dass zwei oder mehr nachfolgende Schichten eines neuronalen Netzwerks von separaten Rechenressourcen unter Verwendung einer Ausgabe von einer vorherigen Schicht ausgeführt werden.
-
ALLGEMEINER STAND DER TECHNIK
-
Die Zunahme der Verwendung von Deep Learning (DL) und anderen Modellen des maschinellen Lernens ist vorherrschend und die Datensätze, die zum Trainieren dieser verwendet werden, werden immer größer, was wiederum zu langwierigen und längeren Trainingszeiten führt. Mit zunehmender Komplexität des maschinellen Lernens werden die Modelle größer und enthalten die Datensätze, die zum Trainieren dieser Modelle verwendet werden, mehr Informationen und wirken sich somit auf die Trainingszeiten aus, da sich auch die Anzahl der einzusetzenden Vorrichtungen erhöht. Der Synchronisations- und Kommunikations-Overhead, der notwendig ist, um die Genauigkeit zwischen der erhöhten Anzahl von Vorrichtungen sicherzustellen, begrenzt die Gesamttrainingszeiten weiter. Herkömmliche Techniken für den Umgang mit großen Datensätzen führen zu Ineffizienzen, die mit immer größer werdenden Datensätzen und komplexeren Modellen immer deutlicher werden.
-
Figurenliste
-
- 1 veranschaulicht eine Darstellung, in der verschiedene Schichten eines neuronalen Netzwerks unter Verwendung verschiedener Rechenressourcen ausgeführt werden sollen, gemäß mindestens einer Ausführungsform;
- 2 veranschaulicht eine Darstellung, in der ein neuronales Netzwerk modifiziert wird, um Abhängigkeiten in Schichten eines neuronalen Netzwerks zu reduzieren, gemäß mindestens einer Ausführungsform;
- 3 veranschaulicht ein Blockdiagramm des Modifizierens eines neuronalen Netzwerks zum Reduzieren der Abhängigkeiten von Schichten, gemäß mindestens einer Ausführungsform;
- 4 veranschaulicht einen Prozess zum Modifizieren eines neuronalen Netzwerks, sodass eine Ausgabe eines Codierers dupliziert wird, und zum Bereitstellen sowohl der Ausgabe als auch der duplizierten Ausgabe für mehrere nachfolgende Schichten, gemäß mindestens einer Ausführungsform;
- 5 veranschaulicht einen Prozess zum Bewirken, dass nachfolgende Schichten in einem modifizierten neuronalen Netzwerk auf separaten Rechenressourcen ausgeführt werden, gemäß mindestens einer Ausführungsform;
- 6 veranschaulicht ein Diagramm der experimentellen Ergebnisse aus der Implementierung eines modifizierten neuronalen Netzwerks mit reduzierten Abhängigkeiten der Schichten an einem ersten Bild, gemäß mindestens einer Ausführungsform;
- 7 veranschaulicht ein Diagramm der experimentellen Ergebnisse aus der Implementierung eines modifizierten neuronalen Netzwerks mit reduzierten Abhängigkeiten der Schichten an einem zweiten Bild, gemäß mindestens einer Ausführungsform;
- 8A veranschaulicht Ableitungs- und/oder Trainingslogik, gemäß mindestens einer Ausführungsform;
- 8B veranschaulicht Ableitungs- und/oder Trainingslogik, gemäß mindestens einer Ausführungsform;
- 9 veranschaulicht das Training und den Einsatz eines neuronalen Netzwerks, gemäß mindestens einer Ausführungsform;
- 10 veranschaulicht ein beispielhaftes Rechenzentrumssystem, gemäß mindestens einer Ausführungsform;
- 11A veranschaulicht ein beispielhaftes autonomes Fahrzeug, gemäß mindestens einer Ausführungsform;
- 11B veranschaulicht ein Beispiel für Kamerapositionen und Sichtfelder für das autonome Fahrzeug aus 11A, gemäß mindestens einer Ausführungsform;
- 11C ist ein Blockdiagramm, das eine beispielhafte Systemarchitektur für das autonome Fahrzeug aus 11A veranschaulicht, gemäß mindestens einer Ausführungsform;
- 11D ist eine Darstellung, die 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;
- Die 16E und 16F veranschaulichen ein gemeinsames Programmiermodell, gemäß mindestens einer Ausführungsform;
- 17 veranschaulicht beispielhafte integrierte Schaltungen und zugehörige Grafikprozessoren, gemäß mindestens einer Ausführungsform;
- Die 18A und 18B veranschaulichen beispielhafte integrierte Schaltungen und zugehörige Grafikprozessoren, gemäß mindestens einer Ausführungsform;
- Die 19A und 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 ein Partitionseinheit, gemäß mindestens einer Ausführungsform;
- 21C veranschaulicht einen Verarbeitungscluster, gemäß mindestens einer Ausführungsform;
- 21D veranschaulicht einen Grafik-Multiprozessor, 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;
- Die 32A und 32B veranschaulichen Thread-Ausführungslogik, die eine Anordnung 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 einen Universalverarbeitungscluster (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 eine Systemdarstellung für ein beispielhaftes System zum Trainieren, Anpassen, Instanziieren und Einsetzen von Modellen des maschinellen Lernens in einer weiterentwickelten Rechenpipeline, gemäß mindestens einer Ausführungsform;
- 39 beinhaltet eine beispielhafte Veranschaulichung einer weiterentwickelten Rechenpipeline 3810A zum Verarbeiten von Bildgebungsdaten, 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 des maschinellen Lernens, 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
-
In mindestens einer Ausführungsform werden die gemäß dieser Offenbarung implementierten Systeme und Verfahren zur Erzeugung eines neuronalen Netzwerks verwendet, um Abhängigkeiten zwischen den Schichten eines neuronalen Netzwerks zu reduzieren. In mindestens einer Ausführungsform wird ein neuronales Netzwerk so modifiziert, dass die Ausgabe von einer Schicht eines neuronalen Netzwerks in mindestens zwei oder mehr nachfolgende Schichten eines neuronalen Netzwerks kopiert wird. In mindestens einer Ausführungsform wird die Ausgabe von einer Schicht und eine kopierte Ausgabe für zwei oder mehr nachfolgende Schichten bereitgestellt, die von separaten Rechenressourcen ausgeführt werden sollen. In mindestens einer Ausführungsform verteilt ein System, das die hierin beschriebenen Techniken implementiert, die Ausgabe einer vorangehenden Schicht eines neuronalen Netzwerks an mehrere Prozessoren, um zu bewirken, dass mehrere Prozessoren nachfolgende Schichten eines neuronalen Netzwerks mindestens teilweise basierend auf einer Ausgabe einer vorangehenden Schicht ausführen. In mindestens einer Ausführungsform beziehen sich separate Rechenressourcen auf separate Prozessoren, Computersysteme, Pipelines, Multiprozessoren und/oder andere Schaltungen innerhalb oder nicht innerhalb desselben Prozessors. In mindestens einer Ausführungsform bezieht sich eine vorangehende Schicht in einem neuronalen Netzwerk auf eine vorherige, vorhergehende oder vorausgehende Schicht, die vor zwei oder mehr nachfolgenden Schichten ausgeführt wird.
-
In mindestens einer Ausführungsform sind die hierin beschriebenen Techniken so anwendbar, dass ein neuronales Netzwerk modifiziert wird, um Abhängigkeiten zwischen den Schichten des neuronalen Netzwerks zu reduzieren. Da Deep-Learning-Modelle immer größer werden, wird das Training dieser großen Modelle zu einer Herausforderung, da es schwierig ist, das Training in die Speicherbegrenzung einer einzelnen Grafikverarbeitungseinheit (GPU) einzupassen. Es gibt mehrere Möglichkeiten, große Modelle auf GPUs zu trainieren. Die Modellkomprimierung, wie z. B. das Training mit gemischter Präzision, verwendet zum Beispiel weniger Bits zur Darstellung des Netzwerks und hilft so, den Speicherverbrauch der GPU zu reduzieren. Die Verwendung von Training mit gemischter Präzision beeinträchtigt jedoch die Genauigkeit und passt nur für ein geringfügig oder mäßig großes Modell auf einer GPU. In einem anderen Beispiel wird Checkpointing durchgeführt, um den Speicher der Zwischen-Merkmalskarten und Gradienten während des Trainings zu reduzieren, sodass der Speicherverbrauch auf O(logn) mit O(nlogn) zusätzlicher Zeit für die Vorwärtsberechnung im Netzwerk der n Schichten reduziert werden kann. Außerdem reduzieren invertierbare Netzwerke den Speicherverbrauch auf 0(1), indem die Netzwerke so modifiziert werden, dass sie invertierbar sind, wodurch die Merkmalskarten in der Rückpropagierung neu berechnet werden und die Genauigkeit für diskriminative Modelle wie das häufig verwendete U-Net für die Segmentierung beeinträchtigt werden könnte. Die Verwendung dieser Techniken ist jedoch sehr anspruchsvoll, da sie die Trainingszeit aufgrund von Neuberechnungen deutlich erhöhen und aufgrund der modalitätserhaltenden Annahme in ihren Designs nicht sehr gut für diskriminative Tasks wie die Segmentierung geeignet sind.
-
Darüber hinaus gibt es zwei gängige Parallelitäten (Datenparallelität und Modellparallelität), die in der Lage sind, große Modelle ohne Informationsverlust und Neuberechnung auf GPUs unterzubringen. Die Datenparallelität dupliziert das Modell und führt aufgeteilte Batches in mehreren Vorrichtungen aus. Die Datenparallelität reduziert jedoch nicht den Speicherbedarf eines Modells pro Vorrichtung und kann das Problem des fehlenden Speichers beim Training großer Modelle nicht lösen. Die Modellparallelität teilt ein Modell in mehrere Partitionen auf und behandelt dieses Problem auf natürliche Weise. Darüber hinaus führt eine weiterentwickelte Modellparallelität (z. B. Pipeline-Parallelität) Partitionen für ein effizientes Training vorrichtungsübergreifend gleichzeitig aus. Die Modellparallelität unterstützt jedoch nur einen begrenzten Satz von Operatoren und Modellen. Zum Beispiel wird bei der Analyse medizinischer Bilder das am weitesten verbreitete Modell, U-Net, von diesen bestehenden Parallelitäten nicht unterstützt. In einem medizinischen Bereich ist es eine häufige Notwendigkeit, dreidimensionale (3D) volumetrische Bilder verarbeiten zu können, was bei neuronalen 3D-Faltungsnetzwerken (Convolution Neural Networks - CNNs) wesentlich mehr Speicher verbraucht als bei ihren 2D-Pendants. Leider ist die aktuelle Berechnung medizinischer Bilder immer noch durch die GPU-Speichergröße begrenzt.
-
Das Training großer Modelle mit großen Eingaben ist bei medizinischen Bildern aufgrund der begrenzten Anzahl von Trainingsdaten eine besondere Herausforderung. Eine große Eingabe erhöht den Kontext, der für das Bildverständnis entscheidend ist. Sie reduziert jedoch die Variation der Trainingseingabe und verschlimmert das Problem des extremen Ungleichgewichts zwischen Hintergrund und relativ kleinen Subjekten (z. B. kleinen Organen und Läsionen), das bei der Berechnung medizinischer Bilder häufig auftritt. Verschiedene Verlustfunktionen wurden vorgeschlagen, um diese Herausforderung zu entschärfen. Zum Beispiel wird ein adaptiver gewichteter Verlust mit einem hybriden Verlust zwischen einem Würfelverlust von Klassenebenenverlust und einem fokalen Verlust von Voxel-Ebenenverlust für die Segmentierung kleiner Organe vorgeschlagen. Das zweite Beispiel ist der Randverlust, der sich von früheren Ansätzen unterscheidet, die unsymmetrische Integrale über den Regionen verwenden. Er verwendet Integrale über dem Rand (Grenzfläche) zwischen den Regionen, was durch eine Niveaumengen-Distanzkarte mit gewichtetem Kreuzentropieverlust unter Ausnutzung eines integralen Ansatzes zur Berechnung von Randvariationen implementiert werden kann. Transferlernen durch Feinabstimmung von einem vorab trainierten Modell ist eine weitere Möglichkeit, die Trainingsschwierigkeit von speziell entwickelten Modellen medizinischer Bilder zu reduzieren. Basierend auf der Lerntheorie, wie z. B. dem Curriculum-Lernen, kann ein Modell gut trainiert werden, indem es zuerst mit leichten Proben/Tasks angepasst wird und später mit schweren Proben/Tasks angepasst wird. In mindestens einer Ausführungsform wird die Beschleunigung der Ableitung in einem neuronalen Netzwerk durch Kopieren der Ausgabe von einer Schicht eines Netzwerks zu einer anderen GPU basierend auf Abhängigkeiten zwischen den Schichten in einem Netzwerk ausgeführt.
-
In mindestens einer Ausführungsform sind die hierin beschriebenen Techniken zur Verbesserung der Verarbeitung großer Modelle mit großen Eingaben so anwendbar, dass eine automatisierte Modellparallelität angewendet wird und es machbar ist, große tiefe 3D-CNNs mit einem großen Eingabe-Patch (z. B. einem ganzen Bild) zu trainieren. In mindestens einer Ausführungsform kann die Segmentierungsgenauigkeit bei Verwendung der automatisierten Modellparallelität auch durch Erhöhung der Modellgröße und der Größe des Eingabekontexts verbessert werden und eine große Eingabe führt zu einer deutlichen Beschleunigung der Ableitung im Vergleich zu einem gleitenden Fenster mit kleinen Patches bei einer Ableitung.
-
In mindestens einer Ausführungsform wird unter Berücksichtigung von Flexibilität und Effizienz ein modifiziertes U-Net (hierin auch als „paralleles U-Net“ bezeichnet) basierend auf einer Pipeline-Parallelitätsbibliothek (z. B. GPipe) entworfen. In mindestens einer Ausführungsform wird ein Modell sequentiell mit kleinen Patches für das Training in einem ersten Stadium, danach mit mittleren Patches und dann für eine große Eingabe angepasst. In mindestens einer Ausführungsform erhöht der Einsatz großer Modelle und des Eingabekontexts die Segmentierungsgenauigkeit. In mindestens einer Ausführungsform reduziert eine große Eingabe auch die Ableitungszeit deutlich, indem die automatische Modellparallelität genutzt wird.
-
In mindestens einer Ausführungsform wird durch die Ausführung großer Modelle und großer Eingaben in GPUs ein paralleles U-Net mit sequentieller Modifikation basierend auf einer automatisierten Parallelität entworfen. In mindestens einer Ausführungsform bewirkt die Verwendung eines parallelen U-Net mit großen Modellen und Eingaben zu einer Erhöhung der Segmentierungsgenauigkeit und zu einer deutlichen Reduzierung der Ableitungszeit. In mindestens einer Ausführungsform ist die Verwendung eines parallelen U-Net für viele Analyse-Tasks an medizinischen Bildern von Vorteil, z. B. für die Registrierung großer Bilder, die Erkennung und die Suche nach neuronalen Architekturen.
-
1 veranschaulicht eine Darstellung 100, in der verschiedene Schichten eines neuronalen Netzwerks 106 unter Verwendung verschiedener Rechenressourcen 108, 110 ausgeführt werden sollen, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform werden die Trainingsdaten 102 über das Netzwerk 104 einem neuronalen Netzwerk 106 bereitgestellt. In mindestens einer Ausführungsform kommunizieren verschiedene Komponenten des Systems 100 unter Verwendung beliebiger einer Vielzahl unterschiedlicher Arten von Netzwerken 104, einschließlich, aber nicht beschränkt auf, lokale Netzwerke (local area networks - LANs) und/oder Weitverkehrsnetzwerke (wide area networks - WANs), über drahtgebundene und/oder drahtlose Kommunikationsprotokolle miteinander und untereinander. In mindestens einer Ausführungsform werden die unterschiedlichen Arten von Netzwerken 104 in Bezug auf 38 weiter unten genauer beschrieben. In mindestens einer Ausführungsform werden die Trainingsdaten 102 über das Netzwerk 104 einem neuronalen Netzwerk 106 von einer lokalen Speichervorrichtung oder einer entfernten Speichervorrichtung (in 1 nicht dargestellt) bereitgestellt. In mindestens einer Ausführungsform wird das neuronale Netzwerk 106 auf einem einzelnen Prozessor (z. B. einer einzelnen GPU) oder mehreren Prozessoren (z. B. mehreren GPUs) ausgeführt. In mindestens einer Ausführungsform ist eine GPU eine Parallelverarbeitungseinheit (PPU). In mindestens einer Ausführungsform ist das neuronale Netzwerk 106 ein einzelnes neuronales Netzwerk mit mehreren Schichten. In mindestens einer Ausführungsform ist in 1 zur Veranschaulichung nur ein neuronales Netzwerk 106 veranschaulicht; die hierin beschriebenen Techniken können jedoch mehr als ein neuronales Netzwerk verwenden, wobei jedes neuronale Netzwerk eine oder mehrere Schichten umfasst. In mindestens einer Ausführungsform umfassen die Trainingsdaten 102 Trainingsbilder (z. B. medizinische Bilder). In mindestens einer Ausführungsform umfassen die Trainingsdaten 102 auch andere Arten von Eingaben (nicht einschränkende Beispiele sind: Video, ganze Zahlen oder Zeichen).
-
In mindestens einer Ausführungsform bewirkt ein Prozessor mit einer oder mehreren Schaltungen, dass Trainingsdaten 102 durch eine Vielzahl von Schichten des neuronalen Netzwerks 106 geleitet werden, um das neuronale Netzwerk 106 zu trainieren. In mindestens einer Ausführungsform bewirkt der Prozessor, dass die Trainingsdaten 102 einem Codierer in einer Schicht (z. B. einer vorangehenden Schicht) des neuronalen Netzwerks 106 bereitgestellt werden. In mindestens einer Ausführungsform, wie in 1 veranschaulicht, beinhaltet die GPU A 108 einen zweiten Codierer, der so konfiguriert ist, dass er die Ausgabe von der vorangehenden Schicht empfängt. In mindestens einer Ausführungsform werden die Ergebnisse der Trainingsdaten 102, nachdem sie einen Codierer in einer vorangehenden Schicht durchlaufen haben, von einem zweiten Codierer in einer anderen Schicht des neuronalen Netzwerks 106 verwendet. In mindestens einer Ausführungsform werden die Ergebnisse der vorangehenden Schicht an einen zweiten Codierer einer anderen Schicht (z. B. einer ersten nachfolgenden Schicht) in der GPU A 108 weitergegeben. In mindestens einer Ausführungsform wird das neuronale Netzwerk 106 so modifiziert, dass eine Kopie der Ausgabe der vorangehenden Schicht auch einer anderen Schicht (z. B. einer zweiten nachfolgenden Schicht) auf einer anderen GPU B 110 bereitgestellt wird. In mindestens einer Ausführungsform bewirkt ein Prozessor, dass die Ausgabe der vorangehenden Schicht und eine Kopie der Ausgabe der vorangehenden Schicht zur gleichen Zeit für beide nachfolgenden Schichten (z. B. die erste und die zweite nachfolgende Schicht) bereitgestellt werden. In mindestens einer Ausführungsform werden die Ausgabe der vorangehenden Schicht und Kopien der Ausgabe für die beiden nachfolgenden Schichten und/oder zusätzliche nachfolgende Schichten bereitgestellt. In mindestens einer Ausführungsform beinhaltet eine zweite nachfolgende Schicht auf der GPU B 110 einen Decodierer, der eine Kopie der Ausgabe der vorangehenden Schicht als Eingabe verwendet.
-
In mindestens einer Ausführungsform wird das neuronale Netzwerk 106 von einem Prozessor derart modifiziert, dass die Ausgabe von einer Schicht des neuronalen Netzwerks 106, die auf einer GPU ausgeführt wird, auf eine andere GPU kopiert wird, basierend auf den Abhängigkeiten zwischen den Schichten im neuronalen Netzwerk 106. In mindestens einer Ausführungsform werden, wenn die Ausgabe von einer ersten Schicht eines neuronalen Netzwerks 106 sowohl von einer zweiten Schicht als auch einer dritten Schicht des neuronalen Netzwerks 106 verwendet wird, eine zweite und dritte Schicht auf separaten GPUs 108, 110 ausgeführt. In mindestens einer Ausführungsform werden eine erste Schicht und eine zweite Schicht auf der GPU A 108 ausgeführt, während eine dritte Schicht auf der GPU B 110 ausgeführt wird und die Ausgabe einer ersten Schicht von einer GPU A 108 auf eine GPU B 110 kopiert wird. In mindestens einer Ausführungsform ermöglicht dies, dass eine zweite Schicht und eine dritte Schicht gleichzeitig von verschiedenen GPUs ausgeführt werden können.
-
In mindestens einer Ausführungsform umfassen tiefe Netzwerke L Schichten in Folge. In mindestens einer Ausführungsform wird jede Schicht L
i durch eine Vorwärtsberechnungsfunktion f
i mit den Parametern w
i modelliert. In mindestens einer Ausführungsform wird bei einer gegebenen Anzahl von Partitionen K, z.B. typischerweise einer Anzahl von GPUs, ein Modell in K Teile partitioniert. In mindestens einer Ausführungsform soll das Teil p
k aus aufeinanderfolgenden Schichten von Schicht L
i bis Schicht L
j bestehen. In mindestens einer Ausführungsform sind die Parameter des Teils p
k eine Vereinigung der Parameter w
i, w
i+1, ..., w
j und wird eine Vorwärtsfunktion sequentiell wie gezeigt abgeleitet:
-
In mindestens einer Ausführungsform wird gemäß einer Kettenregel in einer Gradientenberechnung eine Rückpropagierungsfunktion B
k von F
k durch automatisierte symbolische Differenzierung in vorhandenen Deep-Learning-Paketen abgeleitet, die eine Open-Source-Bibliothek für maschinelles Lernen beinhalten. In mindestens einer Ausführungsform wird in einem Vorwärtsdurchlauf unter Verwendung einer Bibliothek, die Informationen für ein System zur Durchführung eines synchronen stochastischen Gradientenabstiegs und Pipeline-Parallelität für das Training enthält, zunächst eine Eingabe in Mini-Batches der Größe N in M Mikro-Batches aufgeteilt. In mindestens einer Ausführungsform werden Mikro-Batches über K Vorrichtungen durch Modellparallelität sequentiell durchgeschleust. In mindestens einer Ausführungsform weist diese Mikro-Batch-Aufteilung eine höhere Vorrichtungsauslastung als die herkömmliche Modellparallelität auf. In mindestens einer Ausführungsform werden nach dem Vorwärtsdurchlauf aller Mikro-Batches in einem aktuellen Mini-Batch die Gradienten von allen M Mikro-Batches synchron akkumuliert und wird die Rückpropagierung zur Aktualisierung der Modellparameter angewendet. In mindestens einer Ausführungsform wird bei Verwendung einer synchronen stochastischen Gradientenabstiegs- und Pipeline-Parallelitätstechnik die Raumkomplexität von 0(N × L) auf
reduziert, wobei
eine Größe der Schichten pro Partition ist und
eine Größe eines Mikro-Batch ist.
-
In mindestens einer Ausführungsform wird bei Verwendung einer synchronen stochastischen Gradientenabstiegs- und Pipeline-Parallelitätstechnik ein paralleles U-Net entworfen, indem zunächst: 1) eine Anzahl von Partitionen K festgelegt wird, die typischerweise eine Anzahl von GPUs ist, 2) eine Anzahl von Mikro-Batches M festgelegt wird, die aus Effizienzgründen ebenfalls als eine Anzahl von GPUs festgelegt wird, und 3) ein Netzwerk in sequentielle Schichten modifiziert wird. In mindestens einer Ausführungsform wird bei Verwendung einer synchronen stochastischen Gradientenabstiegs- und Pipeline-Parallelitätstechnik ein paralleles U-Net entworfen.
-
In mindestens einer Ausführungsform wird zunächst ein herkömmliches U-Net eingesetzt, das in drei Teile unterteilt ist: einen Codierer E mit fünf Blöcken e
1, e
2, ..., e
5 sequentiell von der Eingabe, einen Decodierer D mit vier Blöcken d
5, d
4,..., d
1 und vier Skip-Verbindungen s
1, s
2, ... , s
4. In mindestens einer Ausführungsform ist das herkömmliche U-Net wie folgt formuliert:
wobei s
i typischerweise eine Verkettung entlang der Kanaldimension ist. In mindestens einer Ausführungsform ist die Eingabe des Codierer E ein Bild und ist die Eingabe des Decodiererblocks d
5 eine Ausgabe des Codierers. In mindestens einer Ausführungsform wird eine Softmax-Funktion nach dem Decodierer D zur Segmentierung hinzugefügt.
-
In mindestens einer Ausführungsform ist in einem pipelinebasierten parallelen U-Net eine Abhängigkeit des Zwischencodierers im Skip s
i vorhanden. In mindestens einer Ausführungsform ist es bei Verwendung einer synchronen stochastischen Gradientenabstiegs- und Pipeline-Parallelitätstechnik erforderlich, dass ein Modell auf sequentielle Weise implementiert werden muss. In mindestens einer Ausführungsform wird jedoch jedes e
i, i = 1,2, ...,4, sowohl im Codierer als auch im Decodierer verwendet, was sich auf die automatisierte Partitionierung auswirkt, während eine synchrone stochastische Gradientenabstiegs- und Pipeline-Parallelitätstechnik verwendet wird. In mindestens einer Ausführungsform wird die Abhängigkeit beseitigt, indem U-Net durch Duplizieren einer Ausgabe jedes Codierers e
i = {e
i,
0,e
i,1), i = 1,2, ... ,4 modifiziert wird. In mindestens einer Ausführungsform wird das sequentielle U-Netz wie folgt abgeleitet:
In mindestens einer Ausführungsform unterbricht die temporäre Variable e
i,1 eine Abhängigkeit in der Skip-Verbindung und erleichtert eine automatisierte Partitionierung in der automatisierten Parallelität bei Verwendung einer synchronen stochastischen Gradientenabstiegs- und Pipeline-Parallelisierungstechnik. In mindestens einer Ausführungsform wird bei Verwendung einer synchronen stochastischen Gradientenabstiegs- und Pipeline-Parallelitätstechnik ein paralleles U-Net basierend auf einem entworfenen sequentiellen U-Net implementiert. In mindestens einer Ausführungsform wird das parallele U-Net hierin auch als modifiziertes neuronales Netzwerk (z. B. modifiziertes U-Net) beschrieben.
-
2 veranschaulicht eine Darstellung 200, in der ein neuronales Netzwerk 202 zu einem modifizierten neuronalen Netzwerk 204 modifiziert wird, um Abhängigkeiten in Schichten eines neuronalen Netzwerks zu reduzieren, gemäß mindestens einer Ausführungsform. Das neuronale Netzwerk 202 umfasst mehrere Schichten in einem parallelen Block, wobei mehrere Schichten von einer Ausgabe einer vorherigen Schicht abhängig sind. Im neuronalen Netzwerk 202 bewirkt ein Prozessor, dass Trainingsdaten eingegeben, und, wenn die Trainingsdaten einen Codierer durchlaufen (z. B. „Codierer i“, wie in 1 veranschaulicht), eine Ausgabe erzeugt wird. Im neuronalen Netzwerk 202 sind beide Schichten einschließlich „Decodierer i“ und „Codierer i+1“ (wie in 1 veranschaulicht) von der Ausgabe (z. B. Gewichtungen) abhängig, und ferner sollenbeide Schichten unter Verwendung einer gleiche Vorrichtung (z. B. „Vorrichtung j“, wie in 1 veranschaulicht) ausgeführt werden. In mindestens einer Ausführungsform bewirkt ein Prozessor mit einer oder mehreren Schaltungen, dass Trainingsdaten, die medizinische Bilder umfassen, über ein Netzwerk an ein modifiziertes neuronales Netzwerk 204 weitergegeben werden. In mindestens einer Ausführungsform wird das neuronale Netzwerk modifiziert 204, indem zwei oder mehr nachfolgende Schichten, die von der Ausgabe einer vorherigen Schicht abhängen, auf separaten Rechenressourcen ausgeführt werden (z. B. Schichten, die unter Verwendung von zwei parallelen Blöcken ausgeführt werden). In mindestens einer Ausführungsform umfasst ein Prozessor eine oder mehrere Schaltungen, die bewirken, dass nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke unter Verwendung unterschiedlicher Rechenressourcen ausgeführt werden, solange bestimmt wird, dass die Ausgabe einer vorangehenden Schicht für zwei oder mehr nachfolgende Schichten bereitgestellt wird.
-
In mindestens einer Ausführungsform werden ein oder mehrere neuronale Netzwerke so modifiziert 204, dass die Ausgabe einer ersten Schicht eines neuronalen Netzwerks (die sowohl von einer zweiten Schicht als auch von einer dritten Schicht des neuronalen Netzwerks verwendet wird) einer zweiten Schicht und einer dritten Schicht bereitgestellt wird, die auf separaten Vorrichtungen (z. B. GPUs) ausgeführt werden. In mindestens einer Ausführungsform werden im modifizierten neuronalen Netzwerk 204 eine erste Schicht („Codierer i“, wie in 1 veranschaulicht) und eine zweite Schicht („Codierer i+1“, wie in 1 veranschaulicht) auf einer ersten GPU ausgeführt, während eine dritte Schicht („Decodierer i“, wie in 1 veranschaulicht) auf einer zweiten GPU ausgeführt wird und die Ausgabe der ersten Schicht von der ersten GPU zur zweiten GPU kopiert wird. In mindestens einer Ausführungsform bewirkt der Prozessor, dass eine zweite und eine dritte Schicht gleichzeitig ausgeführt werden. In mindestens einer Ausführungsform wird die erste Schicht von einer anderen GPU ausgeführt und stellt der Prozessor die Ergebnisse dann sowohl der ersten GPU als auch der zweiten GPU bereit. In mindestens einer Ausführungsform bewirkt das modifizierte neuronale Netzwerk 204, dass nachfolgende Schichten in einem oder mehreren neuronalen Netzwerken von unterschiedlichen Rechenressourcen (in zwei parallelen Blöcken) ausgeführt werden, und zwar in einem Bestreben, Abhängigkeiten zwischen den Schichten zu reduzieren. In mindestens einer Ausführungsform beziehen sich unterschiedliche Rechenressourcen auf separate Prozessoren, Computersysteme, Pipelines, Multiprozessoren und/oder andere Schaltungen innerhalb oder nicht innerhalb desselben Prozessors.
-
3 veranschaulicht ein Blockdiagramm 300 des Modifizierens eines neuronalen Netzwerks zum Reduzieren der Abhängigkeiten von Schichten, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform veranschaulicht das Diagramm 300 auf Blockebene die GPU-Zeiten für die Verarbeitung von Trainingsdaten. In mindestens einer Ausführungsform wird ein neuronales Netzwerk modifiziert, um Abhängigkeiten zu reduzieren, und die Ergebnisse sind in 304 auf Blockebene gezeigt. In mindestens einer Ausführungsform und wie oben in Bezug auf die 1-2 beschrieben, bewirkt ein Prozessor, der eine oder mehrere Schaltungen umfasst, dass ein oder mehrere neuronale Netzwerke modifiziert werden, um die Ableitung zu beschleunigen, indem Abhängigkeiten reduziert werden, die der Verwendung eines sequentiellen U-Net mit Pipeline-Parallelität zugeschrieben sind. In mindestens einer Ausführungsform werden ein oder mehrere neuronale Netzwerke modifiziert, indem bewirkt wird, dass zwei oder mehr nachfolgende Schichten von einem oder mehreren neuronalen Netzwerken unter Verwendung unterschiedlicher Rechenressourcen ausgeführt werden, solange die Ausgabe von einer vorangehenden Schicht für zwei oder mehr nachfolgende Schichten bereitgestellt wird. In mindestens einer Ausführungsform wird für GPU-Zeit t ein Ausgangsblock als (Zeit, Block, Batch, GPU-ID) veranschaulicht. In mindestens einer Ausführungsform, wenn t >> 3, werden fast t / 2 Batches für t GPU-Zeiten verarbeitet, wie in 302 gezeigt. In mindestens einer Ausführungsform; wenn ein neuronales Netzwerk unter Verwendung von Pipeline-Parallelität modifiziert wird, wenn t >> 3, fast t Batches für t GPU-Zeiten, wie in 304 gezeigt. In mindestens einer Ausführungsform können unter Verwendung des modifizierten neuronalen Netzwerks mit Abhängigkeitsreduktion, wie hierin beschrieben, mehr Batches verarbeitet werden. In mindestens einer Ausführungsform werden, auch wenn die GPU-Ausführungszeit aufgrund einer geringeren Anzahl von Blöcken 4/3 des Ausgangswerts beträgt, ¾* t Batches ausgeführt (unter der Annahme, dass K Vorrichtungen vorhanden sind, K / (k+1) > ½).
-
4 veranschaulicht einen Prozess 400 zum Modifizieren eines neuronalen Netzwerks, sodass eine Ausgabe eines Codierers dupliziert wird, und zum Bereitstellen sowohl der Ausgabe als auch der duplizierten Ausgabe für mehrere nachfolgende Schichten, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform bewirkt ein Prozessor, der eine oder mehrere Schaltungen umfasst, dass ein oder mehrere neuronale Netzwerke modifiziert 402 werden, um die Ableitung zu beschleunigen, indem Abhängigkeiten zwischen Schichten reduziert werden, die der Verwendung eines sequentiellen U-Net mit Pipeline-Parallelität zugeschrieben sind. In mindestens einer Ausführungsform bewirkt der Prozessor, dass Trainingsdaten an eine Schicht des modifizierten neuronalen Netzwerks weitergegeben werden. In mindestens einer Ausführungsform beinhaltet die Schicht einen Codierer, der von einer ersten GPU ausgeführt wird. In mindestens einer Ausführungsform wird eine Schicht, die einen Codierer beinhaltet, als vorangehende Schicht bezeichnet. In mindestens einer Ausführungsform wird eine Ausgabe vom Codierer in der vorangehenden Schicht unter Verwendung einer ersten GPU erzeugt. In mindestens einer Ausführungsform bewirkt der Prozessor, dass die Ausgabe der Schicht an eine nachfolgende Schicht (z. B. eine erste nachfolgende Schicht) 406 weitergegeben wird. In mindestens einer Ausführungsform beinhaltet die nachfolgende Schicht einen zweiten Codierer, der auf der ersten GPU ausgeführt werden soll. In mindestens einer Ausführungsform wird die nachfolgende Schicht einschließlich des zweiten Codierers von einer anderen GPU ausgeführt. In mindestens einer Ausführungsform bestimmt der Prozessor, ob die Ausgabe der vorangehenden Schicht für mindestens zwei oder mehr nachfolgende Schichten bereitgestellt werden soll, die von separaten Rechenressourcen ausgeführt werden, bevor eine Kopie der Ausgabe erzeugt wird. In mindestens einer Ausführungsform stellt der Prozessor eine kopierte Ausgabe für eine andere nachfolgende Schicht (z. B. eine zweite nachfolgende Schicht) auf einer anderen GPU (z. B. einer zweiten GPU) 408 bereit. In mindestens einer Ausführungsform beinhaltet die zweite nachfolgende Schicht einen Decodierer, der von der zweiten GPU ausgeführt wird. In mindestens einer Ausführungsform bewirken die Prozessoren, dass die Ausgabe der vorangehenden Schicht und die kopierte Ausgabe gleichzeitig für beide nachfolgenden Schichten bereitgestellt werden, sodass beide nachfolgenden Schichten zur gleichen Zeit von verschiedenen GPUs ausgeführt werden. In mindestens einer Ausführungsform werden ein oder mehrere neuronale Netzwerke so modifiziert, dass Abhängigkeiten in einem Netzwerk reduziert werden, und unter Verwendung von Pipeline-Parallelität mit Eingaben (z. B. medizinischen Bildern) 410, die von Benutzern oder verschiedenen Bildgebungsvorrichtungen bereitgestellt werden, weiter trainiert. In mindestens einer Ausführungsform empfangen auch zusätzliche nachfolgende Schichten eine kopierte Ausgabe einer vorangehenden Schicht. In mindestens einer Ausführungsform bewirkt der Prozessor, dass zusätzliche Kopien der Ausgabe der vorangehenden Schicht für zusätzliche nachfolgende Schichten bereitgestellt werden, die auf denselben oder anderen GPUs ausgeführt werden sollen.
-
5 veranschaulicht einen Prozess 500, in dem ein Prozessor, der eine oder mehrere Schaltungen umfasst, bewirkt, dass nachfolgende Schichten in einem modifizierten neuronalen Netzwerk auf separaten Rechenressourcen ausgeführt werden, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform bewirkt ein Prozessor, der eine oder mehrere Schaltungen umfasst, dass ein oder mehrere neuronale Netzwerke modifiziert werden. In mindestens einer Ausführungsform bewirkt der Prozessor unter Verwendung eines oder mehrerer modifizierter neuronaler Netzwerke eine Zunahme während der Ableitung, da er die Abhängigkeiten reduziert, die der Verwendung eines sequentiellen U-Net mit Pipeline-Parallelität zugeschrieben sind. In mindestens einer Ausführungsform bewirkt ein Prozessor mit einer oder mehreren Schaltungen, dass ein oder mehrere neuronale Netzwerke modifiziert werden, indem er bewirkt, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen 502 ausgeführt werden. In mindestens einer Ausführungsform bewirken Prozessoren, dass die Trainingsdaten an eine Schicht des einen oder der mehreren modifizierten neuronalen Netzwerke weitergegeben werden. In mindestens einer Ausführungsform beinhaltet die Schicht einen Codierer, der von einer ersten GPU ausgeführt wird. In mindestens einer Ausführungsform wird die Schicht als eine vorangehende, vorherige oder vorhergehende Schicht bezeichnet.
-
In mindestens einer Ausführungsform beinhalten ein oder mehrere modifizierte neuronale Netzwerke zusätzliche Schichten (z. B. nachfolgende Schichten), die von der Ausgabe der vorangehenden Schicht abhängig sind. In mindestens einer Ausführungsform bewirkt der Prozessor, dass eine Ausgabe von einem Codierer in einer vorangehenden Schicht unter Verwendung einer ersten GPU erzeugt wird. In mindestens einer Ausführungsform bestimmt ein Prozessor mit einer oder mehreren Schaltungen, ob eine gleiche Ausgabe einer Schicht an mindestens zwei oder mehr nachfolgende Schichten 504 weitergegeben werden soll. In mindestens einer Ausführungsform beinhaltet eine erste nachfolgende Schicht einen zweiten Codierer, der auf der ersten GPU oder einer anderen GPU ausgeführt werden soll. In mindestens einer Ausführungsform erzeugen Prozessoren eine duplizierte Kopie der Ausgabe der vorangehenden Schicht. In mindestens einer Ausführungsform stellt der Prozessor dann eine kopierte Ausgabe für eine andere nachfolgende Schicht (z. B. eine zweite nachfolgende Schicht) auf einer anderen GPU (z. B. einer zweiten GPU) bereit. In mindestens einer Ausführungsform beinhaltet die zweite nachfolgende Schicht einen Decodierer, der von der zweiten GPU ausgeführt wird. In mindestens einer Ausführungsform stellt der Prozessor dann die Ausgabe der vorangehenden Schicht und die kopierte Ausgabe für die beiden nachfolgenden Schichten 506 bereit. In mindestens einer Ausführungsform stellt der Prozessor die Ausgabe der vorangehenden Schicht und die kopierte Ausgabe gleichzeitig oder nahezu gleichzeitig für die beiden nachfolgenden Schichten bereit. In mindestens einer Ausführungsform, nachdem der Prozessor ein oder mehrere neuronale Netzwerke modifiziert hat, um zu bewirken, dass eine Ausgabe dupliziert wird und für nachfolgende Schichten bereitgestellt wird, die von unterschiedlichen Rechenressourcen ausgeführt werden sollen, bewirkt der Prozessor, dass ein oder mehrere modifizierte neuronale Netzwerke angewendet werden, um unter Verwendung von Pipeline-Parallelität mit Eingaben (z. B. medizinischen Bildern) 508 trainiert zu werden, die von Benutzern oder Kunden bereitgestellt werden, die unterschiedliche Bildgebungsvorrichtungen bedienen. In mindestens einer Ausführungsform können mehr als zwei nachfolgende Schichten vorhanden sein und bewirkt der Prozessor, dass zusätzliche Kopien der Ausgabe der vorangehenden Schicht für zusätzliche nachfolgende Schichten bereitgestellt werden, die auf denselben oder anderen GPUs ausgeführt werden sollen.
-
6 veranschaulicht ein Diagramm der experimentellen Ergebnisse aus der Implementierung eines modifizierten neuronalen Netzwerks mit reduzierten Abhängigkeiten der Schichten an einem ersten Bild, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform, wie in 6 (und auch 7) gezeigt, Vergleiche von Segmentierungsgenauigkeit (Dice-Koeffizient, %) und Ableitungszeit (s) zwischen 3D-U-Net und 3D-Squeeze-and-Excitation-U-Net (SEU-Net) verschiedener Größen (Anzahl der Filter in einer ersten Faltungsschicht: 32, 64, 128) und verschiedener Eingabegrößen (64×64×64, 128× 128× 128, ganzes Bild oder 192× 192× 192) bei der automatischen Segmentierung von neun Organen im Kopf- und Halsbereich (hier als „HaN“ bezeichnet). In mindestens einer Ausführungsform geben die Ergebnisse an, dass ein großes Modell und eine große Eingabe durchgängig eine bessere Segmentierungsgenauigkeit ergeben und eine große Eingabe die Ableitungszeit deutlich verringert.
-
In mindestens einer Ausführungsform geben die in 6 (und auch 7) gezeigten Ergebnisse den Einfluss der Modellgröße und der Eingabegröße auf die Analyse medizinischer Bilder an. In mindestens einer Ausführungsform werden 3D-U-Net und andere weiterentwickelte U-Net, 3D-SEU-Net in AnatomyNet, ausgewählt, um an großen Bildsegmentierungs-Tasks validiert zu werden (z. B. HaN-Mehrorgansegmentierung). In mindestens einer Ausführungsform wird unter Berücksichtigung von Flexibilität und Effizienz ein Modell in einem ersten Stadium sequentiell mit kleinen Patches zum Training ausgestattet, danach mit mittleren Patches und zuletzt mit großen Eingaben. In mindestens einer Ausführungsform erhöht der Einsatz großer Modelle und eines großen Eingabekontexts die Segmentierungsgenauigkeit und reduziert eine große Eingabe auch die Ableitungszeit deutlich, indem die automatisierte Modellparallelität genutzt wird, wie in 6 (und auch 7) gezeigt.
-
Erlernen großer Modelle. In mindestens einer Ausführungsform wird durch die Verwendung der hierin beschriebenen Techniken (z. B. paralleles U-Net) ein positiver Einfluss auf die Modellgröße und die Größe des Eingangskontexts erzielt. In mindestens einer Ausführungsform; die von der Lerntheorie inspiriert ist (z. B. Curriculum-Lernen), werden zuerst einfache Daten/Tasks in ein Netzwerk eingepasst und später lässt man das Netzwerk schwierige Tasks lösen. In mindestens einer Ausführungsform ist das Lernen anhand kleineren Patches einfacher, da kleinere Patches mit weniger Ungleichgewicht abgetastet werden und eine geringere Dimension kleinerer Patches aus weniger zu lernenden Strukturen für strukturierte Tasks (z. B. Bildsegmentierung) besteht. In mindestens einer Ausführungsform werden zunächst kleine positive Patches (Größe 64×64×64) abgetastet, um ein Modell in einem anfänglichen Stadium zu trainieren. In mindestens einer Ausführungsform wird in einem zweiten Stadium die Abtastung von mittelgroßen positiven Patches (Größe 128×128×128) zum Trainieren eines Modells ausgeführt. In mindestens einer Ausführungsform wird das größte Patch zum Trainieren eines Modells verwendet.
-
Experimente. In mindestens einer Ausführungsform bewirkt ein Prozessor mit einer oder mehreren Schaltungen, dass ein neuronales Netzwerk so modifiziert wird, dass die Ausgabe einer vorangehenden Schicht für mindestens zwei weitere nachfolgende Schichten bereitgestellt wird, die von unterschiedlichen Rechenressourcen ausgeführt werden. In mindestens einer Ausführungsform empfängt das modifizierte neuronale Netzwerk zwei Datensätze als Eingabe, um eine Auswirkung von großen Modellen und einem großen Eingabekontext für die Segmentierung zu bestimmen (z. B. HaN- und Dekathlon-Leber-Datensätze). In mindestens einer Ausführungsform besteht der HaN-Datensatz aus Vollvolumen-Computertomographie(CT)-Bildern mit manuell erzeugten binären Masken von neun Anatomien (z. B. Hirnstamm (BS), Chiasmus (CH), Unterkiefer (MD), Sehnerv links (OL), Sehnerv rechts (OR), Parotis links (PL), Parotis rechts (PR), Unterkieferspeicheldrüse links (SL) und Unterkieferspeicheldrüse rechts (SR)). In mindestens einer Ausführungsform wurden drei öffentliche Datensätze verwendet: 1) MICCAI HaN Auto Segmentation Challenge 2015; 2) Kopf-Hals-Cetuximab-Sammlung von The Cancer Imaging Archive (TCIA); 3) CT-Bilder von vier verschiedenen öffentlichen Einrichtungen (ebenfalls von TCIA). In mindestens einer Ausführungsform werden die Datensätze direkt für einen fairen Vergleich mit Benchmark-Verfahren verwendet. In mindestens einer Ausführungsform besteht ein Datensatz aus 261 Trainingsbildern mit fehlenden Annotationen und zehn Testproben, die aus allen Annotationen von neun Organen bestehen. In mindestens einer Ausführungsform ist die größte Bildgröße 352x256x288. In mindestens einer Ausführungsform wird eine Technik zur Datenerweiterung verwendet. In mindestens einer Ausführungsform ist ein anderer Datensatz ein 3D-Leber- und -Tumor-Segmentierungs-CT-Datensatz aus dem medizinischen Segmentierungsdekathlon. In mindestens einer Ausführungsform bewirkt der Prozessor, dass der Datensatz zufällig in 104 Trainingsbilder und 27 Testbilder aufgeteilt wird. In mindestens einer Ausführungsform werden die CT-Bilder mit einem Abstand von 1 × 1× 1 mm3 neu abgetastet. In mindestens einer Ausführungsform bewirkt der Prozessor in dem Bestreben, sich auf eine Leberregion zu konzentrieren, dass ein Voxelwert innerhalb des Bereichs [ - 21,89] beschnitten wird und jedes 3D-Bild linear in den Bereich [0,1]transformiert wird. In mindestens einer Ausführungsform führt der Prozessor während des Trainings einen Flip und eine Drehung von 90 Grad im XY-Raum mit einer Wahrscheinlichkeit von 0,1 durch. In mindestens einer Ausführungsform wird ein gleichmäßiges stochastisches Rauschen [-0,2,0,2] hinzugefügt, um die Trainingsdaten zu erweitern. In mindestens einer Ausführungsform ist die größte Bildgröße 512×512×704.
-
In mindestens einer Ausführungsform wird während des Trainings für die größte Eingabe eine Batch-Größe von eins und ein Gradientenabstiegs-Optimierungsalgorithmus (z. B. RMSProp Optimizer) mit 300 Epochen und einer Lernrate von 1× 10-3 verwendet. In mindestens einer Ausführungsform verwendet der Prozessor für das Training des neuronalen Netzwerks mit der Patch-Größe 128× 128×128 eine Batch-Größe von vier und 1200 Epochen. In mindestens einer Ausführungsform verwendet der Prozessor für das Training des neuronalen Netzwerks mit der Patch-Größe 64×64×64 eine Batch-Größe von 16 und 4800 Epochen. In mindestens einer Ausführungsform beträgt bei U-Net-32 und SEU-Net-32 eine Anzahl der Filter in jeder Faltung eines ersten Codiererblocks 32. In mindestens einer Ausführungsform führt der Prozessor eine Erhöhung der Anzahl der Filter auf 64 und 128 aus, um eine Auswirkung der Erhöhung der Modellgröße zu untersuchen. In mindestens einer Ausführungsform wird in einem Codierer jedes Modells die Anzahl der Filter verdoppelt und werden die Codiererblöcke entsprechend erhöht. In mindestens einer Ausführungsform ist ein Decodierer symmetrisch zu einem Codierer.
-
In mindestens einer Ausführungsform werden zwei Netzwerke: 3D-U-Net und 3D-SEU-Net verwendet, um eine Auswirkung der Modellgröße und der Größe des Eingabekontexts in Tabelle 1 und 2 auf den HaN-Datensatz zu untersuchen, wie unten gezeigt:
Tabelle 1: Erreichter Dice-Koeffizient (%) am HaN-Testsatz unter Verwendung verschiedener Größen von U-Nets und Eingaben.
Modelle | BS | CH | MA | OL | OR | PL | PR | SL | SR | Durchschnitt ↑ |
U-Net-32 (643) | 84,23 | 48,87 | 89,75 | 69,11 | 68,28 | 87,43 | 85,48 | 79,36 | 77,41 | 76,66 |
U-Net-64 (643) | 84,28 | 46,21 | 91,55 | 70,34 | 69,92 | 87,76 | 85,98 | 81,46 | 79,23 | 77,41 |
U-Net-128 (643) | 84,58 | 48,52 | 91,12 | 71,04 | 69,28 | 87,76 | 85,78 | 81,34 | 80,03 | 77,72 |
| |
U-Net-32 (1283) | 84,23 | 53,30 | 91,97 | 70,29 | 68,40 | 87,43 | 85,48 | 79,36 | 78,17 | 77,63 |
U-Net-64 (1283) | 84,71 | 46,21 | 92,47 | 70,34 | 69,92 | 87,76 | 85,98 | 81,46 | 79,23 | 77,56 |
U-Net-128 (1283) | 84,84 | 48,52 | 93,71 | 71,04 | 69,28 | 87,76 | 85,78 | 81,57 | 80,03 | 78,06 |
U-Net-32 (Gesamt) | 84,23 | 53,30 | 91,97 | 70,29 | 68,40 | 87,43 | 85,48 | 79,36 | 79,02 | 77,72 |
U-Net-64 (Gesamt) | 84,71 | 48,59 | 92,47 | 70,34 | 69,92 | 87,76 | 85,98 | 81,46 | 79,23 | 77,83 |
U-Net-128 (Gesamt) | 84,84 | 48,52 | 93,71 | 71,04 | 70,09 | 87,76 | 85,78 | 81,57 | 80,03 | 78,15 |
Tabelle 2: Erreichter Dice-Koeffizient (%) am HaN-Testsatz unter Verwendung verschiedener Größen von SEU-Nets und Eingaben
Modelle | BS | CH | MA | OL | OR | PL | PR | SL | SR | Durchschnitt ↑ |
AnatomyNet | 86,65 | 53,22 | 92,51 | 72,10 | 70,64 | 88,07 | 87,35 | 81,37 | 81,30 | 79,25 |
SEU-Net-32 (643) | 84,07 | 47,09 | 90,12 | 68,58 | 69,73 | 87,14 | 85,21 | 79,20 | 75,81 | 76,33 |
SEU-Net-64 (643) | 85,49 | 50,32 | 92,45 | 71,93 | 69,94 | 88,24 | 86,27 | 81,15 | 79,37 | 78,35 |
SEU-Net-128 (643) | 86,38 | 51,85 | 93,55 | 70,62 | 70,08 | 88,11 | 85,99 | 81,79 | 81,13 | 78,83 |
| |
SEU-Net-32 (1283) | 85,76 | 50,52 | 92,91 | 70,76 | 69,73 | 87,31 | 85,86 | 81,03 | 77,95 | 77,98 |
SEU-Net-64 (1283) | 85,73 | 50,37 | 94,26 | 71,97 | 71,09 | 88,34 | 86,58 | 81,15 | 79,64 | 78,79 |
SEU-Net-128 (1283) | 86,38 | 51,85 | 93,87 | 71,63 | 70,44 | 88,11 | 86,75 | 81,79 | 82,48 | 79,26 |
| |
SEU-Net-32 (Gesamt) | 85,76 | 51,27 | 92,91 | 70,76 | 69,73 | 87,31 | 85,86 | 81,03 | 78,43 | 78,12 |
SEU-Net-64 (Gesamt) | 85,73 | 52,29 | 94,26 | 71,97 | 71,09 | 88,34 | 86,58 | 81,15 | 79,64 | 79,01 |
SEU-Net-128 (Gesamt) | 86,38 | 51,85 | 93,87 | 73,70 | 70,44 | 88,26 | 86,75 | 81,96 | 82,48 | 79,52 |
-
In mindestens einer Ausführungsform nimmt die Segmentierungsgenauigkeit mit zunehmender Modellgröße und Eingabegröße sowohl für U-Net als auch für SEU-Net konsistent zu. In mindestens einer Ausführungsform erreicht SEU-Net-128 mit dem gesamten Bild als Eingabe eine bessere Performance als AnatomyNet, das verschiedene Netzwerkstrukturen sucht. In mindestens einer Ausführungsform liegt ein Grund für die Verbesserung der Genauigkeit darin, dass eine große Eingabe und ein großes Modell einen großen Kontext bzw. eine große Lernkapazität ergeben. In mindestens einer Ausführungsform wird eine Auswirkung einer großen Eingabe auf die Ableitungszeit durch die Mittelung von drei Ableitungsrunden bestimmt und in Tabelle 3 unten gezeigt
Tabelle 3: Durchschnittliche Ableitungszeit (s) pro Testbild, die am HaN-Testsatz unter Verwendung verschiedener Größen von Netzwerken und Eingaben erreicht wurde.
Modelle | Ableitungszeit ↓ | Modelle | Ableitungszeit ↓ |
U-Net-32 (643) 2×16G | 1,21 ±0,07 | SEU-Net-32 (643) 2×16G | 1,69±0,17 |
U-Net-64 (643) 4×16G | 1,75±0,08 | SEU-Net-64 (643) 2×32G | 2,85±0,13 |
U-Net-128 (643) 2×32G | 2,53±0,04 | SEU-Net-128 ( 643 ) 4×32G | 4,73±0,69 |
| |
U-Net-32 (1283) | 1,09±0,28 | SEU-Net-32 (1283) | 1,16±0,36 |
U-Net-64 (1283) | 1,19±0,16 | SEU-Net-64 (1283) | 1,29±0,18 |
U-Net-128 (1283) | 1,23±0,16 | SEU-Net-128 (1283) | 2,25 ±0,13 |
| |
U-Net-32 (Gesamt) | 0,61 ±0,07 | SEU-Net-32 (Gesamt) | 0,92±0,07 |
U-Net-64 (Gesamt) | 0,96±0,22 | SEU-Net-64 (Gesamt) | 0,94±0,07 |
U-Net-128 (Gesamt) | 0,90±0,14 | SEU-Net-128 (Gesamt) | 1,66±0,14 |
-
In mindestens einer Ausführungsform wird durch die Verwendung großer Eingaben bei der Ableitung die Ableitungszeit erheblich reduziert, da die Anzahl der Ableitungsrunden reduziert wird. In mindestens einer Ausführungsform validieren die Ergebnisse für Leber- und Tumor-Segmentierungs-Tasks, dass eine große Eingabe die Segmentierungsgenauigkeit erhöht und die Ableitungszeit reduziert, wie in Tabelle 4 und 5 unten gezeigt.
Tabelle 4: Erreichter Dice-Koeffizient (%) am Dekathlon-Lebersegmentierungstestsatz unter Verwendung verschiedener Größen von Eingaben und U-Nets und SEU-Nets.
Modelle | Leber | Tumor | Durchschnitt ↑ | Modelle | Leber | Tumor | Durchschnitt ↑ |
U-Net-32 (643) | 4,76 | 38,06 | 21,41 | SEU-Net-32 (643) | 0,73 | 42,56 | 21,65 |
U-Net-64 (643) | 9,70 | 31,96 | 20,83 | SEU-Net-64 (643) | 11,90 | 46,19 | 29,05 |
U-Net-128 (643) | 34,52 | 35,99 | 35,26 | SEU-Net-128 (643) | 0,34 | 43,44 | 21,89 |
U-Net-32 (1283) | 26,23 | 51,12 | 38,68 | SEU-Net-32 (1283) | 58,88 | 50,83 | 54,86 |
U-Net-64 (1283) | 40,95 | 52,63 | 46,79 | SEU-Net-64 (1283) | 38,38 | 50,25 | 44,32 |
U-Net-128 (1283) | 84,83 | 51,98 | 68,41 | SEU-Net-128 (1283) | 20,20 | 48,44 | 34,32 |
U-Net-32 (1923) | 82,83 | 51,57 | 67,20 | SEU-Net-32 (1923) | 89,25 | 55,38 | 72,32 |
U-Net-64 (1923) | 91,58 | 45,29 | 68,44 | SEU-Net-64 (1923) | 77,66 | 51,93 | 64,80 |
U-Net-128 (1923) | 90,99 | 50,67 | 70,83 | SEU-Net-128 (1923) | 87,61 | 54,31 | 70,96 |
Tabelle 5: Durchschnittliche Ableitungszeit (s) pro Testbild, die am Dekathlon-Lebersegmentierungstestsatz unter Verwendung verschiedener Größen von Netzwerken und Eingaben erreicht wurde.
Modelle | Ableitungszeit ↓ | Modelle | Ableitungszeit ↓ |
U-Net-32 ( 643 ) 2×16G | 6,78±0,06 | SEU-Net-32 (643) 4×16G | 12,23±0,08 |
U-Net-64 ( 643 ) 4×16G | 14,52±0,02 | SEU-Net-64 (643) 2×32G | 31,47±0,16 |
U-Net-128 ( 643 ) 4×32G | 25,37± 1,10 | SEU-Net-128 (643) 8×32G | 57,99±11,08 |
| |
U-Net-32 (1283) | 1,77±0,42 | SEU-Net-32 (1283) | 2,64±0,06 |
U-Net-64 (1283) | 3,30±0,52 | SEU-Net-64 (1283) | 6,23 ±0,17 |
U-Net-128 (1283) | 5,84±0,21 | SEU-Net-128 (1283) | 8,49±0,08 |
| |
U-Net-32 (2563) | 1,52±0,58 | SEU-Net-32 (2563) | 2,00±0,20 |
U-Net-64 (2563) | 2,11±0,10 | SEU-Net-64 (2563) | 3,37±0,10 |
U-Net-128 (2563) | 4,39±0,25 | SEU-Net-128 (2563) | 8,10±0,50 |
-
7 veranschaulicht ein Diagramm der experimentellen Ergebnisse aus der Implementierung eines modifizierten neuronalen Netzwerks mit reduzierten Abhängigkeiten der Schichten an einem zweiten Bild, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform geben die in 7 gezeigten Ergebnisse die Performance-Ergebnisse aus der Verwendung eines modifizierten neuronalen Netzwerks, wie in 6 beschrieben, an, um Vergleiche der Genauigkeit (Dice-Koeffizient, %) und der Ableitungszeit (s) zwischen 3D-U-Net und 3D-SEU-Net verschiedener Größen (Anzahl der Filter in einer ersten Faltungsschicht: 32, 64, 128) und verschiedener Eingabegrößen (64×64×64, 128× 128× 128, ganzes Bild oder 192 × 192× 192) an einem Dekathlon-Leber- und -Tumorsegmentierungsdatensatz (im Gegensatz zu einem HaN-Datensatz, wie in 6 beschrieben) zu veranschaulichen.
-
ABLEITUNGS- UND TRAININGSLOGIK
-
8A veranschaulicht Ableitungs- und/oder Trainingslogik 815, die verwendet wird, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind unten in Verbindung mit den 8A und/oder 8B bereitgestellt.
-
In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 ohne Einschränkung einen Code- und/oder Datenspeicher 801 umfassen, um Vorwärts- und/oder Ausgabegewichtungs- und/oder Eingabe-/Ausgabedaten und/oder andere Parameter zu speichern, um Neuronen oder Schichten eines neuronalen Netzwerks zu konfigurieren, das in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder zum Ableiten verwendet wird. In mindestens einer Ausführungsform kann die Trainingslogik 815 einen Code- und/oder Datenspeicher 801 beinhalten oder mit diesem gekoppelt sein, um Grafikcode oder andere Software zur Steuerung der zeitlichen Abfolge und/oder der Reihenfolge zu speichern, in der Gewichtungs- und/oder andere Parameterinformationen geladen werden sollen, um die Logik zu konfigurieren, einschließlich Integer- und/oder Fließkommaeinheiten (zusammen als arithmetische Logikeinheiten (arithmetic logic units - ALUs) bezeichnet). In mindestens einer Ausführungsform lädt Code, wie z. B. Grafikcode, Gewichtungs- oder andere Parameterinformationen in Prozessor-ALUs basierend auf einer Architektur eines neuronalen Netzwerks, 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 Netzwerks, die mit einer oder mehreren Ausführungsformen trainiert oder in Verbindung damit verwendet wird, während der Vorwärtspropagierung von Eingabe-/Ausgabedaten und/oder Gewichtungsparametern während des Trainings und/oder der Ableitung 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, integriert sein.
-
In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 801 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 Code- und/oder Datenspeicher 801 ein Cache-Speicher, ein dynamischer zufällig adressierbarer Speicher (dynamic randomly addressable memory - „DRAM“), ein statischer zufällig adressierbarer Speicher (static randomly addressable memory - „SRAM“), ein nicht flüchtiger Speicher (z. B. Flash-Speicher) oder ein anderer Speicher sein. In mindestens einer Ausführungsform kann eine Wahl, ob der Code und/oder Code- und/oder Datenspeicher 801 zu einem Prozessor, der z.B. DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, intern oder extern ist, von dem verfügbaren Speicher auf dem Chip oder außerhalb des Chips, den Latenzanforderungen der durchzuführenden Trainings- und/oder Ableitungsfunktionen, der Batch-Größe der Daten, die bei der Ableitung und/oder dem Training eines neuronalen Netzwerks verwendet werden, oder einer Kombination dieser Faktoren abhängen.
-
In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 ohne Einschränkung einen Code- und/oder Datenspeicher 805 umfassen, um Rückwärts- und/oder Ausgabegewichtungs- und/oder Eingabe-/Ausgabedaten zu speichern, die Neuronen oder Schichten eines neuronalen Netzwerks entsprechen, das in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder zum Ableiten verwendet wird. In mindestens einer Ausführungsform speichert der Code- und/oder Datenspeicher 805 Gewichtungsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzwerks, die mit einer oder mehreren Ausführungsformen trainiert oder in Verbindung damit verwendet wird, während der Rückwärtspropagierung von Eingabe-/Ausgabedaten und/oder Gewichtungsparametern während des Trainings und/oder der Ableitung 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 mit diesem gekoppelt sein, um Grafikcode oder andere Software zur Steuerung der zeitlichen Abfolge und/oder der Reihenfolge zu speichern, in der Gewichtungs- und/oder andere Parameterinformationen geladen werden sollen, um die Logik zu konfigurieren, einschließlich Integer- und/oder Fließkommaeinheiten (zusammen als arithmetische Logikeinheiten (ALUs) bezeichnet).
-
In mindestens einer Ausführungsform bewirkt Code, wie z. B. Grafikcode, dass Gewichtungs- oder andere Parameterinformationen in Prozessor-ALUs basierend auf einer Architektur eines neuronalen Netzwerks, dem derartiger Code entspricht, geladen wird. 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, integriert 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 ein Cache-Speicher, ein DRAM, ein SRAM, ein nicht flüchtiger Speicher (z. B. Flash-Speicher) oder ein anderer Speicher sein. In mindestens einer Ausführungsform kann eine Wahl, ob der Code- und/oder Datenspeicher 805 zu einem Prozessor, der z. B. DRAM, SRAM, Flash-Speicher oder einen anderen Speichertyp umfasst, intern oder extern ist, von dem verfügbaren Speicher auf dem Chip oder außerhalb des Chips, den Latenzanforderungen der durchzuführenden Trainings- und/oder Ableitungsfunktionen, der Batch-Größe der Daten, die bei der Ableitung und/oder dem Training eines neuronalen Netzwerks 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/oder 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, integriert sein.
-
In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 ohne Einschränkung eine oder mehrere arithmetische Logikeinheit(en) („ALU(s)“) 810 beinhalten, einschließlich Integer- und/oder Fließkommaeinheiten, zum Ausführen logischer und/oder mathematischer Vorgänge, die mindestens teilweise auf Trainings- und/oder Ableitungscode (z. B. Grafikcode) basieren oder davon angegeben werden, wobei ein Ergebnis davon Aktivierungen (z. B. Ausgabewerte von Schichten oder Neuronen innerhalb eines neuronalen Netzwerks) produzieren kann, die in einem Aktivierungsspeicher 820 gespeichert sind und die Funktionen von Eingabe/Ausgabe- und/oder Gewichtungsparameterdaten sind, die im Code- und/oder Datenspeicher 801 und/oder Code- und/oder Datenspeicher 805 gespeichert sind. In mindestens einer Ausführungsform werden im Aktivierungsspeicher 820 gespeicherte Aktivierungen gemäß linearer algebraischer und/oder matrixbasierter Mathematik erzeugt, die von ALU(s) 810 als Reaktion auf Ausführungsanweisungen oder anderen Code ausgeführt wird, wobei im Code- und/oder Datenspeicher 805 und/oder Datenspeicher 801 gespeicherte Gewichtungswerte als Operanden zusammen mit anderen Werten, wie z. B. Neigungswerten, Gradienteninformationen, Impulswerten oder anderen Parametern oder Hyperparametern, verwendet werden, die einzeln oder alle im Code- und/oder Datenspeicher 805 oder Code- und/oder Datenspeicher 801 oder einem anderen Speicher innerhalb oder außerhalb des Chips gespeichert sein können.
-
In mindestens einer Ausführungsform sind die ALU(s) 810 in einem oder mehreren Prozessoren oder anderen 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 Co-Prozessor). In mindestens einer Ausführungsform können die ALUs 810 in den Ausführungseinheiten eines Prozessors oder anderweitig in einer Bank von ALUs enthalten sein, auf welche die Ausführungseinheiten eines Prozessors zugreifen können, und zwar entweder innerhalb desselben Prozessors oder verteilt auf verschiedene Prozessoren unterschiedlichen Typs (z. B. zentrale Verarbeitungseinheiten, Grafikverarbeitungseinheiten, feste Funktionseinheiten 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 verschiedenen Prozessoren oder anderen Hardware-Logikvorrichtungen oder -schaltungen oder in einer Kombination aus gleichen und verschiedenen 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, integriert 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, ein DRAM, ein SRAM, ein nicht flü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 zu einem Prozessor, der z. B. DRAM, SRAM, Flash-Speicher oder einen anderen Speichertyp umfasst, intern oder extern ist, von dem verfügbaren Speicher auf dem Chip oder außerhalb des Chips, den Latenzanforderungen der durchzuführenden Trainings- und/oder Ableitungsfunktionen, der Batch-Größe der Daten, die bei der Ableitung und/oder dem Training eines neuronalen Netzwerks verwendet werden, oder einer Kombination dieser Faktoren abhängen.
-
In mindestens einer Ausführungsform kann die in 8A veranschaulichte Ableitungs- 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 Ableitungsverarbeitungseinheit (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 Ableitungs- und/oder Trainingslogik 815 in Verbindung mit der Hardware der zentralen Verarbeitungseinheit (central processing unit - „CPU“), der Grafikverarbeitungseinheit („GPU“) oder anderer Hardware, wie z. B. feldprogrammierbaren Gate-Anordnungen (field programmable gate arrays - „FPGAs“), verwendet werden.
-
8B veranschaulicht Ableitungs- und/oder Trainingslogik 815, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 ohne Einschränkung 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 Netzwerks entsprechen. In mindestens einer Ausführungsform kann die in 8B veranschaulichte Ableitungs- und/oder Trainingslogik 815 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung (ASIC) verwendet werden, wie z. B. der TensorFlow® Processing Unit von Google, einer Ableitungsverarbeitungseinheit (IPU) von Graphcore™ oder einem Nervana®(z. B. „Lake Crest“)-Prozessor von Intel Corp. In mindestens einer Ausführungsform kann die in 8B veranschaulichte Ableitungs- und/oder Trainingslogik 815 in Verbindung mit der Hardware der zentralen Verarbeitungseinheit (CPU), der Hardware der Grafikverarbeitungseinheit (GPU) oder anderer Hardware, wie z. B. feldprogrammierbaren Gate-Anordnungen (FPGAs), verwendet werden. In mindestens einer Ausführungsform beinhaltet die Ableitungs- 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. Grafikcode), Gewichtungswerten und/oder anderen Informationen, einschließlich Neigungswerten, Gradienteninformationen, Impulswerten und/oder anderen Parameter- oder Hyperparameterinformationen, verwendet werden können. In mindestens einer Ausführungsform, die in 8B veranschaulicht ist, ist jeder des Code- und/oder Datenspeichers 801 und des Code- und/oder Datenspeichers 805 mit einer dedizierten Rechenressource, wie z. B. der Rechen-Hardware 802 bzw. der Rechen-Hardware 806, assoziiert. In mindestens einer Ausführungsform umfasst jede der Rechen-Hardware 802 und der Rechen-Hardware 806 eine oder mehrere ALUs, die mathematische Funktionen, wie z. B. lineare algebraische Funktionen, nur an Informationen durchführen, die im Code- und/oder Datenspeicher 801 bzw. im Code- und/oder Datenspeicher 805 gespeichert sind, wobei das Ergebnis davon im Aktivierungsspeicher 820 gespeichert wird.
-
In mindestens einer Ausführungsform entspricht jeder der Code- und/oder Datenspeicher 801 und 805 und die entsprechende Rechen-Hardware 802 bzw. 806 verschiedenen Schichten eines neuronalen Netzwerks, sodass die resultierende Aktivierung von einem Speicher-/Rechenpaar 801/802 des Code- und/oder Datenspeichers 801 und der Rechenhardware 802 als Eingabe für ein nächstes Speicher-/Rechenpaar 805/806 des Code- und/oder Datenspeichers 805 und der Rechen-Hardware 806 bereitgestellt wird, um eine konzeptionelle Organisation eines neuronalen Netzwerks zu spiegeln. In mindestens einer Ausführungsform kann jedes der Speicher-/Rechenpaare 801/802 und 805/806 mehr als einer Schicht des neuronalen Netzwerks 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 die Ableitungs- und/oder Trainingslogik 815 integriert werden.
-
TRAINING UND EINSATZ VON NEURONALEN NETZWERKEN
-
9 veranschaulicht das Training und den Einsatz eines tiefen neuronalen Netzwerks, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird das untrainierte neuronale Netzwerk 906 unter Verwendung eines Trainingsdatensatzes 902 trainiert. In mindestens einer Ausführungsform ist der Trainingsrahmen 904 ein PyTorch-Rahmen, während der Trainingsrahmen 904 in anderen Ausführungsformen ein TensorFlow-, Boost-, Caffe-, Microsoft-Cognitive-Toolkit/CNTK-, MXNet-, Chainer-, Keras-, Deeplearning4j- oder ein anderer Trainingsrahmen ist. In mindestens einer Ausführungsform trainiert der Trainingsrahmen 904 ein untrainiertes neuronales Netzwerk 906 und ermöglicht dessen Training unter Verwendung der hierin beschriebenen Verarbeitungsressourcen, um ein trainiertes neuronales Netzwerk 908 zu erzeugen. In mindestens einer Ausführungsform können die Gewichtungen zufällig oder durch Vorabtraining unter Verwendung eines Deep-Belief-Netzwerks ausgewählt werden. In mindestens einer Ausführungsform kann das Training entweder auf überwachte, teilweise überwachte oder nicht überwachte Weise ausgeführt werden.
-
In mindestens einer Ausführungsform wird das untrainierte neuronale Netzwerk 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 Netzwerks 906 manuell bewertet wird. In mindestens einer Ausführungsform wird das untrainierte neuronale Netzwerk 906 auf überwachte Weise trainiert und verarbeitet es Eingaben aus dem Trainingsdatensatz 902 und vergleicht es die resultierenden Ausgaben mit einem Satz von erwarteten oder gewünschten Ausgaben. In mindestens einer Ausführungsform werden Fehler dann durch das untrainierte neuronale Netzwerk 906 rückpropagiert. In mindestens einer Ausführungsform passt der Trainingsrahmen 904 Gewichtungen an, die das untrainierte neuronale Netzwerk 906 steuern. In mindestens einer Ausführungsform beinhaltet der Trainingsrahmen 904 Werkzeuge, um zu überwachen, wie gut sich das untrainierte neuronale Netzwerk 906 zu einem Modell entwickelt, wie z. B. dem trainierten neuronalen Netzwerk 908, das geeignet ist, korrekte Antworten zu erzeugen, wie z. B. im Ergebnis 914, basierend auf Eingabedaten, wie z. B. einem neuen Datensatz 912. In mindestens einer Ausführungsform trainiert der Trainingsrahmen 904 das untrainierte neuronale Netzwerk 906 wiederholt, während die Gewichtungen angepasst werden, um eine Ausgabe des untrainierten neuronalen Netzwerks 906 unter Verwendung einer Verlustfunktion und eines Anpassungsalgorithmus, wie z. B. des stochastischen Gradientenabstiegs, zu verfeinern. In mindestens einer Ausführungsform trainiert der Trainingsrahmen 904 das untrainierte neuronale Netzwerk 906, bis das untrainierte neuronale Netz 906 eine gewünschte Genauigkeit erreicht. In mindestens einer Ausführungsform kann das trainierte neuronale Netzwerk 908 dann zur Implementierung einer beliebigen Anzahl von Vorgängen des maschinellen Lernens eingesetzt werden.
-
In mindestens einer Ausführungsform wird das untrainierte neuronale Netzwerk 906 unter Verwendung von nicht überwachtem Lernen trainiert, wobei das untrainierte neuronale Netzwerk 906 versucht, sich selbst unter Verwendung von nicht markierten Daten zu trainieren. In mindestens einer Ausführungsform beinhaltet der Trainingsdatensatz 902 für nicht überwachtes Lernen Eingabedaten ohne beliebige zugehörige Ausgabedaten oder „Ground-Truth“-Daten. In mindestens einer Ausführungsform kann das untrainierte neuronale Netzwerk 906 Gruppierungen innerhalb des Trainingsdatensatzes 902 lernen und bestimmen, wie einzelne Eingaben mit dem untrainierten Datensatz 902 in Beziehung stehen. In mindestens einer Ausführungsform kann nicht überwachtes Training verwendet werden, um eine sich selbst organisierende Karte im trainierten neuronalen Netzwerk 908 zu erzeugen, die in der Lage ist, Operationen durchzuführen, die bei der Reduzierung der Dimensionalität des neuen Datensatzes 912 nützlich sind. In mindestens einer Ausführungsform kann nicht überwachtes Training auch zur Erkennung von Anomalien verwendet werden, was die Identifizierung von Datenpunkten im 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, d. h. eine Technik, bei welcher der Trainingsdatensatz 902 eine Mischung aus markierten und nicht markierten Daten beinhaltet. In mindestens einer Ausführungsform kann der Trainingsrahmen 904 verwendet werden, um inkrementelles Lernen auszuführen, z. B. durch übertragene Lerntechniken. In mindestens einer Ausführungsform ermöglicht das inkrementelle Lernen es dem trainierten neuronalen Netzwerk 908, sich an den neuen Datensatz 912 anzupassen, ohne das Wissen zu vergessen, das dem trainierten neuronalen Netzwerk 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 Rahmenschicht 1020, eine Softwareschicht 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, feldprogrammierbaren Gate-Anordnungen (FPGAs), Grafikprozessoren usw.), Speichervorrichtungen 1018(1)-1018(N) (z. B. dynamischer Festwertspeicher, Solid-State-Speicher oder Festplattenlaufwerke), Netzwerk-Eingabe-/Ausgabe(„NW-E/A“)-Vorrichtungen, Netzwerk-Switches, virtuellen Maschinen („VMs“), Leistungsmodulen und Kühlmodulen usw. beinhalten, sind aber nicht darauf beschränkt. In mindestens einer Ausführungsform kann es sich bei einer oder mehreren Knoten-C.R.s unter 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-, Netzwerk-, Arbeitsspeicher- oder Datenspeicherressourcen beinhalten, die zur Unterstützung einer oder mehrerer Arbeitslasten konfiguriert oder zugewiesen sein können. 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 Netzwerk-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 Verwaltungseinheit für Software-Design-Infrastruktur („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; wie in 10 gezeigt, beinhaltet die Rahmenschicht 1020 einen Aufgabenplaner 1022, einen Konfigurationsverwalter 1024, einen Ressourcenverwalter 1026 und ein verteiltes Dateisystem 1028. In mindestens einer Ausführungsform kann die Rahmenschicht 1020 einen Rahmen zur Unterstützung von Software 1032 der Software-Schicht 1030 und/oder einer oder mehrerer Anwendung(en) 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 sie beispielsweise von Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt werden. In mindestens einer Ausführungsform kann es sich bei der Rahmenschicht 1020 um eine Art freien und quelloffenen Software-Webanwendungsrahmen wie Apache Spark™ (im nachfolgend „Spark“) handeln, der ein verteiltes 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 Aufgabenplaner 1032 einen Spark-Treiber beinhalten, um die Planung von Arbeitslasten zu erleichtern, die von verschiedenen Schichten des Rechenzentrums 1000 unterstützt werden. In mindestens einer Ausführungsform kann der Konfigurationsverwalter 1024 in der Lage sein, unterschiedliche Schichten zu konfigurieren, z. B. die Software-Schicht 1030 und die Rahmenschicht 1020, einschließlich Spark und des verteilten Dateisystems 1028 zur Unterstützung der Verarbeitung großer Datenmengen. In mindestens einer Ausführungsform kann der Ressourcenverwalter 1026 in der Lage sein, geclusterte oder gruppierte Rechenressourcen zu verwalten, die zur Unterstützung des verteilten Dateisystems 1028 und des Aufgabenplaners 1022 zugeordnet oder zugewiesen sind. In mindestens einer Ausführungsform können geclusterte oder gruppierte Rechenressourcen die gruppierte Rechenressourcen 1014 auf der Rechenzentrumsinfrastrukturschicht 1010 beinhalten. In mindestens einer Ausführungsform können sich der Ressourcenverwalter 1026 und der Ressourcen-Orchestrator 1012 aufeinander abstimmen, um diese zugeordneten oder zugewiesenen Rechenressourcen zu verwalten.
-
In mindestens einer Ausführungsform kann die in der Software-Schicht 1030 enthaltene 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 Rahmenschicht 1020 verwendet wird. Zu einer oder mehreren Arten von Software gehören in mindestens einer Ausführungsform Internet-Webseiten-Such-Software, E-Mail-Virus-Scan-Software, Datenbank-Software und Streaming-Videoinhalts-Software, ohne darauf beschränkt zu sein.
-
In mindestens einer Ausführungsform können die in der Anwendungsschicht 1040 enthaltenen Anwendung(en) 1042 eine oder mehrere Arten von Anwendungen 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 Rahmenschicht 1020 verwendet werden. Zu einer oder mehreren Arten von Anwendungen können in mindestens einer Ausführungsform eine beliebige Anzahl von genomischen Anwendungen, eine kognitive Berechnung, eine Anwendung und eine Anwendung für maschinelles Lernen gehören, einschließlich Trainings- oder Ableitungs-Software, Rahmen-Software für maschinelles Lernen (z. B. PyTorch, TensorFlow, Caffe usw.) oder andere 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 davon 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 Modelle für maschinelles Lernen zu trainieren oder Informationen unter Verwendung eines oder mehrerer Modelle für maschinelles Lernen gemäß einer oder mehrerer hierin beschriebener Ausführungsformen vorherzusagen oder abzuleiten. Zum Beispiel kann in mindestens einer Ausführungsform ein Modell für maschinelles Lernen trainiert werden, indem Gewichtungsparameter gemäß einer Architektur eines neuronalen Netzwerks unter Verwendung von Software und Rechenressourcen berechnet werden, die vorstehend in Bezug auf das Rechenzentrum 1000 beschrieben sind. In mindestens einer Ausführungsform können trainierte Modelle für maschinelles Lernen, die einem oder mehreren neuronalen Netzwerken entsprechen, verwendet werden, um Informationen unter Verwendung der vorstehend in Bezug auf das Rechenzentrum 1000 beschriebenen Ressourcen abzuleiten oder vorherzusagen, indem Gewichtungsparameter verwendet werden, die durch eine oder mehrere hierin beschriebene Trainingstechniken berechnet werden.
-
In mindestens einer Ausführungsform kann das Rechenzentrum CPUs, anwendungsspezifische integrierte Schaltungen (ASICs), GPUs, FPGAs oder andere Hardware verwenden, um Training und/oder Ableitung unter Verwendung der vorstehend beschriebenen Ressourcen durchzufü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 Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 im System aus 10 für Ableitungs- oder Vorhersagevorgänge verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
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 z. B. ein Auto, ein Truck, ein Bus und/oder eine andere Art von Fahrzeug, das einen oder mehrere Fahrgäste aufnimmt. In mindestens einer Ausführungsform kann das Fahrzeug 1100 ein Sattelschlepper sein, der zum Transport 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 in Form von 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 werden. In mindestens einer Ausführungsform kann das Fahrzeug 1100 zu einer Funktionalität gemäß einem oder mehreren von Level 1 bis 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 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 z.B. einen Verbrennungsmotor, ein Hybridelektrotriebwerk, einen vollelektrischen Motor und/oder eine andere Art 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 den Empfang von Signalen von einer Drossel/einem Fahrpedal(en) 1152 gesteuert werden.
-
In mindestens einer Ausführungsformwird 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ührungsformkann das Lenksystem 1154 Signale von (einem) Lenkaktor(en) 1156 empfangen. Für die vollständige Automatisierungsfunktionalität (Level 5) kann ein Lenkrad in mindestens einer Ausführungsform optional sein. In mindestens einer Ausführungsform kann ein Bremssensorsystem 1146 verwendet werden, um die Fahrzeugbremsen als Reaktion auf den Empfang von Signalen von (einem) 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 der Fahrzeugbremsen über den/die Bremsaktor(en) 1148, zum Betreiben des Lenksystems 1154 über den/die Lenkaktor(en) 1156, zum Betreiben des Antriebssystems 1150 über die Drossel/das/die 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 Führen 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 Fahren, 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 mehrere 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 (z. B. Sensoreingaben) empfangen werden. In mindestens einer Ausführungsformkönnen die Sensordaten zum Beispiel und ohne Einschränkung empfangen werden von Sensor(en) 1158 von globalen Navigationssatellitensystemen („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. (einem) Beschleunigungsmesser, Gyroskop(en), einem Magnetkompass oder Magnetkompassen, (einem) Magnetometer 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), Vibrationssensor(en) 1142, Lenksensor(en) 1140, Bremssensor(en) (z. B. als Teil des Bremssensorsystems 1146) und/oder anderen Sensorarten.
-
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 Netzwerkschnittstelle 1124, die (eine) drahtlose Antenne(n) 1126 und/oder (ein) Modem(s) zur Kommunikation über ein oder mehrere Netzwerke verwenden kann. Zum Beispiel kann in mindestens einer Ausführungsform die Netzwerkschnittstelle 1124 in der Lage sein, über 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“)-Netzwerke usw. zu kommunizieren. In mindestens einer Ausführungsform können die drahtlose(n) Antenne(n) 1126 auch die Kommunikation zwischen Objekten in der Umgebung (z. B. Fahrzeugen, mobilen Vorrichtungen usw.) unter Verwendung von (einem) lokalen Netzwerk(en), wie z. B. Bluetooth, Bluetooth Low Energy („LE“), Z-Wave, ZigBee usw., und/oder (einem) Weitverkehrsnetzwerk(en) mit geringer Leistung (low power wide-area network - „LPWANs“), wie z. B. LoRaWAN-, SigFox- usw. Protokollen, ermöglichen.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 im System aus 11A für Ableitungs- oder Vorhersagevorgänge verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
11B veranschaulicht ein Beispiel für Kamerapositionen und Sichtfelder für das autonome Fahrzeug 1100 aus 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 können sich die Kameras an unterschiedlichen Positionen am Fahrzeug 1100 befinden.
-
In mindestens einer Ausführungsform können die Kameraarten für Kameras Digitalkameras beinhalten, ohne darauf beschränkt zu sein, die zur Verwendung mit den Komponenten und/oder Systemen des Fahrzeugs 1100 ausgelegt sind. In mindestens einer Ausführungsform können die Kamera(s) 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 Kameraarten in Abhängigkeit von der Ausführungsform zu einer beliebigen Bildaufnahmerate in der Lage sein, wie z. B. 60 Bilder pro Sekunde (frames per second - fps), 1220 fps, 240 fps usw. In mindestens einer Ausführungsform können Kameras in der Lage sein, Rollblendenverschlüsse, globale Blendenverschlüsse, eine andere Art von Blendenverschluss oder eine Kombination davon zu verwenden. In mindestens einer Ausführungsform kann eine Farbfilteranordnung eine Rot-Klar-Klar-Klar(red clear clear clear - „RCCC“)-Farbfilteranordnung, eine Rot-Klar-Klar-Blau(red clear clear blue - „RCCB“)-Farbfilteranordnung, eine Rot-Blau-Grün-Klar(red blue green clear - „RBGC“)-Farbfilteranordnung, eine X3-Farbfilteranordnung, ein Bayer-Sensoren(„RGGB“)-Farbfilteranordnung, eine Monochrom-Sensor-Farbfilteranordnung und/oder eine andere Art von Farbfilteranordnung beinhalten. In mindestens einer Ausführungsform können Klarpixelkameras, wie zum Beispiel Kameras mit einer RCCC-, einer RCCB- und/oder einer RBGC-Farbfilteranordnung, in einem Bestreben zur Erhöhung der Lichtempfindlichkeit verwendet werden.
-
In mindestens einer Ausführungsform können eine oder mehrere der Kamera(s) verwendet werden, um Funktionen der weiterentwickelten Fahrerassistenzsysteme (advanced driver assistance system - „ADAS“) durchzuführen (z. B. als Teil eines redundanten oder ausfallsicheren Designs). Zum Beispiel kann in mindestens einer Ausführungsform eine Multifunktions-Monokamera installiert sein, die Funktionen wie Spurverlassenswarnung, Verkehrszeichenassistent und intelligente Scheinwerfersteuerung bereitstellt. In mindestens einer Ausführungsform können eine oder mehrere der Kamera(s) (z. B. alle Kameras) simultan Bilddaten (z. B. ein Video) aufnehmen und bereitstellen.
-
In mindestens einer Ausführungsform können eine oder mehrere Kameras in einer Montagebaugruppe, z. B. einer kundenspezifisch entworfenen (dreidimensional („3D“) gedruckten) Baugruppe, montiert sein, um Streulicht und Reflexionen aus dem Inneren des Fahrzeugs 1100 (z.B. Reflexionen vom Armaturenbrett, die sich in den Windschutzscheibenspiegeln spiegeln) auszuschließen, welche die Bilddatenerfassungsfähigkeiten der Kamera beeinträchtigen können. Unter Bezugnahme auf Außenspiegel-Montagebaugruppen können in mindestens einer Ausführungsform die Außenspiegelbaugruppen kundenspezifisch in 3D gedruckt werden, sodass eine Kameramontageplatte einer Form eines Außenspiegels entspricht. In mindestens einer Ausführungsform können die Kamera(s) in die Außenspiegel integriert sein. In mindestens einer Ausführungsform können bei Seitensichtkameras die Kamera(s) auch in vier Säulen an jeder Ecke eines Fahrerhauses integriert sein.
-
In mindestens einer Ausführungsform können Kameras mit einem Sichtfeld, das Abschnitte einer Umgebung vor dem Fahrzeug 1100 beinhaltet (z. B. nach vorn gerichtete Kameras), für die Rundumsicht verwendet werden, um dabei zu helfen, nach vorn gerichtete Pfade und Hindernisse zu identifizieren, sowie mit Hilfe einer oder mehrerer Steuerung(en) 1136 und/oder Steuer-SoCs beim Bereitstellen von Informationen zu helfen, die für die Erzeugung 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 auszuführen, einschließlich, ohne Einschränkung, Notbremsung, Fußgängererkennung und Kollisionsvermeidung. In mindestens einer Ausführungsform können nach vorn gerichtete Kameras auch für ADAS-Funktionen und -Systeme verwendet werden, einschließlich, ohne Einschränkung, Spurverlassenswarnungen (Lane Departure Warning - „LDW“), autonome Geschwindigkeitssteuerung (Autonomous Cruise Control - „ACC“) und/oder andere Funktionen wie Verkehrszeichenerkennung.
-
In mindestens einer Ausführungsform kann eine Vielfalt von Kameras in einer nach vorn gerichteten Konfiguration verwendet werden, zum Beispiel einschließlich einer monokularen Kameraplattform, die einen CMOS(„Complementary Metal Oxide Semiconductor“ - komplementärer Metall-Oxid-Halbleiter)-Farbbildgeber enthält. 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 11B nur eine Weitsichtkamera 1170 veranschaulicht ist, kann in anderen Ausführungsformen eine beliebige Anzahl (einschließlich null) von Weitsichtkameras am Fahrzeug 1100 vorhanden sein. In mindestens einer Ausführungsform kann eine beliebige Anzahl von Langstreckenkamera(s) 1198 (z.B. ein Weitsichtstereokamerapaar) zur tiefenbasierten Objekterkennung verwendet werden, insbesondere für Objekte, für die noch kein neuronales Netzwerk trainiert wurde. In mindestens einer Ausführungsform können die Langstreckenkamera(s) 1198 auch zur Objekterkennung und -klassifizierung sowie zur grundlegenden Objektverfolgung verwendet werden.
-
In mindestens einer Ausführungsform kann eine beliebige Anzahl der Stereokamera(s) 1168 auch in einer nach vorn gerichteten Konfiguration enthalten sein. In mindestens einer Ausführungsform können eine oder mehrere der Stereokamera(s) 1168 eine integrierte Steuereinheit beinhalten, die eine skalierbare Verarbeitungseinheit umfasst, die eine programmierbare Logik („FPGA“) und einen Mehrkern-Mikroprozessor mit einer integrierten Controller-Area-Network(„CAN“)- oder Ethernet-Schnittstelle auf einem einzelnen Chip bereitstellen kann. In mindestens einer Ausführungsform kann eine solche 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 Stereokamera(s) 1168 ohne Einschränkung (einen) kompakte(n) Stereosichtsensor(en) beinhalten, die ohne Einschränkung zwei Kameralinsen (je eine 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 Arten von Stereokamera(s) 1168 zusätzlich oder alternativ zu den hierin beschriebenen verwendet werden.
-
In mindestens einer Ausführungsform können Kameras mit einem Sichtfeld, das Abschnitte der Umgebung seitlich des Fahrzeugs 1100 einschließt (z. B. Seitensichtkameras), für die Rundumsicht verwendet werden, wodurch Informationen bereitgestellt werden, die zur Erstellung und Aktualisierung eines Belegungsgitters sowie zur Erzeugung von Seitenaufprallkollisionswarnungen verwendet werden. Zum Beispiel könnten in mindestens einer Ausführungsform die Rundumkamera(s) 1174 (z.B. vier Rundumkameras, wie in 11B veranschaulicht) am Fahrzeug 1100 positioniert sein. In mindestens einer Ausführungsform können die Rundumkamera(s) 1174 ohne Einschränkung eine beliebige Anzahl und Kombination von Weitsichtkameras, Fischaugenkamera(s), 360-Grad-Kamera(s) und/oder ähnlichen Kameras beinhalten. Zum Beispiel können in mindestens einer Ausführungsform vier Fischaugenkameras an einer Vorderseite, einer Rückseite und den Seiten des Fahrzeugs 1100 positioniert sein. In mindestens einer Ausführungsform kann das Fahrzeug 1100 drei Rundumkamera(s) 1174 (z. B. links, rechts und hinten) verwenden und kann eine oder mehrere andere Kamera(s) (z. B. eine nach vorn gerichtete Kamera) als eine vierte Rundumsichtkamera nutzen.
-
In mindestens einer Ausführungsform können Kameras mit einem Sichtfeld, das Abschnitte einer Umgebung hinter dem Fahrzeug 1100 einschließt (z. B. Rückfahrkameras), als Einparkhilfe, für die Rundumsicht, Heckkollisionswarnungen und das Erstellen und Aktualisieren eines Belegungsgitters verwendet werden. In mindestens einer Ausführungsform kann eine Vielfalt von Kameras verwendet werden, einschließlich, aber nicht beschränkt auf, Kameras, die auch als nach vorn gerichtete Kamera(s) geeignet sind (z. B. Langstreckenkameras 1198 und/oder Mittelstreckenkamera(s) 1176, Stereokamera(s) 1168), Infrarotkamera(s) 1172 usw.), wie hierin beschrieben.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 im System aus 11B für Ableitungs- oder Vorhersagevorgänge verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
11C ist ein Blockdiagramm, das eine beispielhafte Systemarchitektur für das autonome Fahrzeug 1100 aus 11A veranschaulicht, gemäß mindestens einer Ausführungsform. 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 Netzwerk innerhalb des Fahrzeugs 1100 sein, das zur Unterstützung der Steuerung verschiedener Merkmale und Funktionen des Fahrzeugs 1100 verwendet wird, wie z. B. Betätigung der Bremsen, Beschleunigung, Bremsen, Lenkung, Scheibenwischer 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. eine CAN-ID). In mindestens einer Ausführungsform kann der Bus 1102 ausgelesen werden, um den Lenkradwinkel, Grundgeschwindigkeit, die Umdrehungen des Motors 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 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 auszuführen, und/oder können sie zur Redundanz verwendet werden. Zum Beispiel kann ein erster Bus für die Kollisionsvermeidungsfunktionalität verwendet werden und kann 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 können zwei oder mehr Busse des Busses 1102 mit entsprechenden Komponenten kommunizieren. In mindestens einer Ausführungsform kann jedes einer beliebigen Anzahl von einem System auf einem Chip/Systemen auf Chips („SoC(s)“) 1104 (z. B. SoC 1104(A) und SoC 1104(B), jede der Steuerung(en) 1136 und/oder jeder Computer im Fahrzeug Zugriff auf dieselben Eingabedaten (z. B. Eingaben von Sensoren des Fahrzeugs 1100) haben und mit einem gemeinsamen Bus, wie z. B. dem CAN-Bus, verbunden sein.
-
In mindestens einer Ausführungsform kann das Fahrzeug 1100 eine oder mehrere Steuerung(en) 1136 beinhalten, wie z. B. diejenigen, die hierin in Bezug auf 11A beschrieben sind. Die Steuerung(en) 1136 können in mindestens einer Ausführungsform für eine Vielfalt von Funktionen verwendet werden. In mindestens einer Ausführungsform können die Steuerung(en) 1136 mit beliebigen von verschiedenen anderen Komponenten und Systemen des Fahrzeugs 1100 gekoppelt sein und können zur Steuerung des Fahrzeugs 1100, der künstlichen Intelligenz des Fahrzeugs 1100, des Infotainment für das Fahrzeug 1100 und/oder andere 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 („CPU(s)“) 1106, Grafikverarbeitungseinheiten („GPU(s)“) 1108, (einen) Prozessor(en) 1110, (einen) Cache(s) 1112, (einen) Beschleuniger 1114, (einen) Datenspeicher 1116 und/oder andere nicht veranschaulichte Komponenten und Merkmale beinhalten. In mindestens einer Ausführungsform können das/die SoC(s) 1104 zur Steuerung des Fahrzeugs 1100 in einer Vielfalt von Plattformen und Systemen verwendet werden. Zum Beispiel können in mindestens einer Ausführungsform das/die SoC(s) 1104 in einem System (z. B. System des Fahrzeugs 1100) mit einer High-Definition(„HD“)-Karte 1122 kombiniert werden, die Kartenauffrischungen und/oder -aktualisierungen über die Netzwerkschnittstelle 1124 von einem oder mehreren Servern (in 11C nicht gezeigt) erhalten kann.
-
In mindestens einer Ausführungsform können die CPU(s) 1106 einen CPU-Cluster oder CPU-Komplex (hierin alternativ als „CCPLEX“ bezeichnet) beinhalten. In mindestens einer Ausführungsform können die CPU(s) 1106 mehrere Kerne und/oder Level-Zwei(„L2“)-Caches beinhalten. Zum Beispiel können in mindestens einer Ausführungsform die CPU(s) 1106 acht Kerne in einer kohärenten Mehrprozessorkonfiguration beinhalten. In mindestens einer Ausführungsform können die CPU(s) 1106 vier Doppelkerncluster beinhalten, wobei jeder Cluster über einen dedizierten L2-Cache verfügt (z. B. einen L2-Cache mit 2 Megabyte (MB)). In mindestens einer Ausführungsform können die CPU(s) 1106 (z. B. CCPLEX) so konfiguriert sein, dass sie gleichzeitige Clustervorgänge unterstützen, sodass eine beliebige Kombination von Clustern von CPU(s) 1106 zu einem beliebigen gegebenen Zeitpunkt aktiv sein kann.
-
In mindestens einer Ausführungsform können eine oder mehrere der CPU(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-Interrupt(„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 zur Verwaltung von Leistungsstatus implementieren, bei dem zulässige Leistungsstatus und erwartete Aufwachzeiten spezifiziert werden und die Hardware/der Mikrocode bestimmt, in welchen besten Leistungsstatus 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 GPU(s) 1108 eine integrierte GPU (hierin alternativ als „iGPU“ bezeichnet) beinhalten. In mindestens einer Ausführungsform können die GPU(s) 1108 programmierbar sein und für parallele Arbeitslasten effizient sein. In mindestens einer Ausführungsform können die GPU(s) 1108 einen erweiterten Tensor-Anweisungssatz verwenden. In mindestens einer Ausführungsform können die GPU(s) 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 GPU(s) 1108 mindestens acht Streaming-Mikroprozessoren beinhalten. In mindestens einer Ausführungsform können die GPU(s) 1108 (eine) Berechnungs-Anwendungsprogrammierschnittstelle(n) (application programming interface(s) - API(s)) verwenden. In mindestens einer Ausführungsform können die GPU(s) 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 GPU(s) 1108 für die beste Performance in Automobil- und eingebetteten Anwendungsfällen leistungsoptimiert sein. Zum Beispiel könnten in mindestens einer Ausführungsform die GPU(s) 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. Zum Beispiel, und ohne Einschränkung, könnten 64 PF32-Kerne und 32 PF64-Kerne in vier Verarbeitungsblöcke partitioniert sein. In mindestens einer Ausführungsform könnten jedem Verarbeitungsblock 16 FP32-Kerne, 8 FP64-Kerne, 16 INT32-Kerne, zwei NVIDIA-Tensorkerne mit gemischter Genauigkeit für Deep-Leaming-Matrixarithmetik, ein Level-Null(„L0“) Anweisungs-Cache, ein Warp-Planer, eine Verteilungseinheit und/oder eine Registerdatei mit 64 KB zugewiesen sein. In mindestens einer Ausführungsform können Streaming-Mikroprozessoren unabhängige parallele Integer- und Fließkomma-Datenpfade beinhalten, um eine effiziente Ausführung von Arbeitslasten mit einer Mischung aus Berechnung und Adressierungsberechnungen zu ermöglichen. In mindestens einer Ausführungsform können Streaming-Mikroprozessoren eine unabhängige Thread-Planungsfunktion beinhalten, um eine feinkörnigere Synchronisation und Kooperation 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 GPU(s) 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 zum HBM-Speicher ein synchroner Grafik-Direktzugriffsspeicher (synchronous graphics random-access memory - „SGRAM“) verwendet werden, z. B. ein synchroner Grafik-Double-Data-Rate-Typ-Fünf-Direktzugriffsspeicher (graphics double data rate type five - „GDDR5“).
-
In mindestens einer Ausführungsform können die GPU(s) 1108 eine einheitliche Speichertechnologie 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 GPU(s) 1108 direkt auf Seitentabellen von CPU(s) 1106 zugreifen. In mindestens einer Ausführungsform kann, wenn die Speicherverwaltungseinheit (memory management unit - „MMU“) einer GPU der GPU(s) 1108 eine Auslassung erleidet, eine Adressübersetzungsanforderung an die CPU(s) 1106 übertragen werden. Als Reaktion darauf können 2 CPUs der CPU(s) 1106 in mindestens einer Ausführungsform in ihren Seitentabellen nach einer Virtuell-zu-Physisch-Zuordnung für eine Adresse suchen und die Übersetzung zurück an die GPU(s) 1108 übertragen. In mindestens einer Ausführungsform kann die einheitliche Speichertechnologie einen einzelnen einheitlichen virtuellen Adressraum für den Speicher sowohl der CPU(s) 1106 als auch der GPU(s) 1108 ermöglichen, wodurch die Programmierung der GPU(s) 1108 und die Portierung von Anwendungen auf die GPU(s) 1108 vereinfacht werden.
-
In mindestens einer Ausführungsform können die GPU(s) 1108 eine beliebige Anzahl von Zugriffszählern beinhalten, welche die Häufigkeit des Zugriffs der GPU(s) 1108 auf den Speicher anderer Prozessoren verfolgen können. In mindestens einer Ausführungsform können der/die Zugriffszähler dazu beitragen, sicherzustellen, dass Speicherseiten in den 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 ein oder mehrere der SoC(s) 1104 eine beliebige Anzahl von Cache(s) 1112 beinhalten, einschließlich der hierin beschriebenen. In mindestens einer Ausführungsform könnten der/die Cache(s) 1112 beispielsweise einen Level-Drei(„L3“)-Cache beinhalten, der sowohl der/den CPU(s) 1106 als auch der/den GPU(s) 1108 zur Verfügung steht (der z. B. mit der/den CPU(s) 1106 und der/den GPU(s) 1108 verbunden ist). In mindestens einer Ausführungsform können der/die Cache(s) 1112 einen Rückschreib-Cache beinhalten, der die Status von Zeilen verfolgen kann, wie z. B. durch die Verwendung eines Cache-Kohärenzprotokolls (z. B. MEI, MESI, MSIusw.). In mindestens einer Ausführungsform kann der 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ührungsformkönnen ein oder mehrere der SoC(s) 1104 einen oder mehrere Beschleuniger 1114 beinhalten (z. B. Hardware-Beschleuniger, Software-Beschleuniger oder eine Kombination davon). In mindestens einer Ausführungsform können das/die SoC(s) 1104 einen Hardware-Beschleunigungscluster beinhalten, der optimierte Hardware-Beschleuniger und/oder einen großen chipinternen Speicher beinhalten kann. In mindestens einer Ausführungsform kann der großer chipinterne Speicher (z. B. 4 MB SRAM) einen Hardware-Beschleunigungscluster zur Beschleunigung neuronaler Netzwerke und anderer Berechnungen ermöglichen. In mindestens einer Ausführungsform kann ein Hardware-Beschleunigungscluster verwendet werden, um die GPU(s) 1108 zu ergänzen und einige Tasks der GPU(s) 1108 auszulagern (um z. B. mehr Zyklen der GPU(s) 1108 für die Ausführung anderer Tasks freizumachen). In mindestens einer Ausführungsform könnten der/die Beschleuniger 1114 für zielgerichtete Arbeitslasten (z. B. Wahrnehmung, neuronale Faltungsnetzwerke („CNNs“), rekurrente neuronale Netzwerke (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 Faltungsnetzwerk („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 der/die Beschleuniger 1114 (z. B. Hardware-Beschleunigungscluster) einen oder mehrere Deep-Learning-Beschleuniger (deep learning accelerator - „DLA“) beinhalten. DLA(s) 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 Vorgänge pro Sekunde für Deep-Learning-Anwendungen und -Ableitung bereitstellen. In mindestens einer Ausführungsform können die TPUs Beschleuniger sein, die für die Ausführung von Bildverarbeitungsfunktionen (z. B. für CNNs, RCNNs usw.) konfiguriert und optimiert sind. In mindestens einer Ausführungsform können der/die DLA(s) ferner für einen spezifischen Satz von Arten von neuronalen Netzwerken und Fließkommavorgängen sowie für die Ableitung optimiert sein. In mindestens einer Ausführungsform kann das Design der DLA(s) mehr Performance pro Millimeter bereitstellen als eine typische Universal-GPU und übertrifft typischerweise die Performance einer CPU bei weitem. In mindestens einer Ausführungsform können die TPU(s) mehrere Funktionen ausführen, einschließlich einer Einzelinstanz-Faltungsfunktion, die z. B. INT8-, INT16- und FP16-Datenarten sowohl für Merkmale als auch für Gewichtungen unterstützt, sowie Postprozessorfunktionen. In mindestens einer Ausführungsform können der/die DLA(s) neuronale Netzwerke, insbesondere CNNs, an verarbeiteten oder unverarbeiteten Daten für eine Vielfalt von Funktionen schnell und effizient ausführen, darunter zum Beispiel und ohne Einschränkung: ein CNN für die Identifizierung und Erkennung 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 Erkennung und Identifizierung und Erkennung 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 sicherheitsrelevante Ereignisse.
-
In mindestens einer Ausführungsform können der/die DLA(s) eine beliebige Funktion von GPU(s) 1108 ausführen und durch die Verwendung eines Ableitungsbeschleunigers kann ein Designer beispielsweise entweder DLA(s) oder GPU(s) 1108 für eine beliebige Funktion anvisieren. In mindestens einer Ausführungsform kann sich ein Designer beispielsweise auf die Verarbeitung von CNNs und Fließkommavorgängen auf DLA(s) konzentrieren und andere Funktionen der/den GPU(s) 1108 und/oder Beschleuniger(n) 1114 überlassen.
-
In mindestens einer Ausführungsform können der/die Beschleuniger 1114 einen programmierbaren Sichtbeschleuniger (programmable vision accelerator - „PVA“) beinhalten, der hierin alternativ als ein Beschleuniger für maschinelles Sehen bezeichnet werden kann. In mindestens einer Ausführungsform kann der PVA zur Beschleunigung von Algorithmen für maschinelles Sehen für weiterentwickelte Fahrerassistenzsysteme („ADAS“) 1138, autonomes Fahren, Augmented-Reality(„AR“)-Anwendungen und/oder Virtual-Reality(„VR“)-Anwendungen konstruiert und konfiguriert sein. In mindestens einer Ausführungsform kann der PVA ein Gleichgewicht zwischen Performance und Flexibilität bereitstellen. In mindestens einer Ausführungsform kann jeder PVA beispielsweise und ohne Einschränkung eine beliebige Anzahl von Reduced-Instruction-Set-Computer(„RISC“)-Kemen, direkten Speicherzugriff (direct memory access - „DMA“) und/oder eine beliebige Anzahl von Vektorprozessoren beinhalten.
-
In mindestens einer Ausführungsform können RISC-Kerne mit Bildsensoren (z. B. Bildsensoren beliebiger hierin beschriebener Kameras), Bildsignalprozessor(en) usw. interagieren. In mindestens einer Ausführungsform kann jeder RISC-Kern eine beliebige Menge an Speicher beinhalten. In mindestens einer Ausführungsform können die RISC-Kerne in Abhängigkeit von der Ausführungsform ein beliebiges von einer Reihe von Protokollen verwenden. In mindestens einer Ausführungsform können die RISC-Kerne ein Echtzeitbetriebssystem (real-time operating system - „RTOS“) ausführen. In mindestens einer Ausführungsform können die RISC-Kerne unter Verwendung einer oder mehrerer Vorrichtungen für integrierte Schaltungen, anwendungsspezifischer integrierter Schaltungen („ASICs“) und/oder Speichervorrichtungen 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 DMA es den Komponenten des PVA ermöglichen, unabhängig von der/den CPU(s) 1106 auf den Systemspeicher zuzugreifen. In mindestens einer Ausführungsform kann DMA eine beliebige Anzahl von Merkmalen unterstützen, die zur Bereitstellung 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 DMA bis zu sechs oder mehr Dimensionen der Adressierung unterstützen, die ohne Einschränkung Blockbreite, Blockhöhe, Blocktiefe, horizontale Blockabstufung, vertikale Blockabstufung und/oder Tiefenabstufung beinhalten können.
-
In mindestens einer Ausführungsform können Vektorprozessoren programmierbare Prozessoren sein, die so konstruiert sein können, dass sie die Programmierung für Algorithmen des maschinellen Sehens effizient und flexibel ausführen und Signalverarbeitungsfähigkeiten bereitstellen. In mindestens einer Ausführungsform kann ein PVA einen PVA-Kern und zwei Vektorverarbeitungsteilsystempartitionen beinhalten. In mindestens einer Ausführungsform kann ein PVA-Kern ein Prozessorteilsystem, DMA-Engine(s) (z. B. zwei DMA-Engines) und/oder andere Peripheriegeräte beinhalten. In mindestens einer Ausführungsform kann ein Vektorverarbeitungsteilsystem als primäre Verarbeitungs-Engine eines PVA arbeiten und kann eine Vektorverarbeitungseinheit (vector processing unit - „VPU“), einen Anweisungs-Cache und/oder einen Vektorspeicher (z. B. „VMEM“) beinhalten. In mindestens einer Ausführungsform kann der VPU-Kern einen digitalen Signalprozessor beinhalten, wie z. B. einen digitalen Single-Instruction-Multiple-Data(„SIMD“)-Very-Long-Instruction-Word(„VLIW“)-Signalprozessor. 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 der Vektorprozessoren einen Anweisungs-Cache beinhalten und mit einem dedizierten Speicher gekoppelt sein. Daher kann in mindestens einer Ausführungsform jeder der Vektorprozessoren so konfiguriert sein, dass er unabhängig von anderen Vektorprozessoren ausgeführt wird. In mindestens einer Ausführungsform können Vektorprozessoren, die in einem konkreten PVA enthalten sind, so konfiguriert sein, dass sie Datenparallelität einsetzen. Zum Beispiel kann in mindestens einer Ausführungsform eine Vielzahl von Vektorprozessoren, die in einem einzelnen PVA enthalten ist, einen gemeinsamen Algorithmus des maschinellen Sehens ausführen, jedoch an unterschiedlichen Regionen eines Bildes. In mindestens einer Ausführungsform können die in einem konkreten PVA enthaltenen Vektorprozessoren gleichzeitig unterschiedliche Algorithmen des maschinellen Sehens an einem Bild ausführen oder sogar unterschiedliche Algorithmen an sequentiellen Bildern oder Abschnitten eines Bildes ausführen. In mindestens einer Ausführungsform kann unter anderem eine beliebige Anzahl PVAs in einem Hardware-Beschleunigungscluster enthalten sein und kann eine beliebige Anzahl von Vektorprozessoren in jedem PVA enthalten sein. In mindestens einer Ausführungsform kann der PVA einen zusätzlichen Fehlerkorrekturcode(error correcting code - „ECC“)-Speicher beinhalten, um die Gesamtsystemsicherheit zu erhöhen.
-
In mindestens einer Ausführungsform können der/die Beschleuniger 1114 ein Netzwerk auf dem Chip für maschinelles Sehen und einen statischen Direktzugriffsspeicher („SRAM“) beinhalten, um einen SRAM mit hoher Bandbreite und niedriger Latenz für den/die Beschleuniger 1114 bereitzustellen. In mindestens einer Ausführungsform kann der chipinterne Speicher mindestens 4 MB SRAM beinhalten, der z. B. 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 weiterentwickelte Peripheriebus(advanced peripheral bus - „APB“)-Schnittstelle, eine Konfigurationsschaltung, eine Steuerung und einen Multiplexer beinhalten. In mindestens einer Ausführungsform kann eine beliebige Art von Speicher verwendet werden. In mindestens einer Ausführungsform können ein PVA und ein DLA auf den Speicher über einen Backbone zugreifen, der einem PVA und einem DLA einen Hochgeschwindigkeitszugriff auf den Speicher bereitstellt. In mindestens einer Ausführungsform kann ein Backbone ein Netzwerk auf dem Chip für maschinelles Sehen beinhalten, das einen PVA und einen DLA mit dem Speicher verbindet (z. B. unter Verwendung von APB).
-
In mindestens einer Ausführungsform kann ein Netzwerk auf dem Chip für maschinelles Sehen eine Schnittstelle beinhalten, die vor der Übertragung eines beliebigen Steuersignals/einer beliebigen Adresse/beliebiger Daten bestimmt, dass sowohl ein PVA als auch ein DLA einsatzbereite und gültige Signale bereitstellen. In mindestens einer Ausführungsform kann eine Schnittstelle separate Phasen und separate Kanäle für die Übertragung von Steuersignalen/Adressen/Daten sowie eine Burst-artige Kommunikation für eine kontinuierliche Datenübertragung bereitstellen. In mindestens einer Ausführungsform kann eine Schnittstelle mit den Standards der International Organization for Standardization („ISO“) 26262 oder der International Electrotechnical Commission („IEC“) 61508 konform sein, obwohl andere Standards und Protokolle verwendet werden können.
-
In mindestens einer Ausführungsform können ein oder mehrere der SoC(s) 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 können der/die Beschleuniger 1114 ein breites Spektrum von Verwendungen 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 sind die Fähigkeiten eines PVA eine gute Ergänzung für algorithmische Domänen, die eine vorhersagbare Verarbeitung bei niedriger Leistung und niedriger Latenz benötigen. Anders ausgedrückt zeigt ein PVA eine gute Performance für halbdichte oder dichte reguläre Berechnungen, auch an kleinen Datensätzen, die vorhersagbare Laufzeiten mit niedriger Latenz und niedriger Leistung erfordern könnten. In mindestens einer Ausführungsform, wie z. B. im Fahrzeug 1100, könnten der/die PVAs so konstruiert sein, dass sie klassische Algorithmen des maschinellen Sehens ausführen, da sie effizient bei der Objekterkennung sind und mit Integer-Mathematik arbeiten können.
-
Zum Beispiel, gemäß mindestens einer Ausführungsform der Technologie, wird ein PVA verwendet, um maschinelles Stereo-Sehen auszuführen. In mindestens einer Ausführungsform kann in einigen Beispielen ein auf semiglobalem Abgleich basierender Algorithmus verwendet werden, obwohl dies nicht als Einschränkung auszulegen ist. In mindestens einer Ausführungsform verwenden Anwendungen für das autonome Fahren auf Level 3-5 Bewegungsschätzung/Stereo-Abgleich spontan (z. B. Struktur aus Bewegung, Fußgängererkennung, Fahrspurerkennung usw.). In mindestens einer Ausführungsform kann ein PVA Funktionen des maschinellen Stereo-Sehens an Eingaben von zwei monokularen Kameras durchführen.
-
In mindestens einer Ausführungsform kann ein PVA verwendet werden, um einen 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 Laufzeit-Tiefenverarbeitung verwendet, indem z. B. Laufzeit-Rohdaten verarbeitet werden, um verarbeitete Laufzeitdaten bereitzustellen.
-
In mindestens einer Ausführungsform kann ein DLA verwendet werden, um eine beliebige Art von Netzwerk auszuführen, um die Steuerung und Fahrsicherheit zu verbessern, einschließlich zum Beispiel und ohne Einschränkung ein neuronales Netzwerk, das ein Maß an Konfidenz für jede Objekterkennung ausgibt. In mindestens einer Ausführungsform kann die Konfidenz als eine Wahrscheinlichkeit dargestellt oder interpretiert werden oder als Bereitstellung einer relativen „Gewichtung“ jeder Erkennung im Vergleich zu anderen Erkennungen. In mindestens einer Ausführungsform ermöglicht ein Konfidenzmaß es einem System, weitere Entscheidungen darüber zu treffen, welche Erkennungen als richtig positive Erkennungen und nicht als falsch positive Erkennungen betrachtet werden sollten. In mindestens einer Ausführungsform kann ein System einen Schwellenwert für die Konfidenz festlegen und nur Erkennungen, die den Schwellenwert überschreiten, als richtig positive Erkennungen betrachten. In einer Ausführungsform, in der ein automatisches Notbrems(automatic emergency braking - „AEB“)-System 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 Erkennungen mit hoher Konfidenz als Auslöser für AEB betrachtet werden. In mindestens einer Ausführungsform kann ein DLA ein neuronales Netzwerk zur Regression des Konfidenzwerts ausführen. In mindestens einer Ausführungsform kann das neuronale Netzwerk als seine Eingabe mindestens eine Teilmenge von Parametern verwenden, wie z. B. die Abmessungen des Begrenzungsrahmens, die (z. B. von einem anderen Teilsystem) erhaltene Bodenebenenschätzung, die Ausgabe von IMU-Sensor(en) 1166, die mit der Ausrichtung des Fahrzeugs 1100 korreliert, den Abstand, die 3D-Positionsschätzungen des Objekts, die vom neuronalen Netzwerk und/oder anderen Sensoren (z. B. LIDAR-Sensor(en) 1164 oder RADAR-Sensor(en) 1160) erhalten werden, usw.
-
In mindestens einer Ausführungsform können ein oder mehrere der SoC(s) 1104 (einen) Datenspeicher 1116 (z. B. Speicher) beinhalten. In mindestens einer Ausführungsform kann es sich bei dem/den Datenspeicher(n) 1116 um einen chipinternen Speicher des/der SoC(s) 1104 handeln, der neuronale Netzwerke speichern kann, die auf der/den GPU(s) 1108 und/oder einem DLA ausgeführt werden sollen. In mindestens einer Ausführungsform kann die Kapazität des/der Datenspeicher(s) 1116 groß genug sein, um mehrere Instanzen von neuronalen Netzwerken zur Redundanz und Sicherheit zu speichern. In mindestens einer Ausführungsform können der/die Datenspeicher 1116 (einen) L2- oder L3-Cache(s) beinhalten.
-
In mindestens einer Ausführungsform können ein oder mehrere der SoC(s) 1104 eine beliebige Anzahl von Prozessor(en) 1110 (z. B. eingebettete Prozessoren) beinhalten. In mindestens einer Ausführungsform können der/die Prozessor(en) 1110 einen Booting- und Leistungsverwaltungsprozessor beinhalten, der ein dedizierter Prozessor und ein Teilsystem sein kann, um die 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 des/der SoC(s) 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 Status mit niedriger Leistung, Verwaltung von Thermik und Temperatursensoren des/der SoC(s) 1104 und/oder Verwaltung von Leistungsstatus des/der SoC(s) 1104 bereitstellen. In mindestens einer Ausführungsform kann jeder Temperatursensor als Ringoszillator implementiert sein, dessen Ausgabefrequenz proportional zur Temperatur ist, und können das/die SoC(s) 1104 Ringoszillatoren verwenden, um Temperaturen von CPU(s) 1106, GPU(s) 1108 und/oder Beschleuniger(n) 1114 zu erkennen. In mindestens einer Ausführungsform, wenn bestimmt wird, dass Temperaturen einen Schwellenwert überschreiten, kann ein Booting- und Leistungsverwaltungsprozessor dann in eine Temperaturfehlerroutine eintreten und den/die SoC(s) 1104 in einen Status mit niedrigerer Leistung versetzen und/oder das Fahrzeug 1100 in einen Modus des Chauffierens zu einem sicheren Halt versetzen (z. B. das Fahrzeug 1100 zu einem sicheren Halt bringen).
-
In mindestens einer Ausführungsform können der/die Prozessor(en) 1110 ferner einen Satz von eingebetteten Prozessoren beinhalten, die als eine 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 der/die Prozessor(en) 1110 ferner eine stets eingeschaltete Prozessor-Engine beinhalten, welche die notwendigen Hardware-Merkmale zur Unterstützung der Sensorverwaltung mit niedriger Leistung und der 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. Timer und Unterbrechungssteuerungen), verschiedene E/A-Steuerungsperipheriegeräte und Routing-Logik beinhalten.
-
In mindestens einer Ausführungsform können der/die Prozessor(en) 1110 ferner eine Sicherheitscluster-Engine beinhalten, die ohne Einschränkung ein dediziertes Prozessorteilsystem zur Handhabung der Sicherheitsverwaltung für Automobilanwendungen beinhaltet. 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. Timer, 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 der/die Prozessor(en) 1110 ferner eine Echtzeitkamera-Engine beinhalten, die ohne Einschränkung ein dediziertes Prozessorteilsystem zur Handhabung der Echtzeitkameraverwaltung beinhalten kann. In mindestens einer Ausführungsform können der/die Prozessor(en) 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 der/die Prozessor(en) 1110 einen Videobildkompositor beinhalten, der ein Verarbeitungsblock sein kann (z. B. auf einem Mikroprozessor implementiert), der Videonachverarbeitungsfunktionen implementiert, die von einer Videowiedergabeanwendung benötigt werden, um ein endgültiges Bild für das Fenster eines Wiedergabeprogramms zu erzeugen. In mindestens einer Ausführungsform kann ein Videobildkompositor eine Linsenverzerrungskorrektur an der/den Weitsichtkamera(s) 1170, der/den Rundumkamera(s) 1174 und/oder an dem/den fahrerhausinternen Überwachungskamerasensor(en) durchführen. In mindestens einer Ausführungsform werden der/die fahrerhausinternen Überwachungskamerasensor(en) vorzugsweise von einem neuronalen Netzwerk überwacht, das auf einer anderen Instanz des SoC 1104 läuft und so konfiguriert ist, dass es Ereignisse im Fahrerhaus erkennt und entsprechend reagiert. In mindestens einer Ausführungsform kann ein fahrerhausinternes 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.
-
In mindestens einer Ausführungsform kann ein Videobildkompositor eine erweiterte zeitliche Rauschunterdrückung sowohl für die räumliche als auch für die zeitliche Rauschunterdrückung beinhalten. In mindestens einer Ausführungsform, in der Bewegung in einem Video vorkommt, gewichtet die Rauschunterdrückung zum Beispiel die räumlichen Informationen entsprechend, indem sie die Gewichtungen der Informationen, die von benachbarten Frames bereitgestellt werden, verringert. In mindestens einer Ausführungsform, in der ein Bild oder ein Abschnitt eines Bildes keine Bewegung enthält, kann die vom Videobildkompositor durchgeführte zeitliche Rauschunterdrückung Informationen aus einem vorherigen Bild verwenden, um das Rauschen in einem aktuellen Bild zu unterdrücken.
-
In mindestens einer Ausführungsform kann ein Videobildkompositor auch so konfiguriert sein, dass er eine Stereoentzerrung an den eingegebenen Stereolinsen-Frames durchführt. In mindestens einer Ausführungsform kann ein Videobildkompositor ferner für die Benutzerschnittstellenzusammensetzung verwendet werden, wenn ein Desktop des Betriebssystems in Gebrauch ist und die GPU(s) 1108 nicht zum kontinuierlichen Rendern neuer Oberflächen benötigt werden. In mindestens einer Ausführungsform kann, wenn die GPU(s) 1108 eingeschaltet sind und aktiv 3D-Rendering durchführen, ein Videobildkompositor verwendet werden, um die GPU(s) 1108 zu entlasten, um die Performance und Reaktionsfähigkeit zu verbessern.
-
In mindestens einer Ausführungsform können ein oder mehrere SoC der SoC(s) 1104 ferner eine serielle Mobile-Industry-Processor-Interface(„MIPI“)-Kameraschnittstelle zum Empfangen von Videos und Eingaben von Kameras, eine Hochgeschwindigkeitsschnittstelle und/oder einen Videoeingabeblock beinhalten, der für eine Kamera und zugehörige Pixeleingabefunktionen verwendet werden kann. In mindestens einer Ausführungsform können ein oder mehrere der SoC(s) 1104 ferner (eine) Eingabe/Ausgabe-Steuerung(en) beinhalten, die durch Software gesteuert werden können und für den Empfang 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 SoC(s) 1104 ferner eine breite Palette von Peripherieschnittstellen beinhalten, um die Kommunikation mit Peripheriegeräten, Audiocodierern/-decodierern („Codecs“), Leistungsverwaltungs- und/oder anderen Vorrichtungen zu ermöglichen. In mindestens einer Ausführungsform können das/die SoC(s) 1104 verwendet werden, um Daten von Kameras (z. B. über Gigabit-Multimedia-Serial-Link- und Ethernet-Kanäle verbunden), Sensoren (z. B. LIDAR-Sensor(en) 1164, RADAR-Sensor(en) 1160 usw., die über Ethernet-Kanäle verbunden sein können), Daten vom Bus 1102 (z.B. Geschwindigkeit des Fahrzeugs 1100, Lenkradposition usw.), Daten von GNSS-Sensor(en) 1158 (z. B. über einen Ethernet-Bus oder CAN-Bus verbunden) usw. zu verarbeiten. In mindestens einer Ausführungsform können ein oder mehrere SoC der SoC(s) 1104 ferner dedizierte Massenspeichersteuerungen mit hoher Performance beinhalten, die ihre eigenen DMA-Engines beinhalten können und die verwendet werden können, um CPU(s) 1106 von routinemäßigen Datenverwaltungs-Tasks zu befreien.
-
In mindestens einer Ausführungsform können das/die SoC(s) 1104 eine Ende-zu-Ende-Plattform mit einer flexiblen Architektur sein, welche die Automatisierungslevels 3-5 überspannt und dadurch eine umfassende funktionelle Sicherheitsarchitektur bereitstellt, die Techniken des maschinellen Sehens und des ADAS für Diversität und Redundanz nutzt und effizient einsetzt und eine Plattform für einen flexiblen, zuverlässigen Fahrsoftwarestapel zusammen mit Deep-Learning-Werkzeugen bereitstellt. In mindestens einer Ausführungsform können das/die SoC(s) 1104 schneller, zuverlässiger und sogar energieeffizienter und raumeffizienter sein als herkömmliche Systeme. Zum Beispiel können in mindestens einer Ausführungsform der/die Beschleuniger 1114, wenn sie mit der/den CPU(s) 1106, der/den GPU(s) 1108 und dem/den Datenspeicher(n) 1116 kombiniert sind, eine schnelle, effiziente Plattform für autonome Fahrzeuge der Levels 3-5 bereitstellen.
-
In mindestens einer Ausführungsform können Algorithmen des maschinellen Sehens auf CPUs ausgeführt werden, die unter Verwendung einer Programmiersprache auf hohem Level, wie z. B. C, konfiguriert werden können, um eine große Vielfalt von Verarbeitungsalgorithmen über eine große Vielfalt von visuellen Daten auszuführen. In mindestens einer Ausführungsform sind die CPUs jedoch oft nicht in der Lage, die Performance-Anforderungen vieler Anwendungen des maschinellen Sehens zu erfüllen, wie z. B. in Bezug auf die Ausführungszeit und den Leistungsverbrauch. 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 Netzwerke gleichzeitig und/oder sequentiell ausgefü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. GPU(s) 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 Netzwerk nicht speziell trainiert wurde. In mindestens einer Ausführungsform kann ein DLA ferner ein neuronales Netzwerk enthalten, das 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 Netzwerke gleichzeitig ausgeführt werden, z. B. für das Fahren bei Level 3, 4 oder 5. 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 von mehreren neuronalen Netzwerken unabhängig oder gemeinsam interpretiert werden. In mindestens einer Ausführungsform kann ein solches Warnschild selbst von einem ersten eingesetzten neuronalen Netzwerk (z. B. einem trainierten neuronalen Netzwerk) als Verkehrsschild identifiziert werden und kann ein Text „Blinkende Lichter weisen auf Verweisung hin“ von einem zweiten eingesetzten neuronalen Netzwerk interpretiert werden, das eine Wegplanungssoftware des Fahrzeugs (die vorzugsweise auf einem CPU-Komplex ausgeführt wird) darüber informiert, dass, wenn blinkende Lichter erkannt werden, Vereisungen vorliegen. In mindestens einer Ausführungsform kann ein blinkendes Licht identifiziert werden, indem ein drittes eingesetztes neuronales Netzwerk über mehrere Frames hinweg betrieben wird und eine Wegplanungssoftware des Fahrzeugs über ein Vorhandensein (oder ein Nichtvorhandensein) von blinkenden Lichtern informiert. In mindestens einer Ausführungsform können alle drei neuronalen Netzwerke gleichzeitig laufen, z. B. innerhalb eines DLA und/oder auf GPU(s) 1108.
-
In mindestens einer Ausführungsform kann ein CNN zur Gesichtserkennung und Fahrzeugbesitzeridentifizierung Daten von Kamerasensoren verwenden, um das Vorhandensein eines autorisierten Fahrers und/oder Besitzers des Fahrzeugs 1100 zu identifizieren. 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 die Lichter einzuschalten und um in einem Sicherheitsmodus ein solches Fahrzeug zu deaktivieren, wenn ein Besitzer ein solches Fahrzeug verlässt. Auf diese Weise stellen das/die SoC(s) 1104 Sicherheit gegen Diebstahl und/oder Carjacking bereit.
-
In mindestens einer Ausführungsform kann ein CNN zur Erkennung und Identifizierung von Einsatzfahrzeugen Daten von Mikrofonen 1196 verwenden, um Sirenen von Einsatzfahrzeugen zu erkennen und zu identifizieren. In mindestens einer Ausführungsform verwenden das/die SoC(s) 1104 ein CNN zur Klassifizierung von Umgebungs- und Stadtgeräuschen sowie zur Klassifizierung 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 Verwendung 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 den/die GNSS-Sensor(en) 1158 identifiziert. In mindestens einer Ausführungsform versucht ein CNN, wenn es in Europa betrieben wird, europäische Sirenen zu erkennen, und in Nordamerika versucht ein CNN, nur nordamerikanische Sirenen zu identifizieren. In mindestens einer Ausführungsform kann, sobald ein Einsatzfahrzeug erkannt wird, ein Steuerprogramm verwendet werden, um 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, und zwar mit der Hilfe des Ultraschallsensors/der Ultraschallsensoren 1162, bis die Einsatzfahrzeug vorbeigefahren sind.
-
In mindestens einer Ausführungsform kann das Fahrzeug 1100 CPU(s) 1118 (z.B. diskrete CPU(s) oder dCPU(s)) beinhalten, die über eine Hochgeschwindigkeitszusammenschaltung (z. B. PCIe) mit dem/den SoC(s) 1104 gekoppelt sein können. In mindestens einer Ausführungsform können die CPU(s) 1118 z. B. einen X86-Prozessor beinhalten. Die CPU(s) 1118 können dazu verwendet werden, eine beliebige einer Vielfalt von Funktionen durchzuführen, z. B. die Vermittlung potenziell inkonsistenter Ergebnisse zwischen ADAS-Sensoren und SoC(s) 1104 und/oder die Überwachung des Status und Zustands der Steuerung(en) 1136 und/oder eines Infotainmentsystems auf einem Chip („Infotainment-SoC“) 1130.
-
In mindestens einer Ausführungsform kann das Fahrzeug 1100 GPU(s) 1120 (z. B. diskrete GPU(s) oder dGPU(s)) beinhalten, die über eine Hochgeschwindigkeitszusammenschaltung (z. B. NVLINK-Kanal von NVIDIA) mit dem/den SoC(s) 1104 gekoppelt sein können. In mindestens einer Ausführungsform können die GPU(s) 1120 eine zusätzliche Funktionalität für künstliche Intelligenz bereitstellen, z. B. durch Ausführen redundanter und/oder unterschiedlicher neuronaler Netzwerke, und können zum Trainieren und/oder Aktualisieren neuronaler Netzwerke verwendet werden, die zumindest teilweise auf Eingaben (z. B. Sensordaten) von Sensoren eines Fahrzeugs 1100 basieren.
-
In mindestens einer Ausführungsform kann das Fahrzeug 1100 ferner eine Netzwerkschnittstelle 1124 beinhalten, die ohne Einschränkung (eine) drahtlose Antenne(n) 1126 beinhalten kann (z. B. eine oder mehrere drahtlose Antennen für unterschiedliche Kommunikationsprotokolle, wie z. B. eine Mobilfunkantenne, eine Bluetooth-Antenne usw.). In mindestens einer Ausführungsform kann die Netzwerkschnittstelle 1124 verwendet werden, um eine drahtlose Verbindung mit Internet-Cloud-Diensten (z. B. mit (einem) Server(n) und/oder anderen Netzwerkvorrichtungen), mit anderen Fahrzeugen und/oder mit Rechenvorrichtungen (z. B. Client-Vorrichtungen von Fahrgästen) zu ermöglichen. In mindestens einer Ausführungsform kann zur Kommunikation mit anderen Fahrzeugen eine direkte Verknüpfung zwischen dem Fahrzeug 110 und einem anderen Fahrzeug hergestellt werden und/oder kann eine indirekte Verknüpfung (z. B. über Netzwerke und 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 solche vorgenannte Funktionalität Teil einer kooperativen adaptiven Geschwindigkeitssteuerungsfunktionalität des Fahrzeugs 1100 sein.
-
In mindestens einer Ausführungsform kann die Netzwerkschnittstelle 1124 ein SoC beinhalten, das eine Modulations- und Demodulationsfunktionalität bereitstellt und es der/den Steuerung(en) 1136 ermöglicht, über drahtlose Netzwerke zu kommunizieren. In mindestens einer Ausführungsform kann die Netzwerkschnittstelle 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. Die Frequenzkonvertierungen könnten z. B. durch hinreichend bekannte Prozesse und/oder unter Verwendung von Überlagerungsverfahren durchgeführt werden. In mindestens einer Ausführungsform kann die Hochfrequenz-Frontend-Funktionalität durch einen separaten Chip bereitgestellt sein. In mindestens einer Ausführungsform können die Netzwerkschnittstellen eine drahtlose Funktionalität zur Kommunikation über LTE, WCDMA, UMTS, GSM, CDMA2000, Bluetooth, Bluetooth LE, Wi-Fi, Z-Wave, ZigBee, LoRaWAN und/oder andere drahtlose Protokolle beinhalten.
-
In mindestens einer Ausführungsform kann das Fahrzeug 1100 ferner (einen) Datenspeicher 1128 beinhalten, der ohne Einschränkung chipexternen (z. B. außerhalb des/der SoC(s) 1104) Speicher beinhalten kann. In mindestens einer Ausführungsform können der/die Datenspeicher 1128 ohne Einschränkung ein oder mehrere Speicherelemente umfassen, darunter RAM, SRAM, dynamischer Direktzugriffsspeicher („DRAM“), Video-Direktzugriffsspeicher („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 (einen) GNSS-Sensor(en) 1158 (z. B. GPS- und/oder unterstützte GPS-Sensoren) beinhalten, um bei der Kartierung, Wahrnehmung, Erzeugung des Belegungsgitters und/oder Pfadplanungsfunktionen zu helfen. In mindestens einer Ausführungsform kann eine beliebige Anzahl von GNSS-Sensor(en) 1158 verwendet werden, einschließlich zum Beispiel und ohne Einschränkung ein GPS unter Verwendung eines USB-Steckers mit einer Ethernet-zu-Seriell(z. B. RS-232)-Brücke.
-
In mindestens einer Ausführungsform kann das Fahrzeug 1100 ferner (einen) RADAR-Sensor(en) 1160 beinhalten. In mindestens einer Ausführungsform können der/die RADAR-Sensor(en) 1160 vom Fahrzeug 1100 zur Fahrzeugerkennung 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 der/die RADAR-Sensor(en) 1160 einen CAN-Bus und/oder den Bus 1102 (z. B. zur Übertragung der von dem/den RADAR-Sensor(en) 1160 erzeugten Daten) zur Steuerung von und zum Zugriff auf Objektverfolgungsdaten verwenden, wobei in einigen Beispielen der Zugriff auf Rohdaten über Ethernet-Kanäle erfolgt. In mindestens einer Ausführungsform kann eine große Vielfalt von RADAR-Sensorarten verwendet werden. Zum Beispiel und ohne Einschränkung können der/die RADAR-Sensor(en) 1160 für die Verwendung als Front-, Heck- und Seiten-RADAR geeignet sein. In mindestens einer Ausführungsform sind einer oder mehrere Sensoren des/der RADAR-Sensor(en) 1160 ein Puls-Doppler-RADAR-Sensor.
-
In mindestens einer Ausführungsform können der/die RADAR-Sensor(en) 1160 unterschiedliche Konfigurationen beinhalten, z. B. 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, z.B. innerhalb einer Reichweite von 250 m (Metern). In mindestens einer Ausführungsform können der/die RADAR-Sensor(en) 1160 dabei helfen, zwischen statischen und sich bewegenden Objekten zu unterscheiden, und können vom ADAS-System 1138 für den Notbremsassistenten und die Vorwärtskollisionswarnung verwendet werden. In mindestens einer Ausführungsform können der/die Sensor(en) 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 konstruiert 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 zweite weitere Antennen das Sichtfeld erweitern, wodurch es möglich ist, Fahrzeuge, die in eine Fahrspur des Fahrzeugs 1100 einfahren oder diese verlassen, schnell zu erkennen.
-
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-Sensor(en) 1160 beinhalten, die für die Installation an beiden Enden eines hinteren Stoßfängers konstruiert sind. Wenn das RADAR-Sensorsystem an beiden Enden des 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 im ADAS-System 1138 zur Erkennung des toten Winkels und/oder zur Unterstützung beim Fahrspurwechsel verwendet werden.
-
In mindestens einer Ausführungsform kann das Fahrzeug 1100 ferner (einen) Ultraschallsensor(en) 1162 beinhalten. In mindestens einer Ausführungsform können der/die Ultraschallsensor(en) 1162, die an vorderen, einer hinteren und/oder seitlichen Stelle des Fahrzeugs 1100 positioniert sein können, können als Einparkhilfe und/oder zur Erstellung und Aktualisierung eines Belegungsgitters verwendet werden. In mindestens einer Ausführungsform kann eine große Vielfalt von Ultraschallsensor(en) 1162 verwendet werden und können unterschiedliche Ultraschallsensor(en) 1162 können für unterschiedliche Erkennungsreichweiten (z. B. 2,5 m, 4 m) verwendet werden. In mindestens einer Ausführungsform können der/die Ultraschallsensor(en) 1162 bei funktionellen Sicherheitslevels von ASIL B arbeiten.
-
In mindestens einer Ausführungsform kann das Fahrzeug 1100 (einen) LIDAR-Sensor(en) 1164 beinhalten. In mindestens einer Ausführungsform können der/die LIDAR-Sensor(en) 1164 zur Objekt- und Fußgängererkennung, Notbremsung, Kollisionsvermeidung und/oder andere Funktionen verwendet werden. In mindestens einer Ausführungsform können der/die LIDAR-Sensor(en) 1164 bei dem funktionellen Sicherheitslevel ASIL B arbeiten. 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. Daten für einen Gigabit-Ethernet-Switch bereitzustellen).
-
In mindestens einer Ausführungsform können der/die LIDAR-Sensor(en) 1164 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-Sensor(en) 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 vorstehende LIDAR-Sensoren verwendet werden. In einer solchen Ausführungsform können der/die LIDAR-Sensor(en) 1164 eine kleine Vorrichtung beinhalten, die in eine vordere, eine hintere, eine seitliche und/oder eine Eckstelle des Fahrzeugs 1100 eingebettet sein kann. In mindestens einer Ausführungsform können der/die LIDAR-Sensor(en) 1164 in einer solchen 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 der/die an der Front montierte(n) LIDAR-Sensor(en) 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 z. B. 3D-Blitz-LIDAR, verwendet werden. In mindestens einer Ausführungsform verwendet 3D-Blitz-LIDAR einen Blitz eines Lasers als eine Übertragungsquelle, um die Umgebung des Fahrzeugs 1100 bis zu ungefähr 200 m zu erleuchten. In mindestens einer Ausführungsform umfasst eine Blitz-LIDAR-Einheit ohne Einschränkung einen Rezeptor, der die Laserpuls-Laufzeit und das reflektierte Licht an jedem Pixel aufzeichnet, was wiederum einer Reichweite vom 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 Blitz-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 Blitz-LIDAR-Vorrichtung einen 5-Nanosekunden-Laserpuls der Klasse I (augensicher) pro Bild verwenden und kann das reflektierte Laserlicht als eine 3D-Reichweitenpunktwolke und gemeinsam registrierte Intensitätsdaten erfassen.
-
In mindestens einer Ausführungsform kann das Fahrzeug 1100 ferner (einen) IMU-Sensor(en) 1166 beinhalten. In mindestens einer Ausführungsform können der/die IMU-Sensor(en) 1166 in einer Mitte einer Hinterachse des Fahrzeugs 1100 angeordnet sein. In mindestens einer Ausführungsform können der/die IMU-Sensor(en) 1166 zum Beispiel und ohne Einschränkung (einen) Beschleunigungsmesser, (ein) Magnetometer, (ein) Gyroskop(e), einen Magnetkompass, Magnetkompasse und/oder andere Sensorarten beinhalten. In mindestens einer Ausführungsform, wie z. B. bei sechsachsigen Anwendungen, können der/die IMU-Sensor(en) 1166 ohne Einschränkung Beschleunigungsmesser und Gyroskope beinhalten. In mindestens einer Ausführungsform, wie z. B. bei neunachsigen Anwendungen, können der/die IMU-Sensor(en) 1166 ohne Einschränkung Beschleunigungsmesser, Gyroskope und Magnetometer beinhalten.
-
In mindestens einer Ausführungsform können der/die IMU-Sensor(en) 1166 als ein miniaturisiertes GPS-gestütztes Trägheitsnavigationssystem (GPS-Aided Inertial Navigation System - „GPS/INS”) mit hoher Performance implementiert sein, das Trägheitssensoren von mikroelektromechanischen Systemen („MEMS“), einen hochempfindlichen GPS-Empfänger und weiterentwickelte Kalman-Filteralgorithmen kombiniert, um Schätzungen von Position, Geschwindigkeit und Stellung bereitzustellen. In mindestens einer Ausführungsform können der/die IMU-Sensor(en) 1166 es dem Fahrzeug 1100 ermöglichen, seinen Kurs zu schätzen, ohne dass Eingaben von einem Magnetsensor erforderlich sind, indem von einem GPS an den/die IMU-Sensor(en) 1166 Änderungen der Geschwindigkeit direkt beobachtet und korreliert werden. In mindestens einer Ausführungsform können der/die IMU-Sensor(en) 1166 und GNSS-Sensor(en) 1158 in einer einzelnen integrierten Einheit kombiniert sein.
-
In mindestens einer Ausführungsform kann das Fahrzeug 1100 (ein) Mikrofon(e) 1196 beinhalten, die im und/oder um das Fahrzeug 1100 herum platziert sind. In mindestens einer Ausführungsform können das/die Mikrofon(e) 1196 unter anderem zur Erkennung und Identifizierung von Einsatzfahrzeugen verwendet werden.
-
In mindestens einer Ausführungsform kann das Fahrzeug 1100 ferner eine beliebige Anzahl von Kameraarten beinhalten, darunter (eine) Stereokamera(s) 1168, (eine) Weitsichtkamera(s) 1170, (eine) Infrarotkamera(s) 1172, (eine) Rundumkamera(s) 1174, (eine) Langstreckenkamera(s) 1198, (eine) Mittelstreckenkamera(s) 1176 und/oder andere Kameraarten. In mindestens einer Ausführungsform können Kameras verwendet werden, um Bilddaten um eine gesamte Peripherie des Fahrzeugs 1100 herum zu erfassen. In mindestens einer Ausführungsform hängt die Art der verwendeten Kameras vom Fahrzeug 1100 ab. In mindestens einer Ausführungsform kann eine beliebige Kombination von Kameraarten 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 zum Beispiel und ohne Einschränkung Gigabit-Multimedia-Serial-Link- („GMSL“) und/oder Gigabit-Ethernet-Kommunikationen unterstützen. In mindestens einer Ausführungsform könnte jede Kamera so sein wie bereits hierin in Bezug auf 11A und 11B detaillierter beschrieben.
-
In mindestens einer Ausführungsform kann das Fahrzeug 1100 ferner (einen) Vibrationssensor(en) 1142 beinhalten. In mindestens einer Ausführungsform können der/die Vibrationssensor(en) 1142 Vibrationen von Komponenten des Fahrzeugs 1100, wie z. B. der Achse(n), messen. Zum Beispiel können in mindestens einer Ausführungsform Änderungen der Vibrationen eine Änderung des Straßenbelags angeben. In mindestens einer Ausführungsform, wenn zwei oder mehr Vibrationssensoren 1142 verwendet werden, können die Unterschiede zwischen den Vibrationen verwendet werden, um die Reibung oder den Schlupf des Straßenbelags zu bestimmen (z. B., wenn ein Unterschied der Vibration zwischen einer leistungsbetriebenen Achse und einer sich frei drehenden Achse besteht).
-
In mindestens einer Ausführungsform kann das Fahrzeug 1100 das 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 autonomen/adaptiven/automatischen Geschwindigkeitssteuerungs(autonomous/adaptive/automatic cruise control - „ACC“)-Systems, eines kooperativen adaptiven Geschwindigkeitssteuerungs(cooperative adaptive cruise control - „CACC“)-Systems, eines Vorwärtszusammenstoßwam(forward crash warning - „FCW“)-Systems, eines automatischen Notbrems(„AEB“)-Systems, eines Spurverlassenswarn(lane departure warning - „LDW“)-Systems, eines Spurhalteassistenz(lane keep assist - „LKA“)-Systems, eines Totwinkelwam(blind spot warning - „BSW“)-Systems, eines Querverkehrswarn(rear cross-traffic warning - „RCTW“)-Systems, eines Kollisionswarn(collision warning - „CW“)-Systems, eines Spurzentrierungs(lane centering - „LC“)-Systems und/oder anderer Systeme, Merkmale und/oder Funktionen beinhalten.
-
In mindestens einer Ausführungsform kann das ACC-System RADAR-Sensor(en) 1160, LIDAR-Sensor(en) 1164 und/oder eine beliebige Anzahl von Kamera(s) 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 passt die Geschwindigkeit des Fahrzeugs 1100 automatisch an, um einen sicheren Abstand zu vorausfahrenden Fahrzeugen einzuhalten. In mindestens einer Ausführungsform führt ein Quer-ACC-System eine Abstandshaltung durch und rät dem Fahrzeug 1100, die Fahrspuren zu wechseln, wenn dies erforderlich ist. In mindestens einer Ausführungsform ist eine Quer-ACC mit anderen ADAS-Anwendungen, wie zum Beispiel LC und CW, verbunden.
-
In mindestens einer Ausführungsform verwendet ein CACC-System Informationen von anderen Fahrzeugen, die über die Netzwerkschnittstelle 1124 und/oder die drahtlose(n) Antenne(n) 1126 von anderen Fahrzeugen über eine drahtlose Verknüpfung oder indirekt über eine Netzwerkverbindung (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 eine oder beide der 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 konstruiert, dass es einen Fahrer vor einer Gefahr warnt, sodass ein solcher Fahrer eine korrigierend Handlung durchführen kann. In mindestens einer Ausführungsform verwendet ein FCW-System eine nach vorn gerichtete Kamera und/oder RADAR-Sensor(en) 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, z. B. in Form eines Tons, einer optischen Warnung, einer Vibration und/oder eines schnellen Bremsimpulses.
-
In mindestens einer Ausführungsform erkennt ein AEB-System eine drohende Vorwärtskollision mit einem anderen Fahrzeug oder einem anderen Objekt und kann automatisch die Bremsen betätigen, wenn ein Fahrer nicht innerhalb eines spezifizierten Zeit- oder Abstandsparameters eine korrigierende Handlung durchführt. In mindestens einer Ausführungsform kann das AEB-System nach vorn gerichtete Kamera(s) und/oder RADAR-Sensor(en) 1160 verwenden, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind. In mindestens einer Ausführungsform, wenn ein AEB-System eine Gefahr erkennt, warnt es typischerweise zuerst einen Fahrer, um eine korrigierende Handlung durchzuführen, um eine Kollision zu vermeiden, und, wenn dieser Fahrer keine korrigierenden Handlung durchführt, kann dieses AEB-System automatisch die Bremsen in dem Bestreben betätigen, eine Auswirkung einer vorhergesagten Kollision zu verhindern oder mindestens abzuschwächen. In mindestens einer Ausführungsform kann ein AEB-System Techniken, wie zum Beispiel 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 z. B. Lenkrad- oder Sitzvibrationen, um den Fahrer zu warnen, wenn das Fahrzeug 1100 die Fahrspurmarkierungen überquert. In mindestens einer Ausführungsform wird ein LDW-System nicht aktiviert, wenn ein Fahrer ein absichtliches Verlassen der Fahrspur z. B. durch Betätigen des Blinkers angibt. In mindestens einer Ausführungsform kann ein LDW-System nach vorn gerichtete Kameras 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 ist ein LKA-System eine Variation eines 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 einen Fahrer vor Fahrzeugen im toten Winkel eines Automobils. In mindestens einer Ausführungsform kann ein BSW-System einen optischen, akustischen und/oder taktilen Alarm bereitstellen, um anzugeben, dass Einfädeln in oder Wechseln der Fahrspuren unsicher ist. In mindestens einer Ausführungsform kann ein BSW-System eine zusätzliche Warnung ausgeben, wenn ein Fahrer einen Blinker betätigt. In mindestens einer Ausführungsform kann ein BSW-System nach hinten gerichtete Kamera(s) und/oder RADAR-Sensor(en) 1160 verwenden, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, die elektrisch mit einer Rückmeldung des Fahrers gekoppelt sind, wie z. B. einer Anzeige, einem Lautsprecher und/oder einer vibrierenden Komponente.
-
In mindestens einer Ausführungsform kann ein RCTW-System eine optische, akustische und/oder taktile Benachrichtigung bereitstellen, wenn ein Objekt außerhalb der Reichweite einer Heckkamera erkannt wird, wenn das Fahrzeug 1100 rückwärtsfährt. In mindestens einer Ausführungsform beinhaltet ein RCTW-System ein AEB-System, um sicherzustellen, dass die 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-Sensor(en) 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 anfällig für falsch positive Ergebnisse sein, die für den Fahrer ärgerlich und ablenkend sein können, aber typischerweise nicht katastrophal sind, da herkömmliche ADAS-Systeme einen Fahrer warnen und es diesem Fahrer ermöglichen, 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 beispielsweise ein Backup- und/oder sekundärer Computer sein, der Wahrnehmungsinformationen für ein Rationalitätsmodul eines Backup-Computers bereitstellt. In mindestens einer Ausführungsform kann ein Rationalitätsmonitor eines Backup-Computers eine redundante, diverse Software auf Hardware-Komponenten ausführen, um Fehler in der Wahrnehmung und bei dynamischen Fahr-Tasks zu erkennen. In mindestens einer Ausführungsform können die Ausgaben des ADAS-Systems 1138 für eine Kontroll-MCU bereitgestellt werden. In mindestens einer Ausführungsform, wenn Ausgaben von einem primären Computer und Ausgaben von einem sekundären Computer einander widersprechen, bestimmt eine Kontroll-MCU, wie der Widerspruch beizulegen ist, um einen sicheren Betrieb sicherzustellen.
-
In mindestens einer Ausführungsform kann ein primärer Computer so konfiguriert sein, dass er einer Kontroll-MCU eine Konfidenzbewertung bereitstellt, welche die Konfidenz dieses primären Computers in ein gewähltes Ergebnis angibt. In mindestens einer Ausführungsform, wenn diese Konfidenzbewertung einen Schwellenwert überschreitet, kann diese Kontroll-MCU der Führung dieses primären Computers folgen, unabhängig davon, ob dieser sekundäre Computer ein widersprüchliches oder inkonsistentes Ergebnis bereitstellt. In mindestens einer Ausführungsform, in der eine Konfidenzbewertung einen Schwellenwert nicht erreicht und der primäre und der sekundäre Computer unterschiedliche Ergebnisse angeben (z. B. einen Widerspruch), kann eine Kontroll-MCU zwischen den Computern vermitteln, um ein geeignetes Resultat zu bestimmen.
-
In mindestens einer Ausführungsform kann eine Kontroll-MCU so konfiguriert sein, dass sie ein neuronales Netzwerk/neuronale Netzwerke ausführt, das/die so trainiert und konfiguriert ist/sind, dass es/sie mindestens teilweise basierend auf den Ausgaben eines primären Computers und den Ausgaben eines sekundären Computers die Bedingungen bestimmt/bestimmen, unter denen dieser sekundäre Computer Fehlalarme bereitstellt. In mindestens einer Ausführungsform kann/können das neuronale Netzwerk/die neuronalen Netzwerke in einer Kotroll-MCU lernen, wann der Ausgabe eines sekundären Computers vertraut werden kann und wann nicht. Zum Beispiel kann/können in mindestens einer Ausführungsform, wenn dieser sekundäre Computer ein RADAR-basiertes FCW-System ist, ein neuronales Netzwerk/neuronale Netzwerke in einer Kontroll-MCU lernen, wenn ein FCW-System metallische Objekte identifiziert, die tatsächlich keine Gefahren sind, wie z. B. ein Abflussgitter oder ein Gullydeckel, das/der einen Alarm auslöst. In mindestens einer Ausführungsform, wenn ein sekundärer Computer ein kamerabasiertes LDW-System ist, kann ein neuronales Netzwerk in einer Kontroll-MCU lernen, die LDW zu überschreiben, wenn Fahrradfahrer oder Fußgänger vorhanden sind und ein Verlassen der Fahrspur tatsächlich ein sicherstes Manöver ist. In mindestens einer Ausführungsform kann eine Kontroll-MCU mindestens eines von einem DLA oder einer GPU beinhalten, der/die für die Ausführung von (einem) neuronalen Netzwerk(en) mit assoziiertem Speicher geeignet ist. In mindestens einer Ausführungsform kann eine Kontroll-MCU eine Komponente eines oder mehrerer SoC(s) 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 unter Verwendung der traditionellen Regeln des maschinellen Sehens ausführt. In mindestens einer Ausführungsform kann dieser sekundäre Computer klassische Regeln des maschinellen Sehens (wenn-dann) verwenden und kann das Vorhandensein eines neuronalen Netzwerks/von neuronalen Netzwerken in einer Kontroll-MCU die Zuverlässigkeit, Sicherheit und Performance verbessern. Zum Beispiel macht in mindestens einer Ausführungsform die vielfältige Implementation und absichtliche Nicht-Identität ein Gesamtsystem fehlertoleranter, insbesondere gegenüber Fehlern, die durch Software(oder Software-Hardware-Schnittstellen)-Funktionalität verursacht werden. Wenn 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 Kontroll-MCU eine größere Konfidenz darin haben, 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 einen Wahrnehmungsblock eines primären Computers und/oder in eines Block für dynamische Fahr-Tasks eines primären Computers eingespeist werden. Wenn das ADAS-System 1138 z. B. eine Vorwärtszusammenstoßwarnung aufgrund eines unmittelbar vorausliegenden Objekts angibt, kann ein Wahrnehmungsblock in mindestens einer Ausführungsform diese Information bei der Identifizierung von Objekten verwenden. In mindestens einer Ausführungsform kann ein sekundärer Computer über sein eigenes neuronales Netzwerk verfügen, das trainiert ist und somit ein Risiko von falsch positiven Ergebnissen reduziert, wie hierin beschrieben.
-
In mindestens einer Ausführungsform kann das Fahrzeug 1100 ferner ein Infotainment-SoC 1130 (z. B. ein fahrzeuginternes Infotainment-System (in-vehicle infotainment system - IVI-System)) beinhalten. Obwohl als ein SoC veranschaulicht und beschrieben, kann das Infotainment-SoC 1130 in mindestens einer Ausführungsform kein SoC sein und kann 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 enthalten, die verwendet werden kann, um Audio (z. B. Musik, einen persönlichen digitalen Assistenten, Navigationsanweisungen, Nachrichten, Radio usw.), Video (z. B. TV, Filme, Streaming usw.), Telefon (z. B. Freisprechen), Netzwerkkonnektivität (z. B. LTE, WiFi usw.) und/oder Informationsdienste (z. B. Navigationssysteme, Rückwärtseinparkhilfe, ein Radiodatensystem, fahrzeugbezogene Informationen wie Kraftstofffüllstand, insgesamt zurückgelegte Strecke, Bremskraftstofffüllstand, Ölfüllstand, Tür öffnen/schließen, Luftfilterinformationen usw.) für das Fahrzeug 1100 bereitzustellen. Das Infotainment-SoC 1130 könnte beispielsweise Radios, Plattenspieler, Navigationssysteme, Videowiedergabevorrichtungen, USB- und Bluetooth-Konnektivität, Carputer, In-Car-Entertainment, WiFi, Audiosteuerungen am Lenkrad, eine Freisprech-Sprachsteuerung, eine Heads-up-Anzeige (heads-up display - „HUD“), eine HMI-Anzeige 1134, eine Telematikvorrichtung, ein Steuerfeld (z. B. zur Steuerung von und/oder Interaktion mit verschiedenen Komponenten, Merkmalen und/oder Systemen) und/oder andere Komponenten beinhalten. In mindestens einer Ausführungsform kann das Infotainment-SoC 1130 ferner dazu verwendet werden, um dem/den Benutzer(n) des Fahrzeugs 1100 Informationen (z. B. optisch und/oder akustisch) bereitzustellen, wie z. B. Informationen vom ADAS-System 1138, Informationen zum autonomen Fahren, wie z. B. geplante Fahrzeugmanöver, Trajektorien, Umgebungsinformationen (z. B. Kreuzungsinformationen, Fahrzeuginformationen, Straßeninformationen usw.) und/oder andere Informationen.
-
In mindestens einer Ausführungsform kann das 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 mit einer Kontroll-MCU gekoppelt sein, sodass eine GPU eines Infotainment-Systems einige Selbstfahrfunktionen ausführen kann, falls die primäre(n) Steuerung(en) 1136 (z. B. primäre und/oder Backup-Computer des Fahrzeugs 1100) ausfallen. In mindestens einer Ausführungsform kann das Infotainment-SoC 1130 das Fahrzeug 1100 in einen Modus des Chauffierens zu einem sicheren Halt versetzen, wie hierin beschrieben.
-
In mindestens einer Ausführungsform kann das Fahrzeug 1100 ferner ein Kombiinstrument 1132 (z. B. ein digitales Armaturenbrett, ein elektronisches Kombiinstrument, eine digitale Instrumententafel usw.) beinhalten. 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 z. B. Geschwindigkeitsmesser, Kraftstoffstand, Öldruck, Drehzahlmesser, Wegstreckenzähler, Blinker, Schaltknüppelpositionsangabe, Sicherheitsgurt-Warnleuchte(n), Feststellbremsen-Warnleuchte(n), Motor-Fehlfunktionsleuchte(n), Informationen über ergänzende Rückhaltesysteme (z. B. Airbags), Beleuchtungssteuerungen, Sicherheitssystemsteuerungen, Navigationsinformationen usw. In einigen Beispielen können Informationen angezeigt und/oder vom 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 Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 im System aus 11C für Ableitungs- oder Vorhersagevorgänge verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
11D ist eine Darstellung eines Systems 1176 zur Kommunikation zwischen (einem) cloudbasierten Server(n) und dem autonomen 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, das/die Netzwerk(e) 1190 und eine beliebige Anzahl und Art von Fahrzeugen, einschließlich des Fahrzeugs 1100, beinhalten. In mindestens einer Ausführungsform können der/die Server 1178 ohne Einschränkung eine Vielzahl von GPUs 1184(A)-1184(H) (hierin kollektiv als GPUs 1184 bezeichnet), PCIe-Switches 1182(A)-1182(D) (hierin kollektiv als PCIe-Switches 1182 bezeichnet) und/oder CPUs 1180(A)-1180(B) (hierin kollektiv als CPUs 1180 bezeichnet) beinhalten. In mindestens einer Ausführungsform können die GPUs 1184, CPUs 1180 und PCIe-Switches 1182 mit Hochgeschwindigkeitszusammenschaltungen miteinander verbunden sein, wie z.B. und ohne Einschränkung den von NVIDIA entwickelten NVLink-Schnittstellen 1188 und/oder PCIe-Verbindungen 1186. In mindestens einer Ausführungsform sind die GPUs 1184 über ein NVLink- und/oder NVSwitch-SoC verbunden und sind die GPUs 1184 und die PCIe-Switches 1182 über PCIe-Zusammenschaltungen verbunden. Obwohl acht GPUs 1184, zwei CPUs 1180 und vier PCIe-Switches 1182 veranschaulicht sind, ist dies nicht als Einschränkung auszulegen. In mindestens einer Ausführungsform kann jeder des Servers/der Server 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 der/die Server 1178 jeweils acht, sechzehn, zweiunddreißig und/oder mehr GPUs 1184 beinhalten.
-
In mindestens einer Ausführungsform können der/die Server 1178 über das/die Netzwerk(e) 1190 und von Fahrzeugen Bilddaten empfangen, die Bilder darstellen, die unerwartete oder veränderte Straßenbedingungen zeigen, wie z. B. kürzlich begonnene Straßenarbeiten. In mindestens einer Ausführungsform können der/die Server 1178 über das/die Netzwerk(e) 1190 und an die Fahrzeuge neuronale Netzwerke 1192, aktualisierte und/oder anderweitige und/oder Karteninformationen 1194 übertragen, einschließlich, ohne Einschränkung, Informationen über 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 z.B. Informationen über Baustellen, Schlaglöcher, Umleitungen, Überschwemmungen und/oder andere Hindernisse. In mindestens einer Ausführungsform können die neuronalen Netzwerke 1192 und/oder Karteninformationen 1194 aus einem neuen Training und/oder Erfahrungen resultieren, das/die in Daten dargestellt wird/werden, die von einer beliebigen Anzahl von Fahrzeugen in einer Umgebung empfangen wurden, und/oder mindestens teilweise basierend auf Training, das in einem Rechenzentrum (z. B. unter Verwendung von dem/den Server(n) 1178 und/oder anderen Servern) durchgeführt wurde.
-
In mindestens einer Ausführungsform können der/die Server 1178 verwendet werden, um Modelle des maschinellen Lernens (z. B. neuronale Netzwerke) mindestens teilweise basierend auf Trainingsdaten zu trainieren. 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 assoziierte neuronale Netzwerk 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 Netzwerk kein überwachtes Lernen erfordert). In mindestens einer Ausführungsform können, sobald die Modelle des maschinellen Lernens trainiert sind, die Modelle des maschinellen Lernens von den Fahrzeugen verwendet werden (z. B. über das/die Netzwerk(e) 1190 an die Fahrzeuge übertragen werden) und/oder können die Modelle des maschinellen Lernens von dem/den Server(n) 1178 verwendet werden, um die Fahrzeuge aus der Ferne zu überwachen.
-
In mindestens einer Ausführungsform können der/die Server 1178 Daten von Fahrzeugen empfangen und die Daten auf aktuelle neuronale Echtzeit-Netzwerke zur intelligenten Echtzeit-Ableitung anwenden. In mindestens einer Ausführungsform können der/die Server 1178 Deep-Learning-Supercomputer und/oder dedizierte KI-Computer beinhalten, die von GPU(s) 1184 angetrieben werden, wie z. B. die von NVIDIA entwickelten DGX- und DGX-Station-Maschinen. In mindestens einer Ausführungsform können der/die Server 1178 jedoch eine Deep-Learning-Infrastruktur beinhalten, die CPU-angetriebene Rechenzentren verwendet.
-
In mindestens einer Ausführungsform kann die Deep-Learning-Infrastruktur des/der Server(s) 1178 zur schnellen Echtzeit-Ableitung in der Lage sein und kann diese Fähigkeit nutzen, um den Zustand von Prozessoren, Software und/oder assoziierter Hardware im Fahrzeug 1100 zu bewerten und zu verifizieren. Zum Beispiel kann in mindestens einer Ausführungsform die Deep-Learning-Infrastruktur periodische Aktualisierungen vom Fahrzeug 1100 empfangen, wie z. B. 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 Objekt-Klassifizierungstechniken des maschinellen Lernens). In mindestens einer Ausführungsform kann die Deep-Learning-Infrastruktur ihr eigenes neuronales Netzwerk laufen lassen, um Objekte zu identifizieren und sie mit Objekten zu vergleichen, die vom Fahrzeug 1100 identifiziert wurden, und wenn die Ergebnisse nicht übereinstimmen und die Deep-Learning-Infrastruktur zu dem Schluss kommt, dass die KI im Fahrzeug 1100 eine Fehlfunktion aufweist, dann können der/die Server 1178 ein Signal an das Fahrzeug 1100 übertragen, das einen ausfallsicheren Computer des Fahrzeugs 1100 anweist, die Kontrolle zu übernehmen, die Fahrgäste zu benachrichtigen und ein sicheres Parkmanöver durchzuführen.
-
In mindestens einer Ausführungsform können der/die Server 1178 GPU(s) 1184 und einen oder mehrere programmierbare Ableitungsbeschleuniger (z. B. TensorRT-3-Vorrichtungen von NVIDIA) beinhalten. In mindestens einer Ausführungsform kann eine Kombination von GPU-angetriebenen Servern und Ableitungsbeschleunigung 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 Ableitung verwendet werden. In mindestens einer Ausführungsform werden die Hardware-Struktur(en) 815 verwendet, um eine oder mehrere Ausführungsformen auszuführen. Details bezüglich der Hardware-Struktur(en) 815 sind hierin in Verbindung mit den 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, gebildet mit einem Prozessor, der Ausführungseinheiten zur Ausführung einer Anweisung beinhalten kann, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann ein Computersystem 1200 ohne Einschränkung eine Komponente, wie z. B. einen Prozessor 1202, beinhalten, um Ausführungseinheiten einschließlich Logik zur Ausführung von Algorithmen zur Verarbeitung von Daten gemäß der vorliegenden Offenbarung zu verwenden, wie z. B. in der hierin beschriebenen Ausführungsform. In mindestens einer Ausführungsform kann das Computersystem 1200 Prozessoren, wie z. B. 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, beinhalten, obwohl auch andere Systeme (einschließlich PCs mit anderen Mikroprozessoren, Engineering-Arbeitsstationen, Set-Top-Boxen und dergleichen) 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 (z. B. UNIX und Linux), eingebettete Software und/oder grafische Benutzeroberflächen verwendet werden können.
-
Ausführungsformen können in anderen Vorrichtungen, wie z. B. tragbaren Vorrichtungen, und eingebetteten Anwendungen verwendet werden. Einige Beispiele für tragbare Vorrichtungen sind Mobiltelefone, Internetprotokoll-Vorrichtungen, Digitalkameras, persönliche digitale Assistenten („PDAs“) und tragbare PCs. In mindestens einer Ausführungsform können eingebettete Anwendungen einen Mikrocontroller, einen digitalen Signalprozessor („DSP“), ein System auf einem Chip, Netzwerkcomputer („NetPCs“), Set-Top-Boxen, Netzwerk-Hubs, Weitverkehrsnetzwerk(wide area network - „WAN“)-Switches oder ein beliebiges anderes System beinhalten, das eine oder mehrere Anweisungen gemäß mindestens einer Ausführungsform ausfü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 Trainieren und/oder Ableiten eines Modells des maschinellen Lernens gemäß den hierin beschriebenen Techniken auszufü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 zum Beispiel einen digital Signalprozessor, beinhalten. In mindestens einer Ausführungsform kann der Prozessor 1202 mit einem Prozessorbus 1210 gekoppelt sein, der Datensignale zwischen dem Prozessor 1202 und anderen Komponenten im 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 Arten von Daten in verschiedenen Registern speichern, einschließlich, ohne Einschränkung, Integerregistern, Fließkommaregistern, Statusregistern und eines Anweisungszeigerregisters.
-
In mindestens einer Ausführungsform befindet sich die Ausführungseinheit 1208, einschließlich, ohne Einschränkung, der Logik zur Ausführung von Integer- und Fließkommavorgängen, ebenfalls im Prozessor 1202. In mindestens einer Ausführungsform kann der Prozessor 1202 auch einen Festwertspeicher (read only memory - „ROM“) mit Mikrocode („ucode“) beinhalten, der Mikrocode für bestimmte Makrobefehle speichert. In mindestens einer Ausführungsform kann die Ausführungseinheit 1208 eine Logik zum Handhaben eines Paket-Anweisungssatzes 1209 beinhalten. In mindestens einer Ausführungsform können durch die Aufnahme des Paket-Anweisungssatzes 1209 in einen Anweisungssatz eines Universalprozessors zusammen mit der zugehörigen Schaltung zur Ausführung der Anweisungen Vorgänge, die von vielen Multimedia-Anwendungen verwendet werden, unter Verwendung von Paketdaten in einem Prozessor 1202 ausgeführt werden. In mindestens einer Ausführungsform können viele Multimedia-Anwendungen beschleunigt und effizienter ausgeführt werden, indem eine volle Breite des Datenbusses eines Prozessors für die Ausführung von Vorgängen an Paketdaten genutzt wird, wodurch die Notwendigkeit entfällt, kleinere Dateneinheiten über den Datenbus dieses Prozessors zu übertragen, um einen oder mehrere Vorgänge an einem Datenelement nach dem anderen auszuführen.
-
In mindestens einer Ausführungsform kann die Ausführungseinheit 1208 auch in Mikrocontrollern, eingebetteten Prozessoren, Grafikvorrichtungen, DSPs und anderen Arten 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 dynamische Direktzugriffsspeicher(„DRAM“)-Vorrichtung, eine statische Direktzugriffsspeicher(„SRAM“)-Vorrichtung, eine Flash-Speichervorrichtung oder eine andere Speichervorrichtung implementiert sein. In mindestens einer Ausführungsform kann der Speicher 1220 Anweisung(en) 1219 und/oder Daten 1221 speichern, die durch Datensignale dargestellt werden, die vom Prozessor 1202 ausgeführt werden können.
-
In mindestens einer Ausführungsform kann ein Systemlogikchip mit dem Prozessorbus 1210 und dem 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 kann der Prozessor 1202 mit dem MCH 1216 über den Prozessorbus 1210 kommunizieren. In mindestens einer Ausführungsform kann der MCH 1216 einen Speicherpfad 1218 mit hoher Bandbreite zum Speicher 1220 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 im 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 zur Kopplung mit eine Grafiksteuerung bereitstellen. In mindestens einer Ausführungsform kann der MCH 1216 durch einen Speicherpfad 1218 mit hoher Bandbreite mit dem Speicher 1220 gekoppelt sein und kann eine Grafik-/Videokarte 1212 durch eine Accelerated-Graphics-Port(„AGP“)-Zusammenschaltung 1214 mit dem 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 zur Verbindung von Peripheriegeräten mit dem Speicher 1220, einem Chipsatz und dem Prozessor 1202 beinhalten. Beispiele können ohne Einschränkung eine Audiosteuerung 1229, ein Firmware-Hub („Flash-BIOS“) 1228, ein drahtloser Transceiver 1226, ein Datenspeicher 1224, eine Legacy-E/A-Steuerung 1223 mit Benutzereingabe- und Tastaturschnittstellen 1225, ein serieller Erweiterungsport 1227, wie z. B. Universal-Serial-Bus(„USB“)-Port, und eine Netzwerksteuerung 1234 sein. In mindestens einer Ausführungsform kann der Datenspeicher 1224 kann 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 miteinander verbundene Hardware-Vorrichtungen oder „Chips“ beinhaltet, während 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 miteinander verbunden sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten des Computersystems 1200 unter Verwendung von Compute-Express-Link(CXL)-Zusammenschaltungen miteinander verbunden.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 im System aus 12 für Ableitungs- oder Vorhersagevorgänge verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
13 ist ein Blockdiagramm, das eine elektronische Vorrichtung 1300 zur Verwendung eines Prozessors 1310 veranschaulicht, gemäß mindestens einer Ausführungsform. 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 andere geeignete elektronische Vorrichtung sein.
-
In mindestens einer Ausführungsform kann die elektronische Vorrichtung 1300 ohne Einschränkung einen Prozessor 1310 beinhalten, der mit einer beliebigen geeigneten Anzahl oder Art von Komponenten, Peripheriegeräten, Modulen oder Vorrichtungen kommunikativ gekoppelt ist. In mindestens einer Ausführungsform ist der Prozessor 1310 unter Verwendung eines Busses oder einer Schnittstelle gekoppelt, wie z. B. eines I2C-Busses, eines Systemverwaltungsbusses (System Management Bus - „SMBus“), eines Low-Pin-Count(LPC)-Busses, einer seriellen peripheren Schnittstelle (Serial Peripheral Interface - „SPI“), eines High-Definition-Audio(„HDA“)-Busses, eines Serial-Advance-Technology-Attachment(„SATA“)-Busses, eines Universal Serial Bus („USB“) (Versionen 1, 2, 3) oder eines Universal-Asynchronous-Receiver/Transmitter(„UART“)-Busses. In mindestens einer Ausführungsform veranschaulicht 13 ein System, das miteinander verbundene Hardware-Vorrichtungen oder „Chips“ beinhaltet, während 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 miteinander verbunden sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten aus 13 unter Verwendung von Compute-Express-Link(CXL)-Zusammenschaltungen miteinander verbunden.
-
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 Wärmesensor 1346, einen Express-Chipsatz („EC“) 1335, ein Trusted-Platform-Modul („TPM“) 1338, BIOS-/Firmware-/Flash-Speicher („BIOS, FW Flash“) 1322, einen DSP 1360, ein Laufwerk 1320, wie zum Beispiel ein Solid-State-Platten- (Solid State Disk - „SSD“) oder ein Festplattenlaufwerk (Hard Disk Drive - „HDD“), eine Einheit für ein drahtloses lokales Netzwerk (wireless local area network - „WLAN“) 1350, eine Bluetooth-Einheit 1352, eine Einheit für ein drahtloses Weitverkehrsnetzwerk (Wireless Wide Area Network - „WWAN“) 1356, eine Einheit für ein globales Positionsbestimmungssystem (GPS) 1355, eine Kamera („USB-3.0-Kamera“) 1354, wie zum Beispiel eine USB-3.0-Kamera, und/oder eine Low-Power-Double-Data-Rate(„LPDDR“)-Speichereinheit („LPDDR3“) 1315, die zum Beispiel im 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 die hierin beschriebenen Komponenten kommunikativ mit dem 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 mit dem Sensor-Hub 1340 gekoppelt sein. In mindestens einer Ausführungsform können ein Wärmesensor 1339, ein Lüfter 1337, eine Tastatur 1336 und ein Touchpad 1330 kommunikativ mit dem EC 1335 gekoppelt sein. In mindestens einer Ausführungsform können Lautsprecher 1363, Kopfhörer 1364 und ein Mikrofon („mic“) 1365 kommunikativ mit einer Audioeinheit („Audio-Codec und Klasse-D-Verst“) 1362 gekoppelt sein, die wiederum kommunikativ mit dem DSP 1360 gekoppelt sein kann. In mindestens einer Ausführungsform kann die Audioeinheit 1362 beispielsweise 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 mit der WWAN-Einheit 1356 gekoppelt sein. In mindestens einer Ausführungsform können Komponenten, wie zum Beispiel die WLAN-Einheit 1350 und die Bluetooth-Einheit 1352 sowie die WWAN-Einheit 1356, in einem Next Generation Form Factor („NGFF“) implementiert sein.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 im System aus 13 für Ableitungs- oder Vorhersagevorgänge verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
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 zentrale Verarbeitungseinheit („CPU“) 1402, die mit einem Kommunikationsbus 1410 verbunden ist, der unter Verwendung eines beliebigen geeigneten Protokolls implementiert ist, wie z. B. PCI („Peripheral Component Interconnect“), Peripheral Component Interconnect Express („PCI-Express“), AGP („Accelerated Graphics Port“), HyperTransport oder ein beliebiges anderes/beliebige andere Bus- oder Punkt-zu-Punkt-Kommunikationsprotokoll(e). In mindestens einer Ausführungsform beinhaltet das Computersystem 1400 ohne Einschränkung einen Hauptspeicher 1404 und eine Steuerlogik (z. B. implementiert als Hardware, Software oder eine Kombination davon) und Daten werden im Hauptspeicher 1404 gespeichert, der die Form eines Direktzugriffsspeichers („RAM“) annehmen kann. In mindestens einer Ausführungsform stellt ein Netzwerkschnittstellen-Teilsystem („Netzwerkschnittstelle“) 1422 eine Schnittstelle zu anderen Rechenvorrichtung und Netzwerken bereit, um Daten von anderen Systemen zu empfangen und mit Computersystem 1400 an diese zu übertragen.
-
In mindestens einer Ausführungsform beinhaltet das Computersystem 1400 ohne Einschränkung in mindestens einer Ausführungsform Eingabevorrichtungen 1408, ein Parallelverarbeitungssystem 1412 und Anzeigevorrichtungen 1406, die unter Verwendung einer herkömmlichen Kathodenstrahlröhre (cathode ray tube „CRT“), einer Flüssigkristallanzeige (liquid crystal display - „LCD“), einer Leuchtdioden(light emitting diode - „LED“)-Anzeige, einer Plasmaanzeige oder anderen geeigneten Anzeigetechnologien implementiert sein 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 sich jedes hierin beschriebene Modul auf einer einzelnen Halbleiterplattform befinden, um ein Verarbeitungssystem zu bilden.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 im System aus 14 für Ableitungs- oder Vorhersagevorgänge verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
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 Art von Prozessor(en) (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(e) beliebige(s) Anweisungsausführungssystem, -einrichtung oder -vorrichtung sein, das/die in der Lage ist, Anweisungen auszuführen. In mindestens einer Ausführungsform kann die Verarbeitungseinheit 1530 ohne Einschränkung eine beliebige Anzahl und Art von Verarbeitungskernen (nicht gezeigt) beinhalten. In mindestens einer Ausführungsform umfasst die Verarbeitungseinheit 1530 eine anwendungsspezifische integrierte Schaltung („ASIC“), die für die Ausführung beliebiger Mengen und Arten von Vorgängen im Zusammenhang mit maschinellem Lernen optimiert ist. Zum Beispiel ist in mindestens einer Ausführungsform die Verarbeitungseinheit 1530 eine Tensor-Verarbeitungseinheit (tensor processing unit - „TPU“), die für die Ausführung von Ableitungsvorgängen des maschinellen Lernens optimiert ist. In mindestens einer Ausführungsform ist die Verarbeitungseinheit 1530 eine Sichtverarbeitungseinheit (vision processing unit - „VPU“), die für die Ausführung von Ableitungsvorgängen 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 Art von Logik beinhalten, die es der Verarbeitungseinheit 1530 ermöglicht, sich über den USB-Stecker 1540 mit Vorrichtungen (z. B. dem Computer 1510) zu verknüpfen.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 im System aus 15 für Ableitungs- oder Vorhersagevorgänge verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
16A veranschaulicht eine beispielhafte Architektur, in der eine Vielzahl von GPUs 1610(1)-1610(N) mit einer Vielzahl von Mehrkern-Prozessoren 1605(1)-1605(M) über Hochgeschwindigkeitsverknüpfungen 1640(1)-1640 (N) (z. B. Busse, Punkt-zu-Punkt-Zusammenschaltungen usw.) kommunikativ 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 mindestens einer Ausführungsform sind zwei oder mehr der GPUs 1610 über Hochgeschwindigkeitsverknüpfungen 1629(1)-1629(2) miteinander verbunden, die unter Verwendung ähnlicher oder anderer Protokolle/Verknüpfungen implementiert sein können als denjenigen, die für die Hochgeschwindigkeitsverknüpfungen 1640(1)-1640(N) verwendet werden. Auf ähnliche Weise können zwei oder mehr der Mehrkern-Prozessoren 1605 über eine Hochgeschwindigkeitsverknüpfung 1628 verbunden sein, bei der es sich um symmetrische Multiprozessor(SMP)-Busse handeln kann, der mit 20 GB/s, 30 GB/s, 120 GB/s oder höher arbeiten. Alternativ kann die gesamte Kommunikation zwischen den verschiedenen in 16A gezeigten Systemkomponenten über ähnliche Protokolle/Verknüpfungen erfolgen (z. B. über eine gemeinsame Zusammenschaltungsstruktur).
-
In mindestens einer Ausführungsform ist jeder Mehrkern-Prozessor 1605 über Speicherzusammenschaltungen 1626(1)-1626(M) kommunikativ mit einem Prozessorspeicher 1601(1)-1601(M) gekoppelt und ist jede GPU 1610(1)-1610(N) über GPU-Speicherzusammenschaltungen 1650(1)-1650(N) kommunikativ mit dem GPU-Speicher 1620(1)-1620(N) gekoppelt. In mindestens einer Ausführungsform können die Speicherzusammenschaltungen 1626 und 1650 ähnliche oder unterschiedliche Speicherzugriffstechnologien verwenden. Bei den Prozessorspeichern 1601(1)-1601(M) und den GPU-Speichern 1620 kann es sich beispielsweise um flüchtige Speicher, wie zum Beispiel 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 nicht flüchtige Speicher, wie zum Beispiel 3D XPoint oder Nano-Ram, handeln. In mindestens einer Ausführungsform kann ein Abschnitt der Prozessorspeicher 1601 ein flüchtiger Speicher sein und kann ein anderer Abschnitt ein nicht flüchtiger Speicher sein (z. B. unter Verwendung einer Speicherhierarchie mit zwei Levels (two-level memory - 2LM)).
-
Wie hierin beschrieben, können verschiedene Mehrkern-Prozessoren 1605 und GPUs 1610 zwar physisch mit einem konkreten Speicher 1601 bzw. 1620 gekoppelt sein, und/oder kann eine einheitliche Speicherarchitektur implementiert werden, bei der ein virtueller Systemadressraum (auch als „effektiver Adressraum“ bezeichnet) auf verschiedene physische Speicher verteilt ist. Beispielsweise können die Prozessorspeicher 1601(1)-1601(M) jeweils 64 GB Systemspeicheradressraum umfassen und können 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 Zusammenschaltung zwischen einem Mehrkern-Prozessor 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 PCIe-Bus, NVLink usw.) mit dem Prozessor 1607 gekoppelt ist. In mindestens einer Ausführungsform kann das Grafikbeschleunigungsmodul 1646 alternativ auf einem Gehäuse oder Chip mit der Prozessor 1607 integriert sein.
-
In mindestens einer Ausführungsform beinhaltet der Prozessor 1607 eine Vielzahl von Kernen 1660A-1660D, jeder mit einem Übersetzungspuffer (translation lookaside buffer - „TLB“) 1661A-1 661D und einem oder mehreren Caches 1662A-1662D. In mindestens einer Ausführungsform können die Kerne 1660A-1660D verschiedene andere Komponenten zur Ausführung von Anweisungen und Verarbeitung 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 beispielsweise 24 Kerne, jeder mit seinem 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. Beispielsweise kann in mindestens einer Ausführungsform jeder Cache eine Cache-Kohärenzlogik/-schaltung aufweisen, die mit ihm verbunden ist, um als Reaktion auf erkannte Lese- oder Schreibvorgänge in bestimmten 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 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 Konnektivität zur 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 Arten von Grafikverarbeitungs-Engines innerhalb einer GPU umfassen, wie z. B. Grafikausführungseinheiten, Medienverarbeitungs-Engines (z. B. Videocodierer/- decodierer), Sampler 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 können die Grafikverarbeitungs-Engines 1631(1)-1631 (N) einzelne GPUs sein, die auf einem gemeinsamen Gehäuse, einer Leitungskarte oder einem Chip integriert sind.
-
In mindestens einer Ausführungsform beinhaltet die Beschleuniger-Integrationsschaltung 1636 eine Speicherverwaltungseinheit (MMU) 1639 zur Ausführung verschiedener Speicherverwaltungsfunktionen, wie z. B. Übersetzungen von virtuellem in physischen Speicher (auch als Übersetzungen von effektivem in realen Speicher bezeichnet) und Speicherzugriffsprotokolle für den Zugriff auf den Systemspeicher 1614. Die MMU 1639 kann in mindestens einer Ausführungsform auch einen Ü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 im 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) erreicht werden (z. B. Senden von Aktualisierungen an den Cache 1638 in Bezug auf Modifikationen/Zugriffe auf Cache-Leitungen in den Prozessor-Caches 1662A-1662D, 1656 und Empfangen von Aktualisierungen vom 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. Beispielsweise kann die Kontextverwaltungsschaltung 1648 Sicherungs- und Wiederherstellungsvorgänge 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 von einer Grafikverarbeitungs-Engine ausgeführt werden kann). Zum Beispiel kann die Kontextverwaltungsschaltung 1648 bei einer Kontextumschaltung aktuelle Registerwerte in einer bezeichneten Region im 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 mindestens einer Ausführungsform werden virtuelle/effektive Adressen von einer Grafikverarbeitungs-Engine 1631 durch die MMU 1639 in reale/physische Adressen im 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 bestimmt sein, die auf dem Prozessor 1607 ausgeführt wird, oder es kann 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 „Scheiben“ 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 Virtualisierungsfähigkeiten für einen Host-Prozessor bereitstellen, um die Virtualisierung der Grafikverarbeitungs-Engines 1631(11631(N), Unterbrechungen und der Speicherverwaltung zu verwalten.
-
Da in mindestens einer Ausführungsform die Hardware-Ressourcen der Grafikverarbeitungs-Engines 1631(1)-1631(N) explizit einem realen Adressraum zugeordnet 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), so dass 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 von jeder 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 zum Beispiel DRAMs (einschließlich gestapelter DRAMs), GDDR-Speicher (z. B. GDDR5, GDDR6) oder HBM, und/oder um nicht flüchtige Speicher, wie zum Beispiel 3D XPoint oder Nano-Ram, handeln.
-
In mindestens einer Ausführungsform können zur Reduzierung des Datenverkehrs über die Hochgeschwindigkeitsverknüpfung 1640 Neigungstechniken verwendet werden, um sicherzustellen, dass es sich bei den in den Grafikspeichern 1633(1)-1633(M) gespeicherten Daten um Daten handelt, die am häufigsten von den Grafikverarbeitungs-Engines 1631(1)-1631(N) verwendet werden und vorzugsweise nicht von den Kernen 1660A-1660D verwendet werden (zumindest nicht häufig). Auf ähnliche Weise versucht in mindestens einer Ausführungsform ein Neigungsmechanismus, Daten, die von den Kernen (und vorzugsweise nicht von den Grafikverarbeitungs-Engines 1631(1)-1631(N)) benötigt werden, in den Caches 1662A-1662D, 1656 und im Systemspeicher 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 Vorgänge ausfü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 zum Kohärenzbus 1664 und den Caches 1662A-1662D, 1656 befindet. In mindestens einer Ausführungsform unterstützt eine Beschleuniger-Integrationsschaltung 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 von der Beschleuniger-Integrationsschaltung 1636 gesteuert werden, und Programmiermodelle, die vom 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 bestimmt. In mindestens einer Ausführungsform kann eine einzelne Anwendung andere Anwendungsanforderungen an die 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 einen 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 auf jeden Prozess oder jede Anwendung Zugriff 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 im Systemspeicher 1614 gespeichert und können unter Verwendung der hierin beschriebenen Technik zur Übersetzung von effektiven Adressen in reale Adressen adressiert werden. 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 eine beispielhafte Beschleuniger-Integrationsscheibe 1690. In mindestens einer Ausführungsform umfasst eine „Scheibe“ einen spezifizierten 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 Prozessstatus für die entsprechende Anwendung 1680. In mindestens einer Ausführungsform kann ein im Prozesselement 1683 enthaltener Arbeitsdeskriptor (work descriptor - WD) 1684 eine einzelne, von einer 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 Prozessstatus 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 mit dediziertem Prozess implementationsspezifisch. In mindestens einer Ausführungsform besitzt in diesem Modell ein einzelner Prozess das Grafikbeschleunigungsmodul 1646 oder eine einzelne Grafikverarbeitungs-Engine 1631. In mindestens einer Ausführungsform, wenn sich das Grafikbeschleunigungsmodul 1646 im Besitz eines einzelnen Prozesses befindet, initialisiert ein Hypervisor 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 zugewiesen ist.
-
In mindestens einer Ausführungsform ruft im Betrieb eine WD-Abrufeinheit 1691 in der Beschleuniger-Integrationsscheibe 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 vom WD 1684 in Registern 1645 gespeichert und von der MMU 1639, der Unterbrechungsverwaltungsschaltung 1647 und/oder der Kontextverwaltungsschaltung 1648 verwendet werden, wie veranschaulicht. Eine Ausführungsform der MMU 1639 beinhaltet beispielsweise eine Segment-/Seitenlaufschaltung für den Zugriff auf Segment-/Seitentabellen 1686 innerhalb des virtuellen Adressraums 1685 eines OS. In mindestens einer Ausführungsform kann die Unterbrechungsverwaltungsschaltung 1647 vom Grafikbeschleunigungsmodul 1646 empfangene Unterbrechungsereignisse 1692 verarbeiten. Bei der Ausführung von Grafikvorgängen wird in mindestens einer Ausführungsform eine effektive Adresse 1693, die von einer Grafikverarbeitungs-Engine 1631(1)-1631(N) erzeugt wird, von der MMU 1639 in eine reale Adresse übersetzt.
-
In mindestens einer Ausführungsform werden Register
1645 für jede Grafikverarbeitungs-Engine
1631(1)-1631(N) und/oder jedes Grafikbeschleunigungsmodul
1646 dupliziert und können von einem Hypervisor oder einem Betriebssystem initialisiert werden. Jedes dieser duplizierten Register kann in mindestens einer Ausführungsform in einer Beschleuniger-Integrationsscheibe
1690 enthalten sein. Beispielhafte Register, die von einem Hypervisor initialisiert werden können, sind in Tabelle 6 gezeigt.
Tabelle 6 - Durch Hypervisor initialisierte Register
Register # | Beschreibung |
1 | Scheibensteuerregister |
2 | Bereichszeiger für geplante Prozesse für reale Adressen (RA) |
3 | Autoritätsmasken-Überschreibungsregister |
4 | Unterbrechungsvektor-Tabelleneintragsabweichung |
5 | Unterbrechungsvektor-Tabelleneintragsbegrenzung |
6 | Statusregister |
7 | ID der logischen Partition |
8 | Hypervisor-Beschleunigernutzungsaufzeichnungszeiger für reale Adressen (RA) |
9 | Speicherbeschreibungsregister |
-
Beispielhafte Register, die von einem Betriebssystem initialisiert werden können, sind in Tabelle 7 gezeigt.
Tabelle 7 - Durch Betriebssystem initialisierte Register
Register # | Beschreibung |
1 | Prozess- und Thread-Identifikation |
2 | Kontext-Sicherungs-/-Wiederherstellungszeiger für effektive Adressen (EA) |
3 | Beschleunigernutzungsaufzeichnungszeiger für virtuelle Adressen (VA) |
4 | Speichersegmenttabellenzeiger für virtuelle Adressen (VA) |
5 | Autoritätsmaske |
6 | Arb eitsdeskriptor |
-
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 von einer Grafikverarbeitungs-Engine 1631(1)-1631(N) benötigt werden, um Arbeit zu verrichten, oder kann er ein Zeiger auf einen Speicherort sein, an dem eine Anwendung eine Befehlswarteschlange von zu verrichtender 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 Zeitscheiben gemeinsam genutzt (time-sliced shared) und über gerichtete Grafik gemeinsam genutzt (graphics-directed shared).
-
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ützen kann, muss in mindestens einer Ausführungsform das Grafikbeschleunigungsmodul 1646 bestimmte Anforderungen einhalten, wie zum Beispiel (1) die Aufgabenanforderung einer Anwendung muss autonom sein (das heißt, der Status 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 spezifizierten Zeitspanne abgeschlossen wird, einschließlich beliebiger Ü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 die Art des Grafikbeschleunigungsmoduls eine gezielte Beschleunigungsfunktion für einen Systemaufruf. In mindestens einer Ausführungsform kann die Art 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-Status, 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. Wenn in mindestens einer Ausführungsform Implementierungen 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 aktuellen 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 aktuellen Autoritätsmasken-Überschreibungsregister(Authority Mask Override Register - AMOR)-Wert 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 Kontextstatus enthalten. In mindestens einer Ausführungsform ist dieser Zeiger optional, wenn zwischen den Aufgaben oder beim Vorwegnehmen einer Aufgabe kein Status 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 verifizieren, ob die Anwendung
1680 registriert ist und die Autorität zur Verwendung des Grafikbeschleunigungsmoduls
1646 erhalten hat. In mindestens einer Ausführungsform ruft das Betriebssystem
1695 dann den Hypervisor
1696 mit den in Tabelle 8 gezeigten Informationen auf.
Tabelle 8 - OS-zu-Hypervisor-Aufrufparameter
Parameter # | Beschreibung |
1 | Ein Arbeitsdeskriptor (WD) |
2 | Ein Autoritätsmasken-Register(AMR)-Wert (möglicherweise maskiert) |
3 | Einen Kontext-Sicherungs-/-Wiederherstellungsbereichszeiger (CSRP) für effektive Adressen (EA) |
4 | Eine Prozess-ID (PID) und optional eine Thread-ID (TID) |
5 | Einen Beschleunigernutzungsaufzeichnungszeiger (accelerator utilization record pointer - AURP) für virtuelle Adressen (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 verifiziert beim Empfang eines Hypervisor-Aufrufs der Hypervisor
1696, dass das Betriebssystem
1695 registriert ist und die Autorität 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 eine entsprechende Art des Grafikbeschleunigungsmodul
1646 ein. In mindestens einer Ausführungsform kann ein Prozesselement die in Tabelle 9 gezeigten Informationen enthalten.
Tabelle 9 - Prozesselementinformationen
Element # | Beschreibung |
1 | Ein Arbeitsdeskriptor (WD) |
2 | Ein Autoritätsmasken-Register(AMR)-Wert (möglicherweise maskiert). |
3 | Einen Kontext-Sicherungs-/-Wiederherstellungsbereichszeiger (CSRP) für effektive Adressen (EA) |
4 | Eine Prozess-ID (PID) und optional eine Thread-ID (TID) |
5 | Einen Beschleunigernutzungsaufzeichnungszeiger (accelerator utilization record pointer - AURP) für virtuelle Adressen (VA) |
6 | Virtuelle Adresse eines Speichersegmenttabellenzeigers (storage segment table pointer - SSTP) |
7 | Eine logische Unterbrechungsdienstnummer (logical interrupt service number - LISN) |
8 | Unterbrechungsvektortabelle, abgeleitet aus Hypervisor-Aufrufparametern |
9 | Ein Statusregister(SR)-Wert |
10 | Eine ID der logischen Partition (LPID) |
11 | Einen Hypervisor-Beschleunigernutzungsaufzeichnungszeiger für reale Adressen (RA) |
12 | Speicherdeskriptorregister (SDR) |
-
In mindestens einer Ausführungsform initialisiert der Hypervisor eine Vielzahl von Registern 1645 der Beschleuniger-Integrationsscheibe 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 Implementierung verwenden Vorgänge, die auf den GPUs 1610(1)-1610(N) ausgeführt werden, denselben 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) usw. 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, sodass ein beliebiger Prozessor oder eine beliebige GPU auf einen beliebigen physischen Speicher mit einer virtuellen Adresse zugreifen kann, die diesem Speicher zugeordnet ist.
-
In mindestens einer Ausführungsform stellt die Neigungs-/Kohärenzverwaltungsschaltung 1694A-1694E in einer oder mehreren MMUs 1639A-1639E die Cache-Kohärenz zwischen den Caches eines oder mehrerer Host-Prozessoren (z. B. 1605) und den GPUs 1610 sicher und implementiert Neigungstechniken, die physische Speicher angeben, in welchen bestimmte Arten von Daten gespeichert werden sollten. Obwohl, in mindestens einer Ausführungsform, mehrere Instanzen der Neigungs-/Kohärenzverwaltungsschaltung 1694A-1694E in 16F veranschaulicht sind, kann die Neigungs-/Kohärenzschaltung innerhalb einer MMU eines oder mehrerer Host-Prozessoren 1605 und/oder innerhalb der Beschleuniger-Integrationsschaltung 1636 implementiert sein.
-
Eine Ausführungsform ermöglicht es, dass GPU-Speicher 1620 als Teil des Systemspeichers zugeordnet werden und unter Verwendung von gemeinsam genutzter virtueller Speicher(Shared Virtual Memory SVM)-Technologie darauf zugegriffen wird, ohne jedoch Performance-Nachteile zu erleiden, die mit der vollständigen System-Cache-Kohärenz assoziiert sind. In mindestens einer Ausführungsform bietet eine Fähigkeit für GPU-Speicher 1620, auf die als Systemspeicher ohne lästigen Cache-Kohärenz-Overhead zugegriffen wird, eine vorteilhafte Betriebsumgebung für GPU-Offload. In mindestens einer Ausführungsform ermöglicht diese Anordnung es der Software des Host-Prozessors 1605, Operanden einzurichten und auf Berechnungsergebnisse zuzugreifen, und zwar ohne den Overhead der traditionellen E/A-DMA-Datenkopien. Solche traditionellen Kopien beinhalten in mindestens einer Ausführungsform Treiberaufrufe, Unterbrechungen und speicherzugeordnete E/A(memory mapped I/O - MMIO)-Zugriffe, die alle im Vergleich zu einfachen Speicherzugriffen 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 ausgelagerten Berechnung entscheidend sein. In Fällen mit erheblichem Streaming-Schreibspeicherverkehr kann beispielsweise der Cache-Kohärenz-Overhead die effektive Schreibbandbreite, die von einer 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-Neigung und Host-Prozessorneigung durch eine Neigungs-Tracker-Datenstruktur gelenkt. In mindestens einer Ausführungsform kann zum Beispiel eine Neigungstabelle verwendet werden, die eine seitengranulare Struktur sein kann (z. B. mit der Granularität einer Speicherseite gesteuert), die 1 oder 2 Bit pro GPUzugewiesener Speicherseite beinhaltet. In mindestens einer Ausführungsform kann eine Neigungstabelle in einem gestohlenen Speicherbereich eines oder mehrerer GPU-Speicher 1620 implementiert werden, mit oder ohne Neigungs-Cache in einer GPU 1610 (um z. B. häufig/kürzlich verwendete Einträge einer Neigungstabelle zu cachen). Alternativ kann in mindestens einer Ausführungsform eine gesamte Neigungstabelle innerhalb einer GPU gepflegt werden.
-
In mindestens einer Ausführungsform wird vor dem tatsächlichen Zugriff auf einen GPU-Speicher auf einen Neigungstabelleneintrag zugegriffen, der mit jedem Zugriff auf den GPU-Speicher 1620 assoziiert ist, wodurch die folgenden Vorgänge verursacht werden. In mindestens einer Ausführungsform werden lokale Anforderungen von einer GPU 1610, die ihre Seite in der GPU-Neigung 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-Neigung findet, an den Prozessor 1605 weitergeleitet (z. B. über eine Hochgeschwindigkeitsverknüpfung, wie hierin beschrieben). In mindestens einer Ausführungsform schließen Anforderungen vom Prozessor 1605, die eine angeforderte Seite in der Host-Prozessor-Neigung finden, eine Anforderung, wie ein normales Lesen des Speichers, ab. Alternativ können Anforderungen, die an eine GPU-Neigungsseite 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 sie aktuell keine Seite verwendet. In mindestens einer Ausführungsform kann ein Neigungsstatus einer Seite entweder durch einen softwarebasierten Mechanismus, einen hardwareunterstützten softwarebasierten Mechanismus oder, für einen begrenzten Satz von Fällen, einen rein hardwarebasierten Mechanismus geändert werden.
-
Ein Mechanismus zum Ändern des Neigungsstatus verwendet in mindestens einer Ausführungsform einen API-Aufruf (z. B. OpenCL), der wiederum den Vorrichtungstreiber einer GPU aufruft, der wiederum eine Nachricht an eine GPU sendet (oder einen Befehlsdeskriptor in die Warteschlange stellt), die sie anweist, einen Neigungsstatus zu ändern und, bei einigen Übergängen, einen Cache-Leerungsvorgang in einem Host durchzuführen. In mindestens einer Ausführungsform wird ein Cache-Leerungsvorgang für einen Übergang von der Neigung des Host-Prozessors 1605 zur Neigung der GPU verwendet, jedoch nicht für einen entgegengesetzten Übergang.
-
In mindestens einer Ausführungsform wird die Cache-Kohärenz aufrechterhalten, indem GPUbasierte Seiten vom Host-Prozessor 1605 vorübergehend nicht gecacht 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-Neigungsseiten solche sind, die von einer GPU, aber nicht vom Host-Prozessor 1605, benötigt werden und umgekehrt.
-
Die Hardware-Struktur(en) 815 werden verwendet, um eine oder mehrere Ausführungsformen auszuführen. Details bezüglich einer Hardware-Struktur(en) 815 können hierin in Verbindung mit den 8A und/oder 8B bereitgestellt sein.
-
17 veranschaulicht beispielhafte integrierte Schaltungen und zugehörige Grafikprozessoren, die unter Verwendung eines oder mehrerer IP-Cores 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-Cores hergestellt werden kann, gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform beinhaltet die integrierte Schaltung 1700 einen oder mehrere Anwendungsprozessor(en) 1705 (z. B. CPUs), mindestens einen Grafikprozessor 1710 und kann zusätzlich einen Bildprozessor 1715 und/oder einen Videoprozessor 1720 beinhalten, von denen jeder 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 mit einer oder mehreren 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-Speicher-Teilsystem 1760 bereitgestellt sein, das einen 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 Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 in der integrierten Schaltung 1700 für Ableitungs- oder Vorhersagevorgänge verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
Die 18A-18B veranschaulichen beispielhafte integrierte Schaltungen und zugehörige Grafikprozessoren, die unter Verwendung eines oder mehrerer IP-Cores 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.
-
Die 18A-18B sind Blockdiagramme, die beispielhafte Grafikprozessoren zur Verwendung in einem SoC gemäß hierin beschriebenen Ausführungsformen veranschaulichen. 18A veranschaulicht einen beispielhaften Grafikprozessor 1810 einer integrierte Schaltung als System-auf-einem-Chip, die unter Verwendung eines oder mehrerer IP-Cores hergestellt werden kann, gemäß mindestens einer Ausführungsform. 18B veranschaulicht einen zusätzlichen beispielhaften Grafikprozessor 1840 einer integrierte Schaltung als System-auf-einem-Chip, die unter Verwendung eines oder mehrerer IP-Cores 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 Leistung. 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 eine separate Logik ausführen, sodass der Vertex-Prozessor 1805 für die Ausführung von Vorgängen für Vertex-Shader-Programme optimiert ist, während ein oder mehrere Fragmentprozessor(en) 1815A-1815N Fragment(z. B. Pixel)-Shading-Vorgänge für Fragment- oder Pixel-Shader-Programme ausführen. In mindestens einer Ausführungsform führt der Vertex-Prozessor 1805 eine Vertex-Verarbeitungsstufe einer 3D-Grafik-Pipeline durch und erzeugt Primitive und Vertex-Daten. In mindestens einer Ausführungsform verwenden die Fragmentprozessor(en) 1815A-1815N Primitiv- und Vertex-Daten, die von dem Vertex-Prozessor 1805 erzeugt wurden, um einen Bildspeicher zu produzieren, der auf einer Anzeigevorrichtung angezeigt wird. In mindestens einer Ausführungsform sind der/die Fragmentprozessor(en) 1815A-1815N für die Ausführung von Fragment-Shader-Programmen optimiert, wie sie in einer OpenGL-API bereitgestellt sind, und die zur Ausführung ähnlicher Vorgänge 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(n) oder mehrere Speicherverwaltungseinheiten (MMUs) 1820A-1820B, Cache(s) 1825A-1825B und Schaltungszusammenschaltung(en) 1830A-1830B. In mindestens einer Ausführungsform stellen eine oder mehrere MMU(s) 1820A-1820B die Zuordnung von virtuellen zu physischen Adressen für den Grafikprozessor 1810 bereit, einschließlich für den Vertex-Prozessor 1805 und/oder den/die Fragmentprozessor(en) 1815A-1815N, der/die auf im Speicher gespeicherte Vertex- oder Bild-/Textur-Daten verweisen kann/können, zusätzlich zu den in einem oder mehreren Cache(s) 1825A-1825B gespeicherten Vertex- oder Bild-/Textur-Daten. In mindestens einer Ausführungsform können eine oder mehrere MMU(s) 1820A-1820B mit anderen MMUs innerhalb eines Systems synchronisiert werden, einschließlich einer oder mehrerer MMUs, die mit einem oder mehreren Anwendungsprozessor(en) 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 Schaltungszusammenschaltung(en) 1830A-1830B dem Grafikprozessor 1810, sich mit anderen IP-Cores innerhalb des SoC zu verknüpfen, entweder über einen internen Bus des SoC oder über eine direkte Verbindung.
-
In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 1840 einen oder mehrere Shader-Kern(e) 1855A-1855N (z. B. 1855A, 1855B, 1855C, 1855D, 1855E, 1855F bis 1855N-1 und 1855N), wie in 18B gezeigt, die eine einheitliche Shader-Kernarchitektur bereitstellen, bei der ein einzelner Kern oder eine einzelne Art oder Kern alle Arten von programmierbarem Shader-Code ausführen kann, einschließlich Shader-Programmcode zur Implementierung von Vertex-Shadern, Fragment-Shadern und/oder Rechen-Shadern. In mindestens einer Ausführungsform kann die Anzahl der Shader-Kerne variieren. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 1840 einen Zwischenkern-Task-Verwalter 1845, der als ein Thread-Verteiler fungiert, um Ausführungs-Threads an einen oder mehrere Shader-Kerne 1855A-1855N zu senden, sowie eine Kachelungseinheit 1858 zum Beschleunigen von Kachelungsvorgängen für das kachelbasierte Rendering, bei dem Rendering-Vorgänge für eine Szene in dem Bildraum unterteilt werden, um beispielsweise die lokale räumliche Kohärenz innerhalb einer Szene auszunutzen oder die Nutzung interner Caches zu optimieren.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 in der integrierten Schaltung 18A und/oder 18B für Ableitungs- oder Vorhersagevorgänge verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
Die 19A-19B veranschaulichen zusätzliche beispielhafte Grafikprozessorlogik gemäß hierin beschriebenen Ausführungsformen. 19A veranschaulicht einen Grafikkern 1900, der in mindestens einer Ausführungsform im Grafikprozessor 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 Mehrchipmodul geeignet ist.
-
In mindestens einer Ausführungsform beinhaltet der Grafikkern 1900 einen gemeinsam genutzten Anweisungs-Cache 1902, eine Textureinheit 1918 und einen Cache/gemeinsam genutzten Speicher 1920, die den Ausführungsressourcen innerhalb des Grafikkerns 1900 gemeinsam sind. In mindestens einer Ausführungsform kann der Grafikkern 1900 mehrere Scheiben 1901A-1901N oder eine Partition für jeden Kern beinhalten und kann ein Grafikprozessor mehrere Instanzen des Grafikkerns 1900 beinhalten. In mindestens einer Ausführungsform können die Scheiben 1901A-1901N können eine Unterstützungslogik beinhalten, die einen lokalen Anweisungs-Cache 1904A-1904N, einen Thread-Planer 1906A-1906N, einen Thread-Verteiler 1908A-1908N und einen Satz von Registern 1910A-1910N beinhaltet. In mindestens einer Ausführungsform können die Scheiben 1901A-1901N einen Satz zusätzlicher Funktionseinheiten (additional function units - AFUs 1912A-1912N), Fließkommaeinheiten (floating-point units - FPUs 1914A-1914N), arithmetischer Integer-Logikeinheiten (ALUs 1916A-1916N), Adressberechnungseinheiten (address computational units - ACUs 1913A-1913N), Fließkommaeinheiten 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 Fließkommafunktionen mit einfacher Genauigkeit (32 Bit) und halber Genauigkeit (16 Bit) durchführen, während die DPFPUs 1915A-1915N Fließkommavorgänge mit doppelter Genauigkeit (64 Bit) durchführen. In mindestens einer Ausführungsform können die ALUs 1916A-1916N Integervorgänge mit variabler Genauigkeit bei 8-Bit-, 16-Bit- und 32-Bit-Genauigkeit durchführen und für Vorgänge mit gemischter Genauigkeit konfiguriert sein. In mindestens einer Ausführungsform können die MPUs 1917A-1917N auch für Matrixvorgänge mit gemischter Genauigkeit konfiguriert sein, einschließlich Fließkomma- und 8-Bit-Integervorgängen mit halber Genauigkeit. In mindestens einer Ausführungsform können die MPUs 1917A-1917N eine Vielfalt von Matrixvorgängen ausführen, um Anwendungsrahmen für maschinelles Lernen zu beschleunigen, einschließlich der Ermöglichung der Unterstützung für eine beschleunigte allgemeine Matrix-zu-Matrix-Multiplikation (GEMM). In mindestens einer Ausführungsform können die AFUs 1912A-1912N zusätzliche logische Vorgänge ausführen, die von Fließkomma- oder Integereinheiten nicht unterstützt werden, einschließlich trigonometrischer Vorgänge (z. B. Sinus, Cosinus usw.).
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 in dem Grafikkern 1900 für Ableitungs- oder Vorhersagevorgänge verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
19B veranschaulicht in mindestens einer Ausführungsform eine Universalverarbeitungseinheit (GPGPU) 1930, die so konfiguriert sein kann, dass hochparallele Rechenvorgänge von einer Anordnung von Grafikverarbeitungseinheiten durchgeführt werden können. In mindestens einer Ausführungsform kann die GPGPU 1930 direkt mit anderen Instanzen der GPGPU 1930 verknüpft sein, um einen Mehr-GPU-Cluster zu erzeugen, um die Trainingsgeschwindigkeit für tiefe neuronale Netzwerke zu verbessern. In mindestens einer Ausführungsform beinhaltet die GPGPU 1930 eine Host-Schnittstelle 1932, um eine Verbindung mit einem Host-Prozessor zu ermöglichen. In mindestens einer Ausführungsform ist die Host-Schnittstelle 1932 eine PCI-Express-Schnittstelle. In mindestens einer Ausführungsform kann die Host-Schnittstelle 1932 eine anbieterspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur sein. In mindestens einer Ausführungsform empfängt die GPGPU 1930 Befehle von einem Host-Prozessor und verwendet einen globalen Planer 1934, um mit diesen Befehlen assoziierte Ausführungs-Threads an einen Satz von Rechenclustern 1936A-1936H zu senden. In mindestens einer Ausführungsform nutzen die Rechencluster 1936A-1936H einen Cache-Speicher 1938 gemeinsam. 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 den Rechenclustern 1936A-1936H gekoppelt ist. In mindestens einer Ausführungsform kann der Speicher 1944A-1944B verschiedene Arten von Speichervorrichtungen beinhalten, darunter dynamischer Direktzugriffsspeicher (DRAM) oder Grafik-Direktzugriffsspeicher, wie zum Beispiel 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 der Fließkommaeinheiten in jedem der Rechencluster 1936A-1936H so konfiguriert sein, dass sie 16-Bit- oder 32-Bit-Fließkommavorgänge durchführt, während eine andere Teilmenge der Fließkommaeinheiten so konfiguriert sein kann, dass sie 64-Bit-Fließkommavorgänge durchführt.
-
In mindestens einer Ausführungsform können mehrere Instanzen der GPGPU 1930 so konfiguriert sein, dass sie als Rechencluster arbeiten. In mindestens einer Ausführungsform variiert die Kommunikation, die von den Rechenclustern 1936A-1936H für die Synchronisation und den Datenaustausch verwendet wird, je nach Ausführungsform. In mindestens einer Ausführungsform kommunizieren mehrere Instanzen der GPGPU 1930 über die Host-Schnittstelle 1932. In mindestens einer Ausführungsform beinhaltet die GPGPU 1930 einen E/A-Hub 1939, der die GPGPU 1930 mit einer GPU-Verknüpfung 1940 koppelt, die eine direkte Verbindung zu anderen Instanzen der GPGPU 1930 ermöglicht. In mindestens einer Ausführungsform ist die GPU-Verknüpfung 1940 mit einer dedizierten 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 senden und davon zu empfangen. In mindestens einer Ausführungsform befinden sich mehrere Instanzen der GPGPU 1930 in separaten Datenverarbeitungssystemen und kommunizieren sie über eine Netzwerkvorrichtung, auf die über die Host-Schnittstelle 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 so konfiguriert sein, dass sie neuronale Netzwerke trainiert. In mindestens einer Ausführungsform kann die GPGPU 1930 innerhalb einer Ableitungsplattform verwendet werden. In mindestens einer Ausführungsform, in der die GPGPU 1930 zum Ableiten verwendet wird, kann die GPGPU 1930 weniger Rechencluster 1936A-1936H enthalten, als wenn die GPGPU 1930 zum Trainieren eines neuronalen Netzwerks verwendet wird. In mindestens einer Ausführungsform kann sich die mit dem Speicher 1944A-1944B assoziierte Speichertechnologie zwischen Ableitungs- und Trainingskonfigurationen unterscheiden, wobei den Trainingskonfigurationen Speichertechnologien mit höherer Bandbreite gewidmet sind. In mindestens einer Ausführungsform kann eine Ableitungskonfiguration der GPGPU 1930 ableitungsspezifische Anweisungen unterstützen. In mindestens einer Ausführungsform kann eine Ableitungskonfiguration beispielsweise Unterstützung für eine oder mehrere 8-Bit-Integer-Skalarprodukt-Anweisungen bereitstellen, die während der Ableitungsvorgänge für eingesetzte neuronale Netzwerke verwendet werden können.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 in der GPGPU 1930 für Ableitungs- oder Vorhersagevorgänge verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
20 ist ein Blockdiagramm, das ein Rechensystem 2000 gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform beinhaltet das Rechensystem 2000 ein Verarbeitungsteilsystem 2001 mit einem oder mehreren Prozessor(en) 2002 und einem Systemspeicher 2004, die über einen Zusammenschaltungsspfad kommunizieren, der einen Speicher-Hub 2005 beinhalten kann. In mindestens einer Ausführungsform kann der Speicher-Hub 2005 eine separate Komponente innerhalb einer Chipsatzkomponente sein oder in einen oder mehrere Prozessor(en) 2002 integriert sein. In mindestens einer Ausführungsform ist der Speicher-Hub 2005 über eine Kommunikationsverknüpfung 2006 mit einem E/A-Teilsystem 2011 gekoppelt. In mindestens einer Ausführungsform umfasst das E/A-Teilsystem 2011 einen E/A-Hub 2007, der es dem Rechensystem 2000 ermöglichen kann, Eingaben von einer oder mehreren Eingabevorrichtung(en) 2008 zu empfangen. In mindestens einer Ausführungsform kann der E/A-Hub 2007 es einer Anzeigesteuerung, die in einem oder mehreren Prozessor(en) 2002 enthalten sein kann, ermöglichen, Ausgaben für eine oder mehrere Anzeigevorrichtung(en) 2010A bereitzustellen. In mindestens einer Ausführungsform können eine oder mehrere mit dem E/A-Hub 2007 gekoppelte Anzeigevorrichtung(en) 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 sein, wie z. B., aber nicht beschränkt auf, PCI Express oder eine anbieterspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur. In mindestens einer Ausführungsform bilden ein oder mehrere Parallelprozessor(en) 2012 ein rechnerisch fokussiertes Parallel- oder Vektorverarbeitungssystem, das eine große Anzahl von Verarbeitungskernen und/oder Verarbeitungsclustern beinhalten kann, wie z. B. ein Prozessor mit vielen integrierten Kernen (Many Integrated Core - MIC). In mindestens einer Ausführungsform bilden einige oder alle Parallelprozessor(en) 2012 ein Grafikverarbeitungsteilsystem, das Pixel an eine oder mehrere Anzeigevorrichtung(en) 2010A ausgeben kann, die über den E/A-Hub 2007 gekoppelt sind. In mindestens einer Ausführungsform können der/die Parallelprozessor(en) 2012 auch eine Anzeigesteuerung und eine Anzeigeschnittstelle (nicht gezeigt) beinhalten, um eine direkte Verbindung zu einer oder mehreren Anzeigevorrichtung(en) 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 z. B. ein Netzwerkadapter 2018 und/oder ein drahtloser Netzwerkadapter 2019, die in eine Plattform integriert werden können, sowie verschiedenen anderen Vorrichtungen, die über eine oder mehrere Add-In-Vorrichtung(en) 2020 hinzugefügt werden können. In mindestens einer Ausführungsform kann der Netzwerkadapter 2018 ein Ethernet-Adapter oder ein anderer drahtgebundener Netzwerkadapter sein. In mindestens einer Ausführungsform kann der drahtlose Netzwerkadapter 2019 eine oder mehrere Wi-Fi-, Bluetooth-, Nahfeldkommunikations(NFC)- oder eine andere Netzwerkvorrichtung beinhalten, die ein oder mehrere drahtlose Funkgeräte beinhaltet.
-
In mindestens einer Ausführungsform kann das Rechensystem 2000 andere, nicht explizit gezeigte Komponenten beinhalten, z. B. USB- oder andere Portverbindungen, optische 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 miteinander verbinden, unter Verwendung beliebiger geeigneter Protokolle implementiert werden, z. B. auf PCI (Peripheral Component Interconnect) basierende Protokolle (z. B. PCI-Express) oder andere Bus- oder Punkt-zu-Punkt-Kommunikationsschnittstellen und/oder -protokoll(e), z. B. NV-Link-High-Speed-Interconnect- oder -Interconnect-Protokolle.
-
In mindestens einer Ausführungsform beinhalten der/die Parallelprozessor(en) 2012 Schaltungen, die für die Grafik- und Videoverarbeitung optimiert sind, einschließlich zum Beispiel Videoausgabeschaltungen, und stellen eine Grafikverarbeitungseinheit (GPU) dar. In mindestens einer Ausführungsform beinhalten der/die Parallelprozessor(en) 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 der/die Parallelprozessor(en) 2012, der Speicher-Hub 2005, der/die Prozessor(en) 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 System-im-Gehäuse(system in package - SIP)-Konfiguration zu bilden. In mindestens einer Ausführungsform kann mindestens ein Abschnitt der Komponenten des Rechensystems 2000 in ein Mehrchipmodul (MCM) integriert sein, das mit anderen Mehrchipmodulen zu einem modularen Rechensystem zusammengeschaltet sein kann.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 im System aus FIG. 2000 für Ableitungs- oder Vorhersagevorgänge verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
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 z. B. programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASICs) oder feldprogrammierbare Gate-Anordnungen (FPGAs). In mindestens einer Ausführungsform ist der veranschaulichte Parallelprozessor 2100 eine Variante eines oder mehrerer Parallelprozessor(en) 2012, die in 20 gemäß einer beispielhaften Ausführungsform veranschaulicht 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, welche 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 zum Beispiel eines Speicher-Hubs 2105, mit anderen Vorrichtungen verbunden. In mindestens einer Ausführungsform bilden die 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 die Ausführung von Verarbeitungsvorgängen gerichtet sind, und die Speicherkreuzschiene 2116 Befehle empfängt, die auf die Ausführung von Speichervorgängen 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 Arbeitsvorgänge zum Ausführen dieser Befehle an ein Frontend 2108 richten. In mindestens einer Ausführungsform ist das Frontend 2108 mit einem Planer 2110 gekoppelt, der so konfiguriert ist, dass er Befehle oder andere Arbeitselemente an eine Verarbeitungsclusteranordnung 2112 verteilt. In mindestens einer Ausführungsform stellt der Planer 2110 sicher, dass die Verarbeitungsclusteranordnung 2112 ordnungsgemäß konfiguriert ist und sich in einem gültigen Zustand befindet, bevor Tasks an ein Cluster einer Verarbeitungsclusteranordnung 2112 verteilt werden. In mindestens einer Ausführungsform ist der Planer 2110 über Firmware-Logik implementiert, die auf einem Mikrocontroller ausgeführt wird. In mindestens einer Ausführungsform ist der Mikrocontroller-implementierte Planer 2110 so konfigurierbar, dass er komplexe Planungs- und Arbeitsverteilungsvorgänge mit grober und feiner Granularität ausführt, was eine schnelle Präemption und Kontextumschaltung von Threads ermöglicht, die auf der Verarbeitungsanordnung 2112 ausgeführt werden. In mindestens einer Ausführungsform kann die Host-Software Arbeitslasten für die Planung auf der Verarbeitungsclusteranordnung 2112 über einen von mehreren Grafikverarbeitungspfaden prüfen. In mindestens einer Ausführungsform können die Arbeitslasten dann automatisch auf das Verarbeitungsanordnungscluster 2112 durch die Logik des Planers 2110 innerhalb eines Mikrocontrollers, einschließlich des Planers 2110, verteilt werden.
-
In mindestens einer Ausführungsform kann die Verarbeitungsclusteranordnung 2112 bis zu „N“ Verarbeitungscluster beinhalten (z. B. Cluster 2114A, Cluster 2114B bis 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 der Verarbeitungsclusteranordnung 2112 eine große Anzahl von gleichzeitigen Threads ausführen. In mindestens einer Ausführungsform kann der Planer 2110 den Clustern 2114A-2114N der Verarbeitungsclusteranordnung 2112 Arbeit zuweisen, indem er verschiedene Planungs- und/oder Arbeitsverteilungsalgorithmen verwendet, die in Abhängigkeit von der Arbeitslast variieren können, die für jede Art von Programm oder Berechnung entsteht. In mindestens einer Ausführungsform kann die Planung dynamisch durch den Planer 2110 gehandhabt werden oder kann teilweise durch Compiler-Logik während der Kompilierung der Programmlogik unterstützt werden, die für die Ausführung durch die Verarbeitungsclusteranordnung 2112 konfiguriert ist. In mindestens einer Ausführungsform können unterschiedliche Cluster 2114A-2114N der Verarbeitungsclusteranordnung 2112 für die Verarbeitung unterschiedlicher Programmarten oder für die Ausführung unterschiedlicher Berechnungsarten zugewiesen sein.
-
In mindestens einer Ausführungsform kann die Verarbeitungsclusteranordnung 2112 so konfiguriert sein, dass sie verschiedene Arten von Parallelverarbeitungsvorgängen ausführt. In mindestens einer Ausführungsform ist die Verarbeitungsclusteranordnung 2112 so konfiguriert, dass sie Universal-Parallelberechnungsvorgänge durchführt. In mindestens einer Ausführungsform kann die Verarbeitungsclusteranordnung 2112 beispielsweise Logik zur Ausführung von Verarbeitungs-Tasks beinhalten, einschließlich der Filterung von Video- und/oder Audiodaten, der Ausführung von Modellierungsvorgängen, einschließlich Physikvorgängen, und der Ausführung von Datentransformationen.
-
In mindestens einer Ausführungsform ist die Verarbeitungsclusteranordnung 2112 so konfiguriert, dass sie Parallelgrafikverarbeitungsvorgänge ausführt. In mindestens einer Ausführungsform kann die Verarbeitungsclusteranordnung 2112 zusätzliche Logik beinhalten, um die Ausführung solcher Grafikverarbeitungsvorgänge zu unterstützen, einschließlich, aber nicht beschränkt auf, Texturabtastlogik, um Texturvorgänge auszuführen, sowie Tesselationslogik und andere Vertex-Verarbeitungslogik. In mindestens einer Ausführungsform kann die Verarbeitungsclusteranordnung 2112 so konfiguriert sein, dass sie grafikverarbeitungsbezogene Shader-Programme ausführt, wie z. B. Vertex-Shader, Tesselations-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 übertragen. In mindestens einer Ausführungsform können die übertragenen Daten während der Verarbeitung auf einem chipinternen Speicher (z. B. im Parallelprozessorspeicher 2122) während der Verarbeitung gespeichert und dann wieder in den Systemspeicher geschrieben werden.
-
In mindestens einer Ausführungsform, wenn die Parallelverarbeitungseinheit 2102 zur Ausführung der Grafikverarbeitung verwendet wird, kann der Planer 2110 so konfiguriert sein, dass er eine Verarbeitungsarbeitslast in annähernd gleich große Tasks aufteilt, um eine bessere Verteilung der Grafikverarbeitungsvorgänge auf mehrere Cluster 2114A-2114N der Verarbeitungsclusteranordnung 2112 zu ermöglichen. In mindestens einer Ausführungsform können Abschnitte der Verarbeitungsclusteranordnung 2112 so konfiguriert sein, dass sie unterschiedliche Verarbeitungsarten ausführen. Zum Beispiel kann in mindestens einer Ausführungsform ein erster Abschnitt so konfiguriert sein, dass er Vertex-Shading und Topologieerzeugung ausführt, kann ein zweiter Abschnitt so konfiguriert sein, dass er Tesselations- und Geometrie-Shading ausführt, und kann ein dritter Abschnitt so konfiguriert sein, dass er Pixel-Shading oder andere Bildschirmraumvorgänge ausführt, um ein gerendertes Bild zur Anzeige zu produzieren. In mindestens einer Ausführungsform können Zwischendaten, die von einem oder mehreren Clustern 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 die Verarbeitungsclusteranordnung 2112 auszuführende Verarbeitungs-Tasks über den Planer 2110 empfangen, der vom Frontend 2108 Befehle empfängt, die Verarbeitungs-Tasks definieren. 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 Planer 2110 so konfiguriert sein, dass er den Tasks entsprechende Indizes abruft oder Indizes vom Frontend 2108 empfängt. In mindestens einer Ausführungsform kann das Frontend 2108 so konfiguriert sein, dass es sicherstellt, dass die Verarbeitungsclusteranordnung 2112 in einen gültigen Status konfiguriert wird, bevor eine durch eingehende Befehlspuffer (z. B. Batch-Puffer, Push-Puffer usw.) spezifizierte 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 der Verarbeitungsclusteranordnung 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 mit einem Abschnitt (z. B. Speichereinheit) des Parallelprozessorspeichers 2122 gekoppelt sein 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 darf 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 Arten von Speichervorrichtungen beinhalten, darunter dynamischer Direktzugriffsspeicher (DRAM) oder Grafik-Direktzugriffsspeicher, wie zum Beispiel 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 z. B. Bildspeicher oder Texturkarten, über die Speichereinheiten 2124A-2124N hinweg gespeichert werden, sodass die Partitionseinheiten 2120A-2120N Abschnitte jedes Rendering-Ziels parallel schreiben können, um die verfügbare Bandbreite des Parallelprozessorspeichers 2122 effizient zu nutzen. In mindestens einer Ausführungsform kann eine lokale Instanz des Parallelprozessorspeichers 2122 zugunsten eines einheitlichen Speicherdesigns ausgeschlossen werden, das den Systemspeicher in Verbindung mit dem lokalen Cache-Speicher nutzt.
-
In mindestens einer Ausführungsform kann ein beliebiger der Cluster 2114A-2114N der Verarbeitungsclusteranordnung 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 überträgt, der zusätzliche Verarbeitungsvorgänge an einer Ausgabe ausführen kann. In mindestens einer Ausführungsform kann jeder Cluster 2114A-2114N über 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, sodass die Verarbeitungseinheiten innerhalb der unterschiedlichen Verarbeitungscluster 2114A-2114N mit dem Systemspeicher oder einem anderen Speicher kommunizieren können, der nicht lokal zur 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 Fließkommaeinheiten mit höherer Präzision relativ zu anderen Instanzen beinhalten. In mindestens einer Ausführungsform können Systeme, die eine oder mehrere Instanzen der Parallelverarbeitungseinheit 2102 oder des Parallelprozessors 2100 enthalten, in einer Vielfalt von Konfigurationen und Formfaktoren implementiert sein, einschließlich, aber nicht beschränkt auf, Desktop-, Laptop- oder tragbare persönliche Computer, Server, Arbeitsstationen, Spielekonsolen und/oder eingebettete 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 Rastervorgangseinheit (raster operations unit - „ROP“) 2126. In mindestens einer Ausführungsform ist der L2-Cache 2121 ein Lese-/Schreib-Cache, der so konfiguriert ist, dass er Lade- und Sicherungsvorgänge durchführt, die von der Speicherkreuzschiene 2116 und der ROP 2126 empfangen werden. In mindestens einer Ausführungsform werden Leseauslassungen und dringende Rückschreibanforderungen vom 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 ist die Bildspeicherschnittstelle 2125 mit einer der Speichereinheiten im Parallelprozessorspeicher verknüpft, wie zum Beispiel mit den Speichereinheiten 2124A-2124N aus 21 (z. B. im Parallelprozessorspeicher 2122).
-
In mindestens einer Ausführungsform ist die ROP 2126 eine Verarbeitungseinheit, die Rastervorgänge, wie zum Beispiel Stencil, Z-Test, Blending usw., durchführt. In mindestens einer Ausführungsform gibt die ROP 2126 dann verarbeitete Grafikdaten aus, die im Grafikspeicher gespeichert werden. In mindestens einer Ausführungsform beinhaltet die ROP 2126 eine 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 ausgefü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 über die Speicherkreuzschiene 2116 anstelle von Pixelfragmentdaten übertragen. In mindestens einer Ausführungsform können verarbeitete Grafikdaten auf einer Anzeigevorrichtung angezeigt werden, wie z. B. einer der einen oder der mehreren Anzeigevorrichtung(en) 2010 aus 20, zur weiteren Verarbeitung durch den/die Prozessor(en) 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 von einem der Verarbeitungscluster 2114A-2114N aus 21A. In mindestens einer Ausführungsform kann der Verarbeitungscluster 2114 so konfiguriert sein, dass viele Threads parallel ausgeführt werden, wobei sich „Thread“ auf eine Instanz eines konkreten Programms bezieht, das 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 der Betrieb des Verarbeitungsclusters 2114 über einen Pipelineverwalter 2132 gesteuert werden, der die Verarbeitungs-Tasks auf die SIMT-Parallelprozessoren verteilt. In mindestens einer Ausführungsform empfängt der Pipelineverwalter 2132 Anweisungen vom Planer 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 Grafik-Multiprozessor 2134 eine beispielhafte Instanz eines SIMT-Parallelprozessors. In mindestens einer Ausführungsform können jedoch verschiedene Arten von SIMT-Parallelprozessoren mit unterschiedlichen Architekturen im Verarbeitungscluster 2114 enthalten sein. In mindestens einer Ausführungsform können eine oder mehrere Instanzen des Grafik-Multiprozessors 2134 in einem Verarbeitungscluster 2114 enthalten sein. In mindestens einer Ausführungsform kann der Grafik-Multiprozessor 2134 Daten verarbeiten und kann eine Datenkreuzschiene 2140 verwendet werden, um die verarbeiteten 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 der verarbeiteten Daten erleichtern, indem er Ziele für die zu verteilenden verarbeiteten Daten über die Datenkreuzschiene 2140 angibt.
-
In mindestens einer Ausführungsform kann jeder Grafik-Multiprozessor 2134 innerhalb des Verarbeitungsclusters 2114 einen identischen Satz funktioneller Ausführungslogik enthalten (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 funktionelle Ausführungslogik eine Vielfalt von Vorgängen, darunter Integer- und Fließkommaarithmetik, Vergleichsvorgänge, boolesche Vorgänge, Bitverschiebung und Berechnung verschiedener algebraischer Funktionen. In mindestens einer Ausführungsform kann dieselbe Hardware einer funktionellen Einheit ausgenutzt werden, um unterschiedliche Vorgänge auszufü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 wird, 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 zugewiesen sein. In mindestens einer Ausführungsform kann eine Thread-Gruppe weniger Threads beinhalten als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 2134. In mindestens einer Ausführungsform, wenn eine Thread-Gruppe weniger Threads beinhaltet als eine Anzahl von Verarbeitungs-Engines, können 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. In mindestens einer Ausführungsform, wenn eine Thread-Gruppe mehr Threads als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 2134 beinhaltet, kann die Verarbeitung über aufeinanderfolgende Taktzyklen durchgeführt werden. In mindestens einer Ausführungsform können mehrere Thread-Gruppen gleichzeitig auf einem Grafik-Multiprozessor 2134 ausgeführt werden.
-
In mindestens einer Ausführungsform beinhaltet der Grafik-Multiprozessor 2134 einen internen Cache-Speicher zur Ausführung von Lade- und Speichervorgängen. 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 zur Datenübertragung zwischen Threads verwendet werden können. In mindestens einer Ausführungsform kann der Grafik-Multiprozessor 2134 auch auf den globalen chip externen Speicher zugreifen, der einen oder mehrere von lokalem Parallelprozessorspeicher und/oder Systemspeicher beinhalten kann. In mindestens einer Ausführungsform kann ein beliebiger Speicher, der zur 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 kann gemeinsame Anweisungen und Daten teilen, die im L1-Cache 2148 gespeichert sein können.
-
In mindestens einer Ausführungsform kann jeder Verarbeitungscluster 2114 eine Speicherverwaltungseinheit (MMU) 2145 beinhalten, die so konfiguriert ist, dass sie virtuelle Adressen zu physischen Adressen zuordnet. 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 zu einer physischen Adresse einer Kachel zuzuordnen, sowie optional einen Cache-Zeilenindex. In mindestens einer Ausführungsform kann die MMU 2145 Adressübersetzungspuffer (TLB) oder Caches beinhalten, die sich im Grafik-Multiprozessor 2134 oder im L1-Cache 2148 oder im Verarbeitungscluster 2114 befinden können. In mindestens einer Ausführungsform wird eine physische Adresse verarbeitet, um den Oberflächendaten-Zugriff 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 eine Auslassung ist.
-
In mindestens einer Ausführungsform kann ein Verarbeitungscluster 2114 so konfiguriert sein, dass jeder Grafik-Multiprozessor 2134 mit einer Textureinheit 2136 zur Ausführung von Texturzuordnungsvorgängen gekoppelt ist, z. B. Bestimmung von Texturabtastpositionen, 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 eine verarbeitete Task einem anderen Verarbeitungscluster 2114 zur weiteren Verarbeitung bereitzustellen oder um eine verarbeitete Task über die Speicherkreuzschiene 2116 in einem L2-Cache, lokalen Parallelprozessorspeicher oder Systemspeicher zu speichern. In mindestens einer Ausführungsform ist eine PreROP 2142 (Vorab-Rastervorgangseinheit) so konfiguriert, dass sie Daten vom Grafik-Multiprozessor 2134 empfängt und die 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 ausführen, Pixelfarbdaten organisieren und Adressübersetzungen ausführen.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 im Grafikverarbeitungscluster 2114 für Ableitungs- oder Vorhersagevorgänge verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
21D zeigt einen Grafik-Multiprozessor 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 verfügt der Grafik-Multiprozessor 2134 über eine Ausführungspipeline, die einen Anweisungs-Cache 2152, eine Anweisungseinheit 2154, eine Adresszuordnungseinheit 2156, eine Registerdatei 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 Datenstrom von auszuführenden Anweisungen vom Pipelineverwalter 2132. In mindestens einer Ausführungsform werden die Anweisungen im Anweisungs-Cache 2152 zwischengespeichert und von einer Anweisungseinheit 2154 zur Ausführung versendet. In mindestens einer Ausführungsform kann die Anweisungseinheit 2154 Anweisungen als Thread-Gruppen (z. B. Warps) versenden, wobei jeder Thread der Thread-Gruppe einer anderen Ausführungseinheit innerhalb der GPGPU-Kerne 2162 zugewiesen ist. 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 Adresszuordnungseinheit 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 funktionelle Einheiten des Grafik-Multiprozessors 2134 bereit. In mindestens einer Ausführungsform stellt die Registerdatei 2158 einen temporären Datenspeicher für Operanden bereit, die mit Datenpfaden von funktionellen Einheiten (z. B. GPGPU-Kerne 2162, Lade-/Speichereinheiten 2166) des Grafik-Multiprozessors 2134 verbunden sind. In mindestens einer Ausführungsform wird die Registerdatei 2158 zwischen den einzelnen funktionellen Einheiten aufgeteilt, sodass jeder funktionellen Einheit ein dedizierter Abschnitt der Registerdatei 2158 zugewiesen ist. In mindestens einer Ausführungsform ist die Registerdatei 2158 auf unterschiedliche Warps aufgeteilt, die vom Grafik-Multiprozessor 2134 ausgeführt werden.
-
In mindestens einer Ausführungsform können die GPGPU-Kerne 2162 jeweils Fließkommaeinheiten (FPUs) und/oder arithmetische Integer-Logikeinheiten (ALUs) beinhalten, die zur Ausführung 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 Fließkommaarithmetik implementieren oder Fließkommaarithmetik 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 zum Beispiel Copy-Rectangle- oder Pixelmischungsvorgänge, auszufü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 einzelne Anweisung an mehreren Datensätzen auszuführen. In mindestens einer Ausführungsform können die GPGPU-Cores 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 für ein SIMT-Ausführungsmodell konfigurierten Programms über eine einzelne SIMD-Anweisung 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-Zusammenschaltung 2168 ein Zusammenschaltungsnetzwerk, das jede funktionelle Einheit des Grafik-Multiprozessors 2134 mit der Registerdatei 2158 und dem gemeinsam genutzten 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 Speichervorgänge zwischen dem gemeinsam genutzten Speicher 2170 und der Registerdatei 2158 durchzuführen. In mindestens einer Ausführungsform kann die Registerdatei 2158 mit der gleichen Frequenz wie die GPGPU-Kerne 2162 arbeiten, sodass die Datenübertragung zwischen den GPGPU-Kernen 2162 und der Registerdatei 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 z.B. als Daten-Cache verwendet werden, um Texturdaten zu cachen, 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 gecachten Daten, die im Cache-Speicher 2172 gespeichert sind, programmatisch Daten im gemeinsam genutzten Speicher speichern.
-
In mindestens einer Ausführungsform ist ein Parallelprozessor oder eine GPGPU, wie hierin beschrieben, kommunikativ mit Host-/Prozessorkernen gekoppelt, um Grafikvorgänge, Vorgänge des maschinellen Lernens, Musteranalysevorgänge und verschiedene Universal-GPU(GPGPU)-Funktionen zu beschleunigen. In mindestens einer Ausführungsform kann eine GPU über einen Bus oder eine andere Zusammenschaltung (z. B. eine Hochgeschwindigkeitszusammenschaltung wie PCIe oder NVLink) mit dem Host-Prozessor/den Kernen kommunikativ gekoppelt sein. In mindestens einer Ausführungsform kann eine GPU in einem Gehäuse oder Chip wie die Kerne integriert sein und kommunikativ über einen internen Prozessorbus/eine Zusammenschaltung, die intern zu einem Gehäuse oder Chip ist, mit den Kernen gekoppelt sein. In mindestens einer Ausführungsform können die Prozessorkerne unabhängig von einer Weise, auf welche eine GPU verbunden ist, einer solchen GPU Arbeit in Form von Sequenzen von Befehlen/Anweisungen zuweisen, die in einem Arbeitsdeskriptor enthalten sind. In mindestens einer Ausführungsform verwendet diese GPU dann eine dedizierte Schaltung/Logik zur effizienten Verarbeitung dieser Befehle/Anweisungen.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 in dem Grafik-Multiprozessor 2134 für Ableitungs- oder Vorhersagevorgänge verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
22 veranschaulicht ein Mehr-GPU-Rechensystem 2200 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das Mehr-GPU-Rechensystem 2200 einen Prozessor 2202 beinhalten, der über einen Host-Schnittstellen-Switch 2204 mit mehreren 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 mit einem 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 miteinander verbunden 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 eine direkte Kommunikation zwischen den einzelnen GPGPUs 2206A-D, ohne dass eine Kommunikation über den Host-Schnittstellenbus 2204 erforderlich ist, mit dem der Prozessor 2202 verbunden ist. In mindestens einer Ausführungsform, bei welcher der GPU-zu-GPU-Verkehr zu den P2P-GPU-Verknüpfungen 2216 geleitet wird, bleibt der Host-Schnittstellenbus 2204 für den Systemspeicherzugriff oder für die Kommunikation mit anderen Instanzen des Mehr-GPU-Rechensystems 2200 verfügbar, zum Beispiel über ein oder mehrere Netzwerkvorrichtungen. 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 Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 im Mehr-GPU-Rechensystem 2200 für Ableitungs- oder Vorhersagevorgänge verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
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 mit anderen Verarbeitungseinheiten, einschließlich anderer Grafikprozessoren oder eines oder mehrerer Universal-Prozessorkerne. 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 Grafikprozessor 2300 Batches von Befehlen über die Ringzusammenschaltung 2302. In mindestens einer Ausführungsform werden die eingehenden Befehle von einem Befehls-Streamer 2303 im Pipeline-Frontend 2304 interpretiert. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2300 eine skalierbare Ausführungslogik zur Ausführung von 3D-Geometrieverarbeitung und Medienverarbeitung über den/die Grafikkern(e) 2380A-2380N. In mindestens einer Ausführungsform liefert der Befehls-Streamer 2303 für 3D-Geometrieverarbeitungsbefehle Befehle an die Geometriepipeline 2336. In mindestens einer Ausführungsform liefert der Befehls-Streamer 2303 für mindestens einige Medienverarbeitungsbefehle Befehle an ein Video-Frontend 2334, das mit einer 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 Bildnachbearbeitung 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 von mindestens einem 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 Kernscheiben bezeichnet sind), die jeweils mehrere Teilkerne 2350A-50N, 2360A-2360N (mitunter als Kernteilscheiben 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 mit mindestens einem ersten Teilkern 2350A und einem zweiten Teilkern 2360A. 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-/Textur-Samplern 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 Samplern 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 Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 815 in dem Grafikprozessor 2300 für Ableitungs- oder Vorhersagevorgänge verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
24 ist ein Blockdiagramm, das die Mikroarchitektur eines Prozessors 2400, der Logikschaltungen zum Ausführen von Anweisungen beinhalten kann, gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform kann der Prozessor 2400 Anweisungen ausführen, einschließlich x86-Anweisungen, ARM-Anweisungen, speziellen Anweisungen für anwendungsspezifische integrierte Schaltungen (ASICs) usw. In mindestens einer Ausführungsform kann der Prozessor 2400 Register zum Speichern von Paket-Daten beinhalten, wie z. B. 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 Fließkommaform verfügbar sind, mit Paket-Datenelementen 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 zur Beschleunigung von Algorithmen für maschinelles Lernen oder Deep Learning, des Trainings oder der Ableitung ausfü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 einen oder mehrere Vorgänge, die als „Mikroanweisungen“ oder „Mikrovorgänge“ bezeichnet werden (auch als „Mikro-Ops“ oder „Uops“ bezeichnet) und von der Maschine ausgeführt werden können. In mindestens einer Ausführungsform parst der Anweisungsdecodierer 2428 eine Anweisung in einen Opcode und entsprechende Daten- und Steuerfelder, die von der Mikroarchitektur verwendet werden können, um Vorgänge gemäß mindestens einer Ausführungsform auszuführen. In mindestens einer Ausführungsform kann ein Trace-Cache 2430 decodierte Uops in programmgeordnete Sequenzen oder Traces in einer Uop-Warteschlange 2434 zur Ausführung zusammenstellen. Wenn der Trace-Cache 2430 auf eine komplexe Anweisung stößt, stellt in mindestens einer Ausführungsform ein Mikrocode-ROM 2432 die für den Abschluss eines Vorgangs erforderlichen Uops bereit.
-
In mindestens einer Ausführungsform können einige Anweisungen in einen einzelnen Mikro-Op umgewandelt werden, während andere mehrere Mikro-Ops benötigen, um einen vollständigen Vorgang abzuschließen. In mindestens einer Ausführungsform kann der Anweisungsdecodierer 2428 auf den Mikrocode-ROM 2432 zugreifen, um diese Anweisung auszuführen, wenn mehr als vier Mikro-Ops benötigt werden, um eine Anweisung abzuschließen. In mindestens einer Ausführungsform kann eine Anweisung in eine kleine Anzahl von Mikro-Ops zur Verarbeitung im Anweisungsdecodierer 2428 decodiert werden. In mindestens einer Ausführungsform kann eine Anweisung im Mikrocode-ROM 2432 gespeichert werden, wenn eine Reihe von Mikro-Ops zur Ausführung eines solchen Vorgangs erforderlich ist. In mindestens einer Ausführungsform bezieht sich der Trace-Cache 2430 auf eine programmierbare Eintrittspunkt-Logikanordnung (programmable logic array - „PLA“), 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 Trace-Cache 2430 wieder aufnehmen.
-
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 Befehle zu glätten und neu zu ordnen, um die Performance 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 Zuteiler/Registerumbenenner 2440, eine Speicher-Uop-Warteschlange 2442, eine Integer-/Fließkomma-Uop-Warteschlange 2444, einen Speicherplaner 2446, einen schnellen Planer 2402, einen langsamen/allgemeinen Fließkommaplaner („langsamer/allgemeiner FP-Planer“) 2404 und einen einfachen Fließkommaplaner („einfacher FP-Planer“) 2406. In mindestens einer Ausführungsform werden der schnelle Planer 2402, der langsame/allgemeine Fließpunktplaner 2404 und der einfache Fließkommaplaner 2406 hierin auch zusammen als „Uop-Planer 2402, 2404, 2406“ bezeichnet. In mindestens einer Ausführungsform weist der Zuteiler/Registerumbenenner 2440 Maschinenpuffer und Ressourcen zu, die jeder Uop für die Ausführung benötigt. In mindestens einer Ausführungsform benennt der Zuteiler/Registerumbenenner 2440 logische Register in Einträge in einer Registerdatei um. In mindestens einer Ausführungsform weist der Zuteiler/Registerumbenenner 2440 auch einen Eintrag für jeden Uop in einer von zwei Uop-Warteschlangen zu, und zwar in der Speicher-Uop-Warteschlange 2442 für Speichervorgänge und der Integer-/Fließkomma-Uop-Warteschlange 2444 für Nicht-Speichervorgänge, vor dem Speicherplaner 2446 und den Uop-Planern 2402, 2404, 2406. In mindestens einer Ausführungsform bestimmen die Uop-Planer 2402, 2404, 2406, wann ein Uop zur Ausführung bereit ist, und zwar basierend auf der Bereitschaft ihrer abhängigen Eingaberegister-Operandenquellen und der Verfügbarkeit der Ausführungsressourcen, die Uops benötigen, um ihren Vorgang abzuschließen. In mindestens einer Ausführungsform kann der schnelle Planer 2402 auf jeder Hälfte des Haupttaktzyklus planen, während der langsame/allgemeine Fließkomma-Planer 2404 und der einfache Fließkomma-Planer 2406 einmal pro Hauptprozessortaktzyklus planen können. In mindestens einer Ausführungsform vermitteln die Uop-Planer 2402, 2404, 2406 Verteilungsports, um Uops zur Ausführung einzuplanen.
-
In mindestens einer Ausführungsform umfasst der Ausführungsblock 2411 ohne Einschränkung eine Integerregisterdatei/ein Umgehungsnetzwerk 2408, eine Fließkommaregisterdatei/ein Umgehungsnetzwerk („FP-Registerdatei/Umgehungsnetzwerk“) 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 Integerregisterdatei/das Umgehungsnetzwerk 2408 und die Fließkommaregisterdatei/das Umgehungsnetzwerk 2410 hierin auch als „Registerdateien 2408, 2410“ bezeichnet. In mindestens einer Ausführungsform werden die AGUs 2412 und 2414, die schnellen ALUs 2416 und 2418, die langsame ALU 2420, die Fließkomma-ALU 2422 und die Fließkomma-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 Art von Registerdateien, Umgehungsnetzwerken, Adresserzeugungseinheiten und Ausführungseinheiten in beliebiger Kombination beinhalten.
-
In mindestens einer Ausführungsform können die Registernetzwerke 2408, 2410 zwischen den Uop-Planern 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 Integerregisterdatei/das Umgehungsnetzwerk 2408 Integervorgänge aus. In mindestens einer Ausführungsform führt die Fließkommaregisterdatei/das Umgehungsnetzwerk 2410 Fließkommavorgänge aus. In mindestens einer Ausführungsform kann jedes der Registernetzwerke 2408, 2410 ohne Einschränkung ein Umgehungsnetzwerk beinhalten, das gerade abgeschlossene Ergebnisse, die noch nicht in eine Registerdatei geschrieben wurden, zu neuen abhängigen Uops umgehen oder weiterleiten kann. In mindestens einer Ausführungsform können die Registernetzwerke 2408, 2410 miteinander Daten kommunizieren. In mindestens einer Ausführungsform kann die Integerregisterdatei/das Umgehungsnetzwerk 2408 ohne Einschränkung zwei separate Registerdateien beinhalten, eine Registerdatei für Daten niederer Ordnung mit zweiunddreißig Bit und eine zweite Registerdatei für Daten hoher Ordnung mit zweiunddreißig Bit. In mindestens einer Ausführungsform kann die Fließkommaregisterdatei/das Umgehungsnetzwerk 2410 ohne Einschränkung 128 Bit breite Einträge beinhalten, da Fließkommaanweisungen typischerweise Operanden mit einer Breite von 64 bis 128 Bit aufweisen.
-
In mindestens einer Ausführungsvariante können die Ausführungseinheiten 2412, 2414, 2416, 2418, 2420, 2422, 2424 Anweisungen ausführen. In mindestens einer Ausführungsform speichern die Registernetzwerke 2408, 2410 Integer- und Fließkommadaten-Operandenwerte, die Mikroanweisungen für die Ausführung benötigen. 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 Fließkomma-ALU 2422 und die Fließkomma-Bewegungseinheit 2424 Fließkomma-, MMX-, SIMD-, AVX- und SSE- oder andere Vorgänge ausführen, einschließlich spezieller Anweisungen des maschinellen Lernens. In mindestens einer Ausführungsform kann die Fließkomma-ALU 2422 ohne Einschränkung einen 64 Bit mal 64 Bit großen Fließkommateiler zur Ausführung 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-Vorgänge an die schnellen ALUs 2416, 2418 weitergegeben werden. In mindestens einer Ausführungsform können die schnellen ALUS 2416, 2418 schnelle Vorgänge mit einer effektiven Latenz von einem halben Taktzyklus ausführen. In mindestens einer Ausführungsform gehen die meisten komplexen Integervorgänge an die langsame ALU 2420, da die langsame ALU 2420 ohne Einschränkung Integerausführungs-Hardware für Vorgänge vom Typ mit langer Latenz enthalten kann, wie z. B. einen Multiplikator, Verschiebungen, Flag-Logik und Verzweigungsverarbeitung. In mindestens einer Ausführungsform können die Lade-/Speicherungsvorgänge eines Speichers von den 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 Integervorgänge an 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 Vielzahl von Datenbitgrößen unterstützen, darunter sechzehn, zweiunddreißig, 128, 256 usw. In mindestens einer Ausführungsform können die Fließkomma-ALU 2422 und die Fließkomma-Bewegungseinheit 2424 so implementiert sein, dass sie einen Bereich von Operanden mit Bits verschiedener Breite unterstützen, z. B. 128 Bit breite Paket-Datenoperanden in Verbindung mit SMID- Und Multimedia-Anweisungen.
-
In mindestens einer Ausführungsform versenden die Uop-Planer 2402, 2404, 2406 abhängige Vorgänge, bevor die Ausführung einer übergeordneten Last fertiggestellt ist. In mindestens einer Ausführungsform kann der Prozessor 2400, da Uops im Prozessor 2400 spekulativ geplant und ausgeführt werden können, auch Logik zur Handhabung von Speicherausfällen beinhalten. In mindestens einer Ausführungsform können, wenn eine Datenlast in einem Daten-Cache ausfällt, abhängige Vorgänge in einer Pipeline im Gange sein, die einen Planer mit temporär inkorrekten Daten verlassen haben. In mindestens einer Ausführungsform verfolgt ein Wiederholungsmechanismus Anweisungen, die falsche Daten verwenden, und führt sie erneut aus. In mindestens einer Ausführungsform kann es sein, dass abhängige Vorgänge wiederholt werden müssen und es unabhängigen ermöglicht werden kann, abgeschlossen zu werden. In mindestens einer Ausführungsform können die Planer und ein Wiederholungsmechanismus mindestens einer Ausführungsform eines Prozessors auch dafür ausgestaltet sein, Anweisungssequenzen für Textfolgenvergleichsvorgänge abzufangen.
-
In mindestens einer Ausführungsform können sich „Register“ auf prozessorinterne Speicherorte beziehen, die als Teil von Anweisungen zur Identifizierung von Operanden verwendet werden können. In mindestens einer Ausführungsform kann es sich bei den Registern um diejenigen handeln, die von außerhalb eines Prozessors (aus der Sicht eines Programmierers) nutzbar sind. In mindestens einer Ausführungsform sind die Register möglicherweise nicht auf eine konkrete Schaltungsart beschränkt. Vielmehr kann ein Register in mindestens einer Ausführungsform Daten speichern, Daten bereitstellen und die hierin beschriebenen Funktionen ausführen. In mindestens einer Ausführungsform können die hierin beschriebenen Register durch Schaltungen innerhalb eines Prozessors unter Verwendung einer beliebigen Anzahl unterschiedlicher Techniken implementiert werden, wie z.B. dedizierte physische Register, dynamisch zugewiesene physische Register unter Verwendung von Registerumbenennung, Kombinationen aus dedizierten und dynamisch zugewiesenen physischen Registern usw. In mindestens einer Ausführungsform speichern Integerregister 32-Bit-Integerdaten. Eine Registerdatei von mindestens einer Ausführungsform beinhaltet zudem acht Multimedia-SIMD-Register für Paket-Daten.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte oder die gesamte Ableitungs- und/oder Trainingslogik 815 in den Ausführungsblock 2411 und andere gezeigte oder nicht gezeigte Speicher oder Register integriert sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Ableitungstechniken eine oder mehrere der im 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, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken auszuführen.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
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 auszufü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 Matrixmultiplikationsvorgänge entweder „fest verdrahtet“ in der Hardware als Ergebnis der Ausführung 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), Zwischenchipverknüpfungen (Inter-Chip Links - „ILCs“) 2520(1)-2520(12), Zwischenchipsteuerungen (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 physische Schicht mit einem Speicher mit hoher Bandbreite (high bandwidth memory physical layer - „HBM PHY“) 2544(1)-2544(4), eine zentrale Verwaltungssteuerungs-Verarbeitungseinheit („Verwaltungssteuerungs-CPU“) 2550, eine serielle periphere Schnittstelle, eine zwischenintegrierte Schaltung, und einen Universal-Eingabe/Ausgabe-Block („SPI, I2C, GPIO“) 2560, eine Interconnect-Express-Steuerung für periphere Komponenten und einen Direktspeicherzugriffsblock („PCIe-Steuerung und DMA“) 2570 und einen sechszehnspurigen Interconnect-Express-Port für eine periphere Komponente („PCI-Express × 16“) 2580.
-
In mindestens einer Ausführungsform können die Verarbeitungscluster 2510 Deep-Learning-Vorgänge ausführen, einschließlich Ableitungs- oder Vorhersagevorgängen auf der Grundlage von Gewichtungsparametern, die mit einer oder mehreren Trainingstechniken, einschließlich der hierin beschriebenen, berechnet wurden. In mindestens einer Ausführungsform kann jeder Verarbeitungscluster 2510 ohne Einschränkung eine beliebige Anzahl und Art von Prozessoren beinhalten. In mindestens einer Ausführungsform kann der Deep-Learning-Anwendungsprozessor 2500 eine beliebige Anzahl und Art von Verarbeitungsclustern 2500 beinhalten. In mindestens einer Ausführungsform sind die Zwischenchipverknüpfungen 2520 bidirektional. In mindestens einer Ausführungsform ermöglichen die Zwischenchipverknüpfungen 2520 und die Zwischenchipsteuerung 2530 mehreren Deep-Learning-Anwendungsprozessoren 2500 den Austausch von Informationen, einschließlich Aktivierungsinformationen, die aus der Ausführung eines oder mehrerer Algorithmen des maschineller Lernens resultieren, die in einem oder mehreren neuronalen Netzwerken verkörpert sind. In mindestens einer Ausführungsform kann der Deep-Learning-Anwendungsprozessor 2500 eine beliebige Anzahl (einschließlich null) und Art 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 dem HBM PHY 2544(i) assoziiert, wobei „i“ eine beliebige ganze Zahl ist. In mindestens einer Ausführungsform kann eine beliebige Anzahl von HBM2s 2540 eine beliebige Art und Gesamtmenge an Speicher mit hoher Bandbreite bereitstellen und mit einer beliebigen Anzahl (einschließlich null) und Art 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 Art von Blöcken ersetzt werden, die eine beliebige Anzahl und Art von Kommunikationsstandards auf eine beliebige technisch machbare Weise ermöglichen.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie z. B. ein neuronales Netzwerk, zu trainieren, um die dem Deep-Learning-Anwendungsprozessor 2500 bereitgestellten Informationen vorherzusagen oder abzuleiten. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor 2500 verwendet, um Informationen auf der Grundlage eines trainierten Models des maschinellen Lernens (z. B. eines neuronalen Netzwerks) abzuleiten oder vorherzusagen, das von einem anderen Prozessor oder System oder vom 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 Netzwerke auszuführen.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
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 ihre Komponenten unter Verwendung einer Schaltung oder Logik implementiert sein, einschließlich einer oder mehrerer arithmetischer Logikeinheiten (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 miteinander verbunden 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 undichte Integrate-and-Fire-Neuronen implementiert sein, wobei, wenn eine Summe (als „Membranpotential“ bezeichnet) einen Schwellenwert überschreitet, das Neuron 2602 eine Ausgabe (oder „Fire“) unter Verwendung einer Übertragungsfunktion, wie zum Beispiel einer Sigmoid- oder Schwellenwertfunktion, erzeugen kann. In mindestens einer Ausführungsform kann ein undichtes Intgrate-and-Fire-Neuron Signale, die an 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 undichtes Integrate-and-Fire-Neuron feuern, wenn mehrere Eingabesignale an Neuroneneingängen 2604 schnell genug empfangen werden, um einen Schwellenwert zu überschreiten (d. h., bevor ein Membranpotential zu weit 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 am Neuronenausgang 2606 erzeugen, wenn das Ergebnis der Anwendung 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 z. B. 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 durch die 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 im 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 über 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 eines Neurons 2602 in einer Instanz der ersten Schicht 2610 zu jeder Instanz eines 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 „wenig verbundene vorwärtsgekoppelte Schicht“ bezeichnet werden. In mindestens einer Ausführungsform können sich Neuronen 2602 in der zweiten Schicht 2612 zu Neuronen 2602 in mehreren anderen Schichten auffächern, einschließlich zu Neuronen 2602 auch in der zweiten Schicht 2612. 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 eine Schaltung oder Logik beinhalten, die es ermöglicht, Synapsen je nach Bedarf auf der Grundlage der Topologie des neuronalen Netzwerks 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 z. B. eines Netzwerks 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.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
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 kann ein Einzelprozessor-Desktopsystem, ein Multiprozessor-Arbeitsstationssystem oder ein Server-System mit einer großen Anzahl von Prozessoren 2702 oder Prozessorkernen 2707 sein. 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 z. B. eine tragbare Smartwatch-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 mit einem oder mehreren Prozessoren 2702 und einer grafischen Schnittstelle, die von einem oder mehreren 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 bei ihrer Ausführung Vorgänge für System- und Benutzer-Software 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 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 enthalten kann, um die Emulation anderer Anweisungssequenzen zu erleichtern. In mindestens einer Ausführungsform kann der Prozessorkern 2707 auch andere Verarbeitungsvorrichtungen beinhalten, z. B. 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 im Prozessor 2702 zusätzlich eine Registerdatei 2706 enthalten, die unterschiedliche Arten von Registern zum Speichern unterschiedlicher Datenarten enthalten kann (z. B. Integerregister, Fließkommaregister, Statusregister und ein Anweisungszeigerregister). In mindestens einer Ausführungsform kann die Registerdatei 2706 Universalregister oder andere Register enthalten.
-
In mindestens einer Ausführungsform sind ein oder mehrere Prozessor(en) 2702 mit einem oder mehreren Schnittstellenbus(sen) 2710 gekoppelt, um Kommunikationssignale, wie zum Beispiel Adress-, Daten- oder Steuersignale, zwischen dem Prozessor 2702 und anderen Komponenten im System 2700 zu übertragen. In mindestens einer Ausführungsform kann der Schnittstellenbus 2710 ein Prozessorbus sein, wie z. B. 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 Arten von Schnittstellenbussen beinhalten. In mindestens einer Ausführungsform beinhalten der/die Prozessor(en) 2702 eine integrierten Speichersteuerung 2716 und einen Plattformsteuer-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 Plattformsteuer-Hub (platform controller hub - PCH) 2730 Verbindungen zu 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 Performance 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 auch mit einem optionalen externen Grafikprozessor 2712 gekoppelt, der mit einem oder mehreren Grafikprozessoren 2708 in den Prozessoren 2702 kommunizieren kann, um Grafik- und Medienvorgänge durchzuführen. In mindestens einer Ausführungsform kann eine Anzeigevorrichtung 2711 mit dem/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 z. B. eine stereoskopische Anzeigevorrichtung zur Verwendung bei Virtual-Reality(VR)-Anwendungen oder Augmented-Reality(AR)-Anwendungen.
-
In mindestens einer Ausführungsform ermöglicht der Plattformsteuer-Hub 2730 die Verbindung von Peripheriegeräten mit der Speichervorrichtung 2720 und dem Prozessor 2702 über einen Hochgeschwindigkeits-E/A-Bus. In mindestens einer Ausführungsform umfassen die E/A-Peripheriegeräte eine Audiosteuerung 2746, eine Netzwerksteuerung 2734, eine Firmware-Schnittstelle 2728, einen drahtlosen Transceiver 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 zum Beispiel 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 Transceiver 2726 ein Wi-Fi-Transceiver, ein Bluetooth-Transceiver oder ein mobiler Netzwerk-Transceiver, wie zum Beispiel ein 3G-, 4G- oder Long-Term-Evolution(LTE)-Transceiver, sein. In mindestens einer Ausführungsform ermöglicht die Firmware-Schnittstelle 2728 die Kommunikation mit der System-Firmware und kann z. B. ein Unified Extensible Firmware Interface (UEFI) sein. In mindestens einer Ausführungsform kann die Netzwerksteuerung 2734 eine Netzwerkverbindung zu einem drahtgebundenen Netzwerk ermöglichen. In mindestens einer Ausführungsform ist eine Netzwerksteuerung mit hoher Performance (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 Legacy-E/A-Steuerung 2740 zur Kopplung von Legacy-Vorrichtungen (z. B. Personal System 2 (PS/2)) mit dem System 2700. In mindestens einer Ausführungsform kann der Plattformsteuer-Hub 2730 auch mit einer oder mehreren Universal-Serial-Bus(USB)-Steuerungen 2742 verbunden sein, die mit Eingabevorrichtungen, wie zum Beispiel 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 Plattformsteuer-Hubs 2730 in einen diskreten externen Grafikprozessor, wie zum Beispiel den externen Grafikprozessor 2712, integriert sein. In mindestens einer Ausführungsform können der Plattformsteuer-Hub 2730 und/oder die Speichersteuerung 2716 extern zu einem oder mehreren Prozessor(en) 2702 sein. Zum Beispiel kann das System 2700 in mindestens einer Ausführungsform eine externe Speichersteuerung 2716 und einen Plattformsteuer-Hub 2730 enthalten, der als Speichersteuer-Hub und Peripheriesteuer-Hub innerhalb eines Systemchipsatzes konfiguriert sein kann, der mit dem/den Prozessor(en) 2702 in Kommunikation steht.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte oder die gesamte Ableitungs- und/oder Trainingslogik 815 in den Grafikprozessor 2700 integriert sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Ableitungstechniken 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 Ableitungs- und/oder Trainingsvorgänge unter Verwendung einer anderen als der in den 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 eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
28 ist ein Blockdiagramm eines Prozessors 2800 mit einem oder mehreren Prozessorkernen 2802A-2802N, einer integrierten Speichersteuerung 2814 und einem integrierten Grafikprozessor 2808 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 enthalten, dargestellt durch Kästen mit gestrichelten Linien. In mindestens einer Ausführungsform enthält 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 z. B. ein Level 2 (L2), Level 3 (L3), Level 4 (L4) oder anderes Cache-Level, 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 Bussteuereinheiten 2816 und einen Systemagentenkern 2810 enthalten. In mindestens einer Ausführungsform verwalten Bussteuereinheiten 2816 einen Satz von peripheren Bussen, wie zum Beispiel 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 zur Koordinierung und zum Betrieb 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 zur Regulierung eines oder mehrerer Leistungsstatus 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 Grafikverarbeitungsvorgängen. In mindestens einer Ausführungsform ist der Grafikprozessor 2808 mit gemeinsam genutzten Cache-Einheiten 2806 und dem Systemagentenkern 2810, einschließlich einer oder mehrerer integrierter Speichersteuerungen 2814, gekoppelt. In mindestens einer Ausführungsform beinhaltet der Systemagentenkern 2810 auch eine Anzeigesteuerung 2811 zum Führen der Grafikprozessorausgabe zu einer oder mehreren gekoppelten Anzeigen. 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 ringbasierte Zusammenschaltungseinheit 2812 zur Kopplung interner Komponenten des Prozessors 2800 verwendet. 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 Performance, 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 einen 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 in Bezug auf die 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 einen anderen Anweisungssatz ausführen. In mindestens einer Ausführungsform sind die Prozessorkerne 2802A-2802N in Bezug auf die Mikroarchitektur heterogen, wobei ein oder mehrere Kerne mit einem relativ gesehen höheren Leistungsverbrauch mit einem oder mehreren Kernen mit einem niedrigeren Leistungsverbrauch gekoppelt sind. In mindestens einer Ausführungsform kann der Prozessor 2800 auf einem oder mehreren Chips oder als integrierte SoC-Schaltung implementiert sein.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte oder die gesamte Ableitungs- und/oder Trainingslogik 815 in den Grafikprozessor 2810 integriert sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Ableitungstechniken eine oder mehrere der in einer 3D-Pipeline verkörperten ALUs, Grafikkern(e) 2802, gemeinsam genutzte Logik oder eine andere Logik in 28 verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Ableitungs- und/oder Trainingsvorgänge unter Verwendung einer anderen als der in den 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 Prozessors 2800 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
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 speicherzugeordnete E/A-Schnittstelle mit Registern auf dem Grafikprozessor 2900 und mit im Speicher abgelegten Befehlen. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2900 eine Speicherschnittstelle 2914 für den Zugriff auf den Speicher. In mindestens einer Ausführungsform ist die Speicherschnittstelle 2914 eine Schnittstelle zum lokalen Speicher, einem oder mehreren internen Caches, einem oder mehreren gemeinsam genutzten externen Caches und/oder zum Systemspeicher.
-
In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2900 auch eine Anzeigesteuerung 2902 zum Führen von Anzeigeausgabedaten zu einer Anzeigevorrichtung 2920. In mindestens einer Ausführungsform beinhaltet die Anzeigesteuerung 2902 Hardware für eine oder mehrere Überlagerungsebenen für die Anzeigevorrichtung 2920 und die Zusammensetzung 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 zum Beispiel 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 MPEG-2, Advanced-Video-Coding(AVC)-Formate wie H.264/MPEG-4 AVC sowie Society of Motion Picture & Television Engineers (SMPTE) 421M/VC-1 und Joint-Photographic-Experts-Group(JPEG)-Formate wie JPEG und Motion JPEG (MJPEG).
-
In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2900 eine Block-Image-Transfer(BLIT)-Engine 2904, um zweidimensionale (2D) Rasterisierungsvorgänge auszuführen, einschließlich z. B. Bit-Boundary Block Transfers. In mindestens einer Ausführungsform werden jedoch 2D-Grafikvorgänge unter Verwendung einer oder mehreren Komponenten einer Grafikverarbeitungs-Engine (graphics processing engine - GPE) 2910 ausgeführt. In mindestens einer Ausführungsform ist die GPE 2910 eine Rechen-Engine zur Ausführung von Grafikvorgängen, einschließlich dreidimensionaler (3D) Grafikvorgänge und Medienvorgänge.
-
In mindestens einer Ausführungsform beinhaltet die GPE 2910 eine 3D-Pipeline 2912 zur Ausführung von 3D-Vorgängen, wie z. B. Rendern dreidimensionaler Bilder und Szenen unter Verwendung von Verarbeitungsfunktionen, die an 3D-Primitivformen (z. B. Rechteck, Dreieck usw.) wirken. In mindestens einer Ausführungsform beinhaltet die 3D-Pipeline 2912 programmierbare und Festfunktionselemente, die verschiedene Tasks ausführen und/oder Ausführungs-Threads für ein 3D-/Medienteilsystem 2915 hervorbringen. Während die 3D-Pipeline 2912 zur Ausführung von Medienvorgängen verwendet werden kann, beinhaltet die GPE 2910 in mindestens einer Ausführungsform auch eine Medienpipeline 2916, die zur Ausführung von Medienvorgängen, wie z. B. Videonachbearbeitung und Bildverbesserung, verwendet wird.
-
In mindestens einer Ausführungsform beinhaltet die Medienpipeline 2916 Festfunktions- oder programmierbare Logikeinheiten, um einen oder mehrere spezialisierte Medienvorgänge auszuführen, z. B. Beschleunigung von Videodecodierung, Videoentschachtelung und Beschleunigung von Videocodierung anstelle oder im Auftrag der Videocodec-Engine 2906. In mindestens einer Ausführungsform beinhaltet die Medienpipeline 2916 zusätzlich eine Thread-Hervorbringungseinheit, um Threads zur Ausführung auf dem 3D-/Medienteilsystem 2915 hervorzubringen. In mindestens einer Ausführungsform führen hervorgebrachte Threads Berechnungen für Medienvorgänge auf einer oder mehreren Grafikausführungseinheiten aus, die im 3D-/Medienteilsystem 2915 enthalten sind.
-
In mindestens einer Ausführungsform beinhaltet das 3D-/Medienteilsystem 2915 Logik zur Ausführung von Threads, die von der 3D-Pipeline 2912 und der Medienpipeline 2916 hervorgebracht werden. In mindestens einer Ausführungsform senden die 3D-Pipeline 2912 und die Medienpipeline 2916 Thread-Ausführungsanforderungen an das 3D-/Medienteilsystem 2915, das eine Thread-Verteilungslogik zur Vermittlung und Verteilung verschiedener Anforderungen an verfügbare Thread-Ausführungsressourcen beinhaltet. In mindestens einer Ausführungsform beinhalten die Ausführungsressourcen eine Anordnung von Grafikausführungseinheiten zur Verarbeitung 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 einen gemeinsam genutzten Speicher, einschließlich Registern und adressierbaren Speichers, um Daten zwischen Threads gemeinsam zu nutzen und Ausgabedaten zu speichern.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte oder die gesamte Ableitungs- und/oder Trainingslogik 815 in den Grafikprozessor 2900 integriert sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Ableitungstechniken 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 Ableitungs- und/oder Trainingsvorgänge unter Verwendung einer anderen als der in den 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 2900 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
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 ist möglicherweise nicht explizit in der GPE 3010 enthalten. In mindestens einer Ausführungsform ist ein separater Medien- und/oder Bildprozessor mit der GPE 3010 gekoppelt.
-
In mindestens einer Ausführungsform ist die GPE 3010 mit einem Befehls-Streamer 3003 gekoppelt oder enthält einen solchen, der einen Befehlsstrom für eine 3D-Pipeline 3012 und/oder die Medienpipeline 3016 bereitstellt. In mindestens einer Ausführungsform ist der Befehls-Streamer 3003 mit einem Speicher gekoppelt, bei dem es sich um einen 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 von dem 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 Mikrovorgänge, 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 im Speicher gespeichert sind, wie z. B., 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 Vorgänge ausführen oder einen oder mehrere Ausführungs-Threads an eine Grafikkernanordnung 3014 verteilen. In mindestens einer Ausführungsform beinhaltet die Grafikkernanordnung 3014 einen oder mehrere Blöcke von Grafikkernen (z. B. Grafikkern(e) 3015A, Grafikkern(e) 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 zur Ausführung von Grafik- und Rechenvorgängen sowie eine Logik zur Texturverarbeitung mit fester Funktion und/oder zur Beschleunigung des maschinellen Lernens und der künstlichen Intelligenz, einschließlich der Ableitungs- und/oder Trainingslogik 815 in 8A und 8B, beinhaltet.
-
In mindestens einer Ausführungsform beinhaltet die 3D-Pipeline 3012 eine Festfunktions- und eine programmierbare Logik, um ein oder mehrere Shader-Programme, wie z. B. Vertex-Shader, Geometrie-Shader, Pixel-Shader, Fragment-Shader, Rechen-Shader oder andere Shader-Programme, zu verarbeiten, indem Anweisungen verarbeitet und Ausführungs-Threads an die Grafikkernanordnung 3014 verteilt werden. In mindestens einer Ausführungsform stellt die Grafikkernanordnung 3014 einen einheitlichen Block von Ausführungsressourcen zur Verwendung bei der Verarbeitung von Shader-Programmen bereit. In mindestens einer Ausführungsform beinhaltet eine Mehrzweck-Ausführungslogik (z. B. Ausführungseinheiten) innerhalb des Grafikkerns/der Grafikkerne 3015A-3015B der Grafikkernanordnung 3014 Unterstützung für verschiedene 3D-API-Shader-Sprachen und kann mehrere gleichzeitige Ausführungs-Threads ausführen, die mit mehreren Shadern assoziiert sind.
-
In mindestens einer Ausführungsform beinhaltet die Grafikkernanordnung 3014 auch Ausführungslogik zur Ausführung von Medienfunktionen, wie z. B. Video- und/oder Bildverarbeitung. In mindestens einer Ausführungsform beinhalten die Ausführungseinheiten zusätzlich eine Universallogik, die so programmiert werden kann, dass sie zusätzlich zu den Grafikverarbeitungsvorgängen parallele Universal-Rechenvorgänge ausführt.
-
In mindestens einer Ausführungsform können Ausgabedaten, die von Threads erzeugt werden, die auf der Grafikkernanordnung 3014 ausgeführt werden, Daten in den Speicher in einem Unified Return Buffer (URB) 3018 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 verschiedenen Threads zu senden, die auf der Grafikkernanordnung 3014 ausgeführt werden. In mindestens einer Ausführungsform kann der URB 3018 zusätzlich für die Synchronisation zwischen Threads auf der Grafikkernanordnung 3014 und der Festfunktionslogik innerhalb der gemeinsam genutzten Funktionslogik 3020 verwendet werden.
-
In mindestens einer Ausführungsform ist die Grafikkernanordnung 3014 skalierbar, sodass die Grafikkernanordnung 3014 eine variable Anzahl von Grafikkernen beinhaltet, die jeweils eine variable Anzahl von Ausführungseinheiten basierend auf einem angestrebten Leistungs- und Performance-Niveau der GPE 3010 beinhalten. 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 die Grafikkernanordnung 3014 mit der gemeinsam genutzten Funktionslogik 3020 gekoppelt, die mehrere Ressourcen enthält, die von den Grafikkernen in der Grafikkernanordnung 3014 gemeinsam genutzt werden. In mindestens einer Ausführungsform sind die gemeinsam genutzten Funktionen, die von der gemeinsam genutzten Funktionslogik 3020 ausgeführt werden, in Hardware-Logikeinheiten verkörpert, die eine spezialisierte Ergänzungsfunktionalität für die Grafikkernanordnung 3014 bereitstellen. In mindestens einer Ausführungsform beinhaltet die gemeinsam genutzte Funktionslogik 3020 eine Sampler-Einheit 3021, eine Mathematikeinheit 3022 und eine Zwischen-Thread(inter-thread communication - ITC)-Logik 3023, ist aber nicht darauf beschränkt. In mindestens einer Ausführungsform sind ein oder mehrere Cache(s) 3025 in der gemeinsam genutzten Funktionslogik 3020 enthalten oder mit dieser gekoppelt.
-
In mindestens einer Ausführungsform wird eine gemeinsam genutzte Funktion verwendet, wenn die Nachfrage nach einer spezialisierten Funktion für die Aufnahme in die Grafikkernanordnung 3014 nicht ausreicht. 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 der Grafikkernanordnung 3014 gemeinsam genutzt. In mindestens einer Ausführungsform können spezifische gemeinsam genutzte Funktionen innerhalb der gemeinsam genutzten Funktionslogik 3020, die von der Grafikkernanordnung 3014 intensiv genutzt werden, in der gemeinsam genutzten Funktionslogik 3316 innerhalb der Grafikkernanordnung 3014 enthalten sein. In mindestens einer Ausführungsform kann die gemeinsam genutzte Funktionslogik 3316 innerhalb der Grafikkernanordnung 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 der Grafikkernanordnung 3014 dupliziert werden. In mindestens einer Ausführungsform ist die gemeinsam genutzte Funktionslogik 3020 zugunsten der gemeinsam genutzten Funktionslogik 3026 innerhalb der Grafikkernanordnung 3014 ausgeschlossen.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte oder die gesamte Ableitungs- und/oder Trainingslogik 815 in den Grafikprozessor 3010 integriert sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Ableitungstechniken eine oder mehrere der in der 3D-Pipeline 3012 verkörperten ALUs, Grafikkern(e) 3015, gemeinsam genutzte Logik 3026, gemeinsam genutzte Logik 3020 oder eine andere Logik in 30 verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Ableitungs- und/oder Trainingsvorgänge unter Verwendung einer anderen als der in den 8A oder 8B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter im chipinternen oder chip externen Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 3010 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
31 ist ein Blockdiagramm der Hardware-Logik eines Grafikprozessorkerns 3100 gemäß mindestens einer hierin beschriebenen Ausführungsform. In mindestens einer Ausführungsform ist der Grafikprozessorkern 3100 in einer Grafikkernanordnung enthalten. In mindestens einer Ausführungsform kann es sich bei dem Grafikprozessorkern 3100, mitunter als Kernscheibe bezeichnet, um einen oder mehrere Grafikkerne innerhalb eines modularen Grafikprozessors handeln. In mindestens einer Ausführungsform ist der Grafikprozessorkern 3100 beispielhaft für eine Grafikkernscheibe und kann ein Grafikprozessor, wie hierin beschrieben, basierend auf Zielleistungs- und -Performance-Rahmen mehrere Grafikkernscheiben beinhalten. In mindestens einer Ausführungsform kann jeder Grafikkern 3100 einen Festfunktionsblock 3130 beinhalten, der mit mehreren Teilkernen 3101A-3101F gekoppelt ist, die auch als Teilscheiben 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, z. B. bei Grafikprozessor-Implementierungen mit niedrigerer Performance und/oder niedrigerer Leistung. In mindestens einer Ausführungsform beinhaltet die Geometrie- und Festfunktionspipeline 3136 eine 3D-Festfunktionspipeline, eine Video-Frontend-Einheit, einen Thread-Spawner und Thread-Verteiler sowie einen Unified-Return-Buffer-Verwalter, der Unified Return Buffer verwaltet.
-
In mindestens einer Ausführungsform beinhaltet der Festfunktionsblock 3130 auch eine Grafik-SoC-Schnittstelle 3137, einen Grafik-Mikrocontroller 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 der Grafik-Mikrocontroller 3138 ein programmierbarer Teilprozessor, der so konfiguriert werden kann, dass er verschiedene Funktionen des Grafikprozessors 3100 verwaltet, einschließlich Thread-Verteilung, -Planung und -Präemption. In mindestens einer Ausführungsform beinhaltet die Medienpipeline 3139 Logik zur Erleichterung der Decodierung, Codierung, Vorbearbeitung und/oder Nachbearbeitung von Multimedia-Daten, einschließlich Bild- und Videodaten. In mindestens einer Ausführungsform implementiert die Medienpipeline 3139 Medienvorgänge über Anforderungen an Rechen- oder Abtastlogik innerhalb der Teilkerne 3101-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 die Kommunikation mit Festfunktionsvorrichtungen innerhalb eines SoC ermöglichen, wie z. B. Kamera-Bildgebungspipelines, und ermöglicht sie die Verwendung von globalem atomaren Speicher und/oder implementiert diesen, der vom Grafikkern 3100 und den CPUs innerhalb eines SoCs gemeinsam genutzt werden kann. In mindestens einer Ausführungsform kann die Grafik-SoC-Schnittstelle 3137 auch Leistungsverwaltungssteuerungen für den Grafikprozessorkern 3100 implementieren und eine Schnittstelle zwischen einer Taktdomäne des Grafikprozessorkerns 3100 und anderen Taktdomänen innerhalb eines SoCs 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-Verteiler, die so konfiguriert sind, dass sie Befehle und Anweisungen für jeden von einem oder mehreren Grafikkernen innerhalb eines Grafikprozessors bereitstellen. In mindestens einer Ausführungsform können Befehle und Anweisungen an die Medienpipeline 3139 verteilt werden, wenn Medienvorgänge ausgeführt werden sollen, oder an eine Geometrie- und Festfunktionspipeline (z. B. Geometrie- und Festfunktionspipeline 3136 und/oder eine Geometrie- und Festfunktionspipeline 3114), wenn Grafikverarbeitungsvorgänge ausgeführt werden sollen.
-
In mindestens einer Ausführungsform kann der Grafik-Mikrocontroller 3138 so konfiguriert sein, dass er verschiedene Planungs- und Verwaltungs-Tasks für den Grafikkern 3100 ausführt. In mindestens einer Ausführungsform kann der Grafik-Mikrocontroller 3138 die Planung der Grafik- und/oder Rechenarbeitslast auf verschiedenen Grafikparallel-Engines in den Anordnungen 3102A-3102F, 3104A-3104F von Ausführungseinheiten (execution unit - EU) innerhalb der Teilkerne 3101A-3101F ausfü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 übermitteln, der einen Planungsvorgang auf einer geeigneten 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 der Grafik-Mikrocontroller 3138 auch Status mit niedriger Leistung oder inaktive Status für den Grafikkern 3100 ermöglichen, wobei dem Grafikkern 3100 eine Fähigkeit bereitgestellt wird, Register innerhalb des Grafikkerns 3100 über Statusü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 eine gemeinsam genutzte Funktionslogik 3110, einen gemeinsam genutzten und/oder Cache-Speicher 3112, eine Geometrie-/Festfunktionspipeline 3114 sowie eine zusätzliche Festfunktionslogik 3116 zur Beschleunigung verschiedener Grafik- und Rechenverarbeitungsvorgänge beinhalten. In mindestens einer Ausführungsform kann die gemeinsam genutzte Funktionslogik 3110 Logikeinheiten (z. B. Sampler-, Mathematik- und/oder Zwischen-Thread-Kommunikationslogik) beinhalten, die von allen 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 ein Last-Level-Cache für N Teilkerne 3101A-3101F innerhalb des Grafikkerns 3100 sein und kann 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 zusätzliche Festfunktionslogik 3116, die verschiedene Festfunktionsbeschleunigungslogiken 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, während 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 Culling-Pipeline unterschiedliche Instanzen einer Anwendung ausführen, wobei jede Instanz einen separaten Kontext aufweist. In mindestens einer Ausführungsform kann das Shading von nur der Position lange Cull-Runs von verworfenen Dreiecken ausblenden, sodass das Shading 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, z. B. eine Festfunktions-Matrixmultiplikationslogik, für Implementierungen, die Optimierungen für das Training oder das Ableiten des maschinellen Lernens beinhalten.
-
In mindestens einer Ausführungsform beinhaltet jeder Grafikteilkern 3101A-3101F einen Satz von Ausführungsressourcen, die verwendet werden können, um Grafik-, Medien- und Rechenvorgänge als Reaktion auf Anforderungen von Grafikpipeline-, Medienpipeline- oder Shader-Programmen auszuführen. In mindestens einer Ausführungsform beinhalten die Grafikteilkerne 3101A-3101F mehrere EU-Anordnungen 3102A-3102F, 3104A-3104F, Thread-Verteilungs- und Zwischen-Thread-Kommunikations(thread dispatch/inter-thread communication - TD/IC)-Logik 3103A-3103F, einen 3D(z. B. Textur)-Sampler 3105A-3105F, einen Medien-Sampler 3106A-3106F, einen Shader-Prozessor 3107A-3107F und einen gemeinsam genutzten lokalen Speicher (shared local memory - SLM) 3108A-3108F. In mindestens einer Ausführungsform beinhalten die EU-Anordnungen 3102A-3102F, 3104A-3104F jeweils mehrere Ausführungseinheiten, bei denen es sich um Universal-Grafikverarbeitungseinheiten handelt, die in der Lage sind, Fließkomma- und Integer-/Festkomma-Logikvorgänge im Dienste eines Grafik-, Medien- oder Rechenvorgangs, einschließlich Grafik-, Medien- oder Rechen-Shader-Programmen, auszuführen. In mindestens einer Ausführungsform führt die TD/IC-Logik 3103A-3103F lokale Thread-Verteilungs- und Thread-Steuervorgänge für Ausführungseinheiten innerhalb eines Teilkerns aus und erleichtert die Kommunikation zwischen Threads, die auf Ausführungseinheiten eines Teilkerns ausgeführt werden. In mindestens einer Ausführungsform können die 3D-Sampler 3105A-3105F Textur- oder andere zugehörige 3D-Grafikdaten im Speicher lesen. In mindestens einer Ausführungsform können die 3D-Sampler Texturdaten basierend auf einem konfigurierten Abtaststatus und eines Texturformats, das mit einer gegebenen Textur assoziiert ist, unterschiedlich lesen. In mindestens einer Ausführungsform können die Medien-Sampler 3106A-3106F ähnliche Lesevorgänge basierend auf einer Art und einem Format, die mit den Mediendaten assoziiert sind, ausführen. In mindestens einer Ausführungsform kann jeder Grafikteilkern 3101A-3101F alternativ einen einheitlichen 3D- und Medien-Sampler beinhalten. In mindestens einer Ausführungsform können Threads, die auf Ausführungseinheiten in jedem der Teilkerne 3101A-3101F ausgeführt werden, den gemeinsam genutzten lokalen Speicher 3108A-3108F in jedem Teilkern nutzen, 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 Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte oder die gesamte Ableitungs- und/oder Trainingslogik 815 in den Grafikprozessor 3110 integriert sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Ableitungstechniken eine oder mehrere der in einer 3D-Pipeline verkörperten ALUs, den Grafik-Mikrocontroller 3138, die Geometrie- und Festfunktionspipeline 3114 und 3136 oder eine andere Logik in 31 verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Ableitungs- und/oder Trainingsvorgänge unter Verwendung einer anderen als der in den 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 3100 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
Die 32A-32B veranschaulichen die Thread-Ausführungslogik 3200, die eine Anordnung 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-Verteiler 3204, einen Anweisungs-Cache 3206, eine skalierbare Ausführungseinheitenanordnung einschließlich einer Vielzahl von Ausführungseinheiten 3207A-3207N und 3208A-3208N, einen Sampler 3210, einen Daten-Cache 3212 und einen Datenport 3214. In mindestens einer Ausführungsform kann eine skalierbare Ausführungseinheitenanordnung dynamisch skalieren, indem eine oder mehrere Ausführungseinheiten (z. B. beliebige der Ausführungseinheiten 3208A-N oder 3207A-N) zum Beispiel basierend auf den Rechenanforderungen einer Arbeitslast aktiviert oder deaktiviert werden. In mindestens einer Ausführungsform sind die skalierbaren Ausführungseinheiten über eine Zusammenschaltungsstruktur miteinander verbunden, die mit allen Ausführungseinheiten verknüpft ist. In mindestens einer Ausführungsform beinhaltet die Thread-Ausführungslogik 3200 eine oder mehrere Verbindungen zu einem Speicher, z. B. einem Systemspeicher oder einem Cache-Speicher, durch eines oder mehrere des Anweisungs-Caches 3206, des Datenports 3214, des Samplers 3210 und der Ausführungseinheiten 3207 oder 3208. In mindestens einer Ausführungsform ist jede Ausführungseinheit (z. B. 3207A) eine eigenständige programmierbare Universal-Recheneinheit, die 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 die Anordnung der Ausführungseinheiten 3207 und/oder 3208 so skalierbar, dass sie 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 die mit den Shader-Programmen assoziierten Ausführungs-Threads über einen Thread-Verteiler 3204 verteilen. In mindestens einer Ausführungsform beinhaltet der Thread-Verteiler 3204 eine Logik zur Vermittlung von Thread-Initiierungsanforderungen von Grafik- und Medienpipelines und zur Instanziierung angeforderter Threads auf einer oder mehreren Ausführungseinheiten in den Ausführungseinheiten 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 verteilen. In mindestens einer Ausführungsform kann der Thread-Verteiler 3204 auch Laufzeit-Thread-Spawning-Anforderungen von ausführenden Shader-Programmen verarbeiten.
-
In mindestens einer Ausführungsform unterstützen die Ausführungseinheiten 3207 und/oder 3208 einen Anweisungssatz, der native Unterstützung für viele Standard-3D-Grafik-Shader-Anweisungen beinhaltet, sodass Shader-Programme aus Grafikbibliotheken (z. B. Direct 3D und OpenGL) mit einer minimalen Verschiebung ausgeführt werden. In mindestens einer Ausführungsform unterstützen die Ausführungseinheiten die Vertex- und Geometrieverarbeitung (z. B. Vertex-Programme, Geometrieprogramme und/oder Vertex-Shader), die Pixelverarbeitung (z. B. Pixel-Shader, Fragment-Shader) und die 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 für die Verarbeitung anderer Threads verwendet 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, ausführen.
-
In mindestens einer Ausführungsform arbeitet jede Ausführungseinheit in den Ausführungseinheiten 3207 und/oder 3208 an Anordnungen 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 arithmetischen Logikeinheiten (ALUs) oder Fließkommaeinheiten (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 Anweisungssatz einer Ausführungseinheit SIMD-Anweisungen. In mindestens einer Ausführungsform können verschiedene Datenelemente als eine Paket-Datenart 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 dem Betrieb an einem 256 Bit breiten Vektor 256 Bit eines Vektors in einem Register gespeichert und wird eine Ausführungseinheit an einem Vektor als vier separate 64-Bit-Paket-Datenelemente (Datenelemente der Größe Quad-Word (QW)), acht separate 32-Bit-Paket-Datenelemente (Datenelemente der Größe Double Word (DW)), sechzehn separate 16-Bit-Paket-Datenelemente (Datenelemente der Größe Word (W)) oder zweiunddreißig separate 8-Bit-Datenelemente (Datenelemente der Größe Byte (B)) betrieben. 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 mit einer für fusionierte EUs üblichen Thread-Steuerlogik (3211A-3211N) kombiniert werden, wie z.B. 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 Gruppe von fusionierten EUs so konfiguriert sein, dass sie einen separaten SIMD-Hardware-Thread ausführt, wobei die Anzahl der EUs in einer Gruppe von fusionierten EUs gemäß verschiedenen Ausführungsformen variieren kann. In mindestens einer Ausführungsform können verschiedene SIMD-Breiten pro EU ausgefü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 eine Thread-Steuerlogik 3211A, die für die erste EU 3207A und die zweite 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 sind ein oder mehrere interne Anweisungs-Caches (z. B. 3206) in der Thread-Ausführungslogik 3200 enthalten, um Thread-Anweisungen für Ausführungseinheiten zu cachen. In mindestens einer Ausführungsform sind ein oder mehrere Daten-Caches (z. B. 3212) enthalten, um Thread-Daten während der Thread-Ausführung zu cachen. In mindestens einer Ausführungsform ist ein Sampler 3210 enthalten, der Texturabtastung für 3D-Vorgänge und Medienabtastung für Medienvorgänge bereitstellt. In mindestens einer Ausführungsform beinhaltet der Sampler 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.
-
Während der Ausführung senden Grafik- und Medienpipelines in mindestens einer Ausführungsform Thread-Initiierungsanforderungen an die Thread-Ausführungslogik 3200 über die Thread-Spawning- und -Verteilungslogik. 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 bewirken, dass die Ergebnisse in Ausgabeflächen (z. B. Farbpuffer, Tiefenpuffer, Stencil-Puffer usw.) geschrieben werden. In mindestens einer Ausführungsform berechnet ein Pixel-Shader oder Fragment-Shader die Werte verschiedener Vertex-Attribute, 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 (application programming interface - API) zugeführtes Pixel- oder Fragment-Shader-Programm aus. In mindestens einer Ausführungsform verteilt der Shader-Prozessor 3202 zur Ausführung eines Shader-Programms Threads über den Thread-Verteiler 3204 an eine Ausführungseinheit (z. B. 3208A). In mindestens einer Ausführungsform verwendet der Shader-Prozessor 3202 die Texturabtastlogik im Sampler 3210, um auf Texturdaten in den im Speicher gespeicherten Texturkarten zuzugreifen. 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 an 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 mit diesen gekoppelt, um Daten für den Speicherzugriff über einen Datenport zu cachen.
-
Wie in 32B veranschaulicht, kann eine Grafikausführungseinheit 3208 in mindestens einer Ausführungsform eine Anweisungsabrufeinheit 3237, eine Anordnung von allgemeinen Registerdateien (general register file - GRF) 3224, eine Anordnung von architektonischen Registerdateien (architectural register file - ARF) 3226, einen Thread-Vermittler 3222, eine Sendeeinheit 3230, eine Verzweigungseinheit 3232, einen Satz SIMD-Fließkommaeinheiten (FPUs) 3234 und einen Satz dedizierter Integer-SIMD-ALUs 3235 beinhalten. In mindestens einer Ausführungsform beinhalten die GRF 3224 und die ARF 3226 einen Satz allgemeiner Registerdateien und Architekturregisterdateien, 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 Status 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ührungsstatus jedes Threads, einschließlich der Anweisungszeiger für jeden Thread, in Thread-spezifischen Registern in der ARF 3226 gehalten 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 verschachtelten 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 gleichzeitig ausgeben, die jeweils unterschiedliche Anweisungen sein können. In mindestens einer Ausführungsform kann der Thread-Vermittler 3222 des Grafikausführungseinheits-Threads 3208 Anweisungen an eine der Sendeeinheit 3230, der Verzweigungseinheit 3232 oder der SIMD-FPU(s) 3234 zur Ausführung verteilen. 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ührungsformen 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 erlauben, dass Register zusammen adressiert werden, um effektiv breitere Register zu bilden oder um geschichtete rechteckige Blockdatenstrukturen darzustellen.
-
In mindestens einer Ausführungsform werden Speichervorgänge, Sampler-Vorgänge und andere Systemkommunikationen mit längerer Latenz über „Sende“-Anweisungen versendet, die von einer Nachricht ausgeführt werden, die an die Sendeeinheit 3230 weitergegeben wird. In mindestens einer Ausführungsform werden Verzweigungsanweisungen an die Verzweigungseinheit 3232 verteilt, um SIMD-Divergenz und schließlich -Konvergenz zu erleichtern.
-
In mindestens einer Ausführungsform beinhaltet die Grafikausführungseinheit 3208 eine oder mehrere SIMD-Fließkommaeinheiten (FPU(s)) 3234 zur Ausführung von Fließkommavorgängen. In mindestens einer Ausführungsform unterstützen die FPU(s) 3234 auch Integerberechnungen. In mindestens einer Ausführungsform können die FPU(s) 3234 bis zur Anzahl von M 32-Bit-Fließkomma(oder -Integer)-Vorgänge über SMID ausführen oder bis zu 2M 16-Bit-Integer- oder 16-Bit-Fließkommavorgänge über SMID 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-Fließkomma mit doppelter Genauigkeit zu unterstützen. In mindestens einer Ausführungsform ist auch ein Satz von 8-Bit-Integer-SIMD-ALUs 3235 vorhanden, der speziell für die Durchführung von Vorgängen, die mit Berechnungen für maschinelles Lernen assoziiert sind, optimiert sein kann.
-
In mindestens einer Ausführungsform können Anordnungen von mehreren Instanzen der Grafikausführungseinheit 3208 in einer Grafikteilkern-Gruppierung (z. B. einer Teilscheibe) instanziiert sein. 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 Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte oder die gesamte Ableitungs- und/oder Trainingslogik 815 in die Thread-Ausführungslogik 3200 integriert sein. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Ableitungs- und/oder Trainingsvorgänge unter Verwendung einer anderen als der in den 8A oder 8B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter im chipinternen oder chip externen Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs der Thread-Ausführungslogik 3200 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
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 auszufü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 Multithreading als latenzverbergende Technik nutzt, die ausgestaltet ist, um 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 ist eine Instanziierung eines Satzes von Anweisungen, der für die Ausführung durch die PPU 3300 konfiguriert ist. In mindestens einer Ausführungsform ist die PPU 3300 eine Grafikverarbeitungseinheit („GPU“), die so konfiguriert ist, dass sie eine Grafik-Rendering-Pipeline für die Verarbeitung dreidimensionaler („3D“) Grafikdaten implementiert, um zweidimensionale („2D“) Bilddaten zur Anzeige auf einer Anzeigevorrichtung, wie z. B. einer Flüssigkristallanzeige(liquid crystal display - „LCD“)-Vorrichtung, zu erzeugen. In mindestens einer Ausführungsform wird die PPU 3300 verwendet, um Berechnungen, wie zum Beispiel lineare Algebravorgänge und Vorgänge des maschinellen Lernens, auszuführen. 33 veranschaulicht ein Beispiel für einen Parallelprozessor, der nur zu Veranschaulichungszwecken dient und als nicht einschränkendes Beispiel für Prozessorarchitekturen auszulegen ist, 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 so konfiguriert, dass sie Berechnungen mit hoher Performance (High Performance Computing - „HPC“) und Anwendungen für ein Rechenzentrum und maschinelles Lernen 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, molekulare Simulationen, Arzneimittelentdeckung, Krankheitsdiagnose, Wettervorhersage, Big-Data-Analytik, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotik, Fabrikautomatisierung, Echtzeit-Sprachübersetzung, Online-Suchoptimierung 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 Planer-Einheit 3312, eine Arbeitsverteilungseinheit 3314, einen Hub 3316, eine Kreuzschiene („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 drahtbasierte Mehrspur-Kommunikationsverknüpfung beziehen, die von Skalierungssystemen verwendet wird und eine oder mehrere PPUs 3300 in Kombination mit einer oder mehreren zentralen Verarbeitungseinheiten („CPUs“) beinhaltet, die Cache-Kohärenz zwischen PPUs 3300 und CPUs sowie CPU-Mastering unterstützen. In mindestens einer Ausführungsform werden Daten und/oder Befehle von der Hochgeschwindigkeits-GPU-Zusammenschaltung 3308 über den Hub 3316 zu/von anderen Einheiten der PPU 3300 übertragen, wie z. B. 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 so konfiguriert, dass sie Kommunikationen (z. B. Befehle, Daten) von einem Host-Prozessor (in 33 nicht veranschaulicht) über den Systembus 3302 überträgt und empfängt. 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 z. B. 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, z. B. mit einer oder mehreren der PPUs 3300. In mindestens einer Ausführungsform implementiert die E/A-Einheit 3306 eine Peripheral-Component-Interconnect-Express(„PCIe“)-Schnittstelle für die Kommunikation über einen PCIe-Bus. In mindestens einer Ausführungsform implementiert die E/A-Einheit 3306 Schnittstellen für die Kommunikation mit externen Vorrichtungen.
-
In mindestens einer Ausführungsform decodiert die E/A-Einheit 3306 über den Systembus 3302 empfangenen Pakete. In mindestens einer Ausführungsform stellen mindestens einige Pakete Befehle dar, die so konfiguriert sind, dass sie die PPU 3300 dazu veranlassen, verschiedene Vorgänge auszufü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 spezifiziert. 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 z. B. 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 die Kommunikation zwischen und unter verschiedenen logischen Einheiten der PPU 3300 routet.
-
In mindestens einer Ausführungsform codiert ein vom Host-Prozessor ausgeführtes Programm einen Befehlsstrom in einem Puffer, welcher 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 zugreift, der mit dem Systembus 3302 verbunden ist, und zwar über Speicheranforderungen, die über den Systembus 3302 von der E/A-Einheit 3306 übertragen werden. In mindestens einer Ausführungsform schreibt ein Host-Prozessor einen Befehlsstrom in einen Puffer und überträgt dann einen Zeiger für einen Start des Befehlsstroms an die PPU 3300, sodass die Frontend-Einheit 3310 Zeiger für einen oder mehrere Befehlsströme empfängt und einen oder mehrere Befehlsströme verwaltet, indem sie Befehle aus den Befehlsströmen liest und Befehle an verschiedene Einheiten der PPU 3300 weiterleitet.
-
In mindestens einer Ausführungsform ist die Frontend-Einheit 3310 mit der Planer-Einheit 3312 gekoppelt, die verschiedene GPCs 3318 zur Verarbeitung von Tasks konfiguriert, die durch einen oder mehrere Befehlsströme definiert sind. In mindestens einer Ausführungsform ist die Planer-Einheit 3312 so konfiguriert, dass sie Statusinformationen in Bezug auf verschiedene, von der Planer-Einheit 3312 verwaltete Tasks verfolgt, wobei die Statusinformationen angeben können, welchem der GPCs 3318 eine Task zugewiesen ist, ob die Task aktiv oder inaktiv ist, welches Prioritätslevel mit der Task assoziiert ist, und so weiter. In mindestens einer Ausführungsform verwaltet die Planer-Einheit 3312 die Ausführung einer Vielzahl von Tasks auf einem oder mehreren GPCs 3318.
-
In mindestens einer Ausführungsform ist die Planer-Einheit 3312 mit der Arbeitsverteilungseinheit 3314 gekoppelt, die so konfiguriert ist, dass sie Tasks zur Ausführung auf den GPCs 3318 verteilt. In mindestens einer Ausführungsform verfolgt die Arbeitsverteilungseinheit 3314 eine Anzahl geplanter Tasks, die von der Planer-Einheit 3312 empfangen wurde, und verwaltet die Arbeitsverteilungseinheit 3314 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 zugewiesen sind; der Pool aktiver Tasks kann eine Anzahl von Schlitzen (z. B. 4 Schlitze) für Tasks umfassen, die aktiv von den GPCs 3318 verarbeitet werden, sodass, wenn einer der GPCs 3318 die Ausführung einer Task abschließt, diese Task aus diesem Pool aktiver Tasks für den GPC 3318 entfernt wird und eine andere Task aus einem Pool ausstehender Tasks ausgewählt und zur Ausführung auf dem GPC 3318 eingeplant wird. In mindestens einer Ausführungsform wird, wenn eine aktive Task auf dem GPC 3318 inaktiv ist, z. B. während sie darauf wartet, dass eine Datenabhängigkeit aufgelöst wird, dann diese aktive Task aus dem GPC 3318 entfernt und in diesen Pool ausstehender Tasks zurückgeführt, während eine andere 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 Zusammenschaltungsnetzwerk, das viele Einheiten der PPU 3300 mit anderen Einheiten der PPU 3300 koppelt und so konfiguriert sein kann, dass es die Arbeitsverteilungseinheit 3314 mit einem bestimmten GPC 3318 koppelt. 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 Tasks von der Planer-Einheit 3312 verwaltet und von der Arbeitsverteilungseinheit 3314 an einen der GPCs 3318 verteilt. In mindestens einer Ausführungsform ist der GPC 3318 so konfiguriert, dass er die Task verarbeitet und Ergebnisse erzeugt. In mindestens einer Ausführungsform können die Ergebnisse von anderen Tasks innerhalb des GPC 3318 verbraucht, über die XBar 3320 an einen anderen GPC 3318 geroutet oder im Speicher 3304 gespeichert werden. In mindestens einer Ausführungsform können die Ergebnisse in den Speicher 3304 über Partitionseinheiten 3322 geschrieben werden, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten aus dem/in den Speicher 3304 implementieren. 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 mit der PPU 3300 gekoppelt sind, wie hierin in Verbindung mit 35 detaillierter beschrieben.
-
In mindestens einer Ausführungsform führt ein Host-Prozessor einen Treiberkernel aus, der eine Anwendungsprogrammierschnittstelle („API“) implementiert, die es einer oder mehreren auf einem Host-Prozessor ausgeführten Anwendungen ermöglicht, Vorgänge zur Ausführung auf der PPU 3300 zu planen. In mindestens einer Ausführungsform werden mehrere Rechenanwendungen simultan von der PPU 3300 ausgeführt und stellt die PPU 3300 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, eine oder mehrere Tasks zur Ausführung durch die PPU 3300 zu erzeugen, und dieser Treiberkernel gibt Tasks an einen oder mehrere Datenströme aus, die von der 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 von zugehörigen 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 Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie z. B. ein neuronales Netzwerk, zu trainieren, um der PPU 3300 bereitgestellte Informationen vorherzusagen oder abzuleiten. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor 3300 verwendet, um Informationen auf der Grundlage eines trainierten Models des maschinellen Lernens (z. B. eines neuronalen Netzwerks) abzuleiten oder vorherzusagen, das von einem anderen Prozessor oder System oder von der 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 Netzwerke auszuführen.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
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 zur Verarbeitung von Tasks und beinhaltet jeder GPC 3400 ohne Einschränkung einen Pipelineverwalter 3402, eine Einheit für Vorgänge vor der Rasterung (preraster operation - „preROP“) 3404, eine Raster-Engine 3408, eine Arbeitsverteilungskreuzschiene („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 vom 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, um mindestens einen Abschnitt einer Grafik-Rendering-Pipeline zu implementieren. In mindestens einer Ausführungsform ist der DPC 3406 so konfiguriert, dass ein Vertex-Shader-Programm auf einem programmierbaren Streaming-Multiprozessor („SM“) 3414 ausgeführt wird. In mindestens einer Ausführungsform ist der Pipelineverwalter 3402 so konfiguriert, dass er die von einer Arbeitsverteilungseinheit empfangenen Pakete an die entsprechenden logischen Einheiten innerhalb des GPC 3400 routet, und in mindestens einer Ausführungsform können einige Pakete an Festfunktions-Hardwareeinheiten im preROP 3404 und/oder die Raster-Engine 3408 geroutet werden, während andere Pakete an die DPCs 3406 zur Verarbeitung durch eine Primitiv-Engine 3412 oder den SM 3414 geroutet werden können. In mindestens einer Ausführungsform konfiguriert der Pipelineverwalter 3402 mindestens einen der DPCs 3406 zur Implementierung eines Modells eines neuronalen Netzwerks und/oder einer Rechenpipeline.
-
In mindestens einer Ausführungsform ist die preROP-Einheit 3404 so konfiguriert, dass sie in mindestens einer Ausführungsform die von der Raster-Engine 3408 und den DPCs 3406 erzeugten Daten an eine Rastervorgangs(Raster Operations - „ROP“)-Einheit in der Partitionseinheit 3322 routet, die vorstehend in Verbindung mit 33 detaillierter beschrieben ist. In mindestens einer Ausführungsform ist die preROP-Einheit 3404 so konfiguriert, dass sie unter anderem Optimierungen für die Farbmischung ausführt, Pixeldaten organisiert, Adressübersetzungen ausfü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 Rastervorgänge ausführen, und in mindestens einer Ausführungsform beinhaltet die Raster-Engine 3408 ohne Einschränkung eine Einrichtungs-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 Einrichtungs-Engine transformierte Vertices und 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 basierend auf Ebenengleichungen zu erzeugen, die von einer Einrichtungs-Engine erzeugt werden. In mindestens einer Ausführungsform umfasst eine Ausgabe der Raster-Engine 3408 Fragmente, die von einer beliebigen geeigneten Einheit, wie z. B. von einem in dem DPC 3406 implementierten Fragment-Shader, verarbeitet werden.
-
In mindestens einer Ausführungsform umfasst jeder DPC 3406, der im GPC 3400 enthalten ist, ohne Einschränkung eine M-Pipe-Steuerung (M-Pipe Controller - „MPC“) 3410; eine Primitiv-Engine 3412; einen oder mehrere SMs 3414 und eine beliebige geeignete Kombination davon. In mindestens einer Ausführungsform steuert die MPC 3410 den Betrieb des DPC 3406 und routet vom Pipelineverwalter 3402 empfangene Pakete an die entsprechenden Einheiten im 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 Vertex-Attribute, 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 er so konfiguriert, dass er eine Vielzahl von Threads (z. B. 32 Threads) aus einer bestimmten Gruppe von Threads gleichzeitig 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 basierend auf demselben Anweisungssatz 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ührungsstatus für jeden Warp beibehalten, wodurch Nebenläufigkeit zwischen Warps und serielle Ausführung innerhalb von Warps ermöglicht wird, wenn Threads innerhalb eines Warps divergieren. In einer anderen Ausführungsform werden ein Programmzähler, ein Aufrufstapel und ein Ausführungsstatus für jeden einzelnen Thread beibehalten, wodurch gleichwertige Nebenläufigkeit zwischen allen Threads, innerhalb und zwischen Warps, ermöglicht wird. In mindestens einer Ausführungsform wird der Ausführungsstatus für jeden einzelnen Thread beibehalten und können Threads, die gemeinsame Anweisungen ausführen, zur besseren Effizienz konvergieren und parallel ausgeführt werden. Mindestens eine Ausführungsform des SM 3414 wird nachstehend 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 Übersetzungspuffer („TLBs“) zur Ausführung der Übersetzung von virtuellen Adressen in physische Adressen im Speicher bereit.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie z. B. ein neuronales Netzwerk, zu trainieren, um dem GPC 3400 bereitgestellte Informationen vorherzusagen oder abzuleiten. In mindestens einer Ausführungsform wird der GPC 3400 verwendet, um Informationen auf der Grundlage eines trainierten Models des maschinellen Lernens (z. B. eines neuronalen Netzwerks) abzuleiten oder vorherzusagen, das von einem anderen Prozessor oder System oder von dem 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 Netzwerke auszuführen.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
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 Rastervorgangs(Raster Operation - „ROP“)-Einheit 3502, einen Level-Zwei(„L2“)-Cache 3504, eine Speicherschnittstelle 3506 und eine beliebige geeignete Kombination davon. In mindestens einer Ausführungsform ist die Speicherschnittstelle 3506 mit einem Speicher gekoppelt. In mindestens einer Ausführungsform kann die Speicherschnittstelle 3506 32-, 64-, 128-, 1024-Bit-Datenbusse oder ähnliches für die Hochgeschwindigkeitsdatenübertragung implementieren. In mindestens einer Ausführungsform beinhaltet die PPU U Speicherschnittstellen 3506, wobei U eine positive ganze Zahl ist, und zwar eine 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 beispielsweise mit bis zu Y Speichervorrichtungen verbunden sein, z. B. mit Speicherstapeln mit hoher Bandbreite oder mit einem synchronen dynamischen Grafik-Double-Data-Rate(Version 5)-Direktzugriffsspeicher („GDDR5 SDRAM“).
-
In mindestens einer Ausführungsform implementiert die Speicherschnittstelle 3506 eine Speicherschnittstelle mit Speicher mit hoher Bandbreite der zweiten Generation („HBM2“) und ist Y 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 dieser Speicher Single-Error-Correcting-Double-Error-Detecting(„SECDED“)-Fehlerkorrekturcode (Error Correction Code - „ECC“) zum Schützen von Daten. In mindestens einer Ausführungsform kann der ECC eine höhere Zuverlässigkeit für Rechenanwendungen bereitstellen, die empfindlich auf Datenkorruption reagieren.
-
In mindestens einer Ausführungsform implementiert die PPU eine Speicherhierarchie mit mehreren Levels. 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 von einer 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 Kopier-Engines 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 aus 33 oder einem anderen Systemspeicher werden von der Speicherpartitionseinheit 3500 abgerufen und im L2-Cache 3504 gespeichert, der sich auf dem Chip befindet und von verschiedenen GPCs gemeinsam genutzt wird, gemäß mindestens einer Ausführungsform. 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 einem konkreten SM 3414 zugehörig ist, und werden Daten aus dem L2-Cache 3504 abgerufen und in jedem L1-Cache zur Verarbeitung in funktionellen Einheiten der SMs 3414 gespeichert. In mindestens einer Ausführungsform ist der L2-Cache 3504 mit der Speicherschnittstelle 3506 und der in 33 gezeigten XBar 3320 gekoppelt.
-
In mindestens einer Ausführungsform führt die ROP-Einheit 3502 Grafikrastervorgänge aus, die sich auf die Pixelfarbe beziehen, wie z. B. Farbkomprimierung, Pixelmischung 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 Abtastposition, 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 Abtastposition geprüft. In mindestens einer Ausführungsform, wenn dieses Fragment die Tiefenprüfung für diese Abtastposition besteht, aktualisiert die ROP-Einheit 3502 dann 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 mit jedem GPC gekoppelt sein. In mindestens einer Ausführungsform verfolgt die ROP-Einheit 3502 die von verschiedenen GPCs empfangenen Pakete und bestimmt, ob ein von der ROP-Einheit 3502 erzeugtes Ergebnis durch die XBar 3320 geroutet 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 Planer-Einheiten 3604, eine Registerdatei 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 Zusammenschaltungsnetzwerk 3616, einen gemeinsam genutzten Speicher/Level-Eins(„L1“)-Cache 3618 und/oder eine beliebige geeignete Kombination davon.
-
In mindestens einer Ausführungsform verteilt eine Arbeitsverteilungseinheit Tasks zur Ausführung auf Universalverarbeitungsclustern („GPCs“) von Parallelverarbeitungseinheiten („PPUs“) und jede Task wird einem konkreten Datenverarbeitungscluster („DPC“) innerhalb eines GPCs zugewiesen und, wenn eine Task mit einem Shader-Programm assoziiert ist, wird diese Task einem der SMs 3600 zugewiesen. In mindestens einer Ausführungsform empfängt die Planer-Einheit 3604 Tasks von einer Arbeitsverteilungseinheit und verwaltet die Anweisungsplanung für einen oder mehrere Thread-Blöcke, die dem SM 3600 zugeordnet sind. In mindestens einer Ausführungsform plant die Planer-Einheit 3604 Thread-Blöcke für die Ausführung als Warps von parallelen Threads, wobei jedem Thread-Block mindestens ein Warp zugeordnet 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 Launch-APIs die Synchronisation zwischen Thread-Blöcken zur Ausführung paralleler Algorithmen. In mindestens einer Ausführungsform bieten Anwendungen herkömmlicher Programmiermodelle ein einzelnes, einfaches Konstrukt für die Synchronisation kooperierender Threads: eine Sperre ü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 geringeren als Thread-Block-Granularität definieren und innerhalb der definierten Gruppen synchronisieren, um eine höhere Performance, Ausgestaltungsflexibilität und Software-Wiederverwendung in Form von kollektiven gruppenweiten Funktionsschnittstellen zu ermöglichen. In mindestens einer Ausführungsform ermöglichen es kooperative Gruppen Programmierern, Gruppen von Threads explizit auf Teilblock- (d. h. so klein wie ein einzelner Thread) und Mehrblock-Granularität zu definieren und kollektive Vorgänge, wie zum Beispiel Synchronisation, an Threads in einer kooperativen Gruppe auszuführen. In mindestens einer Ausführungsform unterstützt dieses Programmiermodell eine saubere Komposition über Software-Grenzen hinweg, sodass sich Bibliotheken und Nutzenfunktionen innerhalb ihres lokalen Kontexts sicher synchronisieren können, ohne Annahmen über Konvergenz treffen zu 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 Verteilereinheit 3606 so konfiguriert, dass sie Anweisungen an eine oder mehrere funktionelle Einheiten überträgt, und die Planer-Einheit 3604 beinhaltet ohne Einschränkung zwei Verteilereinheiten 3606, die es ermöglichen, dass zwei unterschiedliche Anweisungen aus einem gemeinsamen Warp während jedes Taktzyklus verteilt werden. In mindestens einer Ausführungsform beinhaltet jede Planer-Einheit 3604 eine einzelne Verteilereinheit 3606 oder zusätzliche Verteilereinheiten 3606.
-
In mindestens einer Ausführungsform beinhaltet jeder SM 3600 in mindestens einer Ausführungsform ohne Einschränkung die Registerdatei 3608, die einen Satz von Registern für funktionelle Einheiten des SM 3600 bereitstellt. In mindestens einer Ausführungsform wird die Registerdatei 3608 auf jede funktionelle Einheit aufgeteilt, sodass jeder funktionellen Einheit ein dedizierter Abschnitt der Registerdatei 3608 zugewiesen ist. In mindestens einer Ausführungsform ist die Registerdatei 3608 auf unterschiedliche Warps aufgeteilt, die vom SM 3600 ausgeführt werden, und die Registerdatei 3608 stellt einen 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 arithmetische Fließkommalogikeinheit und eine arithmetische Integerlogikeinheit 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 Fließkommakeme mit einfacher Genauigkeit (32 Bit), 64 Integerkerne, 32 Fließkommakeme mit doppelter Genauigkeit (64 Bit) und 8 Tensorkerne.
-
Tensorkerne sind so konfiguriert, dass sie Matrixvorgänge gemäß mindestens einer Ausführungsform durchfü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 ausführen, wie z. B. Faltungsvorgänge für das Training und die Ableitung neuronaler Netzwerke. In mindestens einer Ausführungsform arbeitet jeder Tensorkern an einer 4x4-Matrix und führt einen Matrixmultiplikations- und -akkumulationsvorgang D = A X B + C aus, wobei A, B, C und D 4x4-Matrizen sind.
-
In mindestens einer Ausführungsform sind die Matrixmultiplikationseingaben A und B 16-Bit-Fließkommamatrizen und sind die Akkumulationsmatrizen C und D 16-Bit-Fließkomma- oder 32-Bit-Fließkommamatrizen. In mindestens einer Ausführungsform arbeiten die Tensorkerne an 16-Bit-Fließkommaeingabedaten mit 32-Bit-Fließkommaakkumulation. In mindestens einer Ausführungsform verwendet die 16-Bit-Fließkommamultiplikation 64 Vorgänge und ergibt ein Produkt mit voller Genauigkeit, das dann unter Verwendung der 32-Bit-Fließkommaaddition mit anderen Zwischenprodukten für eine 4x4x4-Matrixmultiplikation akkumuliert wird. In mindestens einer Ausführungsform werden die Tensorkerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixvorgänge auszuführen, die aus diesen kleineren Elementen aufgebaut sind. In mindestens einer Ausführungsform legt eine API, wie z. B. die CUDA 9 C++ API, Matrixlade-, Matrixmultiplikations- und -akkumulations- und Matrixspeicher-Spezialvorgänge frei, um die Tensorkerne von einem CUDA-C++-Programm effizient zu verwenden. 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 ausführen (z. B. Attributauswertung, reziproke Quadratwurzel und dergleichen). In mindestens einer Ausführungsform beinhalten die SFUs 3612 ohne Einschränkung eine Baumdurchquerungseinheit, die so konfiguriert ist, dass sie eine hierarchische Baumdatenstruktur durchquert. In mindestens einer Ausführungsform beinhalten die SFUs 3612 ohne Einschränkung eine Textureinheit, die so konfiguriert ist, dass sie Texturzuordnungsfilterungsvorgänge ausführt. In mindestens einer Ausführungsform sind die Textureinheiten so konfiguriert, dass sie Texturkarten (z. B. eine 2D-Anordnung von Texeln) aus dem Speicher laden und Texturkarten abtasten, um abgetastete Texturwerte zur Verwendung in Shader-Programmen zu erzeugen, die vom SM 3600 ausgeführt werden. In mindestens einer Ausführungsform werden die Texturkarten im 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 in mindestens einer Ausführungsform ohne Einschränkung N LSUs 3614, die Lade- und Speichervorgänge zwischen dem gemeinsam genutzten Speicher/L1-Cache 3618 und der Registerdatei 3608 implementieren. Das Zusammenschaltungsnetzwerk 3616 verbindet jede funktionelle Einheit mit der Registerdatei 3608 und die LSU 3614 mit der Registerdatei 3608 und dem gemeinsam genutzten Speicher/L1-Cache 3618. In mindestens einer Ausführungsform ist das Zusammenschaltungsnetzwerk 3616 eine Kreuzschiene, die so konfiguriert sein kann, dass sie beliebige funktionelle Einheiten mit beliebigen Registern in der Registerdatei 3608 verbindet und LSUs 3614 mit der Registerdatei 3608 und Speicherorten im gemeinsam genutzten Speicher/L1-Cache 3618 verbindet.
-
In mindestens einer Ausführungsform ist der gemeinsam genutzte Speicher/L1-Cache 3618 eine Anordnung von chipinternem Speicher, die in mindestens einer Ausführungsform die Datenspeicherung und die Kommunikation zwischen dem SM 3600 und der Primitiv-Engine 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 befindet sich in einem Pfad vom SM 3600 zu einer Partitionseinheit. In mindestens einer Ausführungsform wird der gemeinsam genutzte Speicher/L1-Cache 3618 zum Cachen 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 Daten-Cache und Funktionalität des gemeinsam genutzten Speichers in einem einzelnen Speicherblock stellt in mindestens einer Ausführungsform eine verbesserte Performance für beide Arten von Speicherzugriffen bereit. In mindestens einer Ausführungsform wird die Kapazität von Programmen, die keinen gemeinsam genutzten Speicher verwenden, als Cache genutzt oder ist sie so nutzbar, z. B. können, wenn der gemeinsam genutzte Speicher so konfiguriert ist, dass er die Hälfte einer Kapazität nutzt, Textur- und Lade-/Speichervorgänge die verbleibende Kapazität nutzen. 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 Festfunktions-Grafikverarbeitungseinheiten umgangen, wodurch ein wesentlich einfacheres Programmiermodell entsteht. Bei einer Konfiguration für Universalparallelberechnungen weist eine Arbeitsverteilungseinheit in mindestens einer Ausführungsform Blöcke von Threads direkt den DPCs zu und verteilt sie. 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 zur Ausführung des Programms und zur Ausführung von Berechnungen, der gemeinsam genutzte Speicher/L1-Cache 3618 zur Kommunikation zwischen den Threads 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 werden. In mindestens einer Ausführungsform schreibt, bei der Konfiguration für Universalparallelberechnungen, der SM 3600 Befehle, welche die Planer-Einheit 3604 verwenden kann, 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 tragbaren Vorrichtung), einem persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, einem Fahrzeug, einer am Kopf befestigten Anzeige, einer elektronischen tragbaren Vorrichtung usw. enthalten oder damit gekoppelt. In mindestens einer Ausführungsform ist eine PPU auf einem einzelnen Halbleitersubstrat verkörpert. In mindestens einer Ausführungsform ist eine PPU in einem System auf einem Chip („SoC“) zusammen mit einer oder mehreren anderen Vorrichtungen enthalten, wie z. B. zusätzlichen PPUs, Speicher, einer Reduced-Instruction-Set-Computer(„RISC“)-CPU, einer Speicherverwaltungseinheit („MMU“), einem Digital-Analog-Wandler (digital-to-analog converter - „DAC“) und dergleichen.
-
In mindestens einer Ausführungsform kann eine PPU auf einer Grafikkarte enthalten sein, die eine oder mehrere Speichervorrichtungen beinhaltet. In mindestens einer Ausführungsform kann eine Grafikkarte so konfiguriert sein, dass sie mit einem PCIe-Steckplatz auf einer Hauptplatine eines Desktop-Computers verknüpft ist. In mindestens einer Ausführungsform kann diese PPU eine integrierte Grafikverarbeitungseinheit („iGPU“) sein, die im Chipsatz einer Hauptplatine enthalten ist.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Leaming-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie z. B. ein neuronales Netzwerk, zu trainieren, um dem SM 3600 bereitgestellte Informationen vorherzusagen oder abzuleiten. In mindestens einer Ausführungsform wird der SM 3600 verwendet, um Informationen auf der Grundlage eines trainierten Models des maschinellen Lernens (z. B. eines neuronalen Netzwerks) abzuleiten oder vorherzusagen, das von einem anderen Prozessor oder System oder von dem 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 Netzwerke auszuführen.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
Es werden Ausführungsformen offenbart, die sich auf eine virtualisierte Rechenplattform für weiterentwickelte Datenverarbeitung beziehen, wie z. B. Bildableitung 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 Magnetpartikel-Bildgebung 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 handelt es sich bei 37 um ein beispielhaftes Datenablaufdiagramm für einen Prozess 3700 zur Erzeugung und zum Einsatz einer Bildverarbeitungs- und -ableitungspipeline 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 Vorrichtungsarten in einer oder mehreren Einrichtungen 3702 eingesetzt werden, z. B. in medizinischen Einrichtungen, Krankenhäusern, Gesundheitsinstituten, Kliniken, Forschungs- oder Diagnoselabors usw. In mindestens einer Ausführungsform kann der Prozess 3700 zur Ausführung einer Genomanalyse und - ableitung an Sequenzierungsdaten eingesetzt werden. Beispiele für Genomanalysen, die unter Verwendung der hierin beschriebenen Systeme und Prozesse ausgeführt werden können, beinhalten ohne Einschränkung das Varianten-Calling, die Mutationserkennung und die 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 Implementierung von Modellen des maschinellen Lernens (z. B. neuronale Netzwerke, Objekterkennungsalgorithmen, Algorithmen für maschinelles Sehen usw.) zur Verwendung im Einsatzsystem 3706 auszuführen. In mindestens einer Ausführungsform kann das Einsatzsystem 3706 so konfiguriert sein, dass es Verarbeitungs- und Rechenressourcen in einer verteilten Rechenumgebung auslagert, um die Infrastrukturanforderungen in der Einrichtung 3702 zu reduzieren. In mindestens einer Ausführungsform kann das Einsatzsystem 3706 eine optimierte Plattform für die Auswahl, Anpassung und Implementierung 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 Ausfü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 Anwendungen, die in weiterentwickelten Verarbeitungs- und Ableitungspipelines verwendet werden, Modelle des maschinellen Lernens oder andere KI verwenden, um einen oder mehrere Verarbeitungsschritte auszuführen. In mindestens einer Ausführungsform können Modelle des maschinellen Lernens in der Einrichtung 3702 unter Verwendung von Daten 3708 (wie z. B. Bildgebungsdaten) trainiert werden, die in der Einrichtung 3702 erzeugt wurden (und auf einem oder mehreren Bildarchivierungs- und Kommunikationssystem(Picture Archiving and Communication System - PACS)-Servern in der Einrichtung 3702 gespeichert sind), können sie 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 zur Erzeugung von funktionierenden, einsatzfähigen Modellen des maschinellen Lernens für das Einsatzsystem 3706 bereitzustellen.
-
In mindestens einer Ausführungsform kann eine Modellregistrierungsdatenbank 3724 durch einen Objektspeicher unterstützt werden, der Versionierung und Objekt-Metadaten unterstützen kann. In mindestens einer Ausführungsform kann der Zugriff auf den Objektspeicher z. B. durch eine mit Cloud-Speicher (z. B. eine Cloud 3826 aus 38) kompatible Anwendungsprogrammierschnittstelle (API) aus dem Inneren einer Cloud-Plattform erfolgen. In mindestens einer Ausführungsform können Modelle des maschinellen Lernens innerhalb der Modellregistrierungsdatenbank 3724 von Entwicklern oder Partnern 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 Modell des maschinellen Lernens trainiert oder ein bestehendes Modell des maschinellen Lernen aufweist, das optimiert oder aktualisiert werden muss. In mindestens einer Ausführungsform können Bildgebungsdaten 3708, die von (einer) Bildgebungsvorrichtung(en), Sequenzierungsvorrichtungen und/oder anderen Vorrichtungsarten erzeugt wurden, empfangen werden. In mindestens einer Ausführungsform kann, sobald Bildgebungsdaten 3708 empfangen werden, die KI-gestützte Annotation 3710 verwendet werden, um bei der Erzeugung von Annotationen zu helfen, die den Bildgebungsdaten 3708 entsprechen und als Ground-Truth-Daten für ein Modell des maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform kann die KI-gestützte Annotation 3710 ein oder mehrere Modelle des maschinellen Lernens (z.B. neuronale Faltungsnetzwerke (CNNs)) beinhalten, die so trainiert werden können, dass sie Annotationen erzeugen, die bestimmten Arten von Bildgebungsdaten 3708 (z. B. von bestimmten Vorrichtungen) und/oder bestimmten Arten von Anomalien in Bildgebungsdaten 3708 entsprechen. In mindestens einer Ausführungsform können die KI-gestützten Annotationen 3710 dann direkt verwendet oder mit einem Annotationswerkzeug (z. B. von einem Forscher, Kliniker, Arzt, Wissenschaftler usw.) angepasst oder feinabgestimmt werden, um Ground-Truth-Daten zu erzeugen. In mindestens einer Ausführungsform können in einigen Beispielen markierte 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 KI-gestützten Annotationen 3710, markierten 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 ein Ausgabemodell 3716 bezeichnet werden und kann es vom 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 für die Ausführung einer Vielfalt von unterschiedlichen Ableitungs-Tasks an Bildgebungsdaten trainiert wurden. 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-Bestimmungen, 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 neu trainiert oder aktualisiert werden und ein neu 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 kann als Ausgabemodell 3716 bezeichnet werden - und kann im Einsatzsystem 3706 verwendet werden, um eine 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 in den Populationen, genetischen Variationen, der Robustheit der zum Trainieren eines Modells des maschinellen Lernens verwendeten Trainingsdaten, der Vielfalt der Anomalien der Trainingsdaten und/oder anderer Probleme mit den Trainingsdaten nicht für die in der Einrichtung 3702 erzeugten Bildgebungsdaten 3708 feinabgestimmt oder optimiert sein. In mindestens einer Ausführungsform kann die KI-gestützte Annotation 3710 verwendet werden, um bei der Erzeugung von Annotationen zu helfen, die den Bildgebungsdaten 3708 entsprechen und als Ground-Truth-Daten für das erneute Trainieren oder Aktualisieren eines Modells des maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform können markierte 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. KI-gestützte Annotationen 3710, markierte 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 auszufü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 unterschiedlichen Containern enthalten, 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 Ableitungspipeline ausführen (z. B. Ableitung, Objekterkennung, Merkmalserkennung, Segmentierung, Bildverbesserung, Kalibrierung usw.). In mindestens einer Ausführungsform kann für jede Art von Bildgebungsvorrichtung (z. B. CT, MRT, Röntgen, Ultraschall, Sonografie, Echokardiografie usw.), Sequenzierungsvorrichtung, Radiologievorrichtung, Genomikvorrichtung usw. eine beliebige Anzahl von Containern vorhanden sein, die eine Datenverarbeitungs-Task in Bezug auf Bildgebungsdaten 3708 (oder andere Datenarten, wie zum Beispiel die hierin beschriebenen), die von einer Vorrichtung erzeugt werden, ausführen können. In mindestens einer Ausführungsform kann eine weiterentwickelte Verarbeitungs- und Ableitungspipeline basierend auf der Auswahl unterschiedlicher Container definiert werden, die für die Verarbeitung 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 der Verarbeitung durch eine Pipeline empfangen und konfigurieren (z. B. zur Rückkonvertierung von Ausgaben in eine verwendbare Datenart, wie zum Beispiel Daten der digitalen Bildgebung und Kommunikation in der Medizin (Digital Imaging and Communications in Medicine - DICOM), Radiologieinformationssystem(Radiology Information System - RIS)-Daten, Klinikinformationssystem(Clinical Information System - CIS)-Daten, Daten zum Aufruf einer entfernten Prozedur (Remote Procedure Call - RPC), Daten, die im Wesentlichen mit einer Darstellungsstatusübertragungs(Representation State Transfer - REST)-Schnittstelle 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 nutzen, 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 Ableitungsanforderung (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 Ableitungs-Tasks oder anderen Verarbeitungs-Tasks einer Pipeline ausgefü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 Ableitungsanforderung). 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 Netzwerken, die Ausgabemodelle 3716 des Trainingssystems 3704 enthalten können.
-
In mindestens einer Ausführungsform können die Tasks der Datenverarbeitungspipeline in (einem) Container(n) eingekapselt sein, die jeweils eine diskrete, voll funktionelle Instanziierung einer Anwendung und einer virtualisierten Rechenumgebung darstellen, die in der Lage ist, sich auf Modelle des maschinellen Lernens zu beziehen. 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. Software-Entwickler, Kliniker, Ärzte usw.) Anwendungen (z. B. als Container) zur Ausführung von Bildverarbeitung und/oder -ableitung an zugeführten Daten entwickeln, veröffentlichen und speichern. In mindestens einer Ausführungsform kann die Entwicklung, Veröffentlichung und/oder Speicherung unter Verwendung eines Software-Entwicklungskits (software development kit - SDK) ausgeführt werden, das mit einem System assoziiert ist (um z. B. sicherzustellen, dass eine entwickelte 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 von dem System 3800 validiert wurde (z. B. bezüglich Genauigkeit, Sicherheit, Patientendatenschutz usw.), in einer Container-Registrierungsdatenbank zur Auswahl und/oder Implementation durch einen Benutzer (z. B. ein Krankenhaus, eine Klinik, ein Labor, einen Gesundheitsdienstleister usw.) verfügbar sein, um eine oder mehrere Verarbeitungs-Tasks in Bezug auf Daten in einer Einrichtung (z. B. einer zweiten Einrichtung) eines Benutzers auszuführen.
-
In mindestens einer Ausführungsform können Entwickler dann Anwendungen oder Container über ein Netzwerk für den Zugriff und die Verwendung durch Benutzer eines Systems teilen (z. B. System 3800 aus 38). In mindestens einer Ausführungsform können abgeschlossene und validierte Anwendungen oder Container in einer Container-Registrierungsdatenbank gespeichert werden und können 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 Ableitungs- oder Bildverarbeitungsanforderung bereitstellt - eine Container-Registrierungsdatenbank 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 übermitteln. In mindestens einer Ausführungsform kann eine Anforderung Eingabedaten (und in einigen Beispielen damit assoziierte Patientendaten) enthalten, die zur Ausführung einer Anforderung notwendig sind, und/oder kann eine Auswahl von Anwendung(en) 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) weitergegeben werden, um die Verarbeitung der Datenverarbeitungspipeline auszufü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 Container-Registrierungsdatenbank 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 Arbeitsstation 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 die Dienste 3720 genutzt werden. In mindestens einer Ausführungsform können die Dienste 3720 Rechendienste, Dienste für künstliche Intelligenz (KI), Visualisierungsdienste und/oder andere Dienstarten 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 von Anwendungen aufgerufen oder genutzt werden kann. In mindestens einer Ausführungsform kann die von den Diensten 3720 bereitgestellte Funktionalität dynamisch und effizienter laufen, während sie ebenfalls gut skalierbar ist, indem Anwendungen Daten parallel verarbeiten dürfen (z. B. unter Verwendung einer Parallelrechenplattform 3830 (38)). In mindestens einer Ausführungsform, statt 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 von verschiedenen Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform können die Dienste einen Ableitungsserver oder eine Ableitungs-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 bereitstellt, Modelle des maschinellen Lernens zu trainieren und/oder neu zu trainieren. In mindestens einer Ausführungsform kann ferner ein Datenerweiterungsdienst enthalten sein, der die Extraktion, Größenänderung, Skalierung und/oder sonstige Erweiterung von GPU-beschleunigten Daten (z. B. DICOM, RIS, CIS, REST-konform, RPC, Rohdaten usw.) bereitstellen kann. In mindestens einer Ausführungsform kann ein Visualisierungsdienst verwendet werden, der Bild-Rendering-Effekte - wie zum Beispiel 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, Ableitung, 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 Ableitungsdienst) beinhaltet, können ein oder mehrere Modelle des maschinellen Lernens, die mit einer Anwendung zur Erkennung von Anomalien (z. B. Tumoren, Wachstumsauffälligkeiten, Narbenbildung usw.) assoziiert sind, ausgeführt werden, indem ein Ableitungsdienst (z. B. ein Ableitungsserver) aufgerufen wird (z. B. als ein API-Aufruf), um Modell(e) 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 Ableitungsdienst aufrufen, um Modelle des maschinellen Lernens zur Ausfü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 Ableitungspipeline implementiert, die eine Segmentierungsanwendung und eine Anomalieerkennungsanwendung beinhaltet, optimiert werden, da jede Anwendung denselben Ableitungsdienst zur Ausführung einer oder mehrerer Ableitungs-Tasks aufrufen kann.
-
In mindestens einer Ausführungsform kann die Hardware 3722 GPUs, CPUs, Grafikkarten, ein KI-/Deep-Learning-System (z. B. einen KI-Supercomputer wie das DGX-Supercomputersystem von NVIDIA), eine Cloud-Plattform oder eine Kombination davon beinhalten. In mindestens einer Ausführungsform können unterschiedliche Arten von Hardware 3722 verwendet werden, um eine effiziente, zweckmäßige 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 vor Ort (z. B. in der Einrichtung 3702), in einem KI-/Deep-Learning-System, in einem Cloud-System und/oder in anderen Verarbeitungskomponenten des Einsatzsystems 3706 implementiert werden, um die Effizienz, Genauigkeit und Wirksamkeit von Bildverarbeitung, Bildrekonstruktion, Segmentierung, MRT-Untersuchungen, Schlaganfall- oder Herzinfarkterkennung (z. B. in Echtzeit), Bildqualität beim Rendern usw. zu verbessern. In mindestens einer Ausführungsform kann eine Einrichtung Bildgebungsvorrichtungen, Genomikvorrichtungen, Sequenzierungsvorrichtungen und/oder andere Vorrichtungsarten vor Ort beinhalten, die GPUs nutzen können, um Bildgebungsdaten zu erzeugen, welche die Anatomie eines Probanden darstellen.
-
In mindestens einer Ausführungsform können die Software 3718 und/oder die Dienste 3720 als nicht einschränkende Beispiele für die GPU-Verarbeitung in Bezug auf Deep Learning, maschinelles Lernen und/oder Datenverarbeitung mit hoher Performance optimiert sein. 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 Performance 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 (einem) KI-/Deep-Learning-Supercomputer(n) 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 Orchestrierungssystem (z. B. KUBERNETES) auf mehreren GPUs integrieren, um eine nahtlose Skalierung und Lastverteilung zu ermöglichen.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
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 Ableitungspipelines, 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 sein.
-
In mindestens einer Ausführungsform kann das System 3800 (z. B. das Trainingssystem 3704 und/oder das Einsatzsystem 3706) in einer Cloud-Computing-Umgebung implementiert sein (z. B. unter Verwendung der Cloud 3826). In mindestens einer Ausführungsform kann das System 3800 lokal in Bezug auf eine Einrichtung des Gesundheitswesens oder als eine Kombination aus sowohl Cloud- als auch lokalen Rechenressourcen implementiert sein. In mindestens einer Ausführungsform können in Ausführungsformen, in welchen Cloud Computing implementiert ist, Patientendaten von einer oder mehreren Komponenten des Systems 3800 getrennt oder nicht verarbeitet werden, was die Verarbeitung nicht konform mit HIPAA- und/oder anderen Bestimmungen 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 überprüft oder autorisiert wurden.
-
In mindestens einer Ausführungsform können verschiedene Komponenten des Systems 3800 unter Verwendung beliebiger einer Vielzahl unterschiedlichen Netzwerkarten, einschließlich, aber nicht beschränkt auf, lokale Netzwerke (LANs) und/oder Weitverkehrsnetzwerke (WANs), über drahtgebundene 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 Ableitungsanforderungen, zum Empfangen von Ergebnissen von Ableitungsanforderungen usw.) über einen Datenbus oder Datenbusse, drahtlose Datenprotokolle (Wi-Fi), drahtgebundene Datenprotokolle (z. B. Ethernet) usw. erfolgen.
-
In mindestens einer Ausführungsform kann das Trainingssystem 3704 Trainingspipelines 3804 ausführen, die denjenigen ähneln, 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 neu zu trainieren und/oder ein oder mehrere der vorab trainierten Modelle 3806 zu implementieren (z. B. ohne die Notwendigkeit eines erneuten Trainings oder einer Aktualisierung). In mindestens einer Ausführungsform können als Ergebnis der Trainingspipelines 3804 (ein) Ausgabemodell(e) 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 des DICOM-Adapters 3802A zur Konvertierung von DICOM-Bildern in ein anderes Format, das für die Verarbeitung durch entsprechende Modelle des maschinellen Lernens geeignet ist, wie z. B. das Neuroimaging-Informatics-Technology-Initiative(NIfTI)-Format), KI-gestützte Annotation 3710, Markierung oder Annotation von Bildgebungsdaten 3708, um markierte Klinikdaten 3712 zu erzeugen, Modellauswahl aus einer Modellregistrierungsdatenbank, Modelltraining 3714, Training, erneutes Training oder Aktualisierung von Modellen und/oder andere Verarbeitungsschritte. In mindestens einer Ausführungsform können für unterschiedliche Modelle des maschinellen Lernens, die vom 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, kann 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 kann 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, und zwar in Abhängigkeit davon, was für jedes entsprechende 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 das/die Ausgabemodell(e) 3716 und/oder das/die vorab trainierte(n) Modell(e) 3806 in Abhängigkeit von der Implementation oder Ausführungsform beliebige Arten von Modellen des maschinellen Lernens beinhalten. In mindestens einer Ausführungsform und ohne Einschränkung können durch das System 3800 verwendete Modelle des maschinellen Lernens (ein) Modell(e) 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 Netzwerken (z. B. Autocodierern, faltenden, rekurrenten, Perzeptronen, Lang-/Kurzzeitgedächtnis (Long/Short Term Memory - LSTM), Hopfield, Boltzmann, Deep Belief, entfaltenden, erzeugenden gegnerischen, Flüssigkeitszustandsmaschine usw.) und/oder andere Arten von Modellen des maschinellen Lernens beinhalten.
-
In mindestens einer Ausführungsform können die Trainingspipelines 3804 eine KI-gestützte Annotation enthalten, wie hierin in Bezug auf mindestens 41B detaillierter beschrieben. In mindestens einer Ausführungsform können markierte Klinikdaten 3712 (z. B. traditionelle 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 einer anderen Datenart, die von Modellen des maschinellen Lernens verwendet wird) entsprechende Ground-Truth-Daten vorhanden sein, die vom Trainingssystem 3704 erzeugt werden. In mindestens einer Ausführungsform kann die KI-gestützte Annotation als Teil der Einsatzpipelines 3810 ausgeführt werden; entweder zusätzlich zu oder anstelle der KI-gestützten Annotation, die in den Trainingspipelines 3804 enthalten ist. In mindestens einer Ausführungsform kann das System 3800 eine mehrschichtige Plattform beinhaltet, die eine Software-Schicht (z. B. Software 3718) von Diagnoseanwendungen (oder anderen Anwendungsarten) enthalten kann, die eine oder mehrere medizinische Bildgebungs- und Diagnosefunktionen ausführen kann. In mindestens einer Ausführungsform kann das System 3800 kommunikativ mit (z. B. über verschlüsselte Verknüpfungen) PACS-Servernetzwerken 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 eine andere Datenart, wie zum Beispiel RIS-, CIS-, REST-konforme Daten, RPC-Daten, Rohdaten usw.), um Vorgänge auszuführen, wie zum Beispiel Trainieren von Modellen des maschinellen Lernens, Einsetzen von Modellen des maschinellen Lernens, Bildverarbeitung, Ableitung und/oder andere Vorgänge.
-
In mindestens einer Ausführungsform kann eine Software-Schicht als sichere, verschlüsselte und/oder authentifizierte API implementiert sein, durch die Anwendungen oder Container aus (einer) externen Umgebung(en) (z. B. Einrichtung 3702) ausgewählt (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-, KI- oder Visualisierungs-Tasks auszuführen, die mit den entsprechenden Anwendungen assoziiert sind, und können die Software 3718 und/oder die Dienste 3720 die Hardware 3722 nutzen, um die Verarbeitungs-Tasks auf effektive und effiziente Weise auszufü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 enthalten, die sequentiell, nicht sequentiell oder auf andere Weise an Bildgebungsdaten (und/oder anderen Datenarten) angewendet werden können, die von Bildgebungsvorrichtungen, Sequenzierungsvorrichtungen, Genomikvorrichtungen usw. erzeugt werden - einschließlich KI-gestützter Annotation, wie vorstehend beschrieben. In mindestens einer Ausführungsform, wie hierin beschrieben, kann eine Einsatzpipeline 3810 für eine einzelne Vorrichtung als ein 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 mehr als eine Einsatzpipeline 3810 vorhanden sein, und zwar in Abhängigkeit von Informationen, die von Daten gewünscht sind, die von einer Vorrichtung erzeugt wurden. In mindestens einer Ausführungsform, wenn die Erkennung von Anomalien von einer MRT-Maschine gewünscht ist, kann eine erste Einsatzpipeline 3810 vorhanden sein und, wenn Bildverbesserung von 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 die Einsatzpipelines 3810 verfügbaren Anwendungen eine beliebige Anwendung beinhalten, die für die Ausführung von Verarbeitungs-Tasks 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 Ableitungs-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 entsprechenden 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, aber die von einer Bildgebungsvorrichtung erzeugte Datenart kann sich von einer in einer Anwendung verwendeten Datenart 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 eine andere Datenart (z. B. RIS, CIS, REST-konform, RPC, Rohdaten usw.) innerhalb der Einsatzpipeline 3810 verwendet werden, um Daten in eine Form zu konvertieren, die von einer 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 Ausführung von Faltungen, Farbkorrekturen, Schärfe-, Gamma- und/oder anderen Erweiterungen 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. In mindestens einer Ausführungsform, da sich verschiedene Anwendungen gemeinsame Bildvorgänge teilen können, kann in einigen Ausführungsformen eine Datenerweiterungsbibliothek (z. B. als einer der Dienste 3720) verwendet werden, um diese Vorgänge zu beschleunigen. In mindestens einer Ausführungsform kann zur Vermeidung von Engpässen herkömmlicher Verarbeitungsansätze, die sich auf die CPU-Verarbeitung stützen, die Parallelrechenplattform 3830 zur GPU-Beschleunigung dieser Verarbeitungs-Tasks verwendet werden.
-
In mindestens einer Ausführungsform kann eine Bildrekonstruktionsanwendung eine Verarbeitungs-Task beinhalten, welche die Verwendung eines Modells des maschinellen Lernens 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 Ausfü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 die Nutzung anderer Merkmale des Systems 3800 - wie zum Beispiel der Dienste 3720 und der Hardware 3722 - noch benutzerfreundlicher sein, eine einfachere Integration bereitstellen und genauere, effizientere und fristgerechtere Ergebnisse produzieren.
-
In mindestens einer Ausführungsform kann das Einsatzsystem 3706 eine Benutzerschnittstelle 3814 (z. B. eine grafische Benutzerschnittstelle, eine Webschnittstelle usw.) beinhalten, die verwendet werden kann, um Anwendungen für die Aufnahme in die Einsatzpipeline(s) 3810 auszuwählen, Anwendungen anzuordnen, Anwendungen oder Parameter oder Konstrukte davon zu modifizieren oder zu ändern, die Einsatzpipeline(s) 3810 während der Einrichtung und/oder des Einsatzes zu verwenden und damit 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) zur Auswahl von Modellen für die Verwendung im Einsatzsystem 3706, zur Auswahl von Modellen für das Training oder das erneute Training im Trainingssystem 3704 und/oder zur anderweitigen Interaktion 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 den Anwendungen oder Containern der Einsatzpipeline(s) 3810 und den Diensten 3720 und/oder der 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 zum Dienst 3720 und/oder von Anwendung oder Dienst zur Hardware 3722 erleichtert. In mindestens einer Ausführungsform, obwohl der Veranschaulichung nach in der Software 3718 enthalten, ist dies nicht als einschränkend aufzufassen 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 in 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 der/den Einsatzpipeline(s) 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 kann ein zweiter Benutzer oder Entwickler eine zweite Anwendung separat von einem ersten Benutzer oder Entwickler entwickeln, modifizieren und einsetzen), was es ermöglicht, sich auf eine Task einer einzelnen Anwendung und/oder eines einzelnen Containers/mehrerer Container zu fokussieren und zu konzentrieren, ohne durch Tasks einer anderen Anwendung oder eines anderen Containers/mehrerer Anwendungen oder Container 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. basierend auf Konstrukten von Anwendungen oder Containern), das Anwendungsorchestrierungssystem 3828 und/oder der Pipelineverwalter 3812 die Kommunikation zwischen und unter den Anwendungen oder Containern sowie die gemeinsame Nutzung von Ressourcen zwischen und unter diesen erleichtern. Da eine oder mehrere Anwendungen oder Container in der/den Einsatzpipeline(s) 3810 dieselben 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, verteilen und bestimmen. In mindestens einer Ausführungsform kann ein Planer 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 Planer 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 Planer (und/oder eine andere Komponente des Anwendungsorchestrierungssystems 3828) die Ressourcenverfügbarkeit und -verteilung basierend auf Beschränkungen bestimmen, die einem System auferlegt werden (z. B. Benutzerbeschränkungen), wie z. B. 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 von Anwendungen oder Containern im Einsatzsystem 3706 eingesetzt und gemeinsam genutzt werden, Rechendienste 3816, KI-Dienste 3818, Visualisierungsdienste 3820 und/oder andere Dienstarten beinhalten. In mindestens einer Ausführungsform können Anwendungen einen oder mehrere der Dienste 3720 aufrufen (z. B. ausführen), um Verarbeitungsvorgänge für eine Anwendung auszuführen. In mindestens einer Ausführungsform können die Rechendienste 3816 von Anwendungen genutzt werden, um Super-Computing- oder andere Tasks der Datenverarbeitung mit hoher Performance (high-performance computing - HPC) auszuführen. In mindestens einer Ausführungsform kann/können der/die Rechendienst(e) 3816 genutzt werden, um eine Parallelverarbeitung (z. B. unter Verwendung einer Parallelrechenplattform 3830) zur Verarbeitung von Daten durch eine oder mehrere Anwendungen und/oder eine oder mehrere Tasks einer einzelnen Anwendung im Wesentlichen simultan auszufü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 bereitstellen, um Rechenkernels auszuführen. In mindestens einer Ausführungsform kann die Parallelrechenplattform 3830 einen 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 Zwischenprozesskommunikations(Inter Process Communication - IPC)-Aufrufe für mehrere Container und/oder für mehrere Prozesse innerhalb eines Containers erzeugt werden, um dieselben Daten aus einem gemeinsam genutzten Speichersegment der Parallelrechenplattform 3830 zu verwenden (z. B., wenn mehrere unterschiedliche Stufen einer Anwendung oder mehrere Anwendungen dieselben 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 ein Ergebnis der Verarbeitung zu erzeugen, diese Informationen über einen neuen Ort der 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 die KI-Dienste 3818 genutzt werden, um Ableitungsdienste für die Ausführung von (einem) Modell(en) des maschinellen Lernens auszuführen, die mit Anwendungen assoziiert sind (z. B. mit der Ausführung einer oder mehrerer Verarbeitungs-Tasks einer Anwendung beauftragt). In mindestens einer Ausführungsform können die KI-Dienste 3818 das KI-System 3824 nutzen, um (ein) Modell(e) des maschinellen Lernens (z. B. neuronale Netzwerke wie CNNs) für Segmentierung, Rekonstruktion, Objekterkennung, Merkmalserkennung, Klassifizierung und/oder andere Ableitungs-Tasks auszuführen. In mindestens einer Ausführungsform können die Anwendungen der Einsatzpipeline(s) 3810 eines oder mehrere der Ausgabemodelle 3716 aus dem Trainingssystem 3704 und/oder andere Modelle der Anwendungen verwenden, um Ableitungen an Bildgebungsdaten (z. B. DICOM-Daten, RIS-Daten, CIS-Daten, REST-konformen Daten, RPC-Daten, Rohdaten usw.) auszuführen. In mindestens einer Ausführungsform können zwei oder mehr Beispiele für Ableitungen unter Verwendung des Anwendungsorchestrierungssystems 3828 (z. B. eines Planers) 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 Ausführung von Ableitungen 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 ausgeführt werden kann. In mindestens einer Ausführungsform kann das Anwendungsorchestrierungssystem 3828 Ressourcen (z. B. Dienste 3720 und/oder Hardware 3722) basierend auf Prioritätspfaden für unterschiedliche Ableitungs-Tasks der KI-Dienste 3818 verteilen.
-
In mindestens einer Ausführungsform kann der gemeinsam genutzte Datenspeicher mit den KI-Diensten 3818 innerhalb des Systems 3800 verbunden sein. In mindestens einer Ausführungsform kann der gemeinsam genutzte Datenspeicher als ein Cache (oder eine andere Speichervorrichtungsart) arbeiten und zur Verarbeitung von Ableitungsanforderungen von Anwendungen verwendet werden. In mindestens einer Ausführungsform kann, wenn eine Ableitungsanforderung übermittelt wird, eine Anforderung von einem Satz von API-Instanzen des Einsatzsystems 3706 empfangen werden und können eine oder mehrere Instanzen ausgewählt werden (z. B. für beste Anpassung, für Lastverteilung usw.), um eine Anforderung zu verarbeiten. In mindestens einer Ausführungsform kann zur Verarbeitung einer Anforderung eine Anforderung in eine Datenbank eingegeben werden, kann ein Modell des maschinellen Lernens aus der Modellregistrierungsdatenbank 3724 gefunden werden, wenn es sich nicht bereits in einem Cache befindet, kann ein Validierungsschritt sicherstellen, dass ein geeignetes Modell des maschinellen Lernens in einen Cache (z. B. einen gemeinsam genutzten Datenspeicher) geladen wird, und/oder kann eine Kopie eines Modells in einem Cache gesichert werden. In mindestens einer Ausführungsform kann ein Planer (z. B. des Pipelineverwalters 3812) verwendet werden, um eine Anwendung zu starten, auf die in einer Anforderung verwiesen wird, wenn eine Anwendung nicht bereits läuft oder wenn nicht genügend Instanzen einer Anwendung vorhanden sind. In mindestens einer Ausführungsform kann ein Ableitungsserver gestartet werden, wenn ein Ableitungsserver zur Ausführung eines Modells nicht bereits gestartet ist. In mindestens einer Ausführungsform kann pro Modell eine beliebige Anzahl von Ableitungsservern gestartet werden. In mindestens einer Ausführungsform können in einem Pull-Modell, in dem Ableitungsserver geclustert sind, Modelle gecacht werden, wenn eine Lastverteilung vorteilhaft ist. In mindestens einer Ausführungsform können die Ableitungsserver statisch in entsprechende, verteilte Server geladen werden.
-
In mindestens einer Ausführungsform kann die Ableitung unter Verwendung eines Ableitungsservers ausgeführt werden, der in einem Container läuft. In mindestens einer Ausführungsform kann eine Instanz eines Ableitungsservers mit einem Modell (und optional einer Vielzahl von Versionen eines Modells) assoziiert sein. In mindestens einer Ausführungsform kann, falls eine Instanz eines Ableitungsservers nicht existiert, wenn eine Anforderung zur Ausführung einer Ableitung an einem Modell empfangen wird, eine neue Instanz geladen werden. In mindestens einer Ausführungsform kann beim Starten eines Ableitungsservers ein Modell an einen Ableitungsserver weitergegeben werden, sodass derselbe Container zur Bedienung unterschiedlicher Modelle verwendet werden kann, solange der Ableitungsserver als eine andere Instanz läuft.
-
In mindestens einer Ausführungsform kann während der Anwendungsausführung eine Ableitungsanforderung für eine gegeben Anwendung empfangen werden und kann ein Container (der z. B. eine Instanz eines Ableitungsservers hostet) geladen werden (falls nicht bereits geschehen) und kann eine Startprozedur aufgerufen werden. In mindestens einer Ausführungsform kann die Vorverarbeitungslogik in einem Container eingehende Daten laden, decodieren und/oder eine beliebige zusätzliche Vorverarbeitung an diesen durchführen (z. B. unter Verwendung von CPU(s) und/oder GPU(s)). In mindestens einer Ausführungsform kann ein Container, sobald die Daten für die Ableitung vorbereitet sind, die Ableitung nach Bedarf an den Daten ausführen. In mindestens einer Ausführungsform kann dies einen einzelnen Ableitungsaufruf an einem Bild (z. B. ein Handröntgenbild) beinhalten oder eine Ableitung für Hunderte von Bildern (z. B. ein Brust-CT) erfordern. In mindestens einer Ausführungsform kann eine Anwendung die Ergebnisse vor dem Abschluss zusammenfassen, was ohne Einschränkung eine einzelne Konfidenzbewertung, eine Segmentierung auf Pixellevel, eine Segmentierung auf Voxellevel, die Erzeugung einer Visualisierung oder die Erzeugung von Text zur Zusammenfassung von Befunden beinhalten kann. In mindestens einer Ausführungsform können unterschiedlichen Modellen oder Anwendungen unterschiedliche Prioritäten zugewiesen werden. Zum Beispiel können einige Modelle eine Echtzeitpriorität (TAT weniger als eine Minute) aufweisen, während andere eine niedrigere Priorität aufweisen (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 Partnernetzwerks sowie die Ausführung auf einem Ableitungsdienst beinhalten.
-
In mindestens einer Ausführungsform kann die Übertragung von Anforderungen zwischen den Diensten 3720 und den Ableitungsanwendungen hinter einem Software-Entwicklungskit (SDK) verborgen sein und kann der robuste Transport über 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öglicht, die Arbeit aufzunehmen, sobald sie verfügbar wird. In mindestens einer Ausführungsform können die Ergebnisse durch eine Warteschlange zurück übertragen 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 Aufgaben 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 kann ein Ableitungsdienst die Ableitung auf einer GPU ausführen.
-
In mindestens einer Ausführungsform können die Visualisierungsdienste 3820 genutzt werden, um Visualisierungen zur Ansicht von Ausgaben von Anwendungen und/oder Einsatzpipeline(s) 3810 zu erzeugen. In mindestens einer Ausführungsform können die GPUs 3822 von den Visualisierungsdiensten 3820 genutzt werden, um Visualisierungen zu erzeugen. In mindestens einer Ausführungsform können Rendering-Effekte, wie z. B. Strahlverfolgung, von den Visualisierungsdiensten 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-Tomographiescheiben, 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, Cinematics- 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, das KI-System 3824, die Cloud 3826 und/oder eine 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 für die Ausführung von Verarbeitungs-Tasks von Rechendiensten 3816, KI-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 beispielsweise verwendet werden, um eine Vorverarbeitung von Bildgebungsdaten (oder anderen Datenarten, die von Modellen des maschinellen Lernens verwendet werden), eine Nachverarbeitung der Ausgaben der Modelle des maschinellen Lernens und/oder eine Ausführung von Ableitungen (z. B. zur Ausführung von Modellen des maschinellen Lernens) auszuführen. In mindestens einer Ausführungsform können die Cloud 3826, das KI-System 3824 und/oder andere Komponenten des Systems 3800 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 KI-System 3824 GPUs verwenden und kann die Cloud 3826 - oder zumindest ein Abschnitt, der mit Deep Learning oder Ableitungen beauftragt ist - unter Verwendung eines oder mehrerer KI-Systeme 3824 ausgeführt werden. Daher, obwohl es sich bei der Hardware 3722 der Veranschaulichung nach um diskrete Komponenten handelt, ist dies nicht als Einschränkung zu verstehen und beliebige Komponenten der Hardware 3722 können mit beliebigen anderen Komponenten der Hardware 3722 kombiniert oder von diesen genutzt werden.
-
In mindestens einer Ausführungsform kann das KI-System 3824 ein speziell entwickeltes Rechensystem (z. B. einen Supercomputer oder einen HPC) beinhalten, das für Ableitungen Deep Learning, maschinelles Lernen und/oder andere Tasks der künstlichen Intelligenz konfiguriert ist. 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 KI-basierten Verarbeitungs-Tasks des Systems 3800 auszuführen.
-
In mindestens einer Ausführungsform kann die Cloud 3826 eine GPU-beschleunigte Infrastruktur (z. B. NGC von NVIDIA) beinhalten, die eine GPU-optimierte Plattform für die Ausführung von Verarbeitungs-Tasks des Systems 3800 bereitstellen kann. In mindestens einer Ausführungsform kann die Cloud 3826 (ein) KI-System(e) 3824 zur Ausführung einer 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 nutzt, 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 kleine und große Batch-Ableitungen ausführen (z. B. die 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 qualitativ hochwertigere Cinematics zu erzeugen) und/oder kann sie 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 -akten außerhalb der eigenen Räumlichkeiten verwendet werden sollen), eine Registrierungsdatenbank beinhalten - wie z. B. eine Deep-Learning-Container-Registrierungsdatenbank. In mindestens einer Ausführungsform kann eine Registrierungsdatenbank Container für Instanziierungen von Anwendungen speichern, die Vorverarbeitungs-, Nachverarbeitungs- oder andere Verarbeitungs-Tasks an Patientendaten ausfü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 Datenbestimmen gewahrt.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
39 beinhaltet eine beispielhafte Veranschaulichung einer Einsatzpipeline 3810A zur Verarbeitung 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 Einsatzpipeline(s) 3810A 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 einer Einsatzpipeline 3810A, die von einem konkreten Benutzer (oder einem 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 3810A für einen CT-Scanner 3902 - beispielsweise aus einer Container-Registrierungsdatenbank - eine oder mehrere Anwendungen auswählen, die spezifische Funktionen oder Tasks in Bezug auf die vom CT-Scanner 3902 erzeugten Bildgebungsdaten ausführen. In mindestens einer Ausführungsform können Anwendungen auf die Einsatzpipeline 3810A als Container angewendet werden, welche die Dienste 3720 und/oder die Hardware 3722 des Systems 3800 nutzen 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 das DICOM-Lesegerät 3906 in der Einsatzpipeline 3810A verwendet werden, um Daten für die Verwendung durch die CT-Rekonstruktion 3908, die 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 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 vom System 3800 die Anwendungen auswählen, die ein Benutzer möchte, um die Verarbeitung an diesen Daten für diese Anforderung auszuführen. In mindestens einer Ausführungsform kann die Einsatzpipeline 3810A in einem beliebigen Intervall angepasst 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 aus 39 einen CT-Scanner 3902 beinhalten, der Bildgebungsdaten eines Patienten oder Probanden erzeugt. In mindestens einer Ausführungsform können die Bildgebungsdaten des CT-Scanners 3902 auf (einem) PACS-Server(n) 3904 gespeichert werden, die mit einer Einrichtung assoziiert sind, in der sich der CT-Scanner 3902 befindet. Der/die PACS-Server 3904 kann/können Software- und/oder Hardware-Komponenten beinhalten, die direkt mit den Bildgebungsmodalitäten (z. B. dem CT-Scanner 3902) in einer Einrichtung verknüpft sein 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 (einem) PACS-Server(n) 3904 für die Verwendung durch die Einsatzpipeline 3810A helfen. In mindestens einer Ausführungsform kann der Pipeline-Manager 3812 nach der Verarbeitung der DICOM-Daten durch den DICOM-Adapter 3802B die Daten an die Einsatzpipeline 3810A routen. 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 extrahierte Arbeitsdateien 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 die Extraktion und/oder Speicherung 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 und/oder der Container für die CT-Rekonstruktion 3908 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 die 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 ist, die Anwendung und/oder der Container für die Organsegmentierung 3910 vom 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 Ableitung geeignetes Format konvertieren (z. B. eine Bilddatei in eine Eingabeauflösung eines Modells des maschinellen Lernens konvertieren) und die Ableitung gegen ein normalisiertes Bild ausführen. In mindestens einer Ausführungsform, um die Ableitung an einem normalisierten Bild auszuführen, kann sich die Anwendung und/oder der Container für die Organsegmentierung 3910 auf die Dienste 3720 stützen und kann der Pipelineverwalter 3812 und/oder das Anwendungsorchestrierungssystem 3828 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 nutzen, um Ableitung an einem normalisierten Bild auszuführen, und können die KI-Dienste 3818 die Hardware 3722 (z. B. das KI-System 3824) nutzen, um die KI-Dienste 3818 auszuführen. In mindestens einer Ausführungsform kann ein Ergebnis einer Ableitung 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 den DICOM-Schreiber 3912 ausführen, um die Ergebnisse aus einem Cache (oder einer anderen Speichervorrichtung) zu lesen, die Ergebnisse in ein DICOM-Format zu verpacken (z. B. als DICOM-Ausgabe 3914), damit sie von den Benutzern in einer Einrichtung, die eine Anforderung erzeugt hat, verwendet werden können. 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 dem/den PACS-Server(n) 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 konsekutive Anwendung in der Einsatzpipeline 3810A veranschaulicht, können die Anwendungen für die CT-Rekonstruktion 3908 und die 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 die Daten für jede Anwendung verfügbar sind (z. B. nachdem das DICOM-Lesegerät 3906 die Daten extrahiert hat), können die 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 Planer des Systems 3800 zur Lastverteilung und zur Verteilung von Rechen- oder Verarbeitungsressourcen zwischen und unter verschiedenen Anwendungen verwendet werden. In mindestens einer Ausführungsform kann die Parallelrechenplattform 3830 zur Ausführung von Parallelverarbeitung von Anwendungen verwendet werden, um die Laufzeit der Einsatzpipeline 3810A zu verkürzen und 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, KI, 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 von (einer) Vorrichtung(en) 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, z. B. durch Nutzung von Modellen des maschinellen Lernens, um einem System containerisierte Ableitungsunterstü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, wenn z. B. 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 Container-Registrierungsdatenbank) ausgewählt werden können (z. B. auf einer Pro-Anforderung-Basis).
-
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 Rechensystem, das neben einer Radiologievorrichtung, einer Bildgebungsvorrichtung und/oder einer anderen Vorrichtungsart in einer Einrichtung oder anderweitig in Kommunikation damit eingesetzt wird. In mindestens einer Ausführungsform kann jedoch eine Vor-Ort-Installation in einem Rechensystem einer Vorrichtung selbst (z. B. einem in eine Bildgebungsvorrichtung integrierten Rechensystem), in einem lokalen Rechenzentrum (z. B. einem Rechenzentrum vor Ort) 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 von einem Supercomputer oder einem anderen 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. HF über Ethernet) für die Echtzeitverarbeitung ermöglichen. In mindestens einer Ausführungsform kann die Echtzeit- oder echtzeitnahe Verarbeitung 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 Netzwerke 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 Rechensystem einen Teil der oder die gesamte hierin beschriebene Hardware 3722 beinhalten und kann die Hardware 3722 auf beliebige einer Reihe von Weisen verteilt sein, einschließlich innerhalb einer Vorrichtung, als Teil einer Rechenvorrichtung, die mit einer Vorrichtung gekoppelt ist und sich in der Nähe einer Vorrichtung befindet, in einem lokalen Rechenzentrum in einer Einrichtung und/oder in der Cloud 3826. Da das Einsatzsystem 3706 und die damit assoziiert 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 der virtuellen Instrumente sowie die von den virtuellen Instrumenten erzeugten Ausgaben nach Wunsch modifiziert oder angepasst werden, ohne dass die Rohausgabe einer Vorrichtung, die ein virtuelles Instrument unterstützt, geändert oder verändert werden muss.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
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 nutzen. 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 nutzen. 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 B ildgebungsdaten auf dem/den PACS-Server(n) in einem DICOM-Format (oder einem anderen Format, wie z. B. RIS, CIS, REST-konform, RPC, Rohdaten usw.) gespeichert sein und vom 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 angepasst wurde. In mindestens einer Ausführungsform können die Bildgebungsdaten direkt von einer Bildgebungsvorrichtung (z. B. Ultraschallvorrichtung 4002) empfangen und von einem virtuellen 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 einen Dienst 3720 (z. B. als einen des Rechendienstes/der Rechendienste 3816) nutzen, um Daten zu extrahieren, deren Größe anzupassen, neu zu skalieren und/oder anderweitig für die Verwendung durch Anwendungen oder Container vorzubereiten.
-
In mindestens einer Ausführungsform kann, sobald die Daten vorbereitet sind, eine Anwendung und/oder ein Container für die Rekonstruktion 4006 ausgeführt werden, um die Daten von 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 für die Erkennung 4008 zur Anomalieerkennung, zur Objekterkennung, zur Merkmalserkennung und/oder zu anderen Erkennungs-Tasks in Bezug auf die 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 für die Erkennung 4008 eine Ableitungs-Engine 4016 (z. B. als einen des KI-Dienstes/der KI-Dienste 3818) nutzen, um eine Ableitung an Daten auszuführen, um Erkennungen zu erzeugen. In mindestens einer Ausführungsform können ein oder mehrere Modelle des maschinellen Lernens (z. B. vom Trainingssystem 3704) von der Anwendung für die Erkennung 4008 ausgeführt oder aufgerufen werden.
-
In mindestens einer Ausführungsform können nach Abschluss der Rekonstruktion 4006 und/oder der Erkennung 4008 die von diesen Anwendungen und/oder Containern ausgegebenen Daten verwendet werden, um Visualisierungen 4010 zu erzeugen, wie z.B. eine 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 Rendering-Komponente 4018 des Systems 3800 (z. B. einer des Visualisierungsdienstes/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.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
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 nutzen. 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 nutzen. 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 beinhalten, dass der CT-Scanner 4022 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 (instanziiert durch die Einsatzpipeline 3810C) eine erste Echtzeitpipeline zur Überwachung eines Patienten (z. B. Patientenbewegungserkennungs-KI 4026) und/oder zur Anpassung oder Optimierung 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 nutzen, wie z. B. den/die KI-Dienst(e) 3818. In mindestens einer Ausführungsform können die Ausgaben der Anwendung (oder des Containers) für die Belichtungssteuer-KI 4024 und/oder der Anwendung (oder des Containers) für die Patientenbewegungserkennungs-KI 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) anzupassen und/oder einen Patienten zu informieren, sich weniger zu bewegen.
-
In mindestens einer Ausführungsform kann die Einsatzpipeline 3810C eine Nicht-Echtzeitpipeline 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 die Groberkennungs-KI 4028, eine Anwendung und/oder einen Container für die Feinerkennungs-KI 4032 (wenn z. B. bestimmte Ergebnisse durch die Groberkennungs-KI 4028 erkannt werden), eine Anwendung und/oder einen Container für die Visualisierung 4030 und eine Anwendung und/oder einen Container für den DICOM-Schreiber 3912 (und/oder einen Schreiber für eine andere Datenart, z. B. RIS, CIS, REST-konform, RPC, Rohdaten usw.) beinhalten. In mindestens einer Ausführungsform können die vom CT-Scanner 4022 erzeugten Rohdaten durch die Pipelines der Einsatzpipeline 3810C (instanziiert als ein virtuelles CT-Instrument) geleitet werden, um Ergebnisse zu erzeugen. In mindestens einer Ausführungsform können die Ergebnisse des DICOM-Schreibers 3912 zur Anzeige übertragen und/oder auf dem/den PACS-Server(n) 3904 zum/zur späteren Abruf, Analyse oder Anzeige durch einen Techniker, eine Fachkraft oder anderen Benutzer gespeichert werden.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
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 nutzen, 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 erneute Trainieren oder Aktualisieren eines anfänglichen Modells 4104 (z. B. eines vorab trainierten Modells) unter Verwendung neuer Trainingsdaten (z. B. neuer Eingabedaten, wie z. B. des Kundendatensatzes 4106, und/oder neuer, mit den Eingabedaten assoziierter Ground-Truth-Daten) beinhalten. In mindestens einer Ausführungsform können zum erneuten Trainieren oder Aktualisieren des anfänglichen Modells 4104 die Ausgabe- oder Verlustschicht(en) des anfänglichen Modells 4104 zurückgesetzt oder gelöscht und/oder durch (eine) aktualisierte oder neue Ausgabe- oder Verlustschicht(en) ersetzt werden. In mindestens einer Ausführungsform kann das anfängliche Modell 4104 bereits fein abgestimmte Parameter (z. B. Gewichtungen und/oder Neigungen) aufweisen, die von einem früheren Training übriggeblieben sind, sodass das Training oder das erneute Training 3714 nicht so lange dauert oder so viel Verarbeitung erfordert 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 Verlustschicht(en) des anfänglichen Modells 4104 die Parameter aktualisiert und für einen neuen Datensatz neu abgestimmt werden, und zwar basierend auf Verlustberechnungen, die mit der Genauigkeit der Ausgabe- oder Verlustschicht(en) bei der Erzeugung von Vorhersagen an einem neuen Kundendatensatz 4106 (z. B. Bilddaten 3708 aus 37) assoziiert sind.
-
In mindestens einer Ausführungsform können die vorab trainierten Modelle 3806 in einem Datenspeicher oder einer Registrierungsdatenbank (z. B. der Modellregistrierungsdatenbank 3724 aus 37) gespeichert sein. 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 vor Ort unter Verwendung von Kunden- oder Patientendaten, die vor Ort 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) übertragen werden, von diesen 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 individuell für jede Einrichtung trainiert worden sein, bevor es an Patienten- oder Kundendaten einer anderen Einrichtung trainiert wird. In mindestens einer Ausführungsform, z. B., wenn Kunden- oder Patientendaten vom Datenschutz befreit 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 vor Ort und/oder außerhalb der eigenen Räumlichkeiten zu trainieren, z.B. 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 den Einsatzpipelines 3810 auch Modelle des maschinellen Lernens auswählen, die für spezifische Anwendungen verwendet werden sollen. In mindestens einer Ausführungsform kann ein Benutzer über kein Modell zur Verwendung verfügen, sodass ein Benutzer ein vorab trainiertes Modell 3806 zur Verwendung 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 für den Kundendatensatz 4106 einer Einrichtung eines Benutzers zu erzeugen (z. B. basierend auf der Patientenvielfalt, der Demografie, den Arten der verwendeten medizinischen Bildgebungsvorrichtungen usw.). In mindestens einer Ausführungsform kann das vorab trainierte Modell 3806 vor dem Einsatz des vorab trainierten Modells 3806 in der Einsatzpipeline 3810 zur Verwendung mit (einer) Anwendung(en) für die Verwendung in einer entsprechenden Einrichtung aktualisiert, neu trainiert und/oder fein abgestimmt werden.
-
In mindestens einer Ausführungsform kann ein Benutzer ein vorab trainiertes Modell 3806 auswählen, das aktualisiert, neu trainiert und/oder fein abgestimmt werden soll, und das vorab trainierte Modell 3806 kann als anfängliches Modell 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 Datenarten, die von 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 ein verfeinertes Modell 4112 zu erzeugen. In mindestens einer Ausführungsform können die Ground-Truth-Daten, die dem Kundendatensatz 4106 entsprechen, vom Trainingssystem 3704 erzeugt werden. In mindestens einer Ausführungsform können die Ground-Truth-Daten mindestens teilweise von Klinikern, Wissenschaftlern, Ärzten, Fachkräften in einer Einrichtung erzeugt werden (z. B. als markierte Klinikdaten 3712 aus 37).
-
In mindestens einer Ausführungsform kann die KI-gestützte Annotation 3710 in einigen Beispielen 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 Netzwerke) nutzen, 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 KI-gestü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 können die Ground-Truth-Daten 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, in einer oder mehreren Einsatzpipelines 3810 in einer Einrichtung zur Ausführung einer oder mehrerer Verarbeitungs-Tasks in Bezug auf medizinische Bildgebungsdaten eingesetzt werden.
-
In mindestens einer Ausführungsform kann das verfeinerte Modell 4112 in die vorab trainierten Modellen 3806 in der Modellregistrierungsdatenbank 3724 hochgeladen werden, um von einer anderen Einrichtung ausgewählt zu werden. In mindestens einer Ausführungsform kann dieser Prozess an 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.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
41B 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 KI-gestützten Annotationswerkzeuge 4136 basierend auf einer Client-Server-Architektur 4132 instanziiert werden. In mindestens einer Ausführungsform können die Annotationswerkzeuge 4136 in Bildgebungsanwendungen beispielsweise Radiologen bei der Identifizierung von Organen und Anomalien unterstützen. In mindestens einer Ausführungsform können die Bildgebungsanwendungen Software-Werkzeuge beinhalten, die dem Benutzer 4110 helfen, als nicht einschränkendes Beispiel einige Extrempunkte auf 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, wenn die Rechenvorrichtung 4108 Extrempunkte für die KI-gestützte Annotation 3710 sendet, ein Deep-Learning-Modell diese Daten zum Beispiel als Eingabe empfangen und Ableitungsergebnisse eines segmentierten Organs oder einer Auffälligkeit zurückgeben. In mindestens einer Ausführungsform können vorab instanziierte Annotationswerkzeuge, wie z. B. das KI-gestützte Annotationswerkzeug 4136B in 41B, durch API-Aufrufe (z. B. API-Aufruf 4144) an einen Server, wie z. B. einen Annotationsassistenzserver 4140, erweitert werden, der einen Satz von vorab trainierten Modellen 4142 beinhalten kann, der z. B. 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 unter Verwendung von Trainingspipelines 3804 weiter aktualisiert werden. In mindestens einer Ausführungsform können die vorab installierten Annotationswerkzeuge im Verlauf der Zeit verbessert werden, wenn neue markierte Klinikdaten 3712 hinzugefügt werden.
-
Die Ableitungs- und/oder Trainingslogik 815 wird verwendet, um Ableitungs- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Ableitungs- und/oder Trainingslogik 815 sind hierin in Verbindung mit den 8A und/oder 8B bereitgestellt.
-
In mindestens einer Ausführungsform wird die Ableitungs- und/oder Trainingslogik 815 verwendet, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf separaten Rechenressourcen unter Verwendung einer Ausgabe einer vorangehenden Schicht eines oder mehrerer neuronaler Netzwerk ausgeführt werden. In mindestens einer Ausführungsform stellt die Ableitungs- und/oder Trainingslogik 815 Ergebnisse der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereit, indem bestimmt wird, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
-
Mindestens eine Ausführungsform der Offenbarung kann im Hinblick auf die folgenden Sätze beschrieben werden:
- 1. Prozessor, umfassend:
- eine oder mehrere Schaltungen, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf von einer vorangehenden Schicht des einen oder der mehreren neuronalen Netzwerke separaten Rechenressourcen ausgeführt werden, mindestens teilweise basierend darauf, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
- 2. Prozessor nach Satz 1, ferner umfassend:
- der eine oder die mehreren Schaltungen zum:
- Modifizieren des einen oder der mehreren neuronalen Netzwerke, um das Ausmaß von Abhängigkeiten zwischen den Schichten des einen oder der mehreren neuronalen Netzwerke zu reduzieren; und
- Partitionieren des zu trainierenden modifizierten neuronalen Netzwerks unter Verwendung von Pipeline-Parallelität durch:
- Kopieren von Daten aus einer Komponente des einen oder der mehreren neuronalen Netzwerk von einer Rechenressource zu einer anderen Rechenressource, wobei die Rechenressource, von der die Daten kopiert werden, die von den Daten abhängige Komponente des einen oder der mehreren neuronalen Netzwerke ausführt und die andere Rechenressource, zu der die Daten kopiert werden, eine andere von den Daten abhängige Komponente des einen oder der mehreren neuronalen Netzwerke ausführt.
- 3. Prozessor nach Satz 1, wobei die gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll und ferner Folgendes umfasst:
- Bestimmen, dass die zwei oder mehr nachfolgenden Schichten von der Ausgabe der vorangehenden Schicht abhängig sind;
- Kopieren der Ausgabe der vorangehenden Schicht; und
- Bereitstellen der Ausgabe der vorangehenden Schicht für eine erste nachfolgende Schicht der zwei oder mehr nachfolgenden Schichten und einer kopierten Ausgabe für eine zweite nachfolgende Schicht der zwei oder mehr nachfolgenden Schichten.
- 4. Prozessor nach Satz 3, wobei beide der zwei weiteren nachfolgenden Schichten mindestens einen Codierer in der ersten nachfolgenden Schicht und einen Decodierer in der zweiten nachfolgenden Schicht umfassen.
- 5. Prozessor nach einem der Sätze 3 4, wobei die Ausgabe dem Codierer in der ersten nachfolgenden Schicht bereitgestellt wird und die kopierte Ausgabe dem Decodierer in der zweiten nachfolgenden Schicht bereitgestellt wird.
- 6. Prozessor nach einem der Sätze 3-5, wobei die erste nachfolgende Schicht von dem Prozessor ausgeführt werden soll und die zweite nachfolgende Schicht von einem anderen Prozessor ausgeführt werden soll.
- 7. Prozessor nach Satz 1, ferner umfassend:
- die eine oder die mehreren Schaltungen, um zu bewirken, dass beide der zwei oder mehr nachfolgenden Schichten des einen oder der mehreren neuronalen Netzwerke zur gleichen Zeit unter Verwendung derselben Ausgabe der vorangehenden Schicht ausgeführt werden.
- 8. Prozessor nach Satz 1, wobei die separaten Rechenressourcen Folgendes umfassen:
- Grafikverarbeitungseinheiten (GPUs), Parallelverarbeitungseinheiten (PPUs), Computersysteme, Pipelines, Multiprozessoren, andere Schaltungen eines anderen Prozessors und/oder andere Schaltungen desselben Prozessors.
- 9. System, umfassend:
- einen oder mehrere Computer mit einem oder mehreren Prozessoren, um zu bewirken, dass zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf von einer vorherigen Schicht des einen oder der mehreren neuronalen Netzwerke separaten Rechenressourcen ausgeführt werden, mindestens teilweise basierend darauf, ob eine gleiche Ausgabe der vorherigen Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
- 10. System nach Satz 9, wobei die vorherige Schicht eine Schicht des einen oder der mehreren neuronalen Netzwerke umfasst, die vor beiden der zwei oder mehr nachfolgenden Schichten ausgeführt wird.
- 11. System nach Satz 9, wobei die gleiche Ausgabe der vorherigen Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll und ferner Folgendes umfasst:
- Erzeugen einer duplizierten Kopie der Ausgabe der vorherigen Schicht; und
- Bereitstellen der duplizierten Kopie für eine der zwei oder mehr nachfolgenden Schichten.
- 12. System nach Satz 9, wobei die vorherige Schicht einen Codierer umfasst und beide der zwei oder mehr nachfolgenden Schichten einen zweiten Codierer in einer ersten nachfolgenden Schicht und einen Decodierer in einer zweiten nachfolgenden Schicht umfassen.
- 13. System nach Satz 9, ferner umfassend den einen oder die mehreren Computer mit einem oder mehreren Prozessoren zum Modifizieren eines parallelen Blocks aus dem einen oder den mehreren neuronalen Netzwerken, um eine Abhängigkeit innerhalb des parallelen Blocks zu entfernen.
- 14. System nach Satz 9, ferner umfassend den einen oder die mehreren Computer mit einem oder mehreren Prozessoren zum Trainieren des einen oder der mehreren neuronalen Netzwerke, indem Abhängigkeiten der Ausgabe der vorherigen Schicht mit den zwei oder mehr nachfolgenden Schichten reduziert werden.
- 15. System nach Satz 9, ferner umfassend den einen oder die mehreren Computer mit einem oder mehreren Prozessoren zum Trainieren des einen oder der mehreren neuronalen Netzwerke, um eine Segmentierung eines medizinischen Bilds auszuführen.
- 16. System nach Satz 9, ferner umfassend den einen oder die mehreren Computer mit einem oder mehreren Prozessoren zum Partitionieren des einen oder der mehreren zu trainierenden neuronalen Netzwerke unter Verwendung von Pipeline-Parallelität.
- 17. Maschinenlesbares Medium, auf dem ein Satz von Anweisungen gespeichert ist, der bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren dazu veranlasst, zwei oder mehr nachfolgende Schichten eines oder mehrerer neuronaler Netzwerke auf von einer vorhergehenden Schicht des einen oder der mehreren neuronalen Netzwerke separaten Rechenressourcen auszuführen, mindestens teilweise basierend darauf, ob eine gleiche Ausgabe der vorhergehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
- 18. Maschinenlesbares Medium nach Satz 17, wobei der Satz von Anweisungen bei Ausführung durch den einen oder die mehreren Prozessoren den einen oder die mehreren Prozessoren ferner veranlasst zum:
- Modifizieren des einen oder der mehreren neuronalen Netzwerke durch Modifizieren eines ersten parallelen Blocks, um das Ausmaß der Abhängigkeiten zwischen Schichten des ersten parallelen Blocks zu reduzieren; und
- Partitionieren des zu trainierenden modifizierten neuronalen Netzwerks unter Verwendung von Pipeline-Parallelität.
- 19. Maschinenlesbares Medium nach einem der Sätze 17-18, wobei der Satz von Anweisungen bei Ausführung durch den einen oder die mehreren Prozessoren den einen oder die mehreren Prozessoren ferner veranlasst zum Erzeugen eines zweiten parallelen Blocks, wobei Schichten in dem zweiten parallelen Block durch eine andere Rechenressource als Schichten in dem ersten parallelen Block ausgeführt werden sollen.
- 20. Maschinenlesbares Medium nach einem der Sätze 17-19, wobei der Satz von Anweisungen bei Ausführung durch den einen oder die mehreren Prozessoren den einen oder die mehreren Prozessoren ferner veranlasst zum Kopieren von Daten aus einer Komponente des einen oder der mehreren neuronalen Netzwerke von dem ersten parallelen Block zu dem zweiten parallelen Block, sodass die andere Rechenressource eine andere Komponente des einen oder der mehreren neuronalen Netzwerke unter Verwendung der kopierten Daten ausführt.
- 21. Maschinenlesbares Medium nach einem der Sätze 17-20, wobei die Ausgabe der vorhergehenden Schicht aus dem ersten parallelen Block einem zweiten Codierer in der ersten der zwei oder mehr nachfolgenden Schichten bereitgestellt wird und eine Kopie der Ausgabe dem Decodierer in dem zweiten parallelen Block bereitgestellt wird.
- 22. Maschinenlesbares Medium nach Satz 17, wobei der Satz von Anweisungen bei Ausführung durch den einen oder die mehreren Prozessoren den einen oder die mehreren Prozessoren ferner veranlasst zum Bewirken, dass beide der zwei oder mehr nachfolgenden Schichten des einen oder der mehreren neuronalen Netzwerke gleichzeitig unter Verwendung der gleichen Ausgabe der vorhergehenden Schicht ausgeführt werden.
- 23. Maschinenlesbares Medium nach Satz 17, wobei der Satz von Anweisungen bei Ausführung durch den einen oder die mehreren Prozessoren den einen oder die mehreren Prozessoren ferner veranlasst zum Trainieren des einen oder der mehreren neuronalen Netzwerke unter Verwendung einer Kombination aus Trainingsdaten-Parallelität und Modellparallelität.
- 24. Prozessor, umfassend:
- eine oder mehrere Schaltungen zum Verwenden eines neuronalen Netzwerks, um Informationen abzuleiten, wobei das neuronale Netzwerk trainiert wird, indem bewirkt wird, dass zwei oder mehr nachfolgende Schichten des neuronalen Netzwerks auf von einer vorangehenden Schicht des neuronalen Netzwerks separaten Rechenressourcen ausgeführt werden, mindestens teilweise basierend darauf, ob eine gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
- 25. Prozessor nach Satz 24, wobei die separaten Rechenressourcen einen ersten Prozessor und einen zweiten Prozessor umfassen.
- 26. Prozessor nach Satz 25, wobei die gleiche Ausgabe der vorangehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll und ferner Erzeugen einer Kopie der Ausgabe der vorangehenden Schicht und Bereitstellen der erzeugten Kopie für einen Decodierer umfasst, der durch den zweiten Prozessor ausgeführt werden soll.
- 27. Prozessor nach Satz 26, wobei die Ausgabe der vorangehenden Schicht einem Codierer bereitgestellt wird, der durch den ersten Prozessor ausgeführt werden soll.
- 28. Prozessor nach Satz 24, ferner umfassend:
- die eine oder die mehreren Schaltungen zum Verwenden des neuronalen Netzwerks, um Informationen abzuleiten, wobei das neuronale Netzwerk trainiert wird, indem bewirkt wird, dass beide der zwei oder mehr nachfolgenden Schichten des neuronalen Netzwerks zur gleichen Zeit unter Verwendung der gleichen Ausgabe der vorangehenden Schicht ausgeführt werden.
- 29. Prozessor nach Satz 24, wobei das neuronale Netzwerk ein neuronales Faltungsnetzwerk ist.
- 30. Prozessor nach Satz 24, ferner umfassend:
- die eine oder die mehreren Schaltungen zum Trainieren des neuronalen Netzwerks, indem das neuronale Netzwerk so modifiziert wird, dass Abhängigkeiten zwischen Schichten, die von einer Rechenressource ausgeführt werden sollen, reduziert werden, indem die gleiche Ausgabe für zwei oder mehr nachfolgende Schichten bereitgestellt wird, die von verschiedenen Rechenressourcen ausgeführt werden sollen, wobei die zwei oder mehr nachfolgenden Schichten von Daten aus einer vorangehenden Schicht abhängig sind, die von der Rechenressource ausgeführt wird.
- 31. Prozessor nach Satz 30, ferner umfassend:
- die eine oder die mehreren Schaltungen zum Verwenden des neuronalen Netzwerks, um Informationen abzuleiten, wobei das modifizierte neuronale Netzwerk unter Verwendung von Pipeline-Parallelität trainiert werden soll.
- 32. Prozessor nach Satz 24, ferner umfassend:
- die eine oder die mehreren Schaltungen zum Trainieren des neuronalen Netzwerks, um eine Segmentierung eines medizinischen Bilds auszuführen.
- 33. System, umfassend:
- einen oder mehrere Computer mit einem oder mehreren Prozessoren zum Verwenden eines neuronalen Netzwerks, um Informationen abzuleiten, wobei das neuronale Netzwerk trainiert wird, indem bewirkt wird, dass zwei oder mehr nachfolgende Schichten des neuronalen Netzwerks auf von einer vorherigen Schicht des neuronalen Netzwerks separaten Rechenressourcen ausgeführt werden, mindestens teilweise basierend darauf, ob eine gleiche Ausgabe der vorherigen Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
- 34. System nach Satz 33, wobei die gleiche Ausgabe der vorherigen Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll und ferner Folgendes umfasst:
- Kopieren von Daten aus der vorherigen Schicht des neuronalen Netzwerks von einer Rechenressource zu einer anderen Rechenressource, wobei die Rechenressource, von der die Daten kopiert werden, eine erste von den Daten abhängige Komponente des neuronalen Netzwerks ausführt und die andere Rechenressource, zu der die Daten kopiert werden, eine andere von den Daten abhängige Komponente des neuronalen Netzwerks ausführt.
- 35. System nach einem der Sätze 33-34, wobei die vorherige Schicht einen Codierer in einem ersten parallelen Block umfasst und beide der zwei oder mehr nachfolgenden Schichten mindestens einen zweiten Codierer in einer ersten nachfolgenden Schicht in dem ersten parallelen Block und einen Decodierer in einer zweiten nachfolgenden Schicht in einem zweiten parallelen Block umfassen.
- 36. System nach einem der Sätze 33-35, wobei die Ausgabe dem zweiten Codierer in der ersten nachfolgenden Schicht bereitgestellt wird und die kopierte Ausgabe dem Decodierer in der zweiten nachfolgenden Schicht bereitgestellt wird.
- 37. System nach einem der Sätze 33-36, wobei die erste nachfolgende Schicht von einem Prozessor ausgeführt werden soll und die zweite nachfolgende Schicht zur gleichen Zeit von einem anderen Prozessor ausgeführt werden soll.
- 38. Maschinenlesbares Medium, auf dem ein Satz von Anweisungen gespeichert ist, der bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlasst zum Verwenden eines neuronalen Netzwerks, um Informationen abzuleiten, wobei das neuronale Netzwerk trainiert wird, indem bewirkt wird, dass zwei oder mehr nachfolgende Schichten des neuronalen Netzwerks auf von einer vorhergehenden Schicht des neuronalen Netzwerks separaten Rechenressourcen ausgeführt werden, mindestens teilweise basierend darauf, ob eine gleiche Ausgabe der vorhergehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll.
- 39. Maschinenlesbares Medium nach Satz 38, wobei die gleiche Ausgabe der vorhergehenden Schicht für beide der zwei oder mehr nachfolgenden Schichten bereitgestellt werden soll und ferner Folgendes umfasst:
- Bewirken, dass die Ausgabe der vorhergehenden Schicht eine duplizierte Kopie der Ausgabe erzeugt;
- Bereitstellen der Ausgabe der vorhergehenden Schicht für eine erste nachfolgende Schicht, die von einer ersten Rechenressource ausgeführt wird; und
- Bereitstellen der duplizierten Kopie für eine zweite nachfolgende Schicht, die von einer zweiten Rechenressource ausgeführt wird.
- 40. Maschinenlesbares Medium nach einem der Sätze 38-39, wobei beide der zwei weiteren nachfolgenden Schichten mindestens einen Codierer in einer ersten nachfolgenden Schicht und einen Decodierer in einer zweiten nachfolgenden Schicht umfassen.
- 41. Maschinenlesbares Medium nach einem der Sätze 38-40, wobei der Codierer in der ersten nachfolgenden Schicht und der Decodierer in der zweiten nachfolgenden Schicht von separaten Rechenressourcen unter Verwendung der gleichen Ausgabe von der vorhergehenden Schicht zur gleichen Zeit ausgeführt werden.
- 42. Maschinenlesbares Medium nach einem der Sätze 38-41, wobei die erste nachfolgende Schicht von einem Prozessor ausgeführt werden soll, der die vorhergehende Schicht ausgeführt hat, und die zweite nachfolgende Schicht von einem anderen Prozessor ausgeführt werden soll.
-
In mindestens einer Ausführungsform kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung oder einen derartigen Chip beziehen. In mindestens einer Ausführungsform können Mehrchipmodule mit erhöhter Konnektivität verwendet werden, die den chipinternen Betrieb simulieren und wesentliche Verbesserungen gegenüber der Verwendung einer herkömmlichen zentralen Verarbeitungseinheit („CPU“) und einer Busimplementierung bieten. In mindestens einer Ausführungsform können verschiedene Module auch separat oder in verschiedenen Kombinationen von Halbleiterplattformen je nach Wunsch des Benutzers 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. Bei Ausführung durch einen oder mehrere Prozessoren ermöglichen es Computerprogramme dem System 1400, verschiedene Funktionen gemäß mindestens einer Ausführungsform durchzuführen. In mindestens einer Ausführungsform sind der Arbeitsspeicher 1404, der Datenspeicher und/oder ein beliebiger anderer Datenspeicher mögliche Beispiele für computerlesbare Medien. In mindestens einer Ausführungsform kann sich der Sekundärspeicher auf ein(e) beliebige(s) geeignete(s) Speichervorrichtung oder -system beziehen, wie z. B. 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 Abschnitt 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 eine Einheit zur Ausführung zugehöriger Funktionen arbeitet und verkauft wird, usw.) und/oder einer beliebigen geeigneten Kombination integrierter Schaltungen implementiert.
-
In mindestens einer Ausführungsform werden die Architektur und/oder Funktionalität verschiedener vorhergehender Figuren im Kontext eines allgemeinen Computersystems, eines Leiterplattensystems, eines für Unterhaltungszwecke bestimmten Spielekonsolensystems, eines anwendungsspezifischen Systems usw. implementiert. In mindestens einer Ausführungsform kann das Computersystem 1400 die Form eines Desktop-Computers, eines Laptop-Computers, eines Tablet-Computers, von Servern, 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 elektronischen tragbaren Vorrichtung, einer Mobiltelefonvorrichtung, eines Fernsehgeräts, einer Arbeitsstation, von Spielekonsolen, eines eingebetteten Systems und/oder einer beliebigen anderen Art 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 über eine Zusammenschaltung 1418 und einen Switch 1420 oder Multiplexer mit einem Host-Prozessor oder anderen Peripherievorrichtungen verbunden. In mindestens einer Ausführungsform verteilt das Parallelverarbeitungssystem 1412 Rechen-Tasks auf PPUs 1414, die parallelisierbar sein können - zum Beispiel als Teil der Verteilung von Rechen-Tasks auf mehrere Thread-Blöcke einer Grafikverarbeitungseinheit („GPU“). In mindestens einer Ausführungsform wird der Speicher von einigen oder allen PPUs 1414 gemeinsam genutzt und ist er für diese zugänglich (z. B. für Lese- und/oder Schreibzugriffe), obwohl ein solcher gemeinsam genutzter Speicher Performance-Einbußen im Vergleich zur Verwendung von lokalem Speicher und Registern, die in einer PPU 1414 resident sind, mit sich bringen kann. In mindestens einer Ausführungsform wird der Betrieb der PPUs 1414 durch Verwendung eines Befehls wie _syncthreads() synchronisiert, wobei alle Threads in einem Block (z. B. über mehrere PPUs 1414 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 Techniken 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 konkrete(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.
-
Die Verwendung der Begriffe „ein“ und „eine“ und „der/die/das“ und ähnlicher Bezeichnungen im Kontext mit der Beschreibung offenbarter Ausführungsformen (insbesondere im Kontext mit den folgenden Ansprüchen) ist so auszulegen, dass sie sowohl den Singular als auch den Plural abdeckt, sofern hierin nicht anders angegeben oder durch den Kontext eindeutig widerlegt, und nicht als Definition eines Begriffs. Die Begriffe „umfassend“, „aufweisend“, „beinhaltend“ und „enthaltend“ sind als offene Begriffe auszulegen (d. h. „einschließlich, aber nicht begrenzt „auf”), sofern nicht anderweitig angegeben. „Verbunden“ ist als teilweise oder vollständig ineinander enthalten, aneinander befestigt oder aneinander angefügt auszulegen, wenn er unmodifiziert vorliegt und sich auf physische Verbindungen bezieht, selbst, wenn ein Element dazwischen eingefügt ist. Die Nennung von Wertebereichen hierin soll lediglich als schnelles Verfahren des einzelnen Bezugnehmens 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 Begriffs „Satz“ (z. B. „ein Satz von Objekten“) oder „Teilmenge“ als eine nicht leere Zusammenstellung auszulegen, die ein oder mehrere Elemente umfasst, es sei denn, es ist etwas anderes angemerkt oder dies widerspricht dem Kontext. Sofern es nicht anders angegeben ist oder der Kontext dem anderweitig widerspricht, bezeichnet ferner der Begriff „Teilmenge“ nicht notwendigerweise eine richtige Teilmenge des entsprechenden Satzes, sondern können die Teilmenge und der entsprechende Satz auch gleich sein.
-
Verbindende Sprache, wie etwa Ausdrücke der Form „wenigstens eines von A, B und C“ oder „mindestens eines von A, B und C“, sind andernfalls in dem Kontext zu verstehen, in dem sie allgemein verwendet werden, um darzustellen, dass ein Objekt, ein Begriff usw. entweder A oder B oder C oder eine beliebige nicht leere Teilmenge des Satzes aus A und B und C sein kann, es sei denn, es ist etwas anderes angegeben oder etwas anderes geht eindeutig aus dem Kontext hervor. Zum Beispiel beziehen sich die verbindenden Ausdrücke „wenigstens eines von A, B und C“ und „mindestens eines von A, B und C“ in dem veranschaulichenden Beispiel eines Satzes, der drei Elemente aufweist, auf einen der folgenden Sätze: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Somit soll solche verbindende Sprache im Allgemeinen nicht ausdrücken, dass bestimmte Ausführungen es erforderlich machen, dass zumindest eines von A, zumindest eines von B und zumindest eines von C vorhanden ist. Außerdem, sofern nicht anders angemerkt oder durch den Kontext widerlegt, bezeichnet der Begriff „Vielzahl“ einen Status der Pluralität (z. B. gibt „eine Vielzahl von Objekten“ mehrere Objekte an). In mindestens einer Ausführungsform ist die Anzahl der Objekte in einer Vielzahl zumindest zwei, es können aber auch mehr sein, wenn dies entweder explizit oder durch den Kontext angegeben wird. Sofern nicht anders angegeben oder anderweitig aus dem Kontext ersichtlich, bedeutet der Ausdruck „basierend auf” „mindestens teilweise basierend auf” und nicht „ausschließlich basierend auf“.
-
Hierin beschriebene Vorgänge 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 zum Beispiel die hierin beschriebenen Prozesse (oder Variationen und/oder Kombinationen davon), unter der Kontrolle von einem oder mehreren Computersystemen ausgeführt, die mit ausführbaren Anweisungen konfiguriert sind, und ist als Code (z. B. ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen), die kollektiv auf einem oder mehreren Prozessoren ausgeführt werden, durch Hardware oder Kombinationen davon implementiert. In mindestens einer Ausführungsform ist der 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 nicht transitorisches computerlesbares Speichermedium, das transitorische Signale (z. B. eine sich ausbreitende transiente elektrische oder elektromagnetische Übertragung) ausschließt, aber nicht transitorische Datenspeicherschaltungen (z. B. Puffer, Cache und Warteschlangen) innerhalb der Transceiver 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 nicht transitorischen computerlesbaren Speichermedien gespeichert, auf denen ausführbare Anweisungen gespeichert sind (oder ein anderer 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 Vorgänge durchzuführen. Ein Satz von nicht transitorischen computerlesbaren Speichermedien umfasst in mindestens einer Ausführungsform mehrere nicht transitorische computerlesbare Speichermedien und einem oder mehreren der einzelnen nicht transitorischen Speichermedien mehrerer nicht transitorischer computerlesbarer Speichermedien fehlt der gesamte Code, während mehrere nicht transitorische computerlesbare Speichermedien kollektiv den gesamten Code speichern. In mindestens einer Ausführungsform werden die ausführbaren Anweisungen so ausgeführt, dass unterschiedliche Anweisungen von unterschiedlichen Prozessoren ausgeführt werden - beispielsweise speichert ein nicht transitorisches computerlesbares Speichermedium Anweisungen und führt eine zentrale Haupt-Verarbeitungseinheit („CPU“) 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 kollektiv Vorgänge der hierin beschriebenen Prozesse durchführen, und sind solche Computersysteme mit geeigneter Hardware und/oder Software konfiguriert, welche die Durchführung der Vorgänge 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 Vorgänge durchführt und sodass eine einzelne Vorrichtung nicht alle Vorgänge durchführt.
-
Die Verwendung jeglicher Beispiele oder beispielhafter Wortwahl (z. B. „wie zum Beispiel“), die hierin bereitgestellt sind, soll lediglich die Ausführungsformen der Offenbarung besser veranschaulichen 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 Implementation 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“ sowie deren Ableitungen verwendet werden. Es versteht sich, dass diese Begriffe nicht als Synonyme füreinander bestimmt sein können. Vielmehr kann in bestimmten Beispielen „verbunden“ oder „gekoppelt“ verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem oder indirektem physischen oder elektrischen Kontakt miteinander stehen. 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 Begriff „Prozessor“ auf eine beliebige Vorrichtung oder einen Abschnitt einer Vorrichtung beziehen, die/der elektronische Daten aus Registern und/oder dem Speicher verarbeitet und diese elektronischen Daten in andere elektronische Daten umwandelt, die in Registern und/oder im 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 hier verwendet, können „Software“-Prozesse z. B. Software- und/oder Hardware-Entitäten beinhalten, die im Verlauf der Zeit Arbeit verrichten, wie z. B. 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 Begriffe „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, Computersystem oder eine computerimplementierte Maschine Bezug genommen werden. In mindestens einer Ausführungsform kann das Erhalten, Erfassen, Empfangen oder Eingeben von analogen und digitalen Daten auf vielfältige Weise erfolgen, z. B. durch das Empfangen von Daten als Parameter eines Funktionsaufrufs oder eines Aufrufs einer Anwendungsprogrammierschnittstelle. In mindestens einer Ausführungsform können die Prozesse des Erhaltens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch die Übertragung von Daten über eine serielle oder parallele Schnittstelle erfolgen. In mindestens einer Ausführungsform können die Prozesse des Erhaltens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch die Übertragung von Daten über ein Computernetzwerk von der bereitstellenden Entität zur erfassenden Entität erfolgen. In mindestens einer Ausführungsform kann auch auf das Bereitstellen, Ausgeben, Übertragen, Senden oder Darstellen von analogen oder digitalen Daten Bezug genommen werden. In verschiedenen Beispielen können die Prozesse des Bereitstellens, Ausgebens, Übertragens, Sendens oder Darstellens von analogen oder digitalen Daten durch die Übertragung von Daten als Eingabe- oder Ausgabeparameter eines Funktionsaufrufs, Parameter einer Anwendungsprogrammierschnittstelle oder eines Interprozess-Kommunikationsmechanismus erfolgen.
-
Obwohl die hierin dargelegten Beschreibungen beispielhafte Implementationen der beschriebenen Techniken darlegen, 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önnen, obwohl spezifische Verteilungen von Verantwortlichkeiten vorstehend zum Zwecke der Beschreibung definiert sein können, verschiedene Funktionen und Verantwortlichkeiten in Abhängigkeit von den Umständen unterschiedlich verteilt und aufgeteilt werden.
-
Obwohl der Gegenstand in für Strukturmerkmale und/oder Verfahrenshandlungen spezifischer Sprache beschrieben wurde, versteht es sich ferner, dass der in den beigefügten Ansprüchen beanspruchte Gegenstand nicht unbedingt auf die beschriebenen konkreten Merkmale oder Handlungen beschränkt ist. Vielmehr werden spezifische Merkmale und Handlungen als beispielhafte Formen der Implementation der Ansprüche offenbart.