DE102022110657A1 - High-dynamic-range-bildverarbeitung mit festen kalibrierungseinstellungen - Google Patents

High-dynamic-range-bildverarbeitung mit festen kalibrierungseinstellungen Download PDF

Info

Publication number
DE102022110657A1
DE102022110657A1 DE102022110657.8A DE102022110657A DE102022110657A1 DE 102022110657 A1 DE102022110657 A1 DE 102022110657A1 DE 102022110657 A DE102022110657 A DE 102022110657A DE 102022110657 A1 DE102022110657 A1 DE 102022110657A1
Authority
DE
Germany
Prior art keywords
image data
data
tone
vehicle
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102022110657.8A
Other languages
English (en)
Inventor
Yining Deng
Eric Dujardin
Sean Midthun Pieper
Minwoo Park
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102022110657A1 publication Critical patent/DE102022110657A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/765Interface circuits between an apparatus for recording and another apparatus
    • H04N5/77Interface circuits between an apparatus for recording and another apparatus between a recording apparatus and a television camera
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/90Dynamic range modification of images or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/90Dynamic range modification of images or parts thereof
    • G06T5/92Dynamic range modification of images or parts thereof based on global image properties
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration using two or more images, e.g. averaging or subtraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/60Image enhancement or restoration using machine learning, e.g. neural networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/70Circuitry for compensating brightness variation in the scene
    • H04N23/741Circuitry for compensating brightness variation in the scene by increasing the dynamic range of the image compared to the dynamic range of the electronic image sensors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20172Image enhancement details
    • G06T2207/20208High dynamic range [HDR] image processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30248Vehicle exterior or interior
    • G06T2207/30252Vehicle exterior; Vicinity of vehicle

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Image Processing (AREA)
  • Studio Devices (AREA)

Abstract

Bei verschiedenen Beispielen Geräte, Systeme und Techniken zum Ausführen einer Offline-Bildsignalverarbeitung von Quellbilddaten zum Generieren von Zielbilddaten ausgeführt. Bei mindestens einer Ausführungsform wird eine Datensammlung unter Verwendung einer Belichtungs- und Kalibrierungseinstellung eines Bildsensors ausgeführt, um Quellbilddaten zu generieren, die dann verarbeitet werden, indem eine Offline-Bildsignalverarbeitung verwendet wird, um Zieldaten zu generieren.

Description

  • STAND DER TECHNIK
  • Bei High-Dynamic-Range-Bildgebung (HDRI) kann ein High-Dynamic-Range-Bild (HDR-Bild) ein erhöhtes Verhältnis möglicher Pixelwerte (z. B. den größtmöglichen Helligkeitswert relativ zu dem kleinstmöglichen Helligkeitswert) gegenüber herkömmlichen Bildgebungsverfahren bereitstellen. Beispielsweise rendern Pixel mit kleineren Helligkeitswerten als dunklere (z. B. schwärzere) Regionen eines codierten Bildes, während Pixel mit größeren Helligkeitswerten als hellere (z. B. weißere) Regionen des Bildes rendern. Darüber hinaus können herkömmliche Verfahren zum Tonemapping von HDR-Bilddaten suboptimale Ergebnisse ergeben, wenn die Einstellungen einer automatischen Belichtung (Auto Exposure - AE) einer Kamera beim Erfassen der HDR-Bilddaten nicht richtig konfiguriert sind. Die AE-Einstellungen der Kamera können in einigen Situationen fehlschlagen, was zu einem verschlechterten Bild bei der Verarbeitung der HDR-Bilddaten führt. Beispielsweise kann das Steuern von Aspekten eines HDR-Bildes und/oder Bildes, das durch Tonemapping-HDR-Bilddaten codiert ist, bei suboptimalen AE-Einstellungen viele der mit HDRI assoziierten Vorteile zunichtemachen, was zu Bildern führt, die „verwaschen“ erscheinen, weniger realistisch oder visuell weniger ansprechend sind. Infolgedessen kann das Verwenden derartiger Bilder bei verschiedenen Anwendungen, wie beim Trainieren eines Modells, suboptimale Ergebnissen ergeben.
  • Figurenliste
  • Die vorliegenden Systeme und Verfahren zur Erfassungssbildverarbeitung mit festen Einstellungen werden im Folgenden unter Bezugnahme auf die beigefügten Zeichnungsfiguren ausführlich beschrieben, wobei:
    • 1 ein schematisches Diagramm eines Erfassungsbildverarbeitungssystems mit fester Einstellung gemäß einigen Ausführungsformen der vorliegenden Offenbarung veranschaulicht;
    • 2 ein schematisches Diagramm eines Bildsignalverarbeitungssystems, das Daten verwendet, die mit festen Einstellungen erfasst wurden, gemäß einigen Ausführungsformen der vorliegenden Offenbarung veranschaulicht;
    • 3 ein schematisches Diagramm eines High-Dynamic-Range-Bildgebungssystems gemäß einigen Ausführungsformen der vorliegenden Offenbarung veranschaulicht;
    • 4 Tiefton-, Mittelton-, Hochton- und Flare-Unterdrückungskontrollpunkte, zeigt, die in einen 2D-Raum eingebettet sind, der von einem ersten Basisvektor für eine erste Dimension überspannt wird, die Pixelwerten von Quellbilddaten entsprechen, und von einem zweiten Basisvektor für eine zweite Dimension, die Pixelwerten von Zielbilddaten entsprechen;
    • 5 eine nicht einschränkende Ausführungsform eines Plots einer Tonemapping-Funktion gemäß den verschiedenen Ausführungsformen der vorliegenden Offenbarung zeigt;
    • 6 ein Ablaufdiagramm ist, das ein Verfahren zum Ausführen von Bildsignalverarbeitung unter Verwenden erfasster mit festen Einstellungen, gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt;
    • 7 ein Ablaufdiagramm ist, das ein Verfahren zum Tonemapping von High-Dynamic-Range-Bilddaten gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt;
    • 8 ein Ablaufdiagramm ist, das ein Verfahren zum Generieren von Bilddaten mit niedrigerem Dynamikbereich aus Bilddaten mit höherem Dynamikbereich gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt;
    • 9 ein Ablaufdiagramm ist, das ein Verfahren zum Verteilen der Tonemapping-Vorgänge gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt;
    • 10A Inferenz- und/oder Trainingslogik gemäß mindestens einer Ausführungsform veranschaulicht;
    • 10B eine Inferenz- und/oder Trainingslogik gemäß mindestens einer Ausführungsform veranschaulicht;
    • 11 das Training und den Einsatz eines neuronalen Netzwerks gemäß mindestens einer Ausführungsform veranschaulicht;
    • 12 ein Beispiel für ein Rechenzentrumssystem gemäß mindestens einer Ausführungsform veranschaulicht;
    • 13A ein Beispiel für ein autonomes Fahrzeug gemäß mindestens einer Ausführungsform veranschaulicht;
    • 13B ein Beispiel für Kamerastandorte und Sichtfelder für das autonome Fahrzeug der 13A gemäß mindestens einer Ausführungsform veranschaulicht;
    • 13C ein Blockdiagramm ist, das eine beispielhafte Systemarchitektur für das autonome Fahrzeug der 13A gemäß mindestens einer Ausführungsform veranschaulicht;
    • 13D ein Diagramm ist, das ein System zur Kommunikation zwischen einem oder mehreren cloudbasierten Servern und dem autonomen Fahrzeug der 13A gemäß mindestens einer Ausführungsform veranschaulicht;
    • 14 ein Blockdiagramm ist, das ein Computersystem gemäß mindestens einer Ausführungsform veranschaulicht;
    • 15 ein Blockdiagramm ist, das ein Computersystem gemäß mindestens einer Ausführungsform veranschaulicht;
    • 16 ein Computersystem gemäß mindestens einer Ausführungsform veranschaulicht;
    • 17 ein Computersystem gemäß mindestens einer Ausführungsform veranschaulicht;
    • 18A ein Computersystem gemäß mindestens einer Ausführungsform veranschaulicht;
    • 18B ein Computersystem gemäß mindestens einer Ausführungsform veranschaulicht;
    • 18C ein Computersystem gemäß mindestens einer Ausführungsform veranschaulicht;
    • 18D ein Computersystem gemäß mindestens einer Ausführungsform veranschaulicht;
    • die 18E und 18F ein gemeinsames Programmiermodell gemäß mindestens einer Ausführungsform veranschaulichen;
    • 19 beispielhafte integrierte Schaltungen und assoziierte Grafikprozessoren gemäß mindestens einer Ausführungsform veranschaulicht;
    • die 20A und 20B beispielhafte integrierte Schaltungen und assoziierte Grafikprozessoren gemäß mindestens einer Ausführungsform veranschaulichen;
    • die 21A und 21B eine zusätzliche beispielhafte Grafikprozessorlogik gemäß mindestens einer Ausführungsform veranschaulichen;
    • 22 ein Computersystem gemäß mindestens einer Ausführungsform veranschaulicht;
    • 23A einen Parallelprozessor gemäß mindestens einer Ausführungsform veranschaulicht;
    • 23B eine Partitionseinheit gemäß mindestens einer Ausführungsform veranschaulicht;
    • 23C einen Verarbeitungscluster gemäß mindestens einer Ausführungsform veranschaulicht;
    • 23D einen Grafik-Multiprozessor gemäß mindestens einer Ausführungsform veranschaulicht;
    • 24 ein Grafik-Multiprozessoreinheits-System (GPU-System) gemäß mindestens einer Ausführungsform veranschaulicht;
    • 25 einen Grafikprozessor gemäß mindestens einer Ausführungsform veranschaulicht;
    • 26 ein Blockdiagramm ist, das eine Prozessor-Mikroarchitektur für einen Prozessor gemäß mindestens einer Ausführungsform veranschaulicht;
    • 27 einen Deep-Learning-Anwendungsprozessor gemäß mindestens einer Ausführungsform veranschaulicht;
    • 28 ein Blockdiagramm ist, das einen beispielhaften neuromorphen Prozessor gemäß mindestens einer Ausführungsform veranschaulicht;
    • 29 mindestens Teile eines Grafikprozessors gemäß einer oder mehrerer Ausführungsformen veranschaulicht;
    • 30 mindestens Teile eines Grafikprozessors gemäß einer oder mehrerer Ausführungsformen veranschaulicht;
    • 31 mindestens Teile eines Grafikprozessors gemäß einer oder mehrerer Ausführungsformen veranschaulicht;
    • 32 ein Blockdiagramm einer Grafikverarbeitungs-Engine eines Grafikprozessors gemäß mindestens einer Ausführungsform veranschaulicht;
    • 33 ein Blockdiagramm von mindestens Teilen eines Grafikprozessorkerns gemäß mindestens einer Ausführungsform veranschaulicht;
    • die 34A und 34B gemäß mindestens einer Ausführungsform eine Thread-Ausführungslogik, die eine Anordnung von Prozessorelementen eines Grafikprozessorkerns aufweist, veranschaulichen;
    • 35 eine Parallelverarbeitungseinheit („PPU“) gemäß mindestens einer Ausführungsform veranschaulicht;
    • 36 einen allgemeinen Verarbeitungscluster („GPC“) gemäß mindestens einer Ausführungsform veranschaulicht;
    • 37 eine Speicherpartitionseinheit einer Parallelverarbeitungseinheit („PPU“) gemäß mindestens einer Ausführungsform veranschaulicht;
    • 38 einen Streaming-Multiprozessor gemäß mindestens einer Ausführungsform veranschaulicht;
    • 39 ein beispielhaftes Datenablaufdiagramm für eine weiterentwickelte Rechen-Pipeline gemäß mindestens einer Ausführungsform ist;
    • 40 eine Systemdarstellung für ein beispielhaftes System zum Trainieren, Anpassen, Instanziieren und Einsetzen von Modellen des maschinellen Lernens in einer weiterentwickelten Rechen-Pipeline gemäß mindestens einer Ausführungsform ist;
    • 41 eine beispielhafte Veranschaulichung einer weiterentwickelten Rechen-Pipeline 4010A zum Verarbeiten von Bildgebungsdaten gemäß mindestens einer Ausführungsform beinhaltet;
    • 42A ein beispielhaftes Datenablaufdiagramm eines virtuellen Instruments, das eine Ultraschallvorrichtung unterstützt, gemäß mindestens einer Ausführungsform beinhaltet;
    • 42B ein beispielhaftes Datenablaufdiagramm eines virtuellen Instruments, das einen CT-Scanner unterstützt, gemäß mindestens einer Ausführungsform beinhaltet;
    • 43A ein Datenablaufdiagramm für ein Verfahren zum Trainieren eines Modells des maschinellen Lernens gemäß mindestens einer Ausführungsform veranschaulicht; und
    • 43B eine beispielhafte Veranschaulichung einer Client-Server-Architektur zum Erweitern von Annotationswerkzeugen mit vorab trainierten Annotationsmodellen gemäß mindestens einer Ausführungsform ist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ausführungsformen der vorliegenden Offenbarung betreffen die Verarbeitung von High Dynamic Range(HDR)-Bildern, die mit festen Kalibrierungseinstellungen erfasst wurden. Es werden Systeme und Verfahren offenbart, die HDR-Bilddaten von einem Bildsensor unter Verwendung fester Kalibrierungseinstellungen (z. B. Belichtungseinstellung) erhalten, die von einer Pipeline eines spezialisierten Prozessors (z. B. eines Bildsignalprozessors (ISP), FPGA oder eines ASIC) entkoppelt sind, der dazu verwendet wird, Bilddaten zu generieren, die für eine Vielfalt von Anwendungen geeignet sind (z. B. Trainieren neuronaler Netzwerke).
  • Im Gegensatz zu herkömmlichen Systemen, statt sich auf die Konfiguration von Auto-Exposure-Einstellungen (AE-Einstellungen), eine digitale Verstärkungsfunktion, ISP-Einstellungen und/oder andere Einstellungen einer Bildgebungsvorrichtung zu verlassen, stellt bei verschiedenen Ausführungsformen das Abkoppeln der Rohdatensammlung (z. B. Sensordaten) aus der Bildsignalverarbeitung eine bessere Kontrolle der resultierenden Bilder (HDR-Bilder, Bilder mit Standard-Dynamikbereich (SDR) und/oder Bilder mit niedrigem Dynamikbereich (LDR)), die auf bestimmte Anwendungen geclippt werden können, bereit. Außerdem ermöglicht bei einigen Ausführungsformen das Entkoppeln der Rohdatensammlung auf diese Weise Verbesserungen, Korrekturen, Abstimmungsänderungen und andere Anpassungen an einer Pipeline eines ISP, ohne dass die Rohdaten erneut gesammelt werden müssen.
  • Bei einem Beispiel können die AE-Einstellungen oder andere Einstellungen der Kamera beim Erfassen von Rohdaten einer Kameravorrichtung, die an einem Fahrzeug montiert ist, Bilder ergeben, die zu hell oder zu dunkel sind oder anderswie suboptimale Ergebnisse erzeugen. Bei verschiedenen Ausführungsformen kann durch Erfassen von Rohdaten mit fester Belichtungseinstellung und/oder anderen festen Kalibrierungseinstellungen für die Kameravorrichtung eine derartige Funktionalität mit einer oder mehreren Komponenten einer Offline-Bildsignalverarbeitungs-Pipeline ersetzt werden. Beispielsweise wird die AE-Funktionalität an der Kameravorrichtung durch eine Tonemapping-Funktion eines ISP ersetzt. Darüber hinaus kann bei verschiedenen Ausführungsformen die Offline-Bildsignalverarbeitungs-Pipeline, die bestimmte Algorithmen beinhalten kann, abgestimmt, hinzugefügt und/oder entfernt werden, um unterschiedliche Ergebnisse (z. B. Bilddaten mit verschiedenen Eigenschaften) zu erzeugen, ohne dass neue Rohdaten gesammelt werden müssen, indem dieselben Rohdaten (z. B. Rohdaten, die unter Verwendung mit einer festen Einstellung gesammelt wurden) verwendet werden.
  • Bei einer Ausführungsform beinhaltet das Anpassen der Offline-Bildsignalverarbeitungs-Pipeline das Modifizieren eines oder mehrerer Parameter einer Tonemapping-Funktion. Beispielsweise kann die Tonemapping-Funktion eine parametrische Funktion sein, die eine Kurve (z. B. eine globale Tonkurve) definiert, wobei die Parameter der Funktion derart angepasst sind, dass die Kurve gezwungen ist, durch den Tieftonpunkt, den Mitteltonpunkt und den Hochtonpunkt durchzugehen (oder diesen zu enthalten). Als ein Ergebnis werden bei Ausführungsformen, bei denen die Offline-Bildsignalverarbeitungs-Pipeline die Tonemapping-Funktion beinhaltet, die Parameter der Funktion angepasst, um unterschiedliche Bilddaten aus denselben Rohdaten zu generieren.
  • Darüber hinaus werden bei verschiedenen Ausführungsformen die Bilder (z. B. Bilddaten mit niedrigerem Dynamikbereich), die von der Offline-Bildsignalverarbeitungs-Pipeline generiert werden, dazu verwendet, ein neuronales Netzwerk zu trainieren. Bei einem Beispiel werden die Bilder dazu verwendet, ein neuronales Netzwerk zu trainieren, um eine Objekterfassung für ein autonomes Fahrzeug auszuführen. Ergebnisse von Inferenz-Vorgängen, die von dem neuronalen Netzwerk ausgeführt werden, werden bei einigen Ausführungsformen auch dazu verwendet, die Offline-Bildsignalverarbeitungs-Pipeline anzupassen, zu verbessern oder anderswie zu modifizieren. Falls beispielsweise das trainierte neuronale Netzwerk beim Ausführen von Inferenzen in Umgebungen mit wenig Licht schlecht abschneidet, wird die Offline-Bildsignalverarbeitungs-Pipeline angepasst und die Rohdaten werden erneut verarbeitet, um Trainingsdaten (z. B. Bilder) zu erzeugen, die, wenn sie zum Wiedertrainieren des neuronalen Netzwerks verwendet werden, bessere Leistung des neuronalen Netzwerks ergeben.
  • Unter Bezugnahme auf 1, ist 1 eine Umgebung 100, die ein Festeinstellungserfassungssystem 102 und ein Bildsignalverarbeitungssystem 140 gemäß einigen Ausführungsformen der vorliegenden Offenbarung umfasst. Es versteht sich, dass diese und andere hierin beschrieben Anordnungen nur als Beispiele aufgeführt werden. Andere Anordnungen und Elemente (z. B. Engines, Schnittstellen, Funktionen, Reihenfolgen, Gruppierungen von Funktionen usw.) können zusätzlich zu oder an Stelle der gezeigten verwendet werden, und einige Elemente können ganz weggelassen werden. Ferner sind viele der hier beschriebenen Elemente funktionale Entitäten, die als diskrete oder verteilte Komponenten oder in Verbindung mit anderen Komponenten und in einer beliebigen geeigneten Kombination und an einem beliebigen geeigneten Ort umgesetzt werden können. Verschiedene Funktionen, die hier als von Entitäten ausgeführt beschrieben werden, können durch Hardware, Firmware und/oder Software vollzogen werden. Bei einem Beispiel werden verschiedene Funktionen von einer Logikvorrichtung ausgeführt, wie etwa, ohne darauf beschränkt zu sein, von einem Allzweckprozessor 122 und/oder einem Bildsignalprozessor (ISP) 124, der Anweisungen ausführt, die in dem Speicher gespeichert sind. Bei einem anderen Beispiel werden verschiedene Funktionen (z. B. Bildsignalverarbeitung 140) von einer Komponente eines Servers (z. B. Server 1512, der nachstehend in Verbindung mit 15 ausführlicher beschrieben ist) und/oder einem Dienst, der von einer Rechenressource-Dienstleister bereitgestellt wird, ausgeführt.
  • Bei verschiedenen Ausführungsformen zeichnet das Festeinstellungserfassungssystem 102 High-Dynamic-Range-Bilddaten (HDR-Bilddaten) (z. B. Rohdaten, Bitmap, Rastergrafik oder andere Datenstrukturen, die einen Satz von Pixeln darstellen) mindestens zum Teil auf digitaler Basis Belichtungskalibrierungsdaten 110 auf. Zusätzlich beinhalten verschiedene Ausführungsformen das Bildsignalverarbeitungssystem 140 zum Ausführen von Tonemapping der HDR-Bilddaten. Beispielsweise durch Steuern der Helligkeit des Bildes, das von den HDR-Bilddaten codiert wird, und/oder des Bildes, das von Tonemapping-Bilddaten codiert wird.
  • Das Ergebnis des Bildsignalverarbeitungssystems 140 beinhaltet bei einer Ausführungsform Bilddaten, die verwendet werden, um das Modelltrainieren 112 auszuführen. Bei einem Beispiel werden die Tonemapping-HDR-Bilddaten in Standard-Dynamic-Range-Bilddaten (SDR-Bilddaten) oder Low Dynamic Range (LDR) über eine Kompression der Pixelwerte (z. B. eine Anwendung einer Gamma-Kompressionsfunktion auf die Tonemapping-HDR-Bilddaten) umgewandelt. Diese SDR- und LDR-Bilder werden bei verschiedenen Ausführungsformen dazu verwendet, ein oder mehrere neuronale Netzwerke zu trainieren, um verschiedene Tasks auszuführen, wie etwa diejenigen, die in Verbindung mit autonomen Fahrzeugen beschrieben werden, wie unten beschrieben. Eine nicht einschränkende Ausführungsform beinhaltet das Erfassen und/oder Empfangen von Quellbilddaten unter Verwendung fester Belichtungseinstellungen für einen Bildsensor. Beispielsweise können die Quellbilddaten HDR-Bilddaten sein und können ein Quellbild darstellen und/oder codieren.
  • Bei verschiedenen Ausführungsformen verarbeitet das Bildsignalverarbeitungssystem 140 die von dem Festeinstellungserfassungssystem 102 erhaltenen Bilddaten mindestens zum Teil basierend auf einer Anwendung, für die die Bilddaten und/oder das trainierte Modell verwendet werden. Wie in der Umgebung 100 veranschaulicht, beinhalten beispielhafte Anwendungen ein bemanntes oder unbemanntes Landfahrzeug (z. B. ein Fahrzeug 104), ein bemanntes oder unbemanntes Luftfahrzeug (z. B. eine Drohne 106) oder ein tragbares Gerät (z. B. eine intelligente Brille 108). Beispielsweise verarbeitet das Bildsignalverarbeitungssystem 140 die erfassten Bilddaten zur Verwendung beim Trainieren eines Modells, um Flugoperationen der Drohne 106 auszuführen. Beispielsweise verarbeitet das Bildsignalverarbeitungssystem 140 die erfassten Bilddaten zur Verwendung beim Trainieren eines Modells, um Objekterfassung zur Verwendung mit der intelligenten Brille 108 auszuführen. Bei einer Ausführungsform bestimmt das Bildsignalverarbeitungssystem 140 für eine besondere Anwendung Tonkontrollpunkte basierend mindestens zum Teil auf Quellpixelwerten der erfassten Bilddaten. Bei einem Beispiel beinhalten die bestimmten Tonkontrollpunkte einen Tieftonpunkt, einen Mitteltonpunkt und/oder einen Hochtonpunkt. Bei einigen Ausführungsformen beinhalten die Tonkontrollpunkte zusätzlich einen Flare-Unterdrückungspunkt. Bei mindestens einer Ausführungsform werden zusätzliche Tonkontrollpunkte bestimmt.
  • Obwohl das Festeinstellungserfassungssystem 102, das in 1 veranschaulicht ist, als eine einzelne Kamera gezeigt ist, soll dies nicht einschränkend sein. Bei verschiedenen Ausführungsformen kann es eine beliebige Anzahl von Kamerarechenvorrichtungen geben, einschließlich Kamerarechenvorrichtungen, die in 1 nicht ausdrücklich gezeigt sind. Bei verschiedenen Ausführungsformen beinhaltet das Festeinstellungserfassungssystem 102 eine Rechenvorrichtung, die einen oder mehrere Bildsensoren und/oder Kameras, die die digitalen Belichtungskalibrierungsdaten 110 umsetzen können, beinhaltet. Bei einem Beispiel beinhaltet das Festeinstellungserfassungssystem 102 eine Dashcam mit einer festen Belichtungseinstellung. Bei einem weiteren Beispiel beinhaltet das Festeinstellungserfassungssystem 102 eine Vielzahl von Bildsensoren, die derart positioniert sind, dass Bilder, die eine 360-Grad-Szene abbilden, unter Verwendung der digitalen Belichtungskalibrierungsdaten 110 erfasst werden.
  • Zusätzlich können bei verschiedenen Ausführungsformen die in 1 (z. B. die in 102-108 enthaltenen Kameravorrichtungen) abgebildet sind, einen oder mehrere Bildsensoren beinhalten, die dazu fähig sind, High-Dynamic-Range-Bilddaten (HDR-Bilddaten) zu erfassen, wie durchgehend erläutert. Die Umgebung 100 beinhaltet bei verschiedenen Ausführungsformen andere Rechenvorrichtungen, wie etwa, ohne darauf beschränkt zu sein, ein Server-Rechenvorrichtung. Bei einem Beispiel setzt die Server-Rechenvorrichtung das Bildsignalverarbeitungssystem 140 um. Das Landfahrzeug 104 und/oder das Luftfahrzeug 106 können mindestens teilweise manuell betriebene Fahrzeuge und/oder, wenn bemannt, teilweise autonom sein. Bei einigen Ausführungsformen können die unbemannten Fahrzeuge 104 und 106 autonome, teilweise autonome und/oder ferngesteuerte Fahrzeuge sein. Verschiedene Ausführungsformen derartiger Fahrzeuge werden in Verbindung mit den 9A-9D erläutert.
  • Verschiedene Ausführungsformen von Rechenvorrichtungen, einschließlich, ohne darauf beschränkt zu sein, die Rechenvorrichtungen 102-108 und diejenigen, die das Bildsignalverarbeitungssystem 140 umsetzen, werden in Verbindung mit den 11-14 erläutert. Hier jedoch kurz, beinhalten die Rechenvorrichtungen, die in Verbindung mit 1 beschrieben sind, bei einer Ausführungsform eine oder mehrere Logikvorrichtungen. Beispielsweise ist das Festeinstellungserfassungssystem 102 derart gezeigt, dass es Logikvorrichtungen 118 beinhaltet. Die Logikvorrichtungen 118 beinhalten bei einer Ausführungsform einen oder mehrere eines Allzweckprozessors 122 (z. B. eine Zentraleinheit (CPU), einen Mikrocontroller, einen Mikroprozessor oder dergleichen), einen Bildsignalprozessor (ISP) 124, eine anwendungsspezifische integrierte Schaltung (ASIC) 126 und/oder ein feldprogrammierbares Gate-Array (FPGA) 128. Obwohl dies in 1 nicht gezeigt ist, beinhalten die Logikvorrichtungen 118 bei einigen Ausführungsformen eine Grafikverarbeitungseinheit (GPU). Es sollte beachtet werden, dass jede der Rechenvorrichtungen 102-108 und diejenigen, die das Bildsignalverarbeitungssystem 140 umsetzen, bei verschiedenen Ausführungsformen eine oder mehrere derartiger Logikvorrichtungen beinhalten. Bei verschiedenen Ausführungsformen setzt der Bildsignalprozessor (ISP) 124 als eine Komponente einer Rechenvorrichtung das Bildsignalverarbeitungssystem 140 oder eine Komponente davon um. Beispielsweise beinhaltet ein Server-Computersystem den Bildsignalprozessor (ISP) 124 oder emuliert anderswie den Bildsignalprozessor (ISP) 124 oder eine Komponente davon.
  • Verschiedene Komponenten der Umgebung 100 (z. B. die Rechenvorrichtungen 102-108) kommunizieren bei einer Ausführungsform über ein oder mehrere Netzwerke. Beispielsweise beinhalten das eine oder die mehreren Netzwerke ein Weitverkehrsnetzwerk (WAN) (z. B. das Internet, ein öffentliches Telefonnetz (PSTN) usw.), ein lokales Netzwerk (LAN) (z. B. Wi-Fi, ZigBee), Z-Wave, Bluetooth, Bluetooth Low Energy (BLE), Ethernet etc.), ein Low-Power Wide Area Network (LPWAN) (z. B. LoRaWAN, Sigfox etc.), ein globales Satellitennavigationssystem (GNSS) Netzwerk (z. B. das Global Positioning System (GPS)) und/oder ein anderer Netzwerktyp.
  • Darüber hinaus implementieren, betreiben oder führen bei verschiedenen Ausführungsformen eine oder mehrere der Rechenvorrichtungen 102-108 die Funktionen und/oder Vorgänge des Bildsignalverarbeitungssystems 140 aus. Bei dem in 1 veranschaulichten Beispiel ist das Festeinstellungserfassungssystem 102, das das Bildsignalverarbeitungssystem 140 umsetzt, gezeigt. Beispielsweise beinhaltet das Festeinstellungserfassungssystem 102 einen oder mehrere Bildsensoren und die Logikvorrichtungen 118, die das Bildsignalverarbeitungssystem 140 umsetzen (z. B. ein Teil eines autonomen oder teilweise autonomen Fahrzeugs, das Trainingsbilder verschiedener Umgebungen aufzeichnet). Jedoch kann es jeder der in der vorliegenden Offenbarung beschriebenen Rechenvorrichtungen ermöglicht werden, das Bildsignalverarbeitungssystem 140 umzusetzen. Darüber hinaus kann bei verschiedenen Ausführungsformen jede der Logikvorrichtungen 118 mindestens einige der Funktionen, Vorgänge und/oder Aktionen des Bildsignalverarbeitungssystems 140 umsetzen.
  • Das Bildsignalverarbeitungssystem 140 kann verschiedene Verfahren des Tonemappings von HDR-Bilddaten ermöglichen sowie die Helligkeit des Bildes, das von HDR-Bilddaten und/oder Tonemapping-Bilddaten codiert wird, steuern. Um eine derartige Funktionalität auszuführen, beinhaltet das Bildsignalverarbeitungssystem 140 bei verschiedenen Ausführungsformen eine oder mehrere Komponenten, Module, Vorrichtungen oder dergleichen. Ein beispielhaftes Bildsignalverarbeitungssystem 140 wird unten in Verbindung mit den 2 und 3 beschrieben. Beliebige der Komponenten, Module und/oder Vorrichtungen, die in Verbindung mit dem Bildsignalverarbeitungssystem 140 beschrieben sind, oder jene, die unten in Verbindung mit den 2 und 3 beschrieben sind, können bei einigen Ausführungsformen optional sein.
  • Wie durchgehend erörtert, implementiert und/oder führt das Bildsignalverarbeitungssystem 140 bei verschiedenen Ausführungsformen mindestens Teile der Prozesse, Aktionen und/oder Vorgänge, die in Verbindung mit den Verfahren 500, 600, 700 und 800 der 5-8 erläutert sind. Somit können eine oder mehrere der Logikvorrichtungen 118 mindestens Teile der Verfahren 500, 600, 700 und/oder 800 umsetzen und/oder ausführen.
  • Bei verschiedenen Ausführungsformen beinhaltet das Festeinstellungserfassungssystem 102 einen oder mehrere HDR-Bildsensoren 144, denen es ermöglicht wird, Bilddaten, die HDR-Bilddaten sind, aufzuzeichnen. Beispielsweise codieren die erfassten HDR-Bilddaten ein Bild oder eine Szene, die von den HDR-Bildsensoren 144 abgebildet wird. Bei einer Ausführungsform kann die Pixeltiefe der HDR-Bilddaten größer oder gleich 96 Bit (32 Bit pro Farbkanal) sein. Die von den HDR-Bildsensoren 144 erfassten Bilddaten werden bei verschiedenen Ausführungsformen als Quellbilddaten bezeichnet. Die Quellbilddaten beinhalten beispielsweise eine Vielzahl von Bildern, die unter Verwendung der digitalen Belichtungskalibrierungsdaten 110 erfasst werden. Wie oben erörtert, sind die HDR-Bildsensoren 144, die Quellbilddaten aufzeichnen, bei verschiedenen Ausführungsformen an einem Fahrzeug (z. B. dem Landfahrzeug 104 oder dem Luftfahrzeug 106) montiert. Das Fahrzeug beinhaltet beispielsweise ein autonomes oder mindestens teilweise autonomes Fahrzeug, das mindestens zum Teil basierend mindestens teilweise auf den Quellbilddaten und/oder den Zielbilddaten gesteuert wird. Bei einigen Ausführungsformen erfolgt das Codieren der Quellbilddaten in einem linearen Farbraum, dem eine nichtlineare Abbildung fehlt.
  • Bei verschiedenen Ausführungsformen beinhalten die HDR-Bildsensoren 144 die digitalen Belichtungskalibrierungsdaten 110, sind davon betroffen und/oder unterliegen diesen. Die digitalen Belichtungskalibrierungsdaten 110 sind bei einer Ausführungsform feste, statische und/oder anderswie konstante Belichtungseinstellungen. Beispielsweise beinhalten digitale Belichtungskalibrierungsdaten 110 Belichtungseinstellungen, Blende, Verschlusszeit, Schärfentiefe, Bildsensorempfindlichkeit, Weißabgleich, Blitzeinstellungen, Farbeinstellungen oder beliebige andere Einstellungen eines Bildsensors, einer Kamera oder einer Rechenvorrichtung (z. B. Rechenvorrichtung 104-108, die Bildsensoren beinhaltet). Bei mindestens einer Ausführungsform stellt ein Benutzer mindestens einen Teil der digitalen Belichtungskalibrierungsdaten 110 manuell ein, die während der Erfassung der Quellbilddaten unverändert bleiben.
  • Bei verschiedenen Ausführungsformen werden die Quellbilddaten über ein Netzwerk zu dem Bildsignalverarbeitungssystem 140, das bei und/oder durch einen oder mehrere Dienste der Server-Computervorrichtung umgesetzt wird, bereitgestellt. Somit, obwohl die Quell-HDR-Bilddaten bei einem Beispiel von der Festeinstellungsvorrichtung 102 erfasst werden, können das Tonemapping und das Steuern der Helligkeit der Bilddaten offline auf der Server-Rechenvorrichtung ausgeführt werden. Anders ausgedrückt, kann das Tonemapping der HDR-Bilddaten auf eine andere Rechenvorrichtung ausgelagert werden, wie etwa, ohne darauf beschränkt zu sein, auf die Server-Rechenvorrichtung, die die Bilddaten nicht erfasst hat. Die verschiedenen Ausführungsformen ermöglichen verschiedene Engine- und/oder Computer-Vision-Merkmale eines autonomen Fahrzeugs, wie etwa, ohne darauf beschränkt zu sein, das Landfahrzeug 104 oder das Luftfahrzeug 106, oder unterstützen mindestens das Ermöglichen. Die Ausführungsformen können eingesetzt werden, um die Engine- und/oder Computer-Vision-Merkmale anderer Anwendungen zu ermöglichen, wie etwa, ohne darauf beschränkt zu sein, Roboteranwendungen.
  • Bei verschiedenen Ausführungsformen werden die Quellbilddaten, sobald die Quellbilddaten (z. B. Datensammlung für Maschinenlerntraining und Inferenzieren) gesammelt und gespeichert sind, von dem Bildsignalverarbeitungssystem 140 verarbeitet, um Zielbilddaten zu generieren. Diese Entkoppeln der Bildsignalverarbeitung und der Datensammlung erlaubt beispielsweise, dass die Verbesserungen und Korrekturen 120 und/oder Abstimmungsmodifikationen 122 auf eine oder mehrere Komponenten des Bildsignalverarbeitungssystems 140 angewandt werden, wie beispielsweise eine Tonemapping-Funktion. Dies ermöglicht es, die Quelldaten über einen langen Zeitraum wieder zu verwenden, ohne das Erfordernis, eine zusätzliche kostspielige und zeitaufwändige Datensammlung gemäß den in der vorliegenden Offenbarung beschriebenen Ausführungsformen auszuführen. Des Weiteren können die Verbesserungen und Korrekturen 120 und/oder Abstimmungsmodifikationen 122 auf beliebige der Komponenten des unten beschriebenen Bildsignalverarbeitungssystems 140 angewandt werden, wie den in den 2, 3, 4 und 4B beschrieben. Zusätzlich beinhalten bei verschiedenen Ausführungsformen die Verbesserungen und Korrekturen 120 und/oder Abstimmungsmodifikationen 122 das Hinzufügen zusätzlicher Komponenten und/oder Bildverarbeitungsalgorithmen zu dem Bildsignalverarbeitungssystem 140. Bei einem Beispiel beinhalten die Verbesserungen und Korrekturen 120 das Hinzufügen einer neuen Tonemapping-Funktion zu dem Bildsignalverarbeitungssystem 140. Bei noch einem weiteren Beispiel beinhalten die Abstimmungsmodifikationen 122 Änderungen an der Tonemapping-Funktion, um unterschiedliche Eigenschaften (z. B. heller, dunkler, Farbwerte, Farbsättigung, Kompressionsrate, Dynamikbereich usw.) der Zielbilddaten zu erzeugen.
  • Bei verschiedenen Ausführungsformen wird die Tonemapping-Funktion mindestens zum Teil auf mindestens einem Teil der Kontrollpunkte basierend bestimmt. Beispielsweise kann die Tonemapping-Funktion eine parametrische Funktion sein, die eine Kurve (z. B. eine globale Tonkurve) definiert. Die Parameter der Funktion können derart angepasst werden, dass die Kurve gezwungen wird, den Tieftonpunkt, den Mitteltonpunkt und den Hochtonpunkt zu durchlaufen (oder zu beinhalten). Bei einigen Ausführungsformen ist die Kurve ferner darauf beschränkt, durch mindestens einen Teil der zusätzlich bestimmten Punkte zu verlaufen.
  • Bei mindestens einer Ausführungsform kann das Bestimmen der Tonemapping-Funktion ferner mindestens zum Teil auf einem Verstärkungswert basieren. Bei einem Beispiel wird der Verstärkungswert mindestens zum Teil basierend auf dem Mitteltonpunkt und mindestens einem anderen der Tonkontrollpunkte, wie etwa, ohne darauf beschränkt zu sein, auf den Flare-Unterdrückungspunkt bestimmt. Der Verstärkungswert kann derart bestimmt werden, dass er der Steigung einer Verstärkungslinie, die durch den Mitteltonpunkt und den Flare-Unterdrückungspunkt verläuft, entspricht. Die Anpassung der Tonemapping-Funktion wird bei einer Ausführungsform ferner derart eingeschränkt, dass die abgeleitete und/oder momentane Änderungsrate der Funktion, die an einer der Komponenten des Mitteltonpunkts bewertet wird, mindestens ungefähr mit dem Wertgewinn gleichwertig ist. Bei verschiedenen Ausführungsformen generiert das Bildsignalverarbeitungssystem 140 Zielbilddaten (z. B. Bilder, die zum Ausführen des Modelltrainings 112 verwendet werden) durch mindestens Transformieren der erfassten Bilddaten über eine Anwendung der Tonemapping-Funktion auf die erfassten Bilddaten. Beispielsweise beinhalten die Zielbilddaten Zielpixelwerte, die durch die Anwendung der Tonemapping-Funktion auf die Pixelwerte der erfassten Bilddaten definiert werden.
  • Im Gegensatz zu herkömmlichen Ansätzen verwenden die verschiedenen Ausführungsformen der Bilderfassungssysteme feste digitale Belichtungskalibrierungsdaten 110, ohne sich auf automatische Belichtungseinstellungen (AE) zu verlassen, um einen weiten Bereich von Bildsignalverarbeitung (z. B. Offline-Bildverarbeitung) zu ermöglichen. Wie unten erläutert, können Bilder mit Tonemapping mehr Detail und Kontrast aufweisen. Darüber hinaus ermöglichen die verschiedenen Ausführungsformen das Steuern der Gesamtbildhelligkeit des HDR-Bildes und/oder des Tonemapping-Bildes ohne die Anwendung der digitalen Verstärkungsfunktion. Zusätzlich erlaubt das Erfassen von Bilddaten (z. B. den Rohdaten), die als Ergebnis einer festen Einstellung einheitlich sind, eine konsistente und modifizierbare Anwendung verschiedener Bildverarbeitungsalgorithmen (z. B. Tonemapping). Somit können Bilder, die von den verschiedenen Ausführungsformen generiert werden, erneut verarbeitet, optimiert oder anderswie mindestens zum Teil auf basierend auf verschiedenen Faktoren (z. B. Anwendung, Ergebnisse von trainierten Modellen, Bildqualität usw.) modifiziert werden. Beispielsweise kann ein bestimmtes erfasstes Bild erneut verarbeitet werden, um Flares (z. B. ein positiver Schwarzpunkt in den Bilddaten oder Fehler in der Schwarzwertsubtraktion) zu unterdrücken sowie Glanzlichter (z. B. Pixel mit signifikanten Helligkeitswerten) in den HDR-Bilddaten zu komprimieren.
  • Bei verschiedenen Ausführungsformen enthalten die digitalen Belichtungskalibrierungsdaten 110 eine Belichtungseinstellung oder -periode für die Erfassung mehrerer Bilder. Bei einem Beispiel ist das Festeinstellungserfassungssystem 102 an einem Fahrzeug angebracht und zeichnet Bilder auf, während das Fahrzeug fährt, um Trainingsdaten zum Verwenden beim Modelltraining 112 zu generieren. Ein HDR-Bild (codiert von HDR-Bilddaten) wird bei einer Ausführungsform durch Pixelwerte der mehreren SDR-Bilder generiert (z. B. von dem Festeinstellungserfassungssystem 102 erfasst). Die digitalen Belichtungskalibrierungsdaten 110 werden bei verschiedenen Ausführungsformen derart bestimmt, dass die resultierenden Bilder modifizierbar sind, um optimal für eine bestimmte Anwendung oder eine Vielzahl von Anwendungen verwendet zu werden. Beispielsweise erlaubt es das Verwenden längerer Belichtungseinstellungen für die digitalen Belichtungskalibrierungsdaten 110 den Pixelwerten des HDR-Bildes (z. B. nach der Bildsignalverarbeitung), die dunkleren Bereiche einer abgebildeten Szene detaillierter aufzuzeichnen. Das Verwenden der durch längere Belichtungszeiten generierten Pixelwerte kann es ermöglichen, mehr Details und Kontrast in den dunkleren Bereichen der Szene aufzuzeichnen. Bei einem anderen Beispiel erlaubt es das Verwenden kürzerer Belichtungseinstellungen für die digitalen Belichtungskalibrierungsdaten 110 HDR-Pixelwerten (z. B. nach der Bildsignalverarbeitung), die helleren Bereiche einer abgebildeten Szene aufzuzeichnen. Das Verwenden der durch kürzere Belichtungszeiten generierten Pixelwerte kann ein „Auswaschen“ oder einen überbelichteten Effekt auf die helleren oder strahlenderen Bereiche der Szene verhindern. Bei anderen Ausführungsformen können HDR-Bilddaten aus einem einzelnen Bild generiert werden, wobei die Bildsensoren (z. B. Kamerapixel) das Bild unter Verwendung der digitalen Belichtungskalibrierungsdaten 110 aufzeichnen.
  • Wie oben erwähnt, verlassen sich herkömmliche HDR-Kameras und -Systeme darauf, dass ein Benutzer die AE-Einstellungen seiner Kamera geeignet konfiguriert. Derartige AE-Einstellungen können automatische Belichtungsreiheneinstellungen (AEB) und/oder verschiedene AE-Modi (z. B. Nacht- und Tag-AE-Modi) beinhalten. Diese AE-Einstellungen ändern sich möglicherweise nicht oder nur unzulänglich, um sich an ihre aktuelle Umgebung anzupassen. Beispielsweise stellt eine herkömmliche HDR-Kamera möglicherweise keine separaten AE-Modi für einen sonnigen Tag, einen bewölkten Tag oder Zustände dazwischen bereit. Daher ist das Bildsignalverarbeitungssystem 140 durch Verwenden fester Einstellungen (z. B. der digitalen Belichtungskalibrierungsdaten 110 ) zum Erfassen einer Vielzahl von Bildern (z. B. Trainingsbildern) in der Lage, Verbesserungen und Korrekturen 120 auszuführen und Modifikationen daran auf das Bildsignalverarbeitungssystem 140 abzustimmen, um die Bildqualität zu verbessern, ohne dass ganz neue Bilder erfasst werden müssen.
  • Wenn beispielsweise AE-Modi Belichtungseinstellungen nicht angemessen bereitstellen, die den Lichtbedingungen mehrerer Szenen zum Zeitpunkt der Aufnahme entsprechen, spiegelt die Gesamthelligkeit der HDR-Bilder die Lichtbedingungen der Szenen möglicherweise nicht realistisch wider. Beispielsweise gibt das HDR-Bild die Szenen möglicherweise nicht so hell wieder oder kann eine verwaschene Wiedergabe der HDR-Bilder sein (selbst nach der Bildsignalverarbeitung), was für eine Vielfalt von Anwendungen suboptimal ist. Darüber hinaus setzen herkömmliche HDR-Kameras und -Systeme des Weiteren häufig eine digitale Verstärkungsfunktion, um die Leuchtkraft der HDR-Pixelwerte anzupassen oder zu verstärken, um diese Beleuchtungsfehlanpassung zu kompensieren. Unter verschiedenen Lichtverhältnissen und/oder AE-Einstellungen kann der auf die Pixel angewandte Verstärkungswert signifikant sein. Derartig große Verstärkungen sättigen und/oder clippen oft die helleren Bereiche des HDR-Bildes, was dazu führen kann, dass diese Bereiche ausgewaschen oder überbelichtet erscheinen. Bei verschiedenen Ausführungsformen werden durch Verwenden der digitalen Belichtungskalibrierungsdaten 110 für das Erfassen der mehreren Szenen konsistente und optimale Ergebnisse als ein Ergebnis des Bildsignalverarbeitungssystems 140 erhalten.
  • Zusätzlich kann herkömmliches Tonemapping zu einer verlustbehafteten Kompression der HDR-Bilddaten führen und in vielen Szenarien die Qualität des Bildes mit niedrigerem Dynamikbereich oder eines Bildes mit Standard-Dynamikbereich im Vergleich zum HDR-Bild erheblich verschlechtern. Genauer gesagt kann herkömmliches Tonemapping in seiner Fähigkeit, die kritischen Informationen von HDR-Bilddaten zu bewahren, eingeschränkt werden. Herkömmliches Tonemapping bewahrt möglicherweise keine wesentliche Menge der kritischen Informationen der HDR-Bilddaten, insbesondere wenn die oben erläuterten AE-Einstellungen und/oder -Modi für die aktuellen Lichtverhältnisse der Szene ungeeignet sind. Wenn beispielsweise eine schwach beleuchtete Szene abgebildet wird, gelingt es dem Benutzer eventuell nicht, eine herkömmliche HDR-Kamera vom Tagmodus auf den Nachtmodus umzuschalten. Das HDR-Bild kann unterbelichtet erscheinen, weil die HDR-Bilddaten einen Großteil der Details und des Kontrasts der dunkleren Regionen der abgebildeten Szene nicht codieren können. Wenn ein SDR-Bild (oder ein LDR-Bild) aus den unterbelichteten HDR-Bilddaten generiert wird, kann daher das unterbelichtete Aussehen des SDR-Bildes sogar noch deutlicher werden. Daher werden bei verschiedenen Ausführungsformen durch Ausführen der Bildsignalverarbeitung „offline“ (z. B. nachdem die Bilder unter Verwendung fester Kalibrierungseinstellungen erfasst wurden) kritische Informationen konserviert, und das Bildsignalverarbeitungssystem 140 ist in der Lage, detailliertere Bilder mit höherer Qualität zu generieren, die bessere Leistung ergeben.
  • Selbst wenn die AE-Einstellungen für die aktuellen Lichtbedingungen geeignet sind, können zusätzlich die Lichtbedingungen über Zeitspannen hinweg dynamisch sein, während die AE-Einstellungen konstant gehalten werden oder sich als Reaktion auf die Bedingungen langsam ändern können. Beispielsweise können sich die Bedingungen von hell und sonnig zu bedeckt und bewölkt ändern, und die Änderung der AE-Einstellung berücksichtigt die Änderung der Bedingungen möglicherweise nicht angemessen und/oder ändert sich schnell genug. Da herkömmliches Tonemapping auf Einzelbild-Ebene angewandt wird, kann herkömmliches Mapping als Ergebnis dynamische Bedingungen nicht ohne Weiteres berücksichtigen. Beispielsweise kann während der Erfassung von HDR-Videobilddaten ein relativ helles Objekt (z. B. ein stark reflektierendes Objekt oder ein Objekt, das eine Lichtquelle beinhaltet) in die Szene eintreten und die aktuellen AE-Einstellungen können für die Einführung des hellen Objekts ungeeignet sein. Herkömmliches Tonemapping kann das dynamisch hell erleuchtete Objekt als überbelichtet rendern, und die Gesamthelligkeit der Videobilddaten kann schwanken. Bei verschiedenen Ausführungsformen ermöglicht es jedoch das Verwenden des Festeinstellungserfassungssystems 102 dem Bildsignalverarbeitungssystem 140, Bilder genau zu verarbeiten und/oder anzupassen, um derartige dynamischen Bedingungen zu berücksichtigen.
  • Bei verschiedenen Ausführungsformen beinhaltet die Tonemapping-Funktion, die von dem Bildsignalverarbeitungssystem 140 angewandt wird, eine Global-Tonemapping-Funktion (GTM-Funktion) und/oder eine Global Tone Curve (GTC). Die Tonemapping-Funktion wird beispielsweise dynamisch und/oder global mindestens zum Teil basierend auf dem HDR-Bild, der Anwendung, für die das Bild verwendet wird, oder anderen Erwägungen bestimmt. Somit kann die Tonemapping-Funktion eingesetzt werden, um die HDR-Bilddaten dynamisch und global abzubilden. Bei Anwendung auf die HDR-Bilddaten bildet die Tonemapping-Funktion den Ton (z. B. die Helligkeit) der HDR-Bilddaten derart ab, dass die tontransformierten HDR-Bilddaten eine Bildhelligkeit, die zu den Beleuchtungsbedingungen der abgebildeten Szene passt, codieren können. Die Tonemapping-Funktion kann auch visuelle Artefakte aufgrund der HDR-Bildgebung minimieren (z. B. Flare-Unterdrückung und Kompression von Spitzlichtern).
  • Bei verschiedenen Ausführungsformen werden die HDR-Bilddaten nach dem Tonemapping in SDR- oder LDR-Bilddaten über ein Filtern der niederwertigsten Bits (LSBs) der HDR-Pixelwerte komprimiert. Bei einigen Ausführungsformen werden die Tonemapping-HDR-Bilddaten vor der Pixeltiefenreduktion über eine Gammakompressionsfunktion farbkomprimiert. Beispielsweise werden HDR-Bilddaten über feste Belichtungseinstellungen (z. B. digitale Belichtungskalibrierungsdaten 110) erfasst, und die erfassten HDR-Bilddaten werden als Quellbilddaten bezeichnet. Die Tonemapping-Funktion kann von dem Bildsignalverarbeitungssystem 140 (oder eine Komponente davon, wie nachstehend ausführlicher beschrieben) mindestens zum Teil basierend auf einer Analyse von Pixelwerten der Quellbilddaten dynamisch bestimmt werden. Die Tonemapping-Funktion ist bei einer Ausführungsform eine nichtlineare Funktion, die Quellpixelwerte der Quellbilddaten auf Zielpixelwerte von Zielbilddaten abbildet. Bei nichtlinearen Ausführungsformen werden die nichtlineare Tonemapping-Funktion und/oder GTM-Funktion in 2D-Koordinaten als globale Tonemapping-Kurve (GTC) aufgetragen.
  • Bei verschiedenen Ausführungsformen bestimmt das Bildsignalverarbeitungssystem 140 (oder eine Komponente davon) zum Generieren der Tonemapping-Funktion eine Vielzahl von Kontrollpunkten mindestens zum Teil basierend auf der dynamischen Analyse der Quellbilddaten. Die Kontrollpunkte werden beispielsweise in einer Ebene definiert, die von den Bereichen der Quell- und Zielpixelwerte überspannt wird. Bei einigen Ausführungsformen werden die Kontrollpunkte mindestens zum Teil basierend auf einem Interessensbereich (ROI) der Quellbilddaten definiert. Die Tonemapping-Funktion definiert bei einem Beispiel eine nichtlineare Eins-zu-Eins-Abbildung zwischen den Werten der Quellbildpixel und den Werten der Zielbildpixel. Beispielsweise definiert (oder wertet mindestens zu einer numerischen Annäherung davon) die Tonemapping-Funktion eine Kurve in der Quell-/Zielebene aus. Bei einer Ausführungsform ist die Kurve eine Annäherung an eine Kurve (z. B. eine Vielzahl stückweiser linearer Segmente mit variierenden Steigungen). Bei einem Beispiel ist die Tonemapping-Funktion eine Spline-Funktion, die Polynome mit einem Grad größer als 1 beinhaltet. Bei einigen Ausführungsformen ist die Tonemapping-Funktion eine lineare Eins-zu-Eins-Abbildungsfunktion. Die Kontrollpunkte innerhalb der Ebene definieren beispielsweise eine oder mehrere Beschränkungen für die Tonemapping-Funktion. Bei einigen Ausführungsformen wird eine parametrisierte Tonemapping-Funktion (z. B. können die Parameter, die das Tonemapping definieren, durch Minimieren einer Differenz- oder Kostenfunktion ausgewählt werden), mindestens zum Teil auf der einen oder den mehreren Einschränkungen basierend, angepasst. Genauer gesagt kann die Kostenfunktion von der einen oder den mehreren Einschränkungen definiert werden. Beispielsweise wird eine Spline-Funktion mit Polynomsegmenten beliebigen Grades mindestens zum Teil basierend auf der einen oder den mehreren Beschränkungen angepasst.
  • Bei verschiedenen Ausführungsformen gibt mindestens ein Teil der Kontrollpunkte Beschränkungen für das Tonemapping einer spezifischen und einer endlichen Anzahl von Quellpixelwerten und entsprechenden Zielpixelwerten an. Um Flares zu unterdrücken und Flares zu komprimieren, definieren bei verschiedenen Ausführungsformen einige der Kontrollpunkte Flare-Unterdrückungs- oder Glanzlichtkompressionssschwellenwerte für die Quellbilddaten. Mindestens einige der Kontrollpunkte werden bei einer Ausführungsform dazu eingesetzt, eine Ableitung (oder mindestens eine numerische Annäherung davon) der Tonemapping-Funktion, die an einem oder mehreren Kontrollpunkten ausgewertet wird, einzuschränken. Somit können einige der Kontrollpunkte eingesetzt werden, um die Steigung der Verstärkung (z. B. des Verstärkungswerts) der Tonemapping-Funktion an einem oder mehreren anderen Kontrollpunkten zu beschränken.
  • Bei einigen Ausführungsformen werden mindestens drei Kontrollpunkte bestimmt: ein Tieftonpunkt, ein Mitteltonpunkt und ein Hochtonpunkt. Der Tieftonpunkt definiert beispielsweise ein Tonemapping zwischen dem niedrigsten Pixelwert der Quellbilddaten und dem niedrigsten Pixelwert der Zielbilddaten sowie einen Flare-Unterdrückungsschwellenwert für die Quellbilddaten. In ähnlicher Weise definiert beispielsweise der Hochtonpunkt ein Tonemapping zwischen dem höchsten Pixelwert der Quellbilddaten und dem höchsten Pixelwert der Zielbilddaten sowie einen Glanzlichtkompressionsschwellenwert für die Quellbilddaten. Der Mitteltonpunkt definiert beispielsweise ein Tonemapping zwischen einem Mitteltonwert der Quellbilddaten und einem Mitteltonwert der Zielbilddaten. Wie unten erörtert, wird der Mitteltonpunkt bei einigen Ausführungsformen zusätzlich dazu eingesetzt, die Ableitung der Tonemapping-Funktion einzuschränken.
  • Weil der Tieftonpunkt bei einigen Ausführungsformen die Abbildung zwischen Tonwerten für die dunkelsten oder „schwarzen“ Pixel der Quell- und Zielbilddaten definiert, kann der Tieftonpunkt ein „Schwarzpunkt“ (BP) der Abbildung sein. Ebenso, weil der Hochtonpunkt bei einigen Ausführungsformen die Abbildung zwischen Tonwerten für die hellsten oder „weißen“ Pixel der Quell- und Zielbilddaten definiert, ist der Tieftonpunkt bei einigen Ausführungsformen ein „Weißpunkt“ (WP) der Abbildung. Bei einigen Ausführungsformen werden beim Anpassen der Tonemapping-Funktion die Tonemapping-Parameter ausgewählt, um die Tonemapping-Funktion zu zwingen, diese Kontrollpunkte zu bewerten (oder mindestens approximieren). Die Tonemapping-Funktion ist bei noch anderen Ausführungsformen darauf beschränkt, zusätzliche Kontrollpunkte (oder mindestens approximieren) auszuwerten.
  • Bei mindestens einigen Ausführungsformen ist die Ableitung (oder mindestens die numerische Annäherung davon) der Tonemapping-Funktion auf den Mitteltonpunkt oder irgendeinen anderen derartigen Kontrollpunkt beschränkt. Somit kann die Steigung der Mitteltonverstärkung (definiert über die Tonemapping-Funktion) eingeschränkt und/oder auf den Mitteltonpunkt gesetzt werden. Um die Ableitung (oder die numerische Approximation davon) der Tonemapping-Funktion auf den Mitteltonpunkt einzuschränken, wird bei verschiedenen Ausführungsformen ein zusätzlicher Kontrollpunkt definiert. Die Ableitung der Tonemapping-Funktion, die beispielsweise an dem Mitteltonpunkt ausgewertet wird, wird derart eingeschränkt, dass sie mindestens ungefähr gleich der Steigung einer Linie (z. B. Verstärkungswert) ist, die durch den Mitteltonpunkt und einen zusätzlichen Kontrollpunkt verläuft. Bei einem derartigen Beispiel ist der zusätzliche Kontrollpunkt ein Punkt zur maximalen Flare-Entfernung (MFR), der einen Schwellenwert für die Quellpixelwerte spezifiziert, um Flares zu entfernen.
  • Als weitere Beispiele wird die Steigung der Mitteltonverstärkung derart eingeschränkt, dass sie mindestens annähernd zu dem Verhältnis des Mitteltons der Zielbilddaten zum Mittelton der Quellbilddaten äquivalent ist. Als noch weitere Beispiele wird die Steigung der Mitteltonverstärkung durch andere Verfahren eingestellt (z. B. eine benutzerkonfigurierbare Einstellung). Beispielsweise werden nach Beobachtung durch einen Benutzer die Steigung der Mitteltonverstärkung oder andere Parameter des Bildsignalverarbeitungssystems 140 modifiziert, um verbesserte Ergebnisse zu erzielen. Bei verschiedenen Ausführungsformen werden beim Anpassen der parametrisierten Tonemapping-Funktion die Parameter ausgewählt, um die Ableitung der Tonemapping-Funktion, die an dem Mitteltonpunkt bewertet wird, zu zwingen, mindestens die Mitteltonverstärkung, die in diesen oder auf eine andere Art definiert ist, zu approximieren.
  • Bei einer Ausführungsform generiert das Bildsignalverarbeitungssystem 140, sobald die Tonemapping-Funktion bestimmt ist, die Zielbilddaten durch Anwenden der Tonemapping-Funktion auf die Quellbilddaten (z. B. Rohdatenerfassung durch das Festeinstellungserfassungssystem 102). Bei einigen Ausführungsformen werden statistische Metriken der Quellbilddaten bestimmt und die Kontrollpunkte werden aus den statistischen Metriken bestimmt. Einige der offenbarten Ausführungsformen werden in fahrzeugmontierten Bildgebungsvorrichtungen (z. B. Dashcams) eingesetzt. Ferner werden die verschiedenen Ausführungsformen in autonomen Fahrzeuganwendungen oder anderen derartigen maschinellen Bildverarbeitungsanwendungen eingesetzt. Die Ausführungsformen können bei jeder Anwendung eingesetzt werden, die ein oder mehrere maschinelle und/oder Computer-Vision-Verfahren einsetzt. Beispielsweise können die Ausführungsformen eingesetzt werden, um beliebige der verschiedenen Maschinenvisionsfunktionen eines autonomen Fahrzeugs zu ermöglichen (siehe 9A-9D ). Die Ausführungsformen können eingesetzt werden, um maschinelles Sehen in einem Roboter, wie etwa, ohne darauf beschränkt zu sein, einem Fertigungsroboter, zu ermöglichen.
  • 2 veranschaulicht eine Umgebung 200, in der eine Offline-Bildsignalverarbeitung 240 gemäß mindestens einer Ausführungsform an Rohdaten, die während der Datensammlung 202 erhalten werden, ausgeführt wird. Bei verschiedenen Ausführungsformen beinhaltet die Datenerfassung 202 das Erfassen von Rohdaten, die eine oder mehrere Umgebungen darstellen, mit einem oder mehreren Bildsensoren 244. Beispielsweise beinhaltet die Datensammlung 202 das Erfassen eines Satzes von Bildern von Objekten im Kontext, wie Fußgänger, Verkehrssignale, Baustellen, Ausrüstung oder andere Objekte. Bei verschiedenen Ausführungsformen beinhalten der/die Bildsensor(en) 244 eine oder mehrere unterschiedliche Arten von Sensoren, wie z. B. Sensor(en) für globale Navigationssatellitensysteme, Sensor(en) für Funkerfassung und Entfernungsmessung (RADAR), Ultraschallsensor(en), Lichterfassung und Entfernungssensor(en), LIDAR-Sensor(en), Trägheitsmesseinheitsensoren (IMU-Sensor(en)), Stereokamera(s), Weitwinkelkamera(s), Infrarotkamera(s), Surround-Kamera(s), Weitbereichs- und/oder Mittelbereichkamera(s) und/oder andere Sensortypen, die nachstehend in Verbindung mit den 13A-13D ausführlicher beschrieben sind. Der/die Bildsensor(en) 244 beinhalten bei noch anderen Ausführungsformen eine Vielfalt von Sensoren, wie beispielsweise den/die HDR-Bildsensor(en) 344, die unten in Verbindung mit 3 beschrieben sind. Zusätzlich, beispielsweise in 2 veranschaulicht, arbeiten der/die Bildsensor(en) 244 gemäß Belichtungseinstellungen 242. Bei verschiedenen Ausführungsformen beinhalten die Belichtungseinstellungen 242 feste Belichtungseinstellungen für den/die Bildsensor(en) 244, die während der Datensammlung 202 verwendet werden sollen. Bei einem Beispiel beinhalten die Belichtungseinstellungen 242 Einstellungen für eine Rechenvorrichtung, die den/die Bildsensor(en) 244 beinhaltet, wie etwa die oben in Verbindung mit 1 beschriebenen digitalen Belichtungskalibrierungsdaten 110.
  • Die Offline-Bildsignalverarbeitung 240 beinhaltet bei verschiedenen Ausführungsformen verschiedene Komponenten, wie Bildverarbeitung 258, ein Statistikmodul 252, Tonemapping 256 und/oder andere Verarbeitung 250. Die verschiedenen Komponenten der Offline-Bildsignalverarbeitung 240 können beispielsweise dedizierte Hardware und/oder ausführbaren Code oder andere Anweisungen beinhalten, die, wenn sie von einem oder mehreren Prozessoren einer Rechenvorrichtung ausgeführt werden, die Rechenvorrichtung veranlassen, die Vorgänge, die in der vorliegenden Offenbarung beschrieben sind, auszuführen. Bei einer Ausführungsform beinhaltet die Bildverarbeitung 258 das Ausführen von Vorgängen an den Quellbilddaten (z. B. den während der Datensammlung 202 gesammelten Rohdaten), um die Quellbilddaten auf das Tonemapping 256 vorzubereiten. Beispielsweise beinhaltet die Bildverarbeitung 258 Datenumwandlung (z. B. Umwandeln der Rohdaten von einem Format in ein anderes), Anpassen von Schwarzpegeln, Farbwerten, Sättigung, Demosaikierung, Rauschentfernung oder andere Vorgänge zum Vorbereiten der zu verarbeitenden Quellbilddaten durch eine Tonemapping-Funktion.
  • Bei Ausführungsformen, die die Funktionsfähigkeit des Statistikmoduls 252 beinhalten und/oder ermöglichen, bestimmt und/oder generiert das Statistikmodul 252 mehrere statistische Metriken mindestens zum Teil basierend auf den Pixelwerten der Quellbilddaten (oder den Pixelwerten eines Teils der Quellbilddaten). Bei einem Beispiel beinhaltet die Vielzahl statistischer Metriken statistische Metriken, die mindestens zum Teil auf den Pixelwerten der Quellbilddaten basieren. Die statistischen Metriken beinhalten bei verschiedenen Ausführungsformen einen oder mehrere Parameter, die eine beliebige kontinuierliche oder diskrete statistische Verteilung und/oder ein beliebiges Histogramm, das aus den Quellbilddaten konstruiert werden kann, charakterisieren. Derartige Parameter beinhalten beispielsweise einen Mittelwert, Medianwert und/oder eine Standardabweichung einer oder mehrerer statistischer Verteilungen, die von den Pixelwerten der Quellbilddaten abgeleitet sind.
  • Bei verschiedenen Ausführungsformen führt das System, das die Offline-Bildsignalverarbeitung 240 ausführt, sobald die Rohdaten verarbeitet sind (z. B. Bildverarbeitung 258), ein Tonemapping 256 aus. Bei noch anderen Ausführungsformen wird das Tonemapping 256 ausgeführt, ohne die Rohdaten zu verarbeiten oder anderswie zu modifizieren. Das Tonemapping 256 beinhaltet bei verschiedenen Ausführungsformen das Anwenden einer oder mehrerer Tonemapping-Funktionen auf Quellbilddaten, um Zielbilddaten zu generieren. In Verbindung mit verschiedenen Ausführungsformen, die nachstehend beschrieben sind, können unterschiedliche Tonemapping-Funktionen, beispielsweise die nachstehend beschriebenen Tonemapping-Funktionen, verwendet werden. Zusätzlich können verschiedene Tonemapping-Funktionen, die in der US-Patentanmeldungsveröffentlichung Nr. 2021/0035273 von Deng et al. durch Bezugnahme aufgenommen, als ob sie in ihrer Gesamtheit dargelegt wäre, als ein Beispiel für die Tonemapping-Funktion 256 verwendet werden.
  • Bei einer Ausführungsform führt das System, das die Offline-Bildsignalverarbeitung 240 ausführt, andere Verarbeitung 250 aus. Wie in 2 gezeigt, ist die andere Verarbeitung 250 bei verschiedenen Ausführungsformen optional und kann mindestens zum Teil basierend auf einer Anwendung der Ergebnisse enthalten sein oder entfernt werden. Beispielsweise beinhaltet die andere Verarbeitung 250 Bildkonvertierung (z. B. Bildformatierung), Datenumwandlung (z. B. Metadaten), Bildfilterung, Pixelierung, Bildauffüllung, affine Transformationen, Weißabgleich, Farbkorrektur oder jede andere Vor- oder Nachverarbeitung von Bildern oder andere Datenverarbeitungstechniken. Die Offline-Bildsignalverarbeitung 240 erzeugt nach Abschluss (z. B. nach Ausführung durch ein Computersystem) einen Satz von Ergebnissen einschließlich Zielbilddaten. Wie in 2 veranschaulicht, beinhalten die Ergebnisse bei verschiedenen Ausführungsformen Bild(er) 256 (z. B. Zielbilddaten) und neuronale Netzwerke 262.
  • Bei verschiedenen Ausführungsformen beinhalten die Bilder 260 Zielbilddaten, die Zielpixelwerte beinhalten, die durch Anwenden der Tonemapping-Funktion 256 (und/oder einer anderen Bildverarbeitung 250 ) auf die Pixelwerte der Quellbilddaten definiert werden. Das Bild bzw. die Bilder 260 können beispielsweise LDR- oder HDR-Bilder beinhalten, die aus der Offline-Bildsignalverarbeitung 240 resultieren. Bei verschiedenen Ausführungsformen beinhalten das/die neuronale(n) Netzwerk(e) 262 neuronale Netzwerke, die mindestens zum Teil basierend auf dem/den Bild(ern) 260 trainiert wurden. Bei einem Beispiel umfassen das/die neuronale(n) Netzwerk(e) 262 verschiedene neuronale Netzwerke, wie unten in Verbindung mit 13D beschrieben. Bei mindestens einer Ausführungsform umfasst ein neuronales Netzwerk 262 ein oder mehrere neuronale Netzwerke, die mindestens zum Teil basierend auf Eingabedaten (z. B. das (die) Bild(er) 260) einen oder mehrere Aspekte der Eingabedaten klassifizieren Somit umfassen beispielsweise das neuronale Netzwerk bzw. die neuronalen Netzwerke 262 ein oder mehrere neuronale Netzwerke zum Ausführen von Bildverarbeitungs-Tasks, die ein oder mehrere Merkmale von Bilddaten (z. B. Zielbilddaten) klassifizieren. Das (die) neuronale(n) Netzwerk(e) 262 umfassen bei einer Ausführungsform verschiedene Typen von Maschinenlernmodellen in Abhängigkeit von der Umsetzung (z. B. dem Vorgang, der durch das (die) neuronale(n) Netzwerk(e) 262ausgeführt werden soll(en)). Somit können die neuronalen Netzwerk(e) 262 beispielsweise ein oder mehrere Modelle zu maschinellen Lernen beinhalten, die lineare Regression, logistische Regression, Entscheidungsbäume, Stützvektor-Engines (SVM), Naive Bayes, k-nächster Nachbar (k-nearest neighbor - Knn), k-Means-Clustering, Random Forest, Dimensionsreduktionsalgorithmen, Gradientenverstärkungsalgorithmen, neuronale Netzwerke z. B. Autocodierer, faltende, rekurrente Perzeptronen, Lang-/Kurzzeitspeicher (Long/Short Term Memory - LSTM), Hopfield, Boltzmann, Deep Belief, entfaltenden, generativen gegnerischen, Flüssigkeitszustands-Engine usw.) und/oder andere Typen von Modellen des maschinellen Lernens beinhalten. Spezifischer beinhaltet als ein Beispiel ein neuronales Faltungsnetzwerk (CNN) bereichsbasierte oder regionale neuronale Faltungsnetzwerke (RCNNs) und Schnelle RCNNs (z. B. wie zur Objekterfassung verwendet) oder eine andere Art von CNN. Des Weiteren beinhaltet/beinhalten bei verschiedenen Ausführungsformen das/die neuronale (n) Netzwerk(e) 262 eine Vielzahl von Modellen, die statisch oder dynamisch bestimmt werden können, mindestens zum Teil basierend auf einer Anwendung (z. B. Objekterfassung, autonome Fahrzeuge usw.).
  • Bei verschiedenen Ausführungsformen werden die Ergebnisse (z. B. das Bild/die Bilder 260 und/oder das/die neuronale(n) Netzwerk(e) 262 bewertet, um Verbesserungen und Korrekturen 266 und/oder Abstimmungsänderungen 264 an der Offline-Bildsignalverarbeitung 240 oder Komponenten davon zu bestimmen. Bei einem Beispiel untersucht ein Benutzer das Bild/die Bilder 260, um zu bestimmen, ob es ein oder mehrere Probleme mit dem/den Bild/Bildern 260 gibt, die durch Verbesserungen und Korrekturen 266 und/oder Feinabstimmungsänderungen 264 korrigiert werden müssen. Auf ähnliche Weise werden bei einem anderen Beispiel von dem/den neuronalen Netzwerk(en) 262 generierte Ergebnisse ausgewertet, um zu bestimmen, ob es ein oder mehrere Probleme mit der Offline-Bildsignalverarbeitung 240 oder Komponenten davon gibt, die durch Verbesserungen und Korrekturen 266 und/oder Abstimmungsänderungen korrigiert werden müssen 264. Bei verschiedenen Ausführungsformen beinhalten das eine oder die mehreren Probleme helle und/oder dunkle Bereiche des Bildes/der Bilder 260, Qualitätsprobleme mit dem Bild/den Bildern 260, Leistungsprobleme mit dem/den neuronalen Netzwerk(en) 262 (z. B. Fehler in bestimmten Beleuchtungsbedingungen), Probleme mit dem von dem/den neuronalen Netzwerk(en) 262 ausgeführten Inferenzieren (z. B. Fehlklassifizierung von Eingabedaten) oder irgendwelche anderen Probleme, die mit dem Bild/den Bildern 260 und/oder dem/den neuronalen Netzwerk(en) 262 assoziiert sind und durch Verbesserungen und Korrekturen 266 und/oder Abstimmungsänderungen 264 an der Offline-Bildsignalverarbeitung 240 korrigierbar sind.
  • Bei verschiedenen Ausführungsformen werden die Verbesserungen und Korrekturen 266 und/oder Abstimmungsänderungen 264 auf die Offline-Bildsignalverarbeitung 240 angewandt und dieselben Rohdaten (z. B. die Quellbilddaten, die verwendet werden, um die den Ergebnissen entsprechenden Zielbilddaten zu generieren) werden unter Verwendung der Verbesserungen und Korrekturen 266 und/oder der Abstimmungsänderungen 264 erneut verarbeitet. Beispielsweise können als ein Ergebnis der Verwendung der festen Belichtungseinstellungen 242 die Verbesserungen und Korrekturen 266 und/oder Abstimmungsänderungen 264 auf die Offline-Bildsignalverarbeitung 240 angewandt werden, ohne dass eine zusätzliche Datensammlung 202 ausgeführt werden muss. Bei verschiedenen Ausführungsformen können durch Entkoppeln der Datenerfassung 202 von der Bildsignalverarbeitung (z. B. durch Ausführen einer Offline-Bildsignalverarbeitung 240) dieselben Rohdaten verwendet werden, um unterschiedliche Ergebnisse zu generieren, indem mindestens die Verbesserungen und Korrekturen 266 angewandt und/oder Änderungen 264 vorgenommen werden. Beispielsweise kann durch Verwenden der gleichen Belichtungseinstellungen für die Datensammlung 202 die Offline-Bildsignalverarbeitung 240 auf die Quelldaten angewandt werden, um vorhersagbare und konsistente Zieldaten (z. B. ähnliche Lichtstärken, Farbbalance usw.) zu generieren. Als ein Ergebnis werden bei verschiedenen Ausführungsformen die Ergebnisse der Offline-Bildsignalverarbeitung 240 (z. B. das Bild/die Bilder 260 und/oder das/die neuronale(n) Netzwerk(e) 262) bewertet, die Verbesserungen und Korrekturen 266 und/oder Abstimmungsänderungen 264 werden angewandt, dann werden neue Zielbilddaten unter Verwendung der Quellbilddaten generiert, wodurch die Notwendigkeit umgangen wird, neue Quellbilddaten zu sammeln (z. B. eine zusätzliche Datensammlung 202 auszuführen).
  • Bei verschiedenen Ausführungsformen beinhalten die Abstimmungsänderungen 264 Modifikationen an dem Tonemapping 256 oder anderen Bildverarbeitungsalgorithmen, die während der Offline-Bildsignalverarbeitung 240 verwendet werden. Bei einem Beispiel werden verschiedene Komponenten des Tonemapping 256, wie etwa Kontrollpunkte, Flare-Unterdrückung, Verstärkungskurven, Verstärkungslinien, Tonemapping-Funktionen oder andere Komponenten einer oder mehrerer Tonemapping-Funktionen, wie in der vorliegenden Offenbarung beschrieben (z. B. 3-4B) mindestens zum Teil basierend auf den Abstimmungsänderungen 264 modifiziert. Bei einer Ausführungsform modifizieren die Verbesserungen und Korrekturen 266 eine oder mehrere andere Komponenten der Offline-Bildsignalverarbeitung 240. Bei einem Beispiel modifizieren, fügen hinzu oder entfernen die Verbesserungen und Korrekturen 266 Komponenten der Bildverarbeitung 258 und/oder anderer Verarbeitung 250 der Quellbilddaten. Bei einer Ausführungsform beinhalten die Verbesserungen und Korrekturen 266 und die Abstimmungsänderungen 264 einen einzelnen Satz von Modifikationen an der Offline-Bildsignalverarbeitung 240.
  • Unter Bezugnahme auf 3, stellt 3 ein schematisches Diagramm eines Systems 300 gemäß einigen Ausführungsformen der vorliegenden Offenbarung bereit. Beispielsweise beinhaltet das System 300 ein High-Dynamic-Range-Bildgebungssystem (HDRI-System). Es versteht sich, dass diese und andere hierin beschrieben Anordnungen nur als Beispiele aufgeführt werden. Andere Anordnungen und Elemente (z. B. Maschinen, Schnittstellen, Funktionen, Reihenfolgen, Gruppierungen von Funktionen usw.) können zusätzlich zu oder an Stelle der gezeigten verwendet werden, und einige Elemente können ganz weggelassen werden. Ferner sind viele der hier beschriebenen Elemente funktionale Entitäten, die als diskrete oder verteilte Komponenten oder in Verbindung mit anderen Komponenten und in einer beliebigen geeigneten Kombination und an einem beliebigen geeigneten Ort umgesetzt werden können. Verschiedene Funktionen, die hier als von Entitäten ausgeführt beschrieben werden, können durch Hardware, Firmware und/oder Software vollzogen werden. Zum Beispiel können verschiedene Funktionen von Logikvorrichtungen ausgeführt werden, wie etwa, ohne darauf beschränkt zu sein, einen Allzweckprozessor 322 und/oder einen Bildsignalprozessor (ISP) 324, der im Speicher gespeicherte Anweisungen ausführt.
  • Bei verschiedenen Ausführungsformen kann das System 300 unter anderem Computervorrichtungen beinhalten, die einen oder mehrere Bildsensoren (z. B. eine Kamera) beinhalten. Derartige Rechenvorrichtungen beinhalten beispielsweise, ohne darauf beschränkt zu sein, eine mobile oder stationäre Kamera (z. B. eine Handkamera, ein Smartphone, ein Tablet oder dergleichen), ein bemanntes oder unbemanntes Landfahrzeug (z. B. ein Fahrzeug 304), ein bemanntes oder unbemanntes Luftfahrzeug (z. B. eine Drohne 306) oder ein tragbares Gerät (z. B. eine intelligente Brille 308). Derartige Rechenvorrichtungen, die einen oder mehrere Bildsensoren enthalten, können hier gemeinsam als die Kamerarechenvorrichtungen 302-308 bezeichnet werden. Beispielsweise beinhalten die Kamerarechenvorrichtungen einen oder mehrere HDR-Bildsensoren 344 und HDR-Sensorbelichtungseinstellungen 342.
  • Bei verschiedenen Ausführungsformen zeichnen die HDR-Bildsensoren 344 Bilddaten auf, die HDR-Bilddaten enthalten. Beispielsweise codieren die erfassten HDR-Bilddaten ein Bild oder eine Szene, die von den HDR-Bildsensoren 344 abgebildet wird. Die von den HDR-Bildsensoren 344 erfassten Bilddaten werden bei verschiedenen Ausführungsformen als Quellbilddaten bezeichnet. Somit umfassen Quellbilddaten bei mindestens einem Beispiel HDR-Bilddaten, die ein HDR-Quellbild codieren. Wie durchgehend erörtert, sind die HDR-Bildsensoren 344, die Quellbilddaten aufzeichnen, bei einer Ausführungsform an einem Fahrzeug (z. B. dem Landfahrzeug 304 oder dem Luftfahrzeug 306) montiert. Beispielsweise kann das Fahrzeug ein autonomes oder mindestens teilweise autonomes Fahrzeug sein, und das Fahrzeug kann mindestens zum Teil basierend auf den Quellbilddaten und/oder Zielbilddaten 360 gesteuert werden. Bei einigen Ausführungsformen erfolgt das Codieren der Quellbilddaten in einem linearen Farbraum, dem eine nichtlineare Abbildung fehlt. Die HDR-Bildsensoren 344 beinhalten die eine oder mehreren HDR-Sensor-Belichtungseinstellungen 342 gemäß mindestens einer Ausführungsform, sind davon betroffen und/oder unterliegen diesen. Wie oben beschrieben, sind die HDR-Sensor-Belichtungseinstellungen 342 bei verschiedenen Ausführungsformen feste, statische und/oder konstante Belichtungseinstellungen. Bei derartigen Ausführungsformen wird mindestens ein Teil der Werte der Belichtungseinstellungen 342 des HDR-Sensors mindestens zum Teil basierend auf den Beleuchtungsbedingungen der abzubildenden Szene und/oder anderen Umgebungsbedingungen bestimmt. Beispielsweise werden die HDR-Sensor-Belichtungseinstellungen 342 derart bestimmt, dass die HDR-Bildsensoren 344 eine ausreichende Menge an Daten für diverse Umgebungs- und Lichtbedingungen (z. B. Regen, klarer Himmel, Nachtbild, helles Tageslicht usw.) aufzeichnen. Bei mindestens einer Ausführungsform stellt ein Benutzer mindestens einen Teil der Belichtungseinstellungen 342 des HDR-Sensors manuell derart ein, dass er während einer Dauer der Datensammlung fest bleibt.
  • Obwohl einige Kamerarechenvorrichtungen in 3 veranschaulicht sind, soll dies nicht einschränkend sein. Bei jedem Beispiel kann es eine beliebige Anzahl von Kamerarechenvorrichtungen und/oder Kamerarechenvorrichtungen geben, die nicht explizit in 3 gezeigt sind. Beispielsweise können verschiedene Rechenvorrichtungen, die einen oder mehrere Bildsensoren, Kameras und/oder andere Sensoren beinhalten, in das System 300 aufgenommen werden, wie gemäß den verschiedenen Ausführungsformen beschrieben.
  • Bei verschiedenen Ausführungsformen beinhalten die Kamerarechenvorrichtungen 302-308 (oder andere im System 300 enthaltene Kamerarechenvorrichtungen) einen oder mehrere Bildsensoren, die befähigt sind, High-Dynamic-Range-Bilddaten (HDR-Bilddaten) aufzuzeichnen, wie durchgehend erläutert. Beispielsweise werden die Kamerarechenvorrichtungen 302-308 dazu verwendet, verschiedene Datensammlungsvorgänge auszuführen, wie beispielsweise das Erfassen von Bildern unterschiedlicher Umgebungen und/oder unterschiedlicher Bedingungen zur Verwendung beim Trainieren eines oder mehrerer Modelle. Das System 300 beinhaltet bei einer Ausführungsform andere Rechenvorrichtungen, wie etwa, ohne darauf beschränkt zu sein, eine Server-Rechenvorrichtung 330. Die Server-Rechenvorrichtung 330 beinhaltet bei einem Beispiel keinen Bildsensor. Bei anderen Ausführungsformen beinhaltet die Server-Rechenvorrichtung 330 jedoch einen Bildsensor (z. B. eine Hilfskamera). Das Landfahrzeug 304 und/oder das Luftfahrzeug 306 können mindestens teilweise manuell betriebene Fahrzeuge und/oder, wenn bemannt, teilweise autonom sein. Bei einigen Ausführungsformen sind die unbemannten Fahrzeuge 304 und 306 autonome, teilweise autonome und/oder ferngesteuerte Fahrzeuge. Verschiedene Ausführungsformen derartiger Fahrzeuge werden in Verbindung mit den 13A-13D erläutert.
  • Verschiedene Ausführungsformen von Rechenvorrichtungen, einschließlich, ohne darauf beschränkt zu sein, die Kamerarechenvorrichtungen 302-308 und/oder die Server-Rechenvorrichtung 330, werden in Verbindung mit einer Rechenvorrichtung 1300 der 13 erörtert. Hier jedoch kurz gesagt können die Kamerarechenvorrichtungen 302-308 und/oder die Server-Rechenvorrichtung 330 beispielsweise eine oder mehrere Logikvorrichtungen beinhalten. Beispielsweise ist die Server-Rechenvorrichtung 330 als Logikvorrichtungen 320 beinhaltend gezeigt. Die Logikvorrichtungen 320 beinhalten bei verschiedenen Ausführungsformen einen oder mehrere von einem Allzweckprozessor 322 (z. B. eine Zentraleinheit (CPU), einem Mikrocontroller, einem Mikroprozessor oder dergleichen), einem Bildsignalprozessor (ISP) 324, einer anwendungsspezifischen integrierten Schaltung (ASIC) 326 und/oder ein feldprogrammierbares Gate-Array (FPGA) 328. Obwohl dies in 3 nicht gezeigt ist, beinhalten die Logikvorrichtungen 320 bei einigen Ausführungsformen eine Grafikverarbeitungseinheit (GPU) und/oder eine Datenverarbeitungseinheit (DPU). Es sei darauf hingewiesen, dass jede der Kamerarechenvorrichtungen 302-308 und/oder die Server-Rechenvorrichtung 330 eine oder mehrere derartige Logikvorrichtungen beinhalten kann.
  • Bei verschiedenen Ausführungsformen kommunizieren Komponenten des HDRI-Systems 300 (z. B. die Kamerarechenvorrichtungen 302-308 und/oder die Server-Rechenvorrichtung 330) über das/die Netzwerk(e) 332. Das/die Netzwerk(e) 332 beinhalten beispielsweise ein Wide Area Network (WAN) (z. B. das Internet, ein öffentliches Telefonnetz (PSTN) usw.), ein Local Area Network (LAN) (z. B. Wi-Fi, ZigBee, Z-Wave, Bluetooth, Bluetooth Low Energy (BLE), Ethernet etc.), ein Low-Power Wide Area Network (LPWAN) (z. B. LoRaWAN, Sigfox etc.), ein globales Navigationssatellitensystem-Netzwerk (GNSS-Netzwerk) (z. B. das Global Positioning System (GPS)) und/oder andere Netzwerktypen. Bei einem Beispiel kommunizieren die Komponenten des HDRI-Systems 300 mit einer oder mehreren der anderen Komponenten über eines oder mehrere der Netzwerke 332. Beispielsweise führen die Kamerarechenvorrichtungen 302-308 eine Datenerfassung aus und übertragen Quellbilddaten an die Server-Rechenvorrichtung 330 über eines oder mehrere der Netzwerke 332.
  • Bei verschiedenen Ausführungsformen implementiert, betreibt oder führt die Server-Rechenvorrichtung 330 die Funktionen und/oder Vorgänge einer High-Dynamic-Range-Engine (HDR-Engine) 340 aus, betreibt oder führt sie anderswie aus. Bei dem Beispiel, das in 3 veranschaulicht ist, ist die Server-Rechenvorrichtung 330, die die HDR-Engine 340 umsetzt, gezeigt. Bei anderen Beispielen kann jedoch jede der Kamerarechenvorrichtungen 302-308 die HDR-Engine 340 umsetzen (z. B. kann jedes der Logikgeräte 320, die in den Kamerarechengeräten 302-308 enthalten sind, mindestens einige der Funktionen, Vorgänge und/oder Aktionen der HDR-Engine 340 umsetzen.
  • Die HDR-Engine 340 ermöglicht bei einer Ausführungsform verschiedene Verfahren zum Tonemapping von HDR-Bilddaten sowie die zum Steuern der Helligkeit des Bildes, das durch HDR-Bilddaten und/oder die Tonemapping-Bilddaten codiert wird. Um eine derartige Funktionalität auszuführen, beinhaltet die HDR-Engine 340 beispielsweise eine oder mehrere Komponenten, Module, Vorrichtungen oder dergleichen. Bei verschiedenen Ausführungsformen beinhalten derartige Komponenten, Module und/oder Vorrichtungen, ohne darauf beschränkt zu sein, einen Region-of-Interest-Locator (ROI-Locator) 348, eine Verzögerungseinheit 350, ein Statistikmodul 352, einen Kontrollpunktselektor 354, einen TonemMap-Generator 356, und/oder einen Tonemap-Applikator 358. Alle diese Komponenten, Module und/oder Geräte sind bei einigen Ausführungsformen optional. Beispielsweise sind bei einer Ausführungsform der ROI-Locator 348, die Verzögerungseinheit 350 und das Statistikmodul 352 optional.
  • Die Aufzählung von Komponenten, Modulen und/oder Geräten der HDR-Engine 340, wie in Verbindung mit 3, erhebt keinen Anspruch auf Vollständigkeit. Bei anderen Ausführungsformen kann die HDR-Engine 340 weniger oder mehr Komponenten, Module und/oder Geräte beinhalten. Wie durchgehend erörtert, kann die HDR-Engine 340 mindestens Teile der Prozesse, Aktionen und/oder Vorgänge, die in Verbindung mit den Vorgängen 500, 600, 700 und 800 der 5, 6, 7 und 8 erörtert sind, umsetzen und/oder ausführen. Somit können eine oder mehrere der Logikvorrichtungen 320 mindestens Teile der Verfahren 500, 600, 700 und/oder 800 umsetzen und/oder ausführen.
  • Einige Rechenvorrichtungen in dem HDRI-System 300 enthalten möglicherweise keine Bildsensoren und/oder Kameras (z. B. die Server-Rechenvorrichtung 330). Bei derartigen Ausführungsformen werden die HDR-Bildsensoren, die in einer der Kamerarechenvorrichtungen 302-308 enthalten sind, dazu eingesetzt, die Quellbilddaten aufzuzeichnen. Die Quellbilddaten werden, wie oben beschrieben, bei mindestens einer Ausführungsform über Netzwerke 332 der HDR-Engine 340 bereitgestellt, die auf und/oder durch die Server-Rechenvorrichtung 330 umgesetzt werden. Somit werden, obwohl die Quell-HDR-Bilddaten bei verschiedenen Ausführungsformen von mindestens einer der Kameravorrichtungen 302-308 erfasst werden, das Tonemapping, die Bildsignalverarbeitung, die Steuerung der Helligkeit der Bilddaten und/oder andere Modifizierungseigenschaften der Bilddaten offline auf der Server-Rechenvorrichtung 330 ausgeführt. Anders ausgedrückt, kann das Tonemapping der HDR-Bilddaten auf eine andere Rechenvorrichtung ausgelagert werden, wie etwa, ohne darauf beschränkt zu sein, auf die Server-Rechenvorrichtung 330, die die Bilddaten nicht erfasst hat. Weil die Kamerarechenvorrichtungen 302-308 ein oder mehrere bemannte oder unbemannte Fahrzeuge (z. B. das Landfahrzeug 304 und das Luftfahrzeug 306) beinhalten können, werden die Quellbilddaten beispielsweise von einer Kamera, die in einem Fahrzeug enthalten oder daran montiert ist, erfasst. Wie oben angemerkt, kann das Fahrzeug ein autonomes oder mindestens teilweise autonomes Fahrzeug sein. Die verschiedenen Ausführungsformen ermöglichen verschiedene Maschinen- und/oder Computer-Vision-Merkmale eines autonomen Fahrzeugs, wie etwa, ohne darauf beschränkt zu sein, das Landfahrzeug 304 oder das Luftfahrzeug 306, oder unterstützen mindestens das Ermöglichen. Die Ausführungsformen können eingesetzt werden, um die Maschinen- und/oder Computer-Vision-Merkmale anderer Anwendungen zu ermöglichen, wie etwa, ohne darauf beschränkt zu sein, Roboteranwendungen und/oder das Trainieren von Modellen (z. B. neuronale Netzwerke), um alle oder einen Teil der in der vorliegenden Offenbarung beschriebenen Vorgänge auszuführen. Beispielsweise können die Zielbilddaten 360 verwendet werden, um ein neuronales Netzwerk, das eine Objekterfassung ausführt, die in Roboteranwendungen verwendet wird, zu trainieren.
  • Wie in 3 gezeigt, beinhaltet die HDR-Engine 340 zwei parallele Pipelines für die Quellbilddaten, wie von den Pfeilen angezeigt. Genauer gesagt beinhaltet die HDR-Engine 340 eine Bilddaten-Pipeline 362 und eine Bilddaten-Pipeline 364. Bei verschiedenen Ausführungsformen werden die zwei Pipelines parallel betrieben. Die zwei Pipelines verzweigen sich schematisch zwischen den HDR-Bildsensoren 344 und dem ROI-Locator 348. Die zwei verzweigten Pipelines konvergieren schematisch an dem Tonemap-Applikator 358.
  • Die Bilddaten-Pipeline 362 ist bei einer Ausführungsform für das Bestimmen und/oder Generieren der Tonemapping-Funktion (z. B. eine Global Tone Mapping-Funktion (GTM-Funktion), eine lokale Tonemapping-Funktion oder eine andere Tonemapping-Funktion) zuständig. Bei verschiedenen Ausführungsformen stellt die Bilddaten-Pipeline 362 (entweder über die Verzögerungseinheit 350 oder den Tonemap-Generator 356) die Tonemapping-Funktion über den Tonemap-Applikator 358 an die Bilddaten-Pipeline 364 bereit. Die Bilddaten-Pipeline 364 ist bei einer Ausführungsform dafür zuständig, die Tonemapping-Funktion auf die Quellbilddaten (z. B. von einem HDR-Bilddatenpuffer 346) anzuwenden, um Zielbilddaten 360 zu generieren. Wie oben erörtert, zeichnen der eine oder die mehreren HDR-Bildsensoren 344 Quellbilddaten auf und stellen die Quellbilddaten den Bilddaten-Pipelines 362 und 364 bereit. Bei verschiedenen Ausführungsformen beinhalten die Bilddaten-Pipelines 362 und 364 einen Satz von Funktionen, wobei die Ausgabe einer Funktion in eine andere Funktion eingegeben wird. Bei der nicht einschränkenden Ausführungsform der 3 und wie von den Pipelineflusspfeilen gezeigt, werden die Quellbilddaten der Bilddaten-Pipeline 362 über den ROI-Locator 348 bereitgestellt, und die Quelldaten werden der parallelen Bilddaten-Pipeline 364 über den HDR-Bilddatenpuffer 346 bereitgestellt. Bei anderen Ausführungsformen werden die Bilddaten-Pipeline 362 und die Bilddaten-Pipeline 364 seriell ausgeführt (z. B. stellt der HDR-Bilddatenpuffer 346 Daten direkt an den ROI-Locator 348 bereit). Obwohl zum Zweck der Veranschaulichung Pipelines verwendet werden, werden andere Bildverarbeitungsarchitekturen als im Schutzbereich der Offenbarung liegend angesehen. Beispielsweise kann die Ausgabe einer Funktion (z. B. des ROI-Locators 348, des HDR-Bilddatenpuffers 346, des Tonemap-Generators 356 usw.) mehreren Funktionen, die Vorgänge seriell und/oder parallel ausführen, bereitgestellt werden. Bei einem Beispiel stellt das Statistikmodul 352 Daten an den Kontrollpunktselektor 354 und den Tonemap-Generator 356 bereit. Bei diesem Beispiel kann der Tonabbildungsgenerator 356 alle oder einen Teil der Daten parallel mit dem Kontrollpunktselektor 354 verarbeiten und kann zusätzliche Daten (z. B. Daten von dem Kontrollpunktselektor 354) seriell (z. B. nachdem der Kontrollpunktselektor 354 eine Ausgabe generiert hat).
  • Bei Ausführungsformen, die das Erfassen mehrerer Einzelbilder von Quellbilddaten beinhalten (z. B. HDR-Video-Ausführungsformen), wird die Tonemapping-Funktion mindestens zum Teil basierend auf einem ersten Einzelbild von Quellbilddaten generiert und auf ein zweites (z. B. ein darauf folgendes und/oder nicht darauf folgendes) Einzelbild von Quellbilddaten angewandt. Somit wird bei derartigen Ausführungsformen die Tonemapping-Funktion mindestens zum Teil basierend auf dem ersten Einzelbild von Quellbilddaten generiert und ist auf zusätzliche Einzelbilder von Quellbilddaten anwendbar und geeignet, weil die Belichtungseinstellungen 342 des HDR-Sensors fest sind. Bei diesen Ausführungsbeispielen kann es zwischen den Quelldaten, aus denen die Tonemapping-Funktion generiert wurde, und den Quellbilddaten, auf die die Tonemapping-Funktion angewandt wird, eine Verzögerung von einem Einzelbild geben. Beispielsweise kann das Einzelbild der Quellbilddaten, die eingesetzt wurden, um die Tonemapping-Funktion zu generieren, ein Einzelbild vor dem Einzelbild der Quellbilddaten sein, auf das die Tonemapping-Funktion angewandt wurde. Bei derartigen Ausführungsformen puffert die Verzögerungseinheit 350 der Bilddaten-Pipeline 362 die Tonemapping-Funktion für ein (oder mehrere) Einzelbilder derart, dass, wenn die Tonemapping-Funktion dem Tonemapping-Applikator 358 der Bilddaten-Pipeline 364 bereitgestellt wird, die Tone-Abbildung auf das nächste aufeinanderfolgende Einzelbild von Quellbilddaten angewandt wird. Bei anderen Ausführungsformen ist die Verzögerung größer als ein einzelnes Einzelbild, und die Verzögerungseinheit 350 puffert die Tonemapping-Funktion für mehrere Einzelbilder von Quellbilddaten. Bei mindestens einer Ausführungsform wird dieselbe Tonemapping-Funktion auf mehr als ein einzelnes Einzelbild von Quellbilddaten angewandt. Beispielsweise wird dieselbe Tonemapping-Funktion auf fünf aufeinanderfolgende Einzelbilder von Quellbilddaten angewandt. Bei derartigen Ausführungsformen generiert die Bilddaten-Pipeline 362 eine Tonemapping-Funktion für jedes fünfte Einzelbild.
  • Wie in 3 gezeigt, gibt die HDR-Engine 340 die Zielbilddaten 360 aus. Wie durchgehend erörtert, codieren die Zielbilddaten 360 bei verschiedenen Ausführungsformen das Bild, das von den Quellbilddaten codiert wird. Jedoch werden an Stelle der Pixelwerte der Quellbilddaten, die von den HDR-Bildsensoren 344 erfasst werden, Pixelwerte der Zielbilddaten 360 durch Anwenden (über die Bilddaten-Pipeline 364) der Tonemapping-Funktion (bestimmt über die Bilddaten-Pipeline 362) zu den Quellbilddaten definiert. Somit können die Pixelwerte der Zielbilddaten 360 für eine Tonemapping-Version der Pixelwerte der Quellbilddaten repräsentativ sein. Bei einigen Ausführungsformen können die ausgegebenen Zielbilddaten 360 entweder HDR-, Standard-Dynamic-Range-Bilddaten (SDR-Bilddaten) oder Low-Dynamic-Range-Bilddaten (LDR-Bilddaten) sein. Bei einigen Ausführungsformen wird mindestens ein Teil der Vorgänge der Bilddaten-Pipeline 362 von einer ersten Logikvorrichtung (z. B. dem Allzweckprozessor 322) ausgeführt und wird mindestens ein Teil der Vorgänge der Bilddaten-Pipeline 364 von einer zweiten Logikvorrichtung (z. B. der ISP 324) ausgeführt. Bei mindestens einer Ausführungsform werden eine oder mehrere Pipelines innerhalb des ISP 324 von der Bilddaten-Pipeline 364 der HDR-Engine 340 eingesetzt.
  • Wie in 3 gezeigt, kann mindestens ein Teil der Quellbilddaten von der Bilddaten-Pipeline 364 über einen HDR-Bilddatenpuffer 346 bereitgestellt und/oder empfangen werden. Der HDR-Bilddatenpuffer 346 puffert oder speichert die Quellbilddaten beispielsweise mindestens vorübergehend. Wie nachstehend ausführlicher erörtert wird, generiert die Bilddaten-Pipeline 362 eine Tonemapping-Funktion und stellt die Tonemapping-Funktion an die Bilddaten-Pipeline 364 gemäß mindestens einer Ausführungsform bereit. Genauer gesagt, wie in 3 gezeigt, puffert die Verzögerungseinheit die Tonemapping-Funktion für mindestens ein Einzelbild und stellt dann die Tonemapping-Funktion dem Tonemap-Applikator 358 der Bilddaten-Pipeline 364 bereit. Bei verschiedenen Ausführungsformen erhält der Tonemap-Applikator 358 Quellbilddaten aus dem HDR-Bilddatenpuffer 346 und wendet die Tonemapping-Funktion auf die Quellbilddaten an, um die Zielbilddaten 360 zu generieren.
  • Wie oben erwähnt, können die von dem Tonemap-Applikator 358 empfangenen Quellbilddaten ein nächstes Einzelbild von Quellbilddaten sein, verglichen mit dem Einzelbild in den Quellbilddaten, das eingesetzt wurde, um die Tonemapping-Funktion zu generieren. Bei Ausführungsformen, die die Verzögerungseinheit 350 nicht enthalten, werden die Quellbilddaten dem Tonemap-Applikator 358 direkt von dem Tonemap-Generator 356 bereitgestellt. Bei derartigen Ausführungsformen wird die Tonemapping-Funktion auf denselben Rahmen von Quellbilddaten angewandt, der eingesetzt wurde, um die Tonemapping-Funktion zu generieren.
  • Bei Ausführungsformen, die den ROI-Locator 348 beinhalten, werden die Quellbilddaten über den ROI-Locator 348 an die Bilddaten-Pipeline 362 bereitgestellt und/oder von dieser empfangen. Bei Ausführungsformen, die den ROI-Locator 348 nicht beinhalten, aber das Statistikmodul 352 beinhalten, werden die Quellbilddaten der Bilddaten-Pipeline 362 über das Statistikmodul 352 bereitgestellt. Bei Ausführungsformen, denen sowohl der ROI-Locator 348 als auch das Statistikmodul 352 fehlen, werden die Quellbilddaten der Bilddaten-Pipeline 362 über den Kontrollpunktselektor 354 bereitgestellt. Es sei darauf hingewiesen, dass Ausführungsformen zwar entweder den ROI-Locator 348 und/oder das Statistikmodul 352 enthalten können, ihre Funktionsfähigkeit jedoch optional sein kann. Beispielsweise kann ein Benutzer wählen, die Funktionsfähigkeit von einem oder beiden des ROI-Locators 348 und/oder des Statistikmoduls 352 über einen oder mehrere Softwareschalter und/oder Flags zu aktivieren. Ebenso kann der Benutzer wählen, die Funktionsfähigkeit eines oder beider des ROI-Locators 348 und/oder des Statistikmoduls 352 über den einen oder die mehreren Softwareschalter und/oder Flags zu deaktivieren.
  • Bei Ausführungsformen, die die Funktionsfähigkeit des ROI-Locators 348 beinhalten und/oder ermöglichen, bestimmt der ROI-Locator 348 einen ROI innerhalb der Quellbilddaten. Beispielsweise werden ein oder mehrere Verfahren in Bezug auf Computer-Vision und/oder Bildverarbeitung (z. B. kann der ROI eine Ausgabe eines neuronalen Netzwerks sein, das zum Identifizieren des ROI trainiert ist) dazu eingesetzt, einen Interessensbereich (z. B. den Bereich des Bildes) zu bestimmen, der das Motiv und/oder den Fokuspunkt des Bildes beinhaltet) innerhalb des Bildes, das von den Quellbilddaten codiert wird. Beispielsweise ist ein ROI ein Bereich innerhalb des Bildes, der mehr Kontrast, Detail und/oder mehr variierte Pixelwerte beinhaltet als andere Bereiche. Bei verschiedenen Ausführungsformen ist der ROI ein Bereich in dem Bild, wo der dynamische Bereich der Pixelwerte im Vergleich zu anderen Bereichen in dem Bild maximiert oder mindestens vergrößert ist.
  • Bei verschiedenen Ausführungsformen ist der ROI ein Bereich des Bildes, der das Objekt des Bildes oder den Fokuspunkt des Bildes beinhaltet oder diesem entspricht. Bei einigen Ausführungsformen beinhaltet der ROI-Locator 348 ein Filter oder eine Maske, die die Pixel außerhalb des bestimmten ROI maskiert. Wenn somit die Bilddaten die Bilddaten-Pipeline 362 hinunterlaufen, beinhalten die Bilddaten bei derartigen Ausführungsformen nur die Pixelwerte, die dem ROI entsprechen. Bei einem Beispiel basieren eine Bestimmung der Kontrollpunkte und das Generieren der Tonemapping-Funktion sowie andere Vorgänge der Bilddaten-Pipeline 362 (z. B. eine Bestimmung statistischer Metriken und/oder eine Bestimmung mehrerer Kontrollpunkte) mindestens zum Teil auf dem Teil der Quellbilddaten, der dem ROI in dem codierten Quellbild entspricht, und nicht auf der Gesamtheit der Quellbilddaten, die das Quellbild codieren.
  • Bei Ausführungsformen, die die Funktionsfähigkeit des Statistikmoduls 352 beinhalten und/oder ermöglichen, bestimmt und/oder generiert das Statistikmodul 352 eine Vielzahl statistischer Metriken mindestens zum Teil basierend auf den Pixelwerten der Quellbilddaten (oder den Pixelwerten des Teils der Quellbilddaten, der dem ROI des codierten Quellbildes entspricht). Die mehreren statistischen Metriken beinhalten beispielsweise statistische Metriken, die mindestens zum Teil auf den Pixelwerten der Quellbilddaten basieren. Bei einer Ausführungsform beinhalten die statistischen Metriken einen oder mehrere Parameter, die eine kontinuierliche oder diskrete statistische Verteilung und/oder Histogramme, die aus den Quellbilddaten konstruiert werden, charakterisieren. Beispielsweise umfassen derartige Parameter einen Mittelwert, einen Median und/oder eine Standardabweichung einer oder mehrerer statistischer Verteilungen, die von den Pixelwerten der Quellbilddaten abgeleitet werden.
  • Die Quellbilddaten, der Teil der Quellbilddaten, der dem ROI entspricht, und/oder die mehreren statistischen Metriken werden bei verschiedenen Ausführungsformen dem Kontrollpunktselektor 354 bereitgestellt. Bei einer Ausführungsform ist der Kontrollpunktselektor 354 für das Bestimmen einer Vielzahl von Tonkontrollpunkten mindestens zum Teil basierend auf den Quellbilddaten, dem Teil der Quellbilddaten, der dem ROI entspricht, und/oder der Vielzahl von statistischen Metriken zuständig. Insbesondere wird mindestens ein Teil der Tonkontrollpunkte mindestens zum Teil basierend auf Pixelwerten der Quellbilddaten, den statistischen Metriken, von den Pixelwerten oder einer Kombination davon gemäß mindestens einer Ausführungsform bestimmt und/oder abgeleitet. Der Kontrollpunktselektor 354 setzt bei einer Ausführungsform den Mehrzweckprozessor 322 zum Bestimmen der Vielzahl von Tonkontrollpunkten ein.
  • Bei verschiedenen Ausführungsformen beinhaltet die Vielzahl von Kontrollpunkten einen oder mehrere Tieftonpunkte, Mitteltonpunkte und Hochtonpunkte. Bei einer Ausführungsform beinhaltet die Vielzahl von Kontrollpunkten einen Flare-Unterdrückungspunkt. Bei einigen Ausführungsformen umfassen die mehreren Tonkontrollpunkte zusätzliche Tonkontrollpunkte. Beispielsweise kann ein Tonkontrollpunkt einen 2D-Punkt und/oder einen 2D-Vektor beinhalten, der zwei Skalarwerte (z. B. eine x-Komponente und eine y-Komponente) beinhaltet, obwohl andere Dimensionen hinzugefügt werden könnten. Somit kann ein Tonkontrollpunkt bei derartigen Beispielen über die Vektornotation (TC_x, TC_y) dargestellt werden, wobei TC_x und TC_y skalare Werte sind. Bei verschiedenen Ausführungsformen wird der skalare Abszissenwert (z. B. die x-Komponente und/oder der x-Wert) des Tonkontrollpunkts als TC_x angegeben. Der Ordinaten-Skalarwert (z. B. die y-Komponente und/oder der y-Wert) des Tonkontrollpunkt wird gemäß mindestens einer Ausführungsform als TC_y angegeben. Beispielsweise wird der 2D-Raum, in den die Kontrollpunkte eingebettet sind, von einer orthonormalen Basis überspannt, die einen Abszissen-Basisvektor (z. B. die x-Achse), der den Pixelwerten der Quellbilddaten entspricht, und einen Ordinaten-Basisvektor (z. B. der y-Achse), der den Pixelwerten der Zielbilddaten entspricht, beinhaltet.
  • Bei verschiedenen Ausführungsformen geben die Tiefton-, Mittelton- und Hochton-Kontrollpunkte spezifische Abbildungen der Pixelwerte der Quellbilddaten zu den Pixelwerten der Zielbilddaten an. Beispielsweise gibt der Tieftonpunkt den Pixelwert der Quellbilddaten an, der auf den niedrigsten Pixelwert (z. B. den Pixelwert, der den dunkelsten oder schwärzesten Pixeln entspricht) der Zielbilddaten tonegemappt ist. Ebenso gibt der Hochtonpunkt in einem Beispiel den Pixelwert der Quellbilddaten an, der auf den höchsten Pixelwert (z. B. den Pixelwert, der den hellsten oder weißesten Pixeln entspricht) der Zielbilddaten tonegemapped ist. Bei einer Ausführungsform wird der Tieftonpunkt als Schwarzpunkt (BP) und der Hochtonpunkt als Weißpunkt (WP) bezeichnet. Darüber hinaus gibt bei einem anderen Beispiel der Mitteltonpunkt den Pixelwert der Quellbilddaten an, der auf einen mittleren Pixelwert der Zielbilddaten tonegemapped werden soll. Die Bestimmung des Mittelpunkts steuert bei verschiedenen Ausführungsformen die gesamte Mitteltonhelligkeit (oder den Ton) des Zielbildes, das durch die tonegemappten Zielbilddaten 360 codiert ist, während der Tieftonpunkt den Ton des schwärzesten (oder dunkelsten) Pixel in den Zielbilddaten steuert, und der Hochtonpunkt den Ton des weißesten (oder hellsten) der Pixel in den Zielbilddaten 360 steuert.
  • Unter Bezugnahme auf 4 zeigt 4 die Tiefton-, Mittelton-, Hochton- und Flare-Unterdrückungskontrollpunkte, die in den 4D-Raum eingebettet sind, der von einem ersten Basisvektor für eine erste Dimension überspannt wird, die den Pixelwerten der Quellbilddaten entspricht (z. B. die x-Achse) und einen zweiten Basisvektor für eine zweite Dimension, der den Pixelwerten der Zielbilddaten (z. B. die y-Achse) entspricht. Bei der nicht einschränkenden Ausführungsform der 4 wurden die Pixelwerte der Quellbilddaten und Zielbilddaten normalisiert, um einen Bereich von [0, 1] aufzuweisen. Bei anderen Ausführungsformen können die Pixelwerte jedoch auf andere Bereiche normalisiert werden oder brauchen nicht normalisiert zu werden. Beispielsweise werden die Rohpixelwerte der erfassten Bilddaten als Quellbilddaten verwendet. Bei anderen Ausführungsformen werden die Rohpixelwerte normalisiert und/oder vorverarbeitet, bevor sie den Bilddaten-Pipelines 364 und 364 der HDR-Engine 340 bereitgestellt werden, die oben in Verbindung mit 3 beschrieben sind.
  • In 4 wird der Tieftonpunkt angezeigt als: LT = (B_s, B_t), der Mitteltonpunkt wird angezeigt als: MT = (M_s, M_t) und der Hochtonpunkt wird angezeigt als: HT = (W_s, W_t), wobei die x- und y-Komponenten alle nicht negative Skalarwerte sind. Genauer gesagt, bei der nicht einschränkenden Ausführungsform der 4, LT= (B_s, 0) und HT= (W_s, 1), wobei 0,0 < B_s <W_s<1.0. Bei anderen Beispielen braucht B_t nicht gleich 0,0 zu sein, und W_t braucht nicht gleich 1 sein. 4 zeigt einen anderen Kontrollpunkt, den Flare-Unterdrückungspunkt, angegeben als: FS = (F_s, F_t), wobei F_t auf 0,0 gesetzt ist. Der Flare-Unterdrückungspunkt wird weiter unten erläutert.
  • Bei einer Ausführungsform werden in Bezug auf den Mitteltonpunkt Pixel in den Quellbilddaten mit dem Pixelwert, der M_s entspricht, über eine Tonemapping-Funktion auf den Wert von M_t für die Zielbilddaten tonegemappt. Die Bestimmung und/oder Auswahl von M_t steuert die Mitteltonhelligkeit des Zielbildes gemäß einer Ausführungsform. Somit basiert beispielsweise die Bestimmung von M_t mindestens zum Teil auf einem Mittelton-Pixelwert für die Pixelwerte der Zielbilddaten. Bei einigen Ausführungsformen ist M_t = 0,5. Bei anderen Ausführungsformen beinhaltet M_t andere Werte. Bei einigen Beispielen wählt ein Benutzer einen Wert für M_t aus oder stellt ihn ein. Bei weiteren Beispielen wird M_s über einen linear gewichteten Durchschnitt der Pixelwerte der Quellbilddaten bestimmt. Bei zusätzlichen Beispielen wird M_s über einen linear gewichteten Durchschnitt der Pixelwerte der Quellbilddaten bestimmt. Bei derartigen Beispielen kann die logarithmische Mittelwertbildung in einer oder mehreren Basen (z. B. logarithmischer Basis 10) ausgeführt werden. Bei anderen Ausführungsformen beinhaltet die Logarithmusfunktion, die eingesetzt wird, um die Quellbilddaten in die Log-Werte umzuwandeln, die natürliche Logarithmusfunktion. Der logarithmisch gemittelte Wert der Pixelwerte kann bei er Ausführungsform dann (über die entsprechende Basis) potenziert werden, um M_s zu bestimmen. Beispielsweise werden logarithmisch transformierte Quellbilddaten-Pixelwerte mindestens zum Teil basierend auf den Pixelwerten der Quellbilddaten bestimmt. Bei einer Ausführungsform wird ein Mittelwert der logarithmisch transformierten Bilddatenwerte über eine linear gewichtete Summe der logarithmisch transformierten Bilddatenwerte bestimmt. Bei einem Beispiel wird M_s mindestens zum Teil basierend auf einer Potenzierung des gemittelten Werts der logarithmisch transformierten Bilddatenwerte bestimmt.
  • Bei einigen Ausführungsformen wird ein Teil der Quellbilddaten dazu eingesetzt, M_s zu bestimmen. Beispielsweise können die Pixel der Quellbilddaten mit den höchsten und den niedrigsten Werten mit einem Veto versehen und/oder aus der Analyse herausgefiltert werden. Somit wird beispielsweise ein Hochton-Schwellenwert (oder Filterwert) dazu eingesetzt, die Hochton-Pixel von der Bestimmung von M_s auszuschließen. Ebenso kann ein Tieftonschwellenwert (oder Filter oder Filterwert) eingesetzt werden, um die Tieftonpixel von der Bestimmung von M_s auszuschließen. Bei verschiedenen Ausführungsformen wird M_s mindestens zum Teil basierend auf einer linearen Mittelwertbildung oder einer logarithmischen Mittelwertbildung der Pixelwerte bestimmt, die sowohl die Tiefton- als auch die Hochtonfilter passieren (z. B. die Pixelwerte, die von der Analyse nicht mit einem Schwellenwert versehen werden). Die Schwellenwerte für die Filter sind bei einem Beispiel relative Schwellenwerte (z. B. Prozentsätze) oder absolute Werte. Bei einigen Ausführungsformen werden M_s und/oder M_t mindestens zum Teil basierend auf den statistischen Metriken bestimmt, die von dem Statistikmodul 352 der 3 generiert werden. Bei einigen Ausführungsformen können die verschiedenen oben erläuterten Verfahren in Bezug auf das Bestimmen von M_s und/oder M_t mit den statistischen Metriken kombiniert werden, um M_s und/oder M_t zu bestimmen. Bei mindestens einer Ausführungsform werden M_s und/oder M_t mindestens zum Teil basierend auf den digitalen Belichtungs- und Kalibrierungsdaten 110 der 1 bestimmt. Beispielsweise wird ein Vorhersagemodell für M_s und/oder M_t mindestens zum Teil basierend auf der Analyse historischer, Trainings- und/oder Lerndaten generiert, die mindestens durch Aggregieren der statistischen Metriken aus einer großen Anzahl von Quellbilddaten und/oder Zielbilddaten generiert werden.
  • Bei verschiedenen Ausführungsformen werden in Bezug auf den Tieftonpunkt Pixel in den Quellbilddaten mit dem Pixelwert, der B_s oder weniger als B_s) entspricht, über eine Tonemapping-Funktion auf den Wert von B_t für die Zielbilddaten tonegemappt. Somit werden Pixelwerte der Quellbilddaten, die kleiner als B_s sind, gemäß mindestens einer Ausführungsform geclippt und derart eingestellt, dass sie einen Pixelwert von B_s aufweisen. Beispielsweise steuert die Bestimmung und/oder Auswahl von B_t die Tieftonhelligkeit des Zielbildes. Somit basiert beispielsweise die Bestimmung von B_t mindestens zum Teil auf einem Mittelton-Pixelwert für die Pixelwerte der Zielbilddaten. Bei einigen Ausführungsformen ist B_t = 0. Bei anderen Ausführungsformen beinhaltet B_t einen positiven Wert, der kleiner als M_t ist. Bei einigen Beispielen wählt ein Benutzer einen Wert für B_t aus oder legt ihn anderswie fest. Bei einem Beispiel kann ein positiver schwarze Pixelwert von einem Flare oder anderen Fehlern (z. B. von einem Sensor-Schwarzpegel-Subtraktionsfehler) in dem Bildsensor, der die Quellbilddaten für das Pixel erfasst hat, verursacht werden. Weil Quellbilddaten mit Pixelwerten kleiner als B_s geclippt und auf B_s gesetzt werden, steuert die Auswahl von B_s bei derartigen Beispielen die Flare-Unterdrückung. Dementsprechend kann B_s als ein Flare-Unterdrückungsschwellenwert bezeichnet werden.
  • Bei Beispielen wird B_s mindestens zum Teil basierend auf den Pixeln der Quellbilddaten mit den niedrigsten Pixelwerten bestimmt. Beispielsweise wird eine Tiefton-Teilmenge der Pixelwerte der Quellbilddaten mindestens zum Teil basierend auf einem Tieftonpunkt-Schwellenwert bestimmt. Bei verschiedenen Ausführungsformen sind Pixelwerte, die in der Tiefton-Teilmenge enthalten sind, kleiner oder gleich dem Tiefton-Punktschwellenwert. Zusätzlich sind bei derartigen Ausführungsformen Pixelwerte, die von der Tiefton-Teilmenge ausgeschlossen sind, größer als der Tieftonpunkt-Schwellenwert. Der Tieftonpunkt-Schwellenwert kann beispielsweise entweder ein absoluter oder ein relativer Schwellenwert sein. Bei verschiedenen Ausführungsformen wird der Wert von B_s mindestens zum Teil basierend auf den Pixelwerten bestimmt, die in der Tiefton-Teilmenge von Pixelwerten enthalten sind. Beispielsweise wird B_s auf den gewichteten Durchschnitt der Pixelwerte in der Tiefton-Teilmenge gesetzt (die Durchschnittswerte enthalten kann). Bei einer anderen Ausführungsform werden B_s auf einen Prozentsatz der Pixelwerte in der Tiefton-Teilmenge gesetzt. Bei einigen Ausführungsformen werden B_s und/oder B_t mindestens zum Teil basierend auf den statistischen Metriken, die von dem Statistikmodul 352 der 3 generiert werden, bestimmt. Jedes der oben erläuterten verschiedenen Verfahren in Bezug auf das Bestimmen von B_s und/oder B_t kann mit den statistischen Metriken kombiniert werden, um B_s und/oder B_t zu bestimmen. Bei mindestens einer Ausführungsform werden B_s und/oder B_t mindestens zum Teil basierend auf den Belichtungseinstellungen 344 des HDR-Sensors bestimmt. Ein Vorhersagemodell für B_s und/oder B_t wird bei einer Ausführungsform mindestens zum Teil basierend auf der Analyse von Trainings- und/oder Lerndaten generiert, die durch Aggregieren der statistischen Metriken aus einer großen Anzahl von Quellbilddaten und/oder Zielbilddaten generiert werden.
  • Bei verschiedenen Ausführungsformen werden in Bezug auf den Hochtonpunkt Pixel in den Quellbilddaten mit dem Pixelwert äquivalent zu W_s (oder größer als W_s) auf den Wert von W_t für die Zielbilddaten tonegemappt. Somit werden Pixelwerte der Quellbilddaten, die beispielsweise größer als W_s sind, geclippt und auf einen Wert von W_s gesetzt. Weil Quellbilddaten mit Pixelwerten größer als W_s geclippt und auf W_s gesetzt werden, steuert die Auswahl von W_s die Unterdrückung von Glanzlicht (z. B. Pixel mit großen Pixelwerten) gemäß mindestens einer Ausführungsform. Dementsprechend kann W_s als Glanzlicht-Unterdrückungsschwellenwert bezeichnet werden. Beispielsweise steuert die Bestimmung und/oder Auswahl von W_t die Hochtonhelligkeit des Zielbildes. Somit basiert die Bestimmung von W_t bei verschiedenen Ausführungsformen mindestens zum Teil auf einem maximalen Pixelwert für die Pixelwerte der Zielbilddaten. Bei einigen Ausführungsformen ist W_t = 1. Bei anderen Ausführungsformen beinhaltet W_t einen positiven Wert, der kleiner als 1, aber größer als M_t ist. Bei einigen Beispielen wählt ein Benutzer einen Wert für W_t aus oder legt ihn anderswie fest. Bei zusätzlichen Beispielen wird W_s mindestens zum Teil basierend auf den Pixeln der Quellbilddaten mit den höchsten Pixelwerten bestimmt. Beispielsweise kann eine Hochton-Teilmenge der Pixelwerte der Quellbilddaten mindestens zum Teil basierend auf einem HochtonpunktSchwellenwert bestimmt werden. Bei verschiedenen Ausführungsformen sind Pixelwerte, die in der Hochtonteilmenge enthalten sind, größer oder gleich dem Hochtonpunktschwellenwert. Bei derartigen Ausführungsformen sind Pixelwerte, die von der Hochton-Teilmenge ausgeschlossen sind, kleiner als der HochtonPunktschwellenwert.
  • Beispielsweise kann der Hochtonpunktschwellenwert entweder ein absoluter oder ein relativer Schwellenwert sein. Bei verschiedenen Ausführungsformen wird der Wert von W_s mindestens zum Teil basierend auf den Pixelwerten bestimmt, die in der Hochton-Teilmenge von Pixelwerten enthalten sind. Beispielsweise wird W_s auf den gewichteten Durchschnitt der Pixelwerte in der Hochton-Teilmenge gesetzt. Bei einer anderen Ausführungsform werden W_s auf einen Prozentsatz der Pixelwerte in der Tiefton-Teilmenge gesetzt. Bei einigen Ausführungsformen können W_s und/oder W_t mindestens zum Teil basierend auf den statistischen Metriken, die von dem Statistikmodul 352 der 3 generiert werden, bestimmt werden. Jedes der oben erläuterten verschiedenen Verfahren in Bezug auf das Bestimmen von W_s und/oder W_t kann mit den statistischen Metriken kombiniert werden, um W_s und/oder W_t zu bestimmen. Bei mindestens einer Ausführungsform werden W_s und/oder W_t mindestens zum Teil basierend auf den Belichtungseinstellungen 342 des HDR-Sensors bestimmt. Ein Vorhersagemodell für W_s und/oder W_t wird bei einer Ausführungsform mindestens zum Teil basierend auf der Analyse von Trainings- und/oder Lerndaten bestimmt, die durch Aggregieren der statistischen Metriken aus einer großen Anzahl von Quellbilddaten und/oder Zielbilddaten generiert werden.
  • 4 zeigt auch einen Flare-Unterdrückungspunkt: FS = (F_s, 0). Bei verschiedenen Ausführungsformen gibt F_s einen maximalen Schwellwert zum Entfernen von Flare an. Bei einigen Ausführungsformen ist F_s benutzerspezifiziert und/oder ausgewählt. Bei anderen Ausführungsformen wird F_s mindestens zum Teil basierend auf den statistischen Metriken der Quellbilddaten dynamisch bestimmt. Bei mindestens einer Ausführungsform wird F_s mindestens zum Teil basierend auf einem Prozentsatz von M_s und/oder einem Wert eines Prozentsatzes der niedrigsten Pixelwerte der Quellbilddaten bestimmt.
  • Unter Rückkehr zu 3 bestimmt der Kontrollpunktselektor 354 bei verschiedenen Ausführungsformen einen oder mehrere zusätzliche Tonkontrollpunkte. Beispielsweise werden die zusätzlichen Tonkontrollpunkte basierend mindestens zum Teil auf der Vielzahl von statistischen Metriken bestimmt. Der Tonemap-Generator 356 ist bei verschiedenen Ausführungsformen dafür zuständig, die Tonemapping-Funktion mindestens zum Teil basierend der Vielzahl von Kontrollpunkten zu bestimmen. Der Tonabbildungsgenerator 356 verwendet beispielsweise den Allzweckprozessor 344, um die Tonemapping-Funktion zu bestimmen. Um beispielsweise die Tonemapping-Funktion zu bestimmen, generiert und/oder bestimmt der Tonemap-Generator 356 eine Verstärkungslinie. Das Generieren der Verstärkungslinie basiert bei einer Ausführungsform mindestens zum Teil auf einem Teil der Vielzahl von Tonkontrollpunkten. Beispielsweise wird ein Verstärkungswert als Steigung, Ableitung und/oder Änderungsrate der Verstärkungslinie bestimmt. Bei einigen Ausführungsformen wird die Verstärkungslinie als die eindeutige Linie bestimmt, die mindestens zwei der Kontrollpunkte beinhaltet oder durch diese verläuft. Bei dem Beispiel, das in 4 gezeigt ist, ist die Verstärkungslinie die Linie, die sowohl den Mitteltonpunkt als auch den Flare-Unterdrückungspunkt beinhaltet. Bei einer Ausführungsform entspricht der Verstärkungswert der Steigung der Verstärkungslinie.
  • Bei verschiedenen Ausführungsformen bestimmt der Tonabbildungsgenerator 356 die Tonemapping-Funktion mindestens zum Teil basierend auf dem Verstärkungswert und mindestens einem Teil der Vielzahl von Tonsteuerungspunkten. Beispielsweise bildet die Tonemapping-Funktion einen Pixelwert der Quellbilddaten auf einen Pixelwert der Zielbilddaten ab. Die Tonemapping-Funktion als solche kann eine Skalarfunktion einer einzelnen Skalarvariablen (z. B. eines Pixelwerts) sein, wobei der Wert der Funktion der Pixelwert der Zielbilddaten ist, der dem Pixelwert der Quellbilddaten entspricht, die das Argument (oder die unabhängige Variable) der Funktion sind. Bei einem Beispiel ist das Tonemapping eine nichtlineare Abbildung. Bei einigen Ausführungsformen führt der Tonemapping-Generator 356 eine Anpassung der Tonemapping-Funktion an einen oder mehrere der Tonkontrollpunkte aus. Bei einem Beispiel ist die Tonemapping-Funktion darauf beschränkt, einen oder mehrere der Tonwertkontrollpunkte zu beinhalten oder ungefähr zu beinhalten. Bei mindestens einer Ausführungsform ist die Tonemapping-Funktion darauf beschränkt, den Tieftonpunkt, den Mitteltonpunkt und/oder den Hochtonpunkt zu beinhalten. Bei einigen Ausführungsformen wird die Tonemapping-Funktion von dem Verstärkungswert eingeschränkt. Die Ableitung oder momentane Änderungsrate der Tonemapping-Funktion (ausgewertet an einem oder mehreren der Tonwertkontrollpunkte) wird gemäß mindestens einer Ausführungsform mindestens zum Teil basierend auf dem Verstärkungswert eingeschränkt. Beispielsweise ist das Anpassen der Tonemapping-Funktion derart eingeschränkt, dass die Ableitung oder momentane Änderungsrate einer Tangentenlinie an dem Mitteltonpunkt mindestens in etwa gleich dem Verstärkungswert ist.
  • Unter Bezugnahme auf 5, zeigt 5 zeigt ein nicht einschränkendes Beispiel eines Plots einer Tonemapping-Funktion, die den verschiedenen Ausführungsformen entspricht. Bei verschiedenen Ausführungsformen wird die Tonemapping-Funktion der 5 derart eingeschränkt, dass der Plot der Tonemapping-Funktion den Tieftonpunkt, den Mitteltonpunkt und den Hochtonpunkt beinhaltet. Bei derartigen Ausführungsformen wird die Tonemapping-Funktion weiter derart eingeschränkt, dass die abgeleitete oder momentane Änderungsrate einer Tangentenlinie am Mitteltonkontrollpunkt mit dem Verstärkungswert äquivalent ist. Obwohl dies in 5 nicht veranschaulicht ist, sollte angemerkt werden, dass die Tonemapping-Funktion mindestens zum Teil basierend auf zusätzlichen Tonwertkontrollpunkten gemäß mindestens einer Ausführungsform weiter eingeschränkt werden kann. 5 zeigt auch den entsprechenden Tieftonpunkt, den Mitteltonpunkt, den Hochtonpunkt und die Verstärkungslinie.
  • Bei verschiedenen Ausführungsformen werden, um die Tonemapping-Funktion zu bestimmen, eine oder mehrere parametrische Funktionen angepasst, wobei die Anpassung durch mindestens einen Teil der Vielzahl von Tonkontrollpunkten eingeschränkt wird. Die parametrischen Funktionen beinhalten beispielsweise ein oder mehrere Polynome von mindestens einem Grad. Bei einigen Ausführungsformen ist die Anpassung der Tonemapping-Funktion derart eingeschränkt, dass die Tonemapping-Funktion mindestens den Tieftonpunkt, den Mitteltonpunkt und den Hochtonpunkt beinhaltet und/oder sich mit diesen schneidet. Bei noch weiteren Ausführungsformen ist die Anpassung der Tonemapping-Funktion derart eingeschränkt, dass die Tonemapping-Funktion die zusätzlichen Tonwertkontrollpunkte beinhaltet und/oder schneidet. Bei einigen Ausführungsformen ist die Anpassung der Tonemapping-Funktion derart eingeschränkt, dass die Ableitung und/oder die momentane Änderungsrate der Tonemapping-Funktion, bewertet an der x-Komponente der Mitteltonpunkte, mit dem Verstärkungswert äquivalent ist.
  • Bei mindestens einem Beispiel werden verschiedene Spline-Verfahren dazu eingesetzt, die Tonemapping-Funktion anzupassen und/oder zu generieren. Bei verschiedenen Ausführungsformen beinhaltet das Generieren der Tonemapping-Funktion das Generieren und/oder Konstruieren einer nichtlinearen Kurve. Die nichtlineare Kurve ist beispielsweise eine globale Tonwertkurve (GTC). Bei einer Ausführungsform beinhaltet die Kurve mehrere lineare oder gekrümmte Segmente (z. B. eine Vielzahl von Splines). Bei anderen Ausführungsformen beinhaltet die Kurve eine Bezier-Kurve, z. B. eine quadratische oder eine kubische Bezier-Kurve. Die Kurve kann beispielsweise über parametrische Gleichungen zweiter, dritter oder höherer Ordnung konstruiert werden. Bei verschiedenen Ausführungsformen werden verschiedene Spline-Verfahren dazu eingesetzt, die Kurve zu generieren. Darüber hinaus ist bei derartigen Ausführungsformen die Verbindung zwischen den Splines oder Segmenten dazu konstruiert sicherzustellen, dass die Ableitung der Tonemapping-Funktion kontinuierlich ist.
  • Bei verschiedenen Ausführungsformen empfängt ein Tonemap-Generator die Quellbilddaten und die Tonemapping-Funktion. Der Tonemap-Generator wendet bei derartigen Ausführungsformen die Tonemapping-Funktion auf die Quellbilddaten an, um die Zielbilddaten zu generieren. Somit transformiert der Tonemap-Generator beispielsweise die Quellbilddaten (z. B. entweder das Einzelbild von Quellbilddaten, das eingesetzt wurde, um die Tonemapping-Funktion zu generieren, und/oder ein oder mehrere nachfolgende Einzelbilder von Quellbilddaten), um die Zielbilddaten zu generieren. Bei verschiedenen Ausführungsformen verwendet der Tonemap-Applikator einen ISP, um die Tonemapping-Funktion auf die Quellbilddaten anzuwenden. Bei einigen Ausführungsformen wird eine Pipeline des ISP dazu eingesetzt, die Tonemapping-Funktion auf die Quellbilddaten anzuwenden. Wie oben angemerkt, kann die Tonemapping-Funktion eine nichtlineare Abbildung der Pixelwerte der Quellbilddaten auf die Pixelwerte der Zielbilddaten bereitstellen. Bei einigen Ausführungsformen ist die Abbildung eine Eins-zu-Eins-Abbildung. Bei anderen Ausführungsformen ist die das Tonemapping keine Eins-zu-Eins-Abbildung. Beispielsweise werden bei Ausführungsformen, bei denen die x-Komponente des Tieftonpunkts größer als 0,0 ist und/oder bei denen die x-Komponente des Hochtonpunkts kleiner als eins ist, die Quellbilddaten über die entsprechenden x-Komponenten geclippt.
  • Bei einigen Ausführungsformen wandelt der Tonemap-Applikator die Tonemapping-Zielbilddaten in SDR- oder LDR-Zielbilddaten um. Bei derartigen Ausführungsformen wird eine Gamma-Kompressionsfunktion auf die tonegemappten Zielbilddaten angewandt, um farbkomprimierte Zielbilddaten zu generieren. Gemäß mindestens einer Ausführungsform können entweder SDR- oder LDR-Zielbilddaten von einer HDR-Engine mindestens zum Teil basierend auf den farbkomprimierten Zielbilddaten ausgegeben werden.
  • Unter Bezugnahme auf die 6-9 umfasst jeder Block der hier beschriebenen Verfahren 600, 700, 800 und 900 einen Rechenprozess, der unter Verwendung einer beliebigen Kombination von Hardware, Firmware und/oder Software ausgeführt werden kann. Beispielsweise können verschiedene Funktionen von einem Prozessor der in Speicher gespeicherte Anweisungen ausführt, vorgezogen werden. Die Verfahren können zudem als computerverwendbare Anweisungen verkörpert sein, die auf Computerspeichermedien gespeichert sind. Die Verfahren können durch eine eigenständige Anwendung, einen Dienst oder einen gehosteten Dienst (alleinstehend oder in Kombination mit einem anderen gehosteten Dienst) oder ein Plug-In für ein anderes Produkt bereitgestellt sein, um nur einige zu nennen. Zusätzlich werden die Verfahren 600, 700, 800 und 900 beispielhaft in Bezug auf das Offline-Signal Verarbeitungssystem, das in Verbindung mit 2 beschrieben ist, beschrieben. Diese Verfahren können zusätzlich oder alternativ von einem beliebigen System oder einer Kombination von Systemen, einschließlich, ohne darauf beschränkt zu sein, den hierin beschriebenen ausgeführt werden. Außerdem können Blöcke der Verfahren 600, 700, 800 und 900 in verschiedener Reihenfolge ausgeführt werden, einschließlich seriell und/oder parallel, und ein oder mehrere Blöcke können weggelassen werden.
  • 6 ist ein Ablaufdiagramm, das ein Verfahren 600 zum Ausführen von Offline-Signalverarbeitung gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt. Das Verfahren 600 beinhaltet bei Block B602 das Erfassen von Quellbilddaten mit fester Belichtungskalibrierung. Bei verschiedenen Ausführungsformen werden die Quellbilddaten während der Datensammlung erfasst. Beispielsweise zeichnet Kameravorrichtung, die in einem Fahrzeug integriert und/oder montiert ist, die Quellbilddaten (z. B. HDR-Bilder und/oder -Video) auf. Bei einer Ausführungsform werden die Quellbilddaten erfasst und gespeichert, bis eine Bildsignalverarbeitung ausgeführt wird. Bei anderen Ausführungsformen werden die Quellbilddaten gleichzeitig oder nahezu gleichzeitig mit der Erfassung verarbeitet.
  • Bei Block B604 führt das System, das das Verfahren 600 ausführt, eine Bildsignalverarbeitung unter Verwendung der Quellbilddaten aus. Die Bildsignalverarbeitung beinhaltet bei verschiedenen Ausführungsformen eine oder mehrere Komponenten der oben in Verbindung mit 2 beschriebenen Offline-Bildsignalverarbeitung 240, und/oder die HDR-Engine 340, die oben in Verbindung mit 3 beschrieben ist. Beispielsweise bestimmt die Bildsignalverarbeitung eine Tonemapping-Funktion und wendet sie auf die Quellbilddaten an, um, wie oben beschrieben, Zielbilddaten zu generieren.
  • Bei Block B606 erhält das System, das das Verfahren 600 ausführt, die Zielbilddaten. Bei einem Beispiel erhält das System, das das Verfahren 600 ausführt, die Zielbilddaten von einem ISP. Bei einem anderen Beispiel erhält das System, das das Verfahren 600 ausführt, die Zielbilddaten von einem Server-Computersystem (z. B. das den ISP umsetzt) über ein Netzwerk. Bei Block B610 bestimmt das System, das das Verfahren 600 ausführt, ob die Zielbilddaten optimal sind. Bei verschiedenen Ausführungsformen sind die Zielbilddaten optimal, wenn sie für eine bestimmte Anwendung geeignet sind. Bei einem Beispiel sind die Zielbilddaten optimal, wenn die Helligkeit eines Bilds, das in den Zielbilddaten enthalten ist, innerhalb eines derartigen Bereichs liegt, dass das Bild ausreichend Detail aufweist (z. B. nicht zu dunkel ist, dass Details verloren gehen, oder zu hell, dass das Bild verwaschen ist). Bei einem anderen Beispiel können die Zielbilddaten als optimal angesehen werden, wenn sie zum Trainieren eines Modells verwendet werden können. Bei verschiedenen Ausführungsformen wird die Bestimmung von einem Benutzer vorgenommen. Beispielsweise untersucht der Benutzer die Zielbilddaten und gibt an, ob die Zielbilddaten optimal sind. Bei anderen Ausführungsformen wird ein Modell (z. B. ein neuronales Netzwerk) trainiert, um zu bestimmen, ob die Zielbilddaten optimal sind.
  • Falls die Zielbilddaten nicht optimal sind, fährt das System, das das Verfahren 600 ausführt, mit Block B608 fort. Bei Block B608 modifiziert das System, das das Verfahren 600 ausführt, die Bildsignalverarbeitung. Bei verschiedenen Ausführungsformen beinhalten Modifikationen an der Bildsignalverarbeitung Verbesserungen und Korrekturen 266 und/oder Abstimmungsänderungen 264, wie oben in Verbindung mit 2 beschrieben. Bei einem Beispiel beinhaltet die Modifikation an der Bildsignalverarbeitung eine Modifikation an einem oder mehreren Kontrollpunkten einer Tonemapping-Funktion. Bei anderen Beispielen beinhaltet die Modifikation der Bildsignalverarbeitung das Hinzufügen und/oder Entfernen von Bildverarbeitungsalgorithmen. Bei verschiedenen Ausführungsformen werden Tonemapping-Funktionen, die auf die Quellbilddaten angewandt werden, um die Zielbilddaten zu generieren, modifiziert, hinzugefügt oder entfernt, um verbesserte Ergebnisse (z. B. optimale Zielbilddaten) zu generieren.
  • Falls jedoch die Zielbilddaten optimal sind, fährt das System, das das Verfahren 600 ausführt, mit Block B612 fort. Bei Block B612 trainiert das System, das das Verfahren 600 ausführt, ein neuronales Netzwerk mindestens zum Teil basierend auf den Zielbilddaten. Beispielsweise können die Zielbilddaten verwendet werden, um ein Objekterfassungsmodell oder ein anderes Modell, das in Verbindung mit den 13A-13D beschrieben ist, zu trainieren. Das neuronale Netzwerk ist bei einer Ausführungsform darauf trainiert, eine Charakteristik und/oder einen Aspekt der Zielbilddaten zu bestimmen. Bei Block B614 erhält das System, das das Verfahren 600 ausführt, die Zielbilddaten von dem neuronalen Netzwerk. Beispielsweise führt das System, das das Verfahren 600 ausführt, vor dem Einsatz des neuronalen Netzwerks einen oder mehrere Tests des neuronalen Netzwerks aus. Bei einem anderen Beispiel wird das trainierte neuronale Netzwerk eingesetzt, und die Ergebnisse beinhalten Informationen, die die Leistung des trainierten neuronalen Netzwerks angeben.
  • Bei Block B616 bestimmt das System, das das Verfahren 600 ausführt, ob die Ergebnisse optimal sind. Beispielsweise bestimmt das System, das das Verfahren 600 ausführt, ob das trainierte neuronale Netzwerk einen Task wie beabsichtigt ausführt. Bei einem anderen Beispiel bestimmt das System, das das Verfahren 600 ausführt, eine Erfolgsrate des trainierten neuronalen Netzwerks (z. B. wie erfolgreich das neuronale Netzwerk beim Kategorisieren einer bestimmten Klasse von Objekten ist). Bei verschiedenen Ausführungsformen bestimmt ein Benutzer, ob die Ergebnisse des trainierten neuronalen Netzwerks optimal sind. Bei noch anderen Ausführungsformen erfolgt die Bestimmung mindestens zum Teil basierend auf einem Satz von Regeln und/oder Heuristiken. Beispielsweise sind die Ergebnisse optimal, falls die Erfolgsrate des trainierten neuronalen Netzwerks bei oder über einem Schwellenwert liegt.
  • Falls die Zielbilddaten nicht optimal sind, fährt das System, das das Verfahren 600 ausführt, mit Block B608 fort. Wie oben beschrieben, werden bei Block B608 eine oder mehrere Modifikationen an der Bildsignalverarbeitung vorgenommen, und die Quelldaten werden bei Block B604 erneut verarbeitet. Bei verschiedenen Ausführungsformen werden die Modifikationen von einem Benutzer bestimmt. Bei noch anderen Ausführungsformen werden die Modifikationen von einem Modell (z. B. von einem neuronalen Netzwerk) oder auf andere Weise ohne Benutzereingabe (z. B. Regeln, Heuristiken usw.) bestimmt. Falls die Ergebnisse optimal sind, fährt das System, das das Verfahren 600 ausführt, mit Block B618 fort. Bei Block 618 führt das System, das das Verfahren 600 ausführt, Inferenzieren mit dem neuronalen Netzwerk aus. Bei verschiedenen Ausführungsformen wird das neuronale Netzwerk zur Verwendung zum Ausführen eines Tasks eingesetzt. Beispielsweise wird das neuronale Netzwerk in einem Fahrzeug eingesetzt, wie es in Verbindung mit den 13A-13D beschrieben ist.
  • 7 ist ein Ablaufdiagramm, das das Verfahren 700 zum Tonemapping von Bilddaten mit hohem dynamischem Bereich gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt. Das Verfahren 700 beginnt bei Block B702, wo Quellbilddaten von einem oder mehreren Bildsensoren (z. B. den HDR-Bildsensoren 144 der 1) erfasst werden. Bei einem Beispiel sind die Quellbilddaten HDR-Bilddaten. Die Quellbilddaten beinhalten bei einer Ausführungsform ein erstes Einzelbild von Quellbilddaten (z. B. ein Einzelbild eines Videos). Bei mindestens einigen Ausführungsformen (z. B. Video-Ausführungsformen) werden ein oder mehrere zusätzliche und/oder aufeinanderfolgende Einzelbilder von Quellbilddaten (z. B. ein zweites aufeinander folgendes Einzelbild von Quellbilddaten) nach dem ersten Einzelbild von Quellbilddaten erfasst. Beispielsweise codieren die Quellbilddaten ein Quellbild, das eine Szene abbildet. Falls zusätzliche Einzelbilder von Quellbilddaten erfasst werden, codieren die zusätzlichen Einzelbilder von Quellbilddaten bei einem Beispiel ein oder mehrere zusätzliche Quellbilder. Somit kann das Erfassen von Quellbilddaten bei Block B702 das Erfassen eines oder mehrerer Einzelbilder von Quellbilddaten beinhalten. Beispielsweise während der Ausführung der Datensammlung, wie oben beschrieben.
  • Bei verschiedenen Ausführungsformen werden die Quellbilddaten von mindestens einem Bildsensor (z. B. einer Kameravorrichtung) erfasst, der an einem bemannten oder unbemannten Land- oder Luftfahrzeug (z. B. dem Landfahrzeug 104 und/oder dem Luftfahrzeug 106 der 1) montiert ist. Wie oben beschrieben, kann das Fahrzeug ein manuell betriebenes Fahrzeug, ein autonomes Fahrzeug, ein teilweise autonomes Fahrzeug und/oder ein ferngesteuertes Fahrzeug sein. Bei mindestens einigen Ausführungsformen wird das Fahrzeug mindestens zum Teil basierend auf den Bilddaten, die bei Block B714 generiert werden, gesteuert (z. B. werden die Zielbilddaten dazu verwendet, ein oder mehrere Modelle zu trainieren, die dazu verwendet werden, einen oder mehrere Vorgänge, die Wahrnehmung, Planung oder Steuerung des Fahrzeugs entsprechen, auszuführen). Die hierin beschriebenen Bildsensoren können jedoch Teil einer beliebigen geeigneten Vorrichtung sein, wie einer handgehaltenen oder stationären Kamera, einer Armaturenbrettkamera, einer Sicherheitskamera, eines Mobilgeräts oder einer anderen Vorrichtung, die einen oder mehrere Bildsensoren beinhaltet. Bei mindestens einer Ausführungsform sind die Bildsensoren in einem oder mehreren Robotern beinhaltet.
  • Bei Block B702 werden die Quellbilddaten bei verschiedenen Ausführungsformen an einem Offline-Signalverarbeitungssystem empfangen und/oder bereitgestellt, wie etwa, ohne darauf beschränkt zu sein, Offline-Signalverarbeitung 240 der 2. Bei mindestens einer Ausführungsform können die Quellbilddaten mindestens einem bereitgestellt und/oder empfangen werden von: einem HDR-Bilddatenpuffer, einem ROI-Locator, dem Statistikmodul 252, dem Kontrollpunktselektor und/oder einer Bildverarbeitung 258 der Offline-Signalverarbeitung 240.
  • Bei dem optionalen Block B704 wird ein Filter für den Interessensbereich (ROI) auf die empfangenen Quellbilddaten angewandt. Der ROI-Locator 348 der 3 bestimmt einen ROI der Quellbilddaten. Der ROI-Locator 348 wendet bei einer Ausführungsform ein Filter und/oder eine Maske auf die Quellbilddatenpixel, die dem ROI des Quellbildes entsprechen, derart an, dass die gefilterten Quellbilddaten nur Bilddaten, die dem bestimmten ROI des Quellbildes entsprechen, beinhalten. Zu beachten ist, dass Block B704 optional ist und die Quellbilddaten nicht mindestens zum Teil basierend auf einem ROI gefiltert und/oder analysiert werden müssen.
  • Bei dem optionalen Block B706 werden eine oder mehrere statistische Metriken generiert und/oder aus den gefilterten (oder ungefilterten) Quellbilddaten bestimmt. Das Statistikmodul 352 der 3 bestimmt und/oder generiert beispielsweise eine Vielzahl statistischer Metriken mindestens zum Teil basierend auf den Pixelwerten der Quellbilddaten (oder den Pixelwerten des Teils der Quellbilddaten, der dem ROI des codierten Quellbildes entspricht).
  • Bei Block B708 wird eine Vielzahl von Tonkontrollpunkten für die Quellbilddaten bestimmt. Beispielsweise bestimmt und/oder wählt der Kontrollpunktselektor 354 der HDR-Engine 340 einen Tieftonpunkt, einen Mitteltonpunkt und/oder einen Hochtonpunkt mindestens zum Teil basierend auf den Quellbilddaten aus. Bei Ausführungsformen, bei denen die Quellbilddaten mindestens zum Teil basierend auf einem ROI gefiltert wurden, werden die Tonkontrollpunkte mindestens zum Teil basierend auf dem Teil der Quellbilddaten, der dem ROI des Quellbildes entspricht, bestimmt. Bei Ausführungsformen, bei denen bei Block B706 eine Vielzahl statistischer Metriken bestimmt wurde, wird mindestens ein Teil der Tonkontrollpunkte mindestens basierend auf einem Teil der statistischen Metriken bestimmt. Bei mindestens einer Ausführungsform werden zusätzliche Tonkontrollpunkte bei Block B708 bestimmt. Beispielsweise wird bei Block B708 zusätzlich mindestens ein Flare-Unterdrückungskontrollpunkt bestimmt. Verschiedene Ausführungsformen zum Bestimmen einer Vielzahl von Kontrollpunkten werden in Verbindung mit mindestens dem Verfahren 800 der 8 erläutert. Weitere Ausführungsformen zum Bestimmen eines Tieftonpunkts, eines Mitteltonpunkts, eines Hochtonpunkts und eines Flare-Unterdrückungspunkts werden in Verbindung mit 4 erläutert.
  • Bei Block B710 wird eine Tonemapping-Funktion mindestens zum Teil basierend auf den Tonkontrollpunkten bestimmt. Beispielsweise bestimmt und/oder generiert der Tonemap-Generator 356 der 3 eine Tonemapping-Funktion mindestens zum Teil basierend auf den Tonkontrollpunkten. Somit kann die Tonemapping-Funktion mindestens zum Teil auf den Quellbilddaten basieren, die dem ROI des Quellbildes und/oder den mehreren statistischen Metriken der Quellbilddaten entsprechen.
  • Verschiedene Ausführungsformen zum Bestimmen einer Tonemapping-Funktion werden mindestens in Verbindung mit den 4, 5 und 8 erläutert. Bei einer Ausführungsform wird eine Verstärkungslinie mindestens zum Teil basierend auf mindestens dem Mitteltonpunkt und dem Flare-Unterdrückungspunkt bestimmt. Ein Verstärkungswert wird bei einem Beispiel mindestens zum Teil basierend auf der Verstärkungslinie bestimmt. Genauer gesagt ist der Verstärkungswert bei einer Ausführungsform mindestens ungefähr äquivalent zu der Steigung der Verstärkungslinie, die die Linie ist, die sowohl den Mitteltonpunkt als auch den Flare-Unterdrückungspunkt beinhaltet. Bei mindestens einer Ausführungsform basiert die Tonemapping-Funktion mindestens zum Teil auf dem Tieftonpunkt, dem Mitteltonpunkt und/oder dem Hochtonpunkt. Bei einigen Ausführungsformen die Tonemapping-Funktion eine angepasste Funktion, die darauf beschränkt ist, jeden des Tieftonpunkts, des Mitteltonpunkts und des Hochtonpunkts beinhaltet und/oder durch zu verlaufen.
  • Bei mindestens einer Ausführungsform ist die Anpassung der Tonemapping-Funktion derart eingeschränkt, dass die Ableitung und/oder die momentane Änderungsrate der Tonemapping-Funktion, bei Bewerten an dem Mitteltonpunkt, mindestens in etwa mit dem Verstärkungswert äquivalent ist. Bei mindestens einer Ausführungsform wird eine erste Logikvorrichtung (z. B. der Allzweckprozessor 322 der 3) dazu eingesetzt, die Tonemapping-Funktion zu bestimmen. Bei mindestens einer Ausführungsform ist Logikvorrichtung, die eingesetzt wird, um die Tonemapping-Funktion zu bestimmen und/oder zu generieren, ein Allzweckprozessor des Computersystems, der von der Kameravorrichtung, die die Quellbilddaten erfasst hat, getrennt ist.
  • Wie durchgehend angemerkt, stellt die Tonemapping-Funktion eine Abbildung von den Pixelwerten der Quellbilddaten auf die Pixelwerte der Zielbilddaten bereit. Somit ist die Tonemapping-Funktion bei einer Ausführungsform eine Skalarfunktion, die von einer einzelnen Skalarvariablen abhängt (z. B. von dem Skalarwert eines einzelnen Pixels der Quellbilddaten). Beispielsweise ist der skalare Wert der Funktion, wie er anhand des skalaren Pixelwerts der Quellbilddaten ausgewertet wird, der tonegemappte skalare Wert der Zielbilddaten für das entsprechende Pixel. Wie durchgehend angemerkt, kann die Abbildung eine nichtlineare Eins-zu-Eins-Abbildung sein. Weil die Tonemapping-Funktion darauf beschränkt sein kann, den Tieftonpunkt zu beinhalten, kann die Tonemapping-Funktion ein Pixel des Quellbildes, das den Skalarwert der x-Komponente des Tieftonpunkts aufweist, auf den Skalarwert der y-Komponente des Tieftonpunktes abbilden.
  • Bei einigen Ausführungsformen wird jedes Pixel der Quellbilddaten, das einen Wert kleiner als die x-Komponente des Tieftonpunkts aufweist, derart geclippt, dass der Wert des geclippten Pixels auf die x-Komponente des Tieftonpunkts gesetzt wird. Bei mindestens einer Ausführungsform werden Pixel der Quellbilddaten, die einen Wert kleiner als die x-Komponente des Flare-Unterdrückungspunkts aufweisen, derart geclippt, dass der Wert des geclippten Pixels auf die x-Komponente der Flare-Unterdrückung gesetzt wird. Weil die Tonemapping-Funktion bei verschiedenen Ausführungsformen darauf beschränkt ist, den Mitteltonpunkt zu beinhalten, kann die Tonemapping-Funktion ein Pixel des Quellbildes abbilden, das den skalaren Wert der x-Komponente des Mitteltonpunkts aufweist, zu dem skalaren Wert der y-Komponente des Mitteltonpunktes abbilden. Auf ähnliche Art, weil die Tonemapping-Funktion bei anderen Ausführungsformen darauf beschränkt ist, den Hochtonpunkt zu beinhalten, bildet die Tonemapping-Funktion ein Pixel des Quellbildes, das den skalaren Wert der x-Komponente des Hochtonpunkts aufweist, zu dem skalaren Wert der y-Komponente des Hochtonpunkts ab. Bei einigen Ausführungsformen wird jedes Pixel der Quellbilddaten, das einen Wert aufweist, der größer ist als die x-Komponente des Hochtonpunkts, derart geclippt, dass der Wert des geclippten Pixels auf die x-Komponente des Hochtons gesetzt wird. Eine nicht einschränkende Ausführungsform einer nichtlinearen Tonemapping-Funktion ist in 5 gezeigt.
  • Bei dem optionalen Block B712 wird eine Einzelbildverzögerung eingesetzt. Beispielsweise puffert die Verzögerungseinheit 350 der 3 die Tonemapping-Funktion, während die HDR-Bildsensoren 144 ein oder mehrere zusätzliche Einzelbilder von Quellbilddaten aufzeichnen (z. B. ein nachfolgendes und/oder nachfolgendes zweiten Einzelbild von Quellbilddaten). Die Einzelbildverzögerung des Blocks B712 beinhaltet bei einem Beispiel das Puffern des ersten Einzelbildes von Bilddaten (das eingesetzt wurde, um das Tonemapping bei Block B710 zu generieren), während das zweite Einzelbild von Bilddaten erfasst wird, oder mindestens bis das zweite Einzelbild von Bilddaten für die Offline-Bildsignalverarbeitung bereitgestellt wird.
  • Bei Block B714 werden Zielbilddaten mindestens zum Teil basierend auf den Quellbilddaten und der Tonemapping-Funktion generiert. Beispielsweise wendet der Tonemap-Applikation 358 die Tonemapping-Funktion auf Quellbilddaten an. Bei verschiedenen Ausführungsformen codieren die Zielbilddaten ein Zielbild, wobei die Pixelwerte der Zielbilddaten von dem Anwenden der Tonemapping-Funktion auf die Quellbilddaten definiert werden. Das Anwenden der Tonemapping-Funktion auf die Quellbilddaten beinhaltet beispielsweise das Anwenden der Tonemapping-Funktion auf die Pixelwerte der Quellbilddaten. Bei einer Ausführungsform beinhaltet das Anwenden der Tonemapping-Funktion auf die Quellbilddaten das Transformieren und/oder Abbilden der Quellbilddaten auf die Zielbilddaten über die nichtlineare und Eins-zu-Eins-Abbildung und/oder Übereinstimmung zwischen Quell- und Zielbilddaten, die von der Tonemapping-Funktion bereitgestellt werden. Bei Ausführungsformen, die eine Einzelbildverzögerung beinhalten, wird die Tonemapping-Funktion auf das Einzelbild von Quellbilddaten (z. B. ein zweites Einzelbild von Quellbilddaten) angewandt, das auf das Einzelbild von Quellbilddaten folgt und/oder an das Einzelbild der Quellbilddaten anschließt, das eingesetzt wurde, um die Tonemapping-Funktion (z. B. ein erstes Einzelbild von Quellbilddaten) zu generieren.
  • Bei einigen Ausführungsformen beinhaltet das Generieren von Zielbilddaten das Generieren von Standard-Dynamic-Range-Zielbilddaten (SDR-Zielbilddaten) oder Low-Dynamic-Range-Zielbilddaten (LDR-Zielbilddaten). Beispielsweise basieren die SDR- oder LDR-Zielbilddaten mindestens zum Teil auf der Tonemapping-Funktion und/oder den Pixelwerten der tonegemappten Zielbilddaten. Bei einer Ausführungsform wird eine Gammakompressionsfunktion auf die tonegemappten Zielbilddaten angewandt, um farbkomprimierte Zielbilddaten zu generieren. SDR- oder LDR-Zielbilddaten werden bei derartigen Ausführungsformen mindestens zum Teil basierend auf den farbkomprimierten Zielbilddaten generiert.
  • 8 ist ein Ablaufdiagramm, das das Verfahren 800 zum Generieren von Bilddaten mit niedrigerem Dynamikbereich aus Bilddaten mit höherem Dynamikbereich gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt. Die Blöcke B802-B810 des Verfahrens 800 beinhalten das Auswählen und/oder Bestimmen einer Vielzahl von Tonkontrollpunkten. Wie durchgehend angemerkt, kann die Vielzahl von Tonkontrollpunkten über den Kontrollpunktselektor 354 der 3 ausgewählt und/oder bestimmt werden. Verschiedene Ausführungsformen zum Bestimmen der Vielzahl von Kontrollpunkten werden in Verbindung mit mindestens Block B808 des Verfahrens 800 der 8 erörtert. Bei verschiedenen Ausführungsformen basiert die Bestimmung der Vielzahl von Kontrolltonpunkten mindestens zum Teil auf den Pixelwerten der Quellbilddaten, den Pixelwerten des Teils der Quellbilddaten, der dem ROI in dem Quellbild entspricht, und/oder der Vielzahl statistischer Metriken, die mindestens zum Teil auf den Pixelwerten der Quellbilddaten basieren. Wie ebenfalls durchgehend angemerkt, beinhalten die mehreren Tonkontrollpunkte bei verschiedenen Beispielen mindestens einen Tieftonpunkt, einen Mitteltonpunkt und/oder einen Hochtonpunkt. Bei einigen Ausführungsformen beinhalten die mehreren Tonkontrollpunkte zusätzlich einen Flare-Unterdrückungspunkt. Derartige Tonkontrollpunkte sind mindestens in den 4-5 gezeigt. Es sollte auch beachtet werden, dass Teile des Verfahrens 800 von einer ersten Logikvorrichtung (z. B. von dem Allzweckprozessor 322 der 3) ausgeführt werden können und andere Teile des Verfahrens 800 von einer zweiten Logikvorrichtung (z. B. von dem Bildsignalprozessor (ISP) 324 der 3).
  • Bei einigen Ausführungsformen werden vor der Initialisierung des Verfahrens 800 die Pixelwerte der Quellbilddaten derart normalisiert, dass die Pixelwerte der normalisierten Quellbilddaten in dem Bereich von [0, 1] liegen. Das Verfahren 800 beginnt bei Block B802, wo der Mitteltonpunkt mindestens zum Teil basierend auf den Quellbilddaten bestimmt wird. Bei einigen Ausführungsformen werden zum Bestimmen der x-Komponente des Mitteltonpunkts die Quellbilddaten durch ein Hochtonfilter und ein Tieftonfilter gefiltert, um gefilterte Quellbilddaten zu generieren. Das Hochtonfilter filtert den Teil der Quellbilddaten heraus, der Pixelwerte beinhaltet, die größer als ein Hochtonschwellenwert sind. Das Tieftonfilter filtert den Teil der Quellbilddaten heraus, der Pixelwerte beinhaltet, die kleiner als ein Tieftonschwellenwert sind. Die x-Komponente des Mitteltonpunkts wird bei einer Ausführungsform bestimmt, indem die Pixelwerte des Teils der Quellbilddaten gemittelt werden, der nach der Anwendung der Hochton- und Tieftonfilter verbleibt. Bei anderen Ausführungsformen werden die Hochton- und Tieftonfilter nicht auf die Quellbilddaten angewandt.
  • Bei einigen Ausführungsformen beinhaltet die Mittelwertbildung der Pixelwerte die logarithmische Mittelwertbildung der Pixelwerte. Bei derartigen Ausführungsformen werden logarithmisch transformierte Bilddatenpixelwerte durch Anwenden einer Logarithmusfunktion auf die gefilterten oder ungefilterten Quellbilddaten generiert. Bei einer Ausführungsform wird die Basis der Logarithmusfunktion mindestens zum Teil basierend auf den Quellbilddaten ausgewählt. Bei einer Ausführungsform ist die Basis der Logarithmusfunktion zehn. Bei anderen Ausführungsformen ist die Logarithmusfunktion die natürliche Logarithmusfunktion. Bei verschiedenen Ausführungsformen wird ein Durchschnittswert der logarithmisch transformierten Pixelwerte bestimmt. Der Mittelwert der logarithmisch transformierten Pixelwerte wird bei einem Beispiel mit der entsprechenden Basis der Logarithmusfunktion potenziert. Bei verschiedenen Ausführungsformen wird die x-Komponente des Mitteltonpunkts auf die Potenzierung des Durchschnittswerts der logarithmisch transformierten Pixelwerte der Quellbilddaten gesetzt. Darüber hinaus wird bei einigen Ausführungsformen die y-Komponente des Mitteltonpunkts auf einen spezifizierten Mitteltonwert für die Zielbilddaten gesetzt.
  • Bei Block B804 wird der Tieftonpunkt mindestens zum Teil basierend auf den Quellbilddaten bestimmt. Bei einer nicht einschränkenden Ausführungsform wird eine Teilmenge der Pixelwerte der Quellbilddaten bestimmt und/oder generiert, wobei Werte für die Pixel, die in der Teilmenge enthalten sind, kleiner sind als die Pixelwerte für die Pixel, die aus der Teilmenge ausgeschlossen sind. Daher können die Quellbilddaten über ein Tieftonfilter derart gefiltert werden, dass die einzigen Pixelwerte, die nach dem Filtern verbleiben, diejenigen Pixel sind, deren Pixelwerte kleiner als ein Tieftonschwellenwert sind. Bei einer nicht einschränkenden Ausführungsform wird die x-Komponente des Tieftonpunkts mindestens zum Teil basierend auf der Teilmenge von Pixelwerten bestimmt. Beispielsweise werden die Pixelwerte, die den Tieftonfilterprozess überstehen, gemittelt, um die x-Komponente des Tieftonpunkts zu bestimmen. Bei einer nicht einschränkenden Ausführungsform wird die y-Komponente des Tieftonpunkts als der kleinste Pixelwert für die Zielbilddaten bestimmt und/oder ausgewählt. Bei mindestens einer Ausführungsform wird die y-Komponente des Tieftonpunkts auf 0,0 gesetzt. Beispielsweise kann der Tieftonpunkt ein Schwarzpunkt sein.
  • Bei Block B806 wird der Hochtonpunkt mindestens zum Teil basierend auf den Quellbilddaten bestimmt. Bei einer nicht einschränkenden Ausführungsform wird eine Teilmenge der Pixelwerte der Quellbilddaten bestimmt und/oder generiert, wobei Werte für die Pixel, die in der Teilmenge enthalten sind, größer sind als die Pixelwerte für die Pixel, die von der Teilmenge ausgeschlossen sind. Daher können die Quellbilddaten über ein Hochtonfilter derart gefiltert werden, dass die einzigen Pixelwerte, die nach dem Filtern verbleiben, Pixel mit Pixelwerten sind, die größer als ein Hochtonschwellenwert sind. Bei einer Ausführungsform wird die x-Komponente des Hochtonpunkts mindestens zum Teil basierend auf der Teilmenge von Pixelwerten bestimmt. Beispielsweise werden die Pixelwerte, die den Hochtonfilterprozess überstehen, gemittelt, um die x-Komponente des Hochtonpunkts zu bestimmen. Bei einer Ausführungsform wird die y-Komponente des Hochtonpunkts als der größte Pixelwert für die Zielbilddaten bestimmt und/oder ausgewählt. Bei mindestens einer Ausführungsform wird die y-Komponente des Tieftonpunkts auf 1,0 gesetzt. Beispielsweise kann der Tieftonpunkt ein Weißpunkt sein. Bei einer Ausführungsform werden die Zielbilddaten durch Einstellen der y-Komponente des Tieftonpunkts auf 0,0 und der y-Komponente der Hochtonkomponente auf den Bereich von [0, 1] normalisiert.
  • Bei Block B808 wird ein Flare-Unterdrückungspunkt bestimmt. Bei einer Ausführungsform wird die x-Komponente des Flare-Unterdrückungspunkts auf einen Wert eingestellt, der das maximale Flare sein soll, das in dem Ton unterdrückt wird. Bei einigen Ausführungsformen wird die x-Komponente des Flare-Unterdrückungspunkts von dem Benutzer ausgewählt. Bei anderen Ausführungsformen wird die x-Komponente mindestens zum Teil basierend auf den Pixelwerten des Quellbildes und/oder der bestimmten Vielzahl der statistischen Metriken für die Quellbilddaten dynamisch bestimmt. Beispielsweise wird die x-Komponente des Flare-Unterdrückungspunkts mindestens zum Teil basierend auf einem Prozentsatz der Mittelton-Pixelwerte oder dem Wert der Pixelwerte, die einen Tiefton-Schwellenwert aufweisen, eingestellt. Bei verschiedenen Ausführungsformen wird die x-Komponente des Flare-Unterdrückungspunkts derart ausgewählt, dass sie größer ist als die x-Komponente des Tieftonpunkts, aber kleiner als die x-Komponente des Mitteltonpunkts. Bei verschiedenen nicht einschränkenden Ausführungsformen ist die y-Komponente des Flare-Unterdrückungspunkts auf 0,0 eingestellt. Bei anderen Ausführungsformen wird die y-Komponente des Flare-Unterdrückungspunkts derart eingestellt oder ausgewählt, dass sie größer als 0,0, aber kleiner als die y-Komponente des Mitteltonpunkts ist.
  • Bei dem optionalen Block B810 werden ein oder mehrere zusätzliche Kontrollpunkte mindestens zum Teil basierend auf den Quellbilddaten bestimmt. Bei Block B812 werden die Quelldaten bei einem Beispiel mindestens zum Teil basierend auf den Kontrollpunkten vorverarbeitet. Beispielsweise wird jedes der Pixel der Quellbilddaten mit Pixelwerten, die kleiner als die x-Komponente des Tieftonpunkts sind, derart geclippt, dass die Pixelwerte derartiger Pixel auf den skalaren Wert der x-Komponente des Tieftonpunktes gesetzt werden. Bei mindestens einer Ausführungsform werden Pixel der Quellbilddaten mit Pixelwerten, die kleiner als die x-Komponente des Flare-Unterdrückungspunkts sind, derart geclippt, dass die Pixelwerte derartiger Pixel auf den skalaren Wert der x-Komponente des Flare-Unterdrückungspunktes gesetzt werden. Beispielsweise wird jedes der Pixel der Quellbilddaten mit Pixelwerten, die kleiner als die x-Komponente des Hochtonpunkts sind, derart geclippt, dass die Pixelwerte derartiger Pixel auf den skalaren Wert der x-Komponente des Hochtonpunktes gesetzt werden.
  • Bei Block B814 wird ein Verstärkungswert mindestens zum Teil basierend auf dem Mitteltonpunkt und dem Flare-Unterdrückungspunkt bestimmt. Beispielsweise wird eine Verstärkungslinie durch den Mitteltonpunkt und den Flare-Unterdrückungspunkt konstruiert. Der Verstärkungswert ist bei einer Ausführungsform derart eingestellt, dass er die Steigung der Verstärkungswertlinie ist. Bei verschiedenen Ausführungsformen ist die Steigung positiv. Eine Ausführungsform einer Verstärkungswertlinie und einer entsprechenden Steigung sind in 4 gezeigt.
  • Bei Block B816 wird die Tonemapping-Funktion mindestens zum Teil basierend auf dem Tieftonpunkt, dem Mitteltonpunkt und dem Hochtonpunkt bestimmt. Bei einigen Ausführungsformen basiert die Bestimmung der Tonemapping-Funktion ferner mindestens zum Teil auf dem Verstärkungswert. Bei noch anderen Ausführungsformen basiert die Bestimmung der Tonemapping-Funktion ferner mindestens zum Teil auf dem einen oder den mehreren zusätzlichen Tonkontrollpunkten, die in Block B810 bestimmt werden. Bei verschiedenen Ausführungsformen kann der Tonemap-Generator 356 der 3 dazu eingesetzt werden, die Tonemapping-Funktion zu bestimmen. Genauer gesagt kann der Tonemap-Generator 356 den Allzweckprozessor 322 der 3 dazu verwenden, die Tonemapping-Funktion zu generieren.
  • Bei verschiedenen Ausführungsformen werden, um die Tonemapping-Funktionen zu bestimmen, eine oder mehrere parametrische Funktionen angepasst, wobei die Anpassung durch mindestens einen Teil der verschiedenen Tonkontrollpunkte eingeschränkt wird. Beispielsweise beinhalten die parametrischen Funktionen ein oder mehrere Polynome, die praktisch jeden Grad aufweisen können. Bei einigen Ausführungsformen ist die Anpassung der Tonemapping-Funktion derart eingeschränkt, dass die Tonemapping-Funktion die zusätzlichen Tonwertkontrollpunkte beinhaltet und/oder schneidet. Bei noch weiteren Ausführungsformen ist die Anpassung der Tonemapping-Funktion derart eingeschränkt, dass die Tonemapping-Funktion die zusätzlichen Tonwertkontrollpunkte beinhaltet und/oder schneidet. Bei einigen Ausführungsformen ist die Anpassung der Tonemapping-Funktion derart eingeschränkt, dass die Ableitung und/oder die momentane Änderungsrate der Tonemapping-Funktion, bewertet an der x-Komponente der Mitteltonpunkte, mit dem Verstärkungswert äquivalent ist. Eine nicht einschränkende Ausführungsform einer Tonemapping-Funktion ist in 5 gezeigt.
  • Bei verschiedenen Ausführungsformen werden Spline-Verfahren dazu eingesetzt, die Tonemapping-Funktion anzupassen und/oder zu generieren. Das Generieren der Tonemapping-Funktion beinhaltet das Generieren und/oder Konstruieren einer nichtlinearen Kurve gemäß mindestens einer Ausführungsform. Bei verschiedenen Ausführungsformen ist die nichtlineare Kurve eine globale Tonkurve (GTC). Beispielsweise beinhaltet die Kurve eine Vielzahl linearer oder gekrümmter Segmente (z. B. eine Vielzahl von Splines). Die Kurve kann eine Bezier-Kurve sein, z. B. eine quadratische oder eine kubische Bezier-Kurve. Bei noch anderen Beispielen wird die Kurve über parametrische Gleichungen zweiter, dritter oder höherer Ordnung konstruiert.
  • Bei Block B818 wird die Tonemapping-Funktion angewandt, um die Zielbilddaten zu generieren. Bei verschiedenen Ausführungsformen kann der Tonemap-Applikator 358 der 3 eingesetzt werden, um die Quellbilddaten in Zielbilddaten über die Tonemapping-Funktion umzuwandeln. Der Tonemap-Applikator 358 bewirkt bei verschiedenen Ausführungsformen, dass der ISP 324 der 3 die nichtlineare Transformation der Quellbilddaten anwendet. Bei mindestens einer Ausführungsform wird eine Pipeline des ISP 324 dazu eingesetzt, die Transformation anzuwenden und die Zielbilddaten zu generieren.
  • Die Blöcke B820 und B822 sind optionale Blöcke zum Generieren von SDR-Zielbilddaten oder LDR-Bilddaten aus den tonegemappten Zielbilddaten. Bei Block B820 wird eine Gamma-Kompressionsfunktion auf die tonegemappten Bilddaten angewandt, um farbkomprimierte Bilddaten zu generieren. Bei Block B822 werden entweder SDR- oder LDR-Zielbilddaten mindestens zum Teil basierend auf den farbkomprimierten Quellbilddaten generiert.
  • 9 ist ein Flussdiagramm, das das Verfahren 900 zum Verteilen der Vorgänge des Tonemappings gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt. Bei Block B902 bestimmt eine erste Logikvorrichtung die Tonemapping-Funktion. Bei Block B902 beinhaltet die erste Logikvorrichtung irgendeine der Logikvorrichtungen 320 der 3, wie etwa, ohne darauf beschränkt zu sein, den Mehrzweckprozessor 322, den Bildsignalprozessor (ISP) 324, die ASIC 326 und/oder das FPGA 328. Bei einigen Ausführungsformen ist die erste Logikvorrichtung, die die Tonemapping-Funktion bestimmt, der Allzweckprozessor 322. Bei mindestens einer Ausführungsform wird eine Grafikverarbeitungseinheit (GPU) dazu eingesetzt, die Tonemapping-Funktion zu bestimmen.
  • Bei Block B904 wird eine zweite Logikvorrichtung dazu eingesetzt, die Tonemapping-Funktion auf die Quellbilddaten anzuwenden und die Zielbildquellendaten zu generieren. Bei Block B904 beinhaltet die erste Logikvorrichtung irgendeine der Logikvorrichtungen 320, wie etwa, ohne darauf beschränkt zu sein, den Mehrzweckprozessor 322, den ISP 324, die ASIC 326 und/oder das FPGA 328. Bei einigen Ausführungsformen ist die zweite Logikvorrichtung, die eingesetzt wird, um die Tonemapping-Funktion anzuwenden, der Allzweckprozessor 324. Eine Pipeline des ISP 324 wendet die Tonemapping-Funktion an und wandelt die Quellbilddaten in die Zielbilddaten um. Bei mindestens einer Ausführungsform wird eine GPU dazu eingesetzt, die Tonemapping-Funktion zu bestimmen.
  • INFERENZ- UND TRAININGSLOGIK
  • 10A veranschaulicht eine Inferenz- und/oder Trainingslogik 1015, die verwendet wird, um Inferenzierungs- und/oder Trainingsoperationen auszuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1015 sind unten in Verbindung mit 10A und/oder 10B bereitgestellt.
  • Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 ohne Einschränkung Code- und/oder Datenspeicher 1001 beinhalten, 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 bei Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder zum Inferenzieren verwendet wird. Bei mindestens einer Ausführungsform kann die Trainingslogik 1015 einen Code- und/oder Datenspeicher 1001 umfassen oder mit diesem gekoppelt sein, um einen Graphcode oder eine andere Software zu speichern, die das Timing und/oder die Reihenfolge steuert, in der die Informationen über Gewichte und/oder andere Parameter geladen werden, um die Logik zu konfigurieren, einschließlich Ganzzahl- und/oder GleitkommaEinheiten (zusammenfassend als arithmetische Logikeinheiten (ALUs) bezeichnet). Bei mindestens einer Ausführungsform lädt Code, wie etwa Graphcode, Gewichtungs- oder andere Parameterinformationen in Prozessor-ALUs basierend auf einer Architektur eines neuronalen Netzwerks, dem derartiger Code entspricht. Bei mindestens einer Ausführungsform speichert der Code und/oder der Datenspeicher 1001 Gewichtungsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzwerks, das während der Vorwärtspropagierung von Eingabe-/Ausgabedaten und/oder Gewichtungsparametern während des Trainings und/oder Inferenzierens unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen trainiert oder in Verbindung mit einer oder mehrerer Ausführungsformen verwendet wird. Bei mindestens einer Ausführungsform kann jeder Teil des Code- und/oder Datenspeichers 1001 von einem anderen On-Chip- oder Off-Chip-Datenspeicher beinhaltet sein, einschließlich des L1-, L2- oder L3-Caches eines Prozessors oder des Systemspeichers.
  • Bei mindestens einer Ausführungsform kann jeder Teil des Codes und/oder des Datenspeichers 1001 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logikgeräten oder Schaltungen sein. Bei mindestens einer Ausführungsform kann der Code und/oder der Code- und/oder Datenspeicher 1001 ein Cache-Speicher, ein dynamischer zufällig adressierbarer Speicher („DRAM“), ein statischer zufällig adressierbarer Speicher („SRAM“), ein nichtflüchtiger Speicher (z. B. Flash-Speicher) oder ein anderer Speicher sein. Bei mindestens einer Ausführungsform kann eine Entscheidung, ob der Code- und/oder Code- und/oder Datenspeicher 1001 intern oder extern zu einem Prozessor ist oder DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, davon abhängen, ob Speicher auf dem Chip oder außerhalb des Chips verfügbar ist, von den Anforderungen an die Latenzzeit der ausgeführten Trainings- und/oder Inferenzfunktionen, von der Größe der beim Inferenzieren und/oder Trainieren eines neuronalen Netzwerks verwendeten Datenstapel oder von einer Kombination dieser Faktoren.
  • Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 ohne Einschränkung einen Code- und/oder Datenspeicher 1005 umfassen, um Rückwärts- und/oder Ausgabe-Gewichtungs- und/oder Eingabe-/Ausgabedaten zu speichern, die Neuronen oder Schichten eines neuronalen Netzwerks entsprechen, das trainiert und/oder zum Inferenzieren bei Aspekten einer oder mehrerer Ausführungsformen verwendet wird. Bei mindestens einer Ausführungsform speichert der Code- und/oder Datenspeicher 1005 Gewichtungsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzwerks, das während der Rückwärtspropagierung von Eingabe-/Ausgabedaten und/oder Gewichtungsparametern während des Trainings und/oder Inferenzierens unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen trainiert oder in Verbindung mit einer oder mehrerer Ausführungsformen verwendet wird. Bei mindestens einer Ausführungsform kann die Trainingslogik 1015 einen Code- und/oder Datenspeicher 1005 umfassen oder mit diesem gekoppelt sein, um einen Graphcode oder eine andere Software zu speichern, die das Timing und/oder die Reihenfolge steuert, in der die Informationen über Gewichte und/oder andere Parameter geladen werden, um die Logik zu konfigurieren, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten (zusammenfassend als arithmetische Logikeinheiten (ALUs) bezeichnet).
  • Bei mindestens einer Ausführungsform bewirkt Code, wie etwa Graphcode, das Laden von Gewichtungs- oder anderen Parameterinformationen in Prozessor-ALUs basierend auf einer Architektur eines neuronalen Netzwerks, dem derartiger Code entspricht. Bei mindestens einer Ausführungsform kann jeder Teil des Codes und/oder des Datenspeichers 1005 einen anderen On-Chip- oder Off-Chip-Datenspeicher beinhalten, einschließlich des L1-, L2- oder L3-Cache oder des Systemspeichers eines Prozessors. Bei mindestens einer Ausführungsform kann jeder Teil des Codes und/oder des Datenspeichers 1005 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logikgeräten oder Schaltungen sein. Bei mindestens einer Ausführungsform kann der Code- und/oder Datenspeicher 1005 ein Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z. B. Flash-Speicher) oder ein anderer Speicher sein. Bei mindestens einer Ausführungsform kann die Wahl, ob der Code- und/oder Datenspeicher 1005 intern oder extern zu einem Prozessor ist, oder ob er beispielsweise DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, von dem verfügbaren Speicher auf dem Chip oder außerhalb des Chips, von den Anforderungen an die Latenzzeit der ausgeführten Trainings- und/oder Inferenzfunktionen, von der Stapelgröße der beim Inferenzieren und/oder Trainieren eines neuronalen Netzwerks verwendeten Daten oder von einer Kombination dieser Faktoren abhängen.
  • Bei mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 1001 und der Code- und/oder Datenspeicher 1005 getrennte Speicherstrukturen sein. Bei mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 1001 und der Code- und/oder Datenspeicher 1005 eine kombinierte Speicherstruktur sein. Bei mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 1001 und der Code- und/oder Datenspeicher 1005 teilweise kombiniert und teilweise getrennt sein. Bei mindestens einer Ausführungsform kann jeder Teil des Code- und/oder Datenspeichers 1001 und des Code- und/oder Datenspeichers 1005 von einem anderen On-Chip- oder Off-Chip-Datenspeicher beinhaltet sein, einschließlich des L1-, L2- oder L3-Caches eines Prozessors oder des Systemspeichers.
  • Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 ohne Einschränkung eine oder mehrere arithmetische Logikeinheit(en) („ALU(s)“) 1010, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten, umfassen, um logische und/oder mathematische Operationen auszuführen, die mindestens zum Teil auf einem Trainings- und/oder Inferenzcode (z. B, Graphcode), deren Ergebnis in einem Aktivierungsspeicher 1020 gespeicherte Aktivierungen (z. B. Ausgabewerte von Schichten oder Neuronen innerhalb eines neuronalen Netzwerks) erzeugen kann, die Funktionen von in Code- und/oder Datenspeicher 1001 und/oder Code- und/oder Datenspeicher 1005 gespeicherten Eingabe/Ausgabe- und/oder Gewichtungsparameterdaten sind. Bei mindestens einer Ausführungsform werden in einem Aktivierungsspeicher 1020 gespeicherte Aktivierungen gemäß linearer algebraischer und/oder matrixbasierter Mathematik generiert, die von ALU(s) 1010 als Reaktion auf Ausführungsanweisungen oder anderen Code ausgeführt wird, wobei in Code- und/oder Datenspeicher 1005 und/oder Datenspeicher 1001 gespeicherte Gewichtungswerte als Operanden zusammen mit anderen Werten verwendet werden, wie beispielsweise Vorgabewerten, Gradienteninformationen, Impulswerten oder anderen Parametern oder Hyperparametern, von denen beliebige oder alle in Code- und/oder Datenspeicher 1005 oder Code- und/oder Datenspeicher 1001 oder einem anderen Speicher auf oder außerhalb des Chips gespeichert sein können.
  • Bei mindestens einer Ausführungsform sind ALU(s) 1010 in einem oder mehreren Prozessoren oder anderen Hardware-Logikgeräten oder -Schaltungen enthalten, während bei einer anderen Ausführungsform ALU(s) 1010 extern zu einem Prozessor oder einem anderen Hardware-Logikgerät oder einer Schaltung sein können, die sie verwenden (z. B. ein Co-Prozessor). Bei mindestens einer Ausführungsform können die ALUs 1010 in den Ausführungseinheiten eines Prozessors oder anderswie in einer Gruppe von ALUs enthalten sein, auf die die Ausführungseinheiten eines Prozessors entweder innerhalb desselben Prozessors oder verteilt auf verschiedene Prozessoren unterschiedlichen Typs (z. B. Zentraleinheiten, Grafikverarbeitungseinheiten, feste Funktionseinheiten usw.) zugreifen können. Bei mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 1001, der Code- und/oder Datenspeicher 1005 und der Aktivierungsspeicher 1020 einen Prozessor oder eine andere Hardware-Logik-Einrichtung oder einer Schaltung gemeinsam nutzen, während sie bei einer anderen Ausführungsform in verschiedenen Prozessoren oder anderen Hardware-Logik-Einrichtungen oder Schaltungen oder in einer Kombination aus gleichen und unterschiedlichen Prozessoren oder anderen Hardware-Logik-Einrichtungen oder Schaltungen vorhanden sein können. Bei mindestens einer Ausführungsform kann ein beliebiger Teil des Aktivierungsspeichers 1020 in einem anderen On-Chip- oder Off-Chip-Datenspeicher enthalten sein, einschließlich des L1-, L2- oder L3-Cache-Speichers oder Systemspeichers eines Prozessors. Darüber hinaus kann Inferencing- und/oder Trainingscode mit anderem Code gespeichert werden, auf den ein Prozessor oder eine andere Hardwarelogik oder -schaltung zugreifen kann, und unter Verwendung der Abruf-, Decodier-, Planungs-, Ausführungs-, Stilllegungs- und/oder anderen logischen Schaltungen eines Prozessors abgerufen und/oder verarbeitet werden.
  • Bei mindestens einer Ausführungsform kann der Aktivierungsspeicher 1020 ein Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z. B. Flash-Speicher) oder ein anderer Speicher sein. Bei mindestens einer Ausführungsform kann sich der Aktivierungsspeicher 1020 vollständig oder teilweise innerhalb oder außerhalb eines oder mehrerer Prozessoren oder anderer logischer Schaltungen befinden. Bei mindestens einer Ausführungsform kann die Entscheidung, ob der Aktivierungsspeicher 1020 beispielsweise innerhalb oder außerhalb eines Prozessors liegt oder DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, von dem verfügbaren Speicher auf dem Chip oder außerhalb des Chips, den Anforderungen an die Latenzzeit der ausgeführten Trainings- und/oder Inferenzfunktionen, der Stapelgröße der beim Inferenzieren und/oder Trainieren eines neuronalen Netzwerks verwendeten Daten oder einer Kombination dieser Faktoren abhängen.
  • Bei mindestens einer Ausführungsform kann die in 10A veranschaulichte Inferenz- und/oder Trainingslogik 1015 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung („AStC“) verwendet werden, wie z. B. der TensorFlow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem Nervana®-Prozessor (z. B. „Lake Crest“) von Intel Corp. Bei mindestens einer Ausführungsform kann die in 10A veranschaulichte Inferenz- und/oder Trainingslogik 1015 in Verbindung mit Hardware der Zentraleinheit („CPU“), der Grafikverarbeitungseinheit („GPU“) oder anderer Hardware, wie feldprogrammierbaren Gate-Arrays („FPGAs“), verwendet werden.
  • 10B veranschaulicht die Inferenz- und/oder Trainingslogik 1015 gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 ohne Einschränkung eine Hardwarelogik umfassen, in der Rechenressourcen dediziert oder anderswie ausschließlich in Verbindung mit Gewichtungswerten oder anderen Informationen verwendet werden, die einer oder mehreren Schichten von Neuronen innerhalb eines neuronalen Netzwerks entsprechen. Bei mindestens einer Ausführungsform kann die in 10B veranschaulichte Inferenz- und/oder Trainingslogik 1015 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung (ASIC) verwendet werden, wie z. B. der TensorFlow9 Processing Unit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem Nervana®-Prozessor (z. B. „Lake Crest“) von Intel Corp. Bei mindestens einer Ausführungsform kann die Interferenz- und/oder Trainingslogik 1015, die in 10B veranschaulicht ist, in Verbindung mit Hardware einer Zentraleinheit (CPU), Hardware einer Grafikverarbeitungseinheit (GPU) oder anderer Hardware, wie etwa feldprogrammierbaren Gate-Arrays (FPGA) verwendet werden. Bei mindestens einer Ausführungsform beinhaltet die Inferenz- und/oder Trainingslogik 1015 ohne Einschränkung einen Code- und/oder Datenspeicher 1001 und einen Code- und/oder Datenspeicher 1005, die zum Speichern von Code (z. B. Graphcode), Gewichtungswerten und/oder anderen Informationen, einschließlich Vorgabewerten, Gradienteninformationen, Impulswerten und/oder anderen Parameter- oder Hyperparameterinformationen, verwendet werden können. Bei mindestens einer Ausführungsform, die in 10B veranschaulicht ist, ist jeder Code- und/oder Datenspeicher 1001 und jeder Code- und/oder Datenspeicher 1005 mit einer dedizierten Rechenressource assoziiert, wie beispielsweise Rechenhardware 1002 bzw. Rechenhardware 1006. Bei mindestens einer Ausführungsform beinhaltet jede der Berechnungshardware 1002 und der Berechnungshardware 1006 eine oder mehrere ALUs, die mathematische Funktionen, wie lineare algebraische Funktionen, nur auf Informationen ausführen, die im Code- und/oder Datenspeicher 1001 bzw. im Code- und/oder Datenspeicher 1005 gespeichert sind, wobei das Ergebnis im Aktivierungsspeicher 1020 gespeichert wird.
  • Bei mindestens einer Ausführungsform entsprechend jeder der Code- und/oder Datenspeicher 1001 und 1005 und die entsprechende Rechenhardware 1002 bzw. 1006 unterschiedlichen Schichten eines neuronalen Netzwerks, so dass die resultierende Aktivierung von einem „Speicher-/Rechenpaar 1001/1002“ aus Code- und/oder Datenspeicher 1001 und Rechenhardware 1002 als Eingabe für ein nächstes „Speicher-/Rechenpaar 1005/1006“ aus Code- und/oder Datenspeicher 1005 und Rechenhardware 1006 bereitgestellt wird, um eine konzeptionelle Organisation eines neuronalen Netzwerks zu spiegeln. Bei mindestens einer Ausführungsform kann jedes der Speicher-/Rechnerpaare 1001/1002 und 1005/1006 mehr als einer Schicht des neuronalen Netzwerks entsprechen. Bei mindestens einer Ausführungsform können zusätzliche Speicher-/Berechnungspaare (nicht gezeigt) nach oder parallel zu den Speicher-/Berechnungspaaren 1001/1002 und 1005/1006 in der Inferenz- und/oder Trainingslogik 1015 beinhaltet sein.
  • TRAINING UND EINSATZ NEURONALER NETZWERKE
  • 11 veranschaulicht gemäß mindestens einer Ausführungsform das Trainieren und den Einsatz eines tiefen neuronalen Netzwerks bzw. Deep Neural Network. Bei mindestens einer Ausführungsform wird das untrainierte neuronale Netzwerk 1106 unter Verwendung eines Trainingsdatensatzes 1102 trainiert. Bei mindestens einer Ausführungsform ist das Trainings-Framework 1104 ein PyTorch-Framework, während bei anderen Ausführungsformen das Trainings-Framework 1104 ein TensorFlow-, Boost-, Caffe-, Microsoft Cognitive Toolkit/CNTK-, MXNet-, Chainer-, Keras-, Deeplearning4j- oder ein anderes Trainings-Framework ist. Bei mindestens einer Ausführungsform trainiert das Trainings-Framework 1104 ein untrainiertes neuronales Netzwerk 1106 und ermöglicht es, dieses unter Verwendung der hier beschriebenen Verarbeitungsressourcen zu trainieren, um ein trainiertes neuronales Netzwerk 1108 zu generieren. Bei mindestens einer Ausführungsform können die Gewichtungen zufällig oder durch Vorabtraining unter Verwendung eines Deep-Belief-Netzwerks ausgewählt werden. Bei mindestens einer Ausführungsform kann das Training entweder auf überwachte, teilweise überwachte oder nicht überwachte Weise ausgeführt werden.
  • Bei mindestens einer Ausführungsform wird ein untrainiertes neuronales Netzwerk 1106 unter Verwendung von beaufsichtigtem Lernen trainiert, wobei der Trainingsdatensatz 1102 eine Eingabe beinhaltet, die mit einer gewünschten Ausgabe für eine Eingabe gepaart ist, oder wobei der Trainingsdatensatz 1102 eine Eingabe mit einer bekannten Ausgabe beinhaltet und eine Ausgabe des neuronalen Netzwerks 1106 manuell bewertet wird. Bei mindestens einer Ausführungsform wird das untrainierte neuronale Netzwerk 1106 auf überwachte Weise trainiert und verarbeitet Eingaben aus dem Trainingsdatensatz 1102 und vergleicht die resultierenden Ausgaben mit einem Satz von erwarteten oder gewünschten Ausgaben. Bei mindestens einer Ausführungsform werden Fehler dann durch das untrainierte neuronale Netzwerk 1106 rückpropagiert. Bei mindestens einer Ausführungsform stellt das Trainings-Framework 1104 Gewichtungen ein, die das untrainierte neuronale Netzwerk 1106 steuern. Bei mindestens einer Ausführungsform beinhaltet das Trainings-Framework 1104 Hilfsmittel, um zu überwachen, wie gut das untrainierte neuronale Netzwerk 1106 zu einem Modell konvergiert, wie z. B. dem trainierten neuronalen Netzwerk 1108, das geeignet ist, basierend auf Eingabedaten, wie z. B. einem neuen Datensatz 1112, korrekte Antworten zu generieren, wie z. B. im Ergebnis 1114. Bei mindestens einer Ausführungsform trainiert das Trainings-Framework 1104 das untrainierte neuronale Netzwerk 1106 wiederholt, während es die Gewichte anpasst, um eine Ausgabe des untrainierten neuronalen Netzwerks 1106 unter Verwendung einer Verlustfunktion und eines Anpassungsalgorithmus, wie z. B. des stochastischen Gradientenabstiegs, zu verfeinern. Bei mindestens einer Ausführungsform trainiert das Trainings-Framework 1104 das untrainierte neuronale Netzwerk 1106, bis das untrainierte neuronale Netzwerk 1106 eine gewünschte Genauigkeit erreicht. Bei mindestens einer Ausführungsform kann das trainierte neuronale Netzwerk 1108 dann eingesetzt werden, um eine beliebige Anzahl von Operationen zum maschinellen Lernen umzusetzen.
  • Mindestens in einer Ausführungsform wird das untrainierte neuronale Netzwerk 1106 unter Verwendung von unbeaufsichtigtem Lernen trainiert, wobei das untrainierte neuronale Netzwerk 1106 versucht, sich selbst unter Verwendung ungekennzeichneter Daten zu trainieren. Bei mindestens einer Ausführungsform beinhaltet der Trainingsdatensatz 1102 des unbeaufsichtigten Lernens Eingabedaten ohne assoziierte Ausführungsdaten oder „Ground Truth“-Daten. Bei mindestens einer Ausführungsform kann das untrainierte neuronale Netzwerk 1106 Gruppierungen innerhalb des Trainingsdatensatzes 1102 lernen und bestimmen, wie einzelne Eingaben mit dem untrainierten Datensatz 1102 in Beziehung stehen. Bei mindestens einer Ausführungsform kann unüberwachtes Training verwendet werden, um eine selbstorganisierende Karte in einem trainierten neuronalen Netzwerk 1108 zu generieren, was in der Lage ist, Operationen auszuführen, die bei der Reduzierung der Dimensionalität eines neuen Datensatzes 1112 nützlich sind. Bei mindestens einer Ausführungsform kann unüberwachtes Training auch dazu verwendet werden, eine Anomalieerfassung auszuführen, die es ermöglicht, Datenpunkte in einem neuen Datensatz 1112 zu identifizieren, die von normalen Mustern des neuen Datensatzes 1112 abweichen.
  • Bei mindestens einer Ausführungsform kann halbüberwachtes Lernen verwendet werden, was ein Verfahren ist, bei der der Trainingsdatensatz 1102 eine Mischung aus gekennzeichneten und ungekennzeichneten Daten beinhaltet. Bei mindestens einer Ausführungsform kann das Trainings-Framework 1104 verwendet werden, um inkrementelles Lernen auszuführen, beispielsweise durch übertragene Lernverfahren. Bei mindestens einer Ausführungsform ermöglicht es das inkrementelle Lernen einem trainierten neuronalen Netzwerk 1108, sich an einen neuen Datensatz 1112 anzupassen, ohne das Wissen zu vergessen, das dem trainierten neuronalen Netzwerk 1108 während des anfänglichen Trainings vermittelt wurde.
  • RECHENZENTRUM
  • 12 veranschaulicht ein beispielhaftes Rechenzentrum 1200, in dem mindestens eine Ausführungsform verwendet werden kann. Bei mindestens einer Ausführungsform beinhaltet das Rechenzentrum 1200 eine Rechenzentruminfrastrukturschicht 1210, eine Framework-Schicht 1220, eine Softwareschicht 1230 und eine Anwendungsschicht 1240.
  • Bei mindestens einer Ausführungsform, wie in 12 gezeigt, kann die Rechenzentruminfrastrukturschicht 1210 einen Ressourcen-Orchestrator 1212, gruppierte Rechenressourcen 1214 und Knoten-Rechenressourcen („Knoten-C.R.s“) 1216(1)-1216(N) beinhalten, wobei „N“ eine positive Ganzzahl darstellt (die eine andere positive Ganzzahl „N“ sein kann, als die in anderen Figuren verwendete). Bei mindestens einer Ausführungsform können die Knoten-C.R.s 1216(1)-1216(N) eine beliebige Anzahl von Zentraleinheiten („CPUs“) oder anderen Prozessoren (einschließlich Beschleunigern, Field Programmable Gate Arrays (FPGAs), Grafikprozessoren usw.), Speichervorrichtungen 1218(1)-1218(N) (z. B., dynamischer Festwertspeicher), Festkörper- oder Festplattenlaufwerke), Netzwerk-Eingabe-/Ausgabevorrichtungen („NW E/A“), Netzwerk-Switches, virtuelle Maschinen („VMs“), Stromversorgungsmodule und Kühlmodule, usw. beinhalten. Bei mindestens einer Ausführungsform kann es sich bei einem oder mehreren Knoten-C. R.s unter den Knoten-C.R.s 1216(1)-1216(N) um einen Server handeln, der über eine oder mehrere der oben erwähnten Rechenressourcen verfügt.
  • Bei mindestens einer Ausführungsform können die gruppierten Rechenressourcen 1214 getrennte Gruppierungen von Knoten-C.R.s aufweisen, die in einem oder mehreren Racks (nicht gezeigt) untergebracht sind, oder viele Racks, die in Rechenzentren an verschiedenen geografischen Standorten untergebracht sind (ebenfalls nicht gezeigt). Bei mindestens einer Ausführungsform können separate Gruppierungen von Knoten-C.R.s innerhalb der gruppierten Rechenressourcen 1214 gruppierte Rechen-, Netzwerk-, Speicher- oder Storage-Ressourcen beinhalten, die zur Unterstützung einer oder mehrerer Arbeitslasten konfiguriert oder zugeordnet werden können. Bei 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. Bei mindestens einer Ausführungsform können ein oder mehrere Racks auch eine beliebige Anzahl von Stromversorgungsmodulen, Kühlmodulen und Netzwerk-Switches in beliebiger Kombination beinhalten.
  • Bei mindestens einer Ausführungsform kann der Ressourcen-Orchestrator 1212 einen oder mehrere Knoten C.R.s 1216(1)-1216(N) und/oder gruppierte Rechenressourcen 1214 konfigurieren oder anderswie steuern. Bei mindestens einer Ausführungsform kann der Ressourcen-Orchestrator 1212 eine Software-Design-Infrastruktur-Verwaltungseinheit („SDI“-Verwaltungseinheit) für das Rechenzentrum 1200 beinhalten. Bei mindestens einer Ausführungsform kann der Ressourcenorchestrator 1012 Hardware, Software oder eine Kombination davon beinhalten.
  • Bei mindestens einer Ausführungsform, wie in 12 gezeigt, beinhaltet die Framework-Schicht 1220 einen Aufgaben-Scheduler 1222, einen Konfigurationsverwalter 1224, einen Ressourcenverwalter 1226 und ein verteiltes Dateisystem 1228. Bei mindestens einer Ausführungsform kann die Framework-Schicht 1220 einen Rahmen bzw. ein Framework zur Unterstützung der Software 1232 der Softwareschicht 1230 und/oder einer oder mehrerer Anwendung(en) 1242 der Anwendungsschicht 1240 beinhalten. Bei mindestens einer Ausführungsform kann die Software 1232 oder die Anwendung(en) 1242 jeweils webbasierte Dienstsoftware oder Anwendungen aufweisen, wie sie beispielsweise von Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt werden. Bei mindestens einer Ausführungsform kann es sich bei der Framework-Schicht 1220 um eine Art freies und Open-Source-Software-Webanwendungs-Framework, wie Apache Spark™ (im Folgenden „Spark“) handeln, das ein verteiltes Dateisystem 1228 für die Verarbeitung großer Datenmengen (z. B. „Big Data“) einsetzen kann. Bei mindestens einer Ausführungsform kann der Job-Scheduler 1222 einen Spark-Treiber aufweisen, um das Planen von Arbeitslasten zu erleichtern, die von verschiedenen Schichten des Rechenzentrums 1200 unterstützt werden. Bei mindestens einer Ausführungsform kann der Konfigurationsmanager 1224 dazu in der Lage sein, unterschiedliche Schichten, wie die Softwareschicht 1230 und die Framework-Schicht 1220, die Spark und das verteilte Dateisystem 1228 beinhaltet, zur Unterstützung der Verarbeitung großer Datenmengen zu konfigurieren. Bei mindestens einer Ausführungsform kann der Ressourcenmanager 1226 in der Lage sein, geclusterte oder gruppierte Computerressourcen zu verwalten, die zur Unterstützung des verteilten Dateisystems 1228 und des Job Schedulers 1222 abgebildet oder zugeordnet sind. Bei mindestens einer Ausführungsform können geclusterte oder gruppierte Rechenressourcen gruppierte Rechenressourcen 1214 in der Infrastrukturschicht 1210 des Rechenzentrums beinhalten. Bei mindestens einer Ausführungsform kann der Ressourcenmanager 1226 mit dem Ressourcenorchestrator 1212 koordiniert sein, um diese abgebildeten oder zugeordneten Computerressourcen zu verwalten.
  • Bei mindestens einer Ausführungsform kann die in der Softwareschicht 1230 enthaltene Software 1232 Software beinhalten, die von mindestens Teilen der Knoten-CRs 1216(1)-1216(N), der gruppierten Rechenressourcen 1214 und/oder des verteilten Dateisystems 1228 der Framework-Schicht 1220 verwendet wird. Bei mindestens einer Ausführungsform können eine oder mehrere Arten von Software eine Internet-Such-Software, eine E-Mail-Virenscan-Software, eine Datenbank-Software und eine Streaming-Video-Content-Software beinhalten, ohne darauf beschränkt zu sein.
  • Bei mindestens einer Ausführungsform kann (können) die in der Anwendungsschicht 1240 enthaltene(n) Anwendung(en) 1242 eine oder mehrere Arten von Anwendungen aufweisen, die von mindestens Teilen der Knoten C.R.s 1216(1)-1216(N), gruppierten Rechenressourcen 1214 und/oder dem verteilten Dateisystem 1228 der Framework-Schicht 1220 verwendet werden. Bei mindestens einer Ausführungsform können eine oder mehrere Arten von Anwendungen eine beliebige Anzahl von Genomanwendungen, kognitiven Berechnungen und Anwendungen für maschinelles Lernen beinhalten, einschließlich Trainings- oder Inferencing-Software, Framework-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.
  • Bei mindestens einer Ausführungsform kann jeder von Konfigurationsmanager 1224, Ressourcenmanager 1226 und Ressourcen-Orchestrator 1212 eine beliebige Anzahl und Art von selbstmodifizierenden Aktionen umsetzen, die auf einer beliebigen Menge und Art von Daten basieren, die auf jede technisch machbare Weise erfasst werden. Bei mindestens einer Ausführungsform können selbstmodifizierende Aktionen einen Rechenzentrumsbetreiber des Rechenzentrums 1200 davon entlasten, möglicherweise schlechte Konfigurationsentscheidungen zu treffen und möglicherweise nicht ausgelastete und/oder schlecht funktionierende Teilen eines Rechenzentrums zu vermeiden.
  • Bei mindestens einer Ausführungsform kann das Rechenzentrum 1200 Werkzeuge, Dienste, Software oder andere Ressourcen beinhalten, um ein oder mehrere Modelle zum maschinellen Lernen zu trainieren oder Informationen unter Verwendung eines oder mehrerer Modelle zum maschinellen Lernen gemäß einer oder mehrerer hier beschriebener Ausführungsformen vorherzusagen oder abzuleiten. Beispielsweise kann bei mindestens einer Ausführungsform ein Modell zum maschinellen Lernen durch Berechnung von Gewichtungsparametern gemäß einer neuronalen Netzwerkarchitektur unter Verwendung von Software und Rechenressourcen trainiert werden, die oben in Bezug auf das Rechenzentrum 1200 beschrieben wurden. Bei mindestens einer Ausführungsform können trainierte Modelle zum maschinellen Lernen, die einem oder mehreren neuronalen Netzwerken entsprechen, verwendet werden, um Informationen abzuleiten oder vorherzusagen, wobei die oben beschriebenen Ressourcen in Bezug auf das Rechenzentrum 1200 verwendet werden, indem Gewichtungsparameter verwendet werden, die durch eine oder mehrere hier beschriebene Trainingstechniken berechnet werden.
  • Bei mindestens einer Ausführungsform kann das Rechenzentrum CPUs, anwendungsspezifische integrierte Schaltungen (ASICs), GPUs, FPGAs oder andere Hardware verwenden, um Training und/oder Inferencing unter Verwendung der oben beschriebenen Ressourcen auszuführen. Darüber hinaus können eine oder mehrere der oben beschriebenen Software- und/oder Hardwareressourcen als Dienst konfiguriert sein, um es Benutzern zu ermöglichen, Informationen zu trainieren oder Inferencing auszuführen, wie etwa Bilderkennung, Spracherkennung oder andere Dienste der künstlichen Intelligenz.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert sind, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform kann die Interferenz- und/oder Trainingslogik 1015 in dem System der 12 für Inferenz- oder Vorhersage-Vorgänge verwendet werden, die mindestens zum Teil auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden. Bei verschiedenen Ausführungsformen setzt die Inferenz- und/oder Trainingslogik 1015 Zielbilddaten, die von der Offline-Bildsignalverarbeitung 240 generiert werden, wie oben in Verbindung mit 2 beschrieben, ein.
  • AUTONOMES FAHRZEUG
  • 13A veranschaulicht ein Beispiel für ein autonomes Fahrzeug 1300 gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform kann das autonome Fahrzeug 1300 (hier alternativ als „Fahrzeug 1300“ bezeichnet) ohne Einschränkung ein Personenfahrzeug sein, wie z. B. ein Pkw, ein Lkw, ein Bus und/oder eine andere Art von Fahrzeug, das einen oder mehrere Fahrgäste aufnimmt. Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 ein Sattelschlepper sein, der für den Transport von Gütern verwendet wird. Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 ein Flugzeug, ein Roboterfahrzeug oder eine andere Art von Fahrzeug sein.
  • Autonome Fahrzeuge können im Hinblick auf Automatisierungslevels beschrieben werden, die von der National Highway Traffic Safety Administration („NHTSA“), einer Abteilung des US-Verkehrsministeriums, und der Society of Automotive Engineers („SAE“) „Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles“ (z. B. Standard Nr. J3016-201806, veröffentlicht am 15. Juni 2018, Standard Nr. J3016-201609, veröffentlicht am 30. September 2016, sowie frühere und zukünftige Versionen dieses Standards) definiert sind. Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 dazu in der Lage sein, eine Funktionalität gemäß einer oder mehrerer der Stufen 1 bis Stufe 5 des autonomen Fahrens auszuführen. Beispielsweise kann das Fahrzeug 1300 bei mindestens einer Ausführungsform in der Lage sein, je nach Ausführungsform bedingt automatisiert (Stufe 3), hochautomatisiert (Stufe 4) und/oder vollständig automatisiert (Stufe 5) zu fahren.
  • Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 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. Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 ohne Einschränkung ein Antriebssystem 1350 beinhalten, wie z. B. einen Verbrennungsmotor, ein Hybrid-Elektroantrieb, einen reinen Elektromotor und/oder einen anderen Antriebssystemtyp. Bei mindestens einer Ausführungsform kann das Antriebssystem 1350 mit einem Antriebsstrang des Fahrzeugs 1300 verbunden sein, der unter anderem ein Getriebe beinhalten kann, um den Antrieb des Fahrzeugs 1300 zu ermöglichen. Bei mindestens einer Ausführungsform kann das Antriebssystem 1350 in Reaktion auf den Empfang von Signalen von einer Drosselklappe/einem Gaspedal (bzw. mehreren Drosseln/Gaspedalen) 1352 gesteuert werden.
  • Bei mindestens einer Ausführungsform wird ein Lenksystem 1354, das ohne Einschränkung ein Lenkrad beinhalten kann, dazu verwendet, das Fahrzeug 1300 zu lenken (z. B. entlang eines gewünschten Weges oder einer Route), wenn ein Antriebssystem 1350 in Betrieb ist (z. B. wenn das Fahrzeug 1300 in Bewegung ist). Bei mindestens einer Ausführungsform kann das Lenksystem 1354 Signale von einem oder mehreren Lenkaktoren 1356 empfangen. Bei mindestens einer Ausführungsform kann ein Lenkrad für die Funktionalität einer vollständigen Automatisierung (Level 5) optional sein. Bei mindestens einer Ausführungsform kann ein Bremssensorsystem 1346 verwendet werden, um die Fahrzeugbremsen als Reaktion auf den Empfang von Signalen von einem oder mehreren Bremsaktuatoren 1348 und/oder Bremssensoren zu betätigen.
  • Bei mindestens einer Ausführungsform stellen der (die) Controller 1336, die ohne Einschränkung ein oder mehrere System-on-Chips („SoCs“) (in 13A nicht dargestellt) und/oder Grafikverarbeitungseinheiten („GPUs“) beinhalten können, Signale (z. B. repräsentativ für Befehle) an eine oder mehrere Komponenten und/oder Systeme des Fahrzeugs 1300 bereit. Bei mindestens einer Ausführungsform kann (können) der (die) Controller 1336 beispielsweise Signale zum Betätigen der Fahrzeugbremsen über den (die) Bremsaktuator(en) 1348, zum Betätigen des Lenksystems 1354 über den/die Lenkaktuator(en) 1356 und zum Betätigen des Antriebssystems 1350 über eine Drosselklappe / (ein) Gaspedal(e) 1352 senden. Bei mindestens einer Ausführungsform kann (können) der (die) Controller 1336 eine oder mehrere fahrzeuginterne (z. B. integrierte) Rechenvorrichtungen beinhalten, die Sensorsignale verarbeiten und Betriebsbefehle (z. B. Signale, die Befehle darstellen) ausgeben, um autonomes Fahren zu ermöglichen und/oder einen menschlichen Fahrer beim Führen des Fahrzeugs 1300 zu unterstützen. Bei mindestens einer Ausführungsform kann (können) der (die) Controller 1336 einen ersten Controller für autonome Fahrfunktionen, einen zweiten Controller für funktionale Sicherheitsfunktionen, einen dritten Controller für Funktionen der künstlichen Intelligenz (z. B. Computer Vision), einen vierten Controller für Infotainment-Funktionen, einen fünften Controller für Redundanz in Notfällen und/oder andere Controller beinhalten. Bei mindestens einer Ausführungsform kann ein einzelner Controller zwei oder mehr der vorstehenden Funktionalitäten handhaben, können zwei oder mehr Controller eine einzelne Funktionalität handhaben und/oder eine beliebige Kombination davon.
  • Bei mindestens einer Ausführungsform stellen der (die) Controller 1336 Signale zum Steuern einer/eines oder mehrerer Komponenten und/oder Systeme des Fahrzeugs 1300 als Reaktion auf Sensordaten bereit, die von einem oder mehreren Sensoren empfangen werden (z. B. Sensoreingaben). Bei mindestens einer Ausführungsform können Sensordaten beispielsweise und ohne Einschränkung von (einem) Global-Navigation-Satellite-Systems-Sensoren („GNSS“-Sensor(en)) 1358 (z. B., Global Positioning System-Sensor(en)), RADAR-Sensor(en) 1360, Ultraschallsensor(en) 1362, LIDAR-Sensor(en) 1364, Trägheitsmesseinheit-Sensor(en) („IMU“) 1366 (z. B. Beschleunigungsmesser, Gyroskop(e), einen Magnetkompass oder Magnetkompasse, Magnetometer usw.), Mikrofon(en) 1396, Stereokamera(s) 1368, Weitwinkelkamera(s) 1370 (z. B., Fischaugenkameras), Infrarotkamera(s) 1372, Surround-Kamera(s) 1374 (z. B. 360-Grad-Kameras), Fernkameras (nicht in 13A gezeigt), Mittelbereichskamera(s) (nicht in 13A gezeigt), Geschwindigkeitssensor(en) 1344 (z. B. zur Messung der Geschwindigkeit des Fahrzeugs 1300), Vibrationssensor(en) 1342, Lenksensor(en) 1340, Bremssensor(en) (z. B. als Teil des Bremssensorsystems 1346) und/oder anderen Sensortypen empfangen werden.
  • Bei mindestens einer Ausführungsform kann ein oder können mehrere der Controller 1336 Eingaben (z. B. in Form von Eingabedaten) von einem Kombiinstrument 1332 des Fahrzeugs 1300 empfangen und Ausgaben (z. B. in Form von Ausgabedaten, Anzeigedaten usw.) über eine Mensch-Maschine-Schnittstelle-Anzeige („HMI“-Anzeige) 1334, einen akustischen Melder, einen Lautsprecher und/oder über andere Komponenten des Fahrzeugs 1300 bereitstellen. Bei mindestens einer Ausführungsform können die Ausgaben Informationen wie Fahrzeuggeschwindigkeit, Drehzahl, Zeit, Kartendaten (z. B. eine hochauflösende Karte (in 13A nicht dargestellt)), Positionsdaten (z. B. die Position des Fahrzeugs 1300, wie auf einer Karte), Richtung, Position anderer Fahrzeuge (z. B. ein Belegungsraster), Informationen über Objekte und den Status von Objekten, wie es von dem/den Controller(n) 1336 wahrgenommen wird, usw. aufweisen. Bei mindestens einer Ausführungsform kann die HMI-Anzeige 1334 beispielsweise Informationen über das Vorhandensein eines oder mehrerer Objekte (z. B. ein Straßenschild, ein Warnschild, eine sich ändernde Ampel usw.) und/oder Informationen über Fahrmanöver anzeigen, die das Fahrzeug ausgeführt hat, gerade ausführt oder ausführen wird (z. B. Spurwechsel jetzt, Ausfahrt 34B in zwei Meilen usw.).
  • Bei mindestens einer Ausführungsform beinhaltet das Fahrzeug 1300 weiter eine Netzschnittstelle 1324, die drahtlose Antenne(n) 1326 und/oder Modem(s) zum Kommunizieren über ein oder mehrere Netzwerke verwenden kann. Beispielsweise kann bei mindestens einer Ausführungsform die Netzwerkschnittstelle 1324 in der Lage sein, über Long-Term Evolution („LTE“), Wideband Code Division Multiple Access („WCDMA“), Universal Mobile Telecommunications System („UMTS“), Global System for Mobile communication („GSM“), IMT-CDMA Multi-Carrier-Netzwerke („CDMA2000“-Netzwerke) etc. zu kommunizieren. Bei mindestens einer Ausführungsform kann (können) die Funkantenne(n) 1326 auch die Kommunikation zwischen Objekten in der Umgebung (z. B. Fahrzeuge, mobile Einrichtungen usw.) ermöglichen, wobei lokale Netzwerke wie Bluetooth, Bluetooth Low Energy („LE“), Z-Wave, ZigBee usw. und/oder Weitverkehrsnetzwerke mit geringer Leistung („LPWANs“) wie LoRaWAN, SigFox usw. Protokolle verwendet werden.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert sind, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in dem System der 13A für Inferencing- oder Vorhersageoperationen verwendet werden, die mindestens zum Teil auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden. Bei verschiedenen Ausführungsformen verwendet die Inferenz- und/oder Trainingslogik 1015 die durch die Offline-Bildsignalverarbeitung 240 generierten Zielbilddaten, wie oben in Verbindung mit 2 beschrieben. Zusätzlich wird die Datensammlung 202, die oben in Verbindung mit 2 beschrieben ist, bei verschiedenen Ausführungsformen von dem Fahrzeug 1300 ausgeführt werden.
  • 13B veranschaulicht ein Beispiel für Kamerapositionen und Sichtfelder für das autonome Fahrzeug 1300 der 13A, gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform stellen die Kameras und die jeweiligen Sichtfelder eine beispielhafte Ausführungsform dar und sind nicht als einschränkend zu betrachten. Beispielsweise können bei mindestens einer Ausführungsform zusätzliche und/oder alternative Kameras vorhanden sein und/oder die Kameras können an anderen Stellen des Fahrzeugs 1300 angeordnet sein.
  • Bei mindestens einer Ausführungsform können Kameratypen für Kameras Digitalkameras beinhalten, ohne darauf beschränkt zu sein, die zur Verwendung mit Komponenten und/oder Systemen des Fahrzeugs 1300 angepasst sind. Bei mindestens einer Ausführungsform kann/können die Kamera(s) auf dem Automotive Safety Integrity Level („ASIL“) B und/oder auf einem anderen ASIL arbeiten. Bei mindestens einer Ausführungsform können die Kameratypen je nach Ausführungsform eine beliebige Bilderfassungsrate, wie 60 Bilder pro Sekunde (fps), 1220 fps, 240 fps, usw., erreichen. Bei mindestens einer Ausführungsform können die Kameras Rolling Shutter, Global Shutter, einen anderen Verschlusstyp oder eine Kombination davon verwenden. Bei mindestens einer Ausführungsform kann die Farbfilteranordnung eine Rot-Klar-Klar-Klar-Farbfilteranordnung („RCCC“), eine Rot-Klar-Klar-Blau-Farbfilteranordnung („RCCB“), eine Rot-Blau-Grün-Klar-Farbfilteranordnung („RBGC“), eine Foveon X3-Farbfilteranordnung, eine Bayer-Sensor-Farbfilteranordnung („RGGB“), eine Monochromsensor-Farbfilteranordnung und/oder eine andere Art von Farbfilteranordnung beinhalten. Bei mindestens einer Ausführungsform können zum Erhöhen der Lichtempfindlichkeit Klar-Pixel-Kameras, wie z. B. Kameras mit einer RCCC-, einer RCCB- und/oder einer RBGC-Farbfilteranordnung, verwendet werden.
  • Bei mindestens einer Ausführungsform kann eine oder können mehrere Kameras verwendet werden, um fortschrittliche Fahrerassistenzsysteme („ADAS“) auszuführen (z. B. als Teil eines redundanten oder ausfallsicheren Designs). Beispielsweise kann bei mindestens einer Ausführungsform eine Multifunktions-Monokamera installiert sein, die Funktionen wie Spurhalteassistent, Verkehrszeichenassistent und intelligente Scheinwerfersteuerung bietet. Bei mindestens einer Ausführungsform können eine oder mehrere der Kamera(s) (z. B. alle Kameras) simultan Bilddaten (z. B. Video) aufnehmen und bereitstellen.
  • Bei mindestens einer Ausführungsform kann eine oder können mehrere Kameras in einer Montageanordnung, wie z. B. einer kundenspezifisch entworfenen (dreidimensionalen („3D“) gedruckten) Anordnung, montiert sein, um Flares und Reflexionen aus dem Fahrzeug 1300 (z. B. Reflexionen vom Armaturenbrett, die in den Windschutzscheibenspiegeln reflektiert werden) auszuschalten, die die Fähigkeit der Kamera zur Bilddatenerfassung beeinträchtigen können. Bei mindestens einer Ausführungsform können die Anordnungen für die Außenspiegel individuell in 3D gedruckt werden, so dass eine Kameramontageplatte einer Form eines Außenspiegels entspricht. Bei mindestens einer Ausführungsform können die Kamera(s) in Seitenspiegel integriert sein. Bei mindestens einer Ausführungsform können bei Seitensichtkameras die Kamera(s) auch innerhalb von vier Säulen an jeder Ecke einer Kabine integriert sein.
  • Bei mindestens einer Ausführungsform können Kameras mit einem Sichtfeld, das Teile der Umgebung vor dem Fahrzeug 1300 aufweist (z. B. nach vorn gerichtete Kameras), für die Rundumsicht verwendet werden, um bei der Identifikation von nach vorn gerichteten Wegen und Hindernissen zu helfen, sowie mit Hilfe eines oder mehrerer Controller 1336 und/oder Steuer-SoCs Informationen bereitzustellen, die für die Erstellung eines Belegungsrasters und/oder die Bestimmung bevorzugter Fahrzeugwege entscheidend sind. Bei mindestens einer Ausführungsform können nach vorn gerichtete Kameras verwendet werden, um viele der gleichen ADAS-Funktionen wie LIDAR auszuführen, einschließlich, ohne Einschränkung, Notbremsung, Fußgängererfassung und Kollisionsvermeidung. Bei 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.
  • Bei mindestens einer Ausführungsform kann eine Vielfalt von Kameras in einer nach vorn gerichteten Konfiguration verwendet werden, einschließlich z. B. einer monokularen Kameraplattform, die einen CMOS-Farbbildwandler („Complementary Metal Oxide Semiconductor“) aufweist. Bei mindestens einer Ausführungsform kann die Weitwinkelkamera 1370 verwendet werden, um Objekte wahrzunehmen, die von einer Peripherie her ins Blickfeld kommen (z. B. Fußgänger, kreuzender Verkehr oder Fahrräder). Obwohl in 13B nur eine Weitwinkelkamera 1370 veranschaulicht ist, kann bei anderen Ausführungen eine beliebige Anzahl (einschließlich Null) von Weitwinkelkameras am Fahrzeug 1300 vorhanden sein. Bei mindestens einer Ausführungsform kann eine beliebige Anzahl von Langstreckenkamera(s) 1398 (z. B. ein Weitsichtstereokamerapaar) zur tiefenbasierten Objekterfassung verwendet werden, insbesondere für Objekte, für die ein neuronales Netzwerk noch nicht trainiert worden ist. Bei mindestens einer Ausführungsform können die Langstreckenkamera(s) 1398 auch zur Objekterfassung und -klassifizierung sowie zur grundlegenden Objektverfolgung verwendet werden.
  • Bei mindestens einer Ausführungsform kann eine beliebige Anzahl von Stereokamera(s) 1368 auch in einer nach vorn gerichteten Konfiguration vorhanden sein. Bei mindestens einer Ausführungsform kann eine oder können mehrere der Stereokamera(s) 1368 eine integrierte Steuereinheit beinhalten, die eine skalierbare Verarbeitungseinheit umfasst, die eine programmierbare Logik („FPGA“) und einen Multi-Core-Mikroprozessor mit einer integrierten Controller Area Network („CAN“)- oder Ethernet-Schnittstelle auf einem einzigen Chip bereitstellen kann. Bei mindestens einer Ausführungsform kann eine derartige Einheit verwendet werden, um eine 3D-Karte der Umgebung des Fahrzeugs 1300 zu erstellen, die eine Abstandsschätzung für alle Punkte im Bild aufweist. Bei mindestens einer Ausführungsform kann eine oder können mehrere der Stereokamera(s) 1368 ohne Einschränkung kompakte(n) Stereosicht-Sensor(en) aufweisen, die ohne Einschränkung zwei Kameralinsen (je eine auf der linken und rechten Seite) und einen Bildverarbeitungschip enthalten können, der den Abstand zwischen dem Fahrzeug 1300 und dem Zielobjekt messen und die generierten Informationen (z. B. Metadaten) verwenden kann, um autonome Notbrems- und Spurhaltewarnfunktionen zu aktivieren. Bei mindestens einer Ausführungsform können auch andere Typen von Stereokameras 1368 zusätzlich oder alternativ zu den hier beschriebenen verwendet werden.
  • Bei mindestens einer Ausführungsform können Kameras mit einem Sichtfeld, das Teile der Umgebung seitlich des Fahrzeugs 1300 aufweist (z. B. Seitenkameras), für die Umgebungsansicht verwendet werden und Informationen bereitstellen, die zur Erstellung und Aktualisierung eines Belegungsgitters sowie zur Erzeugung von Seitenaufprallwarnungen verwendet werden. Bei mindestens einer Ausführungsform kann (können) die Surround-Kamera(s) 1374 (z. B. vier Surround-Kameras, wie in 13B veranschaulicht) am Fahrzeug 1300 positioniert sein. Bei mindestens einer Ausführungsform kann (können) die Surround-Kamera(s) 1374 ohne Einschränkung eine beliebige Anzahl und Kombination von Weitwinkelkamera(s), Fischaugenkamera(s), 360-Grad-Kamera(s) und/oder ähnliche Kameras aufweisen. Zum Beispiel können bei mindestens einer Ausführungsform vier Fischaugenkameras an der Vorderseite, der Rückseite und den Seiten des Fahrzeugs 1300 positioniert sein. Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 drei Surround-Kamera(s) 1374 (z. B. links, rechts und hinten) verwenden und eine oder mehrere andere Kamera(s) (z. B. eine nach vorn gerichtete Kamera) als vierte Surround-View-Kamera nutzen.
  • Bei mindestens einer Ausführungsform können Kameras mit einem Sichtfeld, das Teile einer Umgebung hinter dem Fahrzeug 1300 aufweist (z. B. Rückfahrkameras) beinhaltet, für die Einparkhilfe, die Umgebungsansicht, die Heckkollisionswarnungen und die Erstellung und Aktualisierung des Belegungsgitters verwendet werden. Bei mindestens einer Ausführungsform kann eine Vielfalt von Kameras verwendet werden, einschließlich, ohne darauf beschränkt zu sein, Kameras, die auch als nach vorn gerichtete Kamera(s) geeignet sind (z. B. Weitbereichskameras 1398 und/oder Mittelbereichskamera(s) 1376, Stereokamera(s) 1368), Infrarotkamera(s) 1372, usw.), wie es hier beschrieben ist.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert sind, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in dem System der 13B für Inferencing- oder Vorhersageoperationen verwendet werden, die mindestens zum Teil auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden. Bei verschiedenen Ausführungsformen verwendet die Inferenz- und/oder Trainingslogik 1015 die durch die Offline-Bildsignalverarbeitung 240 generierten Zielbilddaten, wie oben in Verbindung mit 2 beschrieben. Zusätzlich wird die Datensammlung 202, die oben in Verbindung mit 2 beschrieben ist, bei verschiedenen Ausführungsformen von dem Fahrzeug 1300 ausgeführt werden.
  • 13C ist ein Blockdiagramm, das eine beispielhafte Systemarchitektur für das autonome Fahrzeug 1300 der 13A gemäß mindestens einer Ausführungsform veranschaulicht. Bei mindestens einer Ausführungsform ist jede Komponente, jedes Merkmal und jedes System des Fahrzeugs 1300 in 13C als über einen Bus 1302 verbunden veranschaulicht. Bei mindestens einer Ausführungsform kann der Bus 1302 ohne Einschränkung eine CAN-Datenschnittstelle aufweisen (hier alternativ als „CAN-Bus“ bezeichnet). Bei mindestens einer Ausführungsform kann ein CAN ein Netzwerk innerhalb des Fahrzeugs 1300 sein, das zur Unterstützung der Steuerung verschiedener Merkmale und Funktionen des Fahrzeugs 1300 verwendet wird, wie z. B. Betätigung der Bremsen, Beschleunigung, Bremsen, Lenkung, Scheibenwischer usw. Bei mindestens einer Ausführungsform kann der Bus 1302 derart konfiguriert sein, dass er Dutzende oder sogar Hunderte von Knoten aufweist, von denen jeder seine eigene eindeutige Kennung hat (z. B. eine CAN-ID). Bei mindestens einer Ausführungsform kann der Bus 1302 ausgelesen werden, um den Lenkradwinkel, die Fahrgeschwindigkeit, die Motordrehzahl pro Minute („RPMs“), die Tastenpositionen und/oder andere Fahrzeugstatusanzeigen zu ermitteln. Bei mindestens einer Ausführungsform kann der Bus 1302 ein CAN-Bus sein, der ASIL B-konform ist.
  • Bei mindestens einer Ausführungsform können zusätzlich zu oder alternativ zu CAN auch FlexRay- und/oder Ethernet-Protokolle verwendet werden. Bei mindestens einer Ausführungsform kann eine beliebige Anzahl von Bussen zur Bildung von Bus 1302 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 mit anderen Protokollen aufweisen können. Bei mindestens einer Ausführungsform können zwei oder mehr Busse verwendet werden, um unterschiedliche Funktionen auszuführen, und/oder zur Redundanz verwendet werden. Zum Beispiel kann ein erster Bus für die Funktionalität der Kollisionsvermeidung verwendet werden und ein zweiter Bus für die Betätigungssteuerung verwendet werden. Bei mindestens einer Ausführungsform kann jeder Bus von Bus 1302 mit beliebigen Komponenten des Fahrzeugs 1300 kommunizieren, und zwei oder mehr Busse von Bus 1302 können mit entsprechenden Komponenten kommunizieren. Bei mindestens einer Ausführungsform kann jede beliebige Anzahl von System(en) auf (einem) Chip(s) („SoC(s)“) 1304 (wie z. B. SoC 1304(A) und SoC 1304(B)), jeder der Controller 1336 und/oder jeder Computer in dem Fahrzeug Zugriff auf dieselben Eingabedaten (z. B. Eingaben von Sensoren des Fahrzeugs 1300) aufweisen und mit einem gemeinsamen Bus, wie dem CAN-Bus, verbunden sein.
  • Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 einen oder mehrere Controller 1336 beinhalten, wie es hierin in Bezug auf 13A beschrieben ist. Bei mindestens einer Ausführungsform können der (die) Controller 1336 für eine Vielfalt an Funktionen verwendet werden. Bei mindestens einer Ausführungsform kann (können) der (die) Controller 1336 mit verschiedenen anderen Komponenten und Systemen des Fahrzeugs 1300 gekoppelt sein und zur Steuerung des Fahrzeugs 1300, zur künstlichen Intelligenz des Fahrzeugs 1300, zum Infotainment für das Fahrzeug 1300 und/oder anderen Funktionen verwendet werden.
  • Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 eine beliebige Anzahl von SoCs 1304 beinhalten. Bei mindestens einer Ausführungsform kann jedes der SoCs 1304, ohne Einschränkung, zentrale Verarbeitungseinheiten („CPU(s)“) 1306, Grafikverarbeitungseinheiten („GPU(s)“) 1308, Prozessor(en) 1310, Cache(s) 1312, Beschleuniger 1314, Datenspeicher 1316 und/oder andere nicht veranschaulichte Komponenten und Merkmale beinhalten. Bei mindestens einer Ausführungsform können SoC(s) 1304 zur Steuerung des Fahrzeugs 1300 in einer Vielfalt von Plattformen und Systemen verwendet werden. Bei mindestens einer Ausführungsform kann (können) SoC(s) 1304 beispielsweise in einem System (z. B. dem System des Fahrzeugs 1300) mit einer High-Definition-Karte („HD“-Karte) 1322 kombiniert sein, die über eine Netzwerkschnittstelle 1324 von einem oder mehreren Servern (in 13C nicht dargestellt) Kartenauffrischungen und/oder -aktualisierungen erhalten kann.
  • Bei mindestens einer Ausführungsform können die CPU(s) 1306 einen CPU-Cluster oder CPU-Komplex (hierin alternativ als „CCPLEX“ bezeichnet) beinhalten. Bei mindestens einer Ausführungsform kann (können) die CPU(s) 1306 mehrere Kerne und/oder Level Two („L2“) Caches beinhalten. Zum Beispiel können bei mindestens einer Ausführungsform die CPU(s) 1306 acht Kerne in einer kohärenten Mehrprozessorkonfiguration beinhalten. Bei mindestens einer Ausführungsform kann (können) die CPU(s) 1306 vier Dual-Core-Cluster beinhalten, wobei jeder Cluster über einen dedizierten L2-Cache verfügt (z. B. einen 2 Megabyte (MB) L2-Cache). Bei mindestens einer Ausführungsform kann (können) die CPU(s) 1306 (z. B. CCPLEX) derart konfiguriert sein, dass sie die gleichzeitigen Cluster-Vorgänge unterstützen, so dass jede Kombination von Clustern der CPU(s) 1306 zu jedem Zeitpunkt aktiv sein kann.
  • Bei mindestens einer Ausführungsform kann eine oder können mehrere der CPU(s) 1306 Energieverwaltungsfunktionen umsetzen, die ohne Einschränkung eines oder mehrere der folgenden Merkmale aufweisen: einzelne Hardwareblöcke können im Leerlauf automatisch getaktet sein, um dynamische Energie zu sparen; jeder Kerntakt kann getaktet sein, wenn der Kern aufgrund der Ausführung von Wait for Interrupt („WFI“)/Wait for Event-Befehlen („WFE“-Befehlen) nicht aktiv Anweisungen ausführt; jeder Kern kann unabhängig stromgesteuert sein; jeder Kerncluster kann unabhängig taktgesteuert sein, wenn alle Kerne taktgesteuert oder stromgesteuert sind; und/oder jeder Kerncluster kann unabhängig stromgesteuert sein, wenn alle Kerne stromgesteuert sind. Bei mindestens einer Ausführungsform kann/können die CPU(s) 1306 darüber hinaus einen erweiterten Algorithmus für die Verwaltung von Energiezuständen umsetzen, bei dem zulässige Energiezustände und erwartete Aufwachzeiten spezifiziert werden und die Hardware/der Mikrocode den besten Energiezustand bestimmt, der für Kern, Cluster und CCPLEX einzunehmen ist. Bei mindestens einer Ausführungsform können die Verarbeitungskerne vereinfachte Leistungsstatus-Eingabesequenzen in der Software unterstützen, wobei die Arbeit in den Mikrocode ausgelagert wird.
  • Bei mindestens einer Ausführungsform kann (können) die GPU(s) 1308 eine integrierte GPU aufweisen (hier alternativ als „iGPU“ bezeichnet). Bei mindestens einer Ausführungsform kann (können) die GPU(s) 1308 programmierbar sein und für parallele Arbeitslasten effizient sein. Bei mindestens einer Ausführungsform kann (können) die GPU(s) 1308 einen erweiterten Tensor-Anweisungssatz verwenden. Bei mindestens einer Ausführungsform können die GPU(s) 1308 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). Bei mindestens einer Ausführungsform kann (können) die GPU(s) 1308 mindestens acht Streaming-Mikroprozessoren aufweisen. Bei mindestens einer Ausführungsform kann (können) die GPU(s) 1308 eine oder mehrere Programmierschnittstellen (API(s)) für Berechnungen verwenden. Bei mindestens einer Ausführungsform kann (können) die GPU(s) 1308 eine oder mehrere parallele Rechenplattformen und/oder Programmiermodelle (z. B. das CUDA-Modell von NVIDIA) verwenden.
  • Bei mindestens einer Ausführungsform können eine oder mehrere der GPU(s) 1308 für die beste Rechenleistung in Automobil- und eingebetteten Anwendungsfällen leistungsoptimiert sein. Bei einer Ausführungsform kann (können) die GPU(s) 1308 beispielsweise mit einer Fin-Feldeffekttransistor-Schaltungsanordnung („FinFETs“-Schaltungsanordnung) hergestellt sein. Bei mindestens einer Ausführungsform kann jeder Streaming-Mikroprozessor eine Anzahl von Verarbeitungskernen mit gemischter Genauigkeit beinhalten, die in mehrere Blöcke partitioniert sind. Beispielsweise können 64 PF32-Kerne und 32 PF64-Kerne in vier Verarbeitungsblöcke unterteilt sein. Bei mindestens einer Ausführungsform können jedem Verarbeitungsblock 16 FP32-Kerne, 8 FP64-Kerne, 16 INT32-Kerne, zwei NVIDIA Tensorkernen mit gemischter Genauigkeit für Deep-Learning-Matrixarithmetik, ein Level-Null-Anweisungscache („L0“), ein Warp-Scheduler, eine Dispatch-Einheit und/oder eine 64-KB-Registerdatei zugeordnet sein. Bei mindestens einer Ausführungsform können Streaming-Mikroprozessoren unabhängige parallele Ganzzahl- und Gleitkomma-Datenpfade beinhalten, um eine effiziente Ausführung von Arbeitslasten mit einer Mischung aus Berechnungen und Adressierungsberechnungen zu ermöglichen. Bei mindestens einer Ausführungsform können Streaming-Mikroprozessoren eine unabhängige Thread-Planungsfunktion beinhalten, um eine feinkörnigere Synchronisierung und Zusammenarbeit zwischen parallelen Threads zu ermöglichen. Bei mindestens einer Ausführungsform können Streaming-Mikroprozessoren einen kombinierten L1-Datencache und eine gemeinsame Speichereinheit beinhalten, um die Leistung zu verbessern und gleichzeitig die Programmierung zu vereinfachen.
  • Bei mindestens einer Ausführungsform können eine oder mehrere der GPU(s) 1308 einen Speicher mit hoher Bandbreite (High Bandwidth Memory - „HBM“) und/oder ein 16-GB-HBM2-Speicherteilsystem beinhalten, um bei einigen Beispielen eine Spitzenspeicherbandbreite von etwa 900 GB/Sekunde bereitzustellen. Bei mindestens einer Ausführungsform kann zusätzlich oder alternativ zum HBM-Speicher ein synchroner Grafik-Direktzugriffsspeicher („SGRAM“) verwendet werden, wie z. B. ein synchroner Grafik-Doppeldatenraten-Direktzugriffsspeicher vom Typ fünf („GDDR5“).
  • Bei mindestens einer Ausführungsform kann (können) die GPU(s) 1308 eine Unified-Memory-Technologie beinhalten. Bei mindestens einer Ausführungsform kann die Unterstützung von Adressübersetzungsdiensten („ATS“) verwendet werden, damit die GPU(s) 1308 direkt auf Seitentabellen der CPU(s) 1306 zugreifen können. Bei mindestens einer Ausführungsform kann eine Adressübersetzungsanforderung an die CPU(s) 1306 übermittelt werden, wenn die Speicherverwaltungseinheit („MMU“) der GPU(s) 1308 einen Fehler feststellt. Als Reaktion darauf können 2 CPUs der CPU(s) 1306 in ihren Seitentabellen nach einer virtuell-physikalischen Zuordnung der Adresse suchen und bei mindestens einer Ausführungsform die Übersetzung zurück an die GPU(s) 1308 übertragen. Bei mindestens einer Ausführungsform kann die Unified-Memory-Technologie einen einzigen, einheitlichen virtuellen Adressraum für den Speicher sowohl der CPU(s) 1306 als auch der GPU(s) 1308 ermöglichen, wodurch die Programmierung der GPU(s) 1308 und der Anschluss von Anwendungen an die GPU(s) 1308 vereinfacht wird.
  • Bei mindestens einer Ausführungsform kann (können) die GPU(s) 1308 eine beliebige Anzahl von Zugriffszählern aufweisen, die die Häufigkeit des Zugriffs der GPU(s) 1308 auf den Speicher anderer Prozessoren verfolgen können. Bei mindestens einer Ausführungsform kann der/können die Zugriffszähler dazu beitragen, sicherzustellen, dass Speicherseiten in physischen Speicher eines Prozessors verschoben werden, der am häufigsten auf Seiten zugreift, wodurch die Effizienz für Speicherbereiche, die von mehreren Prozessoren gemeinsam genutzt werden, verbessert wird.
  • Bei mindestens einer Ausführungsform können eines oder mehrere der SoC(s) 1304 eine beliebige Anzahl von Cache(s) 1312 beinhalten, einschließlich der hierin beschriebenen. Bei mindestens einer Ausführungsform kann (können) der/die Cache(s) 1312 beispielsweise einen Level-drei-Cache („L3“) aufweisen, der sowohl der/den CPU(s) 1306 als auch der/den GPU(s) 1308 zur Verfügung steht (z. B. der mit der/den CPU(s) 1306 und der/den GPU(s) 1308 verbunden ist). Bei mindestens einer Ausführungsform kann (können) der (die) Cache(s) 1312 einen Write-Back-Cache aufweisen, der die Zustände der Zeilen verfolgen kann, z. B. durch Verwenden eines Cache-Kohärenzprotokolls (z. B. MEI, MESI, MSI usw.). Bei mindestens einer Ausführungsform kann ein L3-Cache in Abhängigkeit von der Ausführungsform 4 MB Speicher oder mehr beinhalten, obwohl auch kleinere Cache-Größen verwendet werden können.
  • Bei mindestens einer Ausführungsform kann einer oder können mehrere der SoC(s) 1304 einen oder mehrere Beschleuniger 1314 beinhalten (z. B. HardwareBeschleuniger, Software-Beschleuniger oder eine Kombination davon). Bei mindestens einer Ausführungsform kann (können) der (die) SoC(s) 1304 einen Hardwarebeschleunigungscluster aufweisen, der optimierte Hardwarebeschleuniger und/oder einen großen On-Chip-Speicher beinhalten kann. Bei mindestens einer Ausführungsform kann großer chipinterner Speicher (z. B. 4 MB SRAM) einen Hardware-Beschleunigungscluster zum Beschleunigen neuronaler Netzwerke und anderer Berechnungen ermöglichen. Bei mindestens einer Ausführungsform kann das Hardware-Beschleunigungscluster zum Ergänzen der GPU(s) 1308 und zum Entlasten einiger Tasks der GPU(s) 1308 verwendet werden (z. B. um mehr Zyklen der GPU(s) 1308 für die Ausführung anderer Tasks freizugeben). Bei mindestens einer Ausführungsform kann (können) der/die Beschleuniger 1314 für gezielte Arbeitslasten verwendet werden (z. B. Wahrnehmung, faltende neuronale Netzwerke („CNNs“), rückgekoppelte neuronale Netzwerke („RNNs“) usw.), die stabil genug sind, um für eine Beschleunigung geeignet zu sein. Bei mindestens einer Ausführungsform kann ein CNN ein regionenbasiertes oder regionales faltendes neuronales Netzwerk („RCNNs“) und ein schnelles RCNN (z. B. wie es für die Objekterfassung verwendet wird) oder eine andere Art von CNN aufweisen.
  • Bei mindestens einer Ausführungsform kann (können) der (die) Beschleuniger 1314 (z. B. Hardware-Beschleunigungscluster) einen oder mehrere Deep-Learning-Beschleuniger („DLA“) aufweisen. DLA(s) können bei mindestens einer Ausführungsform ohne Einschränkung eine oder mehrere Tensor-Verarbeitungseinheiten (Tensor Processing Units - „TPUs“) beinhalten, die derart konfiguriert sein können, dass sie zusätzliche zehn Billionen Operationen pro Sekunde für Deep-Learning-Anwendungen und Inferenzieren bereitstellen. Bei mindestens einer Ausführungsform können die TPUs Beschleuniger sein, die zum Ausführen von Bildverarbeitungsfunktionen (z. B. für CNNs, RCNNs usw.) konfiguriert und optimiert sind. Bei mindestens einer Ausführungsform können die DLA(s) ferner für einen spezifischen Satz von Typen von neuronalen Netzwerken und Gleitkommaoperationen sowie zum Inferenzieren optimiert sein. Bei 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. Bei mindestens einer Ausführungsform kann (können) die TPU(s) mehrere Funktionen ausführen, einschließlich einer Einzelinstanz-Faltungsfunktion, die z. B. INT8-, INT16- und FP16-Datentypen sowohl für Merkmale als auch für Gewichte sowie Postprozessorfunktionen unterstützt. Bei mindestens einer Ausführungsform können DLA(s) schnell und effizient neuronale Netze, insbesondere CNNs, auf verarbeiteten oder unverarbeiteten Daten für eine Vielfalt von Funktionen ausführen, einschließlich, beispielhaft und ohne Einschränkung: ein CNN für die Objektidentifikation und -erfassung unter Verwendung von Daten von Kamerasensoren; ein CNN für die Abstandsschätzung unter Verwendung von Daten von Kamerasensoren; ein CNN für die Erfassung und Identifikation von Einsatzfahrzeugen und die Erfassung unter Verwendung von Daten von Mikrofonen; ein CNN für die Gesichtserkennung und die Identifikation von Fahrzeugeigentümern unter Verwendung von Daten von Kamerasensoren; und/oder ein CNN für sicherheitsrelevante und/oder sicherheitsbezogene Ereignisse.
  • Bei mindestens einer Ausführungsform kann (können) DLA(s) jede Funktion der GPU(s) 1308 ausführen, und durch Verwenden eines Inferenzbeschleunigers kann ein Entwickler beispielsweise entweder DLA(s) oder GPU(s) 1308 für eine beliebige Funktion vorsehen. Bei mindestens einer Ausführungsform kann ein Entwickler beispielsweise die Verarbeitung von CNNs und Gleitkommaoperationen auf DLA(s) konzentrieren und andere Funktionen der GPU(s) 1308 und/oder dem (den) Beschleuniger(n) 1314 überlassen.
  • Bei mindestens einer Ausführungsform kann (können) der (die) Beschleuniger 1314 den programmierbaren Bildverarbeitungsbeschleuniger („PVA“) aufweisen, der hier alternativ auch als Computer-Vision-Beschleuniger bezeichnet werden kann. Bei mindestens einer Ausführungsform kann (können) der (die) PVA(s) derart konzipiert und konfiguriert sein, dass er (sie) Computer-Vision-Algorithmen für fortschrittliche Fahrerassistenzsysteme („ADAS“) 1338, autonomes Fahren, Augmented-Reality-Anwendungen („AR“) und/oder Virtual-Reality-Anwendungen („VR“) beschleunigt. Bei mindestens einer Ausführungsform kann der PVA ein Gleichgewicht zwischen Rechenleistung und Flexibilität bereitstellen. Bei mindestens einer Ausführungsform kann jeder PVA beispielsweise und ohne Einschränkung eine beliebige Anzahl von Reduced-Instruction-Set-Computer-Kernen („RISC“-Kernen), direkten Speicherzugriff (Direct Memory Access - „DMA“) und/oder eine beliebige Anzahl von Vektorprozessoren beinhalten.
  • Bei mindestens einer Ausführungsform können RISC-Kerne mit Bildsensoren (z. B. Bildsensoren beliebiger hierin beschriebener Kameras), Bildsignalprozessor(en) usw. interagieren. Bei mindestens einer Ausführungsform kann jeder RISC-Kern eine beliebige Menge an Speicher beinhalten. Bei mindestens einer Ausführungsform können die RISC-Kerne in Abhängigkeit von der Ausführungsform ein beliebiges von einer Anzahl von Protokollen verwenden. Bei mindestens einer Ausführungsform können die RISC-Kerne ein Echtzeitbetriebssystem (Real-Time Operating System - „RTOS“) ausführen. Bei 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 umgesetzt sein. Bei mindestens einer Ausführungsform könnten die RISC-Kerne beispielsweise einen Anweisungs-Cache und/oder einen eng gekoppelten RAM beinhalten.
  • Bei mindestens einer Ausführungsform kann ein DMA es Komponenten der PVA(s) ermöglichen, unabhängig von der/den CPU(s) 1306 auf den Systemspeicher zuzugreifen. Bei mindestens einer Ausführungsform kann DMA eine beliebige Anzahl von Merkmalen unterstützen, die zum Bereitstellen der Optimierung eines PVA verwendet werden, einschließlich der Unterstützung von mehrdimensionaler Adressierung und/oder zirkulärer Adressierung, ohne darauf beschränkt zu sein. Bei 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.
  • Bei mindestens einer Ausführungsform können Vektorprozessoren programmierbare Prozessoren sein, die für eine effiziente und flexible Ausführung der Programmierung für Computer-Vision-Algorithmen ausgelegt sein können und Signalverarbeitungsfunktionen bereitstellen. Bei mindestens einer Ausführungsform kann ein PVA einen PVA-Kern und zwei Vektorverarbeitungsteilsystempartitionen beinhalten. Bei mindestens einer Ausführungsform kann ein PVA-Kern ein Prozessorteilsystem, DMA-Engine(s) (z. B. zwei DMA-Engines) und/oder andere Peripheriegeräte beinhalten. Bei mindestens einer Ausführungsform kann ein Vektorverarbeitungsteilsystem als primäre Verarbeitungs-Engine eines PVA betreiben werden und eine Vektorverarbeitungseinheit (Vector Processing Unit - „VPU“), einen Anweisungs-Cache und/oder Vektorspeicher (z. B. „VMEM“) beinhalten. Bei mindestens einer Ausführungsform kann der VPU-Kern einen digitalen Signalprozessor beinhalten, wie beispielsweise einen digitalen Single-Instruction-Multiple-Data-(„SIMD“-)Very-Long-Instruction-Word-(„VLIW“-)Signalprozessor. Bei mindestens einer Ausführungsform kann eine Kombination aus SIMD und VLIW den Durchsatz und die Geschwindigkeit erhöhen.
  • Bei mindestens einer Ausführungsform kann jeder der Vektorprozessoren einen Anweisungs-Cache aufweisen und mit einem dedizierten Speicher verbunden sein. Infolgedessen kann bei mindestens einer Ausführungsform jeder der Vektorprozessoren derart konfiguriert sein, dass er unabhängig von anderen Vektorprozessoren arbeitet. Bei mindestens einer Ausführungsform können Vektorprozessoren, die in einem bestimmten PVA enthalten sind, derart konfiguriert sein, dass sie Datenparallelität verwenden. Zum Beispiel kann bei mindestens einer Ausführungsform eine Vielzahl von Vektorprozessoren, die in einem einzelnen PVA enthalten ist, einen gemeinsamen Computer-Vision-Algorithmus ausführen, jedoch an unterschiedlichen Regionen eines Bildes. Bei mindestens einer Ausführungsform können die in einem konkreten PVA enthaltenen Vektorprozessoren simultan unterschiedliche Computer-Vision-Algorithmen an einem Bild ausführen oder auch unterschiedliche Algorithmen an sequenziellen Bildern oder Abschnitten eines Bildes ausführen. Bei mindestens einer Ausführungsform kann unter anderem eine beliebige Anzahl PVAs in einem Hardware-Beschleunigungscluster enthalten sein und eine beliebige Anzahl von Vektorprozessoren in jedem PVA enthalten sein. Bei mindestens einer Ausführungsform kann der PVA zusätzlichen Speicher für Fehlerkorrekturcode (Error Correcting Code - „ECC“) beinhalten, um die Gesamtsystemsicherheit zu erhöhen.
  • Bei mindestens einer Ausführungsform kann (können) der (die) Beschleuniger 1314 ein Computer-Vision-Netzwerk auf dem Chip und einen statischen Direktzugriffsspeicher („SRAM“) aufweisen, um einen SRAM mit hoher Bandbreite und geringer Latenz für den (die) Beschleuniger 1314 bereitzustellen. Bei mindestens einer Ausführungsform kann chipinterner Speicher mindestens 4 MB SRAM beinhalten, der beispielsweise und ohne Einschränkung acht feldkonfigurierbare Speicherblöcke umfasst, auf die sowohl ein PVA als auch ein DLA zugreifen können. Bei mindestens einer Ausführungsform kann jedes Paar von Speicherblöcken eine weiterentwickelte Peripheriebus(Advanced Peripheral Bus-Schnittstelle („APB“-Schnittstelle), eine Konfigurationsschaltungsanordnung, einen Controller und einen Multiplexer beinhalten. Bei mindestens einer Ausführungsform kann eine beliebige Art von Speicher verwendet werden. Bei mindestens einer Ausführungsform können ein PVA und ein DLA auf Speicher über einen Backbone zugreifen, der einem PVA und einem DLA Hochgeschwindigkeitszugriff auf Speicher bereitstellt. Bei mindestens einer Ausführungsform kann ein Backbone ein chipinternes Computer-Vision-Netzwerk beinhalten, das einen PVA und einen DLA mit Speicher zusammenschaltet (z. B. unter Verwendung eines APB).
  • Bei mindestens einer Ausführungsform kann ein chipinternes Computer-Vision-Netzwerk 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. Bei 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. Bei mindestens einer Ausführungsform kann eine Schnittstelle den Normen der Internationalen Organisation für Normung („ISO“) 26262 oder der Internationalen Elektrotechnischen Kommission („IEC“) 61508 entsprechen, obwohl auch andere Normen und Protokolle verwendet werden können.
  • Bei mindestens einer Ausführungsform kann eines oder können mehrere der SoC(s) 1304 einen Echtzeit-Raytracing-Hardwarebeschleuniger beinhalten. Bei mindestens einer Ausführungsform kann der Echtzeit-Raytracing-Hardwarebeschleuniger verwendet werden, um schnell und effizient Positionen und Ausmaße von Objekten (z. B. innerhalb eines Weltmodells) zu bestimmen, um Echtzeit-Visualisierungssimulationen zu generieren, für RADAR-Signalinterpretation, für Schallausbreitungssynthese und/oder -analyse, für die Simulation von SONAR-Systemen, für eine allgemeine Wellenausbreitungssimulation, für den Vergleich mit LIDAR-Daten zum Zwecke der Lokalisierung und/oder für andere Funktionen und/oder für andere Zwecke.
  • Bei mindestens einer Ausführungsform kann/können der/die Beschleuniger 1314 eine breite Palette von Anwendungen für das autonome Fahren aufweisen. Bei mindestens einer Ausführungsform kann ein PVA für wichtige Verarbeitungsstufen im ADAS und in autonomen Fahrzeugen verwendet werden. Bei mindestens einer Ausführungsform passen die Fähigkeiten eines PVA gut zu algorithmischen Domänen, die eine vorhersagbare Verarbeitung bei niedriger Leistung und niedriger Latenz benötigen. Anders ausgedrückt, arbeitet ein PVA gut bei halbdichten oder dichten regulären Berechnungen, auch an kleinen Datensätzen, die vorhersagbare Laufzeiten bei niedriger Latenz und niedriger Leistung erfordern könnten. Bei mindestens einer Ausführungsform, wie z. B. in dem Fahrzeug 1300, können PVAs entwickelt sein, um klassische Computer-Vision-Algorithmen auszuführen, da sie effizient bei der Objekterfassung und mit ganzzahligen mathematischen Verfahren arbeiten können.
  • Beispielsweise wird gemäß mindestens einer Ausführungsform der Technologie ein PVA verwendet, um Computer-Stereo-Vision auszuführen. Bei mindestens einer Ausführungsform kann in einigen Beispielen ein auf semiglobalem Abgleich basierender Algorithmus verwendet werden, obwohl dies nicht einschränkend sein soll. Bei 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, Fahrspurerfassung usw.). Bei mindestens einer Ausführungsform kann ein PVA Funktionen der Computer-Stereo-Vision an Eingaben von zwei monokularen Kameras ausführen.
  • Bei mindestens einer Ausführungsform kann ein PVA verwendet werden, um dichten optischen Fluss auszuführen. Zum Beispiel kann ein PVA bei mindestens einer Ausführungsform RADAR-Rohdaten verarbeiten (z. B. unter Verwendung einer 4D-Fast-Fourier-Transformation), um verarbeitete RADAR-Daten bereitzustellen. Bei mindestens einer Ausführungsform wird ein PVA zur Flugtiefenverarbeitung verwendet, indem beispielsweise Flugrohdaten verarbeitet werden, um verarbeitete Flugdaten bereitzustellen.
  • Bei mindestens einer Ausführungsform kann ein DLA verwendet werden, um jede Art von Netzwerk zu betreiben, um die Steuerung und die Fahrsicherheit zu verbessern, einschließlich beispielsweise und ohne Einschränkung eines neuronalen Netzwerks, das für jede Objekterfassung ein Maß für das Vertrauen ausgibt. Bei mindestens einer Ausführungsform kann die Konfidenz als eine Wahrscheinlichkeit dargestellt oder interpretiert werden oder als Bereitstellung einer relativen „Gewichtung“ jeder Erfassung im Vergleich zu anderen Erfassungen. Bei mindestens einer Ausführungsform ermöglicht ein Konfidenzmaß es einem System, weitere Entscheidungen darüber zu treffen, welche Erfassungen als richtig positive Erfassungen und nicht als falsch positive Erfassungen betrachtet werden sollten. Bei mindestens einer Ausführungsform kann ein System einen Schwellenwert für die Konfidenz festlegen und nur Erfassungen, die den Schwellenwert überschreiten, als richtig positive Erfassungen betrachten. Bei einer Ausführungsform, in der ein automatisches Notbremssystem (Automatic Emergency Braking - „AEB“-System) verwendet wird, würden falsche positive Erfassungen dazu führen, dass das Fahrzeug automatisch eine Notbremsung ausführt, was natürlich unerwünscht ist. Bei mindestens einer Ausführungsform können Erfassungen mit hoher Konfidenz als Auslöser für AEB betrachtet werden. Bei mindestens einer Ausführungsform kann ein DLA ein neuronales Netzwerk zur Regression des Konfidenzwerts ausführen. Bei mindestens einer Ausführungsform kann das neuronale Netzwerk als Eingabe mindestens eine Teilmenge von Parametern verwenden, wie z. B. die Abmessungen des Begrenzungsrahmens, die (z. B. von einem anderen Teilsystem) erhaltene Schätzung der Grundfläche, die Ausgabe des/der IMU-Sensors/en 1366, die mit der Ausrichtung des Fahrzeugs 1300 korreliert, die Entfernung, die Schätzungen der 3D-Position des Objekts, die vom neuronalen Netzwerk und/oder anderen Sensoren (z. B. LIDAR-Sensor(en) 1364 oder RADAR-Sensor(en) 1360) erhalten werden, und andere.
  • Bei mindestens einer Ausführungsform können eines oder mehrere der SoC(s) 1304 einen oder mehrere Datenspeicher 1316 (z. B. Speicher) beinhalten. Bei mindestens einer Ausführungsform kann (können) der (die) Datenspeicher 1316 ein On-Chip-Speicher des (der) SoC(s) 1304 sein, der (die) neuronale Netzwerke speichern kann (können), die auf GPU(s) 1308 und/oder einem DLA ausgeführt werden sollen. Bei mindestens einer Ausführungsform kann die Kapazität des/der Datenspeicher(s) 1316 groß genug sein, um mehrere Instanzen neuronaler Netzwerke aus Gründen der Redundanz und Sicherheit zu speichern. Bei mindestens einer Ausführungsform kann der/können die Datenspeicher 1316 L2- oder L3-Cache(s) umfassen.
  • Bei mindestens einer Ausführungsform können eines oder mehrere der SoC(s) 1304 eine beliebige Anzahl von Prozessor(en) 1310 (z. B. eingebettete Prozessoren) beinhalten. Bei mindestens einer Ausführungsform kann (können) der (die) Prozessor(en) 1310 einen Boot- und Energieverwaltungsprozessor aufweisen, bei dem es sich um einen dedizierten Prozessor und ein dediziertes Subsystem handeln kann, um die Boot-Energie- und Verwaltungsfunktionen und die damit verbundene Sicherheitsdurchsetzung zu handhaben. Bei mindestens einer Ausführungsform kann der Booting- und Leistungsverwaltungsprozessor ein Teil einer Booting-Sequenz der SoC(s) 1304 sein und Laufzeit-Leistungsverwaltungsdienste bereitstellen. Bei mindestens einer Ausführungsform kann ein Prozessor für die Boot-Energieversorgung und -Verwaltung Takt- und Spannungsprogrammierung, Unterstützung bei Systemübergängen mit niedrigem Energiebedarf, Verwaltung von SoC(s) 1304-Temperaturen und Temperatursensoren und/oder Verwaltung von SoC(s) 1304-Energieversorgungszuständen bereitstellen. Bei mindestens einer Ausführungsform kann jeder Temperatursensor als Ringoszillator umgesetzt sein, dessen Ausgangsfrequenz proportional zur Temperatur ist, und (ein) SoC(s) 1304 kann/können Ringoszillatoren verwenden, um Temperaturen von CPU(s) 1306, GPU(s) 1308 und/oder Beschleuniger(n) 1314 zu erfassen. Bei mindestens einer Ausführungsform kann ein Boot- und Energieverwaltungsprozessor, wenn festgestellt wird, dass die Temperaturen einen Schwellenwert überschreiten, in eine Temperaturfehlerroutine eintreten und die SoC(s) 1304 in einen Zustand mit geringerer Leistung versetzen und/oder das Fahrzeug 1300 in einen Chauffeur-zu-sicherem-Halt-Modus versetzen (z. B. das Fahrzeug 1300 zu einem sicheren Halt bringen).
  • Bei mindestens einer Ausführungsform kann/können der/die Prozessor(en) 1310 darüber hinaus einen Satz eingebetteter Prozessoren beinhalten, die als Audioverarbeitungs-Engine dienen können, was ein Audio-Subsystem sein kann, das eine vollständige Hardware-Unterstützung für Mehrkanal-Audio über mehrere Schnittstellen und eine breite und flexible Palette von Audio-E/A-Schnittstellen ermöglicht. Bei mindestens einer Ausführungsform ist eine Audioverarbeitungs-Engine ein dedizierter Prozessorkern mit einem digitalen Signalprozessor mit dediziertem RAM.
  • Bei mindestens einer Ausführungsform kann/können der/die Prozessor(en) 1310 darüber hinaus eine „always on“-Prozessor-Maschine aufweisen, die die notwendigen Hardware-Funktionen zur Unterstützung von Sensor-Management mit geringem Stromverbrauch und Aufwach-Anwendungsfälle bereitstellen kann. Bei mindestens einer Ausführungsform kann eine „always on“-Prozessor-Maschine ohne Einschränkung einen Prozessorkern, ein eng gekoppeltes RAM, unterstützende Peripheriegeräte (z. B. Timer und Interrupt-Controller), verschiedene E/A-Controller-Peripheriegeräte und Routing-Logik beinhalten.
  • Bei mindestens einer Ausführungsform kann/können der/die Prozessor(en) 1310 weiter eine Sicherheits-Cluster-Engine beinhalten, die ohne Einschränkung ein dediziertes Prozessor-Subsystem zur Handhabung des Sicherheitsmanagements für Automobilanwendungen beinhaltet. Bei mindestens einer Ausführungsform kann eine Sicherheitscluster-Engine ohne Einschränkung zwei oder mehr Prozessorkerne, einen eng gekoppelten RAM, unterstützende Peripheriegeräte (z. B. Zeitgeber, eine Unterbrechungssteuerung usw.) und/oder Routing-Logik beinhalten. In einem Sicherheitsmodus können zwei oder mehr Kerne bei 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 erfassen. Bei mindestens einer Ausführungsform kann (können) der (die) Prozessor(en) 1310 darüber hinaus eine Echtzeit-Kamera-Maschine aufweisen, die ohne Einschränkung ein dediziertes Prozessor-Subsystem zur Handhabung des Echtzeit-Kameramanagements aufweisen kann. Bei mindestens einer Ausführungsform kann (können) der (die) Prozessor(en) 1310 darüber hinaus einen Signalprozessor mit hohem Dynamikbereich aufweisen, der ohne Einschränkung einen Bildsignalprozessor aufweisen kann, der eine Hardware-Maschine ist, die Teil einer Kameraverarbeitungs-Pipeline ist.
  • Bei mindestens einer Ausführungsform kann (können) der (die) Prozessor(en) 1310 einen Videobildkompositor aufweisen, der ein Verarbeitungsblock sein kann (z. B. auf einem Mikroprozessor umgesetzt), der Videonachverarbeitungsfunktionen umsetzt, die von einer Videowiedergabeanwendung benötigt werden, um ein endgültiges Bild für ein Spieler-Fenster zu erzeugen. Bei mindestens einer Ausführungsform kann ein Videobildkompositor eine Linsenverzerrungskorrektur an der/den Weitwinkelkamera(s) 1370, der/den Surround-Kamera(s) 1374 und/oder an dem/den Sensor(en) der Überwachungskamera(s) in der Kabine vornehmen. Bei mindestens einer Ausführungsform wird/werden der/die Sensor(en) der Überwachungskamera(s) in der Kabine bevorzugt von einem neuronalen Netzwerk überwacht, das auf einer anderen Instanz des SoC 1304 läuft und Dazu konfiguriert ist, Ereignisse in der Kabine zu identifizieren entsprechend zu reagieren. Bei mindestens einer Ausführungsform kann ein kabineninternes System ohne Einschränkung Lippenlesen ausfü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. Bei 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.
  • Bei 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. Bei mindestens einer Ausführungsform, in der Bewegung in einem Video vorkommt, gewichtet die Rauschunterdrückung beispielsweise die räumlichen Informationen entsprechend, indem sie die Gewichtungen der Informationen, die durch benachbarte Einzelbilder bereitgestellt werden, verringert. Bei mindestens einer Ausführungsform, bei der ein Bild oder ein Abschnitt eines Bildes keine Bewegung beinhaltet, kann die durch den Videobildkompositor ausgeführte zeitliche Rauschunterdrückung Informationen aus einem vorherigen Bild verwenden, um das Rauschen in einem derzeitigen Bild zu unterdrücken.
  • Bei mindestens einer Ausführungsform kann ein Videobildkompositor auch derart konfiguriert sein, dass er eine Stereoentzerrung an den eingegebenen Stereoobjektiv-Einzelbildern ausführt. Bei mindestens einer Ausführungsform kann ein Videobildkompositor darüber hinaus für die Gestaltung der Benutzeroberfläche verwendet werden, wenn der Desktop des Betriebssystems in Gebrauch ist und die GPU(s) 1308 nicht zum kontinuierlichen Rendern neuer Oberflächen benötigt werden. Bei mindestens einer Ausführungsform, wenn die GPU(s) 1308 eingeschaltet sind und aktiv 3D-Rendering ausführen, kann ein Videobildkompositor verwendet werden, um die GPU(s) 1308 zu entlasten, um die Leistung und Reaktionsfähigkeit zu verbessern.
  • Bei mindestens einer Ausführungsform kann einer oder können mehrere der SoC(s) 1304 darüber hinaus eine serielle Mobile Industry Processor Interface („MIPI“-) Kameraschnittstelle zum Empfang von Video und Eingaben von Kameras, eine Hochgeschwindigkeitsschnittstelle und/oder einen Videoeingabeblock aufweisen, der für eine Kamera und verwandte Pixeleingabefunktionen verwendet werden kann. Bei mindestens einer Ausführungsform können eines oder mehrere der SoC(s) 1304 weiter Eingabe/Ausgabe-Controller beinhalten, die von Software gesteuert werden können und zum Empfangen von E/A-Signalen, die keiner spezifischen Rolle zugewiesen sind, verwendet werden können.
  • Bei mindestens einer Ausführungsform kann einer oder können mehrere Socvon SoC(s) 1304 darüber hinaus eine breite Palette von Peripherieschnittstellen aufweisen, um die Kommunikation mit Peripheriegeräten, Audio-Encodern/Decodern („Codecs“), der Energieverwaltung und/oder anderen Einrichtungen zu ermöglichen. Bei mindestens einer Ausführungsform kann (können) SoC(s) 1304 verwendet werden, um Daten von Kameras (z. B. verbunden über Gigabit Multimedia Serial Link und Ethernet-Kanälen), Sensoren (z. B. LIDAR-Sensor(en) 1364, RADAR-Sensor(en) 1360 usw., die über Ethernet-Kanäle verbunden sein können), Daten von Bus 1302 (z. B. Geschwindigkeit des Fahrzeugs 1300, Lenkradposition usw.), Daten von GNSS-Sensor(en) 1358 (z. B. verbunden über einen Ethernet-Bus oder einen CAN-Bus) usw. zu verarbeiten. Bei mindestens einer Ausführungsform kann ein oder können mehrere SoC von SoC(s) 1304 darüber hinaus dedizierte Hochleistungs-Massenspeichersteuerungen beinhalten, die ihre eigenen DMA-Maschinen beinhalten können und die verwendet werden können, um die CPU(s) 1306 von Routine-Datenverwaltungs-Tasks zu entlasten.
  • Bei mindestens einer Ausführungsform kann (können) der (die) SoC(s) 1304 eine End-to-End-Plattform mit einer flexiblen Architektur sein, die die Automatisierungsstufen 3 bis 5 umfasst und dadurch eine umfassende funktionale Sicherheitsarchitektur bereitstellt, die Computer-Vision- und ADAS-Techniken für Diversität und Redundanz nutzt und eine Plattform für einen flexiblen, zuverlässigen Fahrsoftware-Stack zusammen mit Deep-Learning-Werkzeugen bereitstellt. Bei mindestens einer Ausführungsform können die SoC(s) 1304 schneller, zuverlässiger und sogar energie- und platzsparender sein als herkömmliche Systeme. Beispielsweise können bei mindestens einer Ausführungsform der/die Beschleuniger 1314 in Kombination mit der/den CPU(s) 1306, der/den GPU(s) 1308 und dem/den Datenspeicher(n) 1316 eine schnelle, effiziente Plattform für autonome Fahrzeuge der Stufe 3-5 bereitstellen.
  • Bei mindestens einer Ausführungsform können Computer-Vision-Algorithmen auf CPUs ausgeführt werden, die unter Verwendung einer Hochsprachen-Programmierung, wie z. B. C, und konfiguriert sein können, um eine Vielzahl von Verarbeitungsalgorithmen für eine Vielfalt von visuellen Daten auszuführen. Bei mindestens einer Ausführungsform sind die CPUs jedoch oft nicht in der Lage, die Performance-Anforderungen vieler Computer-Vision-Anwendungen zu erfüllen, wie z. B. in Bezug auf die Ausführungszeit und den Leistungsverbrauch. Bei mindestens einer Ausführungsform sind viele CPUs nicht in der Lage, komplexe Objekterfassungsalgorithmen in Echtzeit auszuführen, die in fahrzeuginternen ADAS-Anwendungen und in praktischen autonomen Fahrzeugen der Stufe 3-5 verwendet werden.
  • Ausführungsformen, wie sie hier beschrieben sind, ermöglichen die gleichzeitige und/oder sequentielle Ausführung mehrerer neuronaler Netzwerke und die Kombination der Ergebnisse, um autonome Fahrfunktionen der Stufe 3-5 zu ermöglichen. Zum Beispiel kann bei mindestens einer Ausführungsform ein CNN, das auf einem DLA oder einer diskreten GPU (z. B. GPU(s) 1320) ausgeführt wird, eine Text- und Worterkennung aufweisen, die ein Lesen und Verstehen von Verkehrsschildern, einschließlich Schildern, für die das neuronale Netzwerk nicht spezifisch trainiert wurde, ermöglichen. Bei mindestens einer Ausführungsform kann ein DLA ferner ein neuronales Netzwerk beinhalten, das dazu in der Lage ist, ein Zeichen zu identifizieren, zu interpretieren und ein semantisches Verständnis davon bereitzustellen und dieses semantische Verständnis an Pfadplanungsmodule weiterzugeben, die auf einem CPU-Komplex laufen.
  • Bei mindestens einer Ausführungsform können mehrere neuronale Netzwerke gleichzeitig ausgeführt werden, wie beim Fahren der Stufe 3, 4 oder 5. Beispielsweise kann bei mindestens einer Ausführungsform ein Warnschild, das angibt „Vorsicht: Blinkende Lichter deuten auf Vereisung hin“ gemeinsam mit einem elektrischen Licht unabhängig oder gemeinsam von mehreren neuronalen Netzwerken interpretiert werden. Bei mindestens einer Ausführungsform kann ein derartiges Warnschild selbst durch ein erstes eingesetztes neuronales Netzwerk (z. B. ein neuronales Netzwerk, das trainiert wurde) als Verkehrsschild identifiziert werden und ein Text „Blinkende Lichter weisen auf Vereisung hin“ kann durch ein zweites eingesetztes neuronales Netzwerk interpretiert werden, das eine Pfadplanungssoftware des Fahrzeugs (die bevorzugt auf einem CPU-Komplex ausgeführt wird) darüber informiert, dass, wenn blinkende Lichter erfasst werden, Vereisung vorliegt. Bei mindestens einer Ausführungsform kann ein blinkendes Licht identifiziert werden, indem ein drittes eingesetztes neuronales Netzwerk über mehrere Einzelbilder hinweg betrieben wird, das eine Pfadplanungssoftware des Fahrzeugs über ein Vorhandensein (oder ein Nichtvorhandensein) von blinkenden Lichtern informiert. Bei mindestens einer Ausführungsform können alle drei neuronalen Netzwerke simultan laufen, wie etwa innerhalb eines DLA und/oder auf GPU(s) 1308.
  • Bei 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 1300 zu identifizieren. Bei mindestens einer Ausführungsform kann eine immer aktive Sensorverarbeitungs-Engine werden, um ein Fahrzeug zu entriegeln, wenn sich ein Besitzer einer Fahrertür nähert und die Lichter einschaltet, und, im Sicherheitsmodus, um das Fahrzeug zu deaktivieren, wenn der Besitzer das Fahrzeug verlässt. Auf diese Weise sorgen die SoC(s) 1304 für Sicherheit gegen Diebstahl und/oder Carjacking.
  • Bei mindestens einer Ausführungsform kann ein CNN zur Erfassung und Identifikation von Einsatzfahrzeugen Daten von Mikrofonen 1396 verwenden, um Sirenen von Einsatzfahrzeugen zu erfassen und zu identifizieren. Bei mindestens einer Ausführungsform verwenden die SoC(s) 1304 ein CNN zur Klassifizierung von Umwelt- und Stadtgeräuschen sowie zur Klassifizierung visueller Daten. Bei mindestens einer Ausführungsform wird ein CNN, das auf einem DLA läuft, dafür trainiert, eine relative Annäherungsgeschwindigkeit eines Einsatzfahrzeugs zu identifizieren (z. B. durch Verwenden eines Dopplereffekts). Bei mindestens einer Ausführungsform kann ein CNN auch so trainiert werden, dass es Einsatzfahrzeuge identifiziert, die spezifisch für das lokale Gebiet sind, in dem das Fahrzeug unterwegs ist, wie es von GNSS-Sensor(en) 1358 identifiziert wird. Bei mindestens einer Ausführungsform versucht ein CNN, wenn es in Europa betrieben wird, europäische Sirenen zu Erfassen, und in Nordamerika versucht ein CNN, nur nordamerikanische Sirenen zu identifizieren. Bei mindestens einer Ausführungsform kann, sobald ein Einsatzfahrzeug erkannt wird, ein Steuerprogramm verwendet werden, um eine Sicherheitsroutine für Einsatzfahrzeuge auszuführen, das Fahrzeug zu verlangsamen, an den Straßenrand zu fahren, das Fahrzeug zu parken und/oder das Fahrzeug im Leerlauf laufen zu lassen, mit Hilfe des/der Ultraschallsensors/en 1362, bis das (die) Einsatzfahrzeug(e) vorbeifährt (vorbeifahren).
  • Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 eine oder mehrere CPU(s) 1318 (z. B. diskrete CPU(s) oder dCPU(s)) aufweisen, die über eine Hochgeschwindigkeitsverbindung (z. B. PCle) mit dem/den SoC(s) 1304 verbunden sein können. Bei mindestens einer Ausführungsform kann (können) die CPU(s) 1318 beispielsweise einen X86-Prozessor aufweisen. (Eine) CPU(s) 1318 kann/können verwendet werden, um eine Vielfalt von Funktionen auszuführen, beispielsweise einschließlich der Schlichtung potenziell inkonsistenter Ergebnisse zwischen ADAS-Sensoren und SoC(s) 1304 und/oder der Überwachung des Status und des Zustands des (der) Controller 1336 und/oder eines Infotainment-Systems auf einem Chip („infotainment-SoC“) 1330.
  • Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 GPU(s) 1320 (z. B. diskrete GPU(s) oder dGPU(s)) beinhalten, die mit dem/den SoC(s) 1304 über eine Hochgeschwindigkeitsverbindung (z. B. NVIDIAs NVLINK-Kanal) gekoppelt sein können. Bei mindestens einer Ausführungsform kann/können GPU(s) 1320 zusätzliche künstliche Intelligenzfunktionalität bereitstellen, beispielsweise durch Ausführen redundanter und/oder unterschiedlicher neuronaler Netze, und kann/können verwendet werden, um neuronale Netzwerke zu trainieren und/oder zu aktualisieren, was mindestens zum Teil auf Eingaben (z. B. Sensordaten) von Sensoren des Fahrzeugs 1300 basiert.
  • Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 ferner die Netzschnittstelle 1324 beinhalten, die ohne Einschränkung drahtlose Antenne(n) 1326 beinhalten kann (z. B. eine oder mehrere drahtlose Antennen für unterschiedliche Kommunikationsprotokolle, wie etwa eine Mobilfunkantenne, eine Bluetooth-Antenne usw.). Bei mindestens einer Ausführungsform kann die Netzwerkschnittstelle 1324 verwendet werden, um eine drahtlose Verbindung zu Internet-Cloud-Diensten (z. B. mit einem oder mehreren Servern und/oder anderen Netzwerkvorrichtungen), mit anderen Fahrzeugen und/oder mit Rechenvorrichtungen (z. B. Client-Vorrichtungen von Fahrgästen) zu ermöglichen. Bei mindestens einer Ausführungsform kann zum Kommunizieren mit anderen Fahrzeugen eine direkte Verknüpfung zwischen dem Fahrzeug 130 und einem anderen Fahrzeug hergestellt werden und/oder eine indirekte Verknüpfung (z. B. über Netzwerke und über das Internet) hergestellt werden. Bei mindestens einer Ausführungsform können direkte Verbindungen unter Verwendung einer Fahrzeug-zu-Fahrzeug-Kommunikationsverbindung bereitgestellt werden. Bei mindestens einer Ausführungsform kann die Fahrzeug-zu-Fahrzeug-Kommunikationsverbindung dem Fahrzeug 1300 Informationen über Fahrzeuge in der Nähe des Fahrzeugs 1300 bereitstellen (z. B. Fahrzeuge vor, neben und/oder hinter dem Fahrzeug 1300). Bei mindestens einer Ausführungsform kann die vorstehend erwähnte Funktionalität Teil einer kooperativen adaptiven Geschwindigkeitsregelungsfunktion des Fahrzeugs 1300 sein.
  • Bei mindestens einer Ausführungsform kann die Netzwerkschnittstelle 1324 ein SoC aufweisen, das Modulations- und Demodulationsfunktionen bereitstellt und den (die) Controller 1336 in die Lage versetzt, über drahtlose Netzwerke zu kommunizieren. Bei mindestens einer Ausführungsform kann die Netzwerkschnittstelle 1324 ein Hochfrequenz-Front-End für die Aufwärtskonvertierung von einem Basisband auf eine Hochfrequenz und die Abwärtskonvertierung von einer Hochfrequenz auf ein Basisband aufweisen. Bei mindestens einer Ausführungsform können die Frequenzumwandlungen auf jede technisch mögliche Weise ausgeführt werden. Beispielsweise können Frequenzumwandlungen durch bekannte Verfahren und/oder unter Verwendung von Superheterodyn-Verfahren ausgeführt werden. Bei mindestens einer Ausführungsform kann die Hochfrequenz-Front-End-Funktionalität durch einen separaten Chip bereitgestellt werden. Bei mindestens einer Ausführungsform können die Netzschnittstellen eine drahtlose Funktionalität zum Kommunizieren über LTE, WCDMA, UMTS, GSM, CDMA2000, Bluetooth, Bluetooth LE, Wi-Fi, Z-Wave, ZigBee, LoRaWAN und/oder andere drahtlose Protokolle beinhalten.
  • Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 darüber hinaus einen oder mehrere Datenspeicher 1328 aufweisen, die ohne Einschränkung einen Off-Chip-Speicher (z. B. Off-SoC(s) 1304) aufweisen können. Bei mindestens einer Ausführungsform kann (können) der (die) Datenspeicher 1328 ohne Einschränkung ein oder mehrere Speicherelemente aufweisen, darunter RAM, SRAM, dynamischer Direktzugriffsspeicher („DRAM“), Video-Direktzugriffsspeicher („VRAM“), Flash-Speicher, Festplatten und/oder andere Komponenten und/oder Einrichtungen, die mindestens ein Bit an Daten speichern können.
  • Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 darüber hinaus GNSS-Sensor(en) 1358 (z. B. GPS- und/oder unterstützte GPS-Sensoren) beinhalten, um bei Demapping, der Wahrnehmung, dem Generieren von Belegungsrastern und/oder der Pfadplanung zu helfen. Bei mindestens einer Ausführungsform kann eine beliebige Anzahl von GNSS-Sensor(en) 1358 verwendet werden, einschließlich beispielsweise und ohne Einschränkung eines GPS unter Verwendung eines USB-Steckers mit einer Ethernet-zu-Seriell-Brücke (z. B. RS-232-Brücke).
  • Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 darüber hinaus RADAR-Sensor(en) 1360 beinhalten. Bei mindestens einer Ausführungsform kann (können) der (die) RADAR-Sensor(en) 1360 von einem Fahrzeug 1300 für die Fahrzeugerfassung über große Entfernungen verwendet werden, selbst bei Dunkelheit und/oder schlechten Wetterbedingungen. Bei mindestens einer Ausführungsform können die RADAR-Funktionssicherheitsstufen ASIL B sein. Bei mindestens einer Ausführungsform kann (können) der (die) RADAR-Sensor(en) 1360 einen CAN-Bus und/oder den Bus 1302 (z. B. zur Übertragung der von dem/den RADAR-Sensor(en) 1360 generierten Daten) zur Steuerung und zum Zugriff auf Objektverfolgungsdaten verwenden, wobei bei einigen Beispielen der Zugriff auf Rohdaten über Ethernet-Kanäle erfolgt. Bei mindestens einer Ausführungsform kann eine breite Vielfalt von RADAR-Sensortypen verwendet werden. Zum Beispiel und ohne Einschränkung können RADAR-Sensor(en) 1360 für die Verwendung von Front-, Heck- und Seiten-RADAR geeignet sein. Bei mindestens einer Ausführungsform handelt es sich bei einem oder mehreren Sensoren der RADAR-Sensor(en) 1360 um einen Impuls-Doppler-RADAR-Sensor.
  • Bei mindestens einer Ausführungsform kann (können) der (die) RADAR-Sensor(en) 1360 verschiedene Konfigurationen beinhalten, wie z. B. große Reichweite mit engem Sichtfeld, kurze Reichweite mit breitem Sichtfeld, seitliche Abdeckung mit kurzer Reichweite usw. Bei mindestens einer Ausführungsform kann das RADAR mit großer Reichweite für die adaptive Geschwindigkeitsregelung verwendet werden. Bei mindestens einer Ausführungsform können RADAR-Systeme mit großer Reichweite ein breites Sichtfeld bereitstellen, das durch zwei oder mehr unabhängige Scans realisiert wird, wie etwa innerhalb einer Reichweite von 250 m (Metern). Bei mindestens einer Ausführungsform kann/können der/die RADAR-Sensor(en) 1360 dabei helfen, zwischen stationären und sich bewegenden Objekten zu unterscheiden, und kann/können vom ADAS-System 1338 zur Notbremsunterstützung und zur Vorwärtskollisionswarnung verwendet werden. Bei mindestens einer Ausführungsform kann (können) der (die) Sensor(en) 1360, der (die) in einem RADAR-System mit großer Reichweite enthalten ist (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 aufweisen. Bei mindestens einer Ausführungsform mit sechs Antennen können vier zentrale Antennen ein fokussiertes Strahlenmuster erzeugen, das dazu konfiguriert ist, die Umgebung des Fahrzeugs 1300 bei höheren Geschwindigkeiten mit minimalen Störungen durch den Verkehr auf den benachbarten Fahrspuren aufzuzeichnen. Bei mindestens einer Ausführungsform können die beiden anderen Antennen das Sichtfeld erweitern, so dass Fahrzeuge, die in eine Fahrspur des Fahrzeugs 1300 einfahren oder diese verlassen, schnell erfasst werden können.
  • Bei mindestens einer Ausführungsform können Mittelbereich-RADAR-Systeme 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. Bei mindestens einer Ausführungsform können Kurzstrecken-RADAR-Systeme ohne Einschränkung eine beliebige Anzahl von RADAR-Sensoren 1360 aufweisen, die an beiden Enden des hinteren Stoßfängers installiert sein können. Wenn das RADAR-Sensorsystem an beiden Enden eines hinteren Stoßfängers installiert ist, kann es bei mindestens einer Ausführungsform zwei Strahlen erzeugen, die tote Winkel in einer rückwärtigen Richtung und neben einem Fahrzeug konstant überwachen. Bei mindestens einer Ausführungsform können RADAR-Systeme mit kurzer Reichweite in dem ADAS-System 1338 zur Totwinkelerfassung und/oder zur Spurwechselassistenz verwendet werden.
  • Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 ferner Ultraschallsensor(en) 1362 beinhalten. Bei mindestens einer Ausführungsform kann (können) der (die) Ultraschallsensor(en) 1362, der (die) an der Vorderseite, an der Rückseite und/oder an den Seiten des Fahrzeugs 1300 angeordnet sein kann (können), zur Einparkhilfe und/oder zur Erstellung und Aktualisierung eines Belegungsrasters verwendet werden. Bei mindestens einer Ausführungsform kann eine Vielfalt von Ultraschallsensoren 1362 verwendet werden, und unterschiedliche Ultraschallsensoren 1362 können für unterschiedliche Erfassungsbereiche (z. B. 2,5 m, 4 m) verwendet werden. Bei mindestens einer Ausführungsform kann/können der/die Ultraschallsensor(en) 1362 bei funktionalen Sicherheitsstufen von ASIL B arbeiten.
  • Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 LIDAR-Sensor(en) 1364 beinhalten. Bei mindestens einer Ausführungsform kann (können) der (die) LIDAR-Sensor(en) 1364 zur Objekt- und Fußgängererfassung, Notbremsung, Kollisionsvermeidung und/oder anderen Funktionen verwendet werden. Bei mindestens einer Ausführungsform kann/können der/die LIDAR-Sensor(en) 1364 bei der funktionalen Sicherheitsstufe ASIL B arbeiten. Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 mehrere LIDAR-Sensoren 1364 (z. B. zwei, vier, sechs usw.) beinhalten, die einen Ethernet-Kanal verwenden können (z. B. um Daten an einen Gigabit-Ethernet-Switch bereitzustellen).
  • Bei mindestens einer Ausführungsform kann/können der/die LIDAR-Sensor(en) 1364 in der Lage sein, eine Liste von Objekten und deren Entfernungen für ein 360-Grad-Sichtfeld bereitzustellen. Bei mindestens einer Ausführungsform kann/können der/die handelsübliche(n) LIDAR-Sensor(en) 1364 eine angezeigte Reichweite von etwa 100 m aufweisen, mit einer Genauigkeit von 2 cm bis 3 cm und mit Unterstützung für eine 100-Mbps-Ethernet-Verbindung, beispielsweise. Bei mindestens einer Ausführungsform können ein oder mehrere nicht vorragende LIDAR-Sensoren verwendet werden. Bei einer derartigen Ausführungsform kann (können) der (die) LIDAR-Sensor(en) 1364 eine kleine Einrichtung aufweisen, die in die Front, das Heck, eine Seite und/oder einen Eckbereich des Fahrzeugs 1300 eingebettet sein kann. Bei mindestens einer Ausführungsform kann/können der/die LIDAR-Sensor(en) 1364 in einer derartigen Ausführungsform ein horizontales Sichtfeld von bis zu 120 Grad und ein vertikales Sichtfeld von bis zu 35 Grad mit einer Reichweite von 200 m selbst für Objekte mit geringem Reflexionsvermögen bereitstellen. Bei mindestens einer Ausführungsform kann/können der/die frontmontierte(n) LIDAR-Sensor(en) 1364 für ein horizontales Sichtfeld zwischen 45 Grad und 135 Grad konfiguriert sein.
  • Bei mindestens einer Ausführungsform können auch LIDAR-Technologien, wie z. B. 3D Flash LIDAR, verwendet werden. Bei mindestens einer Ausführungsform verwendet ein 3D Flash LIDAR einen Blitz eines Lasers als Sendequelle, um die Umgebung des Fahrzeugs 1300 bis zu einer Entfernung von etwa 200 m zu beleuchten. Bei mindestens einer Ausführungsform weist eine Flash-LIDAR-Einheit ohne Einschränkung einen Rezeptor auf, der die Laufzeit des Laserpulses und das reflektierte Licht auf jedem Pixel aufzeichnet, was wiederum der Entfernung des Fahrzeugs 1300 zu Objekten entspricht. Bei mindestens einer Ausführungsform kann es das Flash-LIDAR ermöglichen, mit jedem Laserblitz hochgenaue und verzerrungsfreie Bilder der Umgebung zu generieren. Bei mindestens einer Ausführungsform können vier Flash-LIDAR-Sensoren eingesetzt werden, einer auf jeder Seite des Fahrzeugs 1300. Bei mindestens einer Ausführungsform weisen 3D-Blitz-LIDAR-Systeme ohne Einschränkung eine Festkörper-3D-Star-Array-LIDAR-Kamera auf, die außer einem Gebläse keine beweglichen Teile aufweist (z. B. eine nicht scannende LIDAR-Einrichtung). Bei mindestens einer Ausführungsform kann die Flash-LIDAR-Einrichtung einen 5-Nanosekunden-Laserimpuls der Klasse I (augensicher) pro Bild verwenden und das reflektierte Laserlicht als 3D-Entfernungspunktwolke und koregistrierte Intensitätsdaten erfassen.
  • Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 darüber hinaus IMU-Sensor(en) 1366 beinhalten. Bei mindestens einer Ausführungsform kann/können der/die IMU-Sensor(en) 1366 in der Mitte der Hinterachse des Fahrzeugs 1300 liegen. Bei mindestens einer Ausführungsform kann/können der/die IMU-Sensor(en) 1366 beispielsweise und ohne Einschränkung einen oder mehrere Beschleunigungsmesser, Magnetometer, Gyroskop(e), einen Magnetkompass, Magnetkompasse und/oder andere Sensortypen beinhalten. Bei mindestens einer Ausführungsform, wie z. B. bei sechsachsigen Anwendungen, kann/können der/die IMU-Sensor(en) 1366 ohne Einschränkung Beschleunigungsmesser und Gyroskope beinhalten. Bei mindestens einer Ausführungsform, wie z. B. bei neunachsigen Anwendungen, kann/können der/die IMU-Sensor(en) 1366 ohne Einschränkung Beschleunigungsmesser, Gyroskope und Magnetometer beinhalten.
  • Bei mindestens einer Ausführungsform kann/können der/die IMU-Sensor(en) 1366 als ein miniaturisiertes, hochleistungsfähiges GPS-gestütztes Trägheitsnavigationssystem („GPS/INS“) umgesetzt sein, das mikroelektromechanische Systeme („MEMS“) Trägheitssensoren, einen hochempfindlichen GPS-Empfänger und fortschrittliche Kalman-Filteralgorithmen kombiniert, um Schätzungen von Position, Geschwindigkeit und Lage bereitzustellen. Bei mindestens einer Ausführungsform kann/können der/die IMU-Sensor(en) 1366 das Fahrzeug 1300 in die Lage versetzen, den Kurs zu schätzen, ohne dass Eingaben von einem Magnetsensor erforderlich sind, indem Änderungen der Geschwindigkeit vom GPS direkt mit dem/den IMU-Sensor(en) 1366 beobachtet und korreliert werden. Bei mindestens einer Ausführungsform können IMU-Sensor(en) 1366 und GNSS-Sensor(en) 1358 in einer einzigen integrierten Einheit kombiniert sein.
  • Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 ein oder mehrere Mikrofone 1396 aufweisen, die im und/oder um das Fahrzeug 1300 herum angeordnet sind. Bei mindestens einer Ausführungsform kann (können) das (die) Mikrofon(e) 1396 u.a. zur Erfassung und Identifikation von Einsatzfahrzeugen verwendet werden.
  • Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 darüber hinaus eine beliebige Anzahl von Kameratypen beinhalten, einschließlich Stereokamera(s) 1368, Weitwinkelkamera(s) 1370, Infrarotkamera(s) 1372, Surround-Kamera(s) 1374, Weitbereichskamera(s) 1398, Mittelbereichskamera(s) 1376 und/oder anderer Kameratypen. Bei mindestens einer Ausführungsform können Kameras verwendet werden, um Bilddaten um den gesamten Umfang des Fahrzeugs 1300 zu erfassen. Bei mindestens einer Ausführungsform hängen die Typen der verwendeten Kameras vom Fahrzeug 1300 ab. Bei mindestens einer Ausführungsform kann eine beliebige Kombination von Kameratypen verwendet werden, um die erforderliche Abdeckung um das Fahrzeug 1300 zu gewährleisten. Bei mindestens einer Ausführungsform kann eine Anzahl eingesetzter Kameras in Abhängigkeit von der Ausführungsform unterschiedlich sein. Bei mindestens einer Ausführungsform könnte das Fahrzeug 1300 beispielsweise sechs Kameras, sieben Kameras, zehn Kameras, zwölf Kameras oder eine andere Anzahl von Kameras beinhalten. Bei mindestens einer Ausführungsform können die Kameras beispielsweise und ohne Einschränkung Gigabit Multimedia Serial Link („GMSL“) und/oder eine Gigabit-Ethernet-Kommunikation unterstützen. Bei mindestens einer Ausführungsform kann jede Kameras eine sein, die zuvor hier mit Bezug auf 13A und 13B näher beschrieben ist.
  • Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 ferner Schwingungssensor(en) 1342 beinhalten. Bei mindestens einer Ausführungsform kann (können) der (die) Schwingungssensor(en) 1342 Schwingungen von Komponenten des Fahrzeugs 1300, wie z. B. der Achse(n), messen. Beispielsweise können bei mindestens einer Ausführungsform Änderungen der Schwingungen eine Änderung des Straßenbelags angeben. Wenn zwei oder mehr Schwingungssensoren 1342 verwendet werden, können bei mindestens einer Ausführungsform die Unterschiede zwischen den Schwingungen verwendet werden, um die Reibung oder den Schlupf des Straßenbelags zu bestimmen (z. B., wenn ein Unterschied der Schwingung zwischen einer leistungsbetriebenen Achse und einer sich frei drehenden Achse besteht).
  • Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 ein ADAS-System 1338 beinhalten. Bei mindestens einer Ausführungsform kann das ADAS-System 1338 bei einigen Beispielen ohne Einschränkung ein SoC aufweisen. Bei mindestens einer Ausführungsform kann das ADAS-System 1338 ohne Einschränkung eine beliebige Anzahl und Kombination eines autonomen/adaptiven/automatischen Geschwindigkeitsregelsystems („ACC“), eines kooperativen adaptiven Geschwindigkeitsregelsystems („CACC“), eines Vorwärtscrashwarnsystems („FCW“), eines automatischen Notbremssystems („AEB“) aufweisen, ein System zur Warnung vor dem Verlassen der Fahrspur („LDW“), ein Spurhalteassistent („LKA“), ein System zur Warnung vor dem toten Winkel („BSW“), ein System zur Warnung vor rückwärtigem Querverkehr („RCTW“), ein System zur Kollisionswarnung („CW“), ein System zur Zentrierung der Fahrspur („LC“) und/oder andere Systeme, Merkmale und/oder Funktionen beinhalten.
  • Bei mindestens einer Ausführungsform kann das ACC-System RADAR-Sensor(en) 1360, LIDAR-Sensor(en) 1364 und/oder eine beliebige Anzahl von Kameras verwenden. Bei mindestens einer Ausführungsform kann das ACC-System ein ACC-System in Längsrichtung und/oder ein ACC-System in Querrichtung beinhalten. Bei mindestens einer Ausführungsform überwacht und steuert ein ACC-System in Längsrichtung den Abstand zu einem unmittelbar vor dem Fahrzeug 1300 befindlichen anderen Fahrzeug und passt die Geschwindigkeit des Fahrzeugs 1300 automatisch an, um einen sicheren Abstand zu vorausfahrenden Fahrzeugen einzuhalten. Bei mindestens einer Ausführungsform führt das seitliche ACC-System die Abstandshaltung aus und rät dem Fahrzeug 1300, bei Bedarf die Fahrspur zu wechseln. Bei mindestens einer Ausführungsform steht eine Quer-ACC mit anderen ADAS-Anwendungen, wie etwa LC und CW, in Bezug.
  • Bei mindestens einer Ausführungsform verwendet das CACC-System Informationen von anderen Fahrzeugen, die über die Netzwerkschnittstelle 1324 und/oder die Funkantenne(n) 1326 von anderen Fahrzeugen über eine drahtlose Verbindung oder indirekt über eine Netzwerkverbindung (z. B. über das Internet) empfangen werden können. Bei mindestens einer Ausführungsform können direkte Verknüpfungen durch eine Fahrzeug-zu-Fahrzeug-Kommunikationsverknüpfung („V2V“-Kommunikationsverknüpfung) bereitgestellt werden, während indirekte Verknüpfungen durch eine Infrastruktur-zu-Fahrzeug-Kommunikationsverknüpfung („I2V“-Kommunikationsverknüpfung) bereitgestellt werden können. Im Allgemeinen stellt die V2V-Kommunikation Informationen über unmittelbar vorausfahrende Fahrzeuge (z. B. Fahrzeuge, die sich unmittelbar vor und auf derselben Spur wie Fahrzeug 1300 befinden) bereit, während die I2V-Kommunikation Informationen über den weiter vorausfahrenden Verkehr bereitstellt. Bei mindestens einer Ausführungsform kann ein CACC-System entweder eines oder beides von I2V- und V2V-Informationsquellen beinhalten. Bei mindestens einer Ausführungsform kann ein CACC-System angesichts der Informationen über vorausfahrende Fahrzeuge vor Fahrzeug 1300 zuverlässiger sein und es hat das Potenzial, den Verkehrsfluss zu verbessern und Staus auf der Straße zu reduzieren.
  • Bei mindestens einer Ausführungsform ist ein FCW-System derart konfiguriert, dass es einen Fahrer vor einer Gefahr warnt, sodass ein derartiger Fahrer eine korrigierende Maßnahme ergreifen kann. Bei mindestens einer Ausführungsform verwendet ein FCW-System eine nach vorne gerichtete Kamera und/oder RADAR-Sensor(en) 1360, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, der elektrisch gekoppelt ist, um dem Fahrer eine Rückmeldung bereitzustellen, z. B. mit einer Anzeige, einem Lautsprecher und/oder einer vibrierenden Komponente. Bei mindestens einer Ausführungsform kann ein FCW-System eine Warnung bereitstellen, z. B. in Form eines Tons, einer visuellen Warnung, einer Vibration und/oder eines schnellen Bremsimpulses.
  • Bei mindestens einer Ausführungsform erfasst ein AEB-System eine drohende Vorwärtskollision mit einem anderen Fahrzeug oder einem anderen Objekt und es kann automatisch die Bremsen betätigen, falls ein Fahrer nicht innerhalb eines spezifizierten Zeit- oder Abstandsparameters eine korrigierende Maßnahme ergreift. Bei mindestens einer Ausführungsform kann das AEB-System (eine) nach vorn gerichtete Kamera(s) und/oder RADAR-Sensor(en) 1360 verwenden, die mit einem speziellen Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind. Wenn ein AEB-System eine Gefahr erfasst, warnt es bei mindestens einer Ausführungsform typischerweise zuerst einen Fahrer, um eine korrigierende Maßnahme zu ergreifen, um eine Kollision zu vermeiden, und falls dieser Fahrer keine korrigierende Maßnahme ergreift, kann dieses AEB-System automatisch die Bremsen in dem Bestreben betätigen, einen Aufprall einer vorhergesagten Kollision zu verhindern oder mindestens abzuschwächen. Bei mindestens einer Ausführungsform kann das AEB-System Techniken wie etwa dynamische Bremsunterstützung und/oder Bremsung aufgrund eines bevorstehenden Zusammenstoßes beinhalten.
  • Bei mindestens einer Ausführungsform bietet ein LDW-System optische, akustische und/oder taktile Warnungen, wie z. B. Lenkrad- oder Sitzvibrationen, um den Fahrer zu warnen, wenn das Fahrzeug 1300 die Fahrbahnmarkierungen überquert. Bei mindestens einer Ausführungsform wird das LDW-System nicht aktiviert, wenn der Fahrer ein absichtliches Verlassen der Fahrspur anzeigt, indem er z. B. einen Blinker betätigt. Bei mindestens einer Ausführungsform kann das LDW-System nach vorne gerichtete Kameras verwenden, die mit einem speziellen Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, der/das elektrisch gekoppelt ist, um dem Fahrer eine Rückmeldung bereitzustellen, z. B. mit einer Anzeige, einem Lautsprecher und/oder einer vibrierenden Komponente. Bei mindestens einer Ausführungsform ist ein LKA-System eine Variante eines LDW-Systems. Bei mindestens einer Ausführungsform sorgt ein LKA-System für einen Lenkeingriff oder ein Bremsen, um das Fahrzeug 1300 zu korrigieren, wenn das Fahrzeug 1300 beginnt, seine Fahrspur zu verlassen.
  • Bei mindestens einer Ausführungsform erfasst und warnt ein BSW-System den Fahrer vor Fahrzeugen, die sich im toten Winkel des Fahrzeugs befinden. Bei mindestens einer Ausführungsform kann das BSW-System einen visuellen, akustischen und/oder taktilen Alarm bereitstellen, um anzugeben, dass das Einfädeln in oder Wechseln von Fahrspuren unsicher ist. Bei mindestens einer Ausführungsform kann ein BSW-System eine zusätzliche Warnung ausgeben, wenn der Fahrer einen Blinker betätigt. Bei mindestens einer Ausführungsform kann das BSW-System (eine) nach hinten gerichtete Kamera(s) und/oder (einen) RADAR-Sensor(s) 1360 verwenden, der/die mit einem speziellen Prozessor, DSP, FPGA und/oder ASIC gekoppelt ist/sind, der/die elektrisch mit dem Fahrerfeedback gekoppelt ist/sind, wie z. B. eine Anzeige, ein Lautsprecher und/oder eine vibrierende Komponente.
  • Bei mindestens einer Ausführungsform kann ein RCTW-System eine visuelle, akustische und/oder taktile Benachrichtigung bereitstellen, wenn ein Objekt außerhalb des Bereichs der Rückfahrkamera erfasst wird, wenn das Fahrzeug 1300 rückwärts fährt. Bei mindestens einer Ausführungsform beinhaltet ein RCTW-System ein AEB-System, um sicherzustellen, dass Fahrzeugbremsen betätigt werden, um einen Zusammenstoß zu vermeiden. Bei mindestens einer Ausführungsform kann das RCTW-System einen oder mehrere nach hinten gerichtete(n) RADAR-Sensor(en) 1360 verwenden, der/die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt ist/sind, der/die elektrisch gekoppelt ist/sind, um dem Fahrer eine Rückmeldung bereitzustellen, wie z. B. eine Anzeige, ein Lautsprecher und/oder eine vibrierende Komponente.
  • Bei 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 wirklich eine Sicherheitsbedingung vorliegt, und entsprechend zu handeln. Bei mindestens einer Ausführungsform entscheidet das Fahrzeug 1300 bei widersprüchlichen Ergebnissen selbst, ob das Ergebnis eines Primärrechners oder eines Sekundärrechners (z. B. einen ersten Controller oder einen zweiten Controller der Controller 1336) beachtet werden soll. Bei mindestens einer Ausführungsform kann das ADAS-System 1338 beispielsweise ein Backup- und/oder Sekundärrechner sein, der Wahrnehmungsinformationen an ein Rationalitätsmodul des Backup-Computers bereitstellt. Bei mindestens einer Ausführungsform kann ein Rationalitätsmonitor eines Reserve-Computers redundante diverse Software auf Hardware-Komponenten ausführen, um Fehler in der Wahrnehmung und bei dynamischen Fahr-Tasks zu erfassen. Bei mindestens einer Ausführungsform können die Ausgaben des ADAS-Systems 1338 an eine übergeordnete MCU weitergeleitet werden. Falls Ausgaben aus einem primären Computer und Ausgaben aus einem sekundären Computer einander widersprechen, bestimmt eine Überwachungs-MCU bei mindestens einer Ausführungsform, wie der Widerspruch beizulegen ist, um einen sicheren Betrieb sicherzustellen.
  • Bei mindestens einer Ausführungsform kann ein primärer Computer derart konfiguriert sein, dass er einer Überwachungs-MCU eine Konfidenzbewertung bereitstellt, die eine Konfidenz dieses primären Computers für ein gewähltes Ergebnis angibt. Falls diese Konfidenzbewertung einen Schwellenwert überschreitet, kann diese Überwachungs-MCU bei mindestens einer Ausführungsform der Führung dieses primären Computers folgen, unabhängig davon, ob dieser sekundäre Computer ein widersprüchliches oder inkonsistentes Ergebnis bereitstellt. Bei 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 Überwachungs-MCU zwischen den Computern vermitteln, um ein zweckmäßiges Resultat zu bestimmen.
  • Bei mindestens einer Ausführungsform kann eine Überwachungs-MCU derart konfiguriert sein, dass sie neuronale(s) Netz(e) ausführt, die dafür trainiert und konfiguriert sind, mindestens zum Teil basierend auf Ausgaben aus einem primären Computer und Ausgaben aus einem sekundären Computer die Bedingungen zu bestimmen, unter denen dieser sekundäre Computer Fehlalarme bereitstellt. Bei mindestens einer Ausführungsform können neuronale Netz(e) in einer Überwachungs-MCU lernen, wann der Ausgabe eines sekundären Computers vertraut werden kann und wann nicht. Zum Beispiel können bei mindestens einer Ausführungsform, wenn dieser sekundäre Computer ein RADAR-basiertes FCW-System ist, neuronale Netz(e) in einer Überwachungs-MCU lernen, wann ein FCW-System metallische Objekte identifiziert, die tatsächlich keine Gefahren sind, wie etwa ein Abflussgitter oder ein Gullydeckel, das/der einen Alarm auslöst. Wenn ein sekundärer Computer ein kamerabasiertes LDW-System ist, kann bei mindestens einer Ausführungsform ein neuronales Netzwerk in einer Überwachungs-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. Bei mindestens einer Ausführungsform kann eine Überwachungs-MCU mindestens eines von einem DLA oder einer GPU beinhalten, der/die zum Ausführen von neuronalen Netz(en) mit assoziiertem Speicher geeignet ist. Bei mindestens einer Ausführungsform kann die überwachende MCU eine Komponente des/der SoC(s) 1304 umfassen und/oder als eine Komponente von SoC(s) beinhaltet sein.
  • Bei mindestens einer Ausführungsform kann das ADAS-System 1338 einen sekundären Computer beinhalten, der die ADAS-Funktionalität unter Verwendung der traditionellen Computer-Vision-Regeln ausführt. Bei mindestens einer Ausführungsform kann dieser sekundäre Computer klassische Computer-Vision-Regeln (wenn-dann) verwenden und das Vorhandensein eines neuronalen Netz(en) in einer Überwachungs-MCU die Zuverlässigkeit, Sicherheit und Rechenleistung verbessern. Zum Beispiel macht bei mindestens einer Ausführungsform die diverse Implementation und absichtliche Nicht-Identität ein Gesamtsystem fehlertoleranter, insbesondere gegenüber Fehlern, die durch die Funktionalität von Software (oder Software-Hardware-Schnittstellen) verursacht werden. Falls beispielsweise bei mindestens einer Ausführungsform ein Software-Bug oder -Fehler in der auf einem primären Computer laufenden Software vorliegt und ein nicht identischer Software-Code, der auf einem sekundären Computer läuft, ein konsistentes Gesamtergebnis bereitstellt, dann kann eine Überwachungs-MCU eine größere Konfidenz dafür aufweisen, dass ein Gesamtergebnis korrekt ist und ein Bug in der Software oder Hardware auf diesem primären Computer keinen wesentlichen Fehler verursacht.
  • Bei mindestens einer Ausführungsform kann ein Ausgabe des ADAS-Systems 1338 in den Wahrnehmungsblock des Primärrechners und/oder den Block für dynamische Fahr-Tasks des Primärrechners eingespeist werden. Wenn beispielsweise bei mindestens einer Ausführungsform das ADAS-System 1338 eine Vorwärtscrash-Warnung aufgrund eines unmittelbar vorausliegenden Objekts anzeigt, kann der Wahrnehmungsblock diese Information bei der Identifikation von Objekten verwenden. Bei mindestens einer Ausführungsform kann ein sekundärer Computer ein eigenes neuronales Netzwerk aufweisen, das trainiert wird und somit ein Risiko von falsch positiven Ergebnissen reduziert, wie hierin beschrieben.
  • Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 darüber hinaus ein Infotainment-SoC 1330 aufweisen (z. B. ein bordeigenes Infotainment-System (IVI)). Obwohl es als SoC veranschaulicht und beschrieben ist, kann das Infotainment-SoC 1330 bei mindestens einer Ausführungsform kein SoC sein und kann ohne Einschränkung zwei oder mehr diskrete Komponenten aufweisen. Bei mindestens einer Ausführungsform kann das Infotainment-SoC 1330 ohne Einschränkung eine Kombination aus Hardware und Software beinhalten, die verwendet werden kann, um dem Fahrzeug 1300 Audio (z. B. Musik, einen persönlichen digitalen Assistenten, Navigationsanweisungen, Nachrichten, Radio usw.), Video (z. B. TV, Filme, Streaming usw.), Telefon (z. B. Freisprechen), Netzverbindungsfähigkeit (z. B. LTE, WiFi usw.) und/oder Informationsdienste (z. B. Navigationssysteme, Rückwärtseinparkhilfe, ein Radiodatensystem, fahrzeugbezogene Informationen wie etwa Kraftstofffüllstand, insgesamt zurückgelegte Strecke, Bremskraftstofffüllstand, Ölfüllstand, Tür öffnen/schließen, Luftfilterinformationen usw.) bereitzustellen. Das Infotainment-SoC 1330 könnte beispielsweise Radios, Plattenspieler, Navigationssysteme, Videoplayer, eine USB- und Bluetooth-Konnektivität, Carputer, In-Car-Entertainment, WiFi, Audiobedienelemente am Lenkrad, eine Freisprechvorrichtung, ein Heads-up-Display („HUD“), eine HMI-Anzeige 1334, eine Telematikvorrichtung, ein Bedienfeld (z. B. zur Steuerung und/oder Interaktion mit verschiedenen Komponenten, Funktionen und/oder Systemen) und/oder andere Komponenten beinhalten. Bei mindestens einer Ausführungsform kann das Infotainment-SoC 1330 darüber hinaus dazu verwendet werden, dem/den Benutzer(n) des Fahrzeugs 1300 Informationen (z. B. visuell und/oder akustisch) bereitzustellen, wie z. B. Informationen vom ADAS-System 1338, Informationen zum autonomen Fahren, wie z. B. geplante Fahrzeugmanöver, Trajektorien, Umgebungsinformationen (z. B. Kreuzungsinformationen, Fahrzeuginformationen, Straßeninformationen, usw.), und/oder andere Informationen.
  • Bei mindestens einer Ausführungsform kann das Infotainment-SoC 1330 eine beliebige Menge und Art von GPU-Funktionalität beinhalten. Bei mindestens einer Ausführungsform kann das Infotainment-SoC 1330 über den Bus 1302 mit anderen Einrichtungen, Systemen und/oder Komponenten des Fahrzeugs 1300 kommunizieren. Bei mindestens einer Ausführungsform kann das Infotainment-SoC 1330 mit einer Überwachungs-MCU derart gekoppelt sein, dass eine GPU des Infotainment-Systems einige Selbstfahrfunktionen ausführen kann, falls der (die) die primäre(n) Controller 1336 (z. B. Primär- und/oder Backup-Computer des Fahrzeugs 1300) ausfallen. Bei mindestens einer Ausführungsform kann das Infotainment-SoC 1330 das Fahrzeug 1300 in einen Chauffeur-zu-sicherem-Halt-Modus versetzen, wie es hier beschrieben ist.
  • Bei mindestens einer Ausführungsform kann das Fahrzeug 1300 darüber hinaus ein Kombiinstrument 1332 aufweisen (z. B. ein digitales Armaturenbrett, ein elektronisches Kombiinstrument, eine digitale Instrumententafel usw.). Bei mindestens einer Ausführungsform kann das Kombiinstrument 1332 ohne Einschränkung einen Controller und/oder einen Supercomputer (z. B. einen diskreten Controller oder einen Supercomputer) aufweisen. Bei mindestens einer Ausführungsform kann das Kombiinstrument 1332 ohne Einschränkung eine beliebige Anzahl und Kombination von Instrumenten aufweisen, wie z. B. Tachometer, Kraftstoffstand, Öldruck, Drehzahlmesser, Kilometerzähler, Blinker, Schaltstellungsanzeige, Sicherheitsgurtwarnleuchte(n), Parkbremswarnleuchte(n), Motorstörungsleuchte(n), Informationen über zusätzliche Rückhaltesysteme (z. B. Airbags), Beleuchtungssteuerungen, Sicherheitssystemsteuerungen, Navigationsinformationen usw. Bei einigen Beispielen können die Informationen auf dem Infotainment-SoC 1330 und dem Kombiinstrument 1332 angezeigt und/oder gemeinsam genutzt werden. Bei mindestens einer Ausführungsform kann das Kombiinstrument 1332 einen Teil des Infotainment-SoC 1330 aufweisen, oder umgekehrt.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in dem System der 13C für Inferencing- oder Vorhersageoperationen verwendet werden, die mindestens zum Teil auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden. Bei verschiedenen Ausführungsformen verwendet die Inferenz- und/oder Trainingslogik 1015 die durch die Offline-Bildsignalverarbeitung 240 generierten Zielbilddaten, wie oben in Verbindung mit 2 beschrieben. Zusätzlich wird die Datensammlung 202, die oben in Verbindung mit 2 beschrieben ist, bei verschiedenen Ausführungsformen von dem Fahrzeug 1300 ausgeführt werden.
  • 13D ist ein Diagramm eines Systems für die Kommunikation zwischen dem/den Cloud-basierten Server(n) und dem autonomen Fahrzeug 1300 der 13A, gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform kann das System ohne Einschränkung den/die Server 1378, das/die Netzwerk(e) 1390 und eine beliebige Anzahl und Art von Fahrzeugen, einschließlich des Fahrzeugs 1300, aufweisen. Bei mindestens einer Ausführungsform kann (können) der (die) Server 1378 ohne Einschränkung eine Vielzahl von GPUs 1384(A)-1384(D) (hierin kollektiv als GPUs 1384 bezeichnet), PCIe-Switches 1382(A)-1382(H) (hierin kollektiv als PCIe-Switches 1382 bezeichnet), und/oder CPUs 1380(A)-1380(B) (hierin kollektiv als CPUs 1380 bezeichnet) aufweisen. Bei mindestens einer Ausführungsform können GPUs 1384, CPUs 1380 und PCIe-Switches 1382 über Hochgeschwindigkeitsverbindungen miteinander verbunden sein, wie z. B. und ohne Einschränkung über die von NVIDIA entwickelten NVLink-Schnittstellen 1388 und/oder PCIe-Verbindungen 1386. Bei mindestens einer Ausführungsform sind die GPUs 1384 über ein NVLink- und/oder NVSwitch-SoC und die GPUs 1384 und PCIe-Switches 1382 über PCIe-Verbindungen verbunden. Obwohl acht GPUs 1384, zwei CPUs 1380 und vier PCIe-Switches 1382 veranschaulicht sind, ist dies nicht als Einschränkung zu verstehen. Bei mindestens einer Ausführungsform kann jeder der Server 1378 ohne Einschränkung eine beliebige Anzahl von GPUs 1384, CPUs 1380 und/oder PCIe-Switches 1382 in beliebiger Kombination beinhalten. Bei mindestens einer Ausführungsform kann/können der/die Server 1378 beispielsweise jeweils acht, sechzehn, zweiunddreißig und/oder mehr GPUs 1384 beinhalten.
  • Bei mindestens einer Ausführungsform kann der/können die Server 1378 über die Netz(e) 1390 und von Fahrzeugen Bilddaten empfangen, die für Bilder repräsentativ sind, die unerwartete oder veränderte Straßenbedingungen zeigen, wie etwa kürzlich begonnene Straßenarbeiten. Bei mindestens einer Ausführungsform kann/können der/die Server 1378 über das/die Netzwerk(e) 1390 und an Fahrzeuge neuronale Netzwerke 1392, aktualisiert oder anderswie und/oder Karteninformationen 1394 übertragen, die ohne Einschränkung Informationen über den Verkehr und die Straßenbedingungen beinhalten. Bei mindestens einer Ausführungsform können die Aktualisierungen der Karteninformationen 1394 ohne Einschränkung Aktualisierungen für die HD-Karte 1322 beinhalten, z. B. Informationen zu Baustellen, Schlaglöchern, Umleitungen, Überschwemmungen und/oder anderen Hindernissen. Bei mindestens einer Ausführungsform können neuronale Netzwerke 1392 und/oder Karteninformationen 1394 aus neuem Training und/oder Erfahrungen resultieren, die in Daten repräsentiert sind, die von einer beliebigen Anzahl von Fahrzeugen in der Umgebung empfangen wurden, und/oder mindestens zum Teil auf einem Training basieren, das in einem Rechenzentrum ausgeführt wurde (z. B. unter Verwendung von Server(n) 1378 und/oder anderen Servern).
  • Bei mindestens einer Ausführungsform kann/können der/die Server 1378 verwendet werden, um Modelle zum maschinellen Lernen (z. B. neuronale Netzwerke) mindestens zum Teil basierend auf Trainingsdaten zu trainieren. Bei mindestens einer Ausführungsform können die Trainingsdaten von Fahrzeugen generiert werden und/oder können sie in einer Simulation (z. B. unter Verwendung einer Spiele-Engine) generiert werden. Bei 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. Bei 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). Bei mindestens einer Ausführungsform können, sobald Modelle zum maschinellen Lernen trainiert sind, Modelle zum maschinellen Lernen von Fahrzeugen verwendet werden (z. B. Übertragung an Fahrzeuge über Netzwerk(e) 1390, und/oder Modelle zum maschinellen Lernen können von Server(n) 1378 zur Fernüberwachung von Fahrzeugen verwendet werden.
  • Bei mindestens einer Ausführungsform kann (können) der (die) Server 1378 Daten von Fahrzeugen empfangen und Daten auf aktuelle neuronale Echtzeit-Netzwerke für intelligentes Inferencing in Echtzeit anwenden. Bei mindestens einer Ausführungsform kann/können der/die Server 1378 Deep-Learning-Supercomputer und/oder dedizierte Kl-Computer beinhalten, die von GPU(s) 1384 angetrieben werden, wie z. B. die von NVIDIA entwickelten DGX- und DGX-Station-Maschinen. Bei mindestens einer Ausführungsform kann/können der/die Server 1378 jedoch eine Deep-Learning-Infrastruktur beinhalten, die CPU-betriebene Rechenzentren verwendet.
  • Bei mindestens einer Ausführungsform kann die Deep-Learning-Infrastruktur des/der Server(s) 1378 zum schnellen Echtzeit-Inferenzieren in der Lage sein und diese Fähigkeit verwenden, um den Zustand von Prozessoren, Software und/oder assoziierter Hardware in dem Fahrzeug 1300 zu bewerten und zu verifizieren. Bei mindestens einer Ausführungsform kann die Deep-Learning-Infrastruktur beispielsweise periodische Aktualisierungen vom Fahrzeug 1300 erhalten, wie etwa eine Bildsequenz und/oder Objekte, die das Fahrzeug 1300 in dieser Bildsequenz lokalisiert hat (z. B. über Computer Vision und/oder andere maschinelle Objektklassifizierungstechniken). Bei mindestens einer Ausführungsform kann die Deep-Learning-Infrastruktur ihr eigenes neuronales Netzwerk laufen lassen, um Objekte zu identifizieren und sie mit den vom Fahrzeug 1300 identifizierten Objekten zu vergleichen, und wenn die Ergebnisse nicht übereinstimmen und die Deep-Learning-Infrastruktur zu dem Schluss kommt, dass die KI in dem Fahrzeug 1300 eine Fehlfunktion aufweist, kann/können der/die Server 1378 ein Signal an das Fahrzeug 1300 senden, das einen ausfallsicheren Computer des Fahrzeugs 1300 anweist, die Steuerung zu übernehmen, die Fahrgäste zu benachrichtigen und ein sicheres Parkmanöver auszuführen.
  • Bei mindestens einer Ausführungsform kann/können der/die Server 1378 GPU(s) 1384 und einen oder mehrere programmierbare Inferenzbeschleuniger (z. B. NVIDIAs TensorRT 3) beinhalten. Bei mindestens einer Ausführungsform kann eine Kombination von GPU-angetriebenen Servern und Inferenzbeschleunigung eine Reaktionsfähigkeit in Echtzeit ermöglichen. Bei 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 Inferenz verwendet werden. Bei mindestens einer Ausführungsform wird (werden) die Hardwarestruktur(en) 1015 zur Ausführung einer oder mehrerer Ausführungsformen verwendet. Einzelheiten über die Hardwarestruktur(en) 1015 sind in Verbindung mit den 10A und/oder 10B beschrieben.
  • COMPUTERSYSTEME
  • 14 ist ein Blockdiagramm, das ein beispielhaftes Computersystem veranschaulicht, das ein System mit miteinander verbundenen Einrichtungen und Komponenten, ein System-on-a-Chip (SOC) oder eine Kombination davon sein kann, das gemäß mindestens einer Ausführungsform einen Prozessor aufweist, der Ausführungseinheiten zur Ausführung einer Anweisung beinhalten kann. Bei mindestens einer Ausführungsform kann das Computersystem 1400 ohne Einschränkung eine Komponente, wie z. B. einen Prozessor 1402, beinhalten, um Ausführungseinheiten einschließlich Logik zur Ausführung von Algorithmen zur Verarbeitung von Daten gemäß der vorliegenden Offenbarung einzusetzen, wie z. B. bei der hierin beschriebenen Ausführungsform. Bei mindestens einer Ausführungsform kann das Computersystem 1400 Prozessoren beinhalten, wie etwa die PENTIUM®-Prozessorfamilie, die Mikroprozessoren Xeon™, Itanium®, XScale™ und/oder StrongARM™, Intel® Core™ oder Intel® Nervana™, die von der Intel Corporation in Santa Clara, Kalifornien, erhältlich sind, obwohl auch andere Systeme (einschließlich PCs, die andere Mikroprozessoren, Engineering-Arbeitsstationen, Set-Top-Boxen und dergleichen aufweisen) verwendet werden können. Bei mindestens einer Ausführungsform kann das Computersystem 1400 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 etwa tragbaren Vorrichtungen und eingebetteten Anwendungen, verwendet werden. Einige Beispiele für tragbare Einrichtungen beinhalten Mobiltelefone, Internetprotokollgeräte, Digitalkameras, persönliche digitale Assistenten („PDAs“) und Handheld-PCs. Bei mindestens einer Ausführungsform können eingebettete Anwendungen einen Mikrocontroller, einen digitalen Signalprozessor („DSP“), ein System auf einem Chip, Netzwerkcomputer („NetPCs“), Set-Top-Boxen, Netzwerk-Hubs, Wide-Area-Network-Switches („WAN“) oder jedes andere System beinhalten, das eine oder mehrere Anweisungen gemäß mindestens einer Ausführungsform ausführen kann.
  • Bei mindestens einer Ausführungsform kann das Computersystem 1400 ohne Einschränkung den Prozessor 1402 beinhalten, der ohne Einschränkung eine oder mehrere Ausführungseinheiten 1408 beinhalten kann, um Trainieren und/oder Inferenzieren eines Modells des maschinellen Lernens gemäß den hierin beschriebenen Techniken auszuführen. Bei mindestens einer Ausführungsform ist das Computersystem 1400 ein Einzelprozessor-Desktop- oder -Serversystem, aber bei einer anderen Ausführungsform kann das Computersystem 1400 ein Multiprozessorsystem sein. Bei mindestens einer Ausführungsform kann der Prozessor 1402 ohne Einschränkung einen CISC-Mikroprozessor (Complex Instruction Set Computer), einen RISC-Mikroprozessor (Reduced Instruction Set Computing), einen VLIW-Mikroprozessor (Very Long Instruction Word), einen Prozessor, der eine Kombination von Befehlssätzen umsetzt, oder eine beliebige andere Einrichtung, wie z. B. einen digitalen Signalprozessor, beinhalten. Bei mindestens einer Ausführungsform kann der Prozessor 1402 mit einem Prozessorbus 1410 verbunden sein, der Datensignale zwischen dem Prozessor 1402 und anderen Komponenten im Computersystem 1400 übertragen kann.
  • Bei mindestens einer Ausführungsform kann der Prozessor 1402 ohne Einschränkung einen internen Level 1 („L1“) Cache-Speicher („Cache“) 1404 aufweisen. Bei mindestens einer Ausführungsform kann der Prozessor 1402 einen einzigen internen Cache oder mehrere Ebenen eines internen Caches aufweisen. Bei mindestens einer Ausführungsform kann sich der Cache-Speicher außerhalb des Prozessors 1402 befinden. Andere Ausführungsformen können auch eine Kombination aus internen und externen Caches beinhalten, abhängig von der jeweiligen Umsetzung und den Bedürfnissen. Bei mindestens einer Ausführungsform kann die Registerdatei 1406 verschiedene Datentypen in verschiedenen Registern speichern, einschließlich, ohne Einschränkung, Ganzzahlregister, Gleitkommaregister, Statusregister und Anweisungszeigerregister.
  • Bei mindestens einer Ausführungsform befindet sich die Ausführungseinheit 1408, die ohne Einschränkung eine Logik zur Ausführung von Ganzzahl- und Gleitkommaoperationen beinhaltet, ebenfalls im Prozessor 1402. Bei mindestens einer Ausführungsform kann der Prozessor 1402 auch einen Nur-LeseSpeicher („ROM“) für Mikrocode („ucode“) aufweisen, der Mikrocode für bestimmte Makroanweisungen speichert. Bei mindestens einer Ausführungsform kann die Ausführungseinheit 1408 eine Logik zur Handhabung eines gepackten Anweisungssatzes 1409 beinhalten. Bei mindestens einer Ausführungsform können durch das Vorhandensein eines gepackten Anweisungssatzes 1409 in einem Anweisungssatz eines Mehrzweckprozessors gemeinsam mit einer assoziierten Schaltungsanordnung zur Ausführung von Anweisungen die von vielen Multimedia-Anwendungen verwendeten Operationen unter Verwendung gepackter Daten in einem Mehrzweckprozessor 1402 ausgeführt werden. Bei einer oder mehreren Ausführungsformen können viele Multimedia-Anwendungen beschleunigt und effizienter ausgeführt werden, indem eine volle Breite des Datenbusses eines Prozessors zum Ausführen von Operationen an gepackten Daten verwendet wird, wodurch die Notwendigkeit entfallen kann, kleinere Dateneinheiten über den Datenbus dieses Prozessors zu übermitteln, um eine oder mehrere Operationen an einem Datenelement nach dem anderen auszuführen.
  • Bei mindestens einer Ausführungsform kann die Ausführungseinheit 1408 auch in Mikrocontrollern, eingebetteten Prozessoren, Grafikvorrichtungen, DSPs und anderen Arten von Logikschaltungen verwendet werden. Bei mindestens einer Ausführungsform kann das Computersystem 1400, ohne Einschränkung, einen Speicher 1420 aufweisen. Bei mindestens einer Ausführungsform kann der Speicher 1420 eine dynamische Random-Access-Memory- („DRAM“) Einrichtung, statische Random-Access-Memory- („SRAM“) Einrichtung, Flash-Speichervorrichtung oder eine andere Speichervorrichtung sein. Bei mindestens einer Ausführungsform kann der Speicher 1420 (eine) Anweisung(en) 1419 und/oder Daten 1421 speichern, die durch Datensignale dargestellt werden, die vom Prozessor 1402 ausgeführt werden können.
  • Bei mindestens einer Ausführungsform kann der Systemlogikchip mit dem Prozessorbus 1410 und dem Speicher 1420 verbunden sein. Bei mindestens einer Ausführungsform kann der Systemlogikchip ohne Einschränkung einen Speicher-Controller-Hub („MCH“) 1416 aufweisen, und der Prozessor 1402 kann mit dem MCH 1416 über den Prozessorbus 1410 kommunizieren. Bei mindestens einer Ausführungsform kann der MCH 1416 einen Speicherpfad 1418 mit hoher Bandbreite zum Speicher 1420 für die Anweisungs- und Datenspeicherung sowie für die Speicherung von Grafikbefehlen, Daten und Texturen bereitstellen. Bei mindestens einer Ausführungsform kann der MCH 1416 Datensignale zwischen dem Prozessor 1402, dem Speicher 1420 und anderen Komponenten im Computersystem 1400 leiten und Datensignale zwischen dem Prozessorbus 1410, dem Speicher 1420 und einer System-E/A-Schnittstelle 1422 überbrücken. Bei mindestens einer Ausführungsform kann ein Systemlogikchip einen Grafikport zum Koppeln an eine Grafiksteuerung bereitstellen. Bei mindestens einer Ausführungsform kann der MCH 1416 über einen Speicherpfad 1418 mit hoher Bandbreite mit dem Speicher 1420 gekoppelt sein, und die Grafik-/Videokarte 1412 kann über eine AGP-Verbindung 1414 mit dem MCH 1416 gekoppelt sein.
  • Bei mindestens einer Ausführungsform kann das Computersystem 1400 die System-E/A-Schnittstelle 1422 als einen proprietären Hub-Interface-Bus verwenden, um den MCH 1416 mit einem E/A-Controller-Hub („ICH“) 1430 zu koppeln. Bei mindestens einer Ausführungsform kann der ICH 1430 direkte Verbindungen zu einigen E/A-Einrichtungen über einen lokalen E/A-Bus bereitstellen. Bei mindestens einer Ausführungsform kann der lokale E/A-Bus ohne Einschränkung einen Hochgeschwindigkeits-E/A-Bus zur Verbindung von Peripheriegeräten mit dem Speicher 1420, dem Chipsatz und dem Prozessor 1402 aufweisen. Beispiele können unter anderem einen Audiocontroller 1429, einen Firmware-Hub („Flash-BIOS“) 1428, einen drahtlosen Transceiver 1426, einen Datenspeicher 1424, einen Legacy-E/A-Controller 1423 mit Benutzereingabe- und Tastaturschnittstellen 1425, einen seriellen Erweiterungsanschluss 1427, wie einen Universal Serial Bus („USB“) -Anschluss, und eine Netzwerksteuerung 1434 aufweisen. Bei mindestens einer Ausführungsform kann der Datenspeicher 1424 ein Festplattenlaufwerk, ein Diskettenlaufwerk, eine CD-ROM-Einrichtung, eine Flash-Speichervorrichtung oder eine andere Massenspeichervorrichtung umfassen.
  • Bei mindestens einer Ausführungsform veranschaulicht 14 ein System, das miteinander verbundene Hardware-Einrichtungen oder „Chips“ aufweist, während bei anderen Ausführungen 14 ein beispielhaftes SoC veranschaulichen kann. Bei mindestens einer Ausführungsform können die in 14 veranschaulichten Vorrichtungen mit proprietären Interconnects, standardisierten Interconnects (z. B. PCle) oder einer Kombination davon zusammengeschaltet sein. Bei mindestens einer Ausführungsform sind eine oder mehrere Komponenten des Computersystems 1400 über Compute-Express-Link-Verbindungen (CXL-Verbindungen) miteinander verbunden.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform kann die Interferenz- und/oder Trainingslogik 1015 in dem System der 14 für Inferenz- oder Vorhersage-Vorgänge verwendet werden, die mindestens zum Teil auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden.
  • 15 ist ein Blockdiagramm, das eine elektronische Vorrichtung 1500 zum Nutzen eines Prozessors 1510 gemäß mindestens einer Ausführungsform veranschaulicht. Bei mindestens einer Ausführungsform kann die elektronische Vorrichtung 1500 beispielsweise und ohne Einschränkung ein Notebook, ein Tower-Server, ein Rack-Server, ein Blade-Server, ein Laptop, ein Desktop, ein Tablet, eine mobile Vorrichtung, ein Telefon, ein eingebetteter Computer oder eine beliebige andere geeignete elektronische Vorrichtung sein.
  • Bei mindestens einer Ausführungsform kann die elektronische Einrichtung 1500 ohne Einschränkung einen Prozessor 1510 beinhalten, der kommunikativ mit einer beliebigen Anzahl oder Art von Komponenten, Peripheriegeräten, Modulen oder Einrichtungen verbunden ist. Bei mindestens einer Ausführungsform ist der Prozessor 1510 über einen Bus oder eine Schnittstelle gekoppelt, wie z. B. über einen I2C-Bus, einen System-Management-Bus („SMBus“), einen Low-Pin-Count-Bus (LPC), ein Serial-Peripheral-Interface („SPI“), einen High-Definition-Audio-Bus („HDA“), einen Serial-Advance-Technology-Attachment-Bus („SATA“), einen Universal-Serial-Bus („USB“) (Versionen 1, 2, 3, usw.) oder einen Universal-Asynchronous-Receiver/Transmitter-Bus („UART“). Bei mindestens einer Ausführungsform veranschaulicht 15 ein System, das miteinander verbundene Hardware-Einrichtungen oder „Chips“ beinhaltet, während bei anderen Ausführungen 15 ein beispielhaftes System on a Chip („SoC“) veranschaulichen kann. Bei mindestens einer Ausführungsform können die in 15 veranschaulichten Vorrichtungen mit proprietären Interconnects, standardisierten Interconnects (z. B. PCle) oder einer Kombination davon zusammengeschaltet sein. Bei mindestens einer Ausführungsform sind eine oder mehrere Komponenten der 15 über Compute-Express-Link-Verbindungen (CXL-Verbindungen) miteinander verbunden.
  • Bei mindestens einer Ausführungsform kann 15 eine Anzeige 1524, einen Touchscreen 1525, ein Touchpad 1530, eine Near Field Communications-Einheit („NFC“) 1545, einen Sensor-Hub 1540, einen Wärmesensor 1546, einen Express-Chipsatz („EC“) 1535, ein Trusted Platform Module („TPM“) 1538, BIOS/Firmware/Flash-Speicher („BIOS, FW Flash“) 1522, ein DSP 1560, ein Laufwerk 1520 wie eine Solid State Disk („SSD“) oder eine Festplatte („HDD“), eine drahtlose lokale Netzwerkeinheit („WLAN“) 1550, eine Bluetooth-Einheit 1552, eine drahtlose Wide Area Network-Einheit („WWAN“) 1556, ein Global Positioning System (GPS) -Einheit 1555, eine Kamera („USB 3. 0-Kamera“) 1554, wie z. B. eine USB 3.0-Kamera, und/oder eine Low Power Double Data Rate-Speichereinheit („LPDDR“-Speichereinheit) („LPDDR3“) 1515, die z. B. im LPDDR3-Standard umgesetzt ist, beinhalten. Diese Komponenten können in jeder geeigneten Weise umgesetzt werden.
  • Bei mindestens einer Ausführungsform können andere Komponenten durch hierin beschriebene Komponenten kommunikativ an den Prozessor 1510 gekoppelt sein. Bei mindestens einer Ausführungsform können ein Beschleunigungsmesser 1541, ein Umgebungslichtsensor („ALS“) 1542, ein Kompass 1543 und ein Gyroskop 1544 kommunikativ mit dem Sensor-Hub 1540 verbunden sein. Bei mindestens einer Ausführungsform können ein Wärmesensor 1539, ein Lüfter 1537, eine Tastatur 1536 und ein Touchpad 1530 kommunikativ mit dem EC 1535 verbunden sein. Bei mindestens einer Ausführungsform können Lautsprecher 1563, ein Kopfhörer 1564 und ein Mikrofon („mic“) 1565 kommunikativ mit einer Audioeinheit („audio codec and dass D amp“) 1562 gekoppelt sein, die ihrerseits kommunikativ mit dem DSP 1560 gekoppelt sein kann. Bei mindestens einer Ausführungsform kann die Audioeinheit 1562 beispielsweise und ohne Einschränkung einen Audiocodierer/-decoder („Codec“) und einen Verstärker der Klasse D beinhalten. Bei mindestens einer Ausführungsform kann die SIM-Karte („SIM“) 1557 mit der WWAN-Einheit 1556 kommunikativ gekoppelt sein. Bei mindestens einer Ausführungsform können Komponenten wie die WLAN-Einheit 1550 und die Bluetooth-Einheit 1552 sowie die WWAN-Einheit 1556 in einem Next Generation Form Factor („NGFF“) umgesetzt sein.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform kann die Interferenz- und/oder Trainingslogik 1015 in dem System der 15 für Inferenz- oder Vorhersage-Vorgänge verwendet werden, die mindestens zum Teil auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden. Bei verschiedenen Ausführungsformen verwendet die Inferenz- und/oder Trainingslogik 1015 die durch die Offline-Bildsignalverarbeitung 240 generierten Zielbilddaten, wie oben in Verbindung mit 2 beschrieben. Zusätzlich wird die Datensammlung 202, die oben in Verbindung mit 2 beschrieben ist, bei verschiedenen Ausführungsformen von dem Fahrzeug 1300 ausgeführt werden.
  • 16 veranschaulicht ein Computersystem 1600 gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform ist das Computersystem 1600 konfiguriert, um verschiedene in dieser Offenbarung beschriebene Prozesse und Verfahren umzusetzen.
  • Bei mindestens einer Ausführungsform umfasst das Computersystem 1600 ohne Einschränkung mindestens eine Zentraleinheit („CPU“) 1602, die an einen Kommunikationsbus 1610 angeschlossen ist, der unter Verwendung eines beliebigen geeigneten Protokolls umgesetzt ist, wie PCI („Peripheral Component Interconnect“), Peripheral Component Interconnect Express („PCI-Express“), AGP („Accelerated Graphics Port“), HyperTransport oder ein anderes Bus- oder Punkt-zu-Punkt-Kommunikationsprotokoll. Bei mindestens einer Ausführungsform weist das Computersystem 1600 ohne Einschränkung einen Hauptspeicher 1604 und eine Steuerlogik auf (z. B. umgesetzt als Hardware, Software oder eine Kombination davon), und die Daten werden im Hauptspeicher 1604 gespeichert, der die Form eines Direktzugriffsspeichers („RAM“) annehmen kann. Bei mindestens einer Ausführungsform stellt ein Netzwerkschnittstellen-Subsystem („Netzwerkschnittstelle“) 1622 eine Schnittstelle zu anderen Rechenvorrichtungen und Netzwerken bereit, um Daten mit dem Computersystem 1600 zu empfangen und an andere Systeme zu übermitteln.
  • Bei mindestens einer Ausführungsform beinhaltet das Computersystem 1600 ohne Einschränkung bei mindestens einer Ausführungsform Eingabevorrichtungen 1608, ein Parallelverarbeitungssystem 1612 und Anzeigevorrichtungen 1606, die unter Verwendung einer herkömmlichen Kathodenstrahlröhre (Cathode Ray Tube - „CRT“), einer Flüssigkristallanzeige (Liquid Crystal Display - „LCD“), einer Anzeige mit Leuchtdioden (Light Emitting Diode - „LED“), einer Plasmaanzeige oder anderer geeigneter Anzeigetechnologien umgesetzt sein können. Bei mindestens einer Ausführungsform werden Benutzereingaben von Eingabevorrichtungen 1608, wie Tastatur, Maus, Touchpad, Mikrofon usw., empfangen. Bei mindestens einer Ausführungsform kann jedes hier beschriebene Modul auf einer einzigen Halbleiterplattform angeordnet sein, um ein Verarbeitungssystem zu bilden.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform kann die Interferenz- und/oder Trainingslogik 1015 in dem System der 16 für Inferenz- oder Vorhersage-Vorgänge verwendet werden, die mindestens zum Teil auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden. Bei verschiedenen Ausführungsformen verwendet die Inferenz- und/oder Trainingslogik 1015 die durch die Offline-Bildsignalverarbeitung 240 generierten Zielbilddaten, wie oben in Verbindung mit 2 beschrieben. Zusätzlich wird die Datensammlung 202, die oben in Verbindung mit 2 beschrieben ist, bei verschiedenen Ausführungsformen von dem Fahrzeug 1300 ausgeführt werden.
  • 17 veranschaulicht ein Computersystem 1700 gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform beinhaltet das Computersystem 1700, ohne Einschränkung, einen Computer 1710 und einen USB-Stick 1720. Bei mindestens einer Ausführungsform kann der Computer 1710 ohne Einschränkung eine beliebige Anzahl und Art von Prozessor(en) (nicht dargestellt) und einen Speicher (nicht dargestellt) beinhalten. Bei mindestens einer Ausführungsform beinhaltet der Computer 1710, ohne Einschränkung, einen Server, eine Cloud-Instanz, einen Laptop und einen Desktop-Computer.
  • Bei mindestens einer Ausführungsform beinhaltet der USB-Stick 1720, ohne Einschränkung, eine Verarbeitungseinheit 1730, eine USB-Schnittstelle 1740 und eine USB-Schnittstellenlogik 1750. Bei mindestens einer Ausführungsform kann die Verarbeitungseinheit 1730 ein beliebiges Anweisungsausführungssystem, ein Gerät oder eine Einrichtung sein, die in der Lage ist, Anweisungen auszuführen. Bei mindestens einer Ausführungsform kann die Verarbeitungseinheit 1730 ohne Einschränkung eine beliebige Anzahl und Art von Verarbeitungskernen (nicht dargestellt) aufweisen. Bei mindestens einer Ausführungsform umfasst die Verarbeitungseinheit 1730 eine anwendungsspezifische integrierte Schaltung („ASIC“), die für die Ausführung beliebiger Mengen und Arten von Operationen, die mit maschinellem Lernen assoziiert sind, optimiert ist. Bei mindestens einer Ausführungsform ist die Verarbeitungseinheit 1730 beispielsweise eine Tensor Processing Unit („TPC“), die für die Ausführung von Inferenzoperationen des maschinellen Lernens optimiert ist. Bei mindestens einer Ausführungsform ist die Verarbeitungseinheit 1730 eine Bildverarbeitungseinheit („VPU“), die für die Ausführung von Bildverarbeitungs- und maschinellen Lernoperationen optimiert ist.
  • Bei mindestens einer Ausführungsform kann die USB-Schnittstelle 1740 eine beliebige Art von USB-Stecker oder USB-Buchse sein. Bei mindestens einer Ausführungsform ist die USB-Schnittstelle 1740 beispielsweise eine USB 3.0 Typ-C-Buchse für Daten und Strom. Bei mindestens einer Ausführungsform ist die USB-Schnittstelle 1740 ein USB-3.0-Typ-A-Stecker. Bei mindestens einer Ausführungsform kann die USB-Schnittstellenlogik 1750 eine beliebige Menge und Art von Logik aufweisen, die es der Verarbeitungseinheit 1730 ermöglicht, sich über den USB-Anschluss 1740 mit einer Einrichtung (z. B. einem Computer 1710) zu verbinden.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform kann die Interferenz- und/oder Trainingslogik 1015 in dem System der 17 für Inferenz- oder Vorhersage-Vorgänge verwendet werden, die mindestens zum Teil auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden.
  • 18A veranschaulicht eine beispielhafte Architektur, in der eine Vielzahl von GPUs 1810(1) -1810(N) mit einer Vielzahl von Mehrkern-Prozessoren 1805(1)-1805(M) über Hochgeschwindigkeitsverbindungen 1840(1)-1840(N) (z. B. Busse, Punkt-zu-Punkt-Verbindungen usw.) kommunikativ gekoppelt ist. Bei mindestens einer Ausführungsform unterstützen die Hochgeschwindigkeitsverknüpfungen 1840(1)-1840(N) einen Kommunikationsdurchsatz von 4 GB/s, 30 GB/s, 80 GB/s oder höher. Bei mindestens einer Ausführungsform können verschiedene Interconnect-Protokolle verwendet werden, einschließlich, ohne darauf beschränkt zu sein, PCle 4.0 oder 5.0 und NVLink 2.0. In verschiedenen Figuren stellen „N“ und „M“ positive Ganzzahlen dar, deren Werte von Figur zu Figur unterschiedlich sein können.
  • Zusätzlich und bei mindestens einer Ausführungsform sind zwei oder mehr GPUs 1810 über Hochgeschwindigkeitsverbindungen 1829(1)-1829(2) miteinander verbunden, die mit ähnlichen oder anderen Protokollen/Verbindungen umgesetzt sein können als die für Hochgeschwindigkeitsverbindungen 1840(1)-1840(N) verwendeten. In ähnlicher Weise können zwei oder mehr Mehrkern-Prozessoren 1805 über eine Hochgeschwindigkeitsverbindung 1828 verbunden sein, bei der es sich um symmetrische Multiprozessorbusse (SMP) handeln kann, die mit 20 GB/s, 30 GB/s, 120 GB/s oder mehr arbeiten. Alternativ kann die gesamte Kommunikation zwischen den verschiedenen in 18A gezeigten Systemkomponenten über ähnliche Protokolle/Leitungen erfolgen (z. B. über eine gemeinsame Verbindungsstruktur).
  • Bei mindestens einer Ausführungsform ist jeder Mehrkernprozessor 1805 jeweils über Speicher-Interconnects 1826(1)-1826(M) kommunikativ an einen Prozessorspeicher 1801(1)-1801(M) gekoppelt und jede GPU 1810(1)-1810(N) jeweils über GPU-Speicher-Interconnects 1850(1)-1850(N) kommunikativ an den GPU-Speicher 1820(1)-1820(N) gekoppelt. Bei mindestens einer Ausführungsform können die Speicherverbindungen 1826 und 1850 ähnliche oder unterschiedliche Speicherzugriffstechnologien einsetzen. Beispielsweise können die Prozessorspeicher 1801(1) -1801(M) und die GPU-Speicher 1820 flüchtige Speicher, wie dynamische Direktzugriffsspeicher (DRAMs) (einschließlich gestapelter DRAMs), Grafik-DDR-SDRAM (GDDR) (z. B. GDDR5, GDDR6) oder High Bandwidth Memory (HBM), aufweisen und/oder nichtflüchtige Speicher wie 3D XPoint oder Nano-Ram sein. Bei mindestens einer Ausführungsform kann ein Teil der Prozessorspeicher 1801 ein flüchtiger Speicher und ein anderer Teile ein nichtflüchtiger Speicher sein (z. B. unter Verwendung einer zweistufigen Speicherhierarchie (2LM)).
  • Wie es hier beschrieben ist, können zwar verschiedene Multikern-Prozessoren 1805 und GPUs 1810 physisch mit einem bestimmten Speicher 1801 bzw. 1820 verbunden sein, und/oder eine einheitliche Speicherarchitektur kann umgesetzt sein, bei der ein virtueller Systemadressraum (auch als „effektiver Adressraum“ bezeichnet) auf verschiedene physische Speicher verteilt ist. Beispielsweise können die Prozessorspeicher 1801(1)-1801(M) jeweils 64 GB Systemadressraum umfassen, und die GPU-Speicher 1820(1)-1820(N) können jeweils 32 GB Systemadressraum umfassen, was bei diesem Beispiel zu einem adressierbaren Gesamtspeicher von 256 GB führt, wenn M=2 und N=4. Andere Werte für N und M sind möglich.
  • 18B veranschaulicht zusätzliche Details für eine Verbindung zwischen einem Multikern-Prozessor 1807 und einem Grafikbeschleunigungsmodul 1846 gemäß einer beispielhaften Ausführungsform. Bei mindestens einer Ausführungsform kann das Grafikbeschleunigungsmodul 1846 einen oder mehrere GPU-Chips beinhalten, die auf einer Linecard integriert sind, die über eine Hochgeschwindigkeitsverbindung 1840 (z. B. einen PCIe-Bus, NVLink, usw.) mit dem Prozessor 1807 verbunden ist. Bei mindestens einer Ausführungsform kann alternativ das Grafikbeschleunigungsmodul 1846 auf einem Gehäuse oder Chip mit dem Prozessor 1807 integriert sein.
  • Bei mindestens einer Ausführungsform beinhaltet der Prozessor 1807 eine Vielzahl von Kernen 1860A-1860D, jeder mit einem Adressenübersetzungspuffer (Translation Lookaside Buffer - „TLB“) 1861A-1861D und einem oder mehreren Caches 1862A-1862D. Bei mindestens einer Ausführungsform können die Kerne 1860A-1860D verschiedene andere Komponenten zur Ausführung von Anweisungen und Verarbeitung von Daten beinhalten, die nicht veranschaulicht sind. Bei mindestens einer Ausführungsform können die Caches 1862A-1862D Level-1- (L1) und Level-2- (L2) Caches umfassen. Zusätzlich können ein oder mehrere gemeinsam genutzte Caches 1856 in den Caches 1862A-1862D vorhanden sein, die von Gruppen von Kernen 1860A-1860D gemeinsam genutzt werden. Eine Ausführungsform des Prozessors 1807 weist beispielsweise 24 Kerne auf, jeder mit seinem eigenen L1-Cache, zwölf gemeinsam genutzten L2-Caches und zwölf gemeinsam genutzten L3-Caches. Bei dieser Ausführungsform werden ein oder mehrere L2 und L3 Caches von zwei benachbarten Kernen gemeinsam genutzt. Bei mindestens einer Ausführungsform sind der Prozessor 1807 und das Grafikbeschleunigungsmodul 1846 mit dem Systemspeicher 1814 verbunden, der die Prozessorspeicher 1801(1)-1801(M) der 18A beinhalten können.
  • Bei mindestens einer Ausführungsform wird die Kohärenz von Daten und Anweisungen, die in verschiedenen Caches 1862A-1862D, 1856 und im Systemspeicher 1814 gespeichert sind, wird durch Kommunikation zwischen den Kernen über einen Kohärenzbus 1864 aufrechterhalten. Bei mindestens einer Ausführungsform kann beispielsweise jeder Cache eine Cache-Kohärenzlogik/-schaltungsanordnung aufweisen, die mit ihm assoziiert ist, um über den Kohärenzbus 1864 als Reaktion auf erfasste Lese- oder Schreibvorgänge in bestimmten Cache-Zeilen zu kommunizieren. Bei mindestens einer Ausführungsform wird ein Cache-Snooping-Protokoll über den Kohärenzbus 1864 umgesetzt, um Cache-Zugriffe mitzulesen.
  • Bei mindestens einer Ausführungsform koppelt eine Proxy-Schaltung 1825 das Grafikbeschleunigungsmodul 1846 kommunikativ an den Kohärenzbus 1864, so dass das Grafikbeschleunigungsmodul 1846 an einem Cache-Kohärenzprotokoll als Peer der Kerne 1860A-1860D teilnehmen kann. Insbesondere sorgt bei mindestens einer Ausführungsform eine Schnittstelle 1835 für die Konnektivität mit der Proxy-Schaltung 1825 über die Hochgeschwindigkeitsverbindung 1840, und eine Schnittstelle 1837 verbindet das Grafikbeschleunigungsmodul 1846 mit der Hochgeschwindigkeitsverbindung 1840.
  • Bei mindestens einer Ausführungsform stellt eine Beschleuniger-Integrationsschaltung 1836 Cache-Verwaltungs-, Speicherzugriffs-, Kontextverwaltungs- und Unterbrechungsverwaltungsdienste im Auftrag einer Vielzahl von Grafikverarbeitungs-Engines 1831(1)-1831(N) des Grafikbeschleunigungsmoduls 1846 bereit. Bei mindestens einer Ausführungsform können die Grafikverarbeitungs-Engines 1831(1)-1831(N) können jeweils eine separate Grafikverarbeitungseinheit (GPU) umfassen. Bei mindestens einer Ausführungsform können die Grafikverarbeitungs-Engines 1831(1)-1831(N) alternativ unterschiedliche Typen von Grafikverarbeitungs-Engines innerhalb einer GPU umfassen, wie etwa Grafikausführungseinheiten, Medienverarbeitungs-Engines (z. B. Videocodierer/- decoder), Abtaster und Blit-Engines. Bei mindestens einer Ausführungsform kann das Grafikbeschleunigungsmodul 1846 eine GPU mit einer Vielzahl von Grafikverarbeitungseinheiten 1831(1)-1831(N) sein, oder die Grafikverarbeitungseinheiten 1831(1)-1831(N) können einzelne GPUs sein, die in einem gemeinsamen Gehäuse, einer Linecard oder einem Chip integriert sind.
  • Bei einer Ausführungsform weist die Beschleuniger-Integrationsschaltung 1836 eine Speicherverwaltungseinheit (MMU) 1839 auf, um verschiedene Speicherverwaltungsfunktionen, wie Übersetzungen von virtuellem zu physischem Speicher (auch als Übersetzungen von effektivem zu realem Speicher bezeichnet) und Speicherzugriffsprotokolle für den Zugriff auf den Systemspeicher 1814 auszuführen. Die MMU 1839 kann bei mindestens einer Ausführungsform auch einen Adressenübersetzungspuffer (TLB) (nicht gezeigt) für das Caching von Übersetzungen von virtuellen/effektiven in physische/reale Adressen beinhalten. Bei mindestens einer Ausführungsform kann ein Cache 1838 Befehle und Daten für den effizienten Zugriff durch die Grafikprozessoren 1831(1)-1831(N) speichern. Bei mindestens einer Ausführungsform werden die im Cache 1838 und in den Grafikspeichern 1833(1)-1833(M) gespeicherten Daten mit den Kern-Caches 1862A-1862D, 1856 und dem Systemspeicher 1814 kohärent gehalten, wobei möglicherweise eine Fetch-Einheit 1844 eingesetzt wird. Wie erwähnt, kann dies über eine Proxy-Schaltung 1825 für Rechnung des Cache 1838 und der Speicher 1833(1)-1833(M) erfolgen (z. B. Senden von Aktualisierungen an den Cache 1838 im Zusammenhang mit Änderungen/Zugriffen auf Cache-Zeilen in den Prozessor-Caches 1862A-1862D, 1856 und Empfangen von Aktualisierungen vom Cache 1838).
  • Bei mindestens einer Ausführungsform speichert ein Satz von Registern 1845 Kontextdaten für Threads, die von Grafikverarbeitungs-Engines 1831(1)-1831(N) ausgeführt werden, und eine Kontextverwaltungsschaltung 1848 verwaltet Thread-Kontexte. Beispielsweise kann die Kontextverwaltungsschaltung 1848 Speicher- und Wiederherstellungsoperationen ausführen, um Kontexte verschiedener Threads während Kontextumschaltungen zu speichern 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). Bei einer Kontextumschaltung kann die Kontextverwaltungsschaltung 1848 beispielsweise aktuelle Registerwerte in einem bestimmten Bereich im Speicher speichern (z. B. durch einen Kontextzeiger identifiziert). Die Registerwerte können dann bei der Rückkehr zu einem Kontext wiederhergestellt werden. Bei mindestens einer Ausführungsform empfängt und verarbeitet eine Unterbrechungsverwaltungsschaltung 1847 Unterbrechungen, die von Systemvorrichtungen empfangen werden.
  • Bei mindestens einer Ausführungsform werden virtuelle/effektive Adressen von einer Grafikverarbeitungs-Engine 1831 durch die MMU 1839 in reale/physische Adressen in dem Systemspeicher 1814 übersetzt. Bei mindestens einer Ausführungsform unterstützt die Beschleuniger-Integrationsschaltung 1836 mehrere (z. B. 4, 8, 16) Grafikbeschleunigermodule 1846 und/oder andere Beschleunigervorrichtungen. Bei mindestens einer Ausführungsform kann das Grafikbeschleunigermodul 1846 für eine einzelne Anwendung, die auf dem Prozessor 1807 ausgeführt wird, bestimmt sein oder kann von mehreren Anwendungen gemeinsam genutzt werden. Bei mindestens einer Ausführungsform ist eine virtualisierte Grafikausführungsumgebung dargestellt, in der die Ressourcen der Grafikverarbeitungs-Engines 1831(1)-1831(N) mit mehreren Anwendungen oder virtuellen Maschinen (VMs) gemeinsam genutzt werden. Bei mindestens einer Ausführungsform können die Ressourcen in „Slices“ unterteilt werden, die unterschiedlichen VMs und/oder Anwendungen basierend auf Verarbeitungsanforderungen und Prioritäten, die mit VMs und/oder Anwendungen assoziiert sind, zugeordnet werden.
  • Bei mindestens einer Ausführungsform fungiert eine Beschleuniger-Integrationsschaltung 1836 als Brücke zu einem System für das Grafikbeschleunigungsmodul 1846 und bietet Adressübersetzung und Systemspeicher-Cache-Dienste. Zusätzlich kann bei mindestens einer Ausführungsform die Beschleuniger-Integrationsschaltung 1836 Virtualisierungsfunktionen für einen Host-Prozessor bereitstellen, um die Virtualisierung der Grafikverarbeitungsmodule 1831(1)-1831(N), Interrupts und die Speicherverwaltung zu verwalten.
  • Da bei mindestens einer Ausführungsform die Hardware-Ressourcen der Grafikverarbeitungs-Engines 1831(1)-1831(N) explizit auf einen realen Adressraum abgebildet sind, den der Host-Prozessor 1807 sieht, kann ein beliebiger Host-Prozessor diese Ressourcen direkt unter Verwendung eines effektiven Adresswerts adressieren. Eine Funktion der Beschleuniger-Integrationsschaltung 1836 ist bei mindestens einer Ausführungsform die physische Trennung der Grafikverarbeitungs-Engines 1831(1)-1831(N), so dass sie für ein System als unabhängige Einheiten erscheinen.
  • Bei mindestens einer Ausführungsform sind ein oder mehrere Grafikspeicher 1833(1)-1833(M) mit jeder der Grafikverarbeitungs-Engines 1831(1)-1831(N) verbunden, und N=M. Bei mindestens einer Ausführungsform speichern die Grafikspeicher 1833(1)-1833(M) Anweisungen und Daten, die von jeder der Grafikverarbeitungs-Engines 1831(1)-1831(N) verarbeitet werden. Bei mindestens einer Ausführungsform können die Grafikspeicher 1833(1)-1833(M) flüchtige Speicher, wie DRAMs (einschließlich gestapelter DRAMs), GDDR-Speicher (z. B. GDDR5, GDDR6) oder HBM, sein und/oder können nichtflüchtige Speicher, wie 3D XPoint oder Nano-Ram, sein.
  • Bei mindestens einer Ausführungsform können zur Verringerung des Datenverkehrs über die Hochgeschwindigkeitsverbindung 1840 Zuordnungsverfahren bzw. Biasing-Verfahren verwendet werden, um sicherzustellen, dass die in den Grafikspeichern 1833(1)-1833(M) gespeicherten Daten Daten sind, die am häufigsten von den Grafikverarbeitungs-Engines 1831(1)-1831(N) verwendet werden und bevorzugt nicht von den Kernen 1860A-1860D (mindestens nicht häufig) verwendet werden. In ähnlicher Weise versucht bei mindestens einer Ausführungsform ein Zuordnungsmechanismus bzw. Biasing-Mechanismus, Daten, die von Kernen (und bevorzugt nicht von den Grafikverarbeitungs-Engines 1831(1)-1831(N)) benötigt werden, in den Caches 1862A-1862D, 1856 und in dem Systemspeicher 1814 zu halten.
  • 18C veranschaulicht eine andere beispielhafte Ausführungsform, bei der die Beschleuniger-Integrationsschaltung 1836 in den Prozessor 1807 integriert ist. Bei dieser Ausführungsform kommunizieren die Grafikprozessoren 1831(1)-1831(N) direkt über die Hochgeschwindigkeitsverbindung 1840 mit der Beschleuniger-Integrationsschaltung 1836 über die Schnittstelle 1837 und die Schnittstelle 1835 (die wiederum jede Form von Bus oder Schnittstellenprotokoll sein kann). Bei mindestens einer Ausführungsform kann die Beschleuniger-Integrationsschaltung 1836 ähnliche Operationen wie in 18B beschrieben ausführen, jedoch möglicherweise mit einem höheren Durchsatz, da sie sich in unmittelbarer Nähe zum Kohärenzbus 1864 und den Caches 1862A-1862D, 1856 befindet. Bei mindestens einer Ausführungsform unterstützt eine Beschleuniger-Integrationsschaltung unterschiedliche Programmiermodelle, einschließlich eines Programmiermodells für dedizierte Prozesse (ohne Virtualisierung des Grafikbeschleunigungsmoduls) und gemeinsam genutzter Programmiermodelle (mit Virtualisierung), die Programmiermodelle beinhalten können, die von der Beschleuniger-Integrationsschaltung 1836 gesteuert werden, und Programmiermodelle, die von dem Grafikbeschleunigungsmodul 1846 gesteuert werden.
  • Bei mindestens einer Ausführungsform sind die Grafikverarbeitungs-Engines 1831(1)-1831(N) für eine einzige Anwendung oder einen einzigen Prozess unter einem einzigen Betriebssystem bestimmt. Bei mindestens einer Ausführungsform kann eine einzelne Anwendung andere Anwendungsanforderungen an die Grafikverarbeitungs-Engines 1831(1)-1831(N) weiterleiten, wodurch eine Virtualisierung innerhalb einer VM/Partition bereitgestellt wird.
  • Bei mindestens einer Ausführungsform können die Grafikverarbeitungs-Engines 1831(1)-1831(N), von mehreren VM-/Anwendungspartitionen gemeinsam genutzt werden. Bei mindestens einer Ausführungsform können gemeinsam genutzte Modelle einen Systemhypervisor verwenden, um die Grafikverarbeitungs-Engines 1831(1)-1831(N) zu virtualisieren und den Zugriff durch jedes Betriebssystem zu ermöglichen. Bei Systemen mit einer einzigen Partition ohne Hypervisor gehören die Grafikprozessoren 1831(1)-1831(N) zu einem Betriebssystem. Bei mindestens einer Ausführungsform kann ein Betriebssystem Grafikverarbeitungs-Engines 1831(1)-1831(N) virtualisieren, um jedem Prozess oder jeder Anwendung Zugriff zu bereitzustellen.
  • Bei mindestens einer Ausführungsform wählt das Grafikbeschleunigungsmodul 1846 oder eine einzelne Grafikverarbeitungs-Engine 1831(1)-1831(N) ein Prozesselement mit Hilfe eines Prozesshandles aus. Bei mindestens einer Ausführungsform werden Prozesselemente im Systemspeicher 1814 gespeichert und sind unter Verwendung einer Übersetzungstechnik von effektiver Adresse zu realer Adresse adressierbar, was hier beschrieben ist. Bei mindestens einer Ausführungsform kann ein Prozesshandle ein umsetzungsspezifischer Wert sein, der einem Host-Prozess zur Verfügung gestellt wird, wenn er seinen Kontext bei der Grafikverarbeitungs-Engine 1831(1)-1831(N) registriert (d. h. wenn er die Systemsoftware aufruft, um ein Prozesselement zu einer verknüpften Prozesselementliste hinzuzufügen). Bei 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.
  • 18D veranschaulicht ein beispielhaftes Beschleuniger-Integrations-Slice 1890. Bei mindestens einer Ausführungsform umfasst ein „Slice“ einen spezifizierten Teil der Verarbeitungsressourcen der Beschleuniger-Integrationsschaltung 1836. Bei mindestens einer Ausführungsform ist eine Anwendung ein effektiver Anwendungsadressraum 1882 im Systemspeicher 1814, der Prozesselemente 1883 speichert. Bei mindestens einer Ausführungsform werden die Prozesselemente 1883 als Reaktion auf GPU-Aufrufe 1881 von Anwendungen 1880, die auf dem Prozessor 1807 ausgeführt werden, gespeichert. Bei mindestens einer Ausführungsform enthält ein Prozesselement 1883 den Prozessstatus für die entsprechende Anwendung 1880. Bei mindestens einer Ausführungsform kann ein im Prozesselement 1883 enthaltener Arbeitsdeskriptor (Work Descriptor (WD)) 1884 ein einzelner, von einer Anwendung angeforderter Job sein oder einen Zeiger auf eine Warteschlange von Jobs enthalten. Bei mindestens einer Ausführungsform ist der WD 1884 ein Zeiger auf eine Auftragsanforderungs-Warteschlange im effektiven Adressraum 1882 einer Anwendung.
  • Bei mindestens einer Ausführungsform können das Grafikbeschleunigungsmodul 1846 und/oder die einzelnen Grafikverarbeitungs-Engines 1831(1) -1831(N) von allen oder einer Teilmenge der Prozesse in einem System gemeinsam genutzt werden. Bei mindestens einer Ausführungsform kann eine Infrastruktur zum Einrichten der Prozessstatus und zum Senden eines WD 1884 an ein Grafikbeschleunigungsmodul 1846 zum Starten eines Auftrags in einer virtualisierten Umgebung beinhaltet sein.
  • Bei mindestens einer Ausführungsform ist ein Programmiermodell für dedizierte Prozesse umsetzungsspezifisch. Bei mindestens einer Ausführungsform besitzt bei diesem Modell ein einzelner Prozess das Grafikbeschleunigungsmodul 1846 oder eine einzelne Grafikverarbeitungs-Engine 1831. Wenn das Grafikbeschleunigungsmodul 1846 bei mindestens einer Ausführungsform einem einzelnen Prozess gehört, initialisiert ein Hypervisor die Beschleuniger-Integrationsschaltung 1836 für eine besitzende Partition, und ein Betriebssystem initialisiert die Beschleuniger-Integrationsschaltung 1836 für einen besitzenden Prozess, wenn das Grafikbeschleunigungsmodul 1846 zugewiesen wird.
  • Bei mindestens einer Ausführungsform holt beim Betrieb eine WD-Fetch-Einheit 1891 in dem Beschleuniger-Integrations-Slice 1890 den nächsten WD 1884 ab, der eine Angabe der Arbeit beinhaltet, die von einer oder mehreren Grafikverarbeitungs-Engines des Grafikbeschleunigungsmoduls 1846 zu erledigen ist. Bei mindestens einer Ausführungsform können, wie veranschaulicht, die Daten aus dem WD 1884 in Registern 1845 gespeichert und von der MMU 1839, der Unterbrechungsverwaltungsschaltung 1847 und/oder der Kontextverwaltungsschaltung 1848 verwendet werden. Eine Ausführungsform der MMU 1839 beinhaltet beispielsweise eine Segment-/Seitenlaufschaltungsanordnung für den Zugriff auf Segment-/Seitentabellen 1886 im virtuellen Adressraum 1885 des Betriebssystems. Die Unterbrechungsverwaltungsschaltung 1847 kann bei mindestens einer Ausführungsform von dem Grafikbeschleunigungsmodul 1846 empfangene Unterbrechungsereignisse 1892 verarbeiten. Bei der Ausführung von Grafik-Vorgängen wird bei mindestens einer Ausführungsform eine effektive Adresse 1893, die von einer Grafikverarbeitungs-Engine 1831 (1)-1831 (N) generiert wird, von der MMU 1839 in eine reale Adresse übersetzt.
  • Bei mindestens einer Ausführungsform werden Register 1845 für jede Grafikverarbeitungs-Engine 1831 (1)-1831 (N) und/oder jedes Grafikbeschleunigungsmodul 1846 dupliziert und sie können durch einen Hypervisor oder ein Betriebssystem initialisiert werden. Jedes dieser duplizierten Register kann bei mindestens einer Ausführungsform in einem Beschleuniger-Integrations-Slice 1890 beinhaltet sein. Beispielhafte Register, die von einem Hypervisor initialisiert werden können, sind in Tabelle 1 gezeigt. Tabelle 1 - Durch Hypervisor initialisierte Register
    Register Nr. Beschreibung
    1 Slice-Steuerregister
    2 Geplanter Prozessbereichszeiger für reale Adresse (RA)
    3 Autoritätsmasken-Überschreibungsregister
    4 Unterbrechungsvektor-Tabelleneintrags-Offset
    5 Unterbrechungsvektor-Tabelleneintragsbegrenzung
    6 Zustandsregister
    7 ID einer logischen Partition
    8 Hypervisor-Beschleunigernutzungsaufzeichnungszeiger für reale Adresse (RA)
    9 Speicherdeskriptorregister
  • Tabelle 2 zeigt beispielhafte Register, die von einem Betriebssystem initialisiert werden können. Tabelle 2 - Vom Betriebssystem initialisierte Register
    Register Nr Beschreibung
    1 Prozess- und Thread-Identifizierung
    2 Kontextsicherungs-/Wiederherstellungszeiger für effektive Adresse (EA)
    3 Virtuelle Adresse (VA) Beschleuniger-Nutzungsdatensatzzeiger
    4 Virtuelle Adresse (VA) Zeiger auf die Speichersegmenttabelle
    5 Berechtigungsmaske
    6 Arbeitsdeskriptor
  • Bei mindestens einer Ausführungsform ist jeder WD 1884 spezifisch für ein konkretes Grafikbeschleunigungsmodul 1846 und/oder die Grafikverarbeitungs-Engines 1831 (1)-1831(N). Bei mindestens einer Ausführungsform enthält er alle Informationen, die für eine Grafikverarbeitungs-Engine 1831(1)-1831(N) erforderlich sind, um Arbeit zu verrichten, oder er kann ein Zeiger auf einen Speicherort sein, an dem eine Anwendung eine Befehlswarteschlange von abzuschließender Arbeit eingerichtet hat.
  • 18E veranschaulicht zusätzliche Details für eine beispielhafte Ausführungsform eines gemeinsam genutzten Modells. Diese Ausführungsform beinhaltet einen realen Hypervisor-Adressraum 1898, in dem eine Prozesselementliste 1899 gespeichert ist. Auf den realen Hypervisor-Adressraum 1898 kann bei mindestens einer Ausführungsform über einen Hypervisor 1896, der Grafikbeschleunigungsmodul-Engines für das Betriebssystem 1895 virtualisiert, zugegriffen werden.
  • Bei mindestens einer Ausführungsform erlauben gemeinsame Programmiermodelle allen oder einer Teilmenge von Prozessen aus allen oder einer Teilmenge von Partitionen in einem System, ein Grafikbeschleunigungsmodul 1846 zu verwenden. Bei mindestens einer Ausführungsform gibt es zwei Programmiermodelle, bei denen das Grafikbeschleunigungsmodul 1846 von mehreren Prozessen und Partitionen gemeinsam genutzt wird, nämlich über Zeit-Slices gemeinsam genutzt und über gerichtete Grafik gemeinsam genutzt.
  • Bei diesem Modell ist bei mindestens einer Ausführungsform der System-Hypervisor 1896 Besitzer des Grafikbeschleunigungsmoduls 1846 und stellt seine Funktion allen Betriebssystemen 1895 zur Verfügung. Damit bei mindestens einer Ausführungsform ein Grafikbeschleunigungsmodul 1846 die Virtualisierung durch den System-Hypervisor 1896 unterstützen kann, kann das Grafikbeschleunigungsmodul 1846 bestimmte Bedingungen erfüllen, wie beispielsweise (1) eine Auftragsanforderung einer Anwendung autonom sein muss (d. h. der Zustand braucht zwischen den Aufträgen nicht aufrechterhalten zu werden), oder das Grafikbeschleunigungsmodul 1846 einen Mechanismus zur Kontextsicherung und - wiederherstellung bereitstellen muss. (2) Ein Grafikbeschleunigungsmodul 1846 garantiert, dass die Auftragsanforderung einer Anwendung in einer spezifizierten Zeitspanne abgeschlossen wird, einschließlich etwaiger Übersetzungsfehler, oder das Grafikbeschleunigungsmodul 1846 bietet die Möglichkeit, die Verarbeitung eines Auftrags zu unterbrechen, und (3) dem Grafikbeschleunigungsmodul 1846 muss Fairness zwischen den Prozessen garantiert werden, wenn es in einem gerichteten gemeinsamen Programmiermodell arbeitet.
  • Bei mindestens einer Ausführungsform ist es erforderlich, dass die Anwendung 1880 einen Systemaufruf des Betriebssystems 1895 mit einem Grafikbeschleunigungsmodultyp, einem Arbeitsdeskriptor (WD), einem Wert des Autoritätsmaskenregisters (authority mask register - AMR) und einem Kontext-Sicherungs-/-Wiederherstellungsbereichszeiger (Context Save/Restore Area Pointer - CSRP) vornimmt. Bei mindestens einer Ausführungsform beschreibt der Typ des Grafikbeschleunigungsmoduls eine gezielte Beschleunigungsfunktion für einen Systemaufruf. Bei mindestens einer Ausführungsform kann der Typ des Grafikbeschleunigungsmoduls ein systemspezifischer Wert sein. Bei mindestens einer Ausführungsform ist der WD spezifisch für das Grafikbeschleunigungsmodul 1846 formatiert und kann in einer Form eines Befehls des Grafikbeschleunigungsmoduls 1846, eines effektiven Adresszeigers auf eine benutzerdefinierte Struktur, eines effektiven Adresszeigers auf eine Befehlswarteschlange oder einer anderen Datenstruktur vorliegen, die die vom Grafikbeschleunigungsmodul 1846 zu verrichtende Arbeit beschreibt.
  • Bei mindestens einer Ausführungsform ist ein AMR-Wert ein AMR-Zustand, der für einen derzeitigen Prozess verwendet werden soll. Bei mindestens einer Ausführungsform ist ein Wert, der an ein Betriebssystem übergeben wird, vergleichbar mit einer Anwendung, die einen AMR festlegt. Falls die Umsetzungen der Beschleuniger-Integrationsschaltung 1836 und des Grafikbeschleunigungsmoduls 1846 bei mindestens einer Ausführungsform 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. Der Hypervisor 1896 kann bei mindestens einer Ausführungsform optional einen aktuellen AMOR-Wert (Authority Mask Override Register) anwenden, bevor ein AMR in einem Prozesselement 1883 angeordnet wird. Bei mindestens einer Ausführungsform ist CSRP eines der Register 1845, die eine effektive Adresse eines Bereichs im effektiven Adressraum 1882 einer Anwendung für das Grafikbeschleunigungsmodul 1846 zur Speicherung und Wiederherstellung des Kontextstatus enthalten. Bei mindestens einer Ausführungsform ist dieser Zeiger optional, falls zwischen Aufgaben oder bei der Präemption einer Aufgabe kein Zustand gespeichert werden muss. Bei mindestens einer Ausführungsform kann der Kontext-Sicherungs-/-Wiederherstellungsbereich ein gepinnter Systemspeicher sein.
  • Beim Empfang eines Systemaufrufs kann das Betriebssystem 1895 überprüfen, ob die Anwendung 1880 registriert ist und die Berechtigung zur Verwendung des Grafikbeschleunigungsmoduls 1846 erhalten hat. Das Betriebssystem 1895 ruft dann bei mindestens einer Ausführungsform den Hypervisor 1896 mit den Informationen, die in Tabelle 3 gezeigt sind, auf. Tabelle 3 - Hypervisor-Aufrufparameter vom Betriebssystem
    Parameter Nr. Beschreibung
    1 Ein Arbeitsdeskriptor (WD)
    2 Ein Autoritätsmaskenregisterwert (AMR-Wert) (möglicherweise maskiert)
    3 Ein Kontext-Sicherungs-/-Wiederherstellungsbereichszeiger (CSRP) für effektive Adressen (EA)
    4 Eine Prozess-ID (PID) und eine optionale Thread-ID (TID)
    5 Ein Beschleunigernutzungsaufzeichnungszeiger (AURP) für virtuelle Adresse (VA)
    6 Virtuelle Adresse eines Speichersegmenttabellenzeigers (SSTP)
    7 Eine logische Interrupt-Service-Nummer (LISN)
  • Bei mindestens einer Ausführungsform verifiziert der Hypervisor 1896 beim Empfangen eines Hypervisor-Aufrufs, dass das Betriebssystem 1895 registriert ist und die Autorität zur Verwendung des Grafikbeschleunigungsmoduls 1846 bekommen hat. Der Hypervisor 1896 setzt bei mindestens einer Ausführungsform dann das Prozesselement 1883 in eine verknüpfte Prozesselementliste für einen entsprechenden Grafikbeschleunigungsmodultyp 1846. Bei mindestens einer Ausführungsform kann ein Prozesselement die in Tabelle 4 gezeigten Informationen beinhalten. Tabelle 4 - Prozesselementinformationen
    Element Nr. Beschreibung
    1 Ein Arbeitsdeskriptor (WD)
    2 Ein Autoritätsmaskenregister-Wert (AMR-Wert) (möglicherweise maskiert).
    3 Ein Kontext-Sicherungs-/-Wiederherstellungsbereichszeiger (CSRP) für effektive Adressen (EA)
    4 Eine Prozess-ID (PID) und eine optionale Thread-ID (TID)
    5 Ein Beschleunigernutzungsaufzeichnungszeiger (AURP) für virtuelle Adresse (VA)
    6 Virtuelle Adresse eines Speichersegmenttabellenzeigers (SSTP)
    7 Eine logische Interrupt-Service-Nummer (LISN)
    8 Unterbrechungsvektortabelle, abgeleitet aus Hypervisor-Aufrufparametern
    9 Ein Wert des Zustandsregisters (State Register - SR)
    10 Eine ID einer logischen Partition (Logical Partition ID - LPID)
    11 Ein Hypervisor-Beschleunigernutzungsaufzeichnungszeiger für reale Adressen (RA)
    12 Speicherdeskriptorregister (SDR)
  • Bei mindestens einer Ausführungsform initialisiert der Hypervisor eine Vielzahl von Registern 1845 der Beschleuniger-Integrations-Slice 1890.
  • Wie in 18F veranschaulicht, wird bei mindestens einer Ausführungsform ein einheitlicher Speicher verwendet, der über einen gemeinsamen virtuellen Speicheradressraum adressierbar ist, der für den Zugriff auf physische Prozessorspeicher 1801(1)-1801(N) und GPU-Speicher 1820(1)-1820(N) verwendet wird. Bei dieser Umsetzung verwenden die auf den GPUs 1810(1)-1810(N) ausgeführten Operationen denselben virtuellen/effektiven Speicheradressraum für den Zugriff auf die Prozessorspeicher 1801(1)-1801(M) und umgekehrt, was die Programmierbarkeit vereinfacht. Bei mindestens einer Ausführungsform wird ein erster Teil eines virtuellen/effektiven Adressraums dem Prozessorspeicher 1801(1) zugeordnet, ein zweiter Teil dem zweiten Prozessorspeicher 1801(N), ein dritter Teil dem GPU-Speicher 1820(1) usw. Bei mindestens einer Ausführungsform wird dadurch ein gesamter virtueller/effektiver Speicherraum (manchmal auch als effektiver Adressraum bezeichnet) über jeden der Prozessorspeicher 1801 und GPU-Speicher 1820 verteilt, wodurch jeder Prozessor oder jede GPU auf jeden physischen Speicher mit einer diesem Speicher zugeordneten virtuellen Adresse zugreifen kann.
  • Bei mindestens einer Ausführungsform stellt die Bias/Kohärenz-Management-Schaltungsanordnung 1894-1894E innerhalb einer oder mehrerer MMUs 1839A-1839E die Cache-Kohärenz zwischen den Caches eines oder mehrerer Host-Prozessoren (z. B. 1805) und GPUs 1810 sicher und setzt Biasing-Verfahren um, die angeben, in welchen physischen Speichern bestimmte Datentypen gespeichert werden sollen. Während bei mindestens einer Ausführungsform mehrere Instanzen der Bias/Kohärenz-Management-Schaltungsanordnung 1894-1894E in 18F veranschaulicht sind, kann die Bias/Kohärenz-Schaltungsanordnung innerhalb einer MMU eines oder mehrerer Host-Prozessoren 1805 und/oder innerhalb der Beschleuniger-Integrationsschaltung 1836 umgesetzt sein.
  • Eine Ausführungsform ermöglicht es, dass GPU-Speicher 1820 als Teil des Systemspeichers abgebildet wird, und dass darauf unter Verwendung der SVM-Technologie (Shared Virtual Memory) zugegriffen wird, ohne jedoch Leistungsnachteile zu erleiden, die mit einer vollständigen System-Cache-Kohärenz assoziiert sind. Bei mindestens einer Ausführungsform bietet die Möglichkeit des Zugriffs auf die GPU-Speicher 1820 als Systemspeicher ohne lästigen Cache-Kohärenz-Overhead eine vorteilhafte Betriebsumgebung für GPU-Offload. Diese Anordnung ermöglicht es der Software des Host-Prozessors 1805 bei mindestens einer Ausführungsform, Operanden einzustellen und auf Berechnungsergebnisse zuzugreifen, ohne den Overhead herkömmlicher E/A-DMA-Datenkopien. Bei mindestens einer Ausführungsform sind an derartigen traditionellen Kopien Treiberaufrufe, Unterbrechungen und auf Speicher abgebildete E/A-Zugriffe (Memory Mapped E/A Accesses - MMIO-Zugriffe) beteiligt, die alle in Bezug auf einfache Speicherzugriffe ineffizient sind. Bei mindestens einer Ausführungsform kann die Fähigkeit, ohne Cache-Kohärenz-Overheads auf die GPU Speicher 1820 zuzugreifen, für die Ausführungszeit einer ausgelagerten Berechnung entscheidend sein. In Fällen mit erheblichem Streaming-Schreibspeicherverkehr kann bei mindestens einer Ausführungsform der Cache-Kohärenz-Overhead beispielsweise die effektive Schreibbandbreite einer GPU 1810 erheblich reduzieren. Bei 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.
  • Bei mindestens einer Ausführungsform wird die Auswahl eines GPU-Bias und eines Host-Prozessor-Bias durch eine Bias-Tracker-Datenstruktur gesteuert. Bei mindestens einer Ausführungsform kann beispielsweise eine Bias-Tabelle verwendet werden, die eine seitengranulare Struktur sein kann (z. B. mit einer Granularität einer Speicherseite gesteuert), die 1 oder 2 Bit pro GPU-gebundener Speicherseite beinhaltet. Bei mindestens einer Ausführungsform kann eine Bias-Tabelle in einem gestohlenen Speicherbereich eines oder mehrerer GPU- Speicher 1820 umgesetzt sein, mit oder ohne Bias-Cache in einer GPU 1810 (z. B. um häufig/kürzlich verwendete Einträge einer Bias-Tabelle zu cachen). Alternativ kann bei mindestens einer Ausführungsform eine gesamte Bias-Tabelle innerhalb einer GPU aufbewahrt werden.
  • Bei mindestens einer Ausführungsform wird vor dem tatsächlichen Zugriff auf einen GPU-Speicher auf einen Bias-Tabelleneintrag zugegriffen, der mit jedem Zugriff auf den GPU-Speicher 1820 assoziiert ist, was die folgenden Vorgänge bewirkt. Zunächst werden bei mindestens einer Ausführungsform lokale Anfragen von GPU 1810, die ihre Seite im GPU-Bias finden, direkt an einen entsprechenden GPU-Speicher 1820 weitergeleitet. Bei mindestens einer Ausführungsform werden lokale Anforderungen von einer GPU, die ihre Seite in der Host-Verzerrung finden, an den Prozessor 1805 weitergeleitet (z. B. über eine Hochgeschwindigkeitsverknüpfung, wie hierin beschrieben). Bei mindestens einer Ausführungsform schließen Anforderungen von dem Prozessor 1805, die eine angeforderte Seite in dem Host-Prozessor-Bias finden, wie ein normaler Speicherlesezugriff ab. Alternativ können Anforderungen, die an eine GPUbiased Seite gerichtet sind, an die GPU 1810 weitergeleitet werden. Bei mindestens einer Ausführungsform kann eine GPU dann eine Seite in eine Host-Prozessor-Neigung umwandeln, wenn er aktuell keine Seite verwendet. Bei mindestens einer Ausführungsform kann ein Bias-Zustand 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 Bias-Zustands setzt bei mindestens einer Ausführungsform einen API-Aufruf (z. B. OpenCL) ein, 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 Bias-Zustand zu ändern und bei einigen Übergängen eine Cache-Flushing-Operation in einem Host auszuführen. Bei mindestens einer Ausführungsform wird die Cache-Flushing-Operation für einen Übergang von dem Bias des Host-Prozessors 1805 zum Bias der GPU verwendet, aber nicht für einen entgegengesetzten Übergang.
  • Bei mindestens einer Ausführungsform wird die Cache-Kohärenz aufrechterhalten, indem GPU-gebundene Seiten vorübergehend gerendert werden, die vom Host-Prozessor 1805 nicht gecacht werden können. Um bei mindestens einer Ausführungsform auf diese Seiten zuzugreifen, kann der Prozessor 1805 den Zugriff von der GPU 1810 anfordern, die den Zugriff möglicherweise nicht sofort gewährt. Um bei mindestens einer Ausführungsform die Kommunikation zwischen dem Prozessor 1805 und der GPU 1810 zu reduzieren, ist es daher vorteilhaft sicherzustellen, dass GPU-gebundene Seiten diejenigen sind, die von einer GPU, aber nicht vom Host-Prozessor 1805 benötigt werden, und umgekehrt.
  • Die Hardware-Struktur(en) 1015 werden verwendet, um eine oder mehrere Ausführungsformen auszuführen. Einzelheiten zu der/den Hardwarestruktur(en) 1015 können hier in Verbindung mit den 10A und/oder 10B angegeben werden.
  • 19 veranschaulicht beispielhafte integrierte Schaltungen und damit assoziierte Grafikprozessoren, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden können, gemäß verschiedenen hierin beschriebenen Ausführungsformen. Zusätzlich zu dem, was veranschaulicht ist, können andere Logik und Schaltungen bei mindestens einer Ausführungsform beinhaltet sein, einschließlich zusätzlicher Grafikprozessoren/-kerne, Peripherieschnittstellen-Controllern oder Universalprozessorkerne.
  • 19 ist ein Blockdiagramm, das eine beispielhafte integrierte Schaltung 1900 als System auf einem Chip, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann, gemäß mindestens einer Ausführungsform veranschaulicht. Bei mindestens einer Ausführungsform beinhaltet die integrierte Schaltung 1900 einen oder mehrere Anwendungsprozessor(en) 1905 (z. B. CPUs), mindestens einen Grafikprozessor 1910 und kann zusätzlich einen Bildprozessor 1915 und/oder einen Videoprozessor 1920, von denen jeder ein modularer IP-Kern sein kann, beinhalten. Bei mindestens einer Ausführungsform beinhaltet die integrierte Schaltung 1900 Peripherie- oder Buslogik, die einen USB-Controller 1925, einen UART-Controller 1930, einen SPI/SDIO-Controller 1935 und einen I22S/I22C-Controller 1940 beinhaltet. Bei mindestens einer Ausführungsform kann die integrierte Schaltung 1900 eine Anzeigevorrichtung 1945, die mit einer oder mehreren HDMI- (High-Definition Multimedia Interface-) Controller 1950 und einer MIPI-Anzeigeschnittstelle (Mobile Industry Processor Interface-Anzeigenschnittstelle)1955 verbunden ist, beinhalten. Bei mindestens einer Ausführungsform kann der Speicher von einem Flash-Speicher-Subsystem 1960 bereitgestellt werden, das einen Flash-Speicher und einen Flash-Speicher-Controller beinhaltet. Bei mindestens einer Ausführungsform kann die Speicherschnittstelle über eine Speichersteuerung 1965 für den Zugriff auf SDRAM- oder SRAM-Speichervorrichtungen bereitgestellt sein. Bei mindestens einer Ausführungsform beinhalten einige integrierte Schaltungen zusätzlich eine eingebettete Sicherheits-Engine 1970.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in der integrierten Schaltung 1900 für Inferenz- oder Vorhersageoperationen verwendet werden, die mindestens zum Teil auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden. Bei verschiedenen Ausführungsformen setzt die Inferenz- und/oder Trainingslogik 1015 die Bilddaten, die von der Offline-Bildsignalverarbeitung 240 generiert werden, wie oben in Verbindung mit 2 beschrieben, ein. Zusätzlich wird die Datensammlung 202, die oben in Verbindung mit 2 beschrieben ist, bei verschiedenen Ausführungsformen von dem Fahrzeug 1300 ausgeführt.
  • Die 20A-20B veranschaulichen beispielhafte integrierte Schaltungen und assoziierte Grafikprozessoren, die unter Verwendung eines oder mehrerer IP-Kernen, gemäß verschiedener hierin beschriebener Ausführungsformen gefertigt werden können. Zusätzlich zu dem, was veranschaulicht ist, können andere Logik und Schaltungen bei mindestens einer Ausführungsform beinhaltet sein, einschließlich zusätzlicher Grafikprozessoren/-kerne, Peripherieschnittstellen-Controllern oder Universalprozessorkerne.
  • Die 20A und 20B sind Blockdiagramme, die beispielhafte Grafikprozessoren zur Verwendung in einem SoC gemäß den hier beschriebenen Ausführungsformen veranschaulichen. 20A veranschaulicht einen beispielhaften Grafikprozessor 2010 einer integrierten Schaltung mit einem System auf einem Chip, die gemäß mindestens einer Ausführungsform mittels eines oder mehrerer IP-Kerne hergestellt sein kann. 20B veranschaulicht einen zusätzlichen beispielhaften Grafikprozessor 2040 einer integrierten Schaltung mit einem System auf einem Chip, die gemäß mindestens einer Ausführungsform unter Verwendung eines oder mehrerer IP-Kerne gefertigt werden kann. Bei mindestens einer Ausführungsform ist der Grafikprozessor 2010 der 20A ein stromsparender Grafikprozessorkern. Bei mindestens einer Ausführungsform ist der Grafikprozessor 2040 der 20B ein Grafikprozessorkern mit höherer Leistung. Bei mindestens einer Ausführungsform kann jeder der Grafikprozessoren 2010, 2040 eine Variante des Grafikprozessors 1910 der 19 sein.
  • Bei mindestens einer Ausführungsform weist der Grafikprozessor 2010 einen Vertexprozessor 2005 und einen oder mehrere Fragmentprozessor(en) 2015A-2015N auf (z. B. 2015A, 2015B, 2015C, 2015D bis 2015N-1 und 2015N). Bei mindestens einer Ausführungsform kann der Grafikprozessor 2010 unterschiedliche Shader-Programme über separate Logik derart ausführen, dass der Vertex-Prozessor 2005 für die Ausführung von Vorgängen für Vertex-Shader-Programme optimiert ist, während ein oder mehrere Fragment-Prozessor(en) 2015A-2015N Fragment- (z. B. Pixel-) Shading-Vorgänge für Fragment- oder Pixel-Shader-Programme ausführen. Bei mindestens einer Ausführungsform führt der Vertex-Prozessor 2005 eine Vertex-Verarbeitungsstufe einer 3D-Grafik-Pipeline aus und generiert Primitiven und Vertex-Daten. Bei mindestens einer Ausführungsform verwenden die Fragmentprozessoren 2015A-2015N die vom Vertex-Prozessor 2005 generierten Primitiv- und Vertex-Daten, um einen Bildpuffer zu erzeugen, der auf einer Anzeigevorrichtung angezeigt wird. Bei mindestens einer Ausführungsform ist/sind der/die Fragmentprozessor(en) 2015A-2015N für die Ausführung von Fragment-Shader-Programmen optimiert, wie sie in einer OpenGL-API vorgesehen sind, die verwendet werden können, um ähnliche Operationen wie ein Pixel-Shader-Programm auszuführen, wie sie in einer Direct 3D-API vorgesehen sind.
  • Bei mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2010 zusätzlich eine oder mehrere Speicherverwaltungseinheiten (MMUs) 2020A-2020B, einen oder mehrere Cache(s) 2025A-2025B und eine oder mehrere Schaltungs-Interconnects 2030A-2030B. Bei mindestens einer Ausführungsform stellen eine oder mehrere MMU(s) 2020A-2020B physisches Adress-Mapping für den Grafikprozessor 2010 bereit, einschließlich für den Vertex-Prozessor2005 und/oder den/die Fragmentprozessor(en) 2015A-2015N, der/die zusätzlich zu den in einem oder mehreren Cache(s) 2025A-2025B gespeicherten Vertex- oder Bild-/Texturdaten auf im Speicher gespeicherte Vertex- oder Bild-/Texturdaten verweisen kann/können. Bei mindestens einer Ausführungsform kann eine oder können mehrere MMU(s) 2020A-2020B mit anderen MMUs innerhalb des Systems synchronisiert werden, einschließlich einer oder mehrerer MMUs, die mit einem oder mehreren Anwendungsprozessoren 1905, Bildprozessoren 1915 und/oder Videoprozessoren 1920 der 19 assoziiert sind, so dass sich jeder Prozessor 1905-1920 an einem gemeinsamen oder vereinheitlichten virtuellen Speichersystem beteiligt. Bei mindestens einer Ausführungsform ermöglichen es eine oder mehrere Schaltungs-Interconnect(s) 2030A-2030B dem Grafikprozessor 2010, eine Schnittstelle mit anderen IP-Kernen innerhalb des SoC, entweder über einen internen Bus des SoC oder über eine direkte Verbindung herzustellen.
  • Bei mindestens einer Ausführungsform weist der Grafikprozessor 2040 einen oder mehrere Shader-Kern(e) 2055A-2055N auf (z. B. 2055A, 2055B, 2055C, 2055D, 2055E, 2055F bis 2055N-1 und 2055N), wie 20B gezeigt, was eine einheitliche Shader-Kern-Architektur ermöglicht, bei der ein einziger Kern oder Typ oder Kern alle Arten von programmierbarem Shader-Code ausführen kann, einschließlich Shader-Programmcode zur Umsetzung von Vertex-Shadern, Fragment-Shadern und/oder Compute-Shadern. Bei mindestens einer Ausführungsform kann die Anzahl der Shader-Kerne variieren. Bei mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2040 einen Inter-Core-Task-Manager 2045, der als Thread-Dispatcher fungiert, um Ausführungs-Threads an einen oder mehrere Shader-Kerne 2055A-2055N und eine Tiling-Einheit 2058 zu verteilen, um Tiling-Vorgänge für kachelbasiertes Rendern zu beschleunigen, bei denen Rendering-Operationen für eine Szene im Bildraum unterteilt sind, um beispielsweise lokale räumliche Kohärenz innerhalb einer Szene zu nutzen oder die Verwendung interner Caches zu optimieren.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in der integrierten Schaltung 20A und/oder 20B für Inferencing- oder Vorhersageoperationen verwendet werden, die mindestens zum Teil auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden. Bei verschiedenen Ausführungsformen setzt die Inferenz- und/oder Trainingslogik 1015 Zielbilddaten ein, die von der Offline-Bildsignalverarbeitung 240 generiert werden, wie oben in Verbindung mit 2 beschrieben. Zusätzlich kann die Datensammlung 202, die oben in Verbindung mit 2 beschrieben ist, bei verschiedenen Ausführungsformen von dem Fahrzeug 1300 ausgeführt.
  • Die 21A und 21B veranschaulichen eine zusätzliche beispielhafte Grafikprozessorlogik gemäß den hier beschriebenen Ausführungsformen. 21A veranschaulicht einen Grafikkern 2100, der bei mindestens einer Ausführungsform in dem Grafikprozessor 1910 der 19 vorhanden sein kann und bei mindestens einer Ausführungsform ein einheitlicher Shader-Kern 2055A-2055N, wie in 20B, sein kann. 21B veranschaulicht eine hochparallele Allzweck-Grafikverarbeitungseinheit („GPGPU“) 2130, die bei mindestens einer Ausführungsform für den Einsatz auf einem Multi-Chip-Modul geeignet ist.
  • Bei mindestens einer Ausführungsform beinhaltet der Grafikkern 2100 einen gemeinsam genutzten Anweisungs-Cache 2102, eine Textureinheit 2118 und einen Cache/gemeinsam genutzten Speicher 2120, die den Ausführungsressourcen innerhalb des Grafikkerns 2100 gemeinsam sind. Bei mindestens einer Ausführungsform kann der Grafikkern 2100 mehrere Slices 2101A-2101N oder Partitionen für jeden Kern beinhalten, und ein Grafikprozessor kann mehrere Instanzen des Grafikkerns 2100 beinhalten. Die Slices 2101A-2101N können bei mindestens einer Ausführungsform eine Unterstützungslogik aufweisen, die einen lokalen Anweisungs-Cache 2104-2104N, einen Thread-Scheduler 2106A-2106N, einen Thread-Dispatcher 2108A-2108N und einen Satz von Registern 2110A-2110N beinhalten. Bei mindestens einer Ausführungsform können die Slices 2101A-2101N einen Satz zusätzlicher Funktionseinheiten (AFUs 2112A-2112N), Gleitkommaeinheiten (FPUs 2114-2114N), ganzzahlige arithmetische Logikeinheiten (ALUs 2116A-2116N), Adressberechnungseinheiten (ACUs 2113A-2113N), doppeltgenaue Gleitkommaeinheiten (DPFPUs 2115A-2115N) und Matrixverarbeitungseinheiten (MPUs 2117A-2117N) beinhalten.
  • Bei mindestens einer Ausführungsform können die FPUs 2114-2114N Gleitkommaoperationen mit einfacher Genauigkeit (32 Bit) und halber Genauigkeit (16 Bit) ausführen, während die DPFPUs 2115A-2115N Gleitkommaoperationen mit doppelter Genauigkeit (64 Bit) ausführen. Bei mindestens einer Ausführungsform können die ALUs 2116A-2116N Integer-Operationen mit variabler Präzision bei 8-Bit-, 16-Bit- und 32-Bit-Präzision ausführen und für Operationen mit gemischter Präzision konfiguriert sein. Bei mindestens einer Ausführungsform können die MPUs 2117A-2117N auch für Matrixvorgänge mit gemischter Genauigkeit konfiguriert sein, die Gleitkomma- und 8-Bit-Ganzzahloperationen mit halber Genauigkeit beinhalten. Bei mindestens einer Ausführungsform können die MPUs 2117-2117N eine Vielfalt von Matrixoperationen ausführen, um Anwendungs-Frameworks für maschinelles Lernen zu beschleunigen, einschließlich der Unterstützung für eine beschleunigte allgemeine Matrix-Matrix-Multiplikation (GEMM). Bei mindestens einer Ausführungsform können die AFUs 2112A-2112N zusätzliche logische Operationen ausführen, die von Gleitkomma- oder Ganzzahl-Einheiten nicht unterstützt werden, einschließlich trigonometrischer Operationen (z. B. Sinus, Cosinus usw.).
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in dem Grafikkern 2100 für Inferenz- oder Vorhersagevorgänge verwendet werden, die mindestens zum Teil auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden. Bei verschiedenen Ausführungsformen setzt die Inferenz- und/oder Trainingslogik 1015 die Bilddaten, die von der Offline-Bildsignalverarbeitung 240 generiert werden, wie oben in Verbindung mit 2 beschrieben, ein. Zusätzlich wird die Datensammlung 202, die oben in Verbindung mit 2 beschrieben ist, bei verschiedenen Ausführungsformen von dem Fahrzeug 1300 ausgeführt.
  • 21B veranschaulicht bei mindestens einer Ausführungsform eine Universalverarbeitungseinheit (GPGPU) 2130, die dazu konfiguriert sein kann zu ermöglichen, hochparallele Rechenoperationen durch ein Array von Grafikverarbeitungseinheiten auszuführen. Bei mindestens einer Ausführungsform kann die GPGPU 2130 direkt mit anderen Instanzen der GPGPU 2130 verbunden sein, um einen Multi-GPU-Cluster zu bilden und die Trainingsgeschwindigkeit für tiefe neuronale Netzwerke zu verbessern. Bei mindestens einer Ausführungsform beinhaltet die GPGPU 2130 eine Host-Schnittstelle 2132, um eine Verbindung mit einem Host-Prozessor zu ermöglichen. Bei mindestens einer Ausführungsform ist die Host-Schnittstelle 2132 eine PCI-Express-Schnittstelle. Bei mindestens einer Ausführungsform kann es sich bei der Host-Schnittstelle 2132 um eine herstellerspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur handeln. Bei mindestens einer Ausführungsform empfängt die GPGPU 2130 Befehle von einem Host-Prozessor und sie verwendet einen globalen Scheduler 2134, um mit diesen Befehlen assoziierte Ausführungs-Threads an einen Satz von Rechenclustern 2136A-2136H zu verteilen. Bei mindestens einer Ausführungsform nutzen die Rechencluster 2136A-2136H einen Cache-Speicher 2138 gemeinsam. Bei mindestens einer Ausführungsform teilen sich die Compute-Cluster 2136A-2136H einen Cache-Speicher 2138.
  • Bei mindestens einer Ausführungsform weist die GPGPU 2130 einen Speicher 2144-2144B auf, der über eine Reihe von Speichersteuerungen 2142A-2142B mit Compute-Clustern 2136A-2136H gekoppelt ist. Bei mindestens einer Ausführungsform kann der Speicher 2144-2144B verschiedene Arten von Speichervorrichtungen beinhalten, die dynamischen Direktzugriffsspeicher (DRAM) oder Grafik-Direktzugriffsspeicher, wie etwa synchronen Grafik-Direktzugriffsspeicher (SGRAM) beinhalten, der Grafik-Doppeldatenraten-(GDDR-)Speicher beinhaltet.
  • Bei mindestens einer Ausführungsform weisen die Compute-Cluster 2136A-2136H jeweils einen Satz von Grafikkernen auf, wie z. B. den Grafikkern 2100 der 21A, der mehrere Arten von Ganzzahl- und Gleitkomma-Logikeinheiten aufweisen kann, die Rechenoperationen mit einer Reihe von Genauigkeiten ausführen können, die auch für Berechnungen zum maschinellen Lernen geeignet sind. Zum Beispiel kann bei mindestens einer Ausführungsform mindestens eine Teilmenge von Gleitkommaeinheiten in jedem der Compute-Cluster 2136A-2136H derart konfiguriert sein, dass sie 16-Bit- oder 32-Bit-Gleitkommaoperationen ausführen, während eine andere Teilmenge von Gleitkommaeinheiten derart konfiguriert sein kann, dass sie 64-Bit-Gleitkommaoperationen ausführen kann.
  • Bei mindestens einer Ausführungsform können mehrere Instanzen der GPGPU 2130 für den Betrieb als ein Compute-Cluster konfiguriert sein. Bei mindestens einer Ausführungsform variiert die von den Compute-Clustern 2136A-2136H für die Synchronisation und den Datenaustausch verwendete Kommunikation zwischen den Ausführungsformen. Bei mindestens einer Ausführungsform kommunizieren mehrere Instanzen der GPGPU 2130 über die Host-Schnittstelle 2132. Bei mindestens einer Ausführungsform beinhaltet die GPGPU 2130 einen E/A-Hub 2139, der die GPGPU 2130 mit einer GPU-Verknüpfung 2140, die eine direkte Verbindung zu anderen Instanzen der GPGPU 2130 ermöglicht, koppelt. Bei mindestens einer Ausführungsform ist die GPU-Verbindung 2140 mit einer dedizierten GPU-zu-GPU-Brücke gekoppelt, die die Kommunikation und Synchronisation zwischen mehreren Instanzen der GPGPU 2130 ermöglicht. Bei mindestens einer Ausführungsform ist der GPU-Link 2140 mit einer Hochgeschwindigkeits-Verbindung gekoppelt, um Daten an andere GPGPUs oder Parallelprozessoren zu senden und zu empfangen. Bei mindestens einer Ausführungsform befinden sich mehrere Instanzen der GPGPU 2130 in getrennten Datenverarbeitungssystemen und kommunizieren über eine Netzwerkvorrichtung, die über die Host-Schnittstelle 2132 zugänglich ist. Bei mindestens einer Ausführungsform kann die GPU-Verbindung 2140 derart konfiguriert sein, dass sie zusätzlich oder alternativ zur Host-Schnittstelle 2132 eine Verbindung zu einem Hostprozessor ermöglicht.
  • Bei mindestens einer Ausführungsform kann die GPGPU 2130 derart konfiguriert sein, dass sie neuronale Netzwerke trainiert. Bei mindestens einer Ausführungsform kann die GPGPU 2130 innerhalb einer Inferencing-Plattform verwendet werden. Bei mindestens einer Ausführungsform, bei der die GPGPU 2130 für Inferencing verwendet wird, kann die GPGPU 2130 weniger Compute-Cluster 2136A-2136H aufweisen, als wenn die GPGPU 2130 zum Training eines neuronalen Netzwerks verwendet wird. Bei mindestens einer Ausführungsform kann sich die mit dem Speicher 2144A-2144B assoziierte Speichertechnologie zwischen Inferencing- und Trainingskonfigurationen unterscheiden, wobei den Trainingskonfigurationen Speichertechnologien mit höherer Bandbreite gewidmet werden. Bei mindestens einer Ausführungsform kann die Inferencing-Konfiguration der GPGPU 2130 Inferencing-spezifische Anweisungen unterstützen. Bei mindestens einer Ausführungsform kann eine Inferencing-Konfiguration beispielsweise Unterstützung für eine oder mehrere 8-Bit-Integer-Skalarprodukt-Anweisungen bereitstellen, die während der Inferencing-Vorgänge für eingesetzte neuronale Netzwerke verwendet werden können.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in der GPGPU 2130 für Inferencing- oder Vorhersagevorgänge verwendet werden, die mindestens zum Teil auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden. Bei verschiedenen Ausführungsformen setzt die Inferenz- und/oder Trainingslogik 1015 Zielbilddaten, die von der Offline-Bildsignalverarbeitung 240 generiert werden, wie oben in Verbindung mit 2 beschrieben, ein. Zusätzlich wird die Datensammlung 202, die oben in Verbindung mit 2 beschrieben ist, bei verschiedenen Ausführungsformen von dem Fahrzeug 1300 ausgeführt.
  • 22 ist ein Blockdiagramm, das ein Rechensystem 2200 gemäß mindestens einer Ausführungsform veranschaulicht. Bei mindestens einer Ausführungsform weist das Rechensystem 2200 ein Verarbeitungsteilsystem 2201 mit einem oder mehreren Prozessor(en) 2202 und einem Systemspeicher 2204 auf, die über einen Verbindungspfad kommunizieren, der einen Speicher-Hub 2205 aufweisen kann. Bei mindestens einer Ausführungsform kann der Speicher-Hub 2205 eine separate Komponente innerhalb einer Chipsatzkomponente sein oder in einen oder mehrere Prozessor(en) 2202 integriert sein. Bei mindestens einer Ausführungsform ist der Speicher-Hub 2205 über eine Kommunikationsverknüpfung 2206 mit einem E/A-Teilsystem 2211 gekoppelt. Bei mindestens einer Ausführungsform weist das E/A-Subsystem 2211 einen E/A-Hub 2207 auf, der es dem Rechensystem 2200 ermöglicht, Eingaben von einer oder mehreren Eingabevorrichtung(en) 2208 zu empfangen. Bei mindestens einer Ausführungsform kann der E/A-Hub 2207 einen Anzeige-Controller, der in einem oder mehreren Prozessor(en) 2202 enthalten sein kann, in die Lage versetzen, Ausgaben an eine oder mehrere Anzeigevorrichtung(en) 2210A bereitzustellen. Bei mindestens einer Ausführungsform kann (können) eine oder mehrere mit dem E/A-Hub 2207 gekoppelte Anzeigevorrichtung(en) 2210A eine lokale, interne oder eingebettete Anzeigevorrichtung beinhalten.
  • Bei mindestens einer Ausführungsform beinhaltet das Verarbeitungsteilsystem 2201 einen oder mehrere Parallelprozessor(en) 2212, die über einen Bus oder eine andere Kommunikationsverknüpfung 2213 an den Speicher-Hub 2205 gekoppelt sind. Bei mindestens einer Ausführungsform kann es sich bei der Kommunikationsverbindung 2213 um eine beliebige Anzahl von standardbasierten Kommunikationsverbindungstechnologien oder -protokollen handeln, wie z. B. PCI Express, ohne darauf beschränkt zu sein, oder um eine herstellerspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur. Bei mindestens einer Ausführungsform bilden einige oder alle der parallelen Prozessoren 2212 ein rechnerisch fokussiertes Parallel- oder Vektorverarbeitungssystem, das eine große Anzahl von Verarbeitungskernen und/oder Verarbeitungsclustern aufweisen kann, wie z. B. einen MIC-Prozessor (Many Integrated Core). Bei mindestens einer Ausführungsform bilden ein oder mehrere parallele(r) Prozessor(en) 2212 ein Grafikverarbeitungs-Subsystem, das Pixel an eine oder mehrere über den E/A-Hub 2207 gekoppelte Anzeigevorrichtung(en) 2210A ausgeben kann. Bei mindestens einer Ausführungsform kann ein oder können mehrere Parallelprozessor(en) 2212 auch einen Anzeige-Controller und eine Anzeigeschnittstelle (nicht gezeigt) beinhalten, um eine direkte Verbindung mit einer oder mehreren Anzeigevorrichtung(en) 2210B zu ermöglichen.
  • Bei mindestens einer Ausführungsform kann eine Systemspeichereinheit 2214 mit dem E/A-Hub 2207 verbunden sein, um einen Speichermechanismus für das Computersystem 2200 bereitzustellen. Bei mindestens einer Ausführungsform kann ein E/A-Switch 2216 verwendet werden, um einen Schnittstellenmechanismus bereitzustellen, um Verbindungen zwischen dem E/A-Hub 2207 und anderen Komponenten zu ermöglichen, wie z. B. einem Netzwerkadapter 2218 und/oder einem drahtlosen Netzwerkadapter 2219, der in die Plattform integriert sein kann, und verschiedenen anderen Einrichtungen, die über eine oder mehrere Add-in-Einrichtung(en) 2220 hinzugefügt werden können. Bei mindestens einer Ausführungsform kann der Netzwerkadapter 2218 ein Ethernet-Adapter oder ein anderer drahtgebundener Netzwerkadapter sein. Bei mindestens einer Ausführungsform kann der drahtlose Netzwerkadapter 2219 eine oder mehrere Wi-Fi-, Bluetooth-, Near Field Communication (NFC)- oder andere Netzwerkvorrichtungen aufweisen, die ein oder mehrere drahtlose Funkgeräte beinhalten.
  • Bei mindestens einer Ausführungsform kann das Rechensystem 2200 andere, nicht explizit dargestellte Komponenten beinhalten, einschließlich USB- oder andere Anschlüsse, optische Speicherlaufwerke, Video-Aufzeichnungsvorrichtungen und dergleichen, die ebenfalls mit dem E/A-Hub 2207 verbunden sein können. mindestens einer Ausführungsform können die Kommunikationspfade, die verschiedene Komponenten in 22 zusammenschalten, unter Verwendung beliebiger geeigneter Protokolle umgesetzt werden, wie etwa auf PCI (Peripheral Component Interconnect) basierender Protokolle (z. B. PCI-Express) oder anderer Bus- oder Punkt-zu-Punkt-Kommunikationsschnittstellen und/oder -protokoll(e), wie etwa NV-Link-Hochgeschwindigkeits-Interconnect, oder Interconnect-Protokolle.
  • Bei mindestens einer Ausführungsform weisen ein oder mehrere Parallelprozessor(en) 2212 eine für die Grafik- und Videoverarbeitung optimierte Schaltungsanordnung auf, die beispielsweise eine Videoausgangsschaltungsanordnung beinhaltet und eine Grafikverarbeitungseinheit (GPU) bildet. Bei mindestens einer Ausführungsform enthalten ein oder mehrere Parallelprozessor(en) 2212 Schaltungsanordnungen, die für die allgemeine Verarbeitung optimiert sind. Bei mindestens einer Ausführungsform können Komponenten des Rechensystems 2200 mit einem oder mehreren anderen Systemelementen auf einem einzigen integrierten Schaltkreis integriert sein. Beispielsweise können bei mindestens einer Ausführungsform ein oder mehrere parallele(r) Prozessor(en) 2212, ein Speicher-Hub 2205, ein Prozessor(en) 2202 und ein E/A-Hub 2207 in einer integrierten Schaltung mit einem System mit einem System auf einem Chip (SoC) integriert sein. Bei mindestens einer Ausführungsform können die Komponenten des Rechnersystems 2200 in einem einzigen Gehäuse integriert sein, um eine System-in-Package-Konfiguration (SIP) bilden. Bei mindestens einer Ausführungsform kann mindestens ein Teil der Komponenten des Rechensystems 2200 in ein Multi-Chip-Modul (multi-chip module - MCM) integriert sein, das mit anderen Multi-Chip-Modulen zu einem modularen Rechensystem zusammengeschaltet sein kann.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform kann die Interferenz- und/oder Trainingslogik 1015 in dem System der 22 00 für Inferenz- oder VorhersageVorgänge verwendet werden, die mindestens zum Teil auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden. Bei verschiedenen Ausführungsformen verwendet die Inferenz- und/oder Trainingslogik 1015 die durch die Offline-Bildsignalverarbeitung 240 generierten Zielbilddaten, wie oben in Verbindung mit 2 beschrieben. Zusätzlich wird die Datensammlung 202, die oben in Verbindung mit 2 beschrieben ist, bei verschiedenen Ausführungsformen von dem Fahrzeug 1300 ausgeführt werden.
  • PROZESSOREN
  • 23A veranschaulicht einen Parallelprozessor 2300 gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform können verschiedene Komponenten des Parallelprozessors 2300 unter Verwendung einer oder mehrerer integrierten Schaltungsvorrichtungen umgesetzt sein, wie etwa programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASICs) oder feldprogrammierbare Gate-Arrays (FPGA). Bei mindestens einer Ausführungsform ist der veranschaulichte Parallelprozessor 2300 eine Variante eines oder mehrerer Parallelprozessoren 2212, die in 22 gemäß einer beispielhaften Ausführungsform gezeigt sind.
  • Bei mindestens einer Ausführungsform beinhaltet der Parallelprozessor 2300 eine Parallelverarbeitungseinheit 2302. Bei mindestens einer Ausführungsform beinhaltet die Parallelverarbeitungseinheit 2302 eine E/A-Einheit 2304, die die Kommunikation mit anderen Vorrichtungen, einschließlich anderer Instanzen der Parallelverarbeitungseinheit 2302, ermöglicht. Bei mindestens einer Ausführungsform kann die E/A-Einheit 2304 direkt mit anderen Vorrichtungen verbunden sein. Bei mindestens einer Ausführungsform ist die E/A-Einheit 2304 über eine Hub- oder Switch-Schnittstelle, wie z. B. den Speicher-Hub 2305, mit anderen Einrichtungen verbunden. Bei mindestens einer Ausführungsform bilden die Verbindungen zwischen Speicher-Hub 2305 und E/A-Einheit 2304 eine Kommunikationsverbindung 2313. Bei mindestens einer Ausführungsform ist die E/A-Einheit 2304 mit einer Host-Schnittstelle 2306 und einem Speicher-Koppelfeld 2316 verbunden, wobei die Host-Schnittstelle 2306 Befehle zur Ausführung von Verarbeitungsvorgängen und das Speicher-Koppelfeld 2316 Befehle zur Ausführung von Speicheroperationen empfängt.
  • Bei mindestens einer Ausführungsform kann, wenn die Host-Schnittstelle 2306 einen Befehlspuffer über die E/A-Einheit 2304 empfängt, die Host-Schnittstelle 2306 Arbeitsoperationen zum Ausführen dieser Befehle an ein Front-End 2308 richten. Bei mindestens einer Ausführungsform ist das Front-Ende 2308 mit einem Scheduler 2310 gekoppelt, der derart konfiguriert ist, dass er Befehle oder andere Arbeitselemente an ein Verarbeitungscluster-Array 2312 verteilt. Bei mindestens einer Ausführungsform stellt der Scheduler 2310 sicher, dass das Verarbeitungscluster-Array 2312 ordnungsgemäß konfiguriert ist und sich in einem gültigen Zustand befindet, bevor Tasks an den Cluster des Verarbeitungscluster-Array 2312 verteilt werden. Bei mindestens einer Ausführungsform wird der Scheduler 2310 über Firmware-Logik, die auf einem Mikrocontroller ausgeführt wird, umgesetzt. Bei mindestens einer Ausführungsform ist der Mikrocontroller-umgesetzte Scheduler 2310 derart konfiguriert, dass er komplexe Planungssteuerungs- und Arbeitsverteilungsvorgänge mit grober und feiner Granularität ausführen kann, was eine schnelle Unterbrechung und Kontextumschaltung von Threads ermöglicht, die auf der Verarbeitungsanordnung 2312 ausgeführt werden. Bei mindestens einer Ausführungsform kann die Host-Software Arbeitslasten für das Planen auf dem Verarbeitungscluster-Array 2312 über eine von mehreren Grafikverarbeitungspfaden nachweisen. Bei mindestens einer Ausführungsform können die Arbeitslasten dann automatisch durch die Logik des Schedulers 2310 innerhalb eines Mikrocontrollers, der den Scheduler 2310 aufweist, auf dem Verarbeitungscluster-Array 2312 verteilt werden.
  • Bei mindestens einer Ausführungsform kann das Verarbeitungscluster-Array 2312 bis zu „N“ Verarbeitungscluster beinhalten (z. B. Cluster 2314, Cluster 2314B, bis Cluster 2314N), wobei „N“ eine positive Ganzzahl darstellt (welche eine unterschiedliche Zahl „N“ sein kann als die, die in den anderen Figuren verwendet wird). Bei mindestens einer Ausführungsform kann jeder Cluster 2314-2314N des Verarbeitungscluster-Arrays 2312 eine große Anzahl von nebenläufigen Threads ausführen. Bei mindestens einer Ausführungsform kann der Scheduler 2310 den Clustern 2314-2314N des Verarbeitungscluster-Arrays 2312 Arbeit zuordnen, indem er verschiedene Planungssteuerungs- und/oder Arbeitsverteilungsalgorithmen verwendet, die je nach der Arbeitslast variieren können, die für jede Art von Programm oder Berechnung entsteht. Bei mindestens einer Ausführungsform kann die Planung dynamisch durch den Scheduler 2310 erfolgen oder teilweise durch eine Compilerlogik während der Kompilierung der Programmlogik, die für die Ausführung durch das Verarbeitungscluster-Array 2312 konfiguriert ist, unterstützt werden. Bei mindestens einer Ausführungsform können unterschiedliche Cluster 2314-2314N des Verarbeitungscluster-Arrays 2312 für die Verarbeitung unterschiedlicher Arten von Programmen oder für die Ausführung unterschiedlicher Arten von Berechnungen zugeordnet werden.
  • Bei mindestens einer Ausführungsform kann das Verarbeitungscluster-Array 2312 derart konfiguriert sein, dass es verschiedene Arten von Parallelverarbeitungsoperationen ausführt. Bei mindestens einer Ausführungsform ist das Verarbeitungscluster-Array 2312 derart konfiguriert, dass es Universal-Parallelberechnungsoperationen ausführt. Beispielsweise kann bei mindestens einer Ausführungsform das Verarbeitungscluster-Array 2312 eine Logik beinhalten, um Verarbeitungs-Tasks auszuführen, einschließlich des Filterns von Video- und/oder Audiodaten, der Ausführung von Modellierungsoperationen, einschließlich physikalischer Vorgänge und der Ausführung von Datentransformationen.
  • Bei mindestens einer Ausführungsform ist das Verarbeitungscluster-Array 2312 derart konfiguriert, dass es parallele Grafikverarbeitungsvorgänge ausführt. Bei mindestens einer Ausführungsform kann das Verarbeitungscluster-Array 2312 eine zusätzliche Logik aufweisen, um die Ausführung derartiger Grafikverarbeitungsoperationen zu unterstützen, einschließlich, ohne darauf beschränkt zu sein, Texturabtastlogik, um Texturoperationen auszuführen, sowie Tesselationslogik und andere Vertexverarbeitungslogik. Bei mindestens einer Ausführungsform kann das Verarbeitungscluster-Array 2312 derart konfiguriert sein, dass es grafikverarbeitungsbezogene Shader-Programme ausführt, wie z. B. Vertex-Shader, Tesselation-Shader, Geometrie-Shader und Pixel-Shader. Bei mindestens einer Ausführungsform kann das Parallelverarbeitungs-Array 2302 Daten aus dem Systemspeicher über die E/A-Einheit 2304 zur Verarbeitung übertragen. Bei mindestens einer Ausführungsform können die übertragenen Daten während der Verarbeitung im On-Chip-Speicher (z. B. im Parallelprozessorspeicher 2322) gespeichert und dann in den Systemspeicher zurückgeschrieben werden.
  • Bei mindestens einer Ausführungsform, wenn die Parallelverarbeitungseinheit 2302 zur Ausführung der Grafikverarbeitung verwendet wird, kann der Scheduler2310 derart konfiguriert sein, dass er eine Verarbeitungslast in ungefähr gleich große Tasks aufteilt, um eine bessere Verteilung der Grafikverarbeitungsoperationen auf mehrere Cluster 2314-2314N des Verarbeitungscluster-Arrays 2312 zu ermöglichen. Bei mindestens einer Ausführungsform können Teile des Verarbeitungscluster-Arrays 2312 derart konfiguriert sein, dass es verschiedene Arten der Verarbeitung ausführen. Beispielsweise kann bei mindestens einer Ausführungsform ein erster Teil derart konfiguriert sein, dass er Vertex-Shading und Topologie generieren ausführt, ein zweiter Teil kann derart konfiguriert sein, dass er Tesselations- und Geometrie-Shading ausführt, und ein dritter Teil kann derart konfiguriert sein, dass er Pixel-Shading oder andere Screenspace-Operationen ausführt, um ein gerendertes Bild für die Anzeige zu erzeugen. Bei mindestens einer Ausführungsform können Zwischendaten, die von einem oder mehreren Clustern 2314-2314N erzeugt werden, in Puffern gespeichert werden, damit Zwischendaten zwischen den Clustern 2314-2314N zur weiteren Verarbeitung übertragen werden können.
  • Bei mindestens einer Ausführungsform kann das Verarbeitungs-Cluster-Array 2312 auszuführende Verarbeitungs-Tasks über den Scheduler 2310 empfangen, der von dem Front-End 2308 Befehle empfängt, die Verarbeitungs-Tasks definieren. Bei mindestens einer Ausführungsform können Verarbeitungs-Tasks Indizes von zu verarbeitenden Daten beinhalten, z. B. Oberflächendaten (Patch-Daten), Primitivdaten, Vertex-Daten und/oder Bildpunktdaten sowie Zustandsparameter und Befehle, die definieren, wie Daten verarbeitet werden sollen (z. B. welches Programm ausgeführt werden soll). Bei mindestens einer Ausführungsform kann der Scheduler 2310 derart konfiguriert sein, dass er den Tasks entsprechende Indizes abruft oder Indizes vom Front-End 2308 empfängt. Bei mindestens einer Ausführungsform kann das Front-End 2308 derart konfiguriert sein, dass es sicherstellt, dass das Verarbeitungscluster-Array 2312 in einem gültigen Zustand konfiguriert ist, bevor eine durch eingehende Befehlspuffer (z. B. Batch-Puffer, Push-Puffer usw.) spezifizierte Arbeitslast eingeleitet wird.
  • Bei mindestens einer Ausführungsform kann jede von einer oder mehreren Instanzen der Parallelverarbeitungseinheit 2302 mit einem Parallelprozessorspeicher 2322 gekoppelt sein. Bei mindestens einer Ausführungsform kann auf den Parallelprozessorspeicher 2322 über das Speicherkoppelfeld 2316 zugegriffen werden, die Speicheranforderungen von dem Verarbeitungscluster-Array 2312 sowie der E/A-Einheit 2304 empfangen kann. Bei mindestens einer Ausführungsform kann das Speicherkoppelfeld 2316 über eine Speicherschnittstelle 2318 auf den Parallelprozessorspeicher 2322 zugreifen. Bei mindestens einer Ausführungsform kann die Speicherschnittstelle 2318 mehrere Partitionseinheiten aufweisen (z. B. Partitionseinheit 2320A, Partitionseinheit 2320B bis Partitionseinheit 2320N), die jeweils mit einem Teil (z. B. einer Speichereinheit) des Parallelprozessorspeichers 2322 gekoppelt sein können. Bei mindestens einer Ausführungsform ist eine Anzahl von Partitionseinheiten 2320A-2320N derart konfiguriert, dass sie gleich einer Anzahl von Speichereinheiten ist, so dass eine erste Partitionseinheit 2320A eine entsprechende erste Speichereinheit 2324 aufweist, eine zweite Partitionseinheit 2320B eine entsprechende Speichereinheit 2324B aufweist und eine N-te Partitionseinheit 2320N eine entsprechende N-te Speichereinheit 2324N aufweist. Bei mindestens einer Ausführungsform kann eine Anzahl von Partitionseinheiten 2320A-2320N nicht gleich einer Anzahl von Speichereinheiten sein.
  • Bei mindestens einer Ausführungsform können die Speichereinheiten 2324-2324N verschiedene Arten von Speichervorrichtungen beinhalten, einschließlich dynamischer Direktzugriffsspeicher (DRAM) oder Grafik-Direktzugriffsspeicher, wie synchroner Grafik-Direktzugriffsspeicher (SGRAM), einschließlich Grafik-Doppeldatenraten-Speicher (GDDR). Bei mindestens einer Ausführungsform können die Speichereinheiten 2324-2324N auch 3D-Stapelspeicher beinhalten, einschließlich, ohne darauf beschränkt zu sein, Speicher mit hoher Bandbreite (High Bandwidth Memory (HBM)). Bei mindestens einer Ausführungsform können Rendering-Ziele, wie z. B. Einzelbild-Puffer oder Textur-Maps, über die Speichereinheiten 2324-2324N hinweg derart gespeichert werden, dass die Partitionseinheiten 2320A-2320N Teile jedes Rendering-Ziels parallel schreiben können, um die verfügbare Bandbreite des Parallelprozessorspeichers 2322 effizient zu nutzen. Bei mindestens einer Ausführungsform kann eine lokale Instanz des Parallelprozessorspeichers 2322 zugunsten eines vereinheitlichten Speicherentwurfs ausgeschlossen werden, der den Systemspeicher in Verbindung mit dem lokalen Cache-Speicher nutzt.
  • Bei mindestens einer Ausführungsform kann jeder der Cluster 2314-2314N des Verarbeitungscluster-Arrays 2312 Daten verarbeiten, die in jede der Speichereinheiten 2324-2324N in dem Parallelprozessorspeicher 2322 geschrieben werden. Bei mindestens einer Ausführungsform kann die Speicherkreuzschiene 2316 derart konfiguriert sein, dass sie eine Ausgabe jedes Clusters 2314-2314N an eine beliebige Partitionseinheit 2320A-2320N oder an einen anderen Cluster 2314-2314N überträgt, das zusätzliche Verarbeitungsvorgänge an einer Ausgabe ausführen kann. Bei mindestens einer Ausführungsform kann jeder Cluster 2314-2314N mit der Speicherschnittstelle 2318 über die Speicherkreuzschiene 2316 kommunizieren, um von verschiedenen externen Einrichtungen zu lesen oder in diese zu schreiben. Bei mindestens einer Ausführungsform hat die Speicherkreuzschiene 2316 eine Verbindung zur Speicherschnittstelle 2318, um mit der E/A-Einheit 2304 zu kommunizieren, sowie eine Verbindung zu einer lokalen Instanz des Parallelprozessorspeichers 2322, so dass die Verarbeitungseinheiten in den verschiedenen Verarbeitungsclustern 2314-2314N mit dem Systemspeicher oder einem anderen Speicher kommunizieren können, der nicht lokal zur Parallelverarbeitungseinheit 2302 gehört. Bei mindestens einer Ausführungsform kann die Speicherkreuzschiene 2316 virtuelle Kanäle verwenden, um Verkehrsströme zwischen Clustern 2314-2314N und Partitionseinheiten 2320A-2320N zu trennen.
  • Bei mindestens einer Ausführungsform können mehrere Instanzen der Parallelverarbeitungseinheit 2302 auf einer einzigen Add-in-Karte bereitgestellt sein, oder mehrere Add-in-Karten können miteinander verbunden sein. Bei mindestens einer Ausführungsform können unterschiedliche Instanzen der Parallelverarbeitungseinheit 2302 derart konfiguriert sein, dass sie auch dann zusammenarbeiten, wenn die unterschiedlichen Instanzen eine unterschiedliche Anzahl von Verarbeitungskernen, unterschiedliche Mengen an lokalem Parallelprozessorspeicher und/oder andere Konfigurationsunterschiede aufweisen. Beispielsweise können bei mindestens einer Ausführungsform einige Instanzen der Parallelverarbeitungseinheit 2302 im Vergleich zu anderen Ausführungen Gleitkommaeinheiten mit höherer Präzision aufweisen. Bei mindestens einer Ausführungsform können Systeme, die eine oder mehrere Instanzen der Parallelverarbeitungseinheit 2302 oder des Parallelprozessors 2300 enthalten, in einer Vielfalt von Ausführungsformen und Formfaktoren umgesetzt sein, einschließlich, ohne darauf beschränkt zu sein, Desktop-, Laptop- oder Handheld-Personalcomputer, Server, Workstations, Spielkonsolen und/oder eingebettete Systeme.
  • 23B ist ein Blockdiagramm einer Partitionseinheit 2320 gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform ist die Partitionseinheit 2320 eine Instanz einer der Partitionseinheiten 2320A-2320N der 23A. Bei mindestens einer Ausführungsform beinhaltet die Partitionseinheit 2320 einen L2-Cache 2321, eine Einzelbildpuffer-Schnittstelle 2325 und eine ROP 2326 (Rasteroperationseinheit). Der L2-Cache 2321 ist bei mindestens einer Ausführungsform ein Lese-/Schreib-Cache, derart konzipiert ist, dass er von Speicherkreuzschiene 2316 und der ROP 2326 empfangene Lade- und Speichervorgängen ausführt. Bei mindestens einer Ausführungsform werden Lesefehler und dringende Rückschreibanforderungen vom L2-Cache 2321 an die Einzelbildpuffer-Schnittstelle 2325 zur Verarbeitung ausgegeben. Bei mindestens einer Ausführungsform können Aktualisierungen auch über die Einzelbildpuffer-Schnittstelle 2325 zur Verarbeitung an einen Einzelbildpuffer gesendet werden. Bei mindestens einer Ausführungsform ist die Einzelbildpuffer-Schnittstelle 2325 mit einer der Speichereinheiten im Parallelprozessorspeicher verbunden, wie den Speichereinheiten 2324-2324N der 23 (z. B. innerhalb des Parallelprozessorspeichers 2322).
  • Bei mindestens einer Ausführungsform ist die ROP 2326 eine Verarbeitungseinheit, die Rasteroperationen wie Schablonieren, Z-Test, Überblendung usw. ausführt. Bei mindestens einer Ausführungsform gibt die ROP 2326 dann verarbeitete Grafikdaten aus, die im Grafikspeicher abgelegt werden. Bei mindestens einer Ausführungsform weist die ROP 2326 eine Kompressionslogik auf, um Tiefen- oder Farbdaten zu komprimieren, die in den Speicher geschrieben werden, und Tiefen- oder Farbdaten zu dekomprimieren, die aus dem Speicher gelesen werden. Bei mindestens einer Ausführungsform kann die Kompressionslogik eine verlustfreie Kompressionslogik sein, die einen oder mehrere von mehreren Kompressionsalgorithmen verwendet. Bei mindestens einer Ausführungsform kann die Art der von der ROP 2326 ausgeführten Kompression basierend auf statistischen Merkmalen der zu komprimierenden Daten variieren. Zum Beispiel wird bei mindestens einer Ausführungsform die Delta-Farbkomprimierung an Tiefen- und Farbdaten auf einer Kachelbasis ausgeführt.
  • Bei mindestens einer Ausführungsform ist die ROP 2326 in jedem Verarbeitungscluster (z. B. Cluster 2314-2314N der 23A) statt in der Partitionseinheit 2320 beinhaltet. Bei mindestens einer Ausführungsform werden Lese- und Schreibanforderungen für Pixeldaten an Stelle von Pixelfragmentdaten über die Speicherkreuzschiene 2316 übertragen. Bei mindestens einer Ausführungsform können verarbeitete Grafikdaten auf einer Anzeigevorrichtung, wie einer von einer oder mehreren Anzeigevorrichtung(en) 2210 der 22, zur weiteren Verarbeitung durch Prozessor(en) 2202 oder zur weiteren Verarbeitung durch eine der Verarbeitungseinheiten innerhalb des Parallelprozessors 2300 der 23A weitergeleitet werden.
  • 23C ist ein Blockdiagramm eines Verarbeitungsclusters 2314 innerhalb einer Parallelverarbeitungseinheit gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform ist ein Verarbeitungscluster eine Instanz von einem der Verarbeitungscluster 2314-2314N der 23A. Bei mindestens einer Ausführungsform kann der Verarbeitungscluster 2314 derart konfiguriert sein, dass er viele Threads parallel ausführt, wobei sich der Begriff „Thread“ auf eine Instanz eines bestimmten Programms bezieht, das auf einem bestimmten Satz von Eingabedaten ausgeführt wird. Bei mindestens einer Ausführungsform werden SIMD-Anweisungsausgabetechniken (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. Bei mindestens einer Ausführungsform werden Single-Instruction-Multiple-Thread-Techniken (SIMT-Techniken) verwendet, um die parallele Ausführung einer großen Anzahl von im Allgemeinen synchronisierten Threads zu unterstützen, wobei eine gemeinsame Anweisungseinheit konfiguriert ist, um Anweisungen an einen Satz von Verarbeitungsmaschinen innerhalb jedes der Verarbeitungscluster auszugeben.
  • Bei mindestens einer Ausführungsform kann der Betrieb des Verarbeitungsclusters 2314 über einen Pipelineverwalter 2332 gesteuert werden, der die Verarbeitungs-Tasks auf die SIMT-Parallelprozessoren verteilt. Bei mindestens einer Ausführungsform empfängt der Pipeline-Manager 2332 Anweisungen von dem Scheduler 2310 der 23A und verwaltet die Ausführung dieser Anweisungen über einen Grafik-Multiprozessor 2334 und/oder eine Textureinheit 2336. Bei mindestens einer Ausführungsform ist der Grafikmultiprozessor 2334 eine beispielhafte Instanz eines SIMT-Parallelprozessors. Bei mindestens einer Ausführungsform können jedoch verschiedene Typen von SIMT-Parallelprozessoren mit unterschiedlichen Architekturen im Verarbeitungscluster 2314 vorhanden sein. Bei mindestens einer Ausführungsform können ein oder mehrere Instanzen des Grafik-Multiprozessors 2334 in einem Verarbeitungscluster 2314 vorhanden sein. Bei mindestens einer Ausführungsform kann der Grafikmultiprozessor 2334 Daten verarbeiten, und ein Datenkoppelfeld 2340 kann verwendet werden, um die verarbeiteten Daten an eines von mehreren möglichen Zielen zu verteilen, einschließlich anderer Shader-Einheiten. Bei mindestens einer Ausführungsform kann der Pipeline-Manager 2332 die Verteilung der verarbeiteten Daten erleichtern, indem er Ziele für die verarbeiteten Daten spezifiziert, die über das Datenkoppelfeld 2340 verteilt werden sollen.
  • Bei mindestens einer Ausführungsform kann jeder Grafik-Multiprozessor 2334 innerhalb des Verarbeitungsclusters 2314 einen identischen Satz von funktioneller Ausführungslogik (z. B. arithmetisch-logische Einheiten, Lade-Speicher-Einheiten usw.) beinhalten. Bei mindestens einer Ausführungsform kann die funktionale Ausführungslogik in einer Pipeline dazu konfiguriert sein, dass neue Anweisungen ausgegeben werden können, bevor vorherige Anweisungen abgeschlossen sind. Bei mindestens einer Ausführungsform unterstützt die funktionale Ausführungslogik eine Vielfalt von Operationen, darunter Ganzzahl- und Gleitkommaarithmetik, Vergleichsoperationen, boolesche Operationen, Bitverschiebung und die Berechnung verschiedener algebraischer Funktionen. Bei mindestens einer Ausführungsform kann dieselbe Hardware mit Funktionseinheiten genutzt werden, um unterschiedliche Operationen auszuführen, und es kann eine beliebige Kombination von Funktionseinheiten vorhanden sein.
  • Bei mindestens einer Ausführungsform bilden die an den Verarbeitungscluster 2314 übertragenen Anweisungen einen Thread. Bei mindestens einer Ausführungsform ist ein Satz von Threads, die über einen Satz von Parallelverarbeitungsmaschinen ausgeführt werden, eine Thread-Gruppe. Bei mindestens einer Ausführungsform führt eine Thread-Gruppe ein gemeinsames Programm an unterschiedlichen Eingabedaten aus. Bei mindestens einer Ausführungsform kann jeder Thread innerhalb einer Thread-Gruppe einer anderen Verarbeitungs-Engine innerhalb eines Grafik-Multiprozessors 2334 zugewiesen sein. Bei mindestens einer Ausführungsform kann eine Thread-Gruppe weniger Threads beinhalten als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 2334. Wenn eine Thread-Gruppe weniger Threads beinhaltet als eine Anzahl von Verarbeitungs-Engines, können bei mindestens einer Ausführungsform eine oder mehrere der Verarbeitungs-Engines während der Zyklen, in denen diese Thread-Gruppe verarbeitet wird, inaktiv sein. Bei mindestens einer Ausführungsform kann eine Thread-Gruppe auch mehr Threads beinhalten als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 2334. Bei mindestens einer Ausführungsform kann, wenn eine Thread-Gruppe mehr Threads beinhaltet als die Anzahl der Verarbeitungs-Engines in dem Grafik-Multiprozessor 2334, die Verarbeitung über aufeinander folgende Taktzyklen erfolgen. Bei mindestens einer Ausführungsform können mehrere Thread-Gruppen gleichzeitig auf einem Grafik-Multiprozessor 2334 ausgeführt werden.
  • Bei mindestens einer Ausführungsform weist der Grafik-Multiprozessor 2334 einen internen Cache-Speicher auf, um Lade- und Speicheroperationen auszuführen. Bei mindestens einer Ausführungsform kann der Grafik-Multiprozessor 2334 auf einen internen Cache verzichten und einen Cache-Speicher (z. B. L1-Cache 2348) innerhalb des Verarbeitungsclusters 2314 verwenden. Bei mindestens einer Ausführungsform hat jeder Grafik-Multiprozessor 2334 auch Zugriff auf L2-Caches innerhalb von Partitionseinheiten (z. B. die Partitionseinheiten 2320A-2320N der 23A), die von allen Verarbeitungsclustern 2314 gemeinsam genutzt werden und zur Datenübertragung zwischen Threads verwendet werden können. Bei mindestens einer Ausführungsform kann der Grafik-Multiprozessor 2334 auch auf den globalen Speicher außerhalb des Chips zugreifen, der einen oder mehrere lokale Parallelprozessorspeicher und/oder Systemspeicher beinhalten kann. Bei mindestens einer Ausführungsform kann jeder Speicher außerhalb der Parallelverarbeitungseinheit 2302 als globaler Speicher verwendet werden. Bei mindestens einer Ausführungsform weist der Verarbeitungscluster 2314 mehrere Instanzen des Grafik-Multiprozessors 2334 auf, die sich gemeinsame Anweisungen und Daten teilen können, die im L1-Cache 2348 gespeichert sein können.
  • Bei mindestens einer Ausführungsform kann jeder Verarbeitungscluster 2314 eine MMU 2345 (Speicherverwaltungseinheit) beinhalten, die derart konfiguriert ist, dass sie virtuelle Adressen auf physische Adressen abbildet. Bei mindestens einer Ausführungsform können sich eine oder mehrere Instanzen der MMU 2345 innerhalb der Speicherschnittstelle 2318 der 23A befinden. Bei mindestens einer Ausführungsform beinhaltet die MMU 2345 einen Satz von Seitentabelleneinträgen (PTEs), die dazu dienen, eine virtuelle Adresse auf eine physische Adresse einer Kachel sowie optional einen Cache-Zeilenindex abzubilden. Bei mindestens einer Ausführungsform kann die MMU 2345 Adressübersetzungs-Lookaside-Puffer (TLB) oder Caches aufweisen, die sich im Grafik-Multiprozessor 2334 oder im L1-Cache 2348 oder im Verarbeitungscluster 2314 befinden können. Bei mindestens einer Ausführungsform wird eine physische Adresse verarbeitet, um den Oberflächendatenzugriff lokal zu verteilen, um eine effiziente Anforderungsverschachtelung zwischen den Partitionseinheiten zu ermöglichen. Bei mindestens einer Ausführungsform kann ein Cache-Zeilenindex verwendet werden, um zu bestimmen, ob eine Anforderung für eine Cache-Zeile ein Treffer oder ein Fehler ist.
  • Bei mindestens einer Ausführungsform kann ein Verarbeitungscluster 2314 derart konfiguriert sein, dass jeder Grafik-Multiprozessor 2334 mit einer Textureinheit 2336 gekoppelt ist, um Texturabbildungsoperationen auszuführen, z. B. Bestimmen von Texturabtastpositionen, Lesen von Texturdaten und Filtern von Texturdaten. Bei mindestens einer Ausführungsform werden die Texturdaten aus einem internen Textur-L1-Cache (nicht gezeigt) oder aus einem L1-Cache innerhalb des Grafik-Multiprozessors 2334 gelesen und je nach Bedarf aus einem L2-Cache, einem lokalen Parallelprozessorspeicher oder dem Systemspeicher abgerufen. Bei mindestens einer Ausführungsform gibt jeder Grafikmultiprozessor 2334 verarbeitete Tasks an das Datenkoppelfeld 2340 aus, um den verarbeiteten Task einem anderen Verarbeitungscluster 2314 zur weiteren Verarbeitung zur Verfügung zu stellen oder um die verarbeitete Task über das Speicherkoppelfeld 2316 in einem L2-Cache, im lokalen Parallelprozessorspeicher oder im Systemspeicher zu speichern. Bei mindestens einer Ausführungsform ist eine preROP 2342 (Pre-Raster Operations Unit) derart konfiguriert, dass sie Daten vom Grafik-Multiprozessor 2334 empfängt und Daten an ROP-Einheiten weiterleitet, die sich in den hier beschriebenen Partitionseinheiten befinden können (z. B. die Partitionseinheiten 2320A-2320N der 23A). Bei mindestens einer Ausführungsform kann die preROP-Einheit 2342 Optimierungen für die Farbmischung ausführen, Pixelfarbdaten organisieren und Adressübersetzungen ausführen.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in dem Grafikverarbeitungscluster 2314 für Inferencing- oder Vorhersagevorgänge verwendet werden, die mindestens zum Teil auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden.
  • 23D zeigt einen Grafik-Multiprozessor 2334 gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform ist der Grafik-Multiprozessor 2334 mit dem Pipeline-Manager 2332 des Verarbeitungsclusters 2314 gekoppelt. Bei mindestens einer Ausführungsform weist der Grafikmultiprozessor 2334 eine Ausführungs-Pipeline auf, die unter anderem einen Anweisungs-Cache 2352, eine Befehlseinheit 2354, eine Adresszuordnungseinheit 2356, eine Registerdatei 2358, einen oder mehrere GPGPU-Kerne 2362 und eine oder mehrere Lade-/Speichereinheiten 2366 beinhaltet. Die GPGPU-Kerne 2362 und die Lade-/Speichereinheiten 2366 sind bei mindestens einer Ausführungsform über eine Speicher- und Cache-Verbindung 2368 mit dem Cache-Speicher 2372 und dem gemeinsamen Speicher 2370 verbunden.
  • Bei mindestens einer Ausführungsform empfängt der Anweisungs-Cache 2352 einen Stream von auszuführenden Anweisungen von dem Pipelineverwalter 2332. Bei mindestens einer Ausführungsform werden die Anweisungen in dem Anweisungs-Cache 2352 zwischengespeichert und von der Anweisungseinheit 2354 zur Ausführung weitergeleitet. Bei mindestens einer Ausführungsform kann die Anweisungseinheit 2354 die Anweisungen als Thread-Gruppen (z. B. Warps) versenden, wobei jeder Thread der Thread-Gruppe einer anderen Ausführungseinheit innerhalb der GPGPU-Kerne 2362 zugewiesen ist. Bei 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. Bei mindestens einer Ausführungsform kann die Adressabbildungseinheit 2356 verwendet werden, um Adressen in einem vereinheitlichten Adressraum in eine eindeutige Speicheradresse, auf die die Lade-/Speichereinheiten 2366 zugreifen können, zu übersetzen.
  • Bei mindestens einer Ausführungsform stellt die Registerdatei 2358 einen Satz von Registern für Funktionseinheiten des Grafik-Multiprozessors 2334 bereit. Bei mindestens einer Ausführungsform stellt die Registerdatei 2358 einen temporären Speicher für Operanden bereit, die mit Datenpfaden von funktionellen Einheiten (z. B. GPGPU-Kernen 2362, Lade-/Speichereinheit(en) 2366) des Grafikmultiprozessors 2334 verbunden sind. Bei mindestens einer Ausführungsform ist die Registerdatei 2358 zwischen den einzelnen Funktionseinheiten aufgeteilt, so dass jeder Funktionseinheit ein eigener Teil der Registerdatei 2358 zugeordnet ist. Bei mindestens einer Ausführungsform ist die Registerdatei 2358 auf verschiedene Warps aufgeteilt, die vom Grafikmultiprozessor 2334 ausgeführt werden.
  • Bei mindestens einer Ausführungsform können die GPGPU-Kerne 2362 jeweils Gleitkommaeinheiten (FPUs) und/oder ganzzahlige arithmetische Logikeinheiten (ALUs) aufweisen, die zur Ausführung von Anweisungen des Grafikmultiprozessors 2334 verwendet werden. Die GPGPU-Kerne 2362 können sich bei mindestens einer Ausführungsform in ihrer Architektur ähneln oder unterscheiden. Bei mindestens einer Ausführungsform beinhaltet ein erster Teil der GPGPU-Kerne 2362 eine FPU mit einfacher Genauigkeit und eine Ganzzahl-ALU, während ein zweiter Teil der GPGPU-Kerne eine FPU mit doppelter Genauigkeit beinhaltet. bei mindestens einer Ausführungsform können FPUs den Standard IEEE 754-2008 für Gleitkommaarithmetik umsetzen oder Gleitkommaarithmetik mit variabler Genauigkeit ermöglichen. Bei mindestens einer Ausführungsform kann der Grafikmultiprozessor 2334 zusätzlich eine oder mehrere Festfunktions- oder Sonderfunktionseinheiten aufweisen, um spezifische Funktionen, wie das Kopieren von Rechtecken oder Pixel-Blending-Vorgänge, auszuführen. Bei mindestens einer Ausführungsform können einer oder mehrere der GPGPU-Kerne 2362 auch Fest- oder Spezialfunktionslogik beinhalten.
  • Bei mindestens einer Ausführungsform beinhalten die GPGPU-Kerne 2362 SIMD-Logik, die dazu in der Lage ist, eine einzelne Anweisung an mehreren Datensätzen auszuführen. Bei mindestens einer Ausführungsform können die GPGPU-Kerne 2362 SIMD4-, SIMD8- und SIMD16-Anweisungen physisch ausführen und SIMD1-, SIMD2- und SIMD32-Anweisungen logisch ausführen. Bei mindestens einer Ausführungsform können SIMD-Anweisungen für GPGPU-Kerne zur Kompilierzeit von einem Shader-Compiler oder automatisch bei der Ausführung von Programmen generiert werden, die für SPMD- oder SIMT-Architekturen (Single Program Multiple Data) geschrieben und kompiliert wurden. Bei mindestens einer Ausführungsform können mehrere Threads eines Programms, das für ein SIMT-Ausführungsmodell konfiguriert ist, über eine einzige SIMD-Anweisung ausgeführt werden. Beispielsweise können bei mindestens einer Ausführungsform acht SIMT-Threads, die gleiche oder ähnliche Operationen ausführen, über eine einzige SIMD8-Logikeinheit parallel ausgeführt werden.
  • Bei mindestens einer Ausführungsform ist die Speicher- und Cache-Verbindung 2368 ein Verbindungsnetzwerk, das jede Funktionseinheit des Grafik-Multiprozessors 2334 mit der Registerdatei 2358 und dem gemeinsamen Speicher 2370 verbindet. Bei mindestens einer Ausführungsform ist die Speicher- und Cache-Interconnect 2368 eine Kreuzschienen-Interconnect, die es der Lade-/Speichereinheit 2366 ermöglicht, Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher 2370 und der Registerbank 2358 umzusetzen. Bei mindestens einer Ausführungsform kann die Registerdatei 2358 mit derselben Frequenz wie die GPGPU-Kerne 2362 arbeiten, so dass die Datenübertragung zwischen den GPGPU-Kernen 2362 und der Registerdatei 2358 eine sehr geringe Latenzzeit aufweisen kann. Bei mindestens einer Ausführungsform kann der gemeinsam genutzte Speicher 2370 verwendet werden, um die Kommunikation zwischen Threads, die auf Funktionseinheiten innerhalb des Grafik-Multiprozessors 2334 ausgeführt werden zu ermöglichen. Bei mindestens einer Ausführungsform kann der Cache-Speicher 2372 beispielsweise als Daten-Cache verwendet werden, um Texturdaten, die zwischen Funktionseinheiten und der Textureinheit 2336 übertragen werden, zwischenzuspeichern. Bei mindestens einer Ausführungsform kann der gemeinsame Speicher 2370 auch als programmgesteuerter Cache verwendet werden. Bei mindestens einer Ausführungsform können Threads, die auf GPGPU-Kernen 2362 ausgeführt werden, zusätzlich zu den automatisch zwischengespeicherten Daten, die im Cache-Speicher 2372 gespeichert sind, programmatisch Daten im gemeinsamen Speicher speichern.
  • Bei mindestens einer Ausführungsform ist ein Parallelprozessor oder eine GPGPU, wie hierin beschrieben, kommunikativ an Host-/Prozessorkerne gekoppelt, um Grafikoperationen, Operationen des maschinellen Lernens, Musteranalyseoperationen und verschiedene Funktionen einer Universal-GPU (GPGPU) zu beschleunigen. Bei mindestens einer Ausführungsform kann eine GPU über einen Bus oder ein anderes Interconnect (z. B. eine Hochgeschwindigkeits-Interconnect, wie etwa PCle oder NVLink) kommunikativ an den Host-Prozessor/die Kerne gekoppelt sein. Bei mindestens einer Ausführungsform kann eine GPU in einem Gehäuse oder Chip als Kerne integriert sein und kommunikativ über einen internen Prozessorbus/ein Interconnect, der/das intern zu einem Gehäuse oder Chip ist, an Kerne gekoppelt sein. Bei mindestens einer Ausführungsform können die Prozessorkerne unabhängig von einer Weise, auf welche eine GPU verbunden ist, einer derartigen GPU Arbeit in Form von Sequenzen von Befehlen/Anweisungen zuordnen, die in einem Arbeitsdeskriptor enthalten sind. Bei mindestens einer Ausführungsform verwendet diese GPU dann dedizierte Schaltungsanordnung/Logik zum effizienten Verarbeiten dieser Befehle/Anweisungen.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in dem Grafik-Multiprozessor 2334 für Inferencing- oder Vorhersagevorgänge verwendet werden, die mindestens zum Teil auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden.
  • 24 veranschaulicht ein Mehr-GPU-Rechensystem 2400 gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform kann das Multi-GPU-Rechnersystem 2400 einen Prozessor 2402 beinhalten, der über einen Host-Schnittstellen-Switch 2404 mit mehreren Universal-Grafikverarbeitungseinheiten (GPGPUs) 2406A-D verbunden ist. Bei mindestens einer Ausführungsform ist der Host-Schnittstellen-Switch 2404 eine PCI-Express-Switch-Vorrichtung, die den Prozessor 2402 mit einem PCI-Express-Bus verbindet, über den der Prozessor 2402 mit den GPGPUs 2406A-D kommunizieren kann. Die GPGPUs 2406A-D können bei mindestens einer Ausführungsform über eine Reihe von Hochgeschwindigkeits-Punkt-zu-Punkt-GPU-zu-GPU-Verbindungen 2416 miteinander verbunden sein. Bei mindestens einer Ausführungsform sind die GPU-zu-GPU-Verbindungen 2416 mit jeder der GPGPUs 2406A-D über eine eigene GPU-Verbindung verbunden. Bei mindestens einer Ausführungsform ermöglichen die P2P-GPU-Verbindungen 2416 eine direkte Kommunikation zwischen den einzelnen GPGPUs 2406A-D, ohne dass eine Kommunikation über den Host-Schnittstellenbus 2404, an den der Prozessor 2402 angeschlossen ist, erforderlich ist. Bei mindestens einer Ausführungsform, bei der GPU-zu-GPU-Verkehr zu den P2P-GPU-Verknüpfungen 2416 geleitet wird, bleibt der Host-Schnittstellenbus 2404 für den Systemspeicherzugriff oder zum Kommunizieren mit anderen Instanzen des Mehr-GPU-Rechensystems 2400 verfügbar, beispielsweise über eine oder mehrere Netzvorrichtungen. Während bei mindestens einer Ausführungsform die GPGPUs 2406A-D mit dem Prozessor 2402 über den Host-Schnittstellen-Switch 2404 verbunden sind, beinhaltet der Prozessor 2402 bei mindestens einer Ausführungsform eine direkte Unterstützung für P2P-GPU-Verknüpfungen 2416 und kann direkt mit den GPGPUs 2406A-D verbunden sein.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in dem Multi-GPU-Rechnersystem 2400 für Inferencing- oder Vorhersagevorgänge verwendet werden, die mindestens zum Teil auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden.
  • 25 ist ein Blockdiagramm eines Grafikprozessors 2500 gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2500 eine Ringverbindung 2502, ein Pipeline-Front-End 2504, eine Media-Maschine 2537 und Grafikkerne 2580A-2580N. Bei mindestens einer Ausführungsform verbindet die Ringverbindung 2502 den Grafikprozessor 2500 mit anderen Verarbeitungseinheiten, einschließlich anderer Grafikprozessoren oder eines oder mehrerer Mehrzweckprozessorkerne. Bei mindestens einer Ausführungsform ist der Grafikprozessor 2500 einer von vielen Prozessoren, die in ein Mehrkern-Verarbeitungssystem integriert sind.
  • Bei mindestens einer Ausführungsform empfängt der Grafikprozessor 2500 Stapel von Befehlen über die Ringverbindung 2502. Bei mindestens einer Ausführungsform werden die eingehenden Befehle von einem Befehlsstreamer 2503 im Pipeline-Front-End 2504 interpretiert. Bei mindestens einer Ausführungsform weist der Grafikprozessor 2500 eine skalierbare Ausführungslogik auf, um die 3D-Geometrieverarbeitung und die Medienverarbeitung über den/die Grafikkern(e) 2580A-2580N auszuführen. Bei mindestens einer Ausführungsform liefert der Befehlsstreamer 2503 für 3D-Geometrieverarbeitungsbefehle Befehle an die Geometrie-Pipeline 2536. Bei mindestens einer Ausführungsform liefert der Befehlsstreamer 2503 für mindestens einige Medienverarbeitungsbefehle Befehle an ein Video-Front-End 2534, das mit einer Medien-Maschine 2537 gekoppelt ist. Bei mindestens einer Ausführungsform weist die Medien-Maschine 2537 eine Video-Quality-Engine (VQE) 2530 für die Video- und Bildnachbearbeitung und eine Multi-Format-Encoder/Decoder-Engine (MFX) 2533 auf, um eine hardwarebeschleunigte Codierung und Decodierung von Mediendaten zu ermöglichen. Bei mindestens einer Ausführungsform generieren die Geometrie-Pipeline 2536 und die Medien-Engine 2537 jeweils Ausführungs-Threads für Thread-Ausführungsressourcen, die von mindestens einem Grafikkern 2580 bereitgestellt werden.
  • Bei mindestens einer Ausführungsform weist der Grafikprozessor 2500 skalierbare Thread-Ausführungsressourcen auf, die Grafikkerne 2580A-2580N aufweisen (welche modular sein können und manchmal als Kern-Slices bezeichnet werden), von denen jeder mehrere Sub-Kerne 2550A-50N, 2560A-2560N (manchmal als Kern-Sub-Slices bezeichnet) hat. Bei mindestens einer Ausführungsform kann der Grafikprozessor 2500 eine beliebige Anzahl von Grafikkernen 2580A ufweisen. Bei mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2500 einen Grafikkern 2580A mit mindestens einem ersten Sub-Kern 2550A und einem zweiten Sub-Kern 2560A. Bei mindestens einer Ausführungsform ist der Grafikprozessor 2500 ein Niedrigleistungsprozessor mit einem einzigen Sub-Kern (z. B. 2550A). Bei mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2500 mehrere Grafikkerne 2580A-2580N, von denen jeder einen Satz von ersten Sub-Kernen 2550A-2550N und einen Satz von zweiten Sub-Kernen 2560A-2560N beinhaltet. Bei mindestens einer Ausführungsform beinhaltet jeder Sub-Kern in den ersten Sub-Kernen 2550A-2550N mindestens einen ersten Satz von Ausführungseinheiten 2552A-2552N und Medien-/Textur-Sampler 2554-2554N. Bei mindestens einer Ausführungsform beinhaltet jeder Sub-Kern in den zweiten Sub-Kernen 2560A-2560N mindestens eine zweite Gruppe von Ausführungseinheiten 2562A-2562N und Samplern 2564-2564N. Bei mindestens einer Ausführungsform nutzt jeder Sub-Kern 2550A-2550N, 2560A-2560N gemeinsam einen Satz gemeinsam genutzter Ressourcen 2570A-2570N. Bei mindestens einer Ausführungsform beinhalten die gemeinsam genutzten Ressourcen einen gemeinsamen Cache-Speicher und eine Pixeloperationslogik.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Einzelheiten zu der Inferenz- und/oder Trainingslogik 1015 werden hier in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in dem Grafikprozessor 2500 für Inferencing- oder Vorhersageoperationen verwendet werden, die mindestens zum Teil auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen neuronaler Netzwerke oder hier beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden.
  • 26 ist ein Blockdiagramm, das die Mikroarchitektur für einen Prozessor 2600, der Logikschaltungen zum Ausführen von Anweisungen beinhalten kann, gemäß mindestens einer Ausführungsform veranschaulicht. Bei mindestens einer Ausführungsform kann der Prozessor 2600 Anweisungen ausführen, einschließlich x86-Anweisungen, ARM-Anweisungen, spezialisierter Anweisungen für anwendungsspezifische integrierte Schaltungen (ASICs) usw. Bei mindestens einer Ausführungsform kann der Prozessor 2600 Register zum Speichern gepackter Daten beinhalten, wie etwa 64 Bit breite MMX™-Register in Mikroprozessoren, die mit der MMX-Technologie der Intel Corporation aus Santa Clara, Kalifornien, ausgestattet sind. Bei mindestens einer Ausführungsform können MMX-Register, die sowohl als Ganzzahlals auch als Gleitkommaregister verfügbar sind, mit gepackten Datenelementen arbeiten, die mit SIMD- (Single Instruction, Multiple Data) und SSE- (Streaming SIMD Extensions) Anweisungen einhergehen. Bei mindestens einer Ausführungsform können 128 Bit breite XMM-Register, die sich auf SSE2-, SSE3-, SSE4-, AVX- oder darüber hinausgehende Technologien beziehen (allgemein als „SSEx“ bezeichnet), derartige gepackten Datenoperanden enthalten. Bei mindestens einer Ausführungsform kann der Prozessor 2600 Anweisungen zur Beschleunigung von Algorithmen für maschinelles Lernen oder Deep Learning, Training oder Inferencing ausführen.
  • Bei mindestens einer Ausführungsform weist der Prozessor 2600 ein In-Order-Front-End (eFront-Ende) 2601 auf, um auszuführende Anweisungen abzurufen und Anweisungen vorzubereiten, die später in der Prozessor-Pipeline verwendet werden sollen. Bei mindestens einer Ausführungsform kann das Front-End 2601 mehrere Einheiten beinhalten. Bei mindestens einer Ausführungsform holt ein Anweisungs-Prefetcher 2626 Befehle aus dem Speicher und leitet sie an einen Anweisungsdecoder 2628 weiter, der wiederum Anweisungen decodiert oder interpretiert. Bei mindestens einer Ausführungsform decodiert der Anweisungsdecoder 2628 beispielsweise eine gefangene Anweisung in eine oder mehrere Operationen, die als „Mikrobefehle“ oder „Mikrooperationen“ (auch „Mikro-Ops“ oder „Uops“ genannt) bezeichnet werden und von der Engine ausgeführt werden können. Bei mindestens einer Ausführungsform zerlegt der Anweisungsdecoder 2628 die Anweisung in einen Op-Code und entsprechende Daten- und Steuerfelder, die von der Mikroarchitektur zur Ausführung von Operationen gemäß mindestens einer Ausführungsform verwendet werden können. Bei mindestens einer Ausführungsform kann ein Trace-Cache 2630 decodierte uops zu programmgeordneten Sequenzen oder Traces in einer uop-Warteschlange 2634 zur Ausführung zusammenstellen. Bei mindestens einer Ausführungsform, wenn der Trace-Cache 2630 auf eine komplexe Anweisung stößt, stellt ein Mikrocode-ROM 2632 die für den Abschluss der Operation erforderlichen uops bereit.
  • Bei mindestens einer Ausführungsform können einige Anweisungen in eine einzelne Mikro-Op umgewandelt werden, während andere mehrere Mikro-Ops benötigen, um eine vollständige Operation abzuschließen. Bei mindestens einer Ausführungsform kann der Anweisungsdecoder 2628 auf den Mikrocode-ROM 2632 zugreifen, um die Anweisung auszuführen, wenn für die Ausführung einer Anweisung mehr als vier Mikro-Ops erforderlich sind. Bei mindestens einer Ausführungsform kann eine Anweisung in eine kleine Anzahl von Mikro-Ops zur Verarbeitung in dem Anweisungsdecoder 2628 decodiert werden. Bei mindestens einer Ausführungsform kann eine Anweisung innerhalb des Mikrocode-ROM 2632 gespeichert werden, wenn eine Reihe von Mikro-Ops zum Erzielen einer derartigen Operation benötigt werden sollte. Bei mindestens einer Ausführungsform betrifft der Trace-Cache 2630 eine programmierbare Logik-Anordnung („PLA“) als Einstiegspunkt, um einen korrekten Mikrobefehlszeiger für das Lesen von Mikrocode-Sequenzen zur Vervollständigung einer oder mehrere Anweisungen aus dem Mikrocode-ROM 2632 zu bestimmen. Bei mindestens einer Ausführungsform kann das Front-End 2601 der Engine, nachdem das Mikrocode-ROM 2632 die Sequenzierung von Mikrobefehlen für eine Anweisung beendet hat, das Abrufen von Mikrobefehlen aus dem Trace-Cache 2630 wieder aufnehmen.
  • Bei mindestens einer Ausführungsform kann die Out-of-Order-Ausführungs-Engine („Out-of-Order-Engine“) 2603 Anweisungen für die Ausführung vorbereiten. Bei mindestens einer Ausführungsform verfügt die Out-of-Order-Ausführungslogik über eine Reihe von Puffern, um den Fluss der Anweisungen zu glätten und neu zu ordnen, um die Rechenleistung zu optimieren, während sie eine Pipeline durchlaufen und zur Ausführung eingeplant werden. Die Out-of-Order-Ausführungs-Engine 2603 beinhaltet bei mindestens einer Ausführungsform ohne Einschränkung einen Allocator/Register-Renamer 2640, eine Speicher-uop-Warteschlange 2642, eine Ganzzahl/Gleitkommauop-Warteschlange 2644, einen Speicher-Scheduler 2646, einen schnellen Scheduler 2602, einen langsamen/allgemeinen Gleitkomma-Scheduler („stow/generat FP scheduler“) 2604 und einen einfachen Gleitkomma-Scheduler („simple FP scheduler“) 2606. Bei mindestens einer Ausführungsform werden der schnelle Scheduler 2602, der langsame/allgemeine Gleitkomma-Scheduler 2604 und der einfache Gleitkomma-Scheduler 2606 hier auch gemeinsam als „uop-Scheduler 2602, 2604, 2606“ bezeichnet. Bei mindestens einer Ausführungsform ordnet der Allocator/Register-Renamer 2640 Maschinenpuffer und Ressourcen zu, die jeder uop für seine Ausführung benötigt. Bei mindestens einer Ausführungsform benennt der Allokator/Registerumbenenner 2640 logische Register in Einträge in einer Registerbank um. Bei mindestens einer Ausführungsform ordnet der Allocator/Register-Renamer 2640 außerdem jedem uop einen Eintrag in einer von zwei uop-Warteschlangen zu, der Speicher-uop-Warteschlange 2642 für Speicheroperationen und der Ganzzahl-/Gleitkomma-uop-Warteschlange 2644 für Nicht-Speicheroperationen, und zwar vor dem Speicher-Scheduler 2646 und den uop-Schedulern 2602, 2604, 2606. Bei mindestens einer Ausführungsform bestimmen die µop-Scheduler 2602, 2604, 2606 basierend auf der Bereitschaft ihrer abhängigen Eingaberegister-Operandenquellen und der Verfügbarkeit der Ausführungsressourcen, die µops benötigen, um ihre Operation abzuschließen, wann eine µop zur Ausführung bereit ist. Bei mindestens einer Ausführungsform kann der schnelle Scheduler 2602 bei jeder Hälfte des Haupttaktzyklus einplanen, während der langsame/allgemeine Gleitkomma-Scheduler 2604 und der einfache Gleitkomma-Scheduler 2606 einmal pro Hauptprozessortaktzyklus einplanen können. Bei mindestens einer Ausführungsform vermitteln die uop-Scheduler 2602, 2604, 2606 für Dispatch-Anschlüsse, um uops für die Ausführung zu planen.
  • Bei mindestens einer Ausführungsform beinhaltet der Ausführungsblock 2611 ohne Einschränkung eine Integerregisterbank/ein Umgehungsnetzwerk 2608, eine Gleitkommaregisterbank/ein Umgehungsnetzwerk („FP-Registerbank/Umgehungsnetzwerk“) 2610, Adressgenerierungseinheiten (Address Generation Units - „AGUs“) 2612 und 2614, schnelle arithmetisch-logische Einheiten (ALUs) („schnelle ALUs“) 2616 und 2618, eine langsame arithmetisch-logische Einheit („langsame ALU“) 2620, eine Gleitkomma-ALU („FP“) 2622 und eine Gleitkomma-Bewegungseinheit („FP-Bewegung“) 2624. Bei mindestens einer Ausführungsform werden ein Ganzzahl-Registerdatei/Umgehungs-Netzwerk 2608 und ein Gleitkomma-Registerdatei/Umgehungs-Netzwerk 2610 hier auch als „Registerdateien 2608, 2610“ bezeichnet. Bei mindestens einer Ausführungsform werden die AGUSs 2612 und 2614, die schnellen ALUs 2616 und 2618, die langsame ALU 2620, die Gleitkomma-ALU 2622 und die Gleitkomma-Bewegungseinheit 2624 hier auch als „Ausführungseinheiten 2612, 2614, 2616, 2618, 2620, 2622 und 2624“ bezeichnet. Bei mindestens einer Ausführungsform kann der Ausführungsblock 2611 ohne Einschränkung eine beliebige Anzahl (einschließlich Null) und Art von Registerdateien, Umgehungsnetzwerken, Adressgenerierungseinheiten und Ausführungseinheiten in beliebiger Kombination aufweisen.
  • Bei mindestens einer Ausführungsform können die Registernetzwerke 2608, 2610 zwischen den uop-Schedulern 2602, 2604, 2606 und den Ausführungseinheiten 2612, 2614, 2616, 2618, 2620, 2622 und 2624 angeordnet sein. Bei mindestens einer Ausführungsform führt das Integer-Registerdatei/UmgehungsNetzwerk 2608 Integer-Operationen durch. Bei mindestens einer Ausführungsform führt das Gleitkommaregisterdatei/Umgehungs-Netzwerk 2610 Gleitkommaoperationen durch. Bei mindestens einer Ausführungsform kann jede der Registernetzwerke 2608, 2610 ohne Einschränkung ein Umgehungsnetzwerk aufweisen, das gerade abgeschlossene Ergebnisse, die noch nicht in die Registerdatei geschrieben wurden, umleiten oder an neue abhängige Uops weiterleiten kann. Bei mindestens einer Ausführungsform können die Registernetzwerke 2608, 2610 Daten miteinander austauschen. Bei mindestens einer Ausführungsform kann das Integer-Registerdatei/Umgehungs-Netzwerk 2608 ohne Einschränkung zwei separate Registerdateien aufweisen, eine Registerdatei für zweiunddreißig Bits von Daten niedriger Ordnung und eine zweite Registerdatei für zweiunddreißig Bits von Daten hoher Ordnung. Bei mindestens einer Ausführungsform kann das Gleitkomma-Registerdatei/Umgehungs-Netzwerk 2610 ohne Einschränkung 128 Bit breite Einträge aufweisen, da Gleitkomma-Anweisungen typischerweise Operanden mit einer Breite von 64 bis 128 Bit aufweisen.
  • Bei mindestens einer Ausführungsform können die Ausführungseinheiten 2612, 2614, 2616, 2618, 2620, 2622, 2624 Anweisungen ausführen. Bei mindestens einer Ausführungsform speichern Registernetzwerke 2608, 2610 Ganzzahl- und Gleitkommadaten-Operandenwerte, die für die Ausführung von Mikrobefehlen erforderlich sind. Bei mindestens einer Ausführungsform kann der Prozessor 2600 ohne Einschränkung eine beliebige Anzahl und Kombination von Ausführungseinheiten 2612, 2614, 2616, 2618, 2620, 2622, 2624 aufweisen. Bei mindestens einer Ausführungsform können die Gleitkomma-ALU 2622 und die Gleitkomma-Bewegungseinheit 2624 Gleitkomma-, MMX-, SIMD-, AVX- und SSE- oder andere Operationen ausführen, einschließlich spezieller maschineller Lernbefehle. Bei mindestens einer Ausführungsform kann die Gleitkomma-ALU 2622 ohne Einschränkung einen 64 Bit mal 64 Bit großen Gleitkommadividierer zum Ausführen von Divisions-, Quadratwurzel- und Rest-Mikro-Ops beinhalten. Bei mindestens einer Ausführungsform können Anweisungen, die einen Gleitkommawert beinhalten, mit Gleitkomma-Hardware verarbeitet werden. Bei mindestens einer Ausführungsform können ALU-Operationen an schnelle ALUs 2616, 2618 weitergeleitet werden. Bei mindestens einer Ausführungsform können die schnellen ALUS 2616, 2618 schnelle Operationen mit einer effektiven Latenzzeit von einem halben Taktzyklus ausführen. Bei mindestens einer Ausführungsform gehen die meisten komplexen ganzzahligen Operationen an die langsame ALU 2620, da die langsame ALU 2620 ohne Einschränkung ganzzahlige Ausführungshardware für Operationen mit langer Latenzzeit aufweisen kann, wie z. B. einen Multiplizierer, Schiebeeinheiten, eine Flag-Logik und eine Verzweigungsverarbeitung. Bei mindestens einer Ausführungsform können Speicherlade-/Speichervorgänge von AGUS 2612, 2614 ausgeführt werden. Bei mindestens einer Ausführungsform können die schnelle ALU 2616, die schnelle ALU 2618 und die langsame ALU 2620 Ganzzahloperationen mit 64-Bit-Datenoperanden ausführen. Bei mindestens einer Ausführungsform können die schnelle ALU 2616, die schnelle ALU 2618 und die langsame ALU 2620 derart umgesetzt sein, dass sie eine Vielfalt von Datenbitgrößen unterstützen, darunter sechzehn, zweiunddreißig, 128, 256, usw. Bei mindestens einer Ausführungsform können die Gleitkomma-ALU 2622 und die Gleitkomma-Bewegungseinheit 2624 so umgesetzt sein, dass sie einen Bereich von Operanden mit Bits unterschiedlicher Breite unterstützen, so dass 128 Bit breite gepackte Datenoperanden in Verbindung mit SIMD- und Multimedia-Anweisungen arbeiten.
  • Bei mindestens einer Ausführungsform leiten die uop-Scheduler 2602, 2604, 2606 abhängige Operationen ein, bevor die Ausführung der übergeordneten Last beendet ist. Bei mindestens einer Ausführungsform kann der Prozessor 2600, da uops spekulativ geplant und im Prozessor 2600 ausgeführt werden können, auch eine Logik zur Behandlung von Speicherfehlern aufweisen. Bei mindestens einer Ausführungsform können, falls eine Datenlast in einem Daten-Cache einen Fehler verursacht, abhängige Operationen in einer Pipeline im Gange sein, die einen Scheduler mit temporär inkorrekten Daten verlassen haben. Bei mindestens einer Ausführungsform verfolgt ein Wiederholungsmechanismus Anweisungen, die falsche Daten verwenden, und führt sie erneut aus. Bei mindestens einer Ausführungsform könnte es sein, dass abhängige Operationen wiederholt werden müssen, und es kann unabhängigen Operationen ermöglicht werden, abgeschlossen zu werden. Bei mindestens einer Ausführungsform können die Scheduler und ein Wiederholungsmechanismus mindestens einer Ausführungsform eines Prozessors auch dafür konfiguriert sein, Anweisungssequenzen für Zeichenfolgenvergleichsoperationen abzufangen.
  • Bei mindestens einer Ausführungsform können sich „Register“ auf bordeigene Prozessorspeicherorte beziehen, die als Teil von Anweisungen zum Identifizieren von Operanden verwendet werden können. Bei mindestens einer Ausführungsform kann es sich bei den Registern um diejenigen handeln, die von außerhalb eines Prozessors (aus der Sicht eines Programmierers) verwendbar sein können. Bei mindestens einer Ausführungsform sind die Register möglicherweise nicht auf einen konkreten Schaltungstyp beschränkt. Vielmehr kann ein Register bei mindestens einer Ausführungsform Daten speichern, Daten bereitstellen und hier beschriebene Funktionen ausführen. Bei mindestens einer Ausführungsform können die hierin beschriebenen Register durch Schaltungsanordnungen innerhalb eines Prozessors unter Verwendung einer beliebigen Anzahl unterschiedlicher Techniken umgesetzt werden, wie etwa dedizierter physischer Register, dynamisch zugeordneter physischer Register unter Verwendung von Registerumbenennung, Kombinationen aus dedizierten und dynamisch zugeordneten physischen Registern usw. Bei mindestens einer Ausführungsform speichern Ganzzahlregister 32-Bit-Ganzzahldaten. Bei mindestens einer Ausführungsform enthält eine Registerdatei auch acht Multimedia-SIMD-Register für gepackte Daten.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in einem Ausführungsblock 2611 und einem anderen Speicher oder in anderen Registern, die gezeigt sind oder nicht, enthalten sein. Zum Beispiel können bei mindestens einer Ausführungsform die hier beschriebenen Trainings- und/oder Inferencing-Verfahren eine oder mehrere der im Ausführungsblock 2611 veranschaulichten ALUs verwenden. Darüber hinaus können Gewichtungsparameter im chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Ausführungsblocks 2611 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzarchitekturen, Anwendungsfälle oder Trainingstechniken auszuführen.
  • 27 veranschaulicht einen Deep-Learning-Anwendungsprozessor 2700 gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform verwendet der Deep-Learning-Anwendungsprozessor 2700 Anweisungen, die, wenn sie vom Deep-Learning-Anwendungsprozessor 2700 ausgeführt werden, bewirken, dass der Deep-Learning-Anwendungsprozessor 2700 einige oder alle der in dieser Offenbarung beschriebenen Prozesse und Techniken ausführt. Bei mindestens einer Ausführungsform handelt es sich bei dem Deep-Learning-Anwendungsprozessor 2700 um eine anwendungsspezifische integrierte Schaltung (ASIC). Bei mindestens einer Ausführungsform führt der Anwendungsprozessor 2700 Matrixmultiplikationsoperationen entweder „fest verdrahtet“ in Hardware als Ergebnis des Ausführens einer oder mehrerer Anweisungen oder beides durch. Bei mindestens einer Ausführungsform beinhaltet der Deep-Learning-Anwendungsprozessor 2700 ohne Einschränkung Verarbeitungscluster2710(1)-2710(12), chipübergreifende Verknüpfungen (Inter-Chip Links - „ICLs“) 2720(1)-2720(12), chipübergreifende Controller (Inter-Chip Controllers - „ICCs“) 2730(1)-2730(2), Speicher mit hoher Bandbreite der zweiten Generation (High-Bandwidth Memory Second Generation - „HBM2“) 2740(1)-2740(4), Speicher-Controller (Memory Controllers - „Mem Ctrlrs“) 2742(1)-2742(4), eine Bitübertragungsschicht mit Speicher mit hoher Bandbreite (High Bandwidth Memory Physical Layer - „HBM PHY“) 2744(1)-2744(4), eine zentrale Verwaltungs-Controller-Verarbeitungseinheit („Verwaltungs-Controller-CPU“) 2750, eine serielle Peripherieschnittstelle, eine zwischenintegrierte Schaltung und einen Universal-Eingabe/Ausgabe-Block („SPI, I2C, GPIO“) 2760, einen Interconnect-Express-Controller für Peripheriekomponenten und einen Direktspeicherzugriffsblock („PCIe-Steuerung und DMA“) 2770 und einen sechzehnspurigen Interconnect-Express-Port für Peripheriekomponenten („PCI-Express x 16“) 2780.
  • Bei mindestens einer Ausführungsform können die Verarbeitungscluster2710 Deep-Learning-Operationen ausführen, einschließlich Inferenz- oder Vorhersageoperationen basierend auf Gewichtungsparametern, die mit einer oder mehreren Trainingstechniken, einschließlich der hierin beschriebenen, berechnet wurden. Bei mindestens einer Ausführungsform kann jeder Verarbeitungscluster 2710 ohne Einschränkung eine beliebige Anzahl und Art von Prozessoren beinhalten. Bei mindestens einer Ausführungsform kann der Deep-Learning-Anwendungsprozessor 2700 eine beliebige Anzahl und Art von Verarbeitungsclustern 2700 beinhalten. Bei mindestens einer Ausführungsform sind die Inter-Chip-Verbindungen 2720 bidirektional. Bei mindestens einer Ausführungsform ermöglichen die Inter-Chip-Verbindungen 2720 und die Inter-Chip-Controller2730 mehreren Deep-Learning-Anwendungsprozessoren 2700, Informationen auszutauschen, einschließlich Aktivierungsinformationen, die aus der Ausführung eines oder mehrerer maschineller Lernalgorithmen resultieren, die in einem oder mehreren neuronalen Netzwerken konfiguriert sind. Bei mindestens einer Ausführungsform kann der Deep Learning-Anwendungsprozessor 2700 eine beliebige Anzahl (einschließlich Null) und einen beliebigen Typ von ICLs 2720 und ICCs 2730 beinhalten.
  • Bei mindestens einer Ausführungsform stellen die HBM2s 2740 insgesamt 32 Gigabyte (GB) Speicher bereit. HBM2 2740(i) ist bei mindestens einer Ausführungsform sowohl mit dem Speicher-Controller 2742(i) als auch der HBM PHY 2744(i) assoziiert, wobei „i“ eine beliebige Ganzzahl ist. Bei mindestens einer Ausführungsform kann eine beliebige Anzahl von HBM2 2740 einen beliebigen Typ und eine beliebige Gesamtmenge an Speicher mit hoher Bandbreite bereitstellen und mit einer beliebigen Anzahl (einschließlich Null) und einem beliebigen Typ von Speicher-Controllern 2742 und HBM PHYs 2744 assoziiert sein. Bei mindestens einer Ausführungsform können SPI, I2C, GPIO 2760, PCIe-Controller und DMA 2770 und/oder PCle 2780 durch eine beliebige Anzahl und einen beliebigen Typ von Blöcken ersetzt werden, die eine beliebige Anzahl und einen beliebigen Typ von Kommunikationsstandards auf eine beliebige technisch machbare Weise ermöglichen.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie etwa ein neuronales Netzwerk, zu trainieren, um dem Deep-Learning-Anwendungsprozessor2700 bereitgestellte Informationen vorherzusagen oder zu inferenzieren. Bei mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor2700 verwendet, um Informationen basierend auf einem trainierten Modell zum maschinellen Lernen (z. B. einem neuronalen Netzwerk), das von einem anderen Prozessor oder System oder vom Deep Learning-Anwendungsprozessor 2700 trainiert wurde, abzuleiten oder vorherzusagen. Bei mindestens einer Ausführungsform kann der Prozessor 2700 verwendet werden, um einen oder mehrere hierin beschriebene Anwendungsfälle eines neuronalen Netzwerks auszuführen.
  • 28 ist ein Blockdiagramm eines neuromorphen Prozessors 2800 gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform kann der neuromorphe Prozessor 2800 eine oder mehrere Eingaben von Quellen außerhalb des neuromorphen Prozessors 2800 empfangen. Bei mindestens einer Ausführungsform können diese Eingaben an ein oder mehrere Neuronen 2802 innerhalb des neuromorphen Prozessors 2800 übertragen werden. Bei mindestens einer Ausführungsform können die Neuronen 2802 und ihre Komponenten unter Verwendung von Schaltungsanordnungen oder Logik, einschließlich einer oder mehrerer arithmetischer Logikeinheiten (ALUs), umgesetzt werden. Bei mindestens einer Ausführungsform kann der neuromorphe Prozessor 2800 ohne Einschränkung Tausende oder Millionen von Instanzen von Neuronen 2802 beinhalten, aber jede geeignete Anzahl von Neuronen 2802 kann verwendet werden. Bei mindestens einer Ausführungsform kann jede Instanz eines Neurons 2802 einen Neuroneneingang 2804 und einen Neuronenausgang 2806 beinhalten. Bei mindestens einer Ausführungsform können die Neuronen 2802 Ausgaben generieren, die an Eingänge anderer Instanzen von Neuronen 2802 übertragen werden können. Beispielsweise können bei mindestens einer Ausführungsform die Eingänge 2804 und Ausgänge 2806 der Neuronen über Synapsen 2808 miteinander verbunden sein.
  • Bei mindestens einer Ausführungsform können Neuronen 2802 und Synapsen 2808 so miteinander verbunden sein, dass der neuromorphe Prozessor 2800 arbeitet, um vom neuromorphen Prozessor 2800 empfangene Informationen zu verarbeiten oder zu analysieren. Bei mindestens einer Ausführungsform können die Neuronen 2802 einen Ausgabeimpuls („Spike“) senden („feuern“), wenn die über den Neuroneneingang 2804 empfangenen Eingaben einen Schwellenwert überschreiten. Bei mindestens einer Ausführungsform können die Neuronen 2802 an den Neuroneneingängen 2804 empfangene Signale summieren oder integrieren. Bei mindestens einer Ausführungsform können die Neuronen 2802 beispielsweise als Integrate-and-Fire- Neuronen mit Leckstrom (leaky integrate-and-fire neuron) umgesetzt sein, wobei das Neuron 2802 eine Ausgabe unter Verwendung einer Übertragungsfunktion wie einer Sigmoid- oder Schwellenfunktion generieren („feuern“) kann, wenn eine Summe (als „Membranpotential“ bezeichnet) einen Schwellenwert überschreitet. Bei mindestens einer Ausführungsform kann ein „Integrate-and-Fire“-Neuron mit Leckstrom die an den Eingängen 2804 des Neurons empfangenen Signale zu einem Membranpotenzial summieren und auch einen Abklingfaktor (oder ein Leckstrom) anwenden, um das Membranpotential zu reduzieren. Bei mindestens einer Ausführungsform kann ein „Integrate-and-Fire“-Neuron mit Leckstrom feuern, wenn mehrere Eingabesignale an den Neuroneneingängen 2804 schnell genug empfangen werden, um einen Schwellenwert zu überschreiten (d. h. bevor ein Membranpotenzial zu niedrig abklingt, um zu feuern). Bei mindestens einer Ausführungsform können die Neuronen 2802 unter Verwendung von Schaltungen oder Logik umgesetzt sein, die Eingaben empfangen, Eingaben in ein Membranpotential integrieren und ein Membranpotential abklingen lassen. Bei mindestens einer Ausführungsform können die Eingaben gemittelt werden, oder es kann jede andere geeignete Übertragungsfunktion verwendet werden. Darüber hinaus können die Neuronen 2802 bei mindestens einer Ausführungsform ohne Einschränkung Komparatorschaltungen oder Logik beinhalten, die einen Ausgangsspike am Neuronenausgang 2806 generieren, wenn das Ergebnis der Anwendung einer Übertragungsfunktion auf die Neuroneneingabe 2804 einen Schwellenwert überschreitet. Bei mindestens einer Ausführungsform kann das Neuron 2802, sobald es feuert, zuvor erhaltene Eingaben verwerfen, indem es beispielsweise ein Membranpotenzial auf 0 oder einen anderen geeigneten Standardwert zurücksetzt. Bei mindestens einer Ausführungsform kann das Neuron 2802, sobald das Membranpotenzial auf 0 zurückgesetzt ist, nach einer geeigneten Zeitspanne (oder Refraktärzeit) den normalen Betrieb wieder aufnehmen.
  • Bei mindestens einer Ausführungsform können die Neuronen 2802 über Synapsen 2808 miteinander verbunden sein. Bei mindestens einer Ausführungsform können Synapsen 2808 arbeiten, um Signale von einem Ausgang eines ersten Neurons 2802 zu einem Eingang eines zweiten Neurons 2802 zu übertragen. Bei mindestens einer Ausführungsform können die Neuronen 2802 Informationen über mehr als eine Instanz der Synapse 2808 übertragen. Bei mindestens einer Ausführungsform können eine oder mehrere Instanzen eines neuronalen Ausgangs 2806 über eine Instanz einer Synapse 2808 mit einer Instanz eines neuronalen Eingangs 2804 in demselben Neuron 2802 verbunden sein. Bei mindestens einer Ausführungsform kann eine Instanz eines Neurons 2802, die eine über eine Instanz einer Synapse 2808 zu übertragende Ausgabe generiert, als „präsynaptisches Neuron“ in Bezug auf diese Instanz einer Synapse 2808 bezeichnet werden. Bei mindestens einer Ausführungsform kann eine Instanz eines Neurons 2802, die eine über eine Instanz einer Synapse 2808 übertragene Eingabe empfängt, als „postsynaptisches Neuron“ in Bezug auf diese Instanz einer Synapse 2808 bezeichnet werden. Da eine Instanz eines Neurons 2802 Eingaben von einer oder mehreren Instanzen einer Synapse 2808 empfangen und auch Ausgaben über eine oder mehrere Instanzen einer Synapse 2808 übertragen kann, kann eine einzelne Instanz eines Neurons 2802 bei mindestens einer Ausführungsform sowohl ein „präsynaptisches Neuron“ als auch ein „postsynaptisches Neuron“ in Bezug auf verschiedene Instanzen von Synapsen 2808 sein.
  • Bei mindestens einer Ausführungsform können die Neuronen 2802 in eine oder mehrere Schichten organisiert sein. Jede Instanz eines Neurons 2802 kann bei mindestens einer Ausführungsform einen Neuronenausgang 2806 aufweisen, der sich über eine oder mehrere Synapsen 2808 zu einem oder mehreren Eingängen 2804 auffächern kann. Bei mindestens einer Ausführungsform können die Ausgänge 2806 von Neuronen 2802 in einer ersten Schicht 2810 mit Eingängen 2804 von Neuronen 2802 in einer zweiten Schicht 2812 verbunden sein. Bei mindestens einer Ausführungsform kann die Schicht 2810 als „vorwärtsgekoppelte Schicht“ bezeichnet werden. Bei mindestens einer Ausführungsform kann sich jede Instanz eines Neurons 2802 in einer Instanz einer ersten Schicht 2810 zu jeder Instanz eines Neurons 2802 in einer zweiten Schicht 2812 auffächern. Bei mindestens einer Ausführungsform kann die erste Schicht 2810 als „vollständig vernetzte Feed-Forward-Schicht“ bezeichnet werden. Bei mindestens einer Ausführungsform kann sich jede Instanz eines Neurons 2802 in einer Instanz einer zweiten Schicht 2812 zu weniger als allen Instanzen eines Neurons 2802 in einer dritten Schicht 2814 auffächern. Bei mindestens einer Ausführungsform kann eine zweite Schicht 2812 als eine „spärlich vernetzte Feed-Forward-Schicht“ bezeichnet werden. Bei mindestens einer Ausführungsform können sich Neuronen 2802 in der zweiten Schicht 2812 zu Neuronen 2802 in mehreren anderen Schichten auffächern, einschließlich zu Neuronen 2802 in (derselben) zweiten Schicht 2812. Bei mindestens einer Ausführungsform kann die zweite Schicht 2812 als eine „rekurrente Schicht“ bezeichnet werden. Der neuromorphe Prozessor 2800 kann bei mindestens einer Ausführungsform ohne Einschränkung jede geeignete Kombination von rekurrenten Schichten und Feedforward-Schichten umfassen, einschließlich, ohne Einschränkung, sowohl spärlich vernetzte Feedforward-Schichten als auch vollständig vernetzte Feedforward-Schichten.
  • Bei mindestens einer Ausführungsform kann der neuromorphe Prozessor 2800 ohne Einschränkung eine rekonfigurierbare Verbindungsarchitektur oder dedizierte festverdrahtete Verbindungen umfassen, um Synapsen 2808 mit Neuronen 2802 zu verbinden. Bei mindestens einer Ausführungsform kann der neuromorphe Prozessor 2800 ohne Einschränkung eine Schaltungsanordnung oder Logik umfassen, die es ermöglicht, dass Synapsen je nach Bedarf basierend auf der Topologie eines neuronalen Netzwerks und dem Fan-in/-out von Neuronen verschiedenen Neuronen 2802 zugeordnet werden können. Beispielsweise können bei mindestens einer Ausführungsform Synapsen 2808 unter Verwendung einer Verbindungsstruktur, wie z. B. einem Netzwerk auf einem Chip, oder mit dedizierten Verbindungen mit Neuronen 2802 verbunden werden. Bei mindestens einer Ausführungsform können die Synapsenverbindungen und deren Komponenten unter Verwendung von Schaltungsanordnungen oder Logik umgesetzt werden.
  • 29 ist ein Blockdiagramm eines Verarbeitungssystems gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform beinhaltet das System 2900 einen oder mehrere Prozessoren 2902 und einen oder mehrere Grafikprozessoren 2908 und kann ein Einzelprozessor-Desktop-System, ein Multiprozessor-Workstation-System oder ein Server-System mit einer großen Anzahl von Prozessoren 2902 oder Prozessorkernen 2907 sein. Bei mindestens einer Ausführungsform ist das System 2900 eine Verarbeitungsplattform, die in eine integrierte System-on-a-Chip-Schaltung (SoC-Schaltung) zur Verwendung in mobilen, tragbaren oder eingebetteten Einrichtungen integriert ist.
  • Bei mindestens einer Ausführungsform kann das System 2900 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. Bei mindestens einer Ausführungsform ist das System 2900 ein Mobiltelefon, ein Smartphone, eine Tablet-Rechenvorrichtung oder eine mobile Internet-Vorrichtung. Bei mindestens einer Ausführungsform kann das Verarbeitungssystem 2900 auch eine tragbare Einrichtung aufweisen, mit dieser gekoppelt oder in diese integriert sein, wie z. B. eine tragbare Einrichtung für eine intelligente Uhr, eine intelligente Brille, eine Augmented-Reality-Einrichtung oder eine Virtual-Reality-Einrichtung. Bei mindestens einer Ausführungsform ist das Verarbeitungssystem 2900 eine Fernseh- oder Set-Top-Box-Einrichtung mit einem oder mehreren Prozessoren 2902 und einer grafischen Schnittstelle, die von einem oder mehreren Grafikprozessoren 2908 generiert ist.
  • Bei mindestens einer Ausführungsform weisen ein oder mehrere Prozessoren 2902 jeweils einen oder mehrere Prozessorkerne 2907 auf, um Anweisungen zu verarbeiten, die, wenn sie ausgeführt werden, Operationen für System- und Benutzersoftware ausführen. Bei mindestens einer Ausführungsform ist jeder von einem oder mehreren Prozessorkernen 2907 derart konfiguriert, dass er eine spezifische Anweisungsfolge 2909 verarbeitet. Bei mindestens einer Ausführungsform kann die Anweisungssequenz 2909 Complex Instruction Set Computing (CISC), Reduced Instruction Set Computing (RISC) oder Rechnen über ein Very Long Instruction Word (VLIW) ermöglichen. Bei mindestens einer Ausführungsform können die Prozessorkerne 2907 jeweils eine unterschiedliche Anweisungsfolge 2909 verarbeiten, die Anweisungen beinhalten kann, um die Emulation anderer Anweisungsfolgen zu erleichtern. Bei mindestens einer Ausführungsform kann der Prozessorkern 2907 auch andere verarbeitende Einrichtungen beinhalten, wie etwa einen digitalen Signalprozessor (DSP).
  • Bei mindestens einer Ausführungsform beinhaltet der Prozessor 2902 einen Cache-Speicher 2904. Bei mindestens einer Ausführungsform kann der Prozessor 2902 einen einzelnen internen Cache oder mehrere Levels von internem Cache aufweisen. Bei mindestens einer Ausführungsform wird der Cache-Speicher von verschiedenen Komponenten des Prozessors 2902 gemeinsam genutzt. Bei mindestens einer Ausführungsform verwendet der Prozessor 2902 auch einen externen Cache (z. B. einen Level-3-Cache (L3-Cache) oder Last Level Cache (LLC)) (nicht gezeigt), der unter Verwendung bekannter Cache-Kohärenztechniken von den Prozessorkernen 2907 gemeinsam genutzt werden kann. Bei mindestens einer Ausführungsform ist zusätzlich eine Registerdatei 2906 in dem Prozessor 2902 vorhanden, die unterschiedliche Arten von Registern zur Speicherung unterschiedlicher Datentypen beinhalten kann (z. B. Ganzzahlregister, Gleitkommaregister, Statusregister und ein Anweisungszeigerregister). Bei mindestens einer Ausführungsform kann die Registerdatei 2906 Allzweckregister oder andere Register aufweisen.
  • Bei mindestens einer Ausführungsform sind ein oder mehrere Prozessor(en) 2902 mit einem oder mehreren Schnittstellenbus(sen) 2910 gekoppelt, um Kommunikationssignale, wie etwa Adress-, Daten- oder Steuersignale, zwischen dem Prozessor 2902 und anderen Komponenten in dem System 2900 zu übertragen. Bei mindestens einer Ausführungsform kann der Schnittstellenbus 2910 ein Prozessorbus sein, beispielsweise eine Version eines Direct Media Interface-Busses (DMI-Busses). Bei mindestens einer Ausführungsform ist der Schnittstellenbus 2910 nicht auf einen DMI-Bus beschränkt und kann einen oder mehrere Peripheral Component Interconnect-Busse (z. B. PCI, PCI Express), Speicherbusse oder andere Arten von Schnittstellenbussen aufweisen. Bei mindestens einer Ausführungsform beinhalten Prozessor(en) 2902 einen integrierten Speicher-Controller 2916 und einen Plattform-Controller-Hub 2930. Bei mindestens einer Ausführungsform erleichtert der Speicher-Controller 2916 die Kommunikation zwischen einer Speichervorrichtung und anderen Komponenten des Systems 2900, während der Plattform-Controller-Hub (PCH) 2930 Verbindungen zu E/A-Einrichtungen über einen lokalen E/A-Bus bereitstellt.
  • Bei mindestens einer Ausführungsform kann die Speichervorrichtung 2920 eine dynamische Direktzugriffsspeichervorrichtung (DRAM), eine statische Direktzugriffsspeichervorrichtung (SRAM), eine Flash-Speichervorrichtung, eine Phasenwechsel-Speichervorrichtung oder eine andere Speichervorrichtung mit geeigneter Leistung sein, um als Prozessspeicher zu dienen. Bei mindestens einer Ausführungsform kann die Speichervorrichtung 2920 als Systemspeicher für das System 2900 arbeiten, um Daten 2922 und Anweisungen 2921 zur Verwendung zu speichern, wenn ein oder mehrere Prozessoren 2902 eine Anwendung oder einen Prozess ausführen. Bei mindestens einer Ausführungsform ist der Speicher-Controller 2916 auch mit einem optionalen externen Grafikprozessor 2912 gekoppelt, der mit einem oder mehreren Grafikprozessoren 2908 in den Prozessoren 2902 kommunizieren kann, um Grafik- und Medienoperationen auszuführen. Bei mindestens einer Ausführungsform kann eine Anzeigevorrichtung 2911 an den (die) Prozessor(en) 2902 angeschlossen sein. Bei mindestens einer Ausführungsform kann die Anzeigevorrichtung 2911 eine oder mehrere interne Anzeigevorrichtungen, wie z. B. in einer mobilen elektronischen Vorrichtung oder einem Laptop, oder eine externe Anzeigevorrichtung, die über eine Anzeigeschnittstelle (z. B. DisplayPort usw.) angeschlossen ist, beinhalten. Bei mindestens einer Ausführungsform kann die Anzeigevorrichtung 2911 eine am Kopf befestigte Anzeige (Head Mounted Display - HMD) beinhalten, wie etwa eine stereoskopische Anzeigevorrichtung zur Verwendung bei Virtual-Reality-Anwendungen (VR-Anwendungen) oder Augmented-Reality-Anwendungen (AR-Anwendungen).
  • Bei mindestens einer Ausführungsform ermöglicht der Plattform-Controller-Hub 2930 den Anschluss von Peripheriegeräten an die Speichervorrichtung 2920 und dem Prozessor 2902 über einen Hochgeschwindigkeits-E/A-Bus. Bei mindestens einer Ausführungsform beinhalten die E/A-Peripheriegeräte unter anderem einen Audio-Controller 2946, einen Netzwerkcontroller 2934, eine Firmware-Schnittstelle 2928, einen drahtlosen Transceiver 2926, Berührungssensoren 2925 und eine Vorrichtung zur Datenspeicherung 2924 (z. B. Festplattenlaufwerk, Flash-Speicher usw.). Bei mindestens einer Ausführungsform kann die Datenspeichervorrichtung 2924 über eine Speicherschnittstelle (z. B. SATA) oder über einen Peripheriebus, wie etwa einen Peripheral-Component-Interconnect-Bus (z. B. PCI, PCI Express), verbunden sein. Bei mindestens einer Ausführungsform können die Berührungssensoren 2925 Touchscreen-Sensoren, Drucksensoren oder Fingerabdrucksensoren beinhalten. Bei mindestens einer Ausführungsform kann der drahtlose Transceiver 2926 ein Wi-Fi-Transceiver, ein Bluetooth-Transceiver oder ein Mobilfunk-Transceiver wie ein 3G-, 4G- oder Long Term Evolution-Transceiver (LTE-Transceiver) sein. Bei mindestens einer Ausführungsform ermöglicht die Firmware-Schnittstelle 2928 die Kommunikation mit der System-Firmware und kann z. B. eine einheitliche erweiterbare Firmware-Schnittstelle (UEFI) sein. Bei mindestens einer Ausführungsform kann die Netzwerksteuerung 2934 eine Netzwerkverbindung mit einem drahtgebundenen Netzwerk ermöglichen. Bei mindestens einer Ausführungsform ist eine Hochleistungs-Netzwerksteuerung (nicht dargestellt) mit dem Schnittstellenbus 2910 gekoppelt. Bei mindestens einer Ausführungsform handelt es sich bei dem Audio-Controller 2946 um einen mehrkanaligen High-Definition-Audio-Controller. Bei mindestens einer Ausführungsform beinhaltet das System 2900 einen optionalen Legacy-E/A-Controller 2940 zur Kopplung von Legacy-Vorrichtungen (z. B. Personal System 2 (PS/2)) mit dem System 2900. Bei mindestens einer Ausführungsform kann der Plattform-Controller-Hub 2930 auch an eine oder mehrere Universal Serial Bus-Controller (USB-Controller) 2942 angeschlossen sein, die Eingabevorrichtungen wie Tastatur- und Mauskombinationen 2943, eine Kamera 2944 oder andere USB-Eingabevorrichtungen anschließen.
  • Bei mindestens einer Ausführungsform kann eine Instanz des Speicher-Controllers 2916 und des Plattform-Controller-Hubs 2930 in einen diskreten externen Grafikprozessor, wie den externen Grafikprozessor 2912, integriert sein. Bei mindestens einer Ausführungsform kann der Plattform-Controller-Hub 2930 und/oder Speicher-Controller 2916 extern bezüglich eines oder mehrerer Prozessor(en) 2902 sein. Beispielsweise kann das System 2900 bei mindestens einer Ausführungsform einen externen Speicher-Controller 2916 und einen Plattform-Controller-Hub 2930 aufweisen, der als Speicher-Controller-Hub und Peripherie-Controller-Hub innerhalb eines System-Chipsatzes konzipiert sein kann, der mit dem (den) Prozessor(en) 2902 in Verbindung steht.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform können Teile oder die gesamte Inferenz- und/oder Trainingslogik 1015 in den Grafikprozessor 2908 integriert sein. Beispielsweise können bei mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferencing-Techniken eine oder mehrere der in einer 3D-Pipeline verkörperten ALUs verwenden. Darüber hinaus können bei mindestens einer Ausführungsform die hier beschriebenen Inferencing- und/oder Trainingsoperationen mit einer anderen als der in den 10A oder 10B veranschaulichten Logik ausgeführt werden. Bei mindestens einer Ausführungsform können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder in Registern (dargestellt oder nicht dargestellt) gespeichert werden, die ALUs des Grafikprozessors 2908 konfigurieren, um einen oder mehrere hier beschriebene Algorithmen zum maschinellen Lernen, Architekturen für neuronale Netze, Anwendungsfälle oder Trainingsverfahren auszuführen.
  • 30 ist ein Blockdiagramm eines Prozessors 3000 mit einem oder mehreren Prozessorkernen 3002A-3002N, einer integrierten Speichersteuerung 3014 und einem integrierten Grafikprozessor 3008, gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform kann der Prozessor 3000 zusätzliche Kerne aufweisen, bis hin zu und einschließlich des zusätzlichen Kerns 3002N, der durch strichgepunktete Kästchen dargestellt ist. Bei mindestens einer Ausführungsform beinhaltet jeder der Prozessorkerne 3002A-3002N eine oder mehrere interne Cache-Einheiten 3004-3004N. Bei mindestens einer Ausführungsform beinhaltet jeder Prozessorkern auch Zugriff auf eine oder mehrere gemeinsam genutzte Cache-Einheiten 3006.
  • Bei mindestens einer Ausführungsform stellen die internen Cache-Einheiten 3004-3004N und die gemeinsam genutzten Cache-Einheiten 3006 eine Cache-Speicherhierarchie innerhalb des Prozessors 3000 dar. Bei mindestens einer Ausführungsform können die Cache-Speichereinheiten 3004-3004N mindestens eine Ebene eines Anweisungs- und Daten-Caches innerhalb jedes Prozessorkerns und eine oder mehrere Ebenen eines gemeinsam genutzten Mid-Level-Caches, wie z. B. eine Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cache-Levels, beinhalten, wobei ein höchster Cache-Level vor einem externen Speicher als LLC klassifiziert ist. Bei mindestens einer Ausführungsform hält die Cache-Kohärenzlogik die Kohärenz zwischen verschiedenen Cache-Einheiten 3006 und 3004-3004N aufrecht.
  • Bei mindestens einer Ausführungsform kann der Prozessor 3000 auch einen Satz aus einer oder mehreren Bus-Controller-Einheiten 3016 und einen Systemagentenkern 3010 beinhalten. Bei mindestens einer Ausführungsform verwalten eine oder mehrere Bus-Controller 3016 einen Satz von Peripheriebussen, wie einen oder mehrere PCI-oder PCI-Express-Busse. Bei mindestens einer Ausführungsform bietet der Systemagenten-Kern 3010 Verwaltungsfunktionen für verschiedene Prozessorkomponenten. Bei mindestens einer Ausführungsform weist der Systemagenten-Kern 3010 eine oder mehrere integrierte Speichersteuerungen 3014 auf, um den Zugriff auf verschiedene externe Speichervorrichtungen (nicht gezeigt) zu verwalten.
  • Bei mindestens einer Ausführungsform beinhaltet einer oder beinhalten mehrere der Prozessorkerne 3002A-3002N Unterstützung für gleichzeitiges Multithreading. Bei mindestens einer Ausführungsform beinhaltet der Systemagentenkern 3010 Komponenten zur Koordinierung und zum Betrieb der Kerne 3002A-3002N während der Multithreading-Verarbeitung. Bei mindestens einer Ausführungsform kann der Systemagentenkern 3010 zusätzlich eine Leistungssteuerungseinheit (PCU) beinhalten, die Logik und Komponenten zur Regelung eines oder mehrerer Leistungszustände der Prozessorkerne 3002A-3002N und des Grafikprozessors 3008 beinhaltet.
  • Bei mindestens einer Ausführungsform beinhaltet der Prozessor 3000 zusätzlich einen Grafikprozessor 3008 zur Ausführung von Grafikverarbeitungsoperationen. Bei mindestens einer Ausführungsform ist der Grafikprozessor 3008 mit gemeinsamen Cache-Einheiten 3006 und dem Systemagenten-Kern 3010, der eine oder mehrere integrierte Speichersteuerungen 3014 beinhaltet, gekoppelt. Bei mindestens einer Ausführungsform weist der Systemagenten-Kern 3010 auch einen Anzeige-Controller 3011 auf, um die Ausgabe des Grafikprozessors an eine oder mehrere gekoppelte Anzeigen zu steuern. Bei mindestens einer Ausführungsform kann der Anzeige-Controller 3011 auch ein separates Modul sein, das über mindestens ein Interconnect mit dem Grafikprozessor 3008 gekoppelt ist, oder sie kann in den Grafikprozessor 3008 integriert sein.
  • Bei mindestens einer Ausführungsform wird eine ringbasierte Verbindungseinheit 3012 verwendet, um interne Komponenten des Prozessors 3000 zu verbinden. Bei mindestens einer Ausführungsform kann eine alternative Interconnect-Einheit verwendet werden, wie z. B. ein Punkt-zu-Punkt-Interconnect, ein geschaltetes Interconnect oder andere Techniken. Bei mindestens einer Ausführungsform ist der Grafikprozessor 3008 über eine E/A-Verbindung 3013 mit der Ringverbindung 3012 verbunden.
  • Bei mindestens einer Ausführungsform stellt die E/A-Verbindung 3013 mindestens eine von mehreren Sorten von E/A-Interconnects dar, einschließlich eines gehäuseinternen E/A-Interconnect, die Kommunikation zwischen verschiedenen Prozessorkomponenten und einem eingebetteten Speichermodul 3018 mit hoher Rechenleistung, wie etwa einem eDRAM-Modul, erleichtert. Bei mindestens einer Ausführungsform verwenden jeder der Prozessorkerne 3002A-3002N und der Grafikprozessor 3008 das eingebettete Speichermodul 3018 als gemeinsamen Last Level Cache.
  • Bei mindestens einer Ausführungsform sind die Prozessorkerne 3002A-3002N homogene Kerne, die eine gemeinsame Anweisungssatzarchitektur ausführen. Bei mindestens einer Ausführungsform sind die Prozessorkerne 3002A-3002N hinsichtlich der Anweisungssatzarchitektur (ISA) heterogen, wobei ein oder mehrere Prozessorkerne 3002A-3002N einen gemeinsamen Anweisungssatz ausführen, während ein oder mehrere andere Kerne der Prozessorkerne 3002A-3002N eine Teilmenge eines gemeinsamen Anweisungssatzes oder einen unterschiedlichen Anweisungssatz ausführen. Bei mindestens einer Ausführungsform sind die Prozessorkerne 3002A-3002N in Bezug auf die Mikroarchitektur heterogen, wobei ein oder mehrere Kerne mit einem relativ höheren Energieverbrauch mit einem oder mehreren Kernen mit einem niedrigeren Energieverbrauch gekoppelt sind. Bei mindestens einer Ausführungsform kann der Prozessor 3000 auf einem oder mehreren Chips oder als integrierte SoC-Schaltung umgesetzt sein.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform können Teile oder die gesamte Inferenz- und/oder Trainingslogik 1015 in den Grafikprozessor 3008 integriert sein. Beispielsweise können bei mindestens einer Ausführungsform die hier beschriebenen Trainings- und/oder Inferencing-Verfahren eine oder mehrere ALUs verwenden, die in einer 3D-Pipeline, (einem) Grafikkern(en) 3002, einer gemeinsamen Funktionslogik oder einer anderen Logik in 30 verkörpert sind. Darüber hinaus können bei mindestens einer Ausführungsform die hier beschriebenen Inferencing- und/oder Trainingsoperationen mit einer anderen als der in den 10A oder 10B veranschaulichten Logik ausgeführt werden. Bei mindestens einer Ausführungsform können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Prozessors 3000 konfigurieren, um einen oder mehrere hier beschriebene Algorithmen zum maschinellen Lernen, Architekturen für neuronale Netze, Anwendungsfälle oder Trainingsverfahren auszuführen.
  • 31 ist ein Blockdiagramm eines Grafikprozessors 3100, bei dem es sich um eine diskrete Grafikverarbeitungseinheit oder um einen mit einer Vielzahl von Verarbeitungskernen integrierten Grafikprozessor handeln kann. Bei mindestens einer Ausführungsform kommuniziert der Grafikprozessor 3100 über eine einem Speicher zugeordnete E/A-Schnittstelle mit Registern auf dem Grafikprozessor 3100 und mit Befehlen, die im Speicher abgelegt sind. Bei mindestens einer Ausführungsform beinhaltet der Grafikprozessor 3100 eine Speicherschnittstelle 3114 für den Zugriff auf den Speicher. Bei mindestens einer Ausführungsform ist die Speicherschnittstelle 3114 eine Schnittstelle zum lokalen Speicher, einem oder mehreren internen Caches, einem oder mehreren gemeinsam genutzten externen Caches und/oder zum Systemspeicher.
  • Bei mindestens einer Ausführungsform beinhaltet der Grafikprozessor 3100 auch eine Anzeige-Controller 3102, um Anzeigeausgangsdaten an eine Anzeigevorrichtung 3120 zu steuern. Bei mindestens einer Ausführungsform beinhaltet von der Anzeige-Controller 3102 Hardware für eine oder mehrere Überlagerungsebenen für die Anzeigevorrichtung 3120 und die Zusammensetzung mehrerer Schichten von Video- oder Benutzerschnittstellenelementen. Bei mindestens einer Ausführungsform kann die Anzeigevorrichtung 3120 eine interne oder externe Anzeigevorrichtung sein. Bei mindestens einer Ausführungsform handelt es sich bei der Anzeigevorrichtung 3120 um eine am Kopf getragene Anzeigevorrichtung, wie z. B. eine Virtual-Reality- (VR-) Anzeigevorrichtung oder eine Augmented-Reality- (AR-) Anzeigevorrichtung. Bei mindestens einer Ausführungsform beinhaltet der Grafikprozessor 3100 eine Videocodec-Engine 3106, um Medien in, aus oder zwischen einem oder mehreren Mediencodierformaten zu codieren, zu decodieren oder zu transcodieren, einschließlich, aber ohne darauf beschränkt zu sein Moving Picture Experts Group-Formate (MPEG-Formate) wie MPEG-2, Advanced Video Coding-Formate (AVC-Formate), wie H.264 /MPEG-4 AVC, sowie die Society of Motion Picture & Television Engineers (SMPTE) 421M/VC-1 und Joint Photographic Experts Group-Formate (JPEG-Formate), wie JPEG und Motion JPEG-Formate (MJPEG-Formate).
  • Bei mindestens einer Ausführungsform beinhaltet der Grafikprozessor 3100 eine BLIT-Engine (Block Image Transfer) 3104, um zweidimensionale (2D) Rasterisierungsoperationen auszuführen, einschließlich z. B. Bit-Boundary-Block-Transfers. Bei mindestens einer Ausführungsform werden 2D-Grafikoperationen jedoch mit einer oder mehreren Komponenten der Grafikverarbeitungs-Engine (GPE) 3110 ausgeführt. Bei mindestens einer Ausführungsform ist die GPE 3110 eine Rechen-Engine zur Ausführung von Grafikoperationen, die dreidimensionale (3D) Grafikoperationen und Medienoperationen beinhalten.
  • Bei mindestens einer Ausführungsform weist die GPE 3110 eine 3D-Pipeline 3112 zur Ausführung von 3D-Operationen auf, wie z. B. das Rendern dreidimensionaler Bilder und Szenen unter Verwendung von Verarbeitungsfunktionen, die auf 3D-Primitivformen (z. B. Rechteck, Dreieck usw.) wirken. Die 3D-Pipeline 3112 beinhaltet bei mindestens einer Ausführungsform programmierbare und feste Funktionselemente, die verschiedene Tasks ausführen und/oder Ausführungs-Threads zu einem 3D/Media-Subsystem 3115 erzeugen. Während die 3D-Pipeline 3112 zur Ausführung von Medienoperationen verwendet werden kann, beinhaltet die GPE 3110 bei mindestens einer Ausführungsform auch eine Medien-Pipeline 3116, die zur Ausführung von Medienoperationen, wie Videonachbearbeitung und Bildverbesserung, verwendet wird.
  • Bei mindestens einer Ausführungsform beinhaltet die Medien-Pipeline 3116 feste Funktions- oder programmierbare Logikeinheiten, um eine oder mehrere spezialisierte Medienoperationen wie Videodecodierbeschleunigung, Videoentflechtung und Videocodierbeschleunigung an Stelle von oder im Auftrag der Videocodec-Engine 3106 auszuführen. Bei mindestens einer Ausführungsform beinhaltet die Medien-Pipeline 3116 zusätzlich eine Thread-Spawning-Einheit, um Threads zur Ausführung im 3D/Media-Subsystem 3115 zu erzeugen. Bei mindestens einer Ausführungsform führen die erzeugten Threads Berechnungen für Medienoperationen auf einer oder mehreren Grafikausführungseinheiten, die im 3D/Media-Subsystem 3115 vorhanden sind, aus.
  • Bei mindestens einer Ausführungsform beinhaltet das 3D/Media-Subsystem 3115 eine Logik zur Ausführung von Threads, die von der 3D-Pipeline 3112 und der Media-Pipeline 3116 erzeugt werden. Bei mindestens einer Ausführungsform senden die 3D-Pipeline 3112 und die Medien-Pipeline 3116 Thread-Ausführungsanforderungen an das 3D/Media-Subsystem 3115, das eine Thread-Verteilungslogik beinhaltet, um verschiedene Anforderungen an verfügbare Thread-Ausführungsressourcen zu vermitteln und zu verteilen. Bei mindestens einer Ausführungsform beinhalten die Ausführungsressourcen eine Anordnung von Grafikausführungseinheiten zur Verarbeitung von 3D- und Medien-Threads. Bei mindestens einer Ausführungsform beinhaltet das 3D/Media-Subsystem 3115 einen oder mehrere interne Caches für Thread-Anweisungen und -Daten. Bei mindestens einer Ausführungsform beinhaltet das Subsystem 3115 auch einen gemeinsamen Speicher, einschließlich Registern und adressierbarem Speicher, um Daten zwischen Threads zu teilen und Ausgabedaten zu speichern.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform können Teile oder die gesamte Inferenz- und/oder Trainingslogik 1015 in den Grafikprozessor 3100 integriert sein. Beispielsweise können bei mindestens einer Ausführungsform die hier beschriebenen Trainings- und/oder Inferencing-Verfahren eine oder mehrere ALUs in einer 3D-Pipeline 3112 verwenden. Darüber hinaus können bei mindestens einer Ausführungsform die hier beschriebenen Inferencing- und/oder Trainingsoperationen mit einer anderen als der in den 10A oder 10B veranschaulichten Logik ausgeführt werden. Bei mindestens einer Ausführungsform können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder in Registern (dargestellt oder nicht dargestellt) gespeichert werden, die ALUs des Grafikprozessors 3100 konfigurieren, um einen oder mehrere hier beschriebene Algorithmen zum maschinellen Lernen, Architekturen für neuronale Netze, Anwendungsfälle oder Trainingsverfahren auszuführen.
  • 32 ist ein Blockdiagramm einer Grafikverarbeitungs-Engine 3210 eines Grafikprozessors gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform ist die Grafikverarbeitungs-Engine (GPE) 3210 eine Version der in 31 gezeigten GPE 3110. Bei mindestens einer Ausführungsform ist die Medien-Pipeline 3216 optional und darf nicht ausdrücklich in der GPE 3210 vorhanden sein. Bei mindestens einer Ausführungsform ist ein separater Medien- und/oder Bildprozessor an die GPE 3210 gekoppelt.
  • Bei mindestens einer Ausführungsform ist die GPE 3210 an einen Befehlsstreamer 3203 gekoppelt oder sie beinhaltet einen solchen, der einer 3D-Pipeline 3212 und/oder der Medien-Pipeline 3216 einen Befehlsstream bereitstellt. Bei mindestens einer Ausführungsform ist der Befehlsstreamer 3203 mit einem Speicher gekoppelt, bei dem es sich um einen Systemspeicher oder um einen oder mehrere interne Cache-Speicher und gemeinsam genutzte Cache-Speicher handeln kann. Bei mindestens einer Ausführungsform empfängt der Befehlsstreamer 3203 Befehle vom Speicher und sendet Befehle an die 3D-Pipeline 3212 und/oder die Medien-Pipeline 3216. Bei mindestens einer Ausführungsform sind Anweisungen, Primitive oder Mikrooperationen, die von einem Ringpuffer geholt werden, der Befehle für die 3D-Pipeline 3212 und die Medien-Pipeline 3216 speichert. Bei mindestens einer Ausführungsform kann ein Ringpuffer zusätzlich Batch-Befehlspuffer beinhalten, die Stapel von mehreren Befehlen speichern. Bei mindestens einer Ausführungsform können die Befehle für die 3D-Pipeline 3212 auch Verweise auf im Speicher gespeicherte Daten beinhalten, wie z. B. Vertex- und Geometriedaten für die 3D-Pipeline 3212 und/oder Bilddaten und Speicherobjekte für die Medien-Pipeline 3216. Bei mindestens einer Ausführungsform verarbeiten die 3D-Pipeline 3212 und die Medien-Pipeline 3216 Befehle und Daten, indem sie Vorgänge ausführen oder einen oder mehrere Ausführungs-Threads an eine Grafikkernanordnung 3214 weiterleiten. Bei mindestens einer Ausführungsform beinhaltet die Grafikkernanordnung 3214 einen oder mehrere Blöcke von Grafikkernen (z. B. Grafikkern(e) 3215A, Grafikkern(e) 3215B), wobei jeder Block einen oder mehrere Grafikkerne beinhaltet. Bei mindestens einer Ausführungsform beinhaltet jeder Grafikkern einen Satz von Grafikausführungsressourcen, der eine Universal- und eine grafikspezifische Ausführungslogik zum Ausführen von Grafik- und Rechenvorgängen sowie Logik zur Texturverarbeitung mit fester Funktion und/oder zur Beschleunigung des maschinellen Lernens und der künstlichen Intelligenz, einschließlich der Inferenz- und/oder Trainingslogik 1015 in 10A und 10B, beinhaltet.
  • Bei mindestens einer Ausführungsform beinhaltet die 3D-Pipeline 3212 eine feste Funktion und eine programmierbare Logik, um ein oder mehrere Shader-Programme wie 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 3214 gesendet werden. Bei mindestens einer Ausführungsform stellt die Grafikkernanordnung 3214 einen einheitlichen Block von Ausführungsressourcen für die Verarbeitung von Shader-Programmen bereit. Bei mindestens einer Ausführungsform beinhaltet die Mehrzweck-Ausführungslogik (z. B. Ausführungseinheiten) in den Grafikkernen 3215A-3215B der Grafikkernanordnung 3214 Unterstützung für verschiedene 3D-API-Shader-Sprachen und kann mehrere gleichzeitige Ausführungs-Threads ausführen, die mit mehreren Shadern assoziiert sind.
  • Bei mindestens einer Ausführungsform beinhaltet die Grafikkernanordnung 3214 auch eine Ausführungslogik zur Ausführung von Medienfunktionen wie Video- und/oder Bildverarbeitung. Bei mindestens einer Ausführungsform weisen die Ausführungseinheiten zusätzlich eine Allzwecklogik auf, die derart programmierbar ist, dass sie zusätzlich zu den Grafikverarbeitungsoperationen parallele Allzweckrechenoperationen ausführt.
  • Bei mindestens einer Ausführungsform können Ausgabedaten, die von Threads generiert werden, die auf der Grafikkernanordnung 3214 ausgeführt werden, an den Speicher in einem Unified Return Buffer (URB) 3218 ausgegeben werden. Der URB 3218 kann bei mindestens einer Ausführungsform Daten für mehrere Threads speichern. Bei mindestens einer Ausführungsform kann der URB 3218 verwendet werden, um Daten zwischen unterschiedlichen Threads, die auf der Grafikkernanordnung 3214 ausgeführt werden, zu senden. Bei mindestens einer Ausführungsform kann der URB 3218 zusätzlich zur Synchronisation zwischen Threads auf der Grafikkernanordnung 3214 und der festen Funktionslogik innerhalb der gemeinsam genutzten Funktionslogik 3220 verwendet werden.
  • Bei mindestens einer Ausführungsform ist die Grafikkernanordnung 3214 derart skalierbar, dass die Grafikkernanordnung 3214 eine variable Anzahl von Grafikkernen beinhaltet, von denen jeder eine variable Anzahl von Ausführungseinheiten aufweist, die auf einem angestrebten Energie- und Leistungsniveau der GPE 3210 basieren. Bei mindestens einer Ausführungsform sind die Ausführungsressourcen dynamisch derart skalierbar, dass die Ausführungsressourcen je nach Bedarf aktiviert oder deaktiviert werden können.
  • Bei mindestens einer Ausführungsform ist die Grafikkernanordnung 3214 mit der gemeinsamen Funktionslogik 3220 gekoppelt, die mehrere Ressourcen aufweist, die von den Grafikkernen im der Grafikkernanordnung 3214 gemeinsam genutzt werden. Bei mindestens einer Ausführungsform sind die gemeinsam genutzten Funktionen, die von der gemeinsam genutzten Funktionslogik 3220 ausgeführt werden, in Hardware-Logikeinheiten verkörpert, die der Grafikkernanordnung 3214 eine spezielle Zusatzfunktionalität bereitstellen. Bei mindestens einer Ausführungsform beinhaltet die gemeinsam genutzte Funktionslogik 3220 unter anderem eine Sampler-Einheit 3221, eine Mathematik-Einheit 3222 und eine Inter-Thread-Kommunikations-Logik (ITC-Logik) 3223. Bei mindestens einer Ausführungsform sind ein oder mehrere Cache(s) 3225 in der gemeinsam genutzten Funktionslogik 3220 vorhanden oder mit ihr gekoppelt.
  • Bei mindestens einer Ausführungsform wird eine gemeinsam genutzte Funktion verwendet, wenn die Nachfrage nach einer speziellen Funktion nicht ausreicht, um sie in die Grafikkernanordnung 3214 aufzunehmen. Bei mindestens einer Ausführungsform wird eine einzelne Instanziierung einer spezialisierten Funktion in der gemeinsam genutzten Funktionslogik 3220 verwendet und von anderen Ausführungsressourcen innerhalb der Grafikkernanordnung 3214 gemeinsam genutzt. Bei mindestens einer Ausführungsform können spezifische gemeinsam genutzte Funktionen innerhalb der gemeinsam genutzten Funktionslogik 3220, die von der Grafikkernanordnung 3214 intensiv genutzt werden, in der gemeinsam genutzten Funktionslogik 3226 innerhalb der Grafikkernanordnung 3214 vorhanden sein. Bei mindestens einer Ausführungsform kann die gemeinsam genutzte Funktionslogik 3226 innerhalb der Grafikkernanordnung 3214 einige oder alle Logiken der gemeinsam genutzten Funktionslogik 3220 beinhalten. Bei mindestens einer Ausführungsform können alle Logikelemente innerhalb der gemeinsam genutzten Funktionslogik 3220 innerhalb der gemeinsam genutzten Funktionslogik 3226 der Grafikkernanordnung 3214 dupliziert sein. Bei mindestens einer Ausführungsform ist die gemeinsam genutzte Funktionslogik 3220 zugunsten der gemeinsam genutzten Funktionslogik 3226 innerhalb der Grafikkernanordnung 3214 ausgeschlossen.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform können Teile oder die gesamte Inferenz- und/oder Trainingslogik 1015 in den Grafikprozessor 3210 integriert sein. Beispielsweise können bei mindestens einer Ausführungsform die hier beschriebenen Trainings- und/oder Inferencing-Verfahren eine oder mehrere ALUs verwenden, die in der 3D-Pipeline 3212, dem/den Grafikkern(en) 3215, der gemeinsam genutzten Funktionslogik 3226, der gemeinsam genutzten Funktionslogik 3220 oder einer anderen Logik in 32 enthalten sind. Darüber hinaus können bei mindestens einer Ausführungsform die hier beschriebenen Inferencing- und/oder Trainingsoperationen mit einer anderen als der in den 10A oder 10B veranschaulichten Logik ausgeführt werden. Bei mindestens einer Ausführungsform können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder in Registern (dargestellt oder nicht dargestellt) gespeichert werden, die ALUs des Grafikprozessors 3210 konfigurieren, um einen oder mehrere hier beschriebene Algorithmen zum maschinellen Lernen, Architekturen für neuronale Netze, Anwendungsfälle oder Trainingsverfahren auszuführen.
  • 33 ist ein Blockdiagramm von Hardware-Logik eines Grafikprozessorkerns 3300 gemäß mindestens einer hierin beschriebenen Ausführungsform. Bei mindestens einer Ausführungsform ist der Grafikprozessorkern 3300 in einem Grafikkernarray enthalten. Bei mindestens einer Ausführungsform kann es sich bei dem Grafikprozessorkern 3300, mitunter als Kern-Slice bezeichnet, um einen oder mehrere Grafikkerne innerhalb eines modularen Grafikprozessors handeln. Bei mindestens einer Ausführungsform ist der Grafikprozessorkern 3300 ein Beispiel für einen Grafikkern-Slice, und ein Grafikprozessor, wie er hier beschrieben ist, kann mehrere Grafikkern-Slices aufweisen, die auf den angestrebten Energie- und Leistungshüllkurven basieren. Bei mindestens einer Ausführungsform kann jeder Grafikkern 3300 einen festen Funktionsblock 3330 aufweisen, der mit mehreren Unterkernen 3301A-3301F gekoppelt ist, die auch als Unter- bzw. Sub-Slices bezeichnet werden und modulare Blöcke mit Allzweck- und fester Funktionslogik aufweisen.
  • Bei mindestens einer Ausführungsform beinhaltet der Festfunktionsblock 3330 eine Geometrie-/Festfunktions-Pipeline 3336, die von allen Unterkernen in dem Grafikprozessor 3300 gemeinsam genutzt werden kann, z. B. bei Grafikprozessorumsetzungen mit geringerer Leistung und/oder geringerem Energieverbrauch. Bei mindestens einer Ausführungsform weist die Geometrie/Festfunktions-Pipeline 3336 eine 3D-Festfunktions-Pipeline, eine Video-Front-End-Einheit, einen Thread-Spawner und Thread-Dispatcher sowie einen Unified-Return-Puffer-Manager auf, der Unified-Return-Puffer verwaltet.
  • Bei mindestens einer Ausführungsform beinhaltet der Funktionsblock 3330 auch eine Grafik-SoC-Schnittstelle 3337, einen Grafik-Mikrocontroller 3338 und eine Medien-Pipeline 3339. Die Grafik-SoC-Schnittstelle 3337 stellt bei mindestens einer Ausführungsform eine Schnittstelle zwischen dem Grafikkern 3300 und anderen Prozessorkernen innerhalb einer integrierten System-on-Chip-Schaltung bereit. Bei mindestens einer Ausführungsform ist der Grafik-Mikrocontroller 3338 ein programmierbarer Unterprozessor, der derart konfigurierbar ist, dass er verschiedene Funktionen des Grafikprozessors 3300 verwaltet, einschließlich Thread-Versand, Zeitplanung und Preemption. Bei mindestens einer Ausführungsform beinhaltet die Medien-Pipeline 3339 Logik zur Erleichterung der Decodierung, Codierung, Vorverarbeitung und/oder Nachverarbeitung von Multimediadaten, einschließlich Bild- und Videodaten. Bei mindestens einer Ausführungsform setzt die Medien-Pipeline 3339 Medienoperationen über Anforderungen an die Berechnungs- oder Abtastlogik innerhalb der Unterkerne 3301A-3301F um.
  • Bei mindestens einer Ausführungsform ermöglicht die SoC-Schnittstelle 3337 dem Grafikkern 3300 die Kommunikation mit Mehrzweck-Anwendungsprozessorkernen (z. B. CPUs) und/oder anderen Komponenten innerhalb eines SoC, einschließlich Speicherhierarchieelementen wie einem gemeinsam genutzten Cache-Speicher der letzten Ebene, einem System-RAM und/oder einem eingebettetem On-Chip- oder On-Package-DRAM. Bei mindestens einer Ausführungsform kann die SoC-Schnittstelle 3337 auch die Kommunikation mit Einrichtungen mit Festfunktion innerhalb eines SoCs ermöglichen, wie z. B. Kamera-Bildgebungs-Pipelines, und sie ermöglicht die Verwendung und/oder Umsetzung globaler Speicher-Atome, die von Grafikkern 3300 und CPUs innerhalb eines SoCs gemeinsam genutzt werden können. Bei mindestens einer Ausführungsform kann die Grafik-SoC-Schnittstelle 3337 auch Energieverwaltungssteuerungen für den Grafikprozessorkern 3300 umsetzen und eine Schnittstelle zwischen einer Taktdomäne des Grafikprozessorkerns 3300 und anderen Taktdomänen innerhalb eines SoCs ermöglichen. Bei mindestens einer Ausführungsform ermöglicht die SoC-Schnittstelle 3337 den Empfang von Befehlspuffern von einem Befehlsstreamer und einem globalen Thread-Dispatcher, die derart konfiguriert sind, dass sie jedem von einem oder mehreren Grafikkernen innerhalb eines Grafikprozessors Befehle und Anweisungen bereitstellen. Bei mindestens einer Ausführungsform können Befehle und Anweisungen an die Medien-Pipeline 3339 gesendet werden, wenn Medienoperationen ausgeführt werden sollen, oder an eine Geometrie- und Festfunktions-Pipeline (z. B. Geometrie- und Festfunktions-Pipeline 3336 und/oder Geometrie- und Festfunktions-Pipeline 3314) gesendet werden, wenn Grafikverarbeitungsoperationen ausgeführt werden sollen.
  • Bei mindestens einer Ausführungsform kann der Grafik-Mikrocontroller 3338 derart konzipiert sein, dass er verschiedene Planungs- und Verwaltungs-Tasks für den Grafikkern 3300 ausführt. Bei mindestens einer Ausführungsform kann der Grafik-Mikrocontroller 3338 die Planung von Grafik- und/oder Rechenaufgaben auf verschiedenen parallelen Grafik-Engines innerhalb von Anordnungen 3302A-3302F, 3304-3304F von Ausführungseinheiten (EU) innerhalb der Unterkerne 3301A-3301F ausführen. Bei mindestens einer Ausführungsform kann eine Host-Software, die auf einem CPU-Kern eines SoC ausgeführt wird, der den Grafikkern 3300 aufweist, Arbeitslasten an einen von mehreren Grafikprozessor-Pfaden übermitteln, die einen Planungsvorgang auf einer geeigneten Grafik-Engine aufruft. Bei mindestens einer Ausführungsform beinhalten die Planungsvorgänge das Bestimmen der als Nächstes auszuführenden Arbeitslast, das Unterbreiten einer Arbeitslast an einen Befehlsstreamer, das Vorziehen bestehender Arbeitslasten, die auf einer Engine ausgeführt werden, das Überwachen des Fortschritts einer Arbeitslast und das Benachrichtigen der Host-Software nach Abschluss einer Arbeitslast. Bei mindestens einer Ausführungsform kann der Grafik-Mikrocontroller 3338 auch stromsparende Zustände oder Leerlaufzustände für den Grafikkern 3300 erleichtern, indem er dem Grafikkern 3300 die Möglichkeit bietet, Register innerhalb des Grafikkerns 3300 über stromsparende Zustandsübergänge unabhängig von einem Betriebssystem und/oder einer Grafiktreibersoftware auf einem System zu speichern und wiederherzustellen.
  • Bei mindestens einer Ausführungsform kann der Grafikkern 3300 mehr oder weniger als die veranschaulichten Unterkerne 3301A-3301F aufweisen, bis zu N modulare Unterkerne. Bei mindestens einer Ausführungsform kann der Grafikkern 3300 für jeden Satz von N Unterkernen auch eine gemeinsam genutzte Funktionslogik 3310, einen gemeinsam genutzten und/oder Cache-Speicher 3312, eine Geometrie-/Festfunktions-Pipeline 3314 sowie eine zusätzliche Festfunktionslogik 3316 aufweisen, um verschiedene Grafik- und Rechenverarbeitungsvorgänge zu beschleunigen. Bei mindestens einer Ausführungsform kann die gemeinsam genutzte Funktionslogik 3310 logische Einheiten beinhalten (z. B. Sampler, Mathematik und/oder Inter-Thread-Kommunikationslogik), die von jedem der N Unterkerne innerhalb des Grafikkerns 3300 gemeinsam genutzt werden können. Gemeinsamer und/oder Cache-Speicher 3312 kann bei mindestens einer Ausführungsform ein Cache der letzten Ebene für N Unterkerne 3301A-3301F innerhalb des Grafikkerns 3300 sein und kann auch als gemeinsamer Speicher dienen, auf den mehrere Unterkerne zugreifen können. Bei mindestens einer Ausführungsform kann die Geometrie-/Festfunktions-Pipeline 3314 an Stelle der Geometrie-/Festfunktions-Pipeline 3336 innerhalb des Festfunktionsblocks 3330 vorhanden sein und kann gleiche oder ähnliche Logikeinheiten beinhalten.
  • Bei mindestens einer Ausführungsform beinhaltet der Grafikkern 3300 eine zusätzliche Festfunktionslogik 3316, die verschiedene Festfunktions-Beschleunigungslogiken zur Verwendung durch den Grafikkern 3300 beinhalten kann. Bei mindestens einer Ausführungsform beinhaltet die zusätzliche Festfunktionslogik 3316 eine zusätzliche Geometrie-Pipeline zur Verwendung beim positionsgebundenen Shading. Bei dem positionsgebundenen Shading gibt es mindestens zwei Geometrie-Pipelines, nämlich eine vollständige Geometrie-Pipeline innerhalb der Geometrie- und Festfunktions-Pipelines 3314, 3336, und eine Cull-Pipeline, die eine zusätzliche Geometrie-Pipeline ist und in der eine zusätzliche Festfunktionslogik 3316 enthalten sein kann. Bei mindestens einer Ausführungsform ist eine Culling-Pipeline eine abgespeckte Version einer vollständigen Geometrie-Pipeline. Bei 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. Bei mindestens einer Ausführungsform kann das positionsgebundene Shading lange Cull-Läufe von verworfenen Dreiecken verbergen, so dass das Shading bei einigen Ausführungsformen früher abgeschlossen werden kann. Zum Beispiel kann bei mindestens einer Ausführungsform die Cull-Pipeline-Logik innerhalb der zusätzlichen Festfunktionslogik 3316 Positions-Shader parallel zu einer Hauptanwendung ausführen und generiert im Allgemeinen kritische Ergebnisse schneller als eine vollständige Pipeline, da die Cull-Pipeline die Positionsattribute von Vertices abruft und schattiert, ohne eine Rasterung und ein Rendering von Pixeln in einen Einzelbild-Puffer auszuführen. Bei mindestens einer Ausführungsform kann eine Culling-Pipeline generierte kritische Ergebnisse verwenden, um Sichtbarkeitsinformationen für alle Dreiecke zu berechnen, ohne Rücksicht darauf, ob diese Dreiecke Culling unterzogen werden. Bei mindestens einer Ausführungsform kann eine vollständige Pipeline (die in diesem Fall als Wiederholungs-Pipeline 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.
  • Bei mindestens einer Ausführungsform kann die zusätzliche Festfunktionslogik 3316 auch eine Logik zur Beschleunigung des maschinellen Lernens aufweisen, wie z. B. eine Logik zur Matrixmultiplikation mit fester Funktion, für Umsetzungen, die Optimierungen für das Training oder Inferencing des maschinellen Lernens umfassen.
  • Bei mindestens einer Ausführungsform weist jeder Grafik-Unterkern 3301A-3301F einen Satz von Ausführungsressourcen auf, die verwendet werden können, um Grafik-, Medien- und Rechenoperationen als Reaktion auf Anforderungen von Grafik-Pipeline-, Medien-Pipeline- oder Shader-Programmen auszuführen. Bei mindestens einer Ausführungsform beinhalten die Grafik-Unterkerne 3301A-3301F mehrere EU-Arrays 3302A-3302F, 3304-3304F, eine Thread-Dispatch- und Inter-Thread-Kommunikationslogik (TD/IC) 3303A-3303F, einen 3D-Sampler (z. B. Textur) 3305A-3305F, einen Media-Sampler 3306A-3306F, einen Shader-Prozessor 3307A-3307F und einen gemeinsamen lokalen Speicher (SLM) 3308A-3308F. Die EU-Anordnungen 3302A-3302F, 3304-3304F weisen bei mindestens einer Ausführungsform jeweils mehrere Ausführungseinheiten auf, bei denen es sich um Allzweck-Grafikverarbeitungseinheiten handelt, die in der Lage sind, Gleitkomma- und Ganzzahl-/Festkomma-Logikoperationen bei einer Grafik-, Medien- oder Rechenoperation, einschließlich Grafik-, Medien- oder Rechen-Shader-Programmen, auszuführen. Bei mindestens einer Ausführungsform führt die TD/IC-Logik 3303A-3303F lokale Thread-Dispatch- und Thread-Steuervorgänge für Ausführungseinheiten innerhalb eines Unterkerns aus und erleichtert die Kommunikation zwischen Threads, die auf Ausführungseinheiten eines Unterkerns ausgeführt werden. Bei mindestens einer Ausführungsform können die 3D-Sampler 3305A-3305F Textur- oder andere 3D-Grafikdaten in den Speicher einlesen. Bei mindestens einer Ausführungsform können die 3D-Sampler Texturdaten basierend auf einem konfigurierten Abtaststatus und eines mit einer bestimmten Textur assoziierten Texturformats unterschiedlich lesen. Bei mindestens einer Ausführungsform können die Mediensampler 3306A-3306F ähnliche Lesevorgänge basierend auf einem Typ und einem Format ausführen, die mit den Mediendaten assoziiert sind. Bei mindestens einer Ausführungsform kann jeder Grafik-Unterkern 3301A-3301F abwechselnd einen vereinheitlichten 3D- und Medien-Sampler beinhalten. Bei mindestens einer Ausführungsform können Threads, die auf Ausführungseinheiten innerhalb jedes der Unterkerne 3301A-3301F ausgeführt werden, den gemeinsamen genutzten lokalen Speicher 3308A-3308F innerhalb jedes Unterkerns verwenden, um Threads, die innerhalb einer Thread-Gruppe ausgeführt werden, die Ausführung unter Verwendung eines gemeinsamen Pools von On-Chip-Speicher zu ermöglichen.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform können Teile oder die gesamte Inferenz- und/oder Trainingslogik 1015 in den Grafikprozessor 3300 integriert sein. Beispielsweise können bei mindestens einer Ausführungsform die hier beschriebenen Trainings- und/oder Inferencing-Verfahren eine oder mehrere ALUs verwenden, die in einer 3D-Pipeline, einem Grafik-Mikrocontroller 3338, einer Geometrie- und Festfunktions-Pipeline 3314 und 3336 oder einer anderen Logik in 33 enthalten sind. Darüber hinaus können bei mindestens einer Ausführungsform die hier beschriebenen Inferencing- und/oder Trainingsoperationen mit einer anderen als der in den 10A oder 10B veranschaulichten Logik ausgeführt werden. Bei mindestens einer Ausführungsform können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder in Registern (dargestellt oder nicht dargestellt) gespeichert werden, die ALUs des Grafikprozessors 3300 konfigurieren, um einen oder mehrere hier beschriebene Algorithmen zum maschinellen Lernen, Architekturen für neuronale Netze, Anwendungsfälle oder Trainingsverfahren auszuführen.
  • Die 34A und 34B veranschaulichen die Thread-Ausführungslogik 3400, die eine Anordnung von Verarbeitungselementen eines Grafikprozessorkerns gemäß mindestens einer Ausführungsform beinhaltet. 34A veranschaulicht mindestens eine Ausführungsform, bei der die Thread-Ausführungslogik 3400 verwendet wird. 34B veranschaulicht beispielhafte interne Details einer Grafik-Ausführungseinheit 3408 gemäß mindestens einer Ausführungsform.
  • Wie in 34A veranschaulicht, beinhaltet die Thread-Ausführungslogik 3400 bei mindestens einer Ausführungsform einen Shader-Prozessor 3402, einen Thread-Dispatcher 3404, einen Anweisungs-Cache 3406, eine skalierbare Ausführungseinheitenanordnung, die eine Vielzahl von Ausführungseinheiten 3407A-3407N und 3408A-3408N, einen Sampler3410, einen Daten-Cache 3412 und einen Datenanschluss 3414 beinhaltet. Bei mindestens einer Ausführungsform kann eine skalierbare Ausführungseinheitenanordnung dynamisch skaliert werden, indem eine oder mehrere Ausführungseinheiten (z. B. eine der Ausführungseinheiten 3408A-N oder 3407A-N) basierend auf den Rechenanforderungen einer Arbeitslast aktiviert oder deaktiviert werden. Bei mindestens einer Ausführungsform sind die skalierbaren Ausführungseinheiten über eine Verbindungsstruktur, die eine Verbindung zu jeder Ausführungseinheit herstellt, miteinander verbunden. Bei mindestens einer Ausführungsform weist die Thread-Ausführungslogik 3400 eine oder mehrere Verbindungen zum Speicher auf, z. B. zum Systemspeicher oder zum Cache-Speicher, und zwar über einen oder mehrere der folgenden Elemente: Anweisungs-Cache 3406, Datenanschluss 3414, Sampler 3410 und Ausführungseinheiten 3407 oder 3408. Bei mindestens einer Ausführungsform ist jede Ausführungseinheit (z. B. 3407A) eine eigenständige programmierbare Mehrzweck-Recheneinheit, die in der Lage ist, mehrere gleichzeitige Hardware-Threads auszuführen und dabei mehrere Datenelemente parallel für jeden Thread zu verarbeiten. Bei mindestens einer Ausführungsform ist die Anordnung der Ausführungseinheiten 3407 und/oder 3408 so skalierbar, dass sie eine beliebige Anzahl einzelner Ausführungseinheiten aufweist.
  • Bei mindestens einer Ausführungsform werden die Ausführungseinheiten 3407 und/oder 3408 hauptsächlich zur Ausführung von Shader-Programmen verwendet. Bei mindestens einer Ausführungsform kann der Shader-Prozessor 3402 verschiedene Shader-Programme verarbeiten und die mit den Shader-Programmen assoziierten Ausführungs-Threads über einen Thread-Dispatcher 3404 verteilen. Bei mindestens einer Ausführungsform beinhaltet der Thread-Dispatcher 3404 eine Logik, um Thread-Inittiierungsanforderungen von Grafik- und Medien-Pipelines zu vermitteln und angeforderte Threads auf einer oder mehreren Ausführungseinheiten in den Ausführungseinheiten 3407 und/oder 3408 zu instanziieren. Zum Beispiel kann bei mindestens einer Ausführungsform eine Geometrie-Pipeline Vertex-, Tesselations- oder Geometrie-Shader zur Verarbeitung an die Thread-Ausführungslogik versenden. Bei mindestens einer Ausführungsform kann der Thread-Dispatcher 3404 auch Laufzeit-Thread-Erzeugungs-Anforderungen von ausführenden Shader-Programmen verarbeiten.
  • Bei mindestens einer Ausführungsform unterstützen die Ausführungseinheiten 3407 und/oder 3408 einen Anweisungssatz, der eine native Unterstützung für viele Standard-3D-Grafik-Shader-Anweisungen aufweist, so dass Shader-Programme aus Grafikbibliotheken (z. B. Direct 3D und OpenGL) mit einer minimalen Übersetzung ausgeführt werden. Bei mindestens einer Ausführungsform unterstützen die Ausführungseinheiten Vertex- und Geometrieverarbeitung (z. B. Vertexprogramme, Geometrieprogramme und/oder Vertex-Shader), Pixelverarbeitung (z. B. Pixel-Shader, Fragment-Shader) und Universalverarbeitung (z. B. Rechen- und Medien-Shader). Bei mindestens einer Ausführungsform ist jede der Ausführungseinheiten 3407 und/oder 3408, die eine oder mehrere arithmetische Logikeinheiten (ALUs) aufweisen, zur SIMD-Ausführung (Single Instruction Multiple Data) fähig, und der Multi-Thread-Betrieb ermöglicht trotz höherer Latenzzeiten bei Speicherzugriffen eine effiziente Ausführungsumgebung. Bei mindestens einer Ausführungsform beinhaltet jeder Hardware-Thread innerhalb jeder Ausführungseinheit eine dedizierte Registerdatei mit hoher Bandbreite und einen assoziierten unabhängigen Thread-Status. Bei mindestens einer Ausführungsform erfolgt die Ausführung mit mehreren Threads pro Takt auf Pipelines, die Ganzzahl-, Gleitkomma- und Doppelpräzisionsoperationen, SIMD-Verzweigungsfähigkeit, logische Operationen, transzendentale Operationen und andere verschiedene Operationen ausführen können. Bei mindestens einer Ausführungsform bewirkt die Abhängigkeitslogik in den Ausführungseinheiten 3407 und/oder 3408, dass ein wartender Thread in den Ruhezustand versetzt wird, bis die angeforderten Daten zurückgegeben wurden, während er auf Daten aus dem Speicher oder einer der gemeinsam genutzten Funktionen wartet. Bei 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 bei 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.
  • Bei mindestens einer Ausführungsform arbeitet jede Ausführungseinheit in den Ausführungseinheiten 3407 und/oder 3408 mit Anordnungen von Datenelementen. Bei mindestens einer Ausführungsform ist die Anzahl der Datenelemente eine „Ausführungsgröße“ oder die Anzahl der Kanäle für eine Anweisung. Bei 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. Bei mindestens einer Ausführungsform kann die Anzahl der Kanäle unabhängig von einer Anzahl der physischen arithmetisch-logischen Einheiten (ALUs) oder Gleitkommaeinheiten (FPUs) für einen konkreten Grafikprozessor sein. Bei mindestens einer Ausführungsform unterstützen die Ausführungseinheiten 3407 und/oder 3408 Ganzzahl- und Gleitkomma-Datentypen.
  • Bei mindestens einer Ausführungsform beinhaltet ein Anweisungssatz einer Ausführungseinheit SIMD-Anweisungen. Bei mindestens einer Ausführungsform können verschiedene Datenelemente als gepackter Datentyp in einem Register gespeichert werden, und die Ausführungseinheit verarbeitet verschiedene Elemente basierend auf der Datengröße der Elemente. Zum Beispiel werden bei mindestens einer Ausführungsform bei der Bearbeitung eines 256 Bit breiten Vektors 256 Bits eines Vektors in einem Register gespeichert, und eine Ausführungseinheit bearbeitet einen Vektor als vier separate gepackte 64-Bit-Datenelemente (Datenelemente der Größe Quad-Word (QW)), als acht separate gepackte 32-Bit-Datenelemente (Datenelemente der Größe Double Word (DW)), als sechzehn separate gepackte 16-Bit-Datenelemente (Datenelemente der Größe Word (W)) oder als zweiunddreißig separate 8-Bit-Datenelemente (Datenelemente der Größe Byte (B)). Bei mindestens einer Ausführungsform sind jedoch auch andere Vektorbreiten und Registergrößen möglich.
  • Bei mindestens einer Ausführungsform können eine oder mehrere Ausführungseinheiten zu einer fusionierten Ausführungseinheit 3409A-3409N mit einer Thread-Steuerlogik (3411A-3411N) kombiniert werden, die den fusionierten EUs gemeinsam ist, wie z. B. eine Ausführungseinheit 3407A, die mit der Ausführungseinheit 3408A in die fusionierte Ausführungseinheit 3409A fusioniert ist. Bei mindestens einer Ausführungsform können mehrere EUs zu einer EU-Gruppe fusioniert werden. Bei mindestens einer Ausführungsform kann jede EU in einer fusionierten EU-Gruppe derart konfiguriert sein, dass sie einen separaten SIMD-Hardware-Thread ausführt, wobei eine Anzahl der EUs in einer fusionierten EU-Gruppe gemäß verschiedenen Ausführungsformen möglicherweise variiert. Bei mindestens einer Ausführungsform können verschiedene SIMD-Breiten pro EU ausgeführt werden, einschließlich, ohne darauf beschränkt zu sein, SIMD8, SIMD16 und SIMD32. Bei mindestens einer Ausführungsform beinhaltet jede fusionierte Grafikausführungseinheit 3409A-3409N mindestens zwei Ausführungseinheiten. Bei mindestens einer Ausführungsform weist die fusionierte Ausführungseinheit 3409A beispielsweise eine erste EU 3407A, eine zweite EU 3408A und eine Thread-Steuerlogik 3411A auf, die der ersten EU 3407A und der zweiten EU 3408A gemeinsam ist. Bei mindestens einer Ausführungsform steuert die Thread-Steuerlogik 3411A Threads, die auf der fusionierten Grafikausführungseinheit 3409A ausgeführt werden, so dass jede EU innerhalb der fusionierten Ausführungseinheiten 3409A-3409N unter Verwendung eines gemeinsamen Anweisungszeigerregisters ausgeführt werden kann.
  • Bei mindestens einer Ausführungsform weist die Thread-Ausführungslogik 3400 einen oder mehrere interne Anweisungs-Caches (z. B. 3406) auf, um Thread-Anweisungen für Ausführungseinheiten zu cachen. Bei mindestens einer Ausführungsform sind ein oder mehrere Daten-Caches (z. B. 3412) vorhanden, um Thread-Daten während der Thread-Ausführung zu cachen. Bei mindestens einer Ausführungsform ist ein Sampler3410 vorhanden, um Textur-Sampling für 3D-Operationen und Medien-Sampling für Medien-Operationen bereitzustellen. Bei mindestens einer Ausführungsform beinhaltet der Abtaster 3410 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.
  • Bei mindestens einer Ausführungsform senden Grafik- und Medien-Pipelines während der Ausführung Thread-Initiierungsanforderungen an die Thread-Ausführungslogik 3400 über die Thread-Erzeugungs- und Dispatch-Logik. Bei 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 3402 aufgerufen, um Ausgabeinformationen weiter zu berechnen und zu veranlassen, dass die Ergebnisse in Ausgabeflächen (z. B. Farbpuffer, Tiefenpuffer, Schablonenpuffer usw.) geschrieben werden. Bei mindestens einer Ausführungsform berechnet ein Pixel-Shader oder Fragment-Shader die Werte verschiedener Vertex-Attribute, die über ein gerastertes Objekt interpoliert werden sollen. Bei mindestens einer Ausführungsform führt die Pixelprozessorlogik innerhalb des Shader-Prozessors 3402 dann ein über eine Anwendungsprogrammierschnittstelle (API) zugeführtes Pixel- oder Fragment-Shader-Programm aus. Bei mindestens einer Ausführungsform leitet der Shader-Prozessor 3402 zur Ausführung eines Shader-Programms Threads über den Thread-Dispatcher 3404 an eine Ausführungseinheit (z. B. 3408A) weiter. Bei mindestens einer Ausführungsform verwendet der Shader-Prozessor 3402 die Texturabtastlogik im Abtaster 3410, um auf Texturdaten in den im Speicher abgelegten Texturabbildungen zuzugreifen. Bei mindestens einer Ausführungsform werden durch arithmetische Operationen an Texturdaten und Eingabegeometriedaten Pixelfarbdaten für jedes geometrische Fragment berechnet oder ein oder mehrere Pixel von der weiteren Verarbeitung ausgeschlossen.
  • Bei mindestens einer Ausführungsform stellt der Datenanschluss 3414 einen Speicherzugriffsmechanismus für die Thread-Ausführungslogik 3400 bereit, um verarbeitete Daten zur weiteren Verarbeitung auf einer Grafikprozessor-Ausgabe-Pipeline in den Speicher auszugeben. Bei mindestens einer Ausführungsform weist der Datenanschluss 3414 einen oder mehrere Cache-Speicher (z. B. den Daten-Cache 3412) auf oder ist mit diesen gekoppelt, um Daten für den Speicherzugriff über einen Datenanschluss zwischenzuspeichern.
  • Wie in 34B veranschaulicht, kann eine Grafikausführungseinheit 3408 bei mindestens einer Ausführungsform eine Fetch-Einheit 3437, eine allgemeine Registerdateianordnung (GRF) 3424, eine architektonische Registerdateianordnung (ARF) 3426, einen Thread-Dispatcher 3422, eine Sendeeinheit 3430, eine Verzweigungseinheit 3432, einen Satz SIMD-Gleitkommaeinheiten (FPUs) 3434 und einen Satz dedizierter ganzzahliger SIMD-ALUs 3435 aufweisen. Bei mindestens einer Ausführungsform weisen die GRF 3424 und die ARF 3426 einen Satz allgemeiner Registerdateien und Architekturregisterdateien auf, die mit jedem gleichzeitigen Hardware-Thread assoziiert sind, der in der Grafikausführungseinheit 3408 aktiv sein kann. Bei mindestens einer Ausführungsform wird der architektonische Zustand pro Thread in der ARF 3426 verwaltet, während die während der Thread-Ausführung verwendeten Daten in der GRF 3424 gespeichert werden. Bei mindestens einer Ausführungsform kann der Ausführungszustand jedes Threads, der Anweisungszeiger für jeden Thread aufweist, in Thread-spezifischen Registern in der ARF 3426 gehalten werden.
  • Bei mindestens einer Ausführungsform hat die Grafikausführungseinheit 3408 eine Architektur, die eine Kombination aus simultanem Multi-Threading (SMT) und feinkörnigem Interleaved Multi-Threading (IMT) ist. Bei mindestens einer Ausführungsform weist die Architektur eine modulare Konfiguration auf, die zur Entwurfszeit basierend auf einer angestrebten Anzahl gleichzeitiger 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 gleichzeitiger Threads verwendet wird.
  • Bei mindestens einer Ausführungsform kann die Grafikausführungseinheit 3408 mehrere Anweisungen gemeinsam, die jeweils unterschiedliche Befehle sein können, ausgeben. Bei mindestens einer Ausführungsform kann der Thread-Arbiter 3422 des Thread der Grafikausführungseinheit 3408 Anweisungen an eine der Sendeeinheiten 3430, Verzweigungseinheiten 3432 oder SIMD-FPU(s) 3434 zur Ausführung weiterleiten. Bei mindestens einer Ausführungsform kann jeder Thread auf 128 Allzweckregister innerhalb der GRF 3424 zugreifen, wobei jedes Register 32 Byte speichern kann, die als SIMD-8-Element-Vektor von 32-Bit-Datenelementen zugänglich sind. Bei mindestens einer Ausführungsform hat jeder Thread der Ausführungseinheit Zugriff auf 4 Kilobyte innerhalb der GRF 3424, obwohl die Ausführungsformen nicht so beschränkt sind und bei anderen Ausführungen mehr oder weniger Registerressourcen bereitgestellt werden können. Bei mindestens einer Ausführungsform können bis zu sieben Threads simultan ausgeführt werden, obwohl die Anzahl der Threads pro Ausführungseinheit gemäß Ausführungsform auch variieren kann. Bei mindestens einer Ausführungsform, bei der sieben Threads auf 4 Kilobyte zugreifen können, kann die GRF 3424 insgesamt 28 Kilobyte speichern. Bei mindestens einer Ausführungsform können flexible Adressierungsmodi ermöglichen, dass Register gemeinsam adressiert werden, um effektiv breitere Register zu bilden oder um strided rechteckige Blockdatenstrukturen darzustellen.
  • Bei mindestens einer Ausführungsform werden Speicheroperationen, Abtastoperationen und andere Systemkommunikationen mit längerer Latenzzeit über „Sende“-Anweisungen abgewickelt, die von einer Nachrichten-Durchlass-Sendeeinheit 3430 ausgeführt werden. Bei mindestens einer Ausführungsform werden Verzweigungsbefehle an eine Verzweigungseinheit 3432 weitergeleitet, um Divergenz und eventuelle Konvergenz bezüglich SIMD zu ermöglichen.
  • Bei mindestens einer Ausführungsform weist die Grafikausführungseinheit 3408 eine oder mehrere SIMD-Gleitkommaeinheiten (FPU(s)) 3434 auf, um Gleitkommaoperationen auszuführen. Bei mindestens einer Ausführungsform unterstützen die FPU(s) 3434 auch Ganzzahlberechnung. Bei mindestens einer Ausführungsform kann (können) die FPU(s) 3434 bis zu einer Anzahl M von 32-Bit-Gleitkomma- (oder Ganzzahl-) Operationen oder bis zu 2M 16-Bit-Ganzzahl- oder 16-Bit-Gleitkomma-Operationen bezüglich SIMD ausführen. Bei mindestens einer Ausführungsform bietet mindestens eine der FPU(s) erweiterte mathematische Fähigkeiten zur Unterstützung von transzendentalen mathematischen Funktionen mit hohem Durchsatz und 64-Bit-Gleitkommaoperationen mit doppelter Genauigkeit. Bei mindestens einer Ausführungsform ist auch ein Satz von 8-Bit-Integer-SIMD-ALUs 3435 vorhanden, der spezifisch zum Ausführen von Operationen, die mit Berechnungen für maschinelles Lernen assoziiert sind, optimiert sein kann.
  • Bei mindestens einer Ausführungsform können Arrays von mehreren Instanzen der Grafikausführungseinheit 3408 in einer Grafikteilkern-Gruppierung (z. B. einer Teil-Slice) instanziiert sein. Bei mindestens einer Ausführungsform kann die Ausführungseinheit 3408 Anweisungen über eine Vielzahl von Ausführungskanälen ausführen. Bei mindestens einer Ausführungsform wird jeder Thread, der auf der Grafikausführungseinheit 3408 ausgeführt wird, auf einem anderen Kanal ausgeführt.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform können Teile oder die gesamte Inferenz- und/oder Trainingslogik 1015 in die Thread-Ausführungslogik 3400 integriert sein. Darüber hinaus können bei mindestens einer Ausführungsform die hier beschriebenen Inferencing- und/oder Trainingsoperationen mit einer anderen als der in den 10A oder 10B veranschaulichten Logik ausgeführt werden. Bei mindestens einer Ausführungsform können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder in Registern (dargestellt oder nicht dargestellt) gespeichert werden, die den ALU-Thread der Ausführungslogik 3400 konfigurieren, um einen oder mehrere hier beschriebene Algorithmen zum maschinellen Lernen, Architekturen für neuronale Netze, Anwendungsfälle oder Trainingsverfahren auszuführen.
  • 35 veranschaulicht eine Parallelverarbeitungseinheit („PPU“) 3500 gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform ist die PPU 3500 mit maschinenlesbarem Code konfiguriert, der, wenn er von der PPU 3500 ausgeführt wird, die PPU 3500 veranlasst, einige oder alle der in dieser Offenbarung beschriebenen Prozesse und Techniken auszuführen. Bei mindestens einer Ausführungsform ist die PPU 3500 ein Multi-Thread-Prozessor, der auf einer oder mehreren integrierten Einrichtungen umgesetzt ist und der Multithreading als eine Technik zum Verbergen von Latenzzeiten verwendet, die dazu dient, computerlesbare Anweisungen (auch als maschinenlesbare Befehle oder einfach Anweisungen bezeichnet) auf mehreren Threads parallel zu verarbeiten. Bei mindestens einer Ausführungsform bezieht sich ein Thread auf einen Ausführungsstrang und ist eine Instanziierung eines Satzes von Anweisungen, die zur Ausführung durch die PPU 3500 konfiguriert sind. Bei mindestens einer Ausführungsform ist die PPU 3500 eine Grafikverarbeitungseinheit („GPU“), die derart konfiguriert ist, dass sie eine Grafik-Rendering-Pipeline zur Verarbeitung dreidimensionaler („3D“) Grafikdaten umsetzt, um zweidimensionale („2D“) Bilddaten für die Anzeige auf einer Einrichtung, wie einer Flüssigkristallanzeige („LCD“), zu generieren. Bei mindestens einer Ausführungsform wird die PPU 3500 verwendet, um Berechnungen, wie lineare Algebra-Operationen und Operationen des maschinellen Lernens, auszuführen. 35 veranschaulicht ein Beispiel für einen Parallelprozessor, der nur zur Veranschaulichung dient und als nicht begrenzendes Beispiel für Prozessorarchitekturen zu verstehen ist, die im Rahmen dieser Offenbarung in Betracht gezogen werden, wobei jeder geeignete Prozessor zur Ergänzung und/oder zum Ersatz desselben eingesetzt werden kann.
  • Bei mindestens einer Ausführungsform sind eine oder mehrere PPUs 3500 derart konfiguriert, dass sie Anwendungen für High Performance Computing („HPC“), Rechenzentren und maschinelles Lernen beschleunigen. Bei mindestens einer Ausführungsform ist die PPU 3500 derart konfiguriert, dass sie Deep-Learning-Systeme und -Anwendungen beschleunigt, die die folgenden nicht einschränkenden Beispiele einschließen: autonome Fahrzeugplattformen, Deep Learning, hochpräzise Sprach-, Bild- und Texterkennungssysteme, intelligente Videoanalyse, molekulare Simulationen, Arzneimittelentdeckung, Krankheitsdiagnose, Wettervorhersage, Big-Data-Analytik, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotik, Fabrikautomatisierung, Echtzeit-Sprachübersetzung, Online-Suchoptimierung und personalisierte Benutzerempfehlungen und mehr.
  • Bei mindestens einer Ausführungsform beinhaltet die PPU 3500 ohne Einschränkung eine Eingangs-/Ausgangs-Einheit (E/A-Einheit) 3506, eine Front-End-Einheit 3510, eine Scheduler-Einheit 3512, eine Arbeitsverteilungseinheit 3514, einen Hub 3516, ein Koppelfeld („Xbar“) 3520, einen oder mehrere allgemeine Verarbeitungscluster („GPCs“) 3518 und eine oder mehrere Partitionseinheiten („Speicherpartitionseinheiten“) 3522. Bei mindestens einer Ausführungsform ist die PPU 3500 mit einem Host-Prozessor oder anderen PPUs 3500 über eine oder mehrere Hochgeschwindigkeits-GPU-Verbindungen („GPU-Interconnects“) 3508 verbunden. Bei mindestens einer Ausführungsform ist die PPU 3500 mit einem Host-Prozessor oder anderen peripheren Einrichtungen über einen Systembus 3502 verbunden. Bei mindestens einer Ausführungsform ist die PPU 3500 mit einem lokalen Speicher verbunden, der eine oder mehrere Speichervorrichtungen („Speicher“) 3504 umfasst. Bei mindestens einer Ausführungsform beinhalten weisen die Speichervorrichtungen 3504 ohne Einschränkung eine oder mehrere dynamische Direktzugriffsspeicher-Einrichtungen („DRAM“-Einrichtungen). Bei mindestens einer Ausführungsform sind eine oder mehrere DRAM-Vorrichtungen als Subsysteme mit Speicher mit hoher Bandbreite („HBM“) konfiguriert und/oder konfigurierbar, wobei in jeder Einrichtung mehrere DRAM-Dies gestapelt sind.
  • Bei mindestens einer Ausführungsform kann die Hochgeschwindigkeits-GPU-Verbindung 3508 auf eine drahtbasierte Mehrspur-Kommunikationsverbindung verweisen, die von Systemen verwendet wird, die skalierbar sind und eine oder mehrere PPUs 3500 beinhalten, die mit einer oder mehreren Zentraleinheiten („CPUs“) kombiniert sind, und die Cache-Kohärenz zwischen PPUs 3500 und CPUs sowie CPU-Mastering unterstützt. Bei mindestens einer Ausführungsform werden Daten und/oder Befehle durch die Hochgeschwindigkeits-GPU-Verbindung 3508 über den Hub 3516 zu/von anderen Einheiten der PPU 3500 übertragen, wie z. B. einer oder mehreren Kopier-Engines, Video-Encodern, Video-Decodern, Energieverwaltungseinheiten und anderen Komponenten, die in 35 möglicherweise nicht explizit veranschaulicht sind.
  • Bei mindestens einer Ausführungsform ist die E/A-Einheit 3506 derart konfiguriert, dass sie Kommunikationen (z. B. Befehle, Daten) von einem Host-Prozessor (in 35 nicht veranschaulicht) über den Systembus 3502 sendet und empfängt. Bei mindestens einer Ausführungsform kommuniziert die E/A-Einheit 3506 mit dem Host-Prozessor direkt über den Systembus 3502 oder über eine oder mehrere zwischengeschaltete Einrichtungen wie z. B. eine Speicherbrücke. Bei mindestens einer Ausführungsform kann die E/A-Einheit 3506 mit einem oder mehreren anderen Prozessoren, z. B. einer oder mehreren PPUs 3500, über den Systembus 3502 kommunizieren. Bei mindestens einer Ausführungsform setzt die E/A-Einheit 3506 eine Peripheral Component Interconnect Express („PCIe“) Schnittstelle für die Kommunikation über einen PCIe-Bus um. Bei mindestens einer Ausführungsform setzt die E/A-Einheit 3506 Schnittstellen für die Kommunikation mit externen Einrichtungen um.
  • Bei mindestens einer Ausführungsform decodiert die E/A-Einheit 3506 über den Systembus 3502 empfangene Pakete. Bei mindestens einer Ausführungsform stellen mindestens einige Pakete Befehle dar, die derart konfiguriert sind, dass sie die PPU 3500 dazu veranlassen, verschiedene Operationen auszuführen. Bei mindestens einer Ausführungsform überträgt die E/A-Einheit 3506 decodierte Befehle an verschiedene andere Einheiten der PPU 3500, wie es von Befehlen spezifiziert ist. Bei mindestens einer Ausführungsform werden Befehle an die Front-End-Einheit 3510 und/oder an den Hub 3516 oder andere Einheiten der PPU 3500, wie eine oder mehrere Kopier-Engines, einen Video-Encoder, einen Video-Decoder, eine Energieverwaltungseinheit usw., übertragen (in 35 nicht explizit veranschaulicht). Bei mindestens einer Ausführungsform ist die E/A-Einheit 3506 derart konfiguriert, dass sie die Kommunikation zwischen und unter verschiedenen logischen Einheiten der PPU 3500 leitet.
  • Bei mindestens einer Ausführungsform codiert ein vom Host-Prozessor ausgeführtes Programm einen Befehlsstrom in einem Puffer, der der PPU 3500 Arbeitslasten zur Verarbeitung bereitstellt. Bei mindestens einer Ausführungsform umfasst eine Arbeitslast Anweisungen und Daten, die von diesen Anweisungen verarbeitet werden sollen. Bei mindestens einer Ausführungsform ist der Puffer ein Bereich in einem Speicher, auf den sowohl der Host-Prozessor als auch die PPU 3500 zugreifen können (z. B. Lese-/Schreibzugriff) - eine Host-Schnittstelleneinheit kann derart konfiguriert sein, dass sie auf diesen Puffer in einem mit dem Systembus 3502 verbundenen Systemspeicher über Speicheranforderungen zugreift, die von der E/A-Einheit 3506 über den Systembus 3502 übertragen werden. Bei mindestens einer Ausführungsform schreibt der Host-Prozessor einen Befehlsstrom in den Puffer und überträgt dann einen Zeiger auf den Beginn des Befehlsstroms an die PPU 3500, so dass die Front-End-Einheit 3510 Zeiger auf einen oder mehrere Befehlsströme empfängt und einen oder mehrere Befehlsströme verwaltet, Befehle aus den Befehlsströmen liest und Befehle an verschiedene Einheiten der PPU 3500 weiterleitet.
  • Bei mindestens einer Ausführungsform ist die Front-End-Einheit 3510 mit der Scheduler-Einheit 3512 gekoppelt, die verschiedene GPCs 3518 zur Verarbeitung von Tasks konfiguriert, die durch einen oder mehrere Befehlsströme definiert sind. Bei mindestens einer Ausführungsform ist die Scheduler-Einheit 3512 derart konfiguriert, dass sie Zustandsinformationen in Bezug auf verschiedene, von der Scheduler-Einheit 3512 verwaltete Tasks verfolgt, wobei die Zustandsinformationen angeben können, welchem der GPCs 3518 ein Task zugewiesen ist, ob der Task aktiv oder inaktiv ist, welche Prioritätsstufe mit dem Task assoziiert ist und so weiter. Bei mindestens einer Ausführungsform verwaltet die Scheduler-Einheit 3512 die Ausführung einer Vielzahl von Tasks auf einem oder mehreren GPCs 3518.
  • Bei mindestens einer Ausführungsform ist die Scheduler-Einheit 3512 mit der Arbeitsverteilungseinheit 3514 gekoppelt, die derart konfiguriert ist, dass sie Tasks zur Ausführung auf den GPCs 3518 auswählt. Bei mindestens einer Ausführungsform verfolgt die Arbeitsverteilungseinheit 3514 eine Anzahl geplanter Tasks, die von der Scheduler-Einheit 3512 empfangen wurden, und die Arbeitsverteilungseinheit 3514 verwaltet einen Pool ausstehender Tasks und einen Pool aktiver Tasks für jeden der GPCs 3518. Bei mindestens einer Ausführungsform umfasst der Pool ausstehender Tasks eine Anzahl von Slots (z. B. 32 Slots), die Tasks enthalten, die zur Verarbeitung durch einen bestimmten GPC 3518 zugewiesen sind; der Pool aktiver Tasks kann eine Anzahl von Slots (z. B. 4 Slots) für Tasks umfassen, die aktiv von den GPCs 3518 verarbeitet werden, so dass, wenn einer der GPCs 3518 die Ausführung eines Task abschließt, dieser Task aus dem Pool aktiver Tasks für den GPC 3518 entfernt wird und ein anderer Task aus einem Pool ausstehender Tasks ausgewählt und zur Ausführung auf dem GPC 3518 eingeplant wird. Bei mindestens einer Ausführungsform wird, wenn ein aktiver Task auf dem GPC 3518 im Leerlauf ist, z. B. während des Wartens auf die Auflösung einer Datenabhängigkeit, der aktive Task aus dem GPC 3518 entfernt und in den Pool der anstehenden Tasks zurückgeführt werden, während ein anderer Task im Pool der anstehenden Tasks ausgewählt und für die Ausführung auf dem GPC 3518 eingeplant wird.
  • Bei mindestens einer Ausführungsform kommuniziert die Arbeitsverteilungseinheit 3514 mit einem oder mehreren GPCs 3518 über die XBar 3520. Bei mindestens einer Ausführungsform ist die XBar 3520 ein Verbindungsnetzwerk, das viele Einheiten der PPU 3500 mit anderen Einheiten der PPU 3500 verbindet und derart konfiguriert werden kann, dass es die Arbeitsverteilungseinheit 3514 mit einem bestimmten GPC 3518 verbindet. Bei mindestens einer Ausführungsform können auch eine oder mehrere andere Einheiten der PPU 3500 über den Hub 3516 mit derXBar 3520 verbunden sein.
  • Bei mindestens einer Ausführungsform werden Tasks durch die Scheduler-Einheit 3512 verwaltet und durch die Arbeitsverteilungseinheit 3514 einem der GPCs 3518 zugeteilt. Der GPC 3518 ist bei mindestens einer Ausführungsform konfiguriert, um Tasks zu verarbeiten und Ergebnisse zu generieren. Bei mindestens einer Ausführungsform können die Ergebnisse von anderen Tasks innerhalb des GPC 3518 aufgenommen, über die XBar 3520 an einen anderen GPC 3518 weitergeleitet oder im Speicher 3504 abgelegt werden. Bei mindestens einer Ausführungsform können die Ergebnisse in den Speicher 3504 über Partitionseinheiten 3522 geschrieben werden, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in/aus dem Speicher 3504 umsetzen. Bei mindestens einer Ausführungsform können die Ergebnisse über ein Hochgeschwindigkeits-GPU-Interconnect 3508 an eine andere PPU oder CPU übertragen werden. Bei mindestens einer Ausführungsform weist die PPU 3500 ohne Einschränkung eine Anzahl U von Partitionseinheiten 3522 auf, die einer Anzahl der mit der PPU 3500 verbundenen separaten und unterschiedlichen Speichervorrichtungen 3504 entspricht, was hier in Verbindung mit 37 ausführlicher beschrieben ist.
  • Bei mindestens einer Ausführungsform führt ein Host-Prozessor einen Treiberkern aus, der eine Anwendungsprogrammierschnittstelle („API“) umsetzt, die es einer oder mehreren auf dem Host-Prozessor ausgeführten Anwendungen ermöglicht, Vorgänge zur Ausführung auf der PPU 3500 zu planen. Bei mindestens einer Ausführungsform werden mehrere Rechenanwendungen gleichzeitig von der PPU 3500 ausgeführt, und die PPU 3500 bietet Isolierung, Dienstgüte („QoS“) und unabhängige Adressräume für mehrere Rechenanwendungen. Bei mindestens einer Ausführungsform generiert eine Anwendung Anweisungen (z. B. in Form von API-Aufrufen), die den Treiberkern veranlassen, einen oder mehrere Tasks zur Ausführung durch die PPU 3500 zu generieren, und der Treiberkern gibt Tasks an einen oder mehrere Streams aus, die von der PPU 3500 verarbeitet werden. Bei mindestens einer Ausführungsform umfasst jeder Task eine oder mehrere Gruppen zugehöriger Threads, die als Warp bezeichnet werden können. Bei mindestens einer Ausführungsform umfasst ein Warp eine Vielzahl zusammengehöriger Threads (z. B. 32 Threads), die parallel ausgeführt werden können. Bei mindestens einer Ausführungsform können sich kooperierende Threads auf eine Vielzahl von Threads beziehen, die Anweisungen zur Ausführung von Tasks aufweisen und Daten über einen gemeinsamen Speicher austauschen. Bei mindestens einer Ausführungsform werden Threads und kooperierende Threads gemäß mindestens einer Ausführungsform in Verbindung mit 37 ausführlicher beschrieben.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform wird der Deep Learning-Anwendungsprozessor verwendet, um ein Modell zum maschinellen Lernen, wie z. B. ein neuronales Netzwerk, zu trainieren, um Informationen, die der PPU 3500 zur Verfügung gestellt werden, vorherzusagen oder abzuleiten. Bei mindestens einer Ausführungsform wird der Deep Learning-Anwendungsprozessor verwendet, um Informationen basierend auf einem trainierten Modell zum maschinellen Lernen (z. B. einem neuronalen Netzwerk), das von einem anderen Prozessor oder System oder von der PPU 3500 trainiert wurde, abzuleiten oder vorherzusagen. Bei mindestens einer Ausführungsform kann die PPU 3500 verwendet werden, um einen oder mehrere der hier beschriebenen Anwendungsfälle von neuronalen Netzwerken auszuführen.
  • 36 veranschaulicht einen allgemeinen Verarbeitungscluster („GPC“) 3600 gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform handelt es sich bei dem GPC 3600 um den GPC 3518 der 35. Bei mindestens einer Ausführungsform beinhaltet jeder GPC 3600 ohne Einschränkung eine Anzahl von Hardware-Einheiten für die Verarbeitung von Tasks auf, und jeder GPC 3600 weist ohne Einschränkung einen Pipeline-Manager 3602, eine Pre-Raster-Operationseinheit („preROP“) 3604, eine Raster-Engine 3608, ein Arbeitsverteilungs-Koppelfeld („WDX“) 3616, eine Speicherverwaltungseinheit („MMU“) 3618, einen oder mehrere Datenverarbeitungscluster („DPCs“) 3606 und jede geeignete Kombination von Teilen.
  • Bei mindestens einer Ausführungsform wird der Betrieb des GPC 3600 von den Pipelineverwalter 3602 gesteuert. Bei mindestens einer Ausführungsform verwaltet der Pipeline-Manager 3602 die Konfiguration eines oder mehrerer DPCs 3606 für die Verarbeitung von Tasks, die dem GPC 3600 zugeordnet sind. Bei mindestens einer Ausführungsform konfiguriert der Pipeline-Manager 3602 mindestens einen von einem oder mehreren DPCs 3606, um mindestens einen Teil einer Grafik-Rendering-Pipeline umzusetzen. Bei mindestens einer Ausführungsform ist der DPC 3606 derart konfiguriert, dass er ein Vertex-Shader-Programm auf einem programmierbaren Streaming-Multiprozessor („SM“) 3614 ausführt. Bei mindestens einer Ausführungsform ist der Pipeline-Manager 3602 derart konfiguriert, dass er die von einer Arbeitsverteilungseinheit empfangenen Pakete an geeignete logische Einheiten innerhalb des GPC 3600 weiterleitet, wobei einige Pakete an Hardwareeinheiten mit fester Funktion im preROP 3604 und/oder in der Raster-Engine 3608 weitergeleitet werden können, während andere Pakete an DPCs 3606 zur Verarbeitung durch eine Primitiv-Engine 3612 oder SM 3614 weitergeleitet werden können. Bei mindestens einer Ausführungsform konfiguriert der Pipeline-Manager 3602 mindestens einen der DPCs 3606, um ein Modell eines neuronalen Netzwerks und/oder einer Rechen-Pipeline umzusetzen.
  • Bei mindestens einer Ausführungsform ist die preROP-Einheit 3604 derart konfiguriert, dass sie die von der Raster-Engine 3608 und den DPCs 3606 generierten Daten an eine Raster Operations-Einheit („ROP“-Einheit) in der Partitionseinheit 3522 weiterleitet, die oben in Verbindung mit 35 ausführlicher beschrieben ist. Bei mindestens einer Ausführungsform ist die preROP-Einheit 3604 derart konfiguriert, dass sie Optimierungen für die Farbmischung ausführt, Pixeldaten organisiert, Adressübersetzungen vornimmt und vieles mehr. Bei mindestens einer Ausführungsform beinhaltet die Raster-Engine 3608 ohne Einschränkung eine Reihe von Hardware-Einheiten mit fester Funktion auf, die derart konfiguriert sind, dass sie verschiedene Rasteroperationen ausführen, und die Raster-Engine 3608 beinhaltet ohne Einschränkung eine Setup-Engine, eine Grobraster-Engine, eine Culling-Engine, eine Clipping-Engine, eine Feinraster-Engine, eine Tile-Coalescing-Engine und eine beliebige geeignete Kombination davon. Bei mindestens einer Ausführungsform empfängt die Setup-Engine transformierte Vertices und generiert Ebenengleichungen, die mit einer durch Vertices definierten geometrischen Primitive assoziiert sind; die Ebenengleichungen werden an die Grobraster-Engine übertragen, um Abdeckungsinformationen (z. B. eine x-, y-Abdeckungsmaske für eine Kachel) für die Primitive zu generieren; die Ausgabe der Grobraster-Engine wird an die Culling-Engine übertragen, wo Fragmente, die mit dem Primitive assoziiert sind und einen z-Test nicht bestehen, aussortiert werden, und an eine Clipping-Engine übertragen, wo Fragmente, die außerhalb eines Sichtkegelvolumens liegen, geclippt werden. Bei mindestens einer Ausführungsform werden die Fragmente, die das Clipping und Culling überstehen, an eine Feinraster-Engine weitergeleitet, um Attribute für Pixelfragmente basierend auf der von der Setup-Engine erstellten Ebenengleichungen zu generieren. Bei mindestens einer Ausführungsform umfasst die Ausgabe der Raster-Engine 3608 Fragmente, die von einer beliebigen geeigneten Einheit, wie z. B. einem in DPC 3606 umgesetzten Fragment-Shader, verarbeitet werden.
  • Bei mindestens einer Ausführungsform umfasst jeder DPC 3606, der in der GPC 3600 enthalten ist, ohne Einschränkung einen M-Pipe-Controller („MPC“) 3610, eine Primitiv-Engine 3612, einen oder mehrere SMs 3614 und eine beliebige geeignete Kombination davon. Bei mindestens einer Ausführungsform steuert die MPC 3610 den Betrieb der DPC 3606 und leitet die von dem Pipeline-Manager 3602 empfangenen Pakete an die entsprechenden Einheiten im DPC 3606. Bei mindestens einer Ausführungsform werden Pakete, die mit einem Vertex assoziiert sind, an die Primitiv-Engine 3612 weitergeleitet, die derart konfiguriert ist, dass sie Vertex-Attribute, die mit dem Vertex assoziiert sind, aus dem Speicher abruft; im Gegensatz dazu können Pakete, die mit einem Shader-Programm assoziiert sind, an den SM 3614 übertragen werden.
  • Bei mindestens einer Ausführungsform umfasst der SM 3614 ohne Einschränkung einen programmierbaren Streaming-Prozessor, der derart konfiguriert ist, dass er Tasks verarbeitet, die von einer Anzahl von Threads dargestellt werden. Bei mindestens einer Ausführungsform ist der SM 3614 multi-threaded und der 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-Architektur („SlMD“-Architektur) umsetzt, bei der jeder Thread in einer Gruppe von Threads (z. B. ein Warp) derart konfiguriert ist, dass er einen anderen Datensatz basierend auf demselben Satz von Anweisungen verarbeitet. Bei mindestens einer Ausführungsform führen alle Threads in einer Gruppe von Threads einen gemeinsamen Satz von Anweisungen aus. Bei mindestens einer Ausführungsform setzt der SM 3614 eine Single-Instruction, Multiple Thread-Architektur („SIMT“-Architektur) um, bei der jeder Thread in einer Gruppe von Threads derart konfiguriert ist, dass er einen anderen Datensatz basierend auf diesem gemeinsamen Satz von Anweisungen verarbeitet, wobei jedoch die einzelnen Threads in der Gruppe von Threads während der Ausführung divergieren dürfen. Bei mindestens einer Ausführungsform werden ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden Warp beibehalten, wodurch Nebenläufigkeit zwischen Warps und serielle Ausführung innerhalb von Warps ermöglicht werden, wenn Threads innerhalb eines Warps divergieren. Bei einer anderen Ausführungsform werden ein Programmzähler, ein Aufrufstapel und ein Ausführungsstatus für jeden einzelnen Thread geführt, wodurch gleichwertige Nebenläufigkeit zwischen allen Threads, innerhalb und zwischen Warps, ermöglicht wird. Bei mindestens einer Ausführungsform wird der Ausführungszustand für jeden einzelnen Thread beibehalten und Threads, die gemeinsame Anweisungen ausführen, können zur besseren Effizienz konvergiert und parallel ausgeführt werden. Mindestens eine Ausführungsform des SM 3614 wird hier ausführlicher beschrieben.
  • Bei mindestens einer Ausführungsform stellt die MMU 3618 eine Schnittstelle zwischen dem GPC 3600 und der Speicherpartitionseinheit (z. B. der Partitionseinheit 3522 in 35) bereit, und die MMU 3618 sorgt für die Übersetzung virtueller Adressen in physikalische Adressen, den Speicherschutz und die Konkurrenzbereinigung von Speicheranforderungen. Bei mindestens einer Ausführungsform stellt die MMU 3618 einen oder mehrere Übersetzungs-Lookaside-Puffer („TLBs“) zur Ausführung der Übersetzung virtueller Adressen in physische Adressen im Speicher bereit.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Details bezüglich der Interferenz- und/oder Trainingslogik 1015 sind hierin in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform wird der Deep Learning-Anwendungsprozessor verwendet, um ein Modell zum maschinellen Lernen, wie z. B. ein neuronales Netzwerk, zu trainieren, um Informationen, die der GPC 3600 zur Verfügung gestellt werden, vorherzusagen oder abzuleiten. Bei mindestens einer Ausführungsform wird GPC 3600 verwendet, um Informationen basierend auf einem trainierten Modell zum maschinellen Lernen (z. B. einem neuronalen Netzwerk), das von einem anderen Prozessor oder System oder von dem GPC 3600 trainiert wurde, abzuleiten oder vorherzusagen. Bei mindestens einer Ausführungsform kann die GPC 3600 verwendet werden, um einen oder mehrere der hier beschriebenen Anwendungsfälle von neuronalen Netzwerken auszuführen.
  • 37 veranschaulicht eine Speicherpartitionseinheit 3700 einer Parallelverarbeitungseinheit („PPU“) bei mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform beinhaltet die Speicherpartitionierungseinheit 3700 ohne Einschränkung eine Raster Operations-Einheit („ROP“-Einheit) 3702, einen Level-Two-Cache („L2“-Cache) 3704, eine Speicherschnittstelle 3706 und jede geeignete Kombination davon. Bei mindestens einer Ausführungsform ist die Speicherschnittstelle 3706 mit Speicher gekoppelt. Bei mindestens einer Ausführungsform kann die Speicherschnittstelle 3706 32-, 64-, 128-, 1024-Bit-Datenbusse oder Ähnliches für die Hochgeschwindigkeitsdatenübertragung umsetzen. Bei mindestens einer Ausführungsform enthält die PPU U Speicherschnittstellen 3706, wobei U eine positive Ganzzahl ist, mit einer Speicherschnittstelle 3706 pro Paar von Partitionseinheiten 3700, wobei jedes Paar von Partitionseinheiten 3700 mit einer entsprechenden Speichervorrichtung verbunden ist. Bei mindestens einer Ausführungsform kann die PPU beispielsweise mit bis zu Y Speichervorrichtungen verbunden sein, wie z. B. mit Speicherstacks mit hoher Bandbreite oder mit einem synchronen dynamischen wahlfreien Grafikspeicher mit doppelter Datenrate, Version 5 („GDDR5 SDRAM“).
  • Bei mindestens einer Ausführungsform selbst die Speicherschnittstelle 3706 eine Speicherschnittstelle der zweiten Generation mit hoher Bandbreite („HBM2“) um, und Y ist gleich der Hälfte von U. Bei mindestens einer Ausführungsform befinden sich die HBM2-Speicherstapel auf einem physischen Gehäuse mit der PPU, was im Vergleich zu herkömmlichen GDDR5-SDRAM-Systemen erhebliche Energie- und Flächeneinsparungen bereitstellt. Bei 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. Bei 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. Bei mindestens einer Ausführungsform kann der ECC eine höhere Zuverlässigkeit für Rechenanwendungen bereitstellen, die für Datenkorruption empfindlich sind.
  • Bei mindestens einer Ausführungsform setzt die PPU eine Speicherhierarchie mit mehreren Levels um. Bei mindestens einer Ausführungsform unterstützt die Speicherpartitionierungseinheit 3700 einen einheitlichen Speicher, um einen einzigen einheitlichen virtuellen Adressraum für die Zentraleinheit („CPU“) und den PPU-Speicher bereitzustellen, was die gemeinsame Nutzung von Daten zwischen virtuellen Speichersystemen ermöglicht. Bei mindestens einer Ausführungsform wird die Häufigkeit von Zugriffen durch eine PPU auf einen Speicher, der sich auf anderen Prozessoren befindet, verfolgt, um sicherzustellen, dass Speicherseiten in den physischen Speicher der PPU verschoben werden, die häufiger auf Seiten zugreift. Bei mindestens einer Ausführungsform unterstützt die Hochgeschwindigkeits-GPU-Verbindung 3508 Adressübersetzungsdienste, die es der PPU ermöglichen, direkt auf die Seitentabellen der CPU zuzugreifen und der PPU vollen Zugriff auf den CPU-Speicher zu ermöglichen.
  • Bei mindestens einer Ausführungsform übermitteln Kopier-Engines Daten zwischen mehreren PPUs oder zwischen PPUs und CPUs. Bei mindestens einer Ausführungsform können Kopiermodule Seitenfehler für Adressen generieren, die nicht in Seitentabellen abgebildet sind, und die Speicherpartitionierungseinheit 3700 bearbeitet dann die Seitenfehler, indem sie die Adressen in die Seitentabelle abbildet, woraufhin das Kopiermodul die Übertragung ausführt. Bei mindestens einer Ausführungsform wird der Speicher für mehrere Kopier-Engines-Operationen zwischen mehreren Prozessoren gepinnt (d. h. ist nicht auslagerbar), wodurch der verfügbare Speicher erheblich reduziert wird. Bei 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 3504 der 35 oder einem anderen Systemspeicher werden von der Speicherpartitionseinheit 3700 abgerufen und im L2-Cache 3704 gespeichert, der sich auf dem Chip befindet und bei mindestens einer Ausführungsform von verschiedenen GPCs gemeinsam genutzt wird. Jede Speicherpartitionseinheit 3700 beinhaltet bei mindestens einer Ausführungsform ohne Einschränkung mindestens einen Teil des L2-Cache, der mit einer entsprechenden Einrichtung assoziiert ist. Bei mindestens einer Ausführungsform sind Caches der unteren Ebene in verschiedenen Einheiten innerhalb von GPCs umgesetzt. Bei mindestens einer Ausführungsform kann jeder der SMs 3614 in 36 einen Level 1 Cache („L1“) umsetzen, wobei der L1-Cache ein privater Speicher ist, der einem bestimmten SM 3614 gewidmet ist, und Daten werden aus dem L2-Cache 3704 abgerufen und in jedem der L1-Caches zur Verarbeitung in Funktionseinheiten der SMs 3614 gespeichert. Bei mindestens einer Ausführungsform ist der L2-Cache 3704, wie in 35 gezeigt, mit der Speicherschnittstelle 3706 und der XBar 3520 verbunden.
  • Bei mindestens einer Ausführungsform führt die ROP-Einheit 3702 Grafikrasteroperationen durch, die mit der Pixelfarbe in Bezug stehen, wie etwa Farbkomprimierung, Pixel-Blending und mehr. Bei mindestens einer Ausführungsform setzt die ROP-Einheit 3702 eine Tiefenprüfung in Verbindung mit der Raster-Engine 3608 um, wobei sie eine Tiefe für eine Abtastposition, die mit einem Pixelfragment assoziiert ist, von der Culling-Engine der Raster-Engine 3608 erhält. Bei mindestens einer Ausführungsform wird die Tiefe gegen eine entsprechende Tiefe in einem Tiefenpuffer für eine mit einem Fragment assoziierte Abtaststelle geprüft. Bei mindestens einer Ausführungsform aktualisiert die ROP-Einheit 3702 den Tiefenpuffer und überträgt das Ergebnis des Tiefentests an die Raster-Engine 3608, wenn das Fragment den Tiefentest für den Probenort besteht. Es wird deutlich, dass eine Anzahl der Partitionseinheiten 3700 von der Anzahl der GPCs abweichen kann, und daher jede ROP-Einheit 3702 bei mindestens einer Ausführungsform mit jedem der GPCs gekoppelt sein kann. Bei mindestens einer Ausführungsform verfolgt die ROP-Einheit 3702 die von verschiedenen GPCs empfangenen Pakete und bestimmt, ob ein von der ROP-Einheit 3702 generiertes Ergebnis über das XBar 3520 weiterzuleiten ist.
  • 38 veranschaulicht einen Streaming-Multiprozessor („SM“) 3800 gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform ist der SM 3800 der SM der 36. Bei mindestens einer Ausführungsform beinhaltet der SM 3800 ohne Einschränkung einen Anweisungs-Cache 3802, eine oder mehrere Scheduler-Einheiten 3804, eine Registerdatei 3808, einen oder mehrere Verarbeitungskerne („Cores“) 3810, eine oder mehrere Spezialfunktionseinheiten („SFUs“) 3812, eine oder mehrere Lade-/Speichereinheiten („LSUs“) 3814, ein Verbindungsnetzwerk 3816, einen gemeinsamen Speicher/L1-Cache 3818 und eine beliebige geeignete Kombination davon.
  • Bei mindestens einer Ausführungsform verteilt eine Arbeitsverteilungseinheit Tasks zur Ausführung auf allgemeinen Verarbeitungsclustern („GPCs“) von Parallelverarbeitungseinheiten („PPUs“), und jeder Task ist mit einem bestimmten Datenverarbeitungscluster („DPC“) innerhalb eines GPCs assoziiert, und falls der Task mit einem Shader-Programm assoziiert ist, wird der Task einem der SMs 3800 zugeordnet. Bei mindestens einer Ausführungsform empfängt die Scheduler-Einheit 3804 Tasks von der Arbeitsverteilungseinheit und verwaltet die Anweisungsplanung für einen oder mehrere Thread-Blöcke, die dem SM 3800 zugeordnet sind. Bei mindestens einer Ausführungsform plant die Scheduler-Einheit 3804 Thread-Blöcke für die Ausführung als Warps von parallelen Threads, wobei jedem Thread-Block mindestens ein Warp zugeordnet wird. Bei mindestens einer Ausführungsform führt jeder Warp Threads aus. Bei mindestens einer Ausführungsform verwaltet die Scheduler-Einheit 3804 eine Vielzahl unterschiedlicher Thread-Blöcke, indem sie den unterschiedlichen Thread-Blöcken Warps zuordnet und dann während jedes Taktzyklus Anweisungen aus einer Vielzahl unterschiedlicher kooperativer Gruppen an unterschiedliche Funktionseinheiten (z. B. Verarbeitungskerne 3810, SFUs 3812 und LSUs 3814) verteilt.
  • Bei 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. Bei mindestens einer Ausführungsform unterstützen kooperative Start-APIs die Synchronisierung zwischen Thread-Blöcken zur Ausführung paralleler Algorithmen. Bei mindestens einer Ausführungsform stellen Anwendungen herkömmlicher Programmiermodelle ein einziges, einfaches Konstrukt zum Synchronisieren kooperierender Threads: eine Barriere über alle Threads eines Thread-Blocks (z. B. die Funktion syncthreads()) bereit. Bei mindestens einer Ausführungsform können Programmierer jedoch Gruppen von Threads mit einer geringeren als Thread-Block-Granularität definieren und innerhalb definierter Gruppen synchronisieren, um eine höhere Rechenleistung, Design-Flexibilität und Software-Wiederverwendung in Form von kollektiven gruppenweiten Funktionsschnittstellen zu ermöglichen. Bei mindestens einer Ausführungsform ermöglichen es kooperative Gruppen Programmierern, Gruppen von Threads explizit bei Teilblock- (d. h. so klein wie ein einzelner Thread) und Multiblock-Granularitäten zu definieren und kollektive Operationen, wie etwa die Synchronisierung von Threads, in einer kooperativen Gruppe auszuführen. Bei mindestens einer Ausführungsform unterstützt dieses Programmiermodell eine saubere Komposition über Software-Grenzen hinweg, sodass sich Bibliotheken und Dienstprogrammfunktionen innerhalb ihres lokalen Kontexts sicher synchronisieren können, ohne Annahmen über Konvergenz treffen zu müssen. Bei mindestens einer Ausführungsform ermöglichen Primitive der kooperativen Gruppen neue Muster der kooperativen Parallelität, einschließlich, ohne darauf beschränkt zu sein, Produzent-Konsument-Parallelität, opportunistische Parallelität und globale Synchronisation über ein gesamtes Gitter von Thread-Blöcken.
  • Bei mindestens einer Ausführungsform ist eine Dispatcher-Einheit 3806 dazu konfiguriert, Anweisungen an eine oder mehrere Funktionseinheiten zu übertragen, und die Scheduler-Einheit 3804 beinhaltet ohne Einschränkung zwei Dispatcher-Einheiten 3806, die es ermöglichen, dass zwei unterschiedliche Anweisungen aus demselben Warp während jedes Taktzyklus versandt werden. Bei mindestens einer Ausführungsform beinhaltet jede Scheduler-Einheit 3804 eine einzelne Dispatcher-Einheit 3806 oder zusätzliche Dispatcher-Einheiten 3806.
  • Bei mindestens einer Ausführungsform beinhaltet jeder SM 3800 ohne Einschränkung eine Registerdatei 3808, die einen Satz von Registern für Funktionseinheiten des SM 3800 bereitstellt. Bei mindestens einer Ausführungsform ist die Registerdatei 3808 zwischen den einzelnen Funktionseinheiten derart aufgeteilt, dass jeder Funktionseinheit ein eigener Teil der Registerdatei 3808 zugeordnet ist. Bei mindestens einer Ausführungsform ist die Registerdatei 3808 zwischen unterschiedlichen Warps aufgeteilt, die von dem SM 3800 ausgeführt werden, und die Registerdatei 3808 stellt einen temporären Speicher für Operanden, die mit Datenpfaden von Funktionseinheiten verbunden sind, bereit. Bei mindestens einer Ausführungsform umfasst jeder SM 3800 ohne Einschränkung eine Vielzahl von L Verarbeitungskernen 3810, wobei L eine positive Ganzzahl ist. Bei mindestens einer Ausführungsform beinhaltet der SM 3800 ohne Einschränkung eine große Anzahl (z. B. 128 oder mehr) unterschiedlicher Verarbeitungskerne 3810. Bei mindestens einer Ausführungsform beinhaltet jeder Verarbeitungskern 3810 ohne Einschränkung eine Voll-Pipeline-, Einzelpräzisions-, Doppelpräzisions- und/oder gemischte Präzisionsverarbeitungseinheit, die ohne Einschränkung eine arithmetische Gleitkomma-Logikeinheit und eine arithmetische Ganzzahl-Logikeinheit beinhaltet. Bei mindestens einer Ausführungsform setzen die arithmetisch-logischen Einheiten für Gleitkommazahlen den Standard IEEE 754-2008 für Gleitkommaarithmetik um. Bei mindestens einer Ausführungsform beinhalten die Verarbeitungskerne 3810 ohne Einschränkung 64 Gleitkomma-Kerne mit einfacher Genauigkeit (32 Bit), 64 Ganzzahl-Kerne, 32 Gleitkomma-Kerne mit doppelter Genauigkeit (64 Bit) und 8 Tensor-Kerne.
  • Tensorkerne sind gemäß mindestens einer Ausführungsform zum Ausführen von Matrixoperationen konfiguriert. Bei mindestens einer Ausführungsform sind ein oder mehrere Tensorkerne in den Verarbeitungskernen 3810 enthalten. Bei mindestens einer Ausführungsform sind die Tensorkerne derart konfiguriert, dass sie Deep-Learning-Matrixarithmetik ausführen, wie etwa Faltungsoperationen zum Trainieren und Inferenzieren neuronaler Netzwerke. Bei mindestens einer Ausführungsform arbeitet jeder Tensorkern an einer 4x4-Matrix und er führt eine Matrixmultiplikations- und - akkumulationsoperation D = A X B + C durch, wobei A, B, C und D 4x4-Matrizen sind.
  • Bei mindestens einer Ausführungsform sind die Matrixmultiplikationseingaben A und B 16-Bit-Gleitkommamatrizen und die Akkumulationsmatrizen C und D 16-Bit-Gleitkomma- oder 32-Bit-Gleitkommamatrizen. Bei mindestens einer Ausführungsform arbeiten die Tensorkerne mit 16-Bit-Gleitkomma-Eingangsdaten und 32-Bit-Gleitkomma-Akkumulation. Bei mindestens einer Ausführungsform werden für die 16-Bit-Gleitkommamultiplikation 64 Operationen verwendet, was zu einem Produkt mit voller Genauigkeit führt, das dann unter Verwendung einer 32-Bit-Gleitkomma-Addition mit anderen Zwischenprodukten zu einer 4x4x4-Matrixmultiplikation akkumuliert wird. Bei mindestens einer Ausführungsform werden Tensor-Kerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen, die aus diesen kleineren Elementen aufgebaut sind, auszuführen. Bei mindestens einer Ausführungsform macht eine API, wie etwa eine CUDA 9 C++ API, spezialisierte Matrixlade-, Matrixmultiplikations- und -akkumulations- sowie Matrixspeicheroperationen verfügbar, um die Tensorkerne anhand eines Programms mit CUDA-C++ effizient zu verwenden. Bei mindestens einer Ausführungsform auf CUDA-Ebene geht die Schnittstelle auf Warp-Ebene von Matrizen der Größe 16x16 aus, die sich über alle 32 Threads des Warp erstrecken.
  • Bei mindestens einer Ausführungsform umfasst jeder SM 3800 ohne Einschränkung M SFUs 3812, die spezielle Funktionen ausführen (z. B. Attributauswertung, reziproke Quadratwurzel und dergleichen). Bei mindestens einer Ausführungsform beinhalten die SFUs 3812 ohne Einschränkung eine Baum-Traversierungs-Einheit, die derart konzipiert ist, dass sie eine hierarchische Baumdatenstruktur durchläuft. Bei mindestens einer Ausführungsform weisen die SFUs 3812 ohne Einschränkung eine Textureinheit auf, die derart konfiguriert ist, dass sie Filteroperationen für die Texturabbildung ausführt. Bei mindestens einer Ausführungsform sind die Textureinheiten derart konfiguriert, dass sie Texturabbildungen (z. B. eine 2D-Anordnung von Texein) aus dem Speicher laden und Texturabbildungen abtasten, um abgetastete Texturwerte zur Verwendung in von dem SM 3800 ausgeführten Shader-Programmen zu erzeugen. Bei mindestens einer Ausführungsform werden die Texturabbildungen in dem gemeinsam genutzten Speicher/L1-Cache 3818 gespeichert. Bei mindestens einer Ausführungsform setzen die Textureinheiten Texturoperationen, wie Filteroperationen, unter Verwendung von Mip-Maps (z. B. Texturabbildungen mit unterschiedlichen Detailstufen) um. Bei mindestens einer Ausführungsform beinhaltet jeder SM 3800, ohne Einschränkung, zwei Textureinheiten.
  • Jeder SM 3800 umfasst bei mindestens einer Ausführungsform ohne Einschränkung N LSUs 3814, die Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher/L1-Cache 3818 und der Registerbank 3808 umsetzen. Das Verbindungsnetzwerk 3816 verbindet bei mindestens einer Ausführungsform jede Funktionseinheit mit der Registerdatei 3808 und die LSU 3814 mit der Registerdatei 3808 und dem gemeinsamen Speicher/L1-Cache 3818. Bei mindestens einer Ausführungsform ist das Interconnect-Schaltungsnetzwerk 3816 eine Kreuzschiene, die derart konfiguriert sein kann, dass sie beliebige funktionelle Einheiten mit beliebigen Registern in der Registerbank 3808 verbindet und LSUs 3814 mit der Registerbank 3808 und Speicherorten in dem gemeinsam genutzten Speicher/L1-Cache 3818 verbindet.
  • Bei mindestens einer Ausführungsform ist der gemeinsam genutzte Speicher/L1-Cache 3818 eine Anordnung von On-Chip-Speicher, der bei mindestens einer Ausführungsform die Datenspeicherung und die Kommunikation zwischen dem SM 3800 und der Primitiv-Engine und zwischen Threads im SM 3800 ermöglicht. Bei mindestens einer Ausführungsform umfasst der gemeinsam genutzte Speicher/L1-Cache 3818 ohne Einschränkung eine Speicherkapazität von 128 KB und befindet sich im Pfad vom SM 3800 zur Partitionseinheit. Bei mindestens einer Ausführungsform wird der gemeinsame Speicher/L1-Cache 3818 zum Zwischenspeichern von Lese- und Schreibvorgängen verwendet. Bei mindestens einer Ausführungsform sind einer oder mehrere von gemeinsamem Speicher/L1-Cache 3818, L2-Cache und Arbeitsspeicher Zusatzspeicher (Backing-Stores).
  • Die Kombination von Daten-Cache und gemeinsam genutzter Speicherfunktionalität in einem einzigen Speicherblock bietet bei mindestens einer Ausführungsform eine verbesserte Leistung für beide Arten von Speicherzugriffen. Bei mindestens einer Ausführungsform wird die Kapazität durch Programme, die keinen gemeinsam genutzten Speicher verwenden, als Cache verwendet oder sie kann so verwendet werden, wie etwa, falls der gemeinsam genutzte Speicher derart konfiguriert ist, dass er die Hälfte einer Kapazität verwendet, und Textur- und Lade-/Speicheroperationen die verbleibende Kapazität verwenden können. Durch Integration in den gemeinsam genutzten Speicher/L1-Cache 3818 kann der gemeinsam genutzte Speicher/L1-Cache 3818 gemäß mindestens einer Ausführungsform als durchsatzstarke Leitung für Streaming-Daten fungieren und gleichzeitig Zugriff auf häufig wiederverwendete Daten mit hoher Bandbreite und geringer Latenz bereitstellen. Bei mindestens einer Ausführungsform kann, wenn sie für allgemeine parallele Berechnungen konfiguriert ist, eine einfachere Konfiguration im Vergleich zur Grafikverarbeitung verwendet werden. Bei mindestens einer Ausführungsform werden Grafikverarbeitungseinheiten mit festen Funktionen umgangen, wodurch ein wesentlich einfacheres Programmiermodell entsteht. Bei einer Konfiguration für Universalparallelberechnungen ordnet eine Arbeitsverteilungseinheit bei mindestens einer Ausführungsform Blöcke von Threads direkt den DPCs zu und verteilt diese. Bei mindestens einer Ausführungsform führen Threads in einem Block ein gemeinsames Programm aus, wobei eine eindeutige Thread-ID in der Berechnung verwendet wird, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse generiert, wobei der SM 3800 zur Ausführung des Programms und zur Ausführung von Berechnungen, der gemeinsame Speicher/L1-Cache 3818 zur Kommunikation zwischen Threads und die LSU 3814 zum Lesen und Schreiben des globalen Speichers über den gemeinsamen Speicher/L1-Cache 3818 und die Speicherpartitionseinheit verwendet werden. Bei mindestens einer Ausführungsform schreibt der SM 3800, wenn er für allgemeine parallele Berechnungen konfiguriert ist, Befehle, die die Scheduler-Einheit 3804 verwenden kann, um neue Arbeiten auf DPCs zu starten.
  • Bei 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 tragbaren elektronischen Vorrichtung usw. enthalten oder daran gekoppelt. Bei mindestens einer Ausführungsform ist eine PPU auf einem einzelnen Halbleitersubstrat verkörpert. Bei mindestens einer Ausführungsform ist eine PPU in einem System auf einem Chip („SoC“) zusammen mit einer oder mehreren anderen Vorrichtungen enthalten, wie etwa zusätzlichen PPUs, Speicher, einer Reduced-lnstruction-Set-Computer-(„RISC“-)CPU, einer Speicherverwaltungseinheit („MMU“), einem Digital-Analog-Wandler (Digital-To-Analog Converter - „DAC“) und dergleichen.
  • Bei mindestens einer Ausführungsform kann eine PPU auf einer Grafikkarte enthalten sein, die eine oder mehrere Speichervorrichtungen beinhaltet. Bei mindestens einer Ausführungsform kann diese Grafikkarte derart konfiguriert sein, dass sie mit einem PCIe-Steckplatz auf einer Hauptplatine eines Desktop-Computers eine Schnittstelle bildet. Bei mindestens einer Ausführungsform kann diese PPU eine integrierte Grafikverarbeitungseinheit („iGPU“) sein, die im Chipsatz einer Hauptplatine enthalten ist.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Einzelheiten zu der Inferenz- und/oder Trainingslogik 1015 werden hier in Verbindung mit den 10A und/oder 10B bereitgestellt. Bei mindestens einer Ausführungsform wird der Deep Learning-Anwendungsprozessor verwendet, um ein Modell zum maschinellen Lernen, wie z. B. ein neuronales Netzwerk, zu trainieren, um Informationen, die der SM 3800 zur Verfügung gestellt werden, vorherzusagen oder abzuleiten. Bei mindestens einer Ausführungsform wird SM 3800 verwendet, um Informationen basierend auf einem trainierten Modell zum maschinellen Lernen (z. B. einem neuronalen Netzwerk), das von einem anderen Prozessor oder System oder von dem SM 3800 trainiert wurde, abzuleiten oder vorherzusagen. Bei mindestens einer Ausführungsform kann die SM 3800 verwendet werden, um einen oder mehrere der hier beschriebenen Anwendungsfälle von neuronalen Netzwerken auszuführen.
  • Es werden Ausführungsformen offenbart, die mit einer virtualisierten Rechenplattform für hochentwickeltes Rechnen in Bezug stehen, wie etwa Bildinferenz und Bildverarbeitung in medizinischen Anwendungen. Ohne Einschränkung können Ausführungsformen Radiografie, Magnetresonanztomografie (MRT), Nuklearmedizin, Ultraschall, Sonografie, Elastografie, fotoakustische Bildgebung, Tomografie, Echokardiografie, funktionelle Nahinfrarotspektroskopie und Magnetpartikelbildgebung oder eine Kombination davon beinhalten. Bei 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 Erfassung und Bildgebung 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 39 ist 39 ein beispielhaftes Datenablaufdiagramm für einen Prozess 3900 zum Erzeugen und Einsetzen einer Bildverarbeitungs- und Inferencing-Pipeline gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform kann der Prozess 3900 zur Verwendung mit Bildgebungsvorrichtungen, Verarbeitungsvorrichtungen, Genomikvorrichtungen, Gensequenzierungsvorrichtungen, Radiologievorrichtungen und/oder anderen Vorrichtungstypen in einer oder mehreren Einrichtungen 3902 eingesetzt werden, wie etwa medizinischen Einrichtungen, Krankenhäusern, Gesundheitsinstituten, Kliniken, Forschungs- oder Diagnoselabors usw. Bei mindestens einer Ausführungsform kann der Prozess 3900 zum Ausführen einer Genomanalyse und -inferenz 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 Varianten-Calling, Mutationserfassung und Quantifizierung der Genexpression.
  • Bei mindestens einer Ausführungsform kann der Prozess 3900 innerhalb eines Trainingssystems 3904 und/oder eines Einsatzsystems 3906 ausgeführt werden. Bei mindestens einer Ausführungsform kann das Trainingssystem 3904 dazu verwendet werden, das Training, den Einsatz und die Umsetzung von Modellen des maschinellen Lernens (z. B. neuronale Netzwerke, Objekterfassungsalgorithmen, Computer-Vision-Algorithmen usw.) zur Verwendung in dem Einsatzsystem 3906 auszuführen. Bei mindestens einer Ausführungsform kann das Einsatzsystem 3906 derart konfiguriert sein, dass es Verarbeitungs- und Rechenressourcen in einer verteilten Rechenumgebung ablädt, um die Infrastrukturanforderungen in der Einrichtung 3902 zu reduzieren. Bei mindestens einer Ausführungsform kann das Einsatzsystem 3906 eine gestraffte Plattform zum Auswählen, individuellen Anpassen und Implementieren virtueller Instrumente zur Verwendung mit Bildgebungsvorrichtungen (z. B. MRT, CT-Scan, Röntgen, Ultraschall usw.) oder Sequenzierungsvorrichtungen in der Einrichtung 3902 bereitstellen. Bei mindestens einer Ausführungsform können virtuelle Instrumente softwaredefinierte Anwendungen zum Ausführen einer oder mehrerer Verarbeitungsoperationen in Bezug auf Bildgebungsdaten einschließen, die von Bildgebungsgeräten, Sequenzierungsgeräten, Radiologiegeräten und/oder anderen Gerätetypen generiert werden. Bei mindestens einer Ausführungsform können eine oder mehrere Anwendungen in einer Pipeline Dienste (z. B. Inferenz, Visualisierung, Berechnung, KI usw.) des Einsatzsystems 3906 während der Ausführung von Anwendungen verwenden oder aufrufen.
  • Bei mindestens einer Ausführungsform können einige der Anwendungen, die in weiterentwickelten Verarbeitungs- und Inferenz-Pipelines verwendet werden, Modelle des maschinellen Lernens oder andere KI verwenden, um einen oder mehrere Verarbeitungsschritte auszuführen. Bei mindestens einer Ausführungsform können Modelle des maschinellen Lernens in der Einrichtung 3902 unter Verwendung von Daten 3908 (wie etwa Bildgebungsdaten) trainiert werden, die in der Einrichtung 3902 generiert wurden (und auf einem oder mehreren Servern eines Bildarchivierungs- und Kommunikationssystems (Picture Archiving And Communication System - PACS) in der Einrichtung 3902 gespeichert sind), und sie können unter Verwendung von Bildgebungs- oder Sequenzierungsdaten 3908 aus einer anderen Einrichtung oder anderen Einrichtungen (z. B. einem anderen Krankenhaus, Labor, einer anderen Klinik usw.) oder einer Kombination davon trainiert werden. Bei mindestens einer Ausführungsform kann das Trainingssystem 3904 verwendet werden, um Anwendungen, Dienste und/oder andere Ressourcen zum Generieren von funktionierenden, einsatzfähigen Modellen des maschinellen Lernens für das Einsatzsystem 3906 bereitzustellen.
  • Bei mindestens einer Ausführungsform kann eine Modellregistrierungsdatenbank 3924 durch Objektspeicher unterstützt werden, der Versionierung und Objekt-Metadaten unterstützen kann. Bei mindestens einer Ausführungsform kann der Zugriff auf den Objektspeicher beispielsweise durch eine mit Cloud-Speicher (z. B. einer Cloud 4026 der 40) kompatible Anwendungsprogrammierschnittstelle (API) von innerhalb einer Cloud-Plattform erfolgen. Bei mindestens einer Ausführungsform können Modelle des maschinellen Lernens innerhalb der Modellregistrierungsdatenbank 3924 durch Entwickler oder Partner eines Systems, das mit einer API interagiert, hochgeladen, aufgelistet, modifiziert oder gelöscht werden. Bei 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.
  • Bei mindestens einer Ausführungsform kann eine Trainings-Pipeline 4004 (40) ein Szenario beinhalten, in dem die Einrichtung 3902 ihr eigenes Modell des maschinellen Lernens trainiert oder ein bestehendes Modell des maschinellen Lernen aufweist, das optimiert oder aktualisiert werden muss. Bei mindestens einer Ausführungsform können Bildgebungsdaten 3908, die durch Bildgebungsvorrichtung(en), Sequenzierungsvorrichtungen und/oder andere Vorrichtungstypen generiert wurden, empfangen werden. Bei mindestens einer Ausführungsform kann, sobald Bildgebungsdaten 3908 empfangen werden, die Klgestützte Annotation 3910 verwendet werden, um beim Erzeugen von Annotationen zu helfen, die den Bildgebungsdaten 3908 entsprechen, die als Ground-Truth-Daten für ein Modell des maschinellen Lernens verwendet werden sollen. Bei mindestens einer Ausführungsform kann die KI-gestützte Annotation 3910 ein oder mehrere Modelle des maschinellen Lernens (z. B. faltende neuronal Netzwerke (CNNs)) beinhalten, die darauf trainiert werden können, Annotationen zu generieren, die bestimmten Typen von Bildgebungsdaten 3908 (z. B. von bestimmten Vorrichtungen) und/oder bestimmten Typen von Anomalien in den Bildgebungsdaten 3908 entsprechen. Bei mindestens einer Ausführungsform können die Kl-gestützten Annotationen 3910 dann direkt verwendet oder unter Verwendung eines Annotationswerkzeugs (z. B. von einem Forscher, Kliniker, Arzt, Wissenschaftler usw.) eingestellt oder fein abgestimmt werden, um Ground-Truth-Daten zu generieren. Bei mindestens einer Ausführungsform können in einigen Beispielen beschriftete Klinikdaten 3912 (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. Bei mindestens einer Ausführungsform können die Kl-gestützten Annotationen 3910, beschrifteten Klinikdaten 3912 oder eine Kombination davon als Ground-Truth-Daten für das Training eines Modells des maschinellen Lernens verwendet werden. Bei mindestens einer Ausführungsform kann ein trainiertes Modell des maschinellen Lernens als Ausgabemodell 3916 bezeichnet werden und durch das Einsatzsystem 3906 verwendet werden, wie hierin beschrieben.
  • Bei mindestens einer Ausführungsform kann die Trainings-Pipeline 4004 (40) ein Szenario beinhalten, in dem die Einrichtung 3902 ein Modell des maschinellen Lernens zur Verwendung beim Ausführen eines oder mehrerer Verarbeitungs-Tasks für eine oder mehrere Anwendungen in dem Einsatzsystem 3906 benötigt, die Einrichtung 3902 aber möglicherweise derzeit kein derartiges Modell des maschinellen Lernens aufweist (oder möglicherweise kein Modell aufweist, das für derartige Zwecke optimiert, effizient oder effektiv ist). Bei mindestens einer Ausführungsform kann ein bestehendes Modell des maschinellen Lernens aus der Modellregistrierungsdatenbank 3924 ausgewählt werden. Bei mindestens einer Ausführungsform kann die Modellregistrierungsdatenbank 3924 Modelle des maschinellen Lernens beinhalten, die zum Ausführen einer Vielfalt von unterschiedlichen Inferenz-Tasks an Bildgebungsdaten trainiert sind. Bei mindestens einer Ausführungsform können die Modelle des maschinellen Lernens in der Modellregistrierungsdatenbank 3924 an Bildgebungsdaten von anderen Einrichtungen als der Einrichtung 3902 trainiert worden sein (z. B. Einrichtungen, die sich an einem anderen Ort befinden). Bei 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. Bei mindestens einer Ausführungsform kann das Training an Bildgebungsdaten eines spezifischen Ortes an diesem Ort oder mindestens auf eine Weise stattfinden, welche die Vertraulichkeit der Bildgebungsdaten schützt oder die Übertragung von Bildgebungsdaten außerhalb des Gebäudes einschränkt (z. B. zur Einhaltung von HIPAA-Vorschriften, Datenschutzbestimmungen usw.). Bei mindestens einer Ausführungsform kann ein Modell des maschinellen Lernens, sobald es an einem Ort trainiert - oder teilweise trainiert - wurde, zur Modellregistrierungsdatenbank 3924 hinzugefügt werden. Bei mindestens einer Ausführungsform kann ein Modell des maschinellen Lernens dann in einer beliebigen Anzahl von anderen Einrichtungen erneut trainiert oder aktualisiert werden und ein erneut trainiertes oder aktualisiertes Modell kann in der Modellregistrierungsdatenbank 3924 verfügbar gemacht werden. Bei mindestens einer Ausführungsform kann dann ein Modell des maschinellen Lernens aus der Modellregistrierungsdatenbank 3924 ausgewählt werden - und als Ausgabemodell 3916 bezeichnet werden - und in dem Einsatzsystem 3906 verwendet werden, um einen oder mehrere Verarbeitungs-Tasks für eine oder mehrere Anwendungen eines Einsatzsystems auszuführen.
  • Bei mindestens einer Ausführungsform kann die Trainings-Pipeline 4004 (40) in einem Szenario verwendet werden, das beinhaltet, dass die Einrichtung 3902 ein Modell des maschinellen Lernens zur Verwendung beim Ausführen eines oder mehrerer Verarbeitungs-Tasks für eine oder mehrere Anwendungen in dem Einsatzsystem 3906 erfordert, die Einrichtung 3902 aber möglicherweise derzeit kein derartiges Modell des maschinellen Lernens aufweist (oder möglicherweise kein Modell aufweist, das für derartige Zwecke optimiert, effizient oder effektiv ist). Bei mindestens einer Ausführungsform könnte ein aus der Modellregistrierungsdatenbank 3924 ausgewähltes Modell des maschinellen Lernens aufgrund von Unterschieden bei den Populationen, genetischen Variationen, der Robustheit der zum Trainieren eines Modells des maschinellen Lernens verwendeten Trainingsdaten, der Verschiedenartigkeit der Anomalien der Trainingsdaten und/oder anderer Probleme mit den Trainingsdaten nicht für die in der Einrichtung 3902 generierten Bildgebungsdaten 3908 fein abgestimmt oder optimiert sein. Bei mindestens einer Ausführungsform kann die KI-gestützte Annotation 3910 verwendet werden, um beim Erzeugen von Annotationen zu helfen, die den Bildgebungsdaten 3908 entsprechen, die als Ground-Truth-Daten für das erneute Trainieren oder Aktualisieren eines Modells des maschinellen Lernens verwendet werden sollen. Bei mindestens einer Ausführungsform können beschriftete Klinikdaten 3912 (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. Bei mindestens einer Ausführungsform kann das erneute Trainieren oder Aktualisieren eines Modells des maschinellen Lernens als Modelltraining 3914 bezeichnet werden. Bei mindestens einer Ausführungsform kann das Modelltraining 3914 - z. B. KI-gestützte Annotationen 3910, beschriftete Klinikdaten 3912 oder eine Kombination davon - als Ground-Truth-Daten für das erneute Training oder Aktualisieren eines Modells des maschinellen Lernens verwendet werden.
  • Bei mindestens einer Ausführungsform kann das Einsatzsystem 3906 Software 3918, Dienste 3920, Hardware 3922 und/oder andere Komponenten, Merkmale und Funktionalitäten beinhalten. Bei mindestens einer Ausführungsform kann das Einsatzsystem 3906 einen Software-„Stapel“ beinhalten, sodass die Software 3918 auf den Diensten 3920 aufgebaut sein kann und die Dienste 3920 verwenden kann, um einige oder alle Verarbeitungs-Tasks auszuführen, und die Dienste 3920 und die Software 3918 können auf der Hardware 3922 aufgebaut sein und die Hardware 3922 verwenden, um Verarbeitungs-, Speicher- und/oder andere Rechen-Tasks des Einsatzsystems 3906 auszuführen.
  • Bei mindestens einer Ausführungsform kann die Software 3918 eine beliebige Anzahl von unterschiedlichen Containern beinhalten, wobei jeder Container eine Instanziierung einer Anwendung ausführen kann. Bei mindestens einer Ausführungsform kann jede Anwendung eine oder mehrere Verarbeitungs-Tasks in einer weiterentwickelten Verarbeitungs- und Inferencing-Pipeline ausführen (z. B. Inferencing, Objekterfassung, Merkmalerfassung, Segmentierung, Bildverbesserung, Kalibrierung usw.). Bei mindestens einer Ausführungsform kann für jeden Typ von Bildgebungsvorrichtung (z. B. CT, MRT, Röntgen, Ultraschall, Sonografie, Echokardiografie usw.), Sequenzierungsvorrichtung, Radiologievorrichtung, Genomikvorrichtung usw. eine beliebige Anzahl von Containern vorhanden sein, die einen Datenverarbeitungs-Task in Bezug auf Bildgebungsdaten 3908 (oder andere Datentypen, wie etwa die hierin beschriebenen), die von einer Vorrichtung generiert werden, ausführen können. Bei mindestens einer Ausführungsform kann eine weiterentwickelte Verarbeitungs- und Inferenz-Pipeline basierend auf Auswahlen unterschiedlicher Container definiert werden, die zum Verarbeiten von Bildgebungsdaten 3908 gewünscht oder erforderlich sind, zusätzlich zu Containern, die Bildgebungsdaten zur Verwendung durch jeden Container und/oder zur Verwendung durch die Einrichtung 3902 nach dem Verarbeiten durch eine Pipeline empfangen und konfigurieren (z. B. zur Rückkonvertierung von Ausgaben in einen verwendbaren Datentyp, wie etwa Daten der digitalen Bildgebung und Kommunikation in der Medizin (Digital Imaging And Communications In Medicine - DICOM), Daten eines Radiologieinformationssystems (Radiology Information System - RIS), Daten eines Klinikinformationssystems (Clinical Information System - CIS), Daten zum Aufruf einer entfernten Prozedur (Remote Procedure Call - RPC), Daten, die im Wesentlichen mit einer Schnittstelle zur Darstellungszustandsübermittlung (Representation State Transfer - REST) konform sind, Daten, die im Wesentlichen mit einer dateibasierten Schnittstelle konform sind, und/oder Rohdaten, zur Speicherung und Anzeige in der Einrichtung 3902). Bei mindestens einer Ausführungsform kann eine Kombination von Containern innerhalb der Software 3918 (die z. B. eine Pipeline bilden) als virtuelles Instrument bezeichnet werden (wie hierin detaillierter beschrieben), und ein virtuelles Instrument kann Dienste 3920 und Hardware 3922 nutzen, um einige oder alle Verarbeitungs-Tasks von in Containern instanziierten Anwendungen auszuführen.
  • Bei mindestens einer Ausführungsform kann eine Datenverarbeitungs-Pipeline Eingabedaten (z. B. Bildgebungsdaten 3908) in einem DICOM-, RIS-, CIS-, REST-konformen, RPC-, Rohdaten- und/oder anderen Format als Reaktion auf eine Inferenzanforderung (z. B. eine Anforderung von einem Benutzer des Einsatzsystems 3906, wie etwa einem Kliniker, einem Arzt, einem Radiologen usw.) empfangen. Bei mindestens einer Ausführungsform können die Eingabedaten für ein oder mehrere Bilder, Videos und/oder andere Datendarstellungen repräsentativ sein, die durch eine oder mehrere Bildgebungsvorrichtungen, Sequenzierungsvorrichtungen, Radiologievorrichtungen, Genomikvorrichtungen und/oder andere Vorrichtungstypen generiert werden. Bei mindestens einer Ausführungsform können die Daten als Teil der Datenverarbeitungs-Pipeline einer Vorverarbeitung unterzogen werden, um die Daten für die Verarbeitung durch eine oder mehrere Anwendungen vorzubereiten. Bei mindestens einer Ausführungsform kann Nachverarbeitung an einer Ausgabe eines oder mehrerer Inferencing-Tasks oder anderer 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 Inferenzanforderung). Bei mindestens einer Ausführungsform können Inferencing-Tasks durch ein oder mehrere Modelle des maschinellen Lernens ausgeführt werden, wie etwa trainierte oder eingesetzte neuronale Netzwerke, die Ausgabemodelle 3916 des Trainingssystems 3904 beinhalten können.
  • Bei mindestens einer Ausführungsform können die Tasks der Datenverarbeitungs-Pipeline in einem Container(n) gekapselt sein, die jeweils eine diskrete, voll funktionsfähige Instanziierung einer Anwendung und einer virtualisierten Rechenumgebung darstellen, die dazu in der Lage ist, Modelle des maschinellen Lernens zu referenzieren. Bei mindestens einer Ausführungsform können Container oder Anwendungen in einem privaten (z. B. zugriffsbeschränkten) Bereich einer Containerregistrierungsdatenbank (hierin detaillierter beschrieben) veröffentlicht werden und trainierte oder eingesetzte Modelle können in der Modellregistrierungsdatenbank 3924 gespeichert und mit einer oder mehreren Anwendungen assoziiert werden. Bei 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 generieren.
  • Bei mindestens einer Ausführungsform können Entwickler (z. B. Software-Entwickler, Kliniker, Ärzte usw.) Anwendungen (z. B. als Container) zum Ausführen von Bildverarbeitung und/oder Inferenz an zugeführten Daten entwickeln, veröffentlichen und speichern. Bei mindestens einer Ausführungsform können die Entwicklung, Veröffentlichung und/oder Speicherung unter Verwendung eines Softwareentwicklungskits (Software Development Kit - SDK) ausgeführt werden, das mit einem System assoziiert ist (um z. B. sicherzustellen, dass eine Anwendung und/oder ein entwickelter Container mit einem System konform oder kompatibel ist). Bei mindestens einer Ausführungsform kann eine Anwendung, die entwickelt wird, lokal (z. B. in einer ersten Einrichtung, an Daten von einer ersten Einrichtung) mit einem SDK geprüft werden, das mindestens einige der Dienste 3920 als System (z. B. System 4000 der 40) unterstützen kann. Da DICOM-Objekte zwischen einem und Hunderten von Bildern oder anderen Datentypen enthalten können, und aufgrund einer Variation der Daten, kann ein Entwickler bei mindestens einer Ausführungsform für das Verwalten (z. B. das Festlegen von Konstrukten für, den Einbau von Vorverarbeitung in eine Anwendung usw.) der Extraktion und Vorbereitung eingehender DICOM-Daten zuständig sein. Bei mindestens einer Ausführungsform kann eine Anwendung, sobald sie durch das System 4000 validiert wurde (z. B. bezüglich Genauigkeit, Sicherheit, Patientendatenschutz usw.), in einer Containerregistrierungsdatenbank zur Auswahl und/oder Implementation durch einen Benutzer (z. B. ein Krankenhaus, eine Klinik, ein Labor, einen Gesundheitsdienstleister usw.) verfügbar sein, um einen oder mehrere Verarbeitungs-Tasks in Bezug auf Daten in einer Einrichtung (z. B. einer zweiten Einrichtung) eines Benutzers auszuführen.
  • Bei mindestens einer Ausführungsform können Entwickler dann Anwendungen oder Container durch ein Netzwerk für den Zugriff und die Verwendung durch Benutzer eines Systems (z. B. des Systems 4000 der 40) gemeinsam nutzen. Bei mindestens einer Ausführungsform können abgeschlossene und validierte Anwendungen oder Container in einer Containerregistrierungsdatenbank gespeichert werden und damit assoziierte Modelle des maschinellen Lernens in der Modellregistrierungsdatenbank 3924 gespeichert werden. Bei mindestens einer Ausführungsform kann eine anfordernde Entität (z. B. ein Benutzer in einer medizinischen Einrichtung) - die eine Inferenz- oder Bildverarbeitungsanforderung bereitstellt - eine Containerregistrierungsdatenbank und/oder Modellregistrierungsdatenbank 3924 nach einer Anwendung, einem Container, einem Datensatz, einem Modell des maschinellen Lernens usw. durchsuchen, eine gewünschte Kombination von Elementen zur Aufnahme in die Datenverarbeitungs-Pipeline auswählen und eine Bildverarbeitungsanforderung absenden. Bei mindestens einer Ausführungsform kann eine Anforderung Eingabedaten (und in einigen Beispielen damit assoziierte Patientendaten) beinhalten, die zum Ausführen einer Anforderung notwendig sind, und/oder eine Auswahl von Anwendung(en) und/oder Modellen des maschinellen Lernens beinhalten, die bei der Verarbeitung einer Anforderung ausgeführt werden sollen. Bei mindestens einer Ausführungsform kann eine Anforderung dann an eine oder mehrere Komponenten des Einsatzsystems 3906 (z. B. eine Cloud) übergeben werden, um die Verarbeitung der Datenverarbeitungs-Pipeline auszuführen. Bei mindestens einer Ausführungsform kann die Verarbeitung durch das Einsatzsystem 3906 die Referenzierung ausgewählter Elemente (z. B. Anwendungen, Container, Modelle usw.) aus einer Containerregistrierungsdatenbank und/oder Modellregistrierungsdatenbank 3924 beinhalten. Bei mindestens einer Ausführungsform können, sobald Ergebnisse von einer Pipeline generiert wurden, die Ergebnisse an einen Benutzer als Referenz zurückgegeben werden (z. B. zur Ansicht in einer Ansichtanwendungssuite, die auf einer lokalen Workstation oder einem lokalen Endgerät vor Ort ausgeführt wird). Bei mindestens einer Ausführungsform kann ein Radiologe Ergebnisse von einer Datenverarbeitungs-Pipeline empfangen, die eine beliebige Anzahl von Anwendungen und/oder Containern beinhaltet, wobei die Ergebnisse Anomalieerfassung in Röntgenbildern, CT-Scans, MRTs usw. beinhalten können.
  • Bei mindestens einer Ausführungsform können zur Unterstützung der Verarbeitung oder Ausführung von Anwendungen oder Containern in Pipelines die Dienste 3920 ausgenutzt werden. Bei mindestens einer Ausführungsform können die Dienste 3920 Rechendienste, Dienste für künstliche Intelligenz (Kl), Visualisierungsdienste und/oder andere Diensttypen beinhalten. Bei mindestens einer Ausführungsform können die Dienste 3920 eine Funktionalität bereitstellen, die eine oder mehrere Anwendungen in der Software 3918 gemeinsam haben, sodass die Funktionalität zu einem Dienst abstrahiert werden kann, der durch Anwendungen aufgerufen oder ausgenutzt werden kann. Bei mindestens einer Ausführungsform kann die durch die Dienste 3920 bereitgestellte Funktionalität dynamisch und effizienter laufen, während sie ebenfalls gut skalierbar ist, indem es Anwendungen erlaubt wird, Daten parallel zu verarbeiten (z. B. unter Verwendung einer Parallelrechenplattform 4030 (40). Statt dass jede Anwendung, die eine gleiche Funktionalität, die von einem Dienst 3920 angeboten wird, gemeinsam genutzt, eine entsprechende Instanz des Dienstes 3920 aufweisen muss, kann der Dienst 3920 bei mindestens einer Ausführungsform von verschiedenen Anwendungen gemeinsam genutzt werden. Bei mindestens einer Ausführungsform können die Dienste einen Inferenzserver oder eine Inferenz-Engine beinhalten, der/die als nicht einschränkende Beispiele für die Ausführung von Erfassungs- oder Segmentierungs-Tasks verwendet werden kann. Bei 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. Bei mindestens einer Ausführungsform kann ferner ein Datenerweiterungsdienst enthalten sein, der die Extraktion, Größenänderung, Skalierung und/oder andere Erweiterung von GPU-beschleunigten Daten (z. B. DICOM-Daten, RIS-Daten, CIS-Daten, REST-konformen Daten, RPC-Daten, Rohdaten usw.) bereitstellen kann. Bei mindestens einer Ausführungsform kann ein Visualisierungsdienst verwendet werden, der Bild-Rendering-Effekte - wie etwa Ray-Tracing, Rasterung, Entrauschen, Schärfung usw. - hinzufügen kann, um zweidimensionale (2D) und/oder dreidimensionale (3D) Modelle realistischer zu gestalten. Bei mindestens einer Ausführungsform können Dienste für virtuelle Instrumente enthalten sein, die Strahlformung, Segmentierung, Inferenzieren, Bildgebung und/oder Unterstützung für andere Anwendungen innerhalb von Pipelines virtueller Instrumente bereitstellen.
  • Bei mindestens einer Ausführungsform, bei der ein Dienst 3920 einen Kl-Dienst (z. B. einen Inferenzdienst) beinhaltet, können ein oder mehrere Modelle des maschinellen Lernens, die mit einer Anwendung zur Anomalieerfassung (z. B. Tumoren, Wachstumsauffälligkeiten, Narbenbildung usw.) assoziiert sind, ausgeführt werden, indem ein Inferenzdienst (z. B. ein Inferenzserver) aufgerufen wird (z. B. als API-Aufruf), um Modell(e) des maschinellen Lernens oder deren Verarbeitung als Teil der Anwendungsausführung auszuführen. Bei mindestens einer Ausführungsform, in der eine andere Anwendung ein oder mehrere Modelle des maschinellen Lernens für Segmentierungs-Tasks beinhaltet, kann eine Anwendung einen Inferenzdienst aufrufen, um Modelle des maschinellen Lernens zur Ausführung eines oder mehrerer mit Segmentierungs-Tasks assoziierten Verarbeitungsvorgängen auszuführen. Bei mindestens einer Ausführungsform kann die Software 3918, die eine weiterentwickelte Verarbeitungs- und Inferenz-Pipeline umsetzt, die eine Segmentierungsanwendung und eine Anomalieerfassungsanwendung beinhaltet, gestrafft werden, da jede Anwendung einen gleichen Inferenzdienst zum Ausführen eines oder mehrerer Inferencing-Tasks aufrufen kann.
  • Bei mindestens einer Ausführungsform kann die Hardware 3922 GPUs, CPUs, Grafikkarten, ein KI-/Deep-Learning-System (z. B. einen Kl-Supercomputer wie etwa das DGX-Supercomputersystem von NVIDIA), eine Cloud-Plattform oder eine Kombination davon beinhalten. Bei mindestens einer Ausführungsform können unterschiedliche Typen von Hardware 3922 verwendet werden, um eine effiziente, speziell entwickelte Unterstützung für Software 3918 und Dienste 3920 in dem Einsatzsystem 3906 bereitzustellen. Bei mindestens einer Ausführungsform kann die Verwendung von GPU-Verarbeitung für die lokale Verarbeitung (z. B. in der Einrichtung 3902), innerhalb eines KI/Deep-Learning-Systems, in einem Cloud-System und/oder in anderen Verarbeitungskomponenten des Einsatzsystems 3906 umgesetzt werden, um die Effizienz, Genauigkeit und Wirksamkeit von Bildverarbeitung, Bildrekonstruktion, Segmentierung, MRT-Untersuchungen, Schlaganfall- oder Herzinfarkterfassung (z. B. in Echtzeit), Bildqualität beim Rendern usw. zu verbessern. Bei mindestens einer Ausführungsform kann eine Einrichtung Bildgebungsvorrichtungen, Genomikvorrichtungen, Sequenzierungsvorrichtungen und/oder andere Vorrichtungstypen in den Räumlichkeiten beinhalten, die GPUs ausnutzen können, um Bildgebungsdaten zu generieren, die für die Anatomie eines Probanden repräsentativ sind.
  • Bei mindestens einer Ausführungsform können die Software 3918 und/oder die Dienste 3920 als nicht einschränkende Beispiele für die GPU-Verarbeitung in Bezug auf Deep Learning, maschinelles Lernen und/oder Datenverarbeitung mit hoher Rechenleistung optimiert sein. Bei mindestens einer Ausführungsform kann mindestens ein Teil der Rechenumgebung des Einsatzsystems 3906 und/oder des Trainingssystems 3904 in einem Rechenzentrum auf einem oder mehreren Supercomputern oder Rechensystemen mit hoher Rechenleistung mit GPU-optimierter Software (z. B. Hardware- und Software-Kombination des DGX-Systems von NVIDIA) ausgeführt werden. Bei 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. Bei mindestens einer Ausführungsform kann die Hardware 3922 eine beliebige Anzahl von GPUs beinhalten, die zur parallelen Verarbeitung von Daten, wie hierin beschrieben, aufgerufen werden können. Bei 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. Bei mindestens einer Ausführungsform kann die Cloud-Plattform (z. B. NGC von NVIDIA) unter Verwendung von 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. Bei 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.
  • 40 ist eine Systemdarstellung für ein beispielhaftes System 4000 zum Erzeugen und Einsetzen einer Bildgebungseinsatz-Pipeline gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform kann das System 4000 dazu verwendet werden, den Prozess 3900 der 39 und/oder andere Prozesse, einschließlich hochentwickelter Verarbeitungs- und Inferencing-Pipelines, umzusetzen. Bei mindestens einer Ausführungsform kann das System 4000 das Trainingssystem 3904 und das Einsatzsystem 3906 beinhalten. Bei mindestens einer Ausführungsform können das Trainingssystem 3904 und das Einsatzsystem 3906 unter Verwendung von Software 3918, Diensten 3920 und/oder Hardware 3922, wie hierin beschrieben, umgesetzt werden.
  • Bei mindestens einer Ausführungsform kann das System 4000 (z. B. das Trainingssystem 3904 und/oder das Einsatzsystem 3906) in einer Cloud-Computing-Umgebung umgesetzt sein (z. B. unter Verwendung der Cloud 4026). Bei mindestens einer Ausführungsform kann das System 4000 lokal in Bezug auf eine Einrichtung des Gesundheitswesens oder als Kombination aus sowohl Cloud- als auch lokalen Rechenressourcen umgesetzt werden. Bei mindestens einer Ausführungsform können bei Ausführungsformen, bei denen Cloud Computing umgesetzt wird, Patientendaten von einer oder mehreren Komponenten des Systems 4000 getrennt oder nicht durch diese verarbeitet werden, was die Verarbeitung nicht konform mit HIPAA- und/oder anderen Vorschriften oder Gesetzen zur Datenhandhabung und zum Datenschutz machen würde. Bei mindestens einer Ausführungsform kann der Zugriff auf die APIs in der Cloud 4026 durch erlassene Sicherheitsmaßnahmen oder -protokolle auf autorisierte Benutzer beschränkt sein. Bei 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. Bei mindestens einer Ausführungsform können APIs von virtuellen Instrumenten (hierin beschrieben) oder anderen Instanziierungen des Systems 4000 auf einen Satz von öffentlichen IPs beschränkt sein, die für die Interaktion sicherheitsüberprüft oder autorisiert wurden.
  • Bei mindestens einer Ausführungsform können verschiedene Komponenten des Systems 4000 unter Verwendung beliebiger einer Vielfalt von unterschiedlichen Netztypen, einschließlich, ohne darauf beschränkt zu sein, lokaler Netzwerke (LANs) und/oder Weitverkehrsnetzwerke (WANs), über drahtgebundene und/oder drahtlose Kommunikationsprotokolle miteinander kommunizieren. Bei mindestens einer Ausführungsform kann die Kommunikation zwischen Einrichtungen und Komponenten des Systems 4000 (z. B. zum Übertragen von Inferenzanforderungen, zum Empfangen von Ergebnissen von Inferenzanforderungen usw.) über einen Datenbus oder Datenbusse, drahtlose Datenprotokolle (Wi-Fi), drahtgebundene Datenprotokolle (z. B. Ethernet) usw. kommuniziert werden.
  • Bei mindestens einer Ausführungsform kann das Trainingssystem 3904 Trainings-Pipelines 4004 ausführen, die denjenigen ähnlich sind, die hierin in Bezug auf 39 beschrieben sind. Bei mindestens einer Ausführungsform, in der ein oder mehrere Modelle des maschinellen Lernens in Einsatz-Pipelines 4010 durch das Einsatzsystem 3906 verwendet werden sollen, können Trainings-Pipelines 4004 verwendet werden, um ein oder mehrere (z. B. vorab trainierte) Modelle zu trainieren oder erneut zu trainieren und/oder eines oder mehrere der vorab trainierten Modelle 4006 umzusetzen (z. B. ohne eine Notwendigkeit eines erneuten Trainings oder einer Aktualisierung). Bei mindestens einer Ausführungsform können als Ergebnis der Trainings-Pipelines 4004 Ausgabemodell(e) 3916 generiert werden. Bei mindestens einer Ausführungsform können die Trainings-Pipelines 4004 eine beliebige Anzahl von Verarbeitungsschritten beinhalten, beispielsweise, ohne darauf beschränkt zu sein, die Konvertierung oder Anpassung von Bildgebungsdaten (oder anderen Eingabedaten) (z. B. unter Verwendung eines DICOM-Adapters 4002A zum Konvertieren von DICOM-Bildern in ein anderes Format, das für die Verarbeitung durch jeweilige Modelle des maschinellen Lernens geeignet ist, wie etwa das Format der Neuroimaging Informatics Technology Initiative (NIfTI)), KI-gestützte Annotation 3910, Beschriftung oder Annotation von Bildgebungsdaten 3908, um beschriftete Klinikdaten 3912 zu generieren, Modellauswahl aus einer Modellregistrierungsdatenbank, Modelltraining 3914, Training, erneutes Training oder Aktualisieren von Modellen und/oder andere Verarbeitungsschritte. Bei mindestens einer Ausführungsform können für unterschiedliche Modelle des maschinellen Lernens, die durch das Einsatzsystem 3906 verwendet werden, unterschiedliche Trainings-Pipelines 4004 verwendet werden. Bei mindestens einer Ausführungsform kann für ein erstes Modell des maschinellen Lernens eine Trainings-Pipeline 4004 verwendet werden, die einem ersten Beispiel ähnlich ist, das in Bezug auf 39 beschrieben ist, für ein zweites Modell des maschinellen Lernens eine Trainings-Pipeline 4004 verwendet werden, die einem zweiten Beispiel ähnlich ist, das in Bezug auf 39 beschrieben ist, und für ein drittes Modell des maschinelles Lernens eine Trainings-Pipeline 4004 verwendet werden, die einem dritten Beispiel ähnlich ist, das in Bezug auf 39 beschrieben ist. Bei mindestens einer Ausführungsform kann eine beliebige Kombination von Tasks innerhalb des Trainingssystems 3904 verwendet werden, in Abhängigkeit davon, was für jedes jeweilige Modell des maschinellen Lernens erforderlich ist. Bei 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 3904 unterzogen werden und durch das Einsatzsystem 3906 umgesetzt werden können.
  • Bei mindestens einer Ausführungsform können die Ausgabemodell(e) 3916 und/oder die vorab trainierte(n) Modell(e) 4006 in Abhängigkeit von der Implementation oder Ausführungsform beliebige Typen von Modellen des maschinellen Lernens beinhalten. Bei mindestens einer Ausführungsform und ohne Einschränkung können von dem System 4000 verwendete Modelle des maschinellen Lernens 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, langem Kurzzeitgedächtnis (Long/Short Term Memory - LSTM), Hopfield, Boltzmann, Deep Belief, entfaltenden, generativen, gegnerischen, Flüssigkeitszustands-Engine usw.) und/oder andere Typen von Modellen des maschinellen Lernens beinhalten.
  • Bei mindestens einer Ausführungsform können die Trainings-Pipelines 4004 Klgestützte Annotation beinhalten, wie hierin in Bezug auf mindestens 43B detaillierter beschrieben. Bei mindestens einer Ausführungsform können beschriftete Klinikdaten 3912 (z. B. herkömmliche Annotation) durch eine beliebige Anzahl von Techniken generiert werden. Bei mindestens einer Ausführungsform können Beschriftungen 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 zum Generieren von Annotationen oder Markierungen für Ground Truth geeignet ist, generiert werden und/oder bei einigen Beispielen von Hand gezeichnet werden. Bei 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 Merkmalanalyse und Lernen, um Merkmale aus den Daten zu extrahieren und dann Beschriftungen zu generieren), von Menschen annotiert (z. B. definiert ein Markierer oder Annotationsexperte die Position der Markierungen) und/oder eine Kombination davon sein. Bei mindestens einer Ausführungsform können für jede Instanz der Bildgebungsdaten 3908 (oder eines anderen Datentyps, der durch Modelle des maschinellen Lernens verwendet wird) entsprechende Ground-Truth-Daten vorhanden sein, die von dem Trainingssystem 3904 generiert werden. Bei mindestens einer Ausführungsform kann die KI-gestützte Annotation als Teil der Einsatz-Pipelines 4010 ausgeführt werden; entweder zusätzlich zu oder an Stelle der Kl-gestützten Annotation, die in den Trainings-Pipelines 4004 enthalten ist. Bei mindestens einer Ausführungsform kann das System 4000 eine mehrschichtige Plattform beinhalten, die eine Software-Schicht (z. B. Software 3918) von Diagnoseanwendungen (oder anderen Anwendungstypen) beinhalten kann, die eine oder mehrere medizinische Bildgebungs- und Diagnosefunktionen ausführen kann. Bei mindestens einer Ausführungsform kann das System 4000 kommunikativ an (z. B. über verschlüsselte Verknüpfungen) PACS-Servernetze einer oder mehrerer Einrichtungen gekoppelt sein. Bei mindestens einer Ausführungsform kann das System 4000 derart 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 4002 oder einen Adapter für einen anderen Datentyp, wie etwa RIS, CIS, REST-konform, RPC, Rohdaten usw.), um Operationen, wie etwa Trainieren von Modellen des maschinellen Lernens, Einsetzen von Modellen des maschinellen Lernens, Bildverarbeitung, Inferenzieren und/oder andere Operationen auszuführen.
  • Bei mindestens einer Ausführungsform kann eine Software-Schicht als sichere, verschlüsselte und/oder authentifizierte API umgesetzt sein, durch die Anwendungen oder Container aus einer externen Umgebung(en) (z. B. Einrichtung 3902) ausgewählt (z. B. aufgerufen) werden können. Bei mindestens einer Ausführungsform können Anwendungen dann einen oder mehrere Dienste 3920 aufrufen oder ausführen, um Rechen-, Kl- oder Visualisierungs-Tasks auszuführen, die mit jeweiligen Anwendungen assoziiert sind, und die Software 3918 und/oder die Dienste 3920 können die Hardware 3922 ausnutzen, um Verarbeitungs-Tasks auf effektive und effiziente Weise auszuführen.
  • Bei mindestens einer Ausführungsform kann das Einsatzsystem 3906 Einsatz-Pipelines 4010 ausführen. Bei mindestens einer Ausführungsform können Einsatz-Pipelines 4010 eine beliebige Anzahl von Anwendungen beinhalten, die sequenziell, nicht sequenziell oder auf andere Weise auf Bildgebungsdaten (und/oder andere Datentypen) angewandt werden können, die durch Bildgebungsvorrichtungen, Sequenzierungsvorrichtungen, Genomikvorrichtungen usw. generiert werden - einschließlich KI-gestützter Annotation, wie vorstehend beschrieben. Bei mindestens einer Ausführungsform, wie hierin beschrieben, kann eine Einsatz-Pipeline 4010 für eine einzelne Vorrichtung als virtuelles Instrument für eine Vorrichtung bezeichnet werden (z. B. ein virtuelles Ultraschallinstrument, ein virtuelles CT-Scan-Instrument, ein virtuelles Sequenzierungsinstrument usw.). Bei mindestens einer Ausführungsform kann für eine einzelne Vorrichtung in Abhängigkeit von Informationen, die von Daten gewünscht sind, die von einer Vorrichtung generiert wurden, mehr als eine Einsatz-Pipeline 4010 vorhanden sein. Wenn Erfassungen von Anomalien anhand einer MRT-Engine gewünscht sind, kann bei mindestens einer Ausführungsform eine erste Einsatz-Pipeline 4010 vorhanden sein, und wenn Bildverbesserung anhand einer Ausgabe einer MRT-Engine gewünscht ist, kann eine zweite Einsatz-Pipeline 4010 vorhanden sein.
  • Bei mindestens einer Ausführungsform können für die Einsatz-Pipelines 4010 verfügbare Anwendungen eine beliebige Anwendung beinhalten, die zum Ausführen von Verarbeitungs-Tasks an Bildgebungsdaten oder anderen Daten von Vorrichtungen verwendet werden kann. Bei mindestens einer Ausführungsform können unterschiedliche Anwendungen für die Bildverbesserung, Segmentierung, Rekonstruktion, Anomalieerfassung, Objekterfassung, Merkmalerfassung, Behandlungsplanung, Dosimetrie, Strahlenplanung (oder andere Strahlenbehandlungsprozeduren) und/oder andere Analyse-, Bildverarbeitungs- oder Inferencing-Tasks zuständig sein. Bei mindestens einer Ausführungsform kann das Einsatzsystem 3906 Konstrukte für jede der Anwendungen derart definieren, dass die Benutzer des Einsatzsystems 3906 (z. B. medizinische Einrichtungen, Labors, Kliniken usw.) die Konstrukte verstehen und die Anwendungen für die Umsetzung innerhalb ihrer jeweiligen Einrichtung anpassen können. Bei mindestens einer Ausführungsform kann eine Anwendung zur Bildrekonstruktion für die Aufnahme in die Einsatz-Pipeline 4010 ausgewählt werden, doch der durch eine Bildgebungsvorrichtung generierte Datentyp kann sich von einem innerhalb einer Anwendung verwendeten Datentyp unterscheiden. Bei mindestens einer Ausführungsform kann der DICOM-Adapter 4002B (und/oder ein DICOM-Lesegerät) oder ein Adapter oder ein Lesegerät für einen anderen Datentyp (z. B. RIS, CIS, REST-konform, RPC, Rohdaten usw.) innerhalb der Einsatz-Pipeline 4010 verwendet werden, um Daten in eine Form zu konvertieren, die durch eine Anwendung innerhalb des Einsatzsystems 3906 verwendet werden kann. Bei mindestens einer Ausführungsform kann der Zugriff auf Bibliotheken mit DICOM-Daten, RIS-Daten, CIS-Daten, REST-konformen Daten, RPC-Daten, Rohdaten und/oder anderen Datentypen akkumuliert und vorverarbeitet werden, einschließlich des Decodierens, Extrahierens und/oder Ausführens von Faltungen, Farbkorrekturen, Schärfe-, Gamma- und/oder anderen Erweiterungen der Daten. Bei mindestens einer Ausführungsform können DICOM-Daten, RIS-Daten, CIS-Daten, REST-konforme Daten, RPC-Daten und/oder Rohdaten ungeordnet sein und ein Vorlauf kann ausgeführt werden, um gesammelte Daten zu organisieren oder zu sortieren. Da verschiedene Anwendungen bei mindestens einer Ausführungsform Bildoperationen gemeinsam nutzen können, kann bei einigen Ausführungsformen eine Datenerweiterungsbibliothek (z. B. als einer der Dienste 3920) verwendet werden, um diese Vorgänge zu beschleunigen. Bei mindestens einer Ausführungsform kann zur Vermeidung von Engpässen herkömmlicher Verarbeitungsansätze, die sich auf CPU-Verarbeitung stützen, die Parallelrechenplattform 4030 zur GPU-Beschleunigung dieser Verarbeitungs-Tasks verwendet werden.
  • Bei mindestens einer Ausführungsform kann eine Bildrekonstruktionsanwendung einen Verarbeitungs-Task, der die Verwendung eines Modells des maschinellen Lernens beinhaltet, beinhalten. Bei mindestens einer Ausführungsform kann ein Benutzer ein eigenes Modell des maschinellen Lernens verwenden wollen oder ein Modell des maschinellen Lernens aus der Modellregistrierungsdatenbank 3924 auswählen wollen. Bei mindestens einer Ausführungsform kann ein Benutzer ein eigenes Modell des maschinellen Lernens umsetzen oder ein Modell des maschinellen Lernens zur Aufnahme in eine Anwendung zum Ausführen eines Verarbeitungs-Tasks auswählen. Bei mindestens einer Ausführungsform können die Anwendungen auswählbar und individuell anpassbar sein und durch das Definieren von Konstrukten von Anwendungen werden der Einsatz und die Implementation von Anwendungen für einen konkreten Benutzer als nahtlosere Benutzererfahrung dargestellt. Bei mindestens einer Ausführungsform können Einsatz-Pipelines 4010 durch Ausnutzen anderer Merkmale des Systems 4000 - wie etwa der Dienste 3920 und der Hardware 3922 - noch benutzerfreundlicher sein, eine einfachere Integration bereitstellen und genauere, effizientere und raschere Ergebnisse produzieren.
  • Bei mindestens einer Ausführungsform kann das Einsatzsystem 3906 eine Benutzerschnittstelle 4014 (z. B. eine grafische Benutzerschnittstelle, eine Webschnittstelle usw.) beinhalten, die verwendet werden kann, um Anwendungen für die Aufnahme in die Einsatz-Pipeline(s) 4010 auszuwählen, Anwendungen anzuordnen, Anwendungen oder Parameter oder Konstrukte davon zu modifizieren oder zu ändern, die Einsatz-Pipeline(s) 4010 während des Setups und/oder des Einsatzes zu verwenden und damit zu interagieren und/oder anderswie mit dem Einsatzsystem 3906 zu interagieren. Bei mindestens einer Ausführungsform, obwohl nicht in Bezug auf das Trainingssystem 3904 veranschaulicht, kann die Benutzerschnittstelle 4014 (oder eine andere Benutzerschnittstelle) zum Auswählen von Modellen für die Verwendung in dem Einsatzsystem 3906, zum Auswählen von Modellen für das Training oder das erneute Training in dem Trainingssystem 3904 und/oder um anderswie mit dem Trainingssystem 3904 zu interagieren, verwendet werden.
  • Bei mindestens einer Ausführungsform kann der Pipelineverwalter 4012 zusätzlich zu einem Anwendungsorchestrierungssystem 4028 verwendet werden, um die Interaktion zwischen den Anwendungen oder Containern der Einsatz-Pipeline(s) 4010 und den Diensten 3920 und/oder der Hardware 3922 zu verwalten. Bei mindestens einer Ausführungsform kann der Pipelineverwalter 4012 derart konfiguriert sein, dass er Interaktionen von Anwendung zu Anwendung, von Anwendung zu Dienst 3920 und/oder von Anwendung oder Dienst zu Hardware 3922 erleichtert. Obwohl er als in der Software 3918 enthalten veranschaulicht ist, soll dies bei mindestens einer Ausführungsform nicht einschränkend sein und in einigen Beispielen (wie z. B. in 41 veranschaulicht) kann der Pipelineverwalter 4012 in den Diensten 3920 enthalten sein. Bei mindestens einer Ausführungsform kann das Anwendungsorchestrierungssystem 4028 (z. B. Kubernetes, DOCKER usw.) ein Container-Orchestrierungssystem beinhalten, das Anwendungen zu Containern als logische Einheiten zur Koordination, Verwaltung, Skalierung und zum Einsatz gruppieren kann. Bei mindestens einer Ausführungsform kann durch das Assoziieren von Anwendungen aus den Einsatz-Pipeline(s) 4010 (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.
  • Bei mindestens einer Ausführungsform kann jede Anwendung und/oder jeder Container (oder ein Bild davon) einzeln entwickelt, modifiziert und eingesetzt werden (z. B. kann ein erster Benutzer oder Entwickler eine erste Anwendung entwickeln, modifizieren und einsetzen, und ein zweiter Benutzer oder Entwickler eine zweite Anwendung separat von einem ersten Benutzer oder Entwickler entwickeln, modifizieren und einsetzen), was es ermöglichen kann, sich auf einen Task einer einzelnen Anwendung und/oder Container(n) zu fokussieren und zu konzentrieren, ohne von Tasks einer anderen Anwendung(en) oder eines anderen Container(n) behindert zu werden. Bei mindestens einer Ausführungsform kann die Kommunikation und Kooperation zwischen unterschiedlichen Containern oder Anwendungen durch den Pipelineverwalter 4012 und das Anwendungsorchestrierungssystem 4028 unterstützt werden. Bei 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 4028 und/oder der Pipelineverwalter 4012 die Kommunikation unter und zwischen jedem der Anwendungen oder Container sowie die gemeinsame Nutzung von Ressourcen unter und zwischen diesen erleichtern. Da eine oder mehrere Anwendungen oder Container in den Einsatz-Pipeline(s) 4010 gleiche Dienste und Ressourcen gemeinsam nutzen können, kann das Anwendungsorchestrierungssystem 4028 bei mindestens einer Ausführungsform die gemeinsame Nutzung von Diensten oder Ressourcen zwischen und unter verschiedenen Anwendungen oder Containern orchestrieren, deren Last verteilen und bestimmen. Bei mindestens einer Ausführungsform kann ein Scheduler verwendet werden, um den Ressourcenbedarf von Anwendungen oder Containern, die aktuelle Nutzung oder geplante Nutzung dieser Ressourcen und die Ressourcenverfügbarkeit zu verfolgen. Bei mindestens einer Ausführungsform kann ein Scheduler somit Ressourcen unterschiedlichen Anwendungen zuordnen und Ressourcen zwischen und unter Anwendungen im Hinblick auf Bedarf und Verfügbarkeit eines Systems verteilen. Bei einigen Beispielen kann ein Scheduler (und/oder eine andere Komponente des Anwendungsorchestrierungssystems 4028) die Ressourcenverfügbarkeit und -verteilung basierend auf Beschränkungen bestimmen, die einem System auferlegt werden (z. B. Benutzerbeschränkungen), wie etwa Dienstgüte (QoS), Dringlichkeit des Bedarfs an Datenausgaben (um z. B. zu bestimmen, ob Echtzeitverarbeitung oder verzögerte Verarbeitung ausgeführt werden soll) usw.
  • Bei mindestens einer Ausführungsform können die Dienste 3920, die durch Anwendungen oder Container in dem Einsatzsystem 3906 ausgenutzt und gemeinsam genutzt werden, Rechendienste 4016, KI-Dienste 4018, Visualisierungsdienste 4020 und/oder andere Diensttypen beinhalten. Bei mindestens einer Ausführungsform können Anwendungen einen oder mehrere der Dienste 3920 aufrufen (z. B. ausführen), um Verarbeitungsoperationen für eine Anwendung auszuführen. Bei mindestens einer Ausführungsform können die Rechendienste 4016 durch Anwendungen ausgenutzt werden, um Superrechnen oder andere Tasks des Hochleistungsrechnens (HPC) auszuführen. Bei mindestens einer Ausführungsform können die Rechendienst(e) 4016 ausgenutzt werden, um Parallelverarbeitung (z. B. unter Verwendung einer Parallelrechenplattform 4030) zum Verarbeiten von Daten durch eine oder mehrere Anwendungen und/oder einen oder mehrere Tasks einer einzelnen Anwendung im Wesentlichen simultan auszuführen. Bei mindestens einer Ausführungsform kann die Parallelrechenplattform 4030 (z. B. CUDA von NVIDIA) Universaldatenverarbeitung auf GPUs (GPGPU) ermöglichen (z. B. GPUs 4022). Bei mindestens einer Ausführungsform kann eine Software-Schicht der Parallelrechenplattform 4030 Zugriff auf virtuelle Anweisungssätze und Parallelberechnungselemente von GPUs zur Ausführung von Rechenkernels bereitstellen. Bei mindestens einer Ausführungsform kann die Parallelrechenplattform 4030 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. Bei mindestens einer Ausführungsform können Aufrufe für Interprozesskommunikation (Inter-Process Communication - IPC) für mehrere Container und/oder für mehrere Prozesse innerhalb eines Containers generiert werden, um gleiche Daten aus einem gemeinsam genutzten Speichersegment der Parallelrechenplattform 4030 zu verwenden (z. B., wenn mehrere unterschiedliche Stufen einer Anwendung oder mehrere Anwendungen gleiche Informationen verarbeiten). Bei 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). Bei mindestens einer Ausführungsform können, da Daten verwendet werden, um neue Daten als ein Ergebnis der Verarbeitung zu generieren, diese Informationen über einen neuen Ort der Daten gespeichert und von verschiedenen Anwendungen gemeinsam genutzt werden. Bei 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.
  • Bei mindestens einer Ausführungsform können die KI-Dienste 4018 ausgenutzt werden, um Inferenzdienste zum Ausführen von Modell(en) des maschinellen Lernens auszuführen, die mit Anwendungen assoziiert sind (z. B. mit dem Ausführen eines oder mehrerer Verarbeitungs-Tasks einer Anwendung beauftragt). Bei mindestens einer Ausführungsform können die KI-Dienste 4018 das KI-System 4024 nutzen, um Modell(e) des maschinellen Lernens (z. B. neuronale Netzwerke wie etwa CNNs) für Segmentierung, Rekonstruktion, Objekterfassung, Merkmalerfassung, Klassifizierung und/oder andere Inferencing-Tasks auszuführen. Bei mindestens einer Ausführungsform können die Anwendungen der Einsatz-Pipeline(s) 4010 eines oder mehrere der Ausgabemodelle 3916 aus dem Trainingssystem 3904 und/oder andere Modelle der Anwendungen verwenden, um Inferenz an Bildgebungsdaten (z. B. DICOM-Daten, RIS-Daten, CIS-Daten, REST-konformen Daten, RPC-Daten, Rohdaten usw.) auszuführen. Bei mindestens einer Ausführungsform können zwei oder mehr Beispiele für das Inferenzieren unter Verwendung des Anwendungsorchestrierungssystems 4028 (z. B. eines Schedulers) verfügbar sein. Bei 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 Inferenz bei dringenden Anforderungen während eines Notfalls oder für einen Radiologen während der Diagnose. Bei 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. Bei mindestens einer Ausführungsform kann das Anwendungsorchestrierungssystem 4028 Ressourcen (z. B. Dienste 3920 und/oder Hardware 3922) basierend auf Prioritätspfaden für unterschiedliche Inferencing-Tasks der KI-Dienste 4018 verteilen.
  • Bei mindestens einer Ausführungsform kann der gemeinsam genutzte Datenspeicher mit den KI-Diensten 4018 innerhalb des Systems 4000 verbunden sein. Bei mindestens einer Ausführungsform kann der gemeinsam genutzte Datenspeicher als ein Cache (oder eine andere Speichervorrichtungsart) arbeiten und zur Verarbeitung von Inferenzanforderungen von Anwendungen verwendet werden. Bei mindestens einer Ausführungsform kann, wenn eine Inferenzanforderung abgesendet wird, eine Anforderung durch einen Satz von API-Instanzen des Einsatzsystems 3906 empfangen werden und eine oder mehrere Instanzen können ausgewählt werden (z. B. für beste Anpassung, für Lastverteilung usw.), um eine Anforderung zu verarbeiten. Bei mindestens einer Ausführungsform kann zum Verarbeiten einer Anforderung eine Anforderung in eine Datenbank eingegeben werden, ein Modell des maschinellen Lernens kann aus der Modellregistrierungsdatenbank 3924 lokalisiert werden, falls es sich nicht bereits in einem Cache befindet, ein Validierungsschritt kann sicherstellen, dass ein zweckmäßiges Modell des maschinellen Lernens in einen Cache (z. B. einen gemeinsam genutzten Datenspeicher) geladen wird, und/oder eine Kopie eines Modells kann in einem Cache gesichert werden. Bei mindestens einer Ausführungsform kann ein Scheduler (z. B. des Pipelineverwalters 4012) verwendet werden, um eine Anwendung zu starten, auf die in einer Anforderung verwiesen wird, falls eine Anwendung nicht bereits läuft oder falls nicht genügend Instanzen einer Anwendung vorhanden sind. Bei mindestens einer Ausführungsform kann ein Inferenzserver gestartet werden, wenn ein Inferenzserver zur Ausführung eines Modells nicht bereits gestartet ist. Bei mindestens einer Ausführungsform kann pro Modell eine beliebige Anzahl von Inferenzservern gestartet werden. Bei mindestens einer Ausführungsform können in einem Pull-Modell, in dem Inferenzserver geclustert sind, Modelle gecacht werden, wenn eine Lastverteilung vorteilhaft ist. Bei mindestens einer Ausführungsform können die Inferenzserver statisch in entsprechende, verteilte Server geladen werden.
  • Bei mindestens einer Ausführungsform kann das Inferenzieren unter Verwendung eines Inferenzservers ausgeführt werden, der in einem Container läuft. Bei mindestens einer Ausführungsform kann eine Instanz eines Inferenzservers mit einem Modell (und optional einer Vielzahl von Versionen eines Modells) assoziiert sein. Bei mindestens einer Ausführungsform kann, falls eine Instanz eines Inferenzservers nicht existiert, wenn eine Anforderung zum Ausführen einer Inferenz an einem Modell empfangen wird, eine neue Instanz geladen werden. Bei mindestens einer Ausführungsform kann beim Starten eines Inferenzservers ein Modell an einen Inferenzserver weitergegeben werden, sodass derselbe Container zur Bedienung unterschiedlicher Modelle verwendet werden kann, solange der Inferenzserver als eine andere Instanz läuft.
  • Bei mindestens einer Ausführungsform kann während der Anwendungsausführung eine Inferenzanforderung für eine gegebene Anwendung empfangen werden und ein Container (der z. B. eine Instanz eines Inferenzservers hostet) geladen werden (falls nicht bereits geschehen) und eine Startprozedur aufgerufen werden. Bei mindestens einer Ausführungsform kann die Vorverarbeitungslogik in einem Container eingehende Daten laden, decodieren und/oder eine beliebige zusätzliche Vorverarbeitung an diesen ausführen (z. B. unter Verwendung von CPU(s) und/oder GPU(s)). Bei mindestens einer Ausführungsform kann ein Container, sobald die Daten für die Inferenz vorbereitet sind, die Inferenz nach Bedarf an den Daten ausführen. Bei mindestens einer Ausführungsform kann dies einen einzelnen Inferenzaufruf an einem Bild (z. B. ein Handröntgenbild) beinhalten oder eine Inferenz für Hunderte von Bildern (z. B. ein Brust-CT) erfordern. Bei 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. Bei 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 können (z. B. TAT weniger als 10 Minuten). Bei 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 Inferenzdienst beinhalten.
  • Bei mindestens einer Ausführungsform kann die Übermittlung von Anforderungen zwischen den Diensten 3920 und den Inferenzanwendungen hinter einem Software-Entwicklungskit (SDK) verborgen sein und der robuste Transport durch eine Warteschlange bereitgestellt sein. Bei 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. Bei mindestens einer Ausführungsform kann ein Name einer Warteschlange in einer Umgebung bereitgestellt sein, aus der ein SDK diesen aufnimmt. Bei 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. Bei mindestens einer Ausführungsform können die Ergebnisse durch eine Warteschlange zurück übermittelt werden, um sicherzustellen, dass keine Daten verloren gehen. Bei 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, den Task in der empfangenen Reihenfolge verarbeitet. Bei mindestens einer Ausführungsform kann eine Anwendung auf einer GPU-beschleunigten Instanz laufen, die in der Cloud 4026 generiert wurde, und ein Inferenzdienst kann das Inferenzieren auf einer GPU ausführen.
  • Bei mindestens einer Ausführungsform können die Visualisierungsdienste 4020 ausgenutzt werden, um Visualisierungen zur Ansicht von Ausgaben von Anwendungen und/oder Einsatz-Pipeline(s) 4010 zu generieren. Bei mindestens einer Ausführungsform können die GPUs 4022 durch die Visualisierungsdienste 4020 ausgenutzt werden, um Visualisierungen zu generieren. Bei mindestens einer Ausführungsform können Rendering-Effekte, wie etwa Strahlverfolgung, durch die Visualisierungsdienste 4020 umgesetzt werden, um Visualisierungen mit höherer Qualität zu generieren. Bei 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. Bei 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 generieren. Bei mindestens einer Ausführungsform können die Visualisierungsdienste 4020 einen internen Visualizer, Kinematik und/oder andere Rendering- oder Bildverarbeitungsfähigkeiten oder -funktionen (z. B. Ray-Tracing, Rasterung, interne Optik usw.) beinhalten.
  • Bei mindestens einer Ausführungsform kann die Hardware 3922 GPUs 4022, das KI-System 4024, die Cloud 4026 und/oder beliebige andere Hardware beinhalten, die zum Ausführen des Trainingssystems 3904 und/oder des Einsatzsystems 3906 verwendet wird. Bei mindestens einer Ausführungsform können die GPUs 4022 (z. B. TESLA- und/oder QUADRO-GPUs von NVIDIA) eine beliebige Anzahl von GPUs beinhalten, die zum Ausführen von Verarbeitungs-Tasks von Rechendiensten 4016, KI-Diensten 4018, Visualisierungsdiensten 4020, anderen Diensten und/oder beliebigen von Merkmalen oder Funktionen der Software 3918 verwendet werden können. Unter Bezugnahme auf die KI-Dienste 4018 können die GPUs 4022 beispielsweise zum Ausführen von Vorverarbeitung an Bildgebungsdaten (oder anderen Datentypen, die von Modellen des maschinellen Lernens verwendet werden), Nachverarbeitung an Ausgaben der Modelle des maschinellen Lernens und/oder zum Ausführen von Inferenzieren (z. B. zum Ausführen von Modellen des maschinellen Lernens) verwendet werden. Bei mindestens einer Ausführungsform können die Cloud 4026, das KI-System 4024 und/oder andere Komponenten des Systems 4000 die GPUs 4022 verwenden. Bei mindestens einer Ausführungsform kann die Cloud 4026 eine GPU-optimierte Plattform für Deep-Learning-Tasks beinhalten. Bei mindestens einer Ausführungsform kann das KI-System 4024 GPUs verwenden und die Cloud 4026 - oder mindestens ein Teil, der mit Deep Learning oder Inferenzieren beauftragt ist - kann unter Verwendung eines oder mehrerer Kl-Systeme 4024 ausgeführt werden. Obwohl der Hardware 3922 als getrennte Komponenten veranschaulicht ist, soll dies nicht einschränkend sein, und beliebige Komponenten der Hardware 3922 können mit beliebigen anderen Komponenten der Hardware 3922 kombiniert oder von diesen genutzt werden.
  • Bei mindestens einer Ausführungsform kann das KI-System 4024 ein speziell entwickeltes Rechensystem (z. B. einen Supercomputer oder einen HPC) beinhalten, das für Inferenzieren, Deep Learning, maschinelles Lernen und/oder andere Tasks der künstlichen Intelligenz konfiguriert ist. Bei mindestens einer Ausführungsform kann das KI-System 4024 (z. B. DGX von NVIDIA) GPU-optimierte Software (z. B. einen Software-Stapel) beinhalten, die unter Verwendung einer Vielzahl von GPUs 4022 zusätzlich zu CPUs, RAM, Datenspeicher und/oder anderen Komponenten, Merkmalen oder Funktionen ausgeführt werden kann. Bei mindestens einer Ausführungsform können ein oder mehrere KI-Systeme 4024 in der Cloud 4026 (z. B. in einem Rechenzentrum) umgesetzt werden, um einige oder alle der KI-basierten Verarbeitungs-Tasks des Systems 4000 auszuführen.
  • Bei mindestens einer Ausführungsform kann die Cloud 4026 eine GPUbeschleunigte Infrastruktur (z. B. NGC von NVIDIA) beinhalten, die eine GPU-optimierte Plattform zum Ausführen von Verarbeitungs-Tasks des Systems 4000 bereitstellen kann. Bei mindestens einer Ausführungsform kann die Cloud 4026 ein KI-System(e) 4024 zum Ausführen eines oder mehrerer KI-basierter Tasks des Systems 4000 beinhalten (z. B. als Hardware-Abstraktions- und -Skalierungsplattform). Bei mindestens einer Ausführungsform kann die Cloud 4026 in das Anwendungsorchestrierungssystem 4028 integriert sein, das mehrere GPUs ausnutzt, um eine nahtlose Skalierung und Lastverteilung zwischen und unter den Anwendungen und Diensten 3920 zu ermöglichen. Bei mindestens einer Ausführungsform kann die Cloud 4026 damit beauftragt sein, mindestens einige der Dienste 3920 des Systems 4000 auszuführen, einschließlich der Rechendienste 4016, der KI-Dienste 4018 und/oder der Visualisierungsdienste 4020, wie hierin beschrieben. Bei mindestens einer Ausführungsform kann die Cloud 4026 Inferenz mit kleinen und großen Batches ausführen (z. B. unter Ausführung von TENSOR RT von NVIDIA), eine beschleunigte Parallelrechen-API und -Plattform 4030 bereitstellen (z. B. CUDA von NVIDIA), ein Anwendungsorchestrierungssystem 4028 ausführen (z. B. KUBERNETES), eine Grafik-Rendering-API und -Plattform bereitstellen (z. B. für Strahlverfolgung, 2D-Grafik, 3D-Grafik und/oder andere Rendering-Techniken, um Kinematik mit höherer Qualität zu erzeugen) und/oder sie kann andere Funktionen für das System 4000 bereitstellen.
  • Bei mindestens einer Ausführungsform kann die Cloud 4026 in dem Bestreben, die Vertraulichkeit von Patientendaten zu wahren (z. B., wenn Patientendaten oder - akten außerhalb der Räumlichkeiten verwendet werden sollen), eine Registrierungsdatenbank, wie etwa eine Deep-Learning-Containerregistrierungsdatenbank, beinhalten. Bei 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. Bei mindestens einer Ausführungsform kann die Cloud 4026 Daten empfangen, die Patientendaten sowie Sensordaten in Containern beinhalten, die angeforderte Verarbeitung nur für die Sensordaten in diesen Containern ausführen und dann eine resultierende Ausgabe und/oder Visualisierungen an zweckmäßige Parteien und/oder Vorrichtungen weiterleiten (z. B. medizinische Vorrichtungen in den Räumlichkeiten, die zur Visualisierung oder Diagnose verwendet werden), ohne dass Patientendaten extrahiert oder gespeichert müssen oder anderswie darauf zugegriffen werden muss. Bei mindestens einer Ausführungsform wird die Vertraulichkeit der Patientendaten in Übereinstimmung mit HIPAA- und/oder anderen Datenvorschriften gewahrt.
  • 41 beinhaltet eine beispielhafte Veranschaulichung einer Einsatz-Pipeline 4010A zum Verarbeiten von Bildgebungsdaten gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform kann das System 4000 - und insbesondere das Einsatzsystem 3906 - verwendet werden, um die Einsatz-Pipeline(s) 4010A individuell anzupassen, zu aktualisieren und/oder in eine oder mehrere Produktionsumgebungen zu integrieren. Bei mindestens einer Ausführungsform beinhaltet die Einsatz-Pipeline 4010A der 41 ein nicht einschränkendes Beispiel für eine Einsatz-Pipeline 4010A, die von einem konkreten Benutzer (oder ein Team von Benutzern) in einer Einrichtung (z. B. in einem Krankenhaus, einer Klinik, einem Labor, einer Forschungsumgebung usw.) individuell definiert sein kann. Bei mindestens einer Ausführungsform kann ein Benutzer zum Definieren von Einsatz-Pipelines 4010A für einen CT-Scanner 4102 - beispielsweise aus einer Containerregistrierungsdatenbank - eine oder mehrere Anwendungen auswählen, die spezifische Funktionen oder Tasks in Bezug auf die durch den CT-Scanner 4102 generierten Bildgebungsdaten ausführen. Bei mindestens einer Ausführungsform können Anwendungen auf die Einsatz-Pipeline 4010A als Container angewandt werden, die die Dienste 3920 und/oder Hardware 3922 des Systems 4000 ausnutzen können. Darüber hinaus kann die Einsatz-Pipeline 4010A zusätzliche Verarbeitungs-Tasks oder Anwendungen beinhalten, die umgesetzt werden können, um Daten für die Verwendung durch Anwendungen vorzubereiten (z. B. können der DICOM-Adapter 4002B und ein DICOM-Lesegerät 4106 in der Einsatz-Pipeline 4010A verwendet werden, um Daten für die Verwendung durch eine CT-Rekonstruktion 4108, eine Organsegmentierung 4110 usw. vorzubereiten). Bei mindestens einer Ausführungsform kann die Einsatz-Pipeline 4010A für einen konsistenten Einsatz, eine einmalige Verwendung oder für eine andere Häufigkeit oder ein anderes Intervall individuell angepasst oder ausgewählt werden. Bei mindestens einer Ausführungsform kann ein Benutzer die CT-Rekonstruktion 4108 und die Organsegmentierung 4110 für mehrere Probanden über ein spezifisches Intervall wünschen und daher die Pipeline 4010A für diesen Zeitraum einsetzen. Bei mindestens einer Ausführungsform kann ein Benutzer für jede Anforderung von dem System 4000 die Anwendungen auswählen, die ein Benutzer wünscht, um Verarbeitung an diesen Daten für diese Anforderung auszuführen. Bei mindestens einer Ausführungsform kann die Einsatz-Pipeline 4010A in einem beliebigen Intervall eingestellt werden und aufgrund der Anpassungsfähigkeit und Skalierbarkeit einer Container-Struktur innerhalb des Systems 4000 kann dies ein nahtloser Prozess sein.
  • Bei mindestens einer Ausführungsform kann die Einsatz-Pipeline 4010A der 41 einen CT-Scanner4102 zum Erzeugen von Bildgebungsdaten eines Patienten oder Probanden beinhalten. Bei mindestens einer Ausführungsform können die Bildgebungsdaten von dem CT-Scanner4102 auf einem PACS-Server(n) 4104 gespeichert werden, die mit einer Einrichtung assoziiert sind, in der sich der CT-Scanner 4102 befindet. Bei mindestens einer Ausführungsform kann der/können die PACS-Server 4104 Software- und/oder Hardware-Komponenten beinhalten, die mit den Bildgebungsmodalitäten (z. B. dem CT-Scanner 4102) in einer Einrichtung eine direkte Schnittstelle bilden können. Bei mindestens einer Ausführungsform kann der DICOM-Adapter 4002B das Senden und Empfangen von DICOM-Objekten unter Verwendung von DICOM-Protokollen ermöglichen. Bei mindestens einer Ausführungsform kann der DICOM-Adapter 4002B bei der Vorbereitung oder Konfiguration von DICOM-Daten von PACS-Server(n) 4104 für die Verwendung durch die Einsatz-Pipeline 4010A helfen. Bei mindestens einer Ausführungsform kann der Pipeline-Manager 4012 Daten an die Einsatz-Pipeline 4010A durchrouten, sobald DICOM-Daten durch den DICOM-Adapter4002B verarbeitet sind. Bei mindestens einer Ausführungsform kann das DICOM-Lesegerät 4106 Bilddateien und etwaige damit assoziierte Metadaten aus DICOM-Daten extrahieren (z. B. Sinogramm-Rohdaten, wie in der Visualisierung 4116A veranschaulicht). Bei mindestens einer Ausführungsform können Arbeitsdateien, die extrahiert werden, in einem Cache gespeichert werden, um eine schnellere Verarbeitung durch andere Anwendungen in der Einsatz-Pipeline 4010A zu ermöglichen. Bei mindestens einer Ausführungsform kann, sobald das DICOM-Lesegerät 4106 das Extrahieren und/oder Speichern von Daten beendet hat, ein Abschlusssignal an den Pipelineverwalter 4012 kommuniziert werden. Bei mindestens einer Ausführungsform kann der Pipelineverwalter 4012 dann eine oder mehrere andere Anwendungen oder Container in der Einsatz-Pipeline 4010A initiieren oder aufrufen.
  • Bei mindestens einer Ausführungsform kann die Anwendung und/oder der Container für die CT-Rekonstruktion 4108 ausgeführt werden, sobald Daten (z. B. Sinogramm-Rohdaten) für die Verarbeitung durch die Anwendung für die CT-Rekonstruktion 4108 verfügbar sind. Bei mindestens einer Ausführungsform kann die CT-Rekonstruktion 4108 Sinogramm-Rohdaten aus einem Cache lesen, eine Bilddatei aus den Sinogramm-Rohdaten rekonstruieren (wie z. B. in der Visualisierung 4116B veranschaulicht) und die resultierende Bilddatei in einem Cache speichern. Bei mindestens einer Ausführungsform kann bei Abschluss der Rekonstruktion dem Pipelineverwalter 4012 signalisiert werden, dass der Rekonstruktions-Task abgeschlossen ist. Bei mindestens einer Ausführungsform kann, sobald die Rekonstruktion abgeschlossen ist und eine rekonstruierte Bilddatei in einem Cache (oder einer anderen Speichervorrichtung) gespeichert werden kann, die Anwendung und/oder der Container für die Organsegmentierung 4110 durch den Pipelineverwalter4012 ausgelöst werden. Bei mindestens einer Ausführungsform kann die Anwendung und/oder der Container für die Organsegmentierung 4110 eine Bilddatei aus einem Cache lesen, eine Bilddatei normalisieren oder in ein für die Inferenz geeignetes Format konvertieren (z. B. eine Bilddatei in eine Eingabeauflösung eines Modells des maschinellen Lernens konvertieren) und die Inferenz gegen ein normalisiertes Bild ausführen. Um Inferenz an einem normalisierten Bild auszuführen, kann sich die Anwendung und/oder der Container für die Organsegmentierung 4110 bei mindestens einer Ausführungsform auf die Dienste 3920 stützen und der Pipelineverwalter 4012 und/oder das Anwendungsorchestrierungssystem 4028 können die Verwendung der Dienste 3920 durch die Anwendung und/oder den Container für die Organsegmentierung 4110 erleichtern. Bei mindestens einer Ausführungsform kann beispielsweise die Organsegmentierungsanwendung 4110 und/oder der Container Kl-Dienste 4018 nutzen, um eine Inferenz auf einem normalisierten Bild auszuführen, und die KI-Dienste 4018 können Hardware 3922 (z. B. das KI-System 4024) nutzen, um Kl-Dienste 4018 auszuführen. Bei mindestens einer Ausführungsform kann ein Ergebnis einer Inferenz eine Maskendatei sein (wie z. B. in der Visualisierung 4116C veranschaulicht), die in einem Cache (oder einer anderen Speichervorrichtung) gespeichert werden kann.
  • Bei 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 4012 generiert werden. Bei mindestens einer Ausführungsform kann der Pipelineverwalter 4012 dann ein DICOM-Schreibgerät 4112 ausführen, um Ergebnisse aus einem Cache (oder einer anderen Speichervorrichtung) zu lesen und Ergebnisse in ein DICOM-Format (z. B. als DICOM-Ausgabe 4114) zur Verwendung durch Benutzer in einer Einrichtung, die eine Anforderung generierten, zu verpacken. Bei mindestens einer Ausführungsform kann die DICOM-Ausgabe 4114 dann an den DICOM-Adapter 4002B übertragen werden, um die DICOM-Ausgabe 4114 für die Speicherung auf den PACS-Server(n) 4104 vorzubereiten (z. B. zum Ansehen durch ein DICOM-Betrachtungsgerät in einer Einrichtung). Bei mindestens einer Ausführungsform können als Reaktion auf eine Anforderung zur Rekonstruktion und Segmentierung Visualisierungen 4116B und 4116C generiert werden und einem Benutzer für Diagnose-, Forschungs- und/oder andere Zwecke zur Verfügung gestellt werden.
  • Obwohl als konsekutive Anwendung in der Einsatz-Pipeline 4010A veranschaulicht, können die Anwendungen für die CT-Rekonstruktion 4108 und die Organsegmentierung 4110 bei mindestens einer Ausführungsform parallel verarbeitet werden. Bei mindestens einer Ausführungsform, in der die Anwendungen keine Abhängigkeiten voneinander aufweisen und Daten für jede Anwendung verfügbar sind (z. B., nachdem das DICOM-Lesegerät 4106 Daten extrahiert hat), können Anwendungen gleichzeitig, im Wesentlichen gleichzeitig oder mit einer gewissen Überlappung ausgeführt werden. Bei mindestens einer Ausführungsform, bei der zwei oder mehr Anwendungen ähnliche Dienste 3920 erfordern, kann ein Scheduler des Systems 4000 zur Lastverteilung und zum Verteilen von Rechen- oder Verarbeitungsressourcen zwischen und unter verschiedenen Anwendungen verwendet werden. Bei mindestens einer Ausführungsform kann die Parallelrechenplattform 4030 zum Ausführen von Parallelverarbeitung für Anwendungen verwendet werden, um die Laufzeit der Einsatz-Pipeline 4010A zu verkürzen, um Ergebnisse in Echtzeit bereitzustellen.
  • Bei mindestens einer Ausführungsform und unter Bezugnahme auf 42A-42B, kann das Bereitstellungssystem 3906 als ein oder mehrere virtuelle Instrumente umgesetzt werden, um unterschiedliche Funktionen - wie Bildverarbeitung, Segmentierung, Verbesserung, Kl, Visualisierung und Inferencing - mit bildgebenden Geräten (z. B. CT-Scannern, Röntgengeräten, MRT-Geräten usw.), Sequenzierungsgeräten, Genomikgeräten und/oder anderen Gerätetypen auszuführen. Bei mindestens einer Ausführungsform kann das System 4000 die Erstellung und Bereitstellung von virtuellen Instrumenten ermöglichen, die eine softwaredefinierte Einsatz-Pipeline 4010 beinhalten können, die von einer Vorrichtung(en) generierte rohe/unverarbeitete Eingabedaten empfangen und verarbeitete/rekonstruierte Daten ausgeben kann. Bei mindestens einer Ausführungsform können Einsatz-Pipelines 4010 (z. B. 4010A und 4010B), die virtuelle Instrumente darstellen, Intelligenz in einer Pipeline umsetzen, wie etwa durch Nutzen von Modellen des maschinellen Lernens, um einem System containerisierte Inferenzunterstützung bereitzustellen. Bei mindestens einer Ausführungsform können virtuelle Instrumente eine beliebige Anzahl von Containern ausführen, von denen jeder Instanziierungen von Anwendungen beinhaltet. Bei mindestens einer Ausführungsform, wie etwa, wenn Echtzeitverarbeitung gewünscht ist, können Einsatz-Pipelines 4010, die virtuelle Instrumente darstellen, statisch sein (z. B. können Container und/oder Anwendungen festgelegt sein), während in anderen Beispielen Container und/oder Anwendungen für virtuelle Instrumente aus einem Pool von Anwendungen oder Ressourcen (z. B. innerhalb einer Containerregistrierungsdatenbank k) ausgewählt werden können (z. B. pro Anforderung).
  • Bei mindestens einer Ausführungsform kann das System 4000 als ein oder mehrere virtuelle Instrumente in den Räumlichkeiten in einer Einrichtung instanziiert oder ausgeführt werden, beispielsweise in einem Rechensystem, das neben einer Radiologiemaschine, einer Bildgebungsvorrichtung und/oder einem anderen Vorrichtungstyp in einer Einrichtung eingesetzt wird oder anderswie in Kommunikation damit steht. Bei mindestens einer Ausführungsform kann jedoch eine Installation in den Räumlichkeiten innerhalb eines Rechensystems einer Vorrichtung selbst (z. B. eines Rechensystems, das einstückig zu einer Bildgebungsvorrichtung ist), in einem lokalen Rechenzentrum (z. B. einem Rechenzentrum in den Räumlichkeiten) und/oder in einer Cloud-Umgebung (z. B. in der Cloud 4026) instanziiert oder ausgeführt werden. Bei mindestens einer Ausführungsform kann das Einsatzsystem 3906, das als virtuelles Instrument arbeitet, in einigen Beispielen durch einen Supercomputer oder ein anderes HPC-System instanziiert werden. Bei mindestens einer Ausführungsform kann die Installation vor Ort Anwendungen mit hoher Bandbreite (z. B. über lokale Kommunikationsschnittstellen mit höherem Durchsatz, wie z. B. HF über Ethernet) für Echtzeit-Verarbeitung ermöglichen. Bei mindestens einer Ausführungsform kann eine Echtzeit- oder Fast-Echtzeit-Verarbeitung besonders nützlich sein, wenn ein virtuelles Instrument ein Ultraschallgerät oder eine andere Bildgebungsmodalität unterstützt, wenn sofortige Visualisierungen erwartet oder für genaue Diagnosen und Analysen erforderlich sind. Bei mindestens einer Ausführungsform kann eine Cloud-Computing-Architektur in der Lage sein, dynamisch zu einem Cloud-Computing-Dienstanbieter oder einem anderen Rechencluster zu wechseln, wenn die lokale Nachfrage die Kapazität oder Fähigkeit vor Ort übersteigt. Bei mindestens einer Ausführungsform kann eine Cloud-Architektur, wenn sie umgesetzt wird, für das Training neuronaler Netzwerke oder anderer Modelle des maschinellen Lernens abgestimmt werden, wie hierin in Bezug auf das Trainingssystem 3904 beschrieben. Bei mindestens einer Ausführungsform können Modelle maschinellen Lernens mit vorhandenen Trainings-Pipelines kontinuierlich lernen und verbessert werden, während sie zusätzliche Daten von Geräten verarbeiten, die sie unterstützen. Bei mindestens einer Ausführungsform können virtuelle Instrumente unter Verwendung zusätzlicher Daten, neuer Daten, bestehender Modelle maschinellen Lernens und/oder neuer oder aktualisierter Modelle maschinellen Lernens kontinuierlich verbessert werden.
  • Bei mindestens einer Ausführungsform kann ein Rechensystem einen Teil der oder die gesamte hierin beschriebene Hardware 3922 beinhalten und die Hardware 3922 kann auf beliebige einer Reihe von Weisen verteilt sein, einschließlich innerhalb einer Vorrichtung, als Teil einer Rechenvorrichtung, die an eine Vorrichtung gekoppelt ist und sich in deren Nähe befindet, in einem lokalen Rechenzentrum in einer Einrichtung und/oder in der Cloud 4026. Da das Einsatzsystem 3906 und die damit assoziierten Anwendungen oder Container in Software erstellt werden (z. B. als diskrete containerisierte Instanziierungen von Anwendungen), können bei mindestens einer Ausführungsform das Verhalten, der Betrieb und die Konfiguration von virtuellen Instrumenten sowie von den virtuellen Instrumenten generierte Ausgaben nach Wunsch modifiziert oder individuell angepasst werden, ohne dass die Rohausgabe einer Vorrichtung, die ein virtuelles Instrument unterstützt, geändert oder verändert werden muss.
  • 42A beinhaltet ein beispielhaftes Datenablaufdiagramm eines virtuellen Instruments, das eine Ultraschallvorrichtung unterstützt, gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform kann die Einsatz-Pipeline 4010B einen oder mehrere der Dienste 3920 des Systems 4000 ausnutzen. Bei mindestens einer Ausführungsform können die Einsatz-Pipeline 4010B und die Dienste 3920 die Hardware 3922 eines Systems entweder lokal oder in der Cloud 4026 ausnutzen. Bei mindestens einer Ausführungsform, obwohl nicht veranschaulicht, kann der Prozess 4200 durch den Pipelineverwalter 4012, das Anwendungsorchestrierungssystem 4028 und/oder die Parallelrechenplattform 4030 erleichtert werden.
  • Bei mindestens einer Ausführungsform kann der Prozess 4200 den Empfang von Bildgebungsdaten von einer Ultraschallvorrichtung 4202 beinhalten. Bei mindestens einer Ausführungsform können die Bildgebungsdaten auf den PACS-Server(n) in einem DICOM-Format (oder einem anderen Format, wie etwa RIS, CIS, REST-konform, RPC, Rohdaten usw.) gespeichert sein und durch das System 4000 zur Verarbeitung durch die Einsatz-Pipeline 4010 empfangen werden, die als virtuelles Instrument (z. B. ein virtueller Ultraschall) für die Ultraschallvorrichtung 4202 ausgewählt oder individuell angepasst wurde. Bei mindestens einer Ausführungsform können die Bildgebungsdaten direkt von einer Bildgebungsvorrichtung (z. B. Ultraschallvorrichtung 4202) empfangen und durch ein virtuelles Instrument verarbeitet werden. Bei mindestens einer Ausführungsform kann ein Wandler oder anderer Signalwandler, der kommunikativ zwischen ein Bildgebungsgerät und ein virtuelles Instrument gekoppelt ist, Signaldaten, die von einem Bildgebungsgerät generiert werden, in Bilddaten umwandeln, die von einem virtuellen Instrument verarbeitet werden können. Bei mindestens einer Ausführungsform können Rohdaten und/oder Bilddaten auf das DICOM-Lesegerät 4106 angewandt werden, um Daten zur Verwendung durch Anwendungen oder Container der Einsatz-Pipeline 4010B zu extrahieren. Bei mindestens einer Ausführungsform kann das DICOM-Lesegerät 4106 die Datenerweiterungsbibliothek 4214 (z. B. DALI von NVIDIA) als Dienst 3920 (z. B. als einen der Rechendienste(s) 4016) nutzen, um Daten zu extrahieren, deren Größe zu ändern, sie neu zu skalieren und/oder anderswie für die Verwendung durch Anwendungen oder Container vorzubereiten.
  • Bei mindestens einer Ausführungsform kann, sobald die Daten vorbereitet sind, eine Anwendung und/oder ein Container für die Rekonstruktion 4206 ausgeführt werden, um die Daten von der Ultraschallvorrichtung 4202 in eine Bilddatei zu rekonstruieren. Bei mindestens einer Ausführungsform kann nach der Rekonstruktion 4206 oder gleichzeitig mit der Rekonstruktion 4206 eine Anwendung und/oder ein Container für die Erfassung 4208 zur Anomalieerfassung, zur Objekterfassung, zur Merkmalerfassung und/oder zu anderen Erfassungs-Tasks in Bezug auf die Daten ausgeführt werden. Bei mindestens einer Ausführungsform kann eine während der Rekonstruktion 4206 generierte Bilddatei während der Erfassung 4208 verwendet werden, um Anomalien, Objekte, Merkmale usw. zu identifizieren. Bei mindestens einer Ausführungsform kann die Erfassungsanwendung 4208 eine Inferenz-Engine 4216 (z. B. als einen der KI-Dienste(s) 4018) ausnutzen, um Inferencing an Daten auszuführen, um Erfassungen zu generieren. Bei mindestens einer Ausführungsform können ein oder mehrere Modelle des maschinellen Lernens (z. B. aus dem Trainingssystem 3904) durch die Anwendung für die Erfassung 4208 ausgeführt oder aufgerufen werden.
  • Bei mindestens einer Ausführungsform können, sobald die Rekonstruktion 4206 und/oder Erfassung 4208 abgeschlossen ist/sind, die aus diesen Anwendungen und/oder Containern ausgegebenen Daten verwendet werden, um Visualisierungen 4210 zu generieren, wie etwa die Visualisierung 4212 (z. B. eine Graustufenausgabe), die auf einer Arbeitsstation oder einem Anzeigeendgerät angezeigt wird. Bei mindestens einer Ausführungsform kann es die Visualisierung einem Techniker oder einem anderen Benutzer ermöglichen, die Ergebnisse der Einsatz-Pipeline 4010B in Bezug auf die Ultraschallvorrichtung 4202 zu visualisieren. Bei mindestens einer Ausführungsform kann die Visualisierung 4210 durch Nutzen einer Rendering-Komponente 4218 des Systems 4000 (z. B. eines der Visualisierungsdienste(s) 4020) ausgeführt werden. Bei mindestens einer Ausführungsform kann die Rendering-Komponente 4218 einen 2D-, OpenGL- oder Ray-Tracing-Dienst ausführen, um die Visualisierung 4212 zu generieren.
  • 42B beinhaltet ein beispielhaftes Datenablaufdiagramm eines virtuellen Instruments, das einen CT-Scanner unterstützt, gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform kann die Einsatz-Pipeline 4010C einen oder mehrere der Dienste 3920 des Systems 4000 ausnutzen. Bei mindestens einer Ausführungsform können die Einsatz-Pipeline 4010C und die Dienste 3920 die Hardware 3922 eines Systems entweder lokal oder in der Cloud 4026 ausnutzen. Bei mindestens einer Ausführungsform, obwohl nicht veranschaulicht, kann der Prozess 4220 durch den Pipelineverwalter 4012, das Anwendungsorchestrierungssystem 4028 und/oder die Parallelrechenplattform 4030 erleichtert werden.
  • Bei mindestens einer Ausführungsform kann der Prozess 4220 beinhalten, dass der CT-Scanner 4222 Rohdaten generiert, die von dem DICOM-Lesegerät 4106 empfangen werden können (z. B. direkt, über einen PACS-Server4104, nach der Verarbeitung usw.). Bei mindestens einer Ausführungsform kann ein virtuelles CT (durch die Einsatz-Pipeline 4010C instanziiert) eine erste Echtzeit-Pipeline zum Überwachen eines Patienten (z. B. Patientenbewegungserfassungs-KI 4226) und/oder zum Einstellen oder Optimieren der Belichtung des CT-Scanners 4222 (z. B. unter Verwendung der Belichtungssteuer-Kl 4224) beinhalten. Bei mindestens einer Ausführungsform können eine oder mehrere der Anwendungen (z. B. 4224 und 4226) einen Dienst 3920, wie etwa die KI-Dienst(e) 4018, nutzen. Bei mindestens einer Ausführungsform können die Ausgaben der Anwendung (oder des Containers) für die Belichtungssteuer-Kl 4224 und/oder der Anwendung (oder des Containers) für die Patientenbewegungserfassungs-KI 4226 als Rückmeldung an den CT-Scanner 4222 und/oder einen Techniker verwendet werden, um die Belichtung (oder andere Einstellungen des CT-Scanners 4222) einzustellen und/oder einen Patienten zu informieren, sich weniger zu bewegen.
  • Bei mindestens einer Ausführungsform kann die Einsatz-Pipeline 4010C eine Nicht-Echtzeit-Pipeline zum Analysieren der durch den CT-Scanner 4222 generierten Daten beinhalten. Bei mindestens einer Ausführungsform kann eine zweite Pipeline die Anwendung und/oder den Container für die CT-Rekonstruktion 4108, eine Anwendung und/oder einen Container für eine Groberfassungs-Kl 4228, eine Anwendung und/oder einen Container für eine Feinerfassungs-KI 4232 (wenn z. B. bestimmte Ergebnisse durch die Groberfassungs-Kl 4228 erfasst werden), eine Anwendung und/oder einen Container für eine Visualisierung 4230 und eine Anwendung und/oder einen Container für das DICOM-Schreibgerät 4112 (und/oder ein Schreibgerät für einen anderen Datentyp, wie etwa RIS, CIS, REST-konform, RPC, Rohdaten usw.) beinhalten. Bei mindestens einer Ausführungsform können die durch den CT-Scanner 4222 generierten Rohdaten durch Pipelines der Einsatz-Pipeline 4010C (als virtuelles CT-Instrument instanziiert) gegeben werden, um Ergebnisse zu generieren. Bei mindestens einer Ausführungsform können die Ergebnisse von dem DICOM-Schreibgerät 4112 zur Anzeige übertragen und/oder auf den PACS-Server(n) 4104 zum/zur späteren Abruf, Analyse oder Anzeige durch einen Techniker, eine Fachkraft oder einen anderen Benutzer gespeichert werden.
  • 43A veranschaulicht ein Datenablaufdiagramm für einen Prozess 4300 zum Trainieren, erneuten Trainieren oder Aktualisieren eines Modells des maschinellen Lernens gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform kann der Prozess 4300 als nicht einschränkendes Beispiel unter Verwendung des Systems 4000 der 40 ausgeführt werden. Bei mindestens einer Ausführungsform kann der Prozess 4300 die Dienste 3920 und/oder die Hardware 3922 des Systems 4000, wie hierin beschrieben, nutzen. Bei mindestens einer Ausführungsform können verfeinerte Modelle 4312, die durch den Prozess 4300 generiert wurden, von dem Einsatzsystem 3906 für eine oder mehrere containerisierte Anwendungen in Einsatz-Pipelines 4010 ausgeführt werden.
  • Bei mindestens einer Ausführungsform kann das Modelltraining 3914 das erneute Trainieren oder Aktualisieren eines anfänglichen Modells 4304 (z. B. eines vorab trainierten Modells) unter Verwendung neuer Trainingsdaten (z. B. neuer Eingabedaten, wie etwa des Kundendatensatzes 4306, und/oder neuer mit den Eingabedaten assoziierter Ground-Truth-Daten) beinhalten. Bei mindestens einer Ausführungsform können zum erneuten Trainieren oder Aktualisieren des anfänglichen Modells 4304 die Ausgabe- oder Verlustschicht(en) des anfänglichen Modells 4304 zurückgesetzt oder gelöscht und/oder durch aktualisierte oder neue Ausgabe- oder Verlustschicht(en) ersetzt werden. Bei mindestens einer Ausführungsform kann das anfängliche Modell 4304 bereits fein abgestimmte Parameter (z. B. Gewichtungen und/oder Verzerrungen) aufweisen, die aus einem früheren Training übrig geblieben sind, sodass das Training oder das erneute Training 3914 nicht so lange dauern oder so viel Verarbeitung erfordern kann wie das Training eines Modells von Grund auf. Bei mindestens einer Ausführungsform können während des Modelltrainings 3914 durch Zurücksetzen oder Ersetzen der Ausgabe- oder Verlustschicht(en) des anfänglichen Modells 4304 die Parameter aktualisiert und für einen neuen Datensatz basierend auf Verlustberechnungen neu abgestimmt werden, die mit der Genauigkeit der Ausgabe- oder Verlustschicht(en) beim Erzeugen von Vorhersagen an einem neuen Kundendatensatz 4306 (z. B. Bilddaten 3908 der 39) assoziiert sind.
  • Bei mindestens einer Ausführungsform können die vorab trainierten Modelle 4006 in einem Datenspeicher oder einer Registrierungsdatenbank (z. B. der Modellregistrierungsdatenbank 3924 der 39) gespeichert sein. Bei mindestens einer Ausführungsform können die vorab trainierten Modelle 4006 mindestens zum Teil in einer oder mehreren anderen Einrichtungen als der Einrichtung, die den Prozess 4300 ausführt, trainiert worden sein. Bei 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 4006 in den Räumlichkeiten unter Verwendung von Kunden- oder Patientendaten, die in den Räumlichkeiten generiert wurden, trainiert worden sein. Bei mindestens einer Ausführungsform können die vorab trainierten Modelle 4006 unter Verwendung der Cloud 4026 und/oder anderer Hardware 3922 trainiert werden, aber vertrauliche, datenschutzrechtlich geschützte Patientendaten dürfen nicht an beliebige Komponenten der Cloud 4026 (oder anderer Hardware außerhalb der eigenen Räumlichkeiten) übermittelt werden, durch diese verwendet werden oder für diese zugänglich sein. Bei mindestens einer Ausführungsform, in der ein vorab trainiertes Modell 4006 unter Verwendung von Patientendaten von mehr als einer Einrichtung trainiert wird, kann das vorab trainierte Modell 4006 einzeln für jede Einrichtung trainiert worden sein, bevor es an Patienten- oder Kundendaten einer anderen Einrichtung trainiert wird. Bei mindestens einer Ausführungsform, wie etwa, wenn Kunden- oder Patientendaten von Datenschutzbedenken ausgenommen wurden (z. B. durch eine Verzichtserklärung, für die experimentelle Verwendung usw.) oder wenn Kunden- oder Patientendaten in einem öffentlichen Datensatz enthalten sind, können Kunden- oder Patientendaten von einer beliebigen Anzahl von Einrichtungen verwendet werden, um das vorab trainierte Modell 4006 innerhalb und/oder außerhalb der eigenen Räumlichkeiten zu trainieren, wie etwa in einem Rechenzentrum oder einer anderen Cloud-Computing-Infrastruktur. Bei verschiedenen Ausführungsformen setzt die Inferenz- und/oder Trainingslogik 1015 Zielbilddaten, die von der Offline-Bildsignalverarbeitung 240 generiert werden, wie oben in Verbindung mit 2 beschrieben, ein. Zusätzlich kann die oben in Verbindung mit 2 beschriebene Datensammlung 202 bei verschiedenen Ausführungsformen von dem Fahrzeug 1300 ausgeführt werden. Darüber hinaus werden bei einer Ausführungsform die Cloud 4026 und/oder Komponenten davon verwendet, um die Offline-Bildsignalverarbeitung 240, wie oben in Verbindung mit 2 beschrieben, umzusetzen.
  • Bei mindestens einer Ausführungsform kann ein Benutzer beim Auswählen von Anwendungen zur Verwendung in den Einsatz-Pipelines 4010 auch Modelle des maschinellen Lernens auswählen, die für spezifische Anwendungen verwendet werden sollen. Bei mindestens einer Ausführungsform kann ein Benutzer kein Modell zur Verwendung aufweisen, sodass ein Benutzer ein vorab trainiertes Modell 4006 zum Verwenden mit einer Anwendung auswählen kann. Bei mindestens einer Ausführungsform ist das vorab trainierte Modell 4006 möglicherweise nicht dazu optimiert, genaue Ergebnisse an dem Kundendatensatz 4306 einer Einrichtung eines Benutzers zu generieren (z. B. basierend auf der Patientenvielfalt, der Demografie, der Typen der verwendeten medizinischen Bildgebungsvorrichtungen usw.). Bei mindestens einer Ausführungsform kann das vorab trainierte Modell 4006 vor dem Einsetzen des vorab trainierten Modells 4006 in der Einsatz-Pipeline 4010 zur Verwendung mit einer Anwendung(en) für die Verwendung in einer jeweiligen Einrichtung aktualisiert, erneut trainiert und/oder fein abgestimmt werden.
  • Bei mindestens einer Ausführungsform kann ein Benutzer ein vorab trainiertes Modell 4006 auswählen, das aktualisiert, erneut trainiert und/oder fein abgestimmt werden soll, und das vorab trainierte Modell 4006 kann als anfängliches Modell 4304 für das Trainingssystem 3904 innerhalb des Prozesses 4300 bezeichnet werden. Bei mindestens einer Ausführungsform kann der Kundendatensatz 4306 (z. B. Bildgebungsdaten, Genomikdaten, Sequenzierungsdaten oder andere Datentypen, die durch Vorrichtungen in einer Einrichtung generiert werden) verwendet werden, um das Modelltraining 3914 (das ohne Einschränkung Transferlernen beinhalten kann) an dem anfänglichen Modell 4304 auszuführen, um das verfeinerte Modell 4312 zu generieren. Bei mindestens einer Ausführungsform können die Ground-Truth-Daten, die dem Kundendatensatz 4306 entsprechen, von dem Trainingssystem 3904 generiert werden. Bei mindestens einer Ausführungsform können Ground-Truth-Daten mindestens zum Teil von Klinikern, Wissenschaftlern, Ärzten, Fachkräften in einer Einrichtung generiert werden (z. B. als beschriftete Klinikdaten 3912 der 39).
  • Bei mindestens einer Ausführungsform kann die KI-gestützte Annotation 3910 in einigen Beispielen verwendet werden, um Ground-Truth-Daten zu generieren. Bei mindestens einer Ausführungsform kann die KI-gestützte Annotation 3910 (z. B. unter Verwendung eines SDK für die KI-gestützt Annotation umgesetzt) Modelle des maschinellen Lernens (z. B. neuronale Netzwerke) ausnutzen, um vorgeschlagene oder vorhergesagte Ground-Truth-Daten für einen Kundendatensatz zu generieren. Bei mindestens einer Ausführungsform kann der Benutzer 4310 Annotationswerkzeuge innerhalb einer Benutzerschnittstelle (einer grafischen Benutzerschnittstelle (Graphical User Interface - GUI)) auf der Rechenvorrichtung 4308 verwenden.
  • Bei mindestens einer Ausführungsform kann der Benutzer 4310 über die Rechenvorrichtung 4308 mit einer GUI interagieren, um Annotationen oder automatische Annotationen zu bearbeiten oder fein abzustimmen. Bei mindestens einer Ausführungsform kann ein Polygonbearbeitungsmerkmal verwendet werden, um Vertices eines Polygons an genauere oder feiner abgestimmte Stellen zu verschieben.
  • Bei mindestens einer Ausführungsform können, sobald Ground-Truth-Daten mit dem Kundendatensatz 4306 assoziiert sind, die Ground-Truth-Daten (z. B. aus Klgestützter Annotation, manueller Beschriftung usw.) während des Modelltrainings 3914 durch verwendet werden, um das verfeinerte Modell 4312 zu generieren. Bei mindestens einer Ausführungsform kann der Kundendatensatz 4306 beliebig oft auf das anfängliche Modell 4304 angewandt werden und die Ground-Truth-Daten können verwendet werden, um die Parameter des anfänglichen Modells 4304 zu aktualisieren, bis ein akzeptables Genauigkeitslevel für das verfeinerte Modell 4312 erreicht ist. Bei mindestens einer Ausführungsform kann das verfeinerte Modell 4312, sobald das verfeinerte Modell 4312 generiert ist, innerhalb einer oder mehrerer Einsatz-Pipelines 4010 in einer Einrichtung zum Ausführen eines oder mehrerer Verarbeitungs-Tasks in Bezug auf medizinische Bildgebungsdaten eingesetzt werden.
  • Bei mindestens einer Ausführungsform kann das verfeinerte Modell 4312 in die vorab trainierten Modellen 4006 in der Modellregistrierungsdatenbank 3924 hochgeladen werden, um durch eine andere Einrichtung ausgewählt zu werden. Bei mindestens einer Ausführungsform kann dieser Prozess in einer beliebigen Anzahl von Einrichtungen ausgeführt werden, sodass das verfeinerte Modell 4312 an neuen Datensätzen beliebig oft weiter verfeinert werden kann, um ein universelleres Modell zu generieren.
  • 43B ist eine beispielhafte Veranschaulichung einer Client-Server-Architektur 4332 zum Erweitern von Annotationswerkzeugen mit vorab trainierten Annotationsmodellen gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform können die Kl-gestützten Annotationswerkzeuge 4336 basierend auf einer Client-Server-Architektur 4332 instanziiert werden. Bei mindestens einer Ausführungsform können die Annotationswerkzeuge 4336 in Bildgebungsanwendungen beispielsweise Radiologen beim Identifizieren von Organen und Auffälligkeiten unterstützen. Bei mindestens einer Ausführungsform können Bildgebungsanwendungen Software-Werkzeuge beinhalten, die dem Benutzer 4310 dabei helfen, als nicht einschränkendes Beispiel einige Extrempunkte an einem konkreten Organ von Interesse auf Rohbildern 4334 (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. Bei mindestens einer Ausführungsform können die Ergebnisse in einem Datenspeicher als Trainingsdaten 4338 gespeichert und als (beispielsweise und ohne Einschränkung) Ground-Truth-Daten für das Training verwendet werden. Bei mindestens einer Ausführungsform kann, wenn die Rechenvorrichtung 4308 Extrempunkte für die Kl-gestützte Annotation 3910 sendet, ein Deep-Learning-Modell diese Daten beispielsweise als Eingabe empfangen und Inferenzergebnisse eines segmentierten Organs oder einer Auffälligkeit zurückgeben. Bei mindestens einer Ausführungsform können vorab instanziierte Annotationswerkzeuge, wie etwa das Kl-gestützte Annotationswerkzeug 4336B in 43B, durch Vornehmen von API-Aufrufen (z. B. API-Aufruf 4344) an einen Server, wie etwa einen Annotationsassistenzserver 4340, erweitert werden, der einen Satz von vorab trainierten Modellen 4342 beinhalten kann, der beispielsweise in einer Annotationsmodellregistrierungsdatenbank gespeichert ist. Bei mindestens einer Ausführungsform kann eine Annotationsmodellregistrierungsdatenbank vorab trainierte Modelle 4342 (z. B. Modelle des maschinellen Lernens, wie etwa Deep-Learning-Modelle) speichern, die vorab trainiert sind, um eine KI-gestützte Annotation an einem konkreten Organ oder einer Auffälligkeit auszuführen. Bei mindestens einer Ausführungsform können diese Modelle durch Verwenden von Trainings-Pipelines 4004 weiter aktualisiert werden. Bei mindestens einer Ausführungsform können vorab installierte Annotationswerkzeuge im Verlauf der Zeit verbessert werden, wenn neue beschriftete Klinikdaten 3912 hinzugefügt werden.
  • Die Inferenz- und/oder Trainingslogik 1015 wird dazu verwendet, Inferencing- und/oder Trainingsoperationen, die mit einer oder mehreren Ausführungsformen assoziiert ist, auszuführen. Einzelheiten zu der Inferenz- und/oder Trainingslogik 1015 werden hier in Verbindung mit den 10A und/oder 10B bereitgestellt.
  • Mindestens eine Ausführungsform der Offenbarung kann mit Blick auf die folgenden Klauseln beschrieben werden:
    • 1. Verfahren, umfassend: Erhalten gespeicherter Sensordaten, die einen Satz von Szenen darstellen, die von einem Bildsensor unter Verwendung einer Belichtungseinstellung erfasst wurden, die einem ersten Dynamikbereich entspricht; Auswählen eines Satzes von Bildverarbeitungsalgorithmen eines Bildsignalprozessors (ISP), mindestens zum Teil basierend auf mindestens einer Szene aus dem Satz von Szenen; und Veranlassen, dass der ISP den Satz von Bildverarbeitungsalgorithmen auf die Sensordaten anwendet, um einen Satz von Bildern mit einem oder mehreren Pixeln innerhalb eines zweiten Dynamikbereichs, der sich von dem ersten Dynamikbereich unterscheidet, zu erhalten.
    • 2. Verfahren nach Klausel 1, wobei das Erfassen der Sensordaten von dem ISP entkoppelt ist.
    • 3. Verfahren nach Klausel 1 oder 2, wobei der Satz von Bildverarbeitungsalgorithmen ferner einen Tonemapping-Algorithmus umfasst.
    • 4. Verfahren nach den Klauseln 1 bis 3, wobei die Sensordaten ferner Daten, die von dem Bildsensor vor der Umwandlung in ein Bildformat generiert werden, umfassen.
    • 5. Verfahren nach den Klauseln 1 bis 4, wobei der Satz von Bildern ferner ein Bild mit niedrigem Dynamikbereich (SDR) umfasst.
    • 6. Verfahren nach den Klauseln 1 bis 5, wobei die Sensordaten von einer Kameravorrichtung erfasst wurden, die an mindestens einem von Folgendem angebracht ist: einem Fahrzeug; einem Roboter; oder einer Drohne.
    • 7. Verfahren nach den Klauseln 1 bis 6, wobei die Sensordaten von einer Kameravorrichtung, die den Bildsensor beinhaltet, erfasst wurden.
    • 8. Verfahren nach den Klauseln 1 bis 7, wobei die Sensordaten in einem persistenten Speicher gespeichert werden.
    • 9. Verfahren nach den Klauseln 1 bis 8, wobei das Verfahren ferner das Trainieren eines Modells mindestens zum Teil basierend auf dem Satz von Bildern umfasst.
    • 10. Verfahren nach den Klauseln 1 bis 9, wobei das Modell ein neuronales Netzwerk ist.
    • 11. Verfahren nach den Klauseln 1 bis 10, wobei das Verfahren ferner umfasst: Erhalten eines Ergebnisses einer Inferenzierungsoperation des Modells; und Modifizieren des ISP mindestens zum Teil basierend auf dem Ergebnis.
    • 12. Verfahren nach den Klauseln 1 bis 11, wobei das Modifizieren des ISP ferner das Modifizieren eines Satzes von Parametern einer Ton-Mapping-Funktion, die in ISP beinhaltet ist, umfasst.
    • 13. Verfahren nach den Klauseln 1 bis 12, wobei das Verfahren ferner das Modifizieren des ISP mindestens zum Teil basierend auf dem Satz von Bildern umfasst.
    • 14. Verfahren nach den Klauseln 1 bis 13, wobei die Anwendung ferner eine Objekterfassung, die von einem neuronalen Netzwerk ausgeführt wird, umfasst.
    • 15. Verfahren nach den Klauseln 1 bis 14, wobei die Anwendung ferner ein Modell, das von einer oder mehreren Arithmetik-Logik-Einheiten (ALUs) ausgeführt wird, die in einem autonomen Fahrzeug eingebaut sind, umfasst.
    • 16. Prozessor, umfassend: eine oder mehrere Verarbeitungseinheiten zum Erhalten gespeicherter Sensordaten, die einen Satz von Szenen darstellen, die von einem Bildsensor unter Verwendung einer Belichtungseinstellung erfasst wurden, die einem ersten Dynamikbereich entspricht, Auswählen eines Satzes von Bildverarbeitungsalgorithmen eines Bildsignalprozessors (ISP) mindestens zum Teil basierend auf mindestens einer Szene des Satzes von Szenen, und zu veranlassen, dass der ISP den Satz von Bildverarbeitungsalgorithmen auf die Sensordaten anwendet, um einen Satz von Bildern innerhalb eines zweiten Dynamikbereichs, der sich von dem ersten Dynamikbereich unterscheidet, zu erhalten.
    • 17. Prozessor nach den Klauseln 1 bis 16, wobei die eine oder mehreren Verarbeitungseinheiten ferner ein neuronales Netzwerk mindestens zum Teil basierend auf der Vielzahl von Bildern trainieren sollen.
    • 18. Prozessor nach den Klauseln 1 bis 17, wobei die eine oder mehreren Verarbeitungseinheiten ferner dazu dienen: ein Ergebnis des neuronalen Netzwerks zu erhalten; und mindestens einen Parameter eines Tonemapping-Algorithmus, der in dem ISP enthalten ist, mindestens zum Teil basierend auf dem Ergebnis einzustellen, wobei der Tonemapping-Algorithmus ein Mitglied des Satzes von Bildverarbeitungsalgorithmen ist.
    • 19. Prozessor nach den Klauseln 1 bis 18, wobei die eine oder mehreren Verarbeitungseinheiten ferner zum Modifizieren mindestens eines Parameters eines Tonemapping-Algorithmus mindestens zum Teil basierend auf einem Bild der Vielzahl von Bildern, wobei der Tonemapping-Algorithmus ein Mitglied des Satzes von Bildverarbeitungsalgorithmen ist.
    • 20. Prozessor nach den Klauseln 1 bis 19, wobei die Sensordaten ferner Rasterskalendaten umfassen.
    • 21. Prozessor nach den Klauseln 1 bis 20, wobei der Sensor an einem Fahrzeug angebracht ist.
    • 22. Prozessor nach den Klauseln 1 bis 21, wobei der Sensor in eine Kameravorrichtung, die an einem autonomen Fahrzeug angebracht ist, eingebaut ist.
    • 23. Prozessor der Klauseln 1 bis 22, wobei der ISP von einer Rechenvorrichtung in einem Rechenzentrum umgesetzt wird.
    • 24. Prozessor der Klauseln 1 bis 23, wobei der ISP von einem System mit beschleunigter Grafikverarbeitungseinheit (GPU) umgesetzt wird.
    • 25. Prozessor nach den Klauseln 1 bis 24, wobei die Belichtungskalibrierung während der Erfassung des Satzes von Szenen durch den Sensor nicht modifiziert wird.
    • 26. Nichtflüchtiges maschinenlesbares Medium, auf dem ein Satz von Anweisungen gespeichert ist, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen, mindestens: gespeicherte Sensordaten zu erhalten, die einen Satz von Szenen darstellen, der von einem Sensor erfasst ist, der eine Belichtungskalibrierung einsetzt, wobei die Sensordaten einen ersten Dynamikbereich umfassen, der mit der Belichtungskalibrierung assoziiert ist; einen Satz von Bildverarbeitungsalgorithmen, der mindestens zum Teil auf einem zweiten Dynamikbereich basiert, für eine Vielzahl von Bildern zu bestimmen, die in einer Anwendung verwendet werden sollen, wobei der zweite Dynamikbereich und der erste Dynamikbereich unterschiedlich sind; und als Ergebnis der Verarbeitung der Sensordaten durch einen Bildsignalprozessor (ISP) die Vielzahl von Bildern zu erhalten, wobei der ISP den Satz von Bildverarbeitungsalgorithmen umsetzt.
  • Bei mindestens einer Ausführungsform kann eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung oder einen derartigen Chip verweisen. Bei mindestens einer Ausführungsform können Mehr-Chip-Module 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 Busumsetzung bieten. Bei mindestens einer Ausführungsform können verschiedene Module je nach Wunsch des Benutzers auch separat oder in verschiedenen Kombinationen von Halbleiterplattformen untergebracht sein.
  • Bei mindestens einer Ausführungsform, unter erneuter Bezugnahme auf 16, sind Computerprogramme in Form von maschinenlesbarem ausführbarem Code oder Computersteuerlogik-Algorithmen in dem Hauptspeicher 1604 und/oder Sekundärspeicher gespeichert. Falls sie durch einen oder mehrere Prozessoren ausgeführt werden, ermöglichen es Computerprogramme dem System 1600, verschiedene Funktionen gemäß mindestens einer Ausführungsform auszuführen. Bei mindestens einer Ausführungsform sind Arbeitsspeicher 1604, Datenspeiche und/oder beliebiger anderer Speicher mögliche Beispiele für computerlesbare Medien. Bei mindestens einer Ausführungsform kann sich der Sekundärspeicher auf ein(e) beliebige(s) geeignete(s) Speichervorrichtung oder -system beziehen, wie etwa ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Compact-Disk-Laufwerk, ein Digital-Versatile-Disk-(„DVD“-)Laufwerk, eine Aufzeichnungsvorrichtung, einen Universal-Serial-Bus-(„USB“-)Flash-Speicher usw. darstellt. Bei mindestens einer Ausführungsform werden die Architektur und/oder die Funktionalität verschiedener vorheriger Figuren im Kontext der CPU 1602, des Parallelverarbeitungssystems 1612, einer integrierten Schaltung, die mindestens zu einem Teil der Fähigkeiten sowohl der CPU 1602 als auch des Parallelverarbeitungssystems 1612 in der Lage ist, eines Chipsatzes (z. B. einer Gruppe integrierter Schaltungen, die derart konfiguriert ist, dass sie als Einheit zum Ausführen verwandter Funktionen arbeitet und verkauft wird, usw.) und/oder einer beliebigen geeigneten Kombination integrierter Schaltung(en) umgesetzt.
  • Bei 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 dedizierten Spielekonsolensystems, eines anwendungsspezifischen Systems und mehr umgesetzt. Bei mindestens einer Ausführungsform kann das Computersystem 1600 die Form eines Desktop-Computers, eines Laptop-Computers, eines Tablet-Computers, von Servern, von Supercomputern, eines Smartphones (z. B. einer drahtlosen tragbaren Vorrichtung), eines persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, eines Fahrzeugs, einer am Kopf befestigten Anzeige, einer tragbaren elektronischen Vorrichtung, einer Mobiltelefonvorrichtung, eines Fernsehgeräts, einer Arbeitsstation, von Spielekonsolen, eines eingebetteten Systems und/oder eines beliebigen anderen Typs von Logik annehmen.
  • Bei mindestens einer Ausführungsform beinhaltet das Parallelverarbeitungssystem 1612 ohne Einschränkung eine Vielzahl von Parallelverarbeitungseinheiten („PPUs“) 1614 und damit assoziierte Speicher 1616. Bei mindestens einer Ausführungsform sind die PPUs 1614 über ein Interconnect 1618 und einen Switch 1620 oder Multiplexer mit einem Host-Prozessor oder anderen Peripherievorrichtungen verbunden. Bei mindestens einer Ausführungsform verteilt das Parallelverarbeitungssystem 1612 Rechen-Tasks auf PPUs 1614, die parallelisierbar sein können - beispielsweise als Teil der Verteilung von Rechen-Tasks auf mehrere Thread-Blöcke einer Grafikverarbeitungseinheit („GPU“). Bei mindestens einer Ausführungsform wird der Speicher von einigen oder allen PPUs 1614 gemeinsam genutzt und ist für diese zugänglich (z. B. für Lese- und/oder Schreibzugriff), obwohl ein derartiger gemeinsam genutzter Speicher Einbußen bei der Rechenleistung in Bezug auf die Verwendung von lokalem Speicher und Registern, die in einer PPU 1614 resident sind, mit sich bringen kann. Bei mindestens einer Ausführungsform wird der Betrieb der PPUs 1614 durch Verwendung eines Befehls, wie etwa syncthreads() synchronisiert, wobei alle Threads in einem Block (z. B. über mehrere PPUs 1614 hinweg ausgeführt) einen bestimmten Punkt der Codeausführung erreichen müssen, bevor sie fortfahren.
  • Andere Variationen sind im Sinne der vorliegenden Offenbarung. Somit können zwar bezüglich der offenbarten Verfahren diverse Modifikationen und alternative Konstruktionen vorgenommen werden, bestimmte veranschaulichte Ausführungsformen davon werden jedoch in den Zeichnungen veranschaulicht und wurden vorstehend ausführlich beschrieben. Allerdings versteht es sich, dass nicht die Absicht verfolgt wird, die Offenbarung auf die spezifische(n) offenbarte(n) Form oder Formen einzuschränken, sondern die Absicht ganz im Gegenteil darin besteht, sämtliche Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die in den Geist und Schutzbereich der wie in den beigefügten Ansprüchen definierten Offenbarung fallen.
  • Die Verwendung der Ausdrücke „ein“ und „eine“ und „der/die/das“ und ähnlicher Referenten im Kontext des Beschreibens offenbarter Ausführungsformen (insbesondere im Kontext der folgenden Ansprüche) ist so auszulegen, dass sie sowohl den Singular als auch den Plural abdeckt, sofern hierin nichts anderes angegeben ist oder der Kontext dem eindeutig widerspricht, und nicht als Definition eines Ausdrucks. Die Begriffe „umfassend“, „aufweisend“, „beinhaltend“ und „enthaltend“ sind als offene Begriffe auszulegen (d. h. „einschließlich, aber nicht begrenzt auf“), sofern nicht anderswie angegeben. Wenn es unmodifiziert vorliegt und sich auf physische Verbindungen bezieht, ist „verbunden“ als teilweise oder vollständig ineinander enthalten, aneinander angebracht oder aneinander angefügt auszulegen, auch wenn ein Element dazwischenliegt. Die Nennung von Wertebereichen hierin soll lediglich als schnelles Verfahren des einzelnen Verweisens 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 enthalten, als ob er einzeln hierin wiedergegeben wäre. Bei mindestens einer Ausführungsform ist die Verwendung des Ausdrucks „Satz“ (z. B. „ein Satz von Gegenständen“) oder „Teilmenge“ als eine nicht leere Sammlung auszulegen, die ein oder mehrere Elemente umfasst, es sei denn, es ist etwas anderes angemerkt oder der Kontext widerspricht dem. Sofern es nicht anders angegeben ist oder der Kontext dem anderswie 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.
  • Sofern nicht spezifisch etwas Anderes genannt ist oder der Kontext dem eindeutig widerspricht, ist verbindende Sprache, wie etwa Formulierungen der Form „mindestens eines von A, B und C“ oder „mindestens eines von A, B und C“, anderswie in dem Kontext zu verstehen, in dem sie allgemein verwendet werden, um darzustellen, dass ein Gegenstand, ein Ausdruck usw. entweder A oder B oder C oder eine beliebige nicht leere Teilmenge des Satzes aus A und B und C sein kann. Zum Beispiel verweisen bei dem veranschaulichenden Beispiel für einen Satz, der drei Elemente aufweist, die verbindenden Formulierungen „mindestens eines von A, B und C“ und „mindestens eines von A, B und C“ auf einen beliebigen der folgenden Sätze: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Somit soll derartige verbindende Sprache im Allgemeinen nicht implizieren, dass bestimmte Ausführungsformen erfordern, dass mindestens eines von A, mindestens eines von B und mindestens eines von C vorhanden ist. Sofern es nicht anders vermerkt oder durch den Kontext widerlegt ist, bezeichnet der Begriff „Vielzahl“ einen Zustand der Pluralität (z. B. bezeichnet „eine Vielzahl von Elementen“ mehrere Elemente). Bei mindestens einer Ausführungsform beträgt die Anzahl der Gegenstände in einer Vielzahl mindestens zwei, kann aber auch mehr sein, wenn dies entweder ausdrücklich oder durch den Kontext angegeben ist. Sofern nicht anders angegeben oder anderswie aus dem Kontext ersichtlich, bedeutet „basierend auf“ „mindestens zum Teil basierend auf“ und nicht „ausschließlich basierend auf“.
  • Hierin beschriebene Vorgänge von Prozessen können in einer beliebigen geeigneten Reihenfolge ausgeführt werden, sofern es hierin nicht anders angegeben ist oder der Kontext dem anderswie eindeutig widerspricht. Bei mindestens einer Ausführungsform wird ein Prozess, wie etwa die hierin beschriebenen Prozesse (oder Variationen und/oder Kombinationen davon), unter der Steuerung von einem oder mehreren Computersystemen ausgeführt, die mit ausführbaren Anweisungen konfiguriert sind, und er ist als Code (z. B. ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen), der zusammen auf einem oder mehreren Prozessoren ausgeführt wird, durch Hardware oder Kombinationen davon umgesetzt. Bei mindestens einer Ausführungsform ist Code auf einem computerlesbaren Speichermedium gespeichert, beispielsweise in Form eines Computerprogramms, das eine Vielzahl von Anweisungen umfasst, die durch einen oder mehrere Prozessoren ausgeführt werden können. Bei 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 Datenspeicherschaltungsanordnungen (z. B. Puffer, Cache und Warteschlangen) innerhalb der Transceiver von transitorischen Signalen beinhaltet. Bei mindestens einer Ausführungsform ist der Code (z. B. ausführbarer Code oder Quellcode) auf einem Satz von einem oder mehreren nichtflüchtigen computerlesbaren Speichermedien gespeichert, auf denen ausführbare Anweisungen gespeichert sind (oder auf einem anderen Speicher zum Speichern ausführbarer Anweisungen), die bei Ausführung (d. h. als Ergebnis der Ausführung) durch einen oder mehrere Prozessoren eines Computersystems das Computersystem dazu veranlassen, hierin beschriebene Operationen auszuführen. Bei mindestens einer Ausführungsform umfasst der Satz von nichtflüchtigen computerlesbaren Speichermedien mehrere nichtflüchtige computerlesbare Speichermedien und einem oder mehreren einzelnen nichtflüchtigen Speichermedien von mehreren nichtflüchtigen computerlesbaren Speichermedien fehlen jeglicher Code, während mehrere nichtflüchtige computerlesbare Speichermedien gemeinsam den gesamten Code speichern. Bei mindestens einer Ausführungsform werden die ausführbaren Anweisungen so ausgeführt, dass unterschiedliche Anweisungen durch unterschiedliche Prozessoren ausgeführt werden - beispielsweise speichert ein nicht flüchtiges computerlesbares Speichermedium Anweisungen und eine Haupt-Zentralverarbeitung („CPU“) führt einige der Anweisungen aus, während eine Grafikverarbeitungseinheit („GPU“) andere Anweisungen ausführt. Bei mindestens einer Ausführungsform weisen unterschiedliche Komponenten eines Computersystems separate Prozessoren auf und führen unterschiedliche Prozessoren unterschiedliche Teilmengen von Anweisungen aus.
  • Bei mindestens einer Ausführungsform ist eine arithmetische Logikeinheit eine kombinatorische Logikschaltungsanordnung, die eine oder mehrere Eingaben verarbeitet, um ein Ergebnis zu erzeugen. Bei mindestens einer Ausführungsform wird eine arithmetische Logikeinheit von einem Prozessor verwendet, um mathematische Operationen wie Addition, Subtraktion oder Multiplikation auszuführen. Bei mindestens einer Ausführungsform wird eine arithmetische Logikeinheit verwendet, um logische Operationen wie logisches AND/OR oder XOR umzusetzen. Bei mindestens einer Ausführungsform ist eine arithmetische Logikeinheit zustandslos und besteht aus physikalischen Schaltkomponenten wie Halbleitertransistoren, die so angeordnet sind, dass sie logische Gatter bilden. Bei mindestens einer Ausführungsform kann eine arithmetische Logikeinheit intern als zustandsabhängige Logikschaltung mit einem assoziierten Taktgeber arbeiten. Bei mindestens einer Ausführungsform kann eine arithmetische Logikeinheit als asynchrone Logikschaltung aufgebaut sein, deren interner Zustand nicht in einem assoziierten Registersatz gehalten wird. Bei mindestens einer Ausführungsform wird eine arithmetische Logikeinheit von einem Prozessor verwendet, um in einem oder mehreren Registern des Prozessors gespeicherte Operanden zu kombinieren und eine Ausgabe zu erzeugen, die vom Prozessor in einem anderen Register oder einem Speicherplatz gespeichert werden kann.
  • Bei mindestens einer Ausführungsform übergibt der Prozessor als Ergebnis der Verarbeitung eines vom Prozessor abgerufenen Anweisungen einen oder mehrere Eingaben oder Operanden an eine arithmetische Logikeinheit, wodurch die arithmetische Logikeinheit veranlasst wird, ein Ergebnis zu erzeugen, das mindestens zum Teil auf einem Anweisungscode basiert, der den Eingängen der arithmetischen Logikeinheit bereitgestellt wird. Bei mindestens einer Ausführungsform basieren die vom Prozessor an die ALU bereitgestellten Anweisungscodes mindestens zum Teil auf der von dem Prozessor ausgeführten Anweisung. Bei mindestens einer Ausführungsform verarbeitet die kombinatorische Logik in der ALU die Eingaben und erzeugt eine Ausgabe, die auf einen Bus innerhalb des Prozessors gelegt wird. Bei mindestens einer Ausführungsform wählt der Prozessor ein Zielregister, einen Speicherplatz, eine Ausgabevorrichtung oder einen Ausgabespeicherplatz auf dem Ausgangsbus aus, so dass ein Takt des Prozessors bewirkt, dass die von der ALU erzeugten Ergebnisse an den gewünschten Ort gesendet werden.
  • Im Rahmen dieser Anwendung wird der Begriff arithmetische Logikeinheit oder ALU verwendet, um sich auf jede logische Rechenschaltung zu beziehen, die Operanden verarbeitet, um ein Ergebnis zu erzeugen. Im vorliegenden Dokument kann sich der Begriff ALU beispielsweise auf eine Gleitkommaeinheit, einen DSP, einen Tensor Core, einen Shader Core, einen Coprozessor oder eine CPU beziehen.
  • Dementsprechend sind bei mindestens einer Ausführungsform Computersysteme derart konfiguriert, dass sie einen oder mehrere Dienste umsetzen, die einzeln oder gemeinsam Operationen der hierin beschriebenen Prozesse ausführen, und derartige Computersysteme sind mit geeigneter Hardware und/oder Software konfiguriert, die eine Ausführung der Operationen ermöglichen. Ferner ist ein Computersystem, das mindestens eine Ausführungsform der vorliegenden Offenbarung umsetzt, eine einzelne Vorrichtung und bei einer anderen Ausführungsform ein verteiltes Computersystem, das mehrere Vorrichtungen umfasst, die unterschiedlich arbeiten, sodass das verteilte Computersystem die hierin beschriebenen Vorgänge ausführt und sodass eine einzelne Vorrichtung nicht alle Vorgänge ausführt.
  • Die Verwendung jeglicher und aller Beispiele oder beispielhafter Wortwahl (z. B. „wie etwa“), die hierin bereitgestellt ist, soll lediglich die Ausführungsformen der Offenbarung besser verdeutlichen und stellt keine Einschränkung des Schutzbereichs der Offenbarung dar, es sei denn, es ist etwas anderes beansprucht. Keinerlei Wortwahl in der Beschreibung sollte so ausgelegt werden, dass sie ein beliebiges nicht beanspruchtes Element als für die Umsetzung der Offenbarung wesentlich angibt.
  • Jegliche Bezugnahmen, einschließlich Veröffentlichungen, Patentanmeldungen und Patenten, die hierin genannt werden, sind hiermit durch Bezugnahme in demselben Maße aufgenommen, als wäre jede Bezugnahme einzeln und spezifisch als durch Bezugnahme eingeschlossen angegeben und in ihrer Gesamtheit hierin dargelegt.
  • In der Beschreibung und den Ansprüchen können die Ausdrücke „gekoppelt“ und „verbunden“ sowie deren Ableitungen verwendet werden. Es versteht sich, dass diese Ausdrücke nicht als Synonyme füreinander beabsichtigt sein können. Vielmehr kann in konkreten Beispielen „verbunden“ oder „gekoppelt“ verwendet werden, um anzugeben, dass zwei oder mehr Elemente in direktem oder indirektem physischem oder elektrischem Kontakt miteinander stehen. Mit „gekoppelt“ kann auch gemeint sein, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, jedoch trotzdem miteinander zusammenwirken oder interagieren.
  • Sofern nicht spezifisch anders angegeben, versteht es sich, dass sich Begriffe wie „Verarbeitung“, „Berechnung“, „Berechnen“, „Bestimmen“ oder dergleichen in der gesamten Beschreibung auf Handlungen und/oder Prozesse eines Computers oder Rechensystems oder einer ähnlichen elektronischen Rechenvorrichtung, die Daten, die als physische, z. B. elektronische, Größen in den Registern und/oder Speichern des Rechensystems dargestellt sind, manipulieren und/oder in andere Daten umwandeln, die auf ähnliche Weise als physische Größen in den Speichern, Registern oder anderen derartigen Informationsspeicher-, -übertragungs- oder -anzeigevorrichtungen des Rechensystems dargestellt sind.
  • Auf ähnliche Weise kann sich der Ausdruck „Prozessor“ auf eine beliebige Vorrichtung oder einen beliebigen Teil einer Vorrichtung beziehen, die/der elektronische Daten aus Registern und/oder Speicher verarbeitet und diese elektronischen Daten in andere elektronische Daten umwandelt, die in Registern und/oder Speicher gespeichert werden können. Als nicht einschränkende Beispiele kann der „Prozessor“ eine CPU oder eine GPU sein. Eine „Rechenplattform“ kann einen oder mehrere Prozessoren umfassen. Wie in dieser Schrift verwendet, können „Software“-Prozesse beispielsweise Software- und/oder Hardwareeinheiten umfassen, die im Laufe der Zeit Arbeit ausführen, wie etwa Tasks, Threads und intelligente Agenten. Außerdem kann sich jeder Prozess auf mehrere Prozesse beziehen, um Anweisungen nacheinander oder parallel, kontinuierlich oder intermittierend auszuführen. Bei mindestens einer Ausführungsform werden die Ausdrücke „System“ und „Verfahren“ hierin insofern austauschbar verwendet, dass ein System ein oder mehrere Verfahren verkörpern kann und die Verfahren als System betrachtet werden können.
  • Im vorliegenden Dokument kann auf das Erlangen, Erfassen, Empfangen oder Eingeben von analogen oder digitalen Daten in ein Teilsystem, ein Computersystem oder eine computerumgesetzten Engine Bezug genommen werden. Bei mindestens einer Ausführungsform kann der Prozess des Erlangens, Erfassens, Empfangens oder Eingebens von analogen und digitalen Daten auf eine Vielfalt von Weisen erzielt werden, wie etwa durch das Empfangen von Daten als Parameter eines Funktionsaufrufs oder eines Aufrufs einer Anwendungsprogrammierschnittstelle. Bei mindestens einer Ausführungsform können Prozesse des Erlangens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch das Übermitteln von Daten über eine serielle oder parallele Schnittstelle erfolgen. Bei mindestens einer Ausführungsform können Prozesse des Erlangens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch das Übermitteln von Daten über ein Computernetzwerk von der bereitstellenden Entität zu der erfassenden Entität erfolgen. Bei mindestens einer Ausführungsform kann auch auf das Bereitstellen, Ausgeben, Übertragen, Senden oder Darstellen von analogen oder digitalen Daten Bezug genommen werden. Bei verschiedenen Beispielen können Prozesse des Bereitstellens, Ausgebens, Übertragens, Sendens oder Darstellens von analogen oder digitalen Daten durch das Übermitteln von Daten als Eingabe- oder Ausgabeparameter eines Funktionsaufrufs, eines Parameters einer Anwendungsprogrammierschnittstelle oder eines Interprozesskommunikationsmechanismus erfolgen.
  • Auch wenn die Beschreibungen hierin beispielhafte Implementationen der beschriebenen Techniken darlegen, können auch andere Architekturen verwendet werden, um die beschriebene Funktionalität umzusetzen, und sie sollen im Schutzbereich dieser Offenbarung liegen. Darüber hinaus könnten, obwohl spezifische Verteilungen von Zuständigkeiten vorstehend zum Zwecke der Beschreibung definiert sein können, verschiedene Funktionen und Zuständigkeiten in Abhängigkeit von den Umständen anders 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 spezifischen Merkmale oder Handlungen beschränkt ist. Vielmehr werden spezifische Merkmale und Handlungen als beispielhafte Formen der Implementation der Ansprüche offenbart.

Claims (26)

  1. Verfahren, umfassend: Erhalten gespeicherter Sensordaten, die einen Satz von Szenen darstellen, die von einem Bildsensor unter Verwendung einer Belichtungseinstellung, die einem ersten Dynamikbereich entspricht, erfasst wurden; Auswählen eines Satzes von Bildverarbeitungsalgorithmen eines Bildsignalprozessors, ISP, mindestens zum Teil basierend auf mindestens einer Szene aus dem Satz von Szenen; und Veranlassen, dass der ISP den Satz von Bildverarbeitungsalgorithmen auf die Sensordaten anwendet, um einen Satz von Bildern mit einem oder mehreren Pixeln innerhalb eines zweiten Dynamikbereichs, der sich von dem ersten Dynamikbereich unterscheidet, zu erhalten.
  2. Verfahren nach Anspruch 1, wobei das Erfassen der Sensordaten von dem ISP entkoppelt ist.
  3. Verfahren nach Anspruch 1 oder 2, wobei der Satz von Bildverarbeitungsalgorithmen ferner einen Tonemapping-Algorithmus umfasst.
  4. Verfahren nach einem vorstehenden Anspruch, wobei die Sensordaten ferner Daten, die von dem Bildsensor vor der Umwandlung in ein Bildformat generiert werden, umfassen.
  5. Verfahren nach einem vorstehenden Anspruch, wobei der erste Datensatz ferner ein Bild mit niedrigem Dynamikbereich (SDR) umfasst.
  6. Verfahren nach einem vorstehenden Anspruch, wobei die Sensordaten von einer an einem der Folgenden angebrachten Kameravorrichtung erfasst wurden: einem Fahrzeug; einem Roboter; oder einer Drohne.
  7. Verfahren nach einem der vorstehenden Ansprüche, wobei die Sensordaten von einer Kameravorrichtung, die den Bildsensor beinhaltet, erfasst wurden.
  8. Verfahren nach einem vorstehenden Anspruch, wobei die Sensordaten in einem persistenten Speicher gespeichert sind.
  9. Verfahren nach einem der vorstehenden Ansprüche, wobei das Verfahren ferner das Trainieren eines Modells mindestens zum Teil basierend auf dem Satz von Bildern umfasst.
  10. Verfahren nach Anspruch 9, wobei das Modell ein neuronales Netzwerk ist.
  11. Verfahren nach Anspruch 9 oder 10, wobei das Verfahren ferner Folgendes umfasst: Erhalten eines Ergebnisses einer Inferenzierungsoperation des Modells; und Modifizieren des ISP mindestens zum Teil basierend auf dem Ergebnis.
  12. Verfahren nach Anspruch 11, wobei das Modifizieren des ISP ferner das Modifizieren eines Satzes von Parametern einer Tonemapping-Funktion, die in dem ISP beinhaltet ist, umfasst.
  13. Verfahren nach einem vorstehenden Anspruch, wobei das Verfahren ferner das Modifizieren des ISP mindestens zum Teil basierend auf dem Satz von Bildern umfasst.
  14. Verfahren nach einem vorstehenden Anspruch, wobei die Anwendung ferner eine Objekterfassung, die von einem neuronalen Netzwerk ausgeführt wird, umfasst.
  15. Verfahren nach einem vorstehenden Anspruch, wobei die Anwendung ferner ein Modell umfasst, das von einer oder mehreren Arithmetik-Logik-Einheiten (ALUs), die in einem autonomen Fahrzeug eingebaut sind, ausgeführt wird.
  16. Prozessor, umfassend: eine oder mehrere Verarbeitungseinheiten zum Erhalten gespeicherter Sensordaten, die einen Satz von Szenen darstellen, die von einem Bildsensor unter Verwendung einer Belichtungseinstellung erfasst wurden, die einem ersten Dynamikbereich entspricht, Auswählen eines Satzes von Bildverarbeitungsalgorithmen eines Bildsignalprozessors, ISP, mindestens zum Teil basierend auf mindestens einer Szene des Satzes von Szenen, und Veranlassen, dass der ISP den Satz von Bildverarbeitungsalgorithmen auf die Sensordaten anwendet, um einen Satz von Bildern innerhalb eines zweiten Dynamikbereichs, der sich von dem ersten Dynamikbereich unterscheidet, zu erhalten.
  17. Prozessor nach Anspruch 16, wobei die eine oder mehreren Verarbeitungseinheiten ferner ein neuronales Netzwerk, das mindestens zum Teil auf der Vielzahl von Bildern basiert, trainieren sollen.
  18. Prozessor nach Anspruch 17, wobei die eine oder mehreren Verarbeitungseinheiten ferner für Folgendes vorgesehen sind: Erhalten eines Ergebnisses des neuronalen Netzwerks; und Anpassen mindestens eines Parameters eines in dem ISP enthaltenen Tonemapping-Algorithmus mindestens zum Teil basierend auf dem Ergebnis, wobei der Tonemapping-Algorithmus ein Mitglied des Satzes von Bildverarbeitungsalgorithmen ist.
  19. Prozessor nach einem der Ansprüche 16 bis 18, wobei die eine oder mehreren Verarbeitungseinheiten ferner mindestens einen Parameter eines Tonemapping-Algorithmus mindestens zum Teil basierend auf einem Bild der Vielzahl von Bildern modifizieren sollen, wobei der Tonemapping-Algorithmus ein Mitglied des Satzes von Bildverarbeitungsalgorithmen ist.
  20. Prozessor nach einem der Ansprüche 16 bis 19, wobei die Sensordaten ferner Rasterskalendaten umfassen.
  21. Prozessor nach einem der Ansprüche 16 bis 20, wobei der Sensor an einem Fahrzeug angebracht ist.
  22. Prozessor nach einem der Ansprüche 16 bis 21, wobei der Sensor in eine Kameravorrichtung, die an einem autonomen Fahrzeug angebracht ist, eingebaut ist.
  23. Prozessor nach einem der Ansprüche 16 bis 22, wobei der ISP von einer Rechenvorrichtung in einem Rechenzentrum umgesetzt wird.
  24. Prozessor nach einem der Ansprüche 16 bis 23, wobei der ISP von einem System mit beschleunigter Grafikverarbeitungseinheit (GPU), umgesetzt wird.
  25. Prozessor nach einem der Ansprüche 16 bis 24, wobei die Belichtungskalibrierung während der Erfassung des Satzes von Szenen durch den Sensor nicht modifiziert wird.
  26. Nicht flüchtiges maschinenlesbares Medium, das einen darauf gespeicherten Satz von Anweisungen aufweist, die bei Ausführen durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren mindestens zu Folgendem veranlassen: Erhalten gespeicherter Sensordaten, die für einen Satz von Szenen repräsentativ sind, die von einem Sensor unter Verwendung einer Belichtungskalibrierung erfasst wurden, wobei die Sensordaten einen ersten Dynamikbereich, der mit der Belichtungskalibrierung assoziiert ist, umfassen; Bestimmen eines Satzes von Bildverarbeitungsalgorithmen mindestens zum Teil basierend auf einem zweiten Dynamikbereich für eine Vielzahl von Bildern, die in einer Anwendung verwendet werden sollen, wobei der zweite Dynamikbereich und der erste Dynamikbereich unterschiedlich sind; und Erhalten der Vielzahl von Bildern als Ergebnis der Verarbeitung der Sensordaten durch einen Bildsignalprozessor, ISP, und wobei der ISP den Satz von Bildverarbeitungsalgorithmen umsetzt.
DE102022110657.8A 2021-05-05 2022-05-02 High-dynamic-range-bildverarbeitung mit festen kalibrierungseinstellungen Pending DE102022110657A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/308,663 2021-05-05
US17/308,663 US20220358627A1 (en) 2021-05-05 2021-05-05 High dynamic range image processing with fixed calibration settings

Publications (1)

Publication Number Publication Date
DE102022110657A1 true DE102022110657A1 (de) 2022-11-24

Family

ID=83854874

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022110657.8A Pending DE102022110657A1 (de) 2021-05-05 2022-05-02 High-dynamic-range-bildverarbeitung mit festen kalibrierungseinstellungen

Country Status (4)

Country Link
US (1) US20220358627A1 (de)
JP (1) JP2022173094A (de)
CN (1) CN115311154A (de)
DE (1) DE102022110657A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11961206B2 (en) * 2021-09-09 2024-04-16 Samsung Electronics Co., Ltd. Image generation using non-linear scaling and tone-mapping based on cubic spline curves
US11587213B1 (en) * 2021-11-05 2023-02-21 GM Cruise Holdings LLC. Preserving dynamic range in images
US11734806B2 (en) 2021-11-24 2023-08-22 Roku, Inc. Dynamic tone mapping
WO2024102335A1 (en) * 2022-11-09 2024-05-16 Apple Inc. Techniques for generating gain maps based on acquired images
CN115662518A (zh) * 2022-12-27 2023-01-31 四川大学华西医院 一种基因测序存算协作系统、方法和计算机可读存储介质
CN115837994A (zh) * 2023-02-16 2023-03-24 国网山西省电力公司电力科学研究院 一种基于mems陀螺仪的吊舱姿态检测及图像补偿装置及方法
CN117456313B (zh) * 2023-12-22 2024-03-22 中国科学院宁波材料技术与工程研究所 色调曲线估计网络的训练方法、估计、映射方法及系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX350910B (es) * 2013-02-21 2017-09-25 Koninklijke Philips Nv Métodos y dispositivos de codificación y decodificación de imágenes mejoradas de alto rango dinámico (hdr).
US11503314B2 (en) * 2016-07-08 2022-11-15 Interdigital Madison Patent Holdings, Sas Systems and methods for region-of-interest tone remapping
KR20180025591A (ko) * 2016-09-01 2018-03-09 삼성전자주식회사 자율 주행 차량을 위한 비전 센서의 제어 방법 및 장치
US10025950B1 (en) * 2017-09-17 2018-07-17 Everalbum, Inc Systems and methods for image recognition
US20210217151A1 (en) * 2018-08-29 2021-07-15 Tonetech Inc. Neural network trained system for producing low dynamic range images from wide dynamic range images
US11544823B2 (en) * 2019-06-12 2023-01-03 Intel Corporation Systems and methods for tone mapping of high dynamic range images for high-quality deep learning based processing

Also Published As

Publication number Publication date
JP2022173094A (ja) 2022-11-17
CN115311154A (zh) 2022-11-08
US20220358627A1 (en) 2022-11-10

Similar Documents

Publication Publication Date Title
DE112021003077T5 (de) Technik zur Durchführung der Architektursuche für neuronale Netzwerke mit föderiertem Lernen
DE102021124008A1 (de) Training eines neuronalen netzes unter verwendung robuster temporaler ensemblebildung
DE102020129425A1 (de) Geführte unsicherheit-bewusste richtlinien-optimierung: kombinieren von modellfreien und modellbasierten strategien für probeneffizientes lernen
DE112021001762T5 (de) Erzeugen von kennzeichnungen für synthetische bilder unter verwenden eines oder mehrerer neuronaler netzwerke
DE102021121560A1 (de) Objektbild vervollständigung
DE102021122617A1 (de) Globales föderiertes training für neuronale netze
DE102022114651A1 (de) Training von objekterfassungssystemen mit generierten bildern
DE112021001835T5 (de) Beschriften von bildern mit einem neuronalen netz
DE112021005717T5 (de) Modell zum maschinellen Lernen für die Aufgaben- und Bewegungsplanung
DE102021129825A1 (de) Objekterkennung und kollisionsvermeidung unter verwendung eines neuronalen netzes
DE112021003301T5 (de) Techniken zur klassifikation mit neuronalen netzen
DE112021000953T5 (de) Erzeugung von kennzeichen mittels neuronaler netze
DE112021001946T5 (de) Attribut-bewusste bildgeneration unter verwendung von neuronalen netzwerken
DE102021125238A1 (de) Auf fourier-transformation basierte bildsynthese unter verwendung von neuralen netzen
DE102022110657A1 (de) High-dynamic-range-bildverarbeitung mit festen kalibrierungseinstellungen
DE112021001461T5 (de) Verbesserte objektidentifizierung mittels eines oder mehrerer neuronaler netze
DE102021132071A1 (de) Scheduler für neuronales netz
DE112021001102T5 (de) Hybride quantisierung von neuronalen netzen für edge-computing-anwendungen
DE102022110000A1 (de) Dynamische gewichtsaktualisierungen für neuronale netzwerke
DE102022114796A1 (de) Pretraining-framework für neuronale netzwerke
DE102022101664A1 (de) Techniken des maschinellen lernens zur verbesserung von anwendungen für videokonferenzen
DE102022113954A1 (de) Pfadplanung mit neuronalen netzen
DE112022002035T5 (de) Durchgängige handlungserkennung in intelligenten videoanalyse- und edge-computing-systemen
DE102022104392A1 (de) Trainingsverfahren für neuronale netze
DE112020007872T5 (de) Erzeugung von bewegten dreidimensionalen modellen unter verwendung von bewegungsübertragung

Legal Events

Date Code Title Description
R012 Request for examination validly filed