DE102022113807A1 - Räumlich-zeitliche masken für rauschen und sampling unter verwendung von vektoren für bildverarbeitungs- und lichttransport-simulationssysteme und -anwendungen - Google Patents

Räumlich-zeitliche masken für rauschen und sampling unter verwendung von vektoren für bildverarbeitungs- und lichttransport-simulationssysteme und -anwendungen Download PDF

Info

Publication number
DE102022113807A1
DE102022113807A1 DE102022113807.0A DE102022113807A DE102022113807A1 DE 102022113807 A1 DE102022113807 A1 DE 102022113807A1 DE 102022113807 A DE102022113807 A DE 102022113807A DE 102022113807 A1 DE102022113807 A1 DE 102022113807A1
Authority
DE
Germany
Prior art keywords
pixel
texture
pixels
memory
energy
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
DE102022113807.0A
Other languages
English (en)
Inventor
Alan Robert Wolfe
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 DE102022113807A1 publication Critical patent/DE102022113807A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/40Analysis of texture
    • G06T7/41Analysis of texture based on statistical description of texture
    • G06T7/44Analysis of texture based on statistical description of texture using image operators, e.g. filters, edge density metrics or local histograms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10004Still image; Photographic image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10024Color image
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Generation (AREA)

Abstract

Vorrichtungen, Systeme und Techniken zum Erzeugen von Masken für blaues Rauschen für die Echtzeit-Bildwiedergabe und -verbesserung. In mindestens einer Ausführungsform wird eine vektorwertige Rauschmaske erzeugt und auf ein oder mehrere Bilder angewendet, um ein oder mehrere verbesserte Bilder für die Bildverarbeitung (z. B. Echtzeit-Bildwiedergabe) zu erzeugen. In mindestens einer Ausführungsform enthält die Rauschmaske Vektorwerte pro Pixel und ist in der Lage, den zeitlichen Bereich zu handhaben (z. B. Zeit zum räumlichen Bereich hinzuzufügen), um die Bildqualität zu verbessern, wenn Bilder über mehrere Rahmen gerendert werden.

Description

  • TECHNISCHES GEBIET
  • Mindestens eine Ausführungsform bezieht sich auf Verarbeitungsressourcen, die zur Durchführung und Erleichterung der Bildwiedergabe und -verbesserung in Echtzeit verwendet werden. Zum Beispiel Prozessoren oder Rechensysteme, um eine Textur mit blauem Rauschen zu erzeugen, die Vektorwerte verarbeiten kann, wobei die Textur mit blauem Rauschen bei der Bildwiedergabe und -verbesserung in Echtzeit verwendet werden kann.
  • ALLGEMEINER STAND DER TECHNIK
  • Bildverarbeitungstechniken - wie Bildwiedergabe und -verbesserung - können erhebliche Speicher-, Zeit- oder Rechenressourcen benutzen, insbesondere wenn die Verarbeitung in Echtzeit durchgeführt werden soll. Die Menge an Speicherplatz, Zeit oder Rechenressourcen, die für die Verbesserung von Bildern verwendet wird, kann verbessert werden.
  • Figurenliste
    • 1 veranschaulicht ein Beispiel eines Prozesses zum Austauschen von Pixeln während der Erzeugung einer Maske für blaues Rauschen gemäß mindestens einer Ausführungsform;
    • 2 veranschaulicht ein Verfahren zur Erzeugung einer Maske für blaues Rauschen gemäß mindestens einer Ausführungsform;
    • 3 veranschaulicht ein Verfahren zur Erzeugung einer Maske für blaues Rauschen, das ein Importance Sampling beinhaltet, gemäß mindestens einer Ausführungsform;
    • 4 veranschaulicht die Masken des blauen Rauschens und ihre Häufigkeitsverteilungen gemäß mindestens einer Ausführungsform;
    • 5 veranschaulicht die Masken des blauen Rauschens und ihre Häufigkeitsverteilungen unter Verwendung von Importance Sampling gemäß mindestens einer Ausführungsform;
    • 6A veranschaulicht die Umgebungsverdeckung in Verbindung mit verschiedenen Rauschmasken, gemäß einer Ausführungsform;
    • 6B veranschaulicht die Umgebungsverdeckung mit Importance Sampling, die gemäß einer Ausführungsform in Verbindung mit verschiedenen Rauschmasken verwendet wird;
    • 7A veranschaulicht die Leistung verschiedener Rauschmasken, einschließlich skalarer Rauschmasken, die gemäß einer Ausführungsform in vektorielle Rauschmasken umgewandelt werden;
    • 7B veranschaulicht die Leistung verschiedener Rauschmasken, einschließlich einer geschichteten Rauschmaske, gemäß einer Ausführungsform;
    • 7C veranschaulicht die Leistung verschiedener Rauschmasken, einschließlich einer Rauschmaske mit mehreren Werten pro Pixel, gemäß einer Ausführungsform;
    • 8 veranschaulicht einen Prozess zum Analysieren einer zeitlichen Schichtung einer Rauschmaske gemäß einer Ausführungsform.
    • 9A veranschaulicht ein Beispiel eines Prozesses für ein Framework zur Erzeugung einer Maske für blaues Rauschen, die optimal zur Verwendung über Raum und Zeit sind, gemäß mindestens einer Ausführungsform;
    • 9B veranschaulicht ein Beispiel eines Prozesses für ein Framework zum Generieren von blauen Rauschmasken, die optimal zur Verwendung über Raum und Zeit sind, gemäß mindestens einer Ausführungsform;
    • 10 veranschaulicht beispielhafte Bilder, die Maske für blaues Rauschen verwenden, die optimal für die Verwendung über Raum und Zeit sind, gemäß mindestens einer Ausführungsform;
    • 11 veranschaulicht vergleichende Frequenzergebnisse, die mit Hilfe der Fourier-Analyse für die drei oben in 3 genannten Arten von Masken für blaues Rauschen erzeugt wurden, gemäß mindestens einer Ausführungsform;
    • 12 veranschaulicht die Konvergenzraten für 1D-Funktionen, gemäß mindestens einer Ausführungsform;
    • 13 veranschaulicht DFTs der 2D-Projektionen von 4D-Masken für blaues Rauschen, die 64 × 64 × 16 × 16 sind, gemäß mindestens einer Ausführungsform;
    • 14 veranschaulicht Bilder zur Darstellung der Autokorrelation von Texturen mit blauem Rauschen, gemäß mindestens einer Ausführungsform;
    • 15 veranschaulicht 2D×1D raum-zeitliche Masken für blaues Rauschen mit verschiedenen Sigmas pro Achse, gemäß mindestens einer Ausführungsform;
    • 16 veranschaulicht einen Graphen, bei dem die Erzeugungszeit eine Funktion der Anzahl von Pixeln in der Maske für blaues Rauschen ist und ungefähr einer y = x2-Kurve folgt, gemäß mindestens einer Ausführungsform;
    • 17 veranschaulicht stochastische Transparenz unter Verwendung verschiedener Arten von Rauschen gemäß mindestens einer Ausführungsform;
    • 18 veranschaulicht Konvergenzraten in stochastischem Alpha verschiedener Arten von Rauschen gemäß mindestens einer Ausführungsform;
    • 19 veranschaulicht ein Dithering vor dem Quantisieren auf 1 Bit pro Farbkanal unter Verwendung verschiedener Arten von Rauschen gemäß mindestens einer Ausführungsform;
    • 20 veranschaulicht einen Graphen von Konvergenzraten beim Dithern verschiedener Arten von Rauschen gemäß mindestens einer Ausführungsform;
    • 21 veranschaulicht die Verwendung von Rauschen zum zufälligen Versetzen von Raymarching-Startabschnitten für 4 Raymarching-Schritte pro Pixel gemäß mindestens einer Ausführungsform;
    • 22 veranschaulicht einen Graphen von Konvergenzraten von Strahlmarschnebel mit verschiedenen Arten von Rauschen gemäß mindestens einer Ausführungsform;
    • 23 veranschaulicht die Verwendung von Rauschen, um 16 Sample-Werte des Liniensegments jedes Pixels durch teilnehmende Medien zu schichten, gemäß mindestens einer Ausführungsform;
    • 24 veranschaulicht einen Graphen von Konvergenzraten von Strahlmarschnebel mit verschiedenen Arten von Rauschen gemäß mindestens einer Ausführungsform;
    • 25 veranschaulicht die Verwendung zweier unabhängiger Rauschströme zum Erzeugen von x- und y-Komponenten für einen 2D-Vektor, der auf eine kosinusgewichtete Hemisphäre abgebildet ist, für eine einzelne Umgebungsverdeckung (AO)-Abtastung pro Pixel gemäß mindestens einer Ausführungsform;
    • 26 veranschaulicht, wie die AO-Konvergenz mit verschiedenen Arten von Rauschen zusammenhängt, gemäß mindestens einer Ausführungsform;
    • 27 veranschaulicht ein oder mehrere Bilder der Verwendung einer 2D-Maske für blaues Rauschen, einer 3D-Maske für blaues Rauschen, einer räumlich-zeitlichen Maske für blaues Rauschen und einer 2DGR-Maske für blaues Rauschen gemäß mindestens einer Ausführungsform;
    • 28 veranschaulicht Bilder unter Verwendung eines Sobol-Sequenz-Offsets gemäß mindestens einer Ausführungsform;
    • 29 veranschaulicht eine Heitz & Belcour-Technik, die verschachteltes Gradientenrauschen und ein stilisiertes Graustufenbild für Rauschmusterziele verwendet, gemäß mindestens einer Ausführungsform;
    • 30 veranschaulicht Graphen der Konvergenz in Monte-Carlo-Integration, Leaky-Integration und Leaky-Integration konvergiert gemäß mindestens einer Ausführungsform;
    • 31 veranschaulicht, wie Schwellenwertmasken gemäß mindestens einer Ausführungsform Punktmengen beliebiger Dichte erstellen können;
    • 32 veranschaulicht, wie die Schwellwertpunktsätze ihre gewünschten Frequenzspektren über Achsengruppen beibehalten, gemäß mindestens einer Ausführungsform;
    • 33 veranschaulicht fünf akkumulierte Rahmen von Pixeln, die von einem Bild abgetastet wurden, unter Verwendung einer ungleichmäßigen Wichtigkeitskarte, um zu machen, dass Pixel in Richtung der Mitte wahrscheinlicher abgetastet werden, gemäß mindestens einer Ausführungsform;
    • 34 veranschaulicht, dass, während weißes Rauschen redundante abgetastete Pixel in jedem Frame und im Laufe der Zeit haben kann, räumliches blaues Rauschen redundante Pixel über den Raum entfernt und 2D×1D räumlich-zeitliches blaues Rauschen sie auch im Laufe der Zeit entfernt, gemäß mindestens einer Ausführungsform;
    • 35A Inferenz- und/oder Trainingslogik gemäß mindestens einer Ausführungsform veranschaulicht;
    • 35B eine Inferenz- und/oder Trainingslogik gemäß mindestens einer Ausführungsform veranschaulicht;
    • 36 veranschaulicht das Training und den Einsatz eines neuronalen Netzes gemäß mindestens einer Ausführungsform;
    • 37 veranschaulicht ein beispielhaftes Rechenzentrumssystem gemäß mindestens einer Ausführungsform;
    • 38A veranschaulicht einen Supercomputer auf Chipebene gemäß mindestens einer Ausführungsform;
    • 38B veranschaulicht einen Supercomputer auf Rackmodulebene gemäß mindestens einer Ausführungsform;
    • 38C veranschaulichteinen Supercomputer auf Rack-Ebene gemäß mindestens einer Ausführungsform;
    • 38D veranschaulicht einen Supercomputer auf Gesamtsystemebene gemäß mindestens einer Ausführungsform;
    • 39 ist ein Blockdiagramm, das ein Computersystem veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 40 ist ein Blockdiagramm, das ein Computersystem veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 41 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 42 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 43A veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 43B veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 43C veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 43D veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 43E und 43F veranschaulichen ein gemeinsam genutztes Programmiermodell gemäß mindestens einer Ausführungsform;
    • 44 veranschaulicht beispielhafte integrierte Schaltungen und damit assoziierte Grafikprozessoren gemäß mindestens einer Ausführungsform;
    • 45A-45B veranschaulichen beispielhafte integrierte Schaltungen und damit assoziierte Grafikprozessoren gemäß mindestens einer Ausführungsform;
    • 46A und 46B veranschaulichen zusätzliche beispielhafte Grafikprozessorlogik gemäß mindestens einer Ausführungsform;
    • 47 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 48A veranschaulicht einen Parallelprozessor gemäß mindestens einer Ausführungsform;
    • 48B veranschaulicht eine Partitionseinheit gemäß mindestens einer Ausführungsform;
    • 48C veranschaulicht einen Verarbeitungscluster gemäß mindestens einer Ausführungsform;
    • 48D veranschaulicht einen Grafik-Multiprozessor gemäß mindestens einer Ausführungsform;
    • 49 veranschaulicht ein System mit mehreren Grafikverarbeitungseinheiten (graphics processing unit - GPU) gemäß mindestens einer Ausführungsform;
    • 50 veranschaulicht einen Grafikprozessor gemäß mindestens einer Ausführungsform;
    • 51 ist ein Blockdiagramm, das eine Prozessor-Mikroarchitektur für einen Prozessor veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 52 veranschaulicht einen Deep-Learning-Anwendungsprozessor gemäß mindestens einer Ausführungsform;
    • 53 ist ein Blockdiagramm, das einen beispielhaften neuromorphen Prozessor veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 54 veranschaulicht mindestens Abschnitte eines Grafikprozessors gemäß einer oder mehreren Ausführungsformen;
    • 55 veranschaulicht mindestens Abschnitte eines Grafikprozessors gemäß einer oder mehreren Ausführungsformen;
    • 56 veranschaulicht mindestens Abschnitte eines Grafikprozessors gemäß einer oder mehreren Ausführungsformen;
    • 57 ist ein Blockdiagramm einer Grafikverarbeitungs-Engine eines Grafikprozessors gemäß mindestens einer Ausführungsform;
    • 58 ist ein Blockdiagramm von mindestens Abschnitten eines Grafikprozessorkerns gemäß mindestens einer Ausführungsform;
    • 59A und 59B veranschaulichen Thread-Ausführungslogik, die ein Array von Verarbeitungselementen eines Grafikprozessorkerns beinhaltet, gemäß mindestens einer Ausführungsform;
    • 60 veranschaulicht eine Parallelverarbeitungseinheit (parallel processing unit - „PPU“) gemäß mindestens einer Ausführungsform;
    • 61 veranschaulicht einen Universalverarbeitungscluster (general processing cluster - „GPC“) gemäß mindestens einer Ausführungsform;
    • 62 veranschaulicht eine Speicherpartitionseinheit einer Parallelverarbeitungseinheit („PPU“) gemäß mindestens einer Ausführungsform;
    • 63 veranschaulicht einen Streaming-Multiprozessor gemäß mindestens einer Ausführungsform;
    • 64 ist ein beispielhaftes Datenablaufdiagramm für eine weiterentwickelte Rechenpipeline gemäß mindestens einer Ausführungsform;
    • 65 ist ein Systemdiagramm für ein beispielhaftes System zum Trainieren, Anpassen, Instanziieren und Einsetzen von Modellen des maschinellen Lernens in einer weiterentwickelten Rechenpipeline gemäß mindestens einer Ausführungsform;
    • 66 beinhaltet eine beispielhafte Veranschaulichung einer weiterentwickelten Rechenpipeline 6510A zum Verarbeiten von Bildgebungsdaten gemäß mindestens einer Ausführungsform;
    • 67A beinhaltet ein beispielhaftes Datenablaufdiagramm eines virtuellen Instruments, das eine Ultraschallvorrichtung unterstützt, gemäß mindestens einer Ausführungsform;
    • 67B beinhaltet ein beispielhaftes Datenablaufdiagramm eines virtuellen Instruments, das einen CT-Scanner unterstützt, gemäß mindestens einer Ausführungsform;
    • 68A veranschaulicht ein Datenablaufdiagramm für einen Prozess zum Trainieren eines Modells des maschinellen Lernens gemäß mindestens einer Ausführungsform;
    • 68B ist eine beispielhafte Veranschaulichung einer Client-Server-Architektur zum Erweitern von Annotationswerkzeugen mit vorab trainierten Annotationsmodellen gemäß mindestens einer Ausführungsform;
    • 69 veranschaulicht einen Softwarestapel einer Programmierplattform gemäß mindestens einer Ausführungsform;
    • 70 veranschaulicht eine CUDA-Implementierung eines Softwarestapels der 69 gemäß mindestens einer Ausführungsform;
    • 71 veranschaulicht eine ROCm-Implementierung eines Softwarestapels der 69 gemäß mindestens einer Ausführungsform;
    • 72 veranschaulicht eine OpenCL-Implementierung eines Softwarestapels der 69 gemäß mindestens einer Ausführungsform;
    • 73 veranschaulicht Software, die durch eine Programmierplattform unterstützt wird, gemäß mindestens einer Ausführungsform;
    • 74 veranschaulicht das Kompilieren von Code zum Ausführen auf Programmierplattformen der 69-72 gemäß mindestens einer Ausführungsform.
    • 75 veranschaulicht ein Multimediasystem gemäß mindestens einer Ausführungsform;
    • 76 veranschaulicht ein verteiltes System gemäß mindestens einer Ausführungsform;
    • 77 veranschaulicht ein Supersampling-Neuralnetzwerk gemäß mindestens einer Ausführungsform;
    • 78 veranschaulicht eine Architektur eines Supersampling-Neuralnetzwerks gemäß mindestens einer Ausführungsform;
    • 79 veranschaulicht ein Beispiel für Streaming unter Verwendung eines neuronalen Supersampling-Neuralnetzwerks gemäß mindestens einer Ausführungsform;
    • 80 veranschaulicht ein Beispiel für eine Simulation unter Verwendung eines Supersampling-Neuralnetzes gemäß mindestens einer Ausführungsform;
    • 81 veranschaulicht ein Beispiel einer Vorrichtung unter Verwendung eines Supersampling-Neuralnetzwerks gemäß mindestens einer Ausführungsform;
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Details dargelegt, um ein gründlicheres Verständnis mindestens einer Ausführungsform bereitzustellen. Für den Fachmann liegt dabei jedoch auf der Hand, dass bei der Ausführung der Konzepte, die der Erfindung zugrunde liegen, eines oder mehrere dieser spezifischen Details weggelassen werden können.
  • Masken mit blauem Rauschen (z. B. Sampling-Masken mit blauem Rauschen, Texturen mit blauem Rauschen) werden in Rendering-Algorithmen für Bilder verwendet, um Zufallszahlen auf Pixel-Ebene zu erzeugen, die zu Mustern von Zufallsrauschen führen, die besser wahrgenommen werden als weißes Rauschen. Masken für blaues Rauschen sind im Allgemeinen auf hohe Frequenzen beschränkt, sodass sie mit einem Tiefpassfilter gründlicher entfernt werden können (so dass die Entrauschung mit einer Unschärfe viel effektiver ist).
  • Herkömmliche Techniken zum Erzeugen von Rauschmasken für einen Rahmen berücksichtigen im Allgemeinen nicht, wie die Zeit die Erzeugung und Anwendung von Masken beeinflusst. Leider können Bildwiedergabeprozesse für Bilder, die bei der Erstellung und Anwendung von Maske für Rauschen (z. B. Maske für blaues Rauschen) keine Rücksicht auf den zeitlichen Verlauf der Pixel nehmen, zu Bildern führen, die für den Betrachter visuell weniger ansprechend sind.
  • Dementsprechend sollte bei der Bildwiedergabe von Echtzeitbildern eine Zeitachse berücksichtigt werden. In einigen Ausführungsformen verbessert die Verbesserung von Sampling eines Bildes auf der Grundlage einer Textur im Laufe der Zeit die Bildqualität bei der Betrachtung in Bewegung und ist auch bei zeitlichen Filterverfahren wie temporalem Anti-Aliasing (TAA), Deep Learning Super Sampling (DLSS) und XeSS von INTEL anwendbar. Es gibt verschiedene Verfahren, um Maske für blaues Rauschen über die Zeit zu animieren, aber es gibt einen Kompromiss zwischen der Qualität auf den Raumachsen (z. B. Bildraumachsen, x- und y-Achsen) und der Qualität auf der Zeitachse.
  • In einer Ausführungsform sind die vektorale räumlich-zeitliche Masken für blaues Rauschen (z. B. vektorwertige Maske für blaues Rauschen) in jeder animierten Situation wertvoll, in der derzeit Blaurauschtexturen verwendet werden, da sie eine Lösung für ein Problem der Animation von Masken für blaues Rauschen darstellen. Vektorale räumlich-zeitliche Masken für blaues Rauschen speichern im Gegensatz zu skalaren räumlich-zeitlichen Masken für blaues Rauschen einen Vektorwert (z. B. einen Vektor) für jedes Pixel und haben ein hochqualitatives blaues Rauschspektrum über den Raum, während sie auch ein blaues Rauschen haben Spektrum im Laufe der Zeit.
  • In mindestens einer Ausführungsform erzeugen eine oder mehrere Schaltungen (die Teil eines oder mehrerer Prozessoren in einem Computersystem sein können) Masken für blaues Rauschen, die Vektorwerte pro Pixel speichern und räumlich und zeitlich optimal blau sind. Eine oder mehrere Schaltungen (die Softwareoperationen implementieren) können diese vektorale räumlich-zeitliche Masken für blaues Rauschen als einen Satz von N Texturen mit blauen Rauschen erzeugen, sodass jede Textur Vektorwerte pro Pixel speichert, individuell geeignetes blaues Rauschen ist und blaues Rauschen über die Zeit demonstriert jedes Pixel. Geeignetes blaues Rauschen kann ausreichende Mengen an höheren Frequenzen und geringe Mengen an niedrigeren Frequenzen enthalten.
  • In einer Ausführungsform werden die vektorale räumlich-zeitliche Masken für blaues Rauschen durch Modifizieren eines Dithered-Sampling(BNDS)-Algorithmus für blaues Rauschen erzeugt. Ein BNDS-Algorithmus ist ein Algorithmus, der verwendet wird, um N-dimensionale Maske für blaues Rauschen (z. B. Maske für blaues Rauschen mit mehrdimensionalen Werten als Pixelwerten) zu erzeugen, die aus Vektorwerten bestehen. In einer Ausführungsform kann der BNDS-Algorithmus modifiziert werden, um Rauschmuster zu erzeugen, die die gewünschten Beschränkungen sowohl räumlich als auch zeitlich gleichzeitig für eine Echtzeit-Bildwiedergabe lösen. In einer Ausführungsform empfängt der modifizierte BNDS-Algorithmus ein Bild oder Bilder mit Pixeldaten, wobei Pixeldaten Daten für N-Dimensionen umfassen (z. B. drei oder mehr Dimensionen, wobei eine Dimension Zeit ist), wobei N eine Anzahl von Dimensionen darstellt. In einer Ausführungsform wird eine Anzahl von Dimensionen durch ddargestellt. In einer Ausführungsform können Daten für ein Bild (z. B. Bilddaten) wie eine Funktion (z. B. Bildfunktion) behandelt werden, wobei ein Eingang (z. B. ein Pixelwert, der eine Position angibt) ein Ausgang erzeugt (z. B. ein Pixelwert, der Farbe angibt, Intensität, Reflexionscharakteristik). In einigen Ausführungsformen können Daten für ein Pixel als ein Skalarwert (z. B. ein Skalar, ein einzelner Wert), ein Vektorwert (z. B. ein Vektor, ein Array von Werten), ein mehrdimensionaler Wert usw. gespeichert werden N-dimensionaler Wert, ein N-dimensionaler Vektor, ein d-dimensionaler Vektor und/oder ein höherdimensionaler Wert.
  • Hierin beschriebene Techniken zielen darauf ab, vektorale räumlich-zeitliche Masken für blaues Rauschen für eine Echtzeit-Bildwiedergabe und -verbesserung gemäß verschiedenen Ausführungsformen zu erzeugen. Beispielsweise kann eine räumlich-zeitliche Vektor-Maske für blaues Rauschen eine dreidimensionale Maske sein, bei der zwei Dimensionen dem Raum entsprechen (z. B. x- und y-Koordinaten) und eine Dimension der Zeit entspricht. In einer Ausführungsform werden vektorale räumlich-zeitliche Masken für blaues Rauschen verwendet, um eine Vielzahl von Anwendungen oder Techniken für Bildwiedergabe zu nutzen, einschließlich Dithering, stochastische Transparenz, Area Light Sampling und volumetrisches Rendering. Außerdem können die vektorale räumlich-zeitliche Masken für blaues Rauschen auf eine Vielzahl von Sampling-Techniken angewendet werden, darunter z. B. weiche Schatten und Pfadverfolgung, stochastisches Alpha und Zittern.
  • Die hierin beschriebenen Techniken zielen auch darauf ab, Vektor-Raum-Zeit-Blaumasken zu erzeugen, die Vektoren als Pixelwerte verwenden und den Zeitbereich handhaben können, z. B. das Hinzufügen von Zeit zum Raum-(Bild-)Bereich, um die Bildqualität zu verbessern, wenn Bilder über mehrere Rahmen gerendert werden (z.B. Zeit) und mehrdimensionale (z.B. mehr als eine Dimension) Pixelwerte. In einer Ausführungsform kann eine räumlich-zeitliche Vektor-Blaumaske Vektoren oder Einheitsvektoren verwenden. In einer Ausführungsform basiert eine räumlich-zeitliche Vektormasken für blaues Rauschen zumindest teilweise auf einem Vektorwert, der einem Pixel zugeordnet ist.
  • In einer Ausführungsform können für die Bildwiedergabe Verbesserungen an den Bildern vorgenommen werden, indem über mehrere Sample-Werte pro Pixel integriert wird, die eine Zeitdauer oder andere Dimensionen abdecken, während die Fehlereigenschaften des blauen Rauschens weiterhin räumlich beibehalten werden. Die menschliche Wahrnehmung (und einige Computeranzeigen) führt im Laufe der Zeit eine gewisse implizite Integration durch, insbesondere bei hohen Bildraten, und diese Situationen bieten im Laufe der Zeit typischerweise einen Wert für gute Sample-Muster ohne explizite Filterung. Daher werden für jedes Bild zweidimensionale (2D) blaue Rauschmuster verwendet, die an jedem Pixel gut über die Zeit verteilt sind und (z. B. schnell) für die Monte-Carlo-Integration konvergieren (z. B. numerische Integration mit Zufallszahlen, Verwendung von Zufallsstichproben zur Integration). Als solche richten sich die hierin beschriebenen Techniken auf Systeme und Verfahren, die vektorale räumlich-zeitliche Masken für blaues Rauschen basierend auf Vektorwerten erzeugen. In einer Ausführungsform wird die vektor-räumlich-zeitliche blaue Masken für blaues Rauschen für höherdimensionale Verwendungen auf eine beliebige Dimensionalität verallgemeinert.
  • In mindestens einer Ausführungsform entspricht ein Zeitabschnitt einem bestimmten Moment oder einer bestimmten Zeiteinheit. Allgemeiner kann ein Schnitt auch eine spezifische Dimension oder eine mehrdimensionale Schicht sein (z. B. basierend auf Koordinaten der Pixel, die in eine Ebene mit der spezifischen Dimension oder den Multidimensionen fallen). In einer Ausführungsform ermöglicht ein Rahmenwerk, dass jeder zweidimensionale (2D) Schnitt (im räumlichen Bereich) eines dreidimensionalen Bildes mit blauen Rauscheigenschaften verknüpft wird, so dass jedes Pixel eindimensionale Sampling-Eigenschaften über die Zeitdimension umfasst. In einer Ausführungsform führt das Aufnehmen eines Schnittes aus einem höheren Raum zu einem Bild in einem Raum mit niedrigerer Dimension. Ein 2D-Schnitt kann also ein Bild sein, das von einem 3D-Bild oder -Objekt aufgenommen wurde. In einer Ausführungsform können 3D-Bilder über die Zeit durch einen 2D-Schnitt (z. B. X-Y-Ebene über einer Raumdomäne) und eine Z-Achse, die die Zeitdomäne darstellt, dargestellt werden.
  • In einer Ausführungsform hat der BNDS-Algorithmus eine Energiefunktion, die verwendet wird, um einen Bereich mit leerem Raum in einem Bild zu finden, um darin das nächste Pixel zu platzieren. In einer Ausführungsform wird eine Energiefunktion verwendet, um zu bestimmen, welcher Vektorwert oder welche Vektorwerte (z. B. Positionskoordinaten, Ein- oder Aus-Wert, Farbwert, Intensität, Winkel, Richtung) welchen Pixeln zugewiesen werden sollten, um blaues Rauschen besser zu veranschaulichen. In einer Ausführungsform können eine oder mehrere Modifikationen an der Energiefunktion eines BNDS-Algorithmus vorgenommen werden. Diese Energiefunktion sorgt dafür, dass sich Pixel im Energiefeld nur dann gegenseitig beeinflussen, wenn sie aus demselben Schnitt (z. B. Rahmen) stammen oder wenn es sich um denselben Pixel zu einem anderen Zeitpunkt handelt. Auf diese Weise ist eine vektorwertige blaue Rauschmaske auch durch Raum und Zeit hindurch blau - jeder 2D-Schnitt des blauen 3D-Rauschens ist ein gutes 2D-blaues Rauschen und macht jedes Pixel, das der blauen Rauschmaske entspricht, zu einem 1D-blauen Rauschen über die Zeit. Wird für jeden Schnitt eine einzige 2D-Blaurausch-Textur verwendet, kann jedes Pixel dasselbe Ergebnis erhalten und keine neuen Muster für die Integration liefern; würden dagegen für jedes Bild unabhängig voneinander erzeugte 2D-Blaurausch-Texturen verwendet, könnte jedes Pixel im Laufe der Zeit zu einer weißen Rauschsequenz werden. Fehler können als blaues Rauschen verborgen werden, sind aber auch kleiner, da sie besser zum richtigen Ergebnis konvergieren können. In einer Ausführungsform weist eine vektor-räumlich-zeitliche Masken für blaues Rauschen blaues Rauschen über dem Raum auf, so dass sie über die Zeit bessere Bildergebnisse liefern kann als weißes Rauschen.
  • In einer Ausführungsform besteht eine weitere Modifikation darin, zu spezifizieren, welche Achsen zu N-dimensionalem blauem Rauschen gruppiert werden sollten, um die Anwendung des BNDS-Algorithmus auf höhere Dimensionen auszudehnen. Dies ermöglicht hierin beschriebenen Techniken, sich über räumlich-zeitliches blaues Rauschen hinaus auf räumlich-zeitliches blaues Rauschen in der Tiefe auszudehnen, das vierdimensional (4D) ist. Dies ist zum Beispiel nützlich, wenn Nebel gerendert wird, aber dies kann auch für jede Dimensionalität und jede Gruppierung dieser Dimensionen verallgemeinert werden, die für einen bestimmten Rendering-Algorithmus erwünscht sein kann. In der Lage zu sein, benutzerdefinierte Zufallszahlen wie diese zu erstellen, bietet einen blauen Rauschfehler im Bildschirmbereich und erzielt gleichzeitig eine schnellere Konvergenz für einen Rendering-Algorithmus.
  • Blaue Rauschverteilungen eignen sich gut für die menschliche Wahrnehmung und minimieren unerwünschtes niederfrequentes Rauschen. Punktsätze für blaues Rauschen werden allgemein auch als Masken für blaues Rauschen oder Textur mit blauem Rauschen bezeichnet. Bei der Bildwiedergabe werden oft mehrere Bilder integriert, um die Bildwiedergabe-Kosten zu amortisieren, oder es werden mehrere Bilder pro Bild genommenln einer Ausführungsform erreichen die hier beschriebenen Techniken verschiedene technische Vorteile, einschließlich, aber nicht beschränkt auf die Verwendung von 2D-Blaurauschmustern, die, wenn sie animiert werden, Abtastwerte an einem Pixel erzeugen, die über die Zeit gut verteilt sind, (z. B. schnell) für die Monte-Carlo-Integration konvergieren und gleichzeitig die räumlichen Blaurauscheigenschaften beibehalten. Einige Verfahren für räumliches blaues Rauschen, die bei jedem Einzelbild unabhängig voneinander angewendet werden, erzeugen Ergebnisse, die zeitlich Frequenzspektren des weißen Rauschens zeigen und daher langsam für die Integration über die Zeit konvergieren und auch instabil sind, wenn sie zeitlich gefiltert werden.
  • Dementsprechend können die hierin beschriebenen Techniken eine Erweiterung des BNDS-Algorithmus sein, die eine Umformulierung seiner Energiefunktion beinhaltet. Die hierin offenbarten vektorale räumlich-zeitliche Masken für blaues Rauschen können zu visuell ansprechenden Fehlermustern, schnellen Konvergenzgeschwindigkeiten und erhöhter Stabilität führen, wenn sie zeitlich gefiltert werden. In einigen Ausführungsformen können die hierin beschriebenen Techniken auch auf höhere Dimensionen erweitert werden, da sie einzigartige Sampling-Eigenschaften zur Verwendung bei der zeitlichen Integration bereitstellen. Durch die Anwendung der hier beschriebenen Techniken können Verbesserungen in einer Vielzahl von Anwendungen wie Dithering, stochastische Transparenz, niedrige Anzahl von Samples, Umgebungsverdeckung und volumetrisches Rendering erzielt werden.
  • In mindestens einer Ausführungsform erzielen die hierin beschriebenen Techniken verschiedene technische Vorteile, einschließlich, aber nicht beschränkt auf die Bildwiedergabe und -verbesserung in Echtzeit bei Anwendungen, die Rendering-Algorithmen verwenden, die Zufallsvektoren pro Pixel benötigen, sowie eine Quantisierung an beliebiger Stelle, da sie für ein sehr gutes Dithering sorgt (gut in der Wahrnehmung, vom Standpunkt der Filterung aus, und auch der Durchschnitt kleiner Pixelregionen über Raum und Zeit entspricht eher dem tatsächlichen Durchschnitt der nicht quantisierten Quelldaten), was die Tatsache verbirgt, dass niedrige Bit-Zahlen verwendet wurden. Dies ist nützlich, um die Speichernutzung von Geometriepuffern (G-Puffer), Renderzielen, Texturen usw. zu reduzieren.
  • Während Masken für zwei und drei Dimensionen erzeugt werden können, können die hierin beschriebenen Techniken auf mehrere Dimensionen angewendet werden (z. B. größer als 3, 6, 7 usw.). Außerdem sind die Techniken nicht darauf beschränkt, eine Dimension als die Zeitdimension zu haben; vielmehr können die hierin beschriebenen Techniken eine mehrdimensionale Maske (z. B. 7 Dimensionen) erzeugen, wobei eine Dimension Zeit ist oder keine Dimension Zeit ist. Beispielsweise kann sich eine erzeugte Maske auf eine 7-dimensionale Maske beziehen, wobei sich die ersten drei Achsen (z. B. Dimensionen) auf blaues 3D-Rauschen beziehen, die nächsten beiden Achsen (z. B. Dimensionen) auf blaues 2D-Rauschen und die letzten beiden Achsen (z. B. Abmessungen) beziehen sich auf blaues 1 D-Rauschen. In mindestens einer Ausführungsform kann ein Rechen implementiert die Gruppierung von Dimensionen auswählen, wenn die Maske erzeugt wird.
  • In mindestens einer Ausführungsform werden nach der Erzeugung und Anwendung einer Maske für blaues Rauschen durch einen oder mehrere Schaltungen in einem Bildwiedergabeprozess andere Arten von Filteroperationen wie Rotrauschen, Bandpassfilterung oder andere Arten von Rauschfilterung (z. B. frequenzdämpfende Filter oder andere Entrauchensmethoden) angewendet.
  • In einer Ausführungsform können vektorale räumlich-zeitliche Masken für blaues Rauschen Teil eines Bildwiedergabeprozesses von Bildern sein, der andere Methoden zur Erzeugung spatio-temporaler blauer Maske für blaues Rauschen, wie skalare spatio-temporale Masken für blaues Rauschen, umfasst. Ein Bildwiedergabeprozess kann eine Kombination von vektoralen räumlich-zeitlichen Masken für blaues Rauschen und anderen blauen Masken für blaues Rauschen, wie etwa skalaren Masken für blaues Rauschen oder skalaren räumlich-zeitlichen Masken für blaues Rauschen, verwenden. vektorale räumlich-zeitliche Masken für blaues Rauschen teilen häufig die Vorteile und Qualitäten anderer räumlichzeitlicher Masken für blaues Rauschen, einschließlich derer, die unter Verwendung eines modifizierten Void- und Clusteralgorithmus erzeugt werden. In mindestens einer Ausführungsform umfasst ein Prozess das Anwenden eines modifizierten BNDS-Algorithmus, um eine Maske für blaues Rauschen zu erzeugen, die Vektorwerte verarbeitet, und der Prozess umfasst das separate Anwenden eines modifizierten Void- und Cluster-Algorithmus auf Skalarwerte (z. B. als Teil eines anderen Rendering-Schritts). wenn ein Videospiel Skalarwerte als Teil eines Szenen-Rendering-Vorgangs bereitstellt).
  • 1 veranschaulicht einen Prozess 100 , bei dem ein Pixelaustausch an einer Textur gemäß mindestens einer Ausführungsform durchgeführt wird. Pixel-Swapping ist ein Element des BNDS-Algorithmus, der vektorwertige Maske für blaues Rauschen erstellt. In einer Ausführungsform wird blaues Rauschen teilweise erreicht, wenn die Gesamtenergie einer Maske minimiert wird, was unten ausführlicher diskutiert wird. In mindestens einer Ausführungsform führen ein oder mehrere Computersysteme einige oder alle Prozesse (oder andere hierin beschriebene Prozesse oder Variationen und/oder Kombinationen davon) auf der Grundlage von computerausführbaren Anweisungen und Code (z. B. computerausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen, Compute Unified Device Architecture (CUDA)-Code) aus, die gemeinsam auf einem oder mehreren Prozessoren durch Hardware, Software oder Kombinationen davon ausgeführt werden, und wie in Verbindung mit 9A weiter erläutert.
  • Auf der oberen linken Seite von 1 ist die Textur 102 , die als „3-mal-3“-Textur bezeichnet werden kann und in ihrem Anfangszustand (z. B. Anfangstextur, Anfangsversion) gezeigt ist. Die Textur 102 umfasst neun Pixel (P1, P2, P3, P4, P5, P6, P7, P8, P9) und die gesamte Texturenergie E0. Jedes Pixel in der Textur 102 hat einen Energiewert (z. B. Pixelenergiewert), der durch seine Beziehung (z. B. Abstand, Ähnlichkeit von Werten) zu einem anderen Pixel in der Textur bestimmt wird. In einer Ausführungsform wird ein Pixelaustausch (z. B. Austauschen eines oder mehrerer Werte eines Pixels mit den Werten eines anderen Pixels) durchgeführt, um zu bestimmen, ob die Gesamtenergie einer Textur verringert werden kann, wobei das Verringern der Gesamtenergie einer Textur mit dem Anpassen der verknüpft ist Textureigenschaften von weißem bis blauem Rauschen. In einer Ausführungsform wird die Gesamtenergie einer Textur gemäß Gleichung (1) berechnet: E ( M ) = p q E ( p , q ) = p q exp ( p i q i 2 σ i 2 p s q s d / 2 σ s 2 )
    Figure DE102022113807A1_0001
    wobei E(M) die Gesamtenergie der Textur (z. B. Maske) ist, p und q Pixel sind, pi und qi die ganzzahligen Koordinaten für diese Pixel sind, ps und qs zugeordnete d-dimensionale Sample-Wertesind diese Pixel σi und σs sind konfigurierbare Parameter (z. B. Energieabfallparameter, Intensitätsabfallparameter, Gaußsche Werte), die den Energieabfall über die Entfernung und einen Gaußschen Raum (z. B. eine gleichmäßige Verteilung von Zufallsstichproben) steuern. In einer Ausführungsform steuert σi den Energie- oder Intensitätsabfall (z. B. Abnahme) über die Distanz. In einigen Ausführungsformen entspricht der Energieabfallparameter einer Gaußschen Unschärfefunktion, während sich d auf die Anzahl von Dimensionen bezieht und d/2 ein Exponent ist, der die Differenz in einem durchschnittlichen Abstand zwischen Punkten im d-dimensionalen Sample-Raum korrigiert und der Bildraum (z. B. 2D-Bildraum). wobei in einer Ausführungsform, und . σi = 2.1σs = 1 In mindestens einer Ausführungsform ist die Pixelenergie für jedes Pixel umso niedriger, je weiter zwei Pixel voneinander entfernt sind und je unterschiedlicher sie sind. In einer Ausführungsform wird der von der Energiefunktion verwendete Abstand toroidal auf allen Achsen berechnet, was bedeutet, dass die einzelnen Texturschnitte gut über den Raum kacheln, aber die zeitlichen Qualitäten auch über die Zeit gut kacheln, ohne Naht, wenn die Zeit wieder bei Null beginnt.
  • In einer Ausführungsform wird die Energiefunktion des BNDS-Algorithmus in drei Dimensionen verwendet, um räumlich-zeitliche Vektortexturen mit blauem Rauschen zu erzeugen, die einen Vektorwert pro Pixel speichern. In einer Ausführungsform wird die Energiefunktion des BNDS-Algorithmus so angepasst, dass die Energiefunktion nur dann einen Energiewert ungleich null zurückgibt, wenn die in der Energiefunktion verwendeten Pixel aus derselben zweidimensionalen Texturschnitte stammen oder wenn sie zu unterschiedlichen Zeiten dieselben Pixel sind Zeitpunkte. Diese Anpassung der Energiefunktion führt zu N Texturen, die über den Raum blau sind (z. B. Eigenschaften von blauem Rauschen zeigen), und dass jedes Pixel über der z-Achse (z. B. Zeitachse) blau ist. In einer Ausführungsform können Einheitsvektoren mit der Energiefunktion des BNDS-Algorithmus verwendet werden. Einheitsvektoren können verwendet werden, wenn beim Rendern von Bildern Richtungsvektoren erforderlich sind. Nichteinheitsvektoren können verwendet werden, wenn eine N-dimensionale Zufallszahl erforderlich ist, wie z. B. ein Punkt im Raum. In einer Ausführungsform liefert eine vektorielle räumlich-zeitliche Textur mit blauem Rauschen Zufallswerte (z. B. Zufallsvektoren, die Strahlen darstellen), die in eine Funktion wie eine Bildfunktion eingegeben werden, deren Einzelheiten einem Bildwiedergabeprozess unbekannt sein können, was im weiteren Verlauf dieser Offenbarung und in Verbindung mit mindestens 3 erörtert wird.
  • In mindestens einer Ausführungsform findet ein Pixelaustausch 104 zwischen P2 und P9 statt, um eine Textur 106 zu erzeugen. Die Gesamttexturenergie E1 der Texturversion 106 wird durch eine modifizierte BNDS-Energiefunktion so berechnet, dass sie niedriger als E0 ist, und daher wird der Pixelaustausch 104 akzeptiert. Als nächstes findet ein Pixelaustausch 108 zwischen P4 und P7 statt, um eine Textur 110 zu erzeugen. Die Gesamttexturenergie E2 der Textur 110 wird höher als E1 berechnet, und daher wird der Pixelaustausch 108 zurückgewiesen. Als nächstes findet ein Pixelaustausch 112 zwischen P3 und P6 statt, um eine Texturversion 114 zu erzeugen. In einem Beispielszenario wird die gesamte Texturenergie E3 der Texturversion 114 so berechnet, dass sie niedriger als E1 ist, und daher wird der Pixelaustausch 112 akzeptiert. In mindestens einer Ausführungsform werden Pixelpaare wiederholt ausgetauscht, bis die Gesamtenergie der Textur minimal ist. In mindestens einer Ausführungsform werden Pixelpaare wiederholt zufällig ausgewählt und ausgetauscht, bis die Gesamtenergie der Textur ein Minimum erreicht hat. In mindestens einer Ausführungsform basiert eine Struktur, ein Framework oder ein Algorithmus zum Entscheiden, welche Pixelpaare ausgetauscht werden sollen, auf früheren Pixelaustauschen. In mindestens einer Ausführungsform wird die Anzahl der durchgeführten Tauschvorgänge, einschließlich der zurückgewiesenen Tauschvorgänge, durch Formel (2) bestimmt: Anzahl der Vertauschungen = ( W 2 × H 2 × D 2 ) / 1000
    Figure DE102022113807A1_0002
    wobei W die Breite einer Textur in Pixeln, H die Höhe der Textur in Pixeln und D die Tiefe der Textur in Pixeln ist. In mindestens einer Ausführungsform wird die Anzahl der durchgeführten Tauschvorgänge, einschließlich der zurückgewiesenen Tauschvorgänge, durch Formel (3) bestimmt: Anzahl der Vertauschungen = ( W 2 × H 2 × D 2 ) / 100000
    Figure DE102022113807A1_0003
  • In einer Ausführungsform beginnt die Bestimmung der minimal möglichen Energie für eine Textur unter Verwendung von Pixel-Swaps mit einer Häufigkeit von 100 %, einen Swap durchzuführen, der zu einer höheren Gesamtenergie für die Textur führt. Am Ende des Austauschs besteht eine Chance von 0 %, dass ein Austausch durchgeführt wird, der zu einer höheren Gesamtenergie für die Textur führt. In einer Ausführungsform kann ein Pixelaustausch zu keiner Änderung der gesamten Texturenergie führen.
  • 2 veranschaulicht einen beispielhaften Prozess 200 zum Erzeugen einer räumlich-zeitlichen Vektortextur mit blauem Rauschen unter Verwendung von Pixelaustausch gemäß einer Ausführungsform. Eine oder mehrere Schaltungen oder ein oder mehrere Prozessoren können einen Teil oder den gesamten Prozess 200 ausführen. Der Prozess 200 umfasst das Empfangen einer Textur 202, das Berechnen eines Energiewerts für diese Textur 204, das Austauschen von Pixelpaaren 206, das erneute Berechnen eines Energiewerts für diese Textur 208, das Berechnen, ob der Austausch zu einem niedrigeren Energiewert für die Textur 210 geführt hat, und falls ja , den Austausch beibehalten 212. Wenn nein, wird der Austausch rückgängig gemacht 214 und die Textur wird bei Schritt 202 empfangen, um den Prozess erneut zu starten. Wenn das Beibehalten des Austauschs 212 durchgeführt wird, dann wird berechnet 216 , ob die Textur ihren minimalen Energiewert erreicht hat, und wenn ja, wird die Textur als einen Ausgang 218 erzeugt und der Prozess 200 endet. Wenn die Textur ihren minimalen Energiewert nicht erreicht hat, wird die Textur in Schritt 202 empfangen, um den Prozess erneut zu starten.
  • In einer Ausführungsform kann eine in Schritt 202 empfangene Textur zunächst eine Textur mit weißem Rauschen sein (z. B. eine einheitliche Textur, eine einheitliche Maske), wie in dieser Offenlegung und in Verbindung mit mindestens 1 beschrieben. In mindestens einer Ausführungsform kann eine empfangene Textur eine Schablonentextur oder eine Basistextur sein, die eine Starttextur (oder Ausgabetextur) für die Erzeugung einer Textur mit blauem Rauschen, rotem Rauschen oder anderen Farbrauscheigenschaften ist. In mindestens einer Ausführungsform kann eine anfängliche Textur ungleichmäßige Verteilungen von Pixeln enthalten.
  • In einer Ausführungsform umfasst die Berechnung eines Energiewertes für eine Textur 204 die Anwendung einer modifizierten Energiefunktion aus den BNDS-Algorithmen, die zumindest in Verbindung mit 1 näher erläutert wird.
  • In einer Ausführungsform umfasst das Vertauschen von Pixelpaaren 206 das Vertauschen der Pixelwerte von zwei Pixeln, wie in Verbindung mit 1 weiter erläutert. Die Auswahl der zwei zu tauschenden Pixel kann nach dem Pseudozufallsverfahren erfolgen.
  • In einer Ausführungsform ist die Berechnung eines Energiewertes für eine Textur in Schritt 208 identisch mit der Berechnung eines Energiewertes für eine Textur in Schritt 204, mit Ausnahme von zwei vertauschten Pixeln, was in Verbindung mit 1 näher erläutert wird.
  • Wenn in einer Ausführungsform bei Schritt 210 ein niedrigerer Energiewert aufgrund des Pixelaustauschs bestimmt wird, behält die Textur den Austausch 212 bei. Wenn in Schritt 210 aufgrund des Pixeltauschs ein höherer Energiewert ermittelt wird, lehnt die Textur den Tausch ab und setzt die Pixelwerte auf den Stand vor dem Tausch 214 zurück. Die Energiewerte werden zumindest in Verbindung mit 1 näher erläutert.
  • In einer Ausführungsform ähnelt die Bestimmung, ob eine Textur Pixel oder Pixelwerte hat, die so angeordnet sind, dass die Textur die niedrigstmögliche Energie 216 hat, einem simulierten Annealing, bei dem der Prozess 200 eine globale minimale Energie für die Textur gefunden hat. Die Bestimmung der minimal möglichen Energie für eine Textur wird in Verbindung mit 1 näher erläutert.
  • Wenn eine Ausgabetextur 218 erzeugt wird, wird die minimal mögliche Energie der Ausgabetextur auf Bilddaten angewendet und weist daher blaues Rauschen auf, was in dieser gesamten Offenbarung und in Verbindung mit mindestens 1 weiter diskutiert wird. Die Ausgabetextur ist eine vektorraumzeitliche Maske für blaues Rauschen. In einer Ausführungsform kann die Ausgabetextur auf Bilddaten angewendet werden, die Vektoren, Punkte auf einem Netz oder Objekte mit mehr als drei Dimensionen enthalten.
  • 3 veranschaulicht einen Prozess 300 zum Rendering eines Bildes (z. B. einer Bildfunktion) unter Verwendung eines Importance Sampling und einer räumlich-zeitlichen Vektorrauschmaske für blaues Rauschen gemäß einer Ausführungsform. In mindestens einer Ausführungsform erfolgen das Importance Sampling und die Generierung einer Vektor-räumlich-zeitlichen Maske für blaues Rauschen vor einem Bildwiedergabeprozess (z. B. so dass eine Maske vorbereitet wird, um angewendet zu werden, wenn ein Bild gerendert wird). Der Prozess 300 kann in Kombination mit dem Prozess 200 durchgeführt werden, wie in Verbindung mit 2 beschrieben. Eine oder mehrere Schaltungen oder ein oder mehrere Prozessoren können einen Teil oder den gesamten Prozess 300 ausführen. Der Prozess 300 umfasst die Schritte der Durchführung von Importance Sampling 302, der Durchführung von Pixel-Swapping 304 und des Renderns eines Bildes 306. Der Prozess 300 verwendet Pixel-Swapping und modifizierte Energiefunktionsberechnungen für eine Textur, die anfangs nicht einheitlich ist (z. B. weißes Rauschen, das mit einer einheitlichen Zufallsstichprobe erzeugt wurde). Vielmehr ist die anfängliche Textur ungleichmäßig (z. B. eine Textur, die einem Wichtigkeits-Sampling unterzogen wurde, eine Textur, die mit ungleichmäßiger Zufallsstichprobe erzeugt wurde). In einer Ausführungsform zeigen räumlich-zeitliche Texturen mit blauem Rauschen ein ungleichmäßiges Histogramm (z. B. eine grafische Darstellung der Intensität von Pixeln), was Importance Sampling ermöglicht.
  • In einer Ausführungsform kann zu Beginn ein Bildwiedergabeprozess 302 durchgeführt werden, um für jedes Pixel zu berechnen, wie viel Licht an einem gegebenen Oberflächenpunkt eines Objekts (z. B. Bildfunktion) zu einer virtuellen Kamera hin reflektiert wird. In einer Ausführungsform können Pixel Vektoren, Punkten auf einem Netz oder Objekten mit mehr als drei Dimensionen entsprechen. Das Berechnen des gesamten Lichts, das für jedes Pixel zu einer virtuellen Kamera reflektiert wird, kann jedoch zu rechenintensiv für das Echtzeit-Rendering sein.
  • In einer Ausführungsform bestimmt das Durchführen des Importance Sampling 302 die Lichtrichtungen, die die Summe des gesamten Lichts, das zu einer virtuellen Kamera reflektiert wird, am besten annähern oder darstellen können. Importance Sampling ist eine Art von Monte-Carlo-Integration (z. B. Monte-Carlo-Sampling), die zumindest in Verbindung mit den 4-5, 19, 22 und 25 näher erläutert wird. Importance Sampling kann in einer oder mehreren Dimensionen durchgeführt werden. In einer oder mehreren Ausführungsformen kann die Importance Sampling in vielen Dimensionen durchgeführt werden, indem mehrdimensionale Integrale und mehrdimensionale Werte verwendet werden. In einer Ausführungsform wird eine Wahrscheinlichkeitsdichtefunktion (PDF) verwendet, um Zufallswerte zum Bestimmen der optimalen Lichtrichtungen während des Importance Sampling zu erzeugen. Ein PDF kann zufällige Skalar- oder Vektorwerte bereitstellen, um zu bestimmen, welche Stichproben während des Importance Sampling genommen werden sollen. Eine PDF kann zum Teil dadurch bestimmt werden, dass man weiß, wo das meiste Licht von einem zu abgetasteten Objekt reflektiert wird (z. B. wenn man weiß, wo ein Objekt am meisten reflektiert). Eine PDF-Datei kann Werte für das Importance Sampling enthalten, die zu einer ungefähren Form eines Objekts führt (z. B. Form der Ausgabe einer Bildfunktion) oder die zur Bestimmung der ungefähren Position einer oder mehrerer Lichtquellen führt. In einer Ausführungsform kann eine PDF ein Sample in einer niederwertigen Region der PDF (z. B. trägt weniger Licht zu einem Pixel bei) und eine Probe in einer hochwertigen Region der PDF (z. B. trägt mehr Licht zu einem Pixel bei) enthalten) und gewichtet die Samples durch Multiplizieren jedes Samples mit dem Kehrwert der PDF. In einer Ausführungsform wird jedem Pixel eine PDF zugeordnet und im Alphakanal gespeichert (z. B. eine Datenkomponente einer Bilddatei). In einer Ausführungsform speichert der Alphakanal der Texturen die PDF als Prozentsatz zwischen der minimalen und maximalen PDF. Ein PDF kann aus einem Pixelwert in einer Textur berechnet werden, z. B. durch Durchführung eines Punktprodukts, wenn die Wichtigkeitssamples kosinushalbkugelgewichtet sind, oder durch Division eines Pixelwerts durch einen Normalisierungswert, der als Shader-Konstante übergeben wird. Importance Sampling kann an Pixeln durchgeführt werden, wobei jedes Pixel einer Zufallsvariablen entspricht und wobei das Sampling von Pixeln dem Bestimmen eines Wertes für eine Wahrscheinlichkeitsdichtefunktion für ein Pixel entspricht, und wobei das Sampling das Reduzieren einer Varianz der Samples durch Schrägstellen der Samples in Richtung von Regionen mit höherer Energie auf der Grundlage der Energiefunktion umfasst. In einer Ausführungsform kann das Importance Sampling eine beliebige Kombination von Techniken verwenden, einschließlich GGX (z. B. Verteilung von Normalen eines Ellipsoids), bidirektionale Streuungsverteilungsfunktion (BSDF), bidirektionale Reflexionsverteilungsfunktion (BRDF), Smith-Schattenmaskierung, Kosinuskeulenabtastung, oder eine Kombination davon, und wie weiter in Verbindung mit 25.
  • In mindestens einer Ausführungsform, nachdem eine oder mehrere Schaltungen oder ein oder mehrere Prozessoren eine Wichtigkeits-Sampling-Operation 302 an einer Bildfunktion durchgeführt haben (z. B. Erzeugen von Pixelwerten aus Bereichen höherer Wichtigkeit in einer Bildfunktion), eine oder mehrere Schaltungen oder eine oder mehrere Prozessoren führen Pixelaustausch 304 durch, um blaues Rauschen für die durch das Importance Sampling erzeugten Pixel sicherzustellen oder zu verbessern. Das Vertauschen von Pixeln, einschließlich der Anzahl der Iterationen des Vertauschens, wird in Verbindung mit mindestens 1 und 2 weiter erörtert. Eine oder mehrere Schaltungen oder ein oder mehrere Prozessoren führen ein Pixel-Swapping in Verbindung mit einer modifizierten BNDS-Funktion durch, die ebenfalls in Verbindung mit mindestens den 1 und 2 näher erläutert wird.
  • Sobald die Pixelaustauschoperation 304 abgeschlossen ist und eine räumlich-zeitliche Vektortextur mit blauem Rauschen erzeugt, wird ein Bild gerendert 306. In einer Ausführungsform wird, wenn ein Bild gerendert wird, ein Bild auf einer Anzeige dargestellt. In mindestens einer Ausführungsform erfolgt eine Bildwiedergabe 306 nach dem Importance Sampling 302 und nach dem Pixelaustausch 304 , wobei eine oder mehrere Schaltungen ein Importance Sampling und Pixelaustausche durchführen, um eine Maske für blaues Rauschen bereitzustellen, die nach Wichtigkeit abgetastet und dann von der einen oder den mehreren Schaltungen verwendet wird diese Maske, um ein Bild zu rendern. Die Bildwiedergabe 306 kann für mehrdimensionale Pixel wie etwa Vektoren (z. B. 2D, 3D, 4D und dergleichen) erfolgen. Das Ergebnis kann ein mehrdimensionales fotorealistisches Bild einer Bildfunktion sein, die ein mehrdimensionales Objekt darstellt.
  • In mindestens einer Ausführungsform verwendet eine oder mehrere Schaltungen den Prozess 200 und/oder 300, um eine Textur zu empfangen, die Pixel enthält (z. B. eine Textur mit weißem Rauschen); Berechnen eines Textur-Energiewerts für die Textur auf der Grundlage einer Energiefunktion (z. B., unter Verwendung von Gleichung (1), wobei die Energiefunktion auf einem Abstand zwischen einem Paar von Pixeln, einem ersten konfigurierbaren Parameter und einem zweiten konfigurierbaren Parameter basiert, und wobei ein Pixel-Energiewert für jedes Pixel in dem Paar von Pixeln ein Nicht-Null-Wert als Ergebnis des Paares von Pixeln ist, die sich in einer gleichen zweidimensionalen Schicht befinden, oder das Paar von Pixeln identische Koordinaten bei unterschiedlichen zeitlichen Schnitten aufweist); Vertauschen von Positionen von Pixeln von Paaren von Pixeln in der Textur, bis der Energiewert der Textur einen minimalen Energiewert basierend auf der Energiefunktion erreicht (z.B. gemäß Gleichung (1)); Erzeugen einer Ausgabetextur mit Ausgabepixeln auf der Grundlage der Textur mit minimalem Energiewert, die auf Bilddaten anzuwenden ist; und Rendern eines Ausgabebildes über mehrere Rahmen auf der Grundlage der Anwendung der Textur auf das eine oder die mehreren Bilder (z. B. Anwenden der Ausgabetextur auf eine Videospielszene, um Rahmen und Bilder als Teil eines Videospiels zu rendern).
  • 4 veranschaulicht Darstellungen von vektorwertigen räumlich-zeitlichen Texturen mit blauem Rauschen in einer Tabelle gemäß einer Ausführungsform. Die in 4 dargestellten Arten von Darstellungen können das Ergebnis einer Kombination einiger oder aller Techniken sein, die in Verbindung mit mindestens 1-3. Pixel-Swapping unter Verwendung einer angepassten Energiefunktion aus dem BNDS-Algorithmus wurde auf eine 128 × 128 × 64-Textur und Schnitte dieser Texturen sowie ihre diskreten Fourier-Transformationen (DFTs) (z. B. Darstellungen von Frequenz und ihren Komponenten) angewendet) sind in Tabelle 1 dargestellt . Die DFTs werden zumindest in Verbindung mit den 4 und 6 näher erläutert. In einer Ausführungsform werden die DFTs gemittelt, um die erwarteten Frequenzspektren zu zeigen, mit Ausnahme des animierten blauen Rauschens mit Goldenem Schnitt, das auf zwei Arten die Raumfrequenzen bei bestimmten Rahmennummem schädigt. In einer Ausführungsform ist es wünschenswert, blaue Rauscheigenschaften in jedem räumlichen 2D-Schnitt zu erhalten, um eine verbesserte Rauschsequenz als weiße Rauschsequenz entlang der Zeitachse bereitzustellen. Zeile XY[0] veranschaulicht die vektorwertigen räumlich-zeitlichen Texturschnitte eines eindimensionalen Vektors (Vec1) mit blauem Rauschen, seines Einheitsvektors (Einheit Vec1), eines zweidimensionalen Vektors (Vec2), seines Einheitsvektors (Einheit Vec2), einen dreidimensionalen Vektor (Vec3) und seinen Einheitsvektor (Einheit Vec 3). Die in Reihe XY[0] dargestellten Texturscheiben zeigen blaues Rauschen. Die in Zeile XY[0] gezeigten Darstellungstypen können als Blaurauschspeicherung unterschiedlicher Dimensionsvektoren betrachtet werden. Zeile DFT(XY) veranschaulicht die DFTs in einer zweidimensionalen Schicht der entsprechenden vektorwertigen räumlich-zeitlichen Texturschnitte mit blauem Rauschen an, die in Zeile XY[0] gezeigt sind. Die in DFT(XY) dargestellten DFTs zeigen niedrigere Größenordnungen von Hochfrequenz (z. B. Energie) und höhere Größenordnungen von Niederfrequenz, was auf blaues Rauschen hinweist. Zeile DFT(XZ) veranschaulicht die DFTs einer Textur entlang der z-Achse (z. B. Zeitachse) an, die den in Zeile XY[0] gezeigten Texturschnitte entspricht. Die in Zeile DFT(XZ) dargestellten DFTs zeigen blaues Rauschen über die Zeit, wobei niedrige Frequenzen eine höhere Größenordnung aufweisen. Die DFTs von Tabelle 1 wurden pro Farbkanal berechnet. Die in Tabelle 1 gezeigten Arten von Darstellungen von Texturen mit blauen Rauschen können auf verschiedene Arten und Größen von Vektoren angewendet werden und können als Blaues-Rauschen-Speichern unterschiedlicher dimensionaler Vektoren und ihrer DFTs betrachtet werden.
  • 5 veranschaulicht Darstellungen von nach Wichtigkeit abgetasteten räumlich-zeitlichen Texturen mit blauem Rauschen in Tabelle 2 gemäß einer Ausführungsform. Die in 4 dargestellten Arten von Darstellungen können das Ergebnis einer Kombination einiger oder aller Techniken sein, die in Verbindung mit mindestens 1-4. Texturen mit räumlich-zeitlichem, vektoriellem, nach Wichtigkeit abgetastetem blauem Rauschen können auch als Texturen mit nach Wichtigkeit abgetastetem, raum-zeitlichem, blauem Rauschen mit Vektorwerten bekannt sein. Die erste Zeile (Kosinusgewichtete Hemisphäreneinheit Vec3) von Tabelle 2 veranschaulicht einen Schnitt einer nach Wichtigkeit abgetasteten vektorwertigen räumlich-zeitlichen Textur (in Spalte Texture[0]), einschließlich dreidimensionaler Vektoren und ihrer entsprechenden DFTs (DFT(XY) und DFT (ZY)) entlang verschiedener Achsen. Die Textur mit blauem Rauschen in der ersten Reihe basiert auf einer nach Wichtigkeit abgetasteten Textur einer Hemisphäreneinheit, wobei die Importance Sampling ein kosinusgewichtetes Sampling beinhaltet. In einer Ausführungsform kann das Importance Sampling auf eine Textur angewendet werden, die bereits so eingestellt ist, dass sie blaues Rauschen aufweist. In einer Ausführungsform kann das Importance Sampling auf eine Textur angewendet werden, die bereits so eingestellt ist, dass sie blaues Rauschen aufweist. Der Texturschnitt in der ersten Zeile von Tabelle 2 sowie seine entsprechenden DFTs weisen blaues Rauschen auf, wobei die DFTs höhere Größenordnungen niedriger Frequenzen über Raum und Zeit zeigen.
  • Die zweite Zeile (HDR Skybox Importance Sampled Unit Vec3) der Tabelle 2 zeigt einen Schnitt einer vektorbewerteten räumlich-zeitlichen Textur (in der Spalte Textur [0]) mit dreidimensionalen Vektoren und den entsprechenden DFTs (DFT(XY) und DFT (ZY)) entlang verschiedener Achsen. Die Textur mit blauem Rauschen in der zweiten Reihe basiert auf einer nach Wichtigkeit abgetasteten Textur einer Skybox mit hohem Dynamikbereich (HDR Skybox) (z. B. Darstellungen einer virtuellen Umgebung, die als Quader gespeichert sind). Der Texturschnitt in der zweiten Zeile von Tabelle 2 sowie seine entsprechenden DFTs weisen blaues Rauschen auf, wobei die DFTs höhere Größenordnungen niedriger Frequenzen über Raum und Zeit zeigen.
  • 6A veranschaulicht Bilder, die aus dem Rendern von Umgebungsverdeckungseffekten in einer dreidimensionalen Szene unter Verwendung von drei unterschiedlichen Typen von Rauschtexturen gemäß einer Ausführungsform resultieren. Die in 6A und 6B dargestellten Bilder können das Ergebnis einer Kombination einiger oder aller Techniken sein, die in Verbindung mit mindestens 1-5 besprochen wurden. In einer Ausführungsform ist Umgebungsverdeckung eine Schattierungs- und Rendertechnik, die verwendet wird, um zu berechnen, wie viel Licht von jedem Punkt reflektiert wird, wenn er Umgebungslicht ausgesetzt wird, und die weiter unten erörtert wird. Für die drei in FIG. In 6A wurden vier Proben pro Pixel als Teil eines gleichmäßig abgetasteten Umgebungsverdeckungsprozesses genommen, und es wurden drei verschiedene Textur-Sampling-Techniken verwendet, eine für jedes Bild - weißes Rauschen, blaues Rauschen und räumlich-zeitliches blaues Rauschen (STBN). In einer Ausführungsform ist das räumlich-zeitliche blaue Rauschen vektorbewertet. Von den drei Bildern erzeugte das Bild mit weißem Rauschen das schlechteste erkennbare Detail für die Szene, während das Bild mit STBN das beste erkennbare Detail für die Szene erzeugte.
  • 6B veranschaulicht Bilder, die sich aus der Darstellung von Umgebungsokklusionseffekten in einer dreidimensionalen Szene ergeben, wobei drei verschiedene Arten von Rauschtexturen sowie ein Importance Sampling gemäß einer Ausführungsform verwendet werden. In einer Ausführungsform ist das räumlich-zeitliche blaue Rauschen vektorbewertet. Für die drei in FIG. In 6B wurden vier Sample-Werte pro Pixel als Teil eines gleichmäßig abgetasteten Umgebungsverdeckungsprozesses genommen, während kosinusgewichtete Hemisphärenwichtigkeits-abgetastete Einheitsvektoren verwendet wurden (z. B. werden die wichtigeren Winkel, von denen abgetastet werden soll, teilweise durch einen Winkel bestimmt, der durch a dargestellt wird Kosinuswert). In einer Ausführungsform haben blaues Rauschen und STBN-Texturen kosinusgewichtete hemisphärische Vektoren, die in ihren Texturen gespeichert sind, die unter Verwendung einer TBN-(Tangens-, Bit-Tangens-, Normal-)Basismatrix in einen Tangentenraum transformiert werden. Von den drei Bildern erzeugte das Bild mit weißem Rauschen das schlechteste erkennbare Detail für die Szene, während das Bild mit STBN das beste erkennbare Detail für die Szene erzeugte.
  • 7A veranschaulicht die Leistung (z. B. Konvergenz) verschiedener Masken für blaues Rauschen, einschließlich einer Vektor-räumlich-zeitlichen blauen Maske für blaues Rauschen gemäß einer Ausführungsform. Wie in FIG. In 7A - 7C hat eine x-Achse Rahmen, eine y-Achse hat einen mittleren quadratischen Fehler (RMSE), weißes Rauschen wird durch offene Kreise dargestellt, STBN Morton wird durch Dreiecke dargestellt, STBN Hilbert wird durch Quadrate dargestellt und der Vektor STBN ist dargestellt durch ausgefüllte Kreise. Die in 7A-C dargestellten Ergebnisse können das Ergebnis einer Kombination einiger oder aller Techniken sein, die in Verbindung mit mindestens 1-6A und 6B besprochen wurden. In einer Ausführungsform kann eine skalare Maske für blaues Rauschen in eine vektorielle blaue Maske für blaues Rauschen transformiert werden, indem skalare Werte in eine raumfüllende Kurvenfunktion (z. B. eine Morton-Kurve, eine Hilbert-Kurve) eingegeben werden, um Pixelwerte auszugeben, die Vektoren sind (z. B. Kurvenumkehr). Das Anwenden der Kurveninversion auf skalare blaue Masken für blaues Rauschen führt zu vektorwertigen Masken, die die gleichen Eigenschaften wie die skalaren Masken für blaues Rauschen beibehalten. Die Kurveninversion kann mit anderen Arten von Dithermasken oder anderen skalaren (z. B. Graustufen-) Rauschmustern wie Bayer-Matrizen, verschachteltem Gradientenrauschen und stilisierten Rauschmustern verwendet werden. 7A ist ein Diagramm (z. B. ein Konvergenzdiagramm), das den mittleren quadratischen Fehler (RMSE) (z. B. die Fehlermenge, die eine Rauschmaske bei der Bildwiedergabe erzeugt) verschiedener Rauschtexturen der Größe 32 × 32 × 64 darstellt, die alle eine Dreiecksfunktion abtasten. Die Dreiecksfunktion wird mit zweidimensionalen Rahmen der Größe 32 × 32 abgetastet. Wie in der Grafik dargestellt, nimmt der RMSE mit einer Zunahme der abgetasteten Rahmen ab. In einer Ausführungsform, und wie in dem Graphen dargestellt, arbeitet eine Vektor-räumlich-zeitliche Textur mit blauem Rauschen, die aus einer skalaren Rauschtextur mit einer Hilbert-Kurve transformiert wurde, besser als eine skalare Rauschtextur, die durch eine Hilbert-Kurve transformiert wurde. Weder die mit einer Morton-Kurve noch die mit einer Hilbert-Kurve erzeugte STBN übertraf die mit dem BNDS-Algorithmus und der modifizierten Energiefunktion erzeugte vektorielle räumlich-zeitliche Maske für blaues Rauschen, wie sie in Verbindung mit mindestens 1 näher erläutert wird.
  • 7B veranschaulicht die Leistung (z. B. Konvergenz) verschiedener Rauschmasken, einschließlich mehrerer vektorwertiger blauer Rauschmasken gemäß einer Ausführungsform. Eine Maske für blaues Rauschen ist eine über die Zeit geschichtete Maske für blaues Rauschen (Vektor BNxStrat). Die Schichtung einer Textur wird in Verbindung mit mindestens 8 näher erläutert. In einer Ausführungsform wird eine Rauschmaske erzeugt, indem das Pixel-Swapping verwendet wird, wie weiter in Verbindung mit mindestens diskutiert wird. 1, aber die Energiefunktion des BNDS-Algorithmus wird so modifiziert, dass ein Wert ungleich Null zurückgegeben wird, wenn die zwei Pixel dieselbe z-Koordinate teilen (z. B. auf demselben zweidimensionalen Stück einer Textur angeordnet sind) und ein Austausch dazwischen stattfindet diese beiden Pixel verschlechtern nicht die Schichtung der Textur entlang der z-Achse. Der Graph von 7B, die dem in Verbindung mit 7 zeigt, dass die Leistung einer Rauschmaske, die über den Raum blau ist und über die Zeit geschichtet ist (Vektor BNxStrat), eine gute Leistung erbringt, sobald alle Samples genommen wurden.
  • 7C veranschaulicht einen Graphen, der die Leistung (z. B. Konvergenz) verschiedener Masken für blaues Rauschen zeigt, einschließlich einer Vektor-räumlich-zeitlichen Maske für blaues Rauschen die mehrere Werte pro Pixel enthält. In einigen Fällen ist es erwünscht, mehr als einen räumlich-zeitlichen Wert für blaues Rauschen pro Pixel zu haben, beispielsweise wenn mehrere Samples pro Pixel gerendert werden. Das Addieren von mehr als einem Wert pro Pixel kann durch Lesen der Pixel einer Rauschtextur und Addieren eines festen Offsetwerts (z. B. eines festen Koordinatenwerts in x-Richtung, eines festen Koordinatenwerts in y-Richtung) erfolgen, um ein neues Pixel zu erhalten an einem neuen Standort.
  • In einer Ausführungsform kann das Erzeugen von mehr als einem räumlich-zeitlichen blauen Rauschwert pro Pixel erreicht werden, indem jedem Pixel ein Rang-1-Gitter (z. B. ein Satz von Punkten im N-dimensionalen Raum mit einer periodischen Struktur, einer Sequenz mit geringer Diskrepanz) hinzugefügt wird. In einer Ausführungsform erzielt das Anwenden eines Rang-1-Gitters auf jedes Pixel einer skalaren Maske für blaues Rauschen mit einer Weglänge des Golden-Ratio-Werts oder der Quadratwurzel von zwei optimale Ergebnisse. Der Graph von 7C veranschaulicht, dass eine zweidimensionale Maske für blaues Rauschen mit einer Hinzufügung eines Rang-1-Gitters (Vektor 2DBN + R2) eine bessere Leistung erbringen kann, wenn auch unregelmäßiger, als eine gleichmäßige räumlich-zeitliche Maske für blaues Rauschen.
  • 8 veranschaulicht einen Prozess 800 zum Bestimmen, ob ein Austausch von Pixeln zwischen Schichten gemäß einer Ausführungsform beibehalten werden sollte. Der Prozess 800 kann mit irgendeiner der Techniken kombiniert werden, die zumindest in Verbindung mit den 1-5, 6A-B und 7A-C. Der Prozess 800 umfasst ein Sammeln (z. B. Sammeln) von Pixelwerten 802 für Pixel, die sich auf derselben x-y-Koordinate jeder Schicht einer Textur befinden, die Schichtungen einer Textur entlang der z-Achse sind.
  • In Schritt 804 wird die Anzahl der während Schritt 802 gesammelten Werte gezählt. In einer Ausführungsform ist die ideale Anzahl der in jeder Schicht erfassten Werte 1. In mindestens einer Ausführungsform funktioniert die Schichtung am besten, wenn sich jedes Pixel an einem zweidimensionalen Ort innerhalb einer Schicht befindet, wenn die Schichtung über die Zeit erfolgt.
  • In Schritt 806 wird die Anzahl der in jeder Schicht gezählten Werte um eine Zahl subtrahiert. Wenn in einer Ausführungsform die ideale Anzahl von Werten in jeder Schicht 1 ist, dann ist die zu subtrahierende Zahl 1 und das Ergebnis der Subtraktion ist ein Wert, der dabei hilft, zu bestimmen, ob ein Pixeltausch zwischen Schichten beibehalten werden sollte, wie weiter unten besprochen folgenden Schritte. In einer Ausführungsform wird der aus der Subtraktion resultierende Wert als Fehlerwert bezeichnet.
  • In Schritt 808 wird jeder Fehlerwert quadriert. Die Quadrierungsoperation berücksichtigt zumindest teilweise Schichten, die keine Pixelwerte enthalten, wenn bestimmt wird, ob ein Pixelaustausch als Teil der Schritte 810 und 812 unten beibehalten werden sollte. Wenn in einer Ausführungsform eine Schicht keinen Pixelwert enthält, wäre der Fehlerwert -1 und das Quadrieren dieses Werts zählt zu der in Schritt 810 durchgeführten Summenoperation.
  • In Schritt 810 werden die quadrierten Fehlerwerte summiert, um einen Gesamtfehlerwert für die Anpassung der Schichtung zu erzeugen, die an der Textur durchgeführt wird, wenn sie sich auf ein Pixel bezieht. In einer Ausführungsform ist die Summe der quadrierten Fehlerwerte der Häufigkeit zugeordnet, mit der eine Schicht mehr als einen Pixelwert oder überhaupt keinen Pixelwert enthielt.
  • In Schritt 812 wird der Gesamtfehlerwert für eine Schichtung in Bezug auf ein Pixel mit dem Gesamtfehlerwert für eine Schichtung vor einem Pixelaustausch verglichen. In einer Ausführungsform hat sich die Schichtung verschlechtert, wenn der Gesamtfehlerwert nach einem Pixelaustausch zugenommen hat, und der Pixelaustausch wird zurückgewiesen. Wenn der Gesamtfehlerwert nach einem Pixeltausch abgenommen hat, hat sich die Schichtung verbessert (z. B. geändert). Wenn der Gesamtfehlerwert nach einem Pixelaustausch gleich bleibt, hat sich die Schichtung weder verbessert noch verschlechtert, und der Austausch kann akzeptiert werden, um den Rechenschritt oder die Rechenschritte zum Umkehren eines Pixelaustauschs zu vermeiden.
  • In den folgenden Diskussionen, die in Verbindung mit 9A und die folgenden Figuren können auf vektorale räumlich-zeitliche Masken für blaues Rauschen wie hierin offenbart und allgemeiner auf andere Arten von räumlich-zeitlichen Masken für blaues Rauschen angewendet werden, einschließlich skalarer räumlich-zeitlicher blauer Masken für blaues Rauschen, die zumindest teilweise erzeugt werden, durch einen modifizierten Void- und Cluster-Algorithmus.
  • 9A veranschaulicht ein Beispiel eines Prozesses 900 für ein Framework zum Generieren von Masken für blaues Rauschen, die optimal zur Verwendung über Raum und Zeit sind, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird ein Teil oder der gesamte Prozess 900 (oder andere hier beschriebene Prozesse, einschließlich derer, die in Verbindung mit dem BNDS-Algorithmus, dem Importance Sampling, den Gittern und der Schichtung oder Variationen und/oder Kombinationen davon erörtert werden) unter der Kontrolle eines oder mehrerer Rechensysteme (z. B. Rechenvorrichtungen) durchgeführt, die mit computerausführbaren Befehlen konfiguriert sind und als Code (z. B. computerausführbare Befehle, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen, Compute Unified Device Architecture (CUDA)-Code) implementiert sind, die gemeinsam auf einem oder mehreren Prozessoren ausgeführt werden, und zwar durch Hardware, Software oder Kombinationen davon. In mindestens einer Ausführungsform ist Code auf einem computerlesbaren Speichermedium in Form eines Computerprogramms, das eine Vielzahl von computerlesbaren Anweisungen umfasst, die durch einen oder mehrere Prozessoren ausgeführt werden können, gespeichert. Ein computerlesbares Speichermedium ist in mindestens einer Ausführungsform ein nichttransitorisches computerlesbares Medium. In mindestens einer Ausführungsform werden zumindest einige computerlesbare Anweisungen, die zur Durchführung des Verfahrens 900 verwendet werden können, nicht nur unter Verwendung von flüchtigen Signalen (z. B. einer sich ausbreitenden transienten elektrischen oder elektromagnetischen Übertragung) gespeichert.
  • In mindestens einer Ausführungsform weist ein nicht flüchtiges computerlesbares Medium nicht notwendigerweise nicht flüchtige Datenspeicherschaltungen (z. B. Puffer, Caches und Warteschlangen) innerhalb von Transceivern für flüchtige Signale auf. In mindestens einer Ausführungsform wird das Verfahren 900 zumindest teilweise auf einem Computersystem ausgeführt, wie es an anderer Stelle in dieser Offenbarung beschrieben ist. In mindestens einer Ausführungsform wird der Prozess 900 von einer oder mehreren Schaltungen durchgeführt, um die Bewegung eines oder mehrerer Pixel in einem ersten Bereich eines Bilds zumindest teilweise basierend auf der Bewegung eines oder mehrerer Pixel in einem zweiten Bereich des Bilds zu berechnen Bild, das die erste Region überlappt.
  • In mindestens einer Ausführungsform umfasst ein System, das mindestens einen Teil des Prozesses 900 durchführt, ausführbaren Code zum Erzeugen von Masken für blaues Rauschen, die sowohl räumlich als auch zeitlich optimal sind (z. B. räumlich-zeitliche Maske für blaues Rauschen). Eine räumlich-zeitliche blaue Maske für blaues Rauschen kann als ein Satz von N Textur mit blauem Rauschen erzeugt werden, wobei jede Textur einzeln gutes blaues Rauschen hat (z. B. große Mengen an höheren Frequenzen und geringe Mengen an niedrigeren Frequenzen enthält) und jedes Pixel einzeln auch blaues Rauschen im Laufe der Zeit. Dies kann die gewünschten Kompromissqualitäten weder auf der Raumachse noch auf der Zeitachse liefern. In einer Ausführungsform werden ein oder mehrere Bilder 902 von einer Rechenvorrichtung, einer Kamera oder ähnlichem erhalten. In einer Ausführungsform können die ein oder mehreren Bilder Teil einer Spielanwendung sein, bei der Echtzeit-Bildwiedergabealgorithmen verwendet werden, um Bilder anzuzeigen, während die Spielanwendung von einer Rechenvorrichtung ausgeführt wird. Die Rechenvorrichtung kann eine oder mehrere Grafikkarten umfassen, die Deep Learning verwenden, um Bilder mit niedrigerer Auflösung auf eine höhere Auflösung für die Anzeige auf Rechnerbildschirmen hochzuskalieren. In einer beispielhaften Ausführungsform wird eine räumlich-zeitliche Maske für blaues Rauschen mit einer Auflösung von 643 (64 × 64 × 64) erzeugt. Zusätzlich können auch eine 6433D-Maske mit blauem Rauschen und 64 unabhängige 2D-Masken mit blauem Rauschen der Größe 642 erstellt werden. In einer Ausführungsform wird auch eine räumlich-zeitliche Maske erzeugt, indem eine einzige 2D-Maske mit blauem Rauschen verwendet wird und ihr der goldene Schnitt in jedem Rahmen für 63 Rahmen hinzugefügt wird, um 64 verschiedene Masken zu erzeugen. In einer Ausführungsform führen ein oder mehrere Prozessoren der Rechenvorrichtung Befehle aus, um die raum-zeitlichen Masken für blaues Rauschen auf das eine oder die mehreren erhaltenen Bilder für die Echtzeit-Bildwiedergabe anzuwenden 904.
  • In einer Ausführungsform führen ein oder mehrere Rechenvorrichtungen einen Algorithmus aus, der eine Maske für blaues Rauschen M der Dimension [d0, d1,..., dn] erzeugt, der Algorithmus kann eine Speicherung pro Pixel erfordern, um eine boolesche Logik zu speichern, die angibt, ob das Pixel aktiviert ist (Energie an das Energiefeld abgibt), und einen ganzzahligen Index, der die Reihenfolge angibt, in der dieses Pixel aktiviert wurde. Die Reihenfolge, in der ein Pixel aktiviert wurde, kann die endgültige Ausgabefarbe für dieses Pixel definieren, wobei das erste zu aktivierende Pixel schwarz und das letzte zu aktivierende Pixel weiß ist.
  • In einigen Fällen können mehrere zweidimensionale Masken für blaues Rauschen für eine hohe Qualität in den räumlichen Domänen verwendet werden; es kann jedoch auch erforderlich sein, dass jedes einzelne Pixel im Laufe der Zeit eine qualitativ hochwertige Sampling-Sequenz aufweist. Als Ergebnis können in einer Ausführungsform ein oder mehrere Rechenvorrichtungen einen oder mehrere Algorithmen ausführen, um eine dreidimensionale Maske für blaues Rauschen zu erzeugen. In einer Ausführungsform kann der BNDS-Algorithmus so umformuliert werden, dass er von einer neuartigen Energiefunktion angetrieben wird, wie in Gleichung 1 oben gezeigt. In einer Ausführungsform wird diese Formulierung, anstatt sie in zwei Dimensionen auszuführen, in drei Dimensionen ausgeführt, und die Energiefunktion wird auf zwei Arten eingeschränkt. Die Energie kann ungleich Null sein, wenn sich die zwei Pixel in der Energiefunktion in derselben zweidimensionalen Schicht befinden oder wenn die zwei Pixel dieselben (x,y)-Koordinaten haben. Die erste Bedingung stellt sicher, dass jede zweidimensionale Schicht blaue Rauscheigenschaften haben kann, und die zweite Bedingung garantiert, dass jedes Pixel über die Zeit blaue Rauscheigenschaften haben kann. Ohne die erste Bedingung wäre jedes Pixel blaues Rauschen auf der Zeitachse, aber unabhängig voneinander und über dem Raum weißes Rauschen. Ohne die zweite Bedingung wäre jeder z - Ebenen-Schnitt unabhängig und das Ergebnis wäre weißes Rauschen entlang der Zeitachse. Ohne die Einschränkung, dass eine dieser Bedingungen erfüllt sein muss, wäre das Ergebnis ein dreidimensionales blaues Rauschen, das weder auf der Raumnoch auf der Zeitachse (räumlich-zeitlich) gut verteilt ist, sondern stattdessen gut in einem 3D-Volumen verteilt ist. In einer Ausführungsform wird ein Pixel in der dreidimensionalen räumlich-zeitlichen Textur des blauen Rauschens wie folgt bezeichnet p = (pX,Y,pz) = (px,py,pz). 9B veranschaulicht ein Beispiel eines Prozesses 906 für ein Framework zum Erzeugen einer dreidimensionalen Maske zur Verwendung sowohl über Raum als auch über Zeit, wobei zwei Dimensionen dem Raum entsprechen (z. B. x- und y-Koordinaten) und eine Dimension der Zeit entspricht. Während eine dreidimensionale Maske erzeugt werden kann, kann auch eine N-dimensionale Maske erzeugt werden, wie in der Empfangsoperation 908 erläutert. In mindestens einer Ausführungsform ist der Prozess 906 in den Prozess 900 integriert. In mindestens einer Ausführungsform wird einiges oder alles des Prozesses 906 (oder ein anderer hierin beschriebener Prozess oder Variationen und/oder Kombinationen davon) unter der Steuerung von einem oder mehreren Rechnersystemen durchgeführt, die mit ausführbaren Anweisungen konfiguriert sind, und als CUDA-Code (z. B. ausführbare Anweisungen, ein oder mehrere Rechnerprogramme oder eine oder mehrere Anwendungen), der zusammen auf einem oder mehreren Prozessoren ausgeführt wird, durch Hardware, Software oder Kombinationen davon implementiert. In mindestens einer Ausführungsform umfasst ein System einen Speicher, der Anweisungen speichert, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, das System veranlassen, Anweisungen zum Ausführen des Prozesses 906 auszuführen. In mindestens einer Ausführungsform ist Code auf einem computerlesbaren Speichermedium in Form eines Computerprogramms, das eine Vielzahl von computerlesbaren Anweisungen umfasst, die durch einen oder mehrere Prozessoren ausgeführt werden können, gespeichert. Ein computerlesbares Speichermedium ist in mindestens einer Ausführungsform ein nichttransitorisches computerlesbares Medium. In mindestens einer Ausführungsform werden zumindest einige computerlesbare Anweisungen, die zur Durchführung des Verfahrens 906 verwendet werden können, nicht nur unter Verwendung von flüchtigen Signalen (z. B. einer sich ausbreitenden transienten elektrischen oder elektromagnetischen Übertragung) gespeichert. In mindestens einer Ausführungsform weist ein nicht flüchtiges computerlesbares Medium nicht notwendigerweise nicht flüchtige Datenspeicherschaltungen (z. B. Puffer, Caches und Warteschlangen) innerhalb von Transceivern für flüchtige Signale auf. In mindestens einer Ausführungsform wird das Verfahren 906 zumindest teilweise auf einem Computersystem ausgeführt, wie es an anderer Stelle in dieser Offenbarung beschrieben ist. In mindestens einer Ausführungsform beginnt der Prozess 906 mit der Empfangsoperation 908 und fährt mit der Berechnung der Operation 910 fort.
  • Bei der Empfangsoperation 908 empfängt ein System oder eine Rechenvorrichtung Pixeldaten mit drei Dimensionen, die einem oder mehreren Bildern entsprechen. In einer Ausführungsform empfängt das System oder die Rechenvorrichtung die Pixeldaten basierend auf dem Sample eines oder mehrerer Bilder aus dem Erhalten des einen oder der mehreren Bilder in Schritt 902 aus dem Prozess 900. In einer Ausführungsform empfängt das System oder die Rechenvorrichtung die Pixeldaten von einer anderen Vorrichtung oder einem anderen Prozess (z. B. von einer Anwendung, die auf einer anderen Vorrichtung läuft). Das Empfangen von Pixeldaten kann das Empfangen von N Dimensionen von Daten für die Pixel beinhalten. Beispielsweise kann das Empfangen von Pixeldaten das Empfangen von räumlichen Pixeldaten (z. B. x- und y-Koordinaten) und Zeitdaten umfassen, wobei die räumlichen Daten zwei Dimensionen entsprechen und die Zeitdaten einer Zeitdimension für jedes Pixel entsprechen.
  • Bei der Rechenoperation 910 berechnet ein System oder eine Rechenvorrichtung, die den Prozess 906 durchführt, einen Energiewert für einige Pixel des einen oder der mehreren Bilder, die in der Empfangsoperation 908 empfangen werden. In mindestens einer Ausführungsform kann ein Energiewert für ein Pixel gemäß Gleichung 1 berechnet werden. In mindestens einer Ausführungsform entspricht ein Energiewert einem Intensitätswert, wobei ein Intensitätswert die Intensität eines Pixels angibt, z. B. wie stark ein Pixel im Vergleich zu anderen Pixeln hervorsticht (z. B. wenn es aktiviert ist). Wie in Gleichung 1 gezeigt, basiert der Energiewert auf Koordinaten der mindestens einigen Pixel (z. B. Pixel p und q), einem Abstand zwischen den mindestens einigen Pixeln (z. B. Pixel p und q), einem Energieabfall Parameter und einen Gaußschen Raum. Beim Bestimmen eines Abstands zwischen den mindestens einigen Pixeln kann ein Abstand zwischen einem Pixelpaar verwendet werden. In einer Ausführungsform können beim Bestimmen eines Abstands zwischen den mindestens einigen Pixeln mehrere Pixelpaare bestimmt werden (z. B. Pixel p und q, wobei q irgendein benachbartes Pixel für p sein kann). Beim Bestimmen eines Energiewerts für ein Pixel kann ein Abstand zwischen Pixeln toroidal berechnet werden. In einer Ausführungsform wird für jedes Pixel ein Energiewert berechnet. In einer Ausführungsform berechnet ein System oder eine Rechenvorrichtung einen Energiewert für einige der Pixel basierend auf dem Bestimmen der relevanten Verarbeitungsabschnitte für ein Bild.
  • Bei einer modifizierten Gleichung 1 gibt es im Allgemeinen zwei Einschränkungen, um einen Energiewert zu bestimmen, z. B. kann der Energiewert ungleich Null sein, wenn sich die zwei Pixel in der Energiefunktion in derselben zweidimensionalen Schicht befinden oder wenn die zwei Pixel dasselbe haben (x,y)-Koordinaten. Die erste Bedingung stellt sicher, dass jede zweidimensionale Schicht blaue Rauscheigenschaften haben kann, und die zweite Bedingung garantiert, dass jedes Pixel über die Zeit blaue Rauscheigenschaften haben kann. Wenn eine berechnete Pixelenergie diese beiden Einschränkungen nicht erfüllt, kann das System oder die Rechenvorrichtung den Energiewert auf null setzen. Beispielsweise kann das System oder die Rechenvorrichtung den Energiewert eines Pixels in mindestens einigen Pixeln auf einen Nullwert setzen, wenn sich das Pixel und ein anderes Pixel nicht in derselben zweidimensionalen Schicht befinden oder keine identischen Koordinaten (z.B. verschiedene zeitliche Schnitte).
  • Um eine dreidimensionale Maske zu erzeugen, erzeugt ein System oder eine Rechenvorrichtung in der Maskenoperation 912 die Maske basierend auf den berechneten Energiewerten aus der Rechenoperation 910. Das Erzeugen der dreidimensionalen Maske kann Teil eines anderen digitalen Bildverarbeitungsalgorithmus sein, wie z. B. des BNDS-Algorithmus, Void- und Cluster-Algorithmus, Dithering oder Fehlerdiffusion, wobei Bildverarbeitungsalgorithmen eine Energiefunktion und entsprechende Energiewerte der Pixeldaten verwenden in der Berechnungsoperation 910 bestimmt. Da die Maskenoperation 912 Energie gemäß Gleichung 1 berücksichtigt, führt die erzeugte Maske in einer Ausführungsform zu einer Maske für blaues Rauschen, die optimale visuelle Ergebnisse für die menschliche Wahrnehmung liefert, z. B. als Teil eines Videospiels, Videos oder eines anderen digitalen Videoprozesses . Die dreidimensionale Maske kann als räumlich-zeitliche Maske mit blauem Rauschvektor betrachtet werden.
  • Bei der Bereitstellungsoperation 914 stellt ein System oder eine Rechenvorrichtung ein oder mehrere Ausgabebilder basierend auf dem Anwenden der dreidimensionalen Maske von der Maskenoperation 912 auf das eine oder die mehreren Bilder, eine Musterversion des einen oder der mehreren Bilder oder eine verarbeitete Version davon bereit das eine oder die mehreren Bilder. In einer Ausführungsform können die ein oder mehreren Ausgabebilder Teil einer Spielanwendung sein, bei der Echtzeit-Bildwiedergabealgorithmen verwendet werden, um Bilder anzuzeigen, während die Spielanwendung von einer Rechenvorrichtung ausgeführt wird. Beispielsweise kann das Rendern des Ausgabebilds Teil einer Bilderzeugungspipeline sein, die Raytracing oder Pathtracing umfasst. In einer Ausführungsform führen ein oder mehrere Prozessoren der Rechenvorrichtung Befehle aus, um die dreidimensionale Maske auf das eine oder die mehreren Bilder für die Bildwiedergabe in Echtzeit anzuwenden.
  • Der Prozess 906 kann mit anderen Bildverarbeitungstechniken integriert werden. In einer Ausführungsform kann der Prozess 906 in das Sample als Teil einer Verarbeitung von bewegten Bildern und zeitlichen Filterverfahren, wie z. B. zeitliches Anti-Aliasing (TAA) und Deep-Learning-Supersampling (DLSS), integriert werden. Als Teil von DLSS kann der Prozess 906 das Anwenden einer zeitlichen Bildhochskalierung auf das eine oder die mehreren Bilder umfassen, wobei die Hochskalierung auf einem neuronalen Netzwerk basiert, das eine Hochskalierung von einem Bild mit niedrigerer Auflösung ableitet. In mindestens einer Ausführungsform wird eine räumlich-zeitliche Maske vor, nach oder sowohl vor als auch nach der Bildverarbeitung in Bezug auf TAA und DLSS angewendet.
  • Der Prozess 906 kann auch in Dithering, stochastische Transparenz, Flächenlichtsampling, volumetrisches Rendering, Pfadverfolgung und/oder stochastische Alpha-Bildverarbeitungstechniken integriert werden. Außerdem können die Operationen des Prozesses 906 wiederholt werden (z. B. für mehrere Bilder) oder in einer anderen Reihenfolge als Teil eines anderen digitalen Bildverarbeitungsalgorithmus durchgeführt werden. Beispielsweise kann der Prozess 906 als Teil eines Sample-Algorithmus durchgeführt werden.
    In mindestens einer Ausführungsform können der Prozess 900 und der Prozessor 906 auf Video- oder Videospielinhalte angewendet werden. Ein Video oder Videospiel umfasst eine Folge von Bildern (z. B. Rahmen), die mit einer Frequenz (z. B. Rate des Rahmens) angezeigt werden können, wobei ein einzelnes Videoeinzelbild ein Bild ist. Außerdem bezieht sich ein Videorahmen auf Videoinformationen, wohingegen sich ein Audiorahmen auf Audioinformationen bezieht, und ein Videorahmen kann mit einem Audiorahmen synchronisiert oder separat von diesem verarbeitet werden.
  • 10 veranschaulicht beispielhafte Bilder, die blaue Masken für blaues Rauschen verwenden, die optimal für die Verwendung über Raum und Zeit sind, gemäß mindestens einer Ausführungsform; In einer Ausführungsform bieten Masken für blaues Rauschen Systemen eine Möglichkeit, Rauschen und Fehler zu verbergen. Dies ist nützlich beim Echtzeit-Rendering, wo die Rechenressourcen begrenzt sind, damit das Rauschen vollständig verschwindet, was die Motivation für das Entrauschen ist. Obwohl Maske für blaues Rauschen nicht weniger Rauschen und Fehler erzeugen als weißes Rauschen, arrangieren sie es auf eine Weise, die visuell ansprechender, schwieriger zu bemerken und auch einfacher zu entrauschen ist. Beispielsweise kann eine dreidimensionale blaue Vektorrauschmaske roten, grünen und blauen (RGB) Komponenten eines Pixels entsprechen, und die Maske kann auf ein Bild angewendet werden, um ein Ausgabebild zu erzeugen, das blaues Rauschen aufweist. Es gibt mehrere Verwendungen von blauem Rauschen sowohl bei der Rasterung als auch beim Raytracing. Wie in 10 oben werden blaues Rauschen und weißes Rauschen verwendet, um ein Graustufenbild in Schwarzweiß zu punktieren. Das obere blaue Rauschen ist viel weniger verrauscht und sieht viel mehr wie das Quellbild aus, obwohl es die gleiche Fehlermenge wie das darunter liegende Bild mit weißem Rauschen aufweist. Unten werden die beiden Geräusche verwendet, um ein Farbbild zu dithern, bevor es auf ein Bit pro Farbkanal quantisiert wird. Beide Bilder können 8 Farben enthalten: Rot, Grün, Blau, Gelb, Cyan, Lila, Schwarz und Weiß, und haben die gleiche Fehlerquote wie das Quellbild, aber die Version mit blauem Rauschen oben hat eine bessere Bildqualität.
  • Der Stippling-Fall kann beim Raytracing und beim Aufnehmen von weniger als einem Strahl pro Pixel offensichtlich sein. Die schwarzen Punkte könnten als Pixel gesehen werden, wenn sie ausgewählt werden, um Strahlen zu schießen, und die Auswahl von weißem oder blauem Rauschen würde in diesem 3D-Rendering die gleichen Ergebnisse liefern. Der Dithering-Fall tritt auf, wenn Daten in Puffern codiert werden. Die Möglichkeit, ein einzelnes Bit pro Farbkanal anstelle der üblichen 8 Bits pro Farbkanal zu verwenden, bedeutet, dass 3 Bits für eine Farbe anstelle von 24 verwendet werden, was bedeutet, dass die Daten mit nur 12 % der vorherigen Anzahl von Bits dargestellt werden könnten.
  • 11 veranschaulicht vergleichende Frequenzergebnisse, die mit Hilfe der Fourier-Analyse für die drei oben in 3 genannten Arten von Masken für blaues Rauschen erzeugt wurden, gemäß mindestens einer Ausführungsform; Das heißt, diskrete Fourier-Transformationen (DFTs) der 2D-Projektionen verschiedener Masken mit blauem Rauschen sind in gezeigt. 4. Die Vergleichsfrequenzergebnisse können unter Verwendung des Prozesses 100 (siehe 1A) und/oder des Prozesses 106 (siehe 1B) erzeugt werden. In einer Ausführungsform hat eine räumlich-zeitliche Maske für blaues Rauschen ein blaues Rauschen über den Raum, so dass sie bessere Bildergebnisse als weißes Rauschen über die Achse (Zeit) liefern kann. In einer Ausführungsform werden die DFTs gemittelt, um erwartete Frequenzspektren zu zeigen, mit Ausnahme des animierten blauen Rauschens im Goldenen Schnitt, das zwei Arten hervorhebt, wie es räumliche Frequenzen bei bestimmten Framenummern schädigt. In einer Ausführungsform ist es wünschenswert, blaue Rauscheigenschaften in jedem räumlichen 2D-Schnitt zu erhalten, um eine verbesserte Rauschsequenz als weiße Rauschsequenz entlang der Zeitachse bereitzustellen. Wie in 4 dargestellt, bietet die Verwendung einer räumlich-zeitlichen Maske für blaues Rauschen, wie hier beschrieben, diese beiden Merkmale gleichzeitig, indem 2D-Merkmale für blaues Rauschen auf der X-Y-Ebene vorhanden sind und Merkmale für blaues Rauschen auf der Z-Achse hinzugefügt werden.
  • Während in einer Ausführungsform DFTs angeben, dass die Verwendung einer räumlich-zeitlichen Maske für blaues Rauschen, wie hierin beschrieben, sowohl räumlich als auch zeitlich blau ist, werden die Konvergenzgeschwindigkeiten von blauem Rauschen über die Zeit im Vergleich zu anderen alternativen Verfahren zum Animieren von blauem Rauschen erhöht (dies ist in gezeigt mehr Details in 5). Das Problem der Integration über die Zeit entspricht der Integration mehrerer Sample-Werte innerhalb desselben Rahmen, sodass die Lösung in einem Bereich der Lösung in dem anderen entspricht. Die zeitliche Integration verwendet häufig einen undichten Integrator anstelle der Monte-Carlo-Integration.
  • Wie in FIG. In 11 zeigen die beiden rechten Spalten auch, dass, wenn räumlich-zeitliches blaues Rauschen auf der Zeitachse versetzt wird, es die gleichen Konvergenzeigenschaften haben kann und tatsächlich fortschreitend ist, beginnend bei jedem Index, während es auch toroidal kontinuierlich ist. Diese ringförmige Kontinuität/Fortschrittlichkeit der Zeitachse kann eine leistungsfähige Eigenschaft zur Verwendung in zeitlichen Anti-Aliasing(TAA)-artigen zeitlichen Integrations- und Filteralgorithmen sein. In diesen Algorithmen integriert jedes Pixel nach und nach in jedem Rahmen einen Integranden, aber wenn ein einzelnes Pixel der Meinung ist, dass seine Historie aufgrund von Okklusionsänderungen oder ähnlichem nicht mehr gültig ist, werden Pixel ihre Historie effektiv verwerfen und die Integration von vorne beginnen.
  • Die Verwendung animierter Masken für blaues Rauschen zur Steuerung der Integration für diese Pixel bedeutet, dass eine globale Sequenz alle Pixel steuert. Die meisten progressiven Sequenzen geben nur eine progressive Sequenz beginnend bei Index 0 (eine Ausnahme davon ist eine Sobol-Sequenz, die für alle Abschnitte der Potenz von 2 progressiv ist). Dies ist problematisch, da bei einer globalen Sequenz, die das Sampling für einzelne Pixel antreibt, die ihre Vorgeschichte zu beliebigen Zeitpunkten wegwirft, diese Pixel an beliebigen Stellen in der Sample-Sequenz beginnend abgetastet werden.
  • Mit der toroidalen Kontinuität/Progressivität von räumlich-zeitlichem blauem Rauschen auf der Zeitachse kann jedes Pixel den Vorteil erhalten, am Anfang einer progressiven Sequenz zu beginnen, nachdem die Geschichte bei einer beliebigen Bildnummer abgelehnt wurde, ohne den Overhead, einen Index pro verfolgen zu müssen Pixel, um dies zu ermöglichen. Darüber hinaus ist die Zurückweisung der Geschichte im Allgemeinen kein diskretes Ereignis, sondern eine kontinuierliche Operation, wie z. B. das Klemmen der Geschichtedaten auf ein Minimum und ein Maximum von Farben, die in der lokalen Nachbarschaft des neu gerenderten Pixelwerts zu sehen sind. In einigen Fällen wird ein Stichprobenindex zurückgesetzt und in anderen Fällen nicht. Trotzdem bedeutet eine Sequenz, die von jedem Index aus progressiv ist, dass unabhängig davon, ob ein Pixel seinen Verlauf abgelehnt hat, das Nehmen des nächsten Samples eine gute Sache ist, was bedeutet, dass es auch diesen Fall der Ablehnung des kontinuierlichen Verlaufs behandelt.
  • 4D-Maske für blaues Rauschen
  • In einer Ausführungsform sind zwei blaue 4D-Maske für blaues Rauschen wie folgt konfiguriert: 2D × 1D × 1D und 2D × 2D, wobei beide 64 × 64 × 16 × 16 groß sind. In einer Ausführungsform ist die Frequenzanalyse in 13 zu sehen, die das gewünschte Frequenzverhalten für jedes Achsenpaar in 2D-DFTs zeigt. In einer Ausführungsform zeigen beide Masken blaues 2D-Rauschen auf der X-Y-Ebene, sind aber unter allen anderen Projektionen unterschiedlich. Die 2D×1D×1D-Maske für blaues Rauschen kann blaues 1 D-Rauschen auf den Z- und W-Achsen unter allen Projektionen zeigen, einschließlich der Z-W-Ebene, wo sie beide vorhanden sind und in einem Kreuzmuster angezeigt werden. Das blaue 2Dx2D-Rauschen hingegen zeigt weißes Rauschen für alle anderen Projektionen mit Ausnahme der Z-W-Ebene, wo es blaues 2D-Rauschen zeigt.
  • Aus der Beobachtung heraus ist die Generierungszeit von Masken für blaues Rauschen eine Funktion der Gesamtpixelzahl, ohne Rücksicht darauf, wie diese Pixel zwischen den Dimensionen aufgeteilt sind, wie in 16 gezeigt, wobei n die Anzahl der Pixel ist. Das Verdoppeln der Anzahl von Pixeln in einer Maske für blaues Rauschen vervierfacht ungefähr die Zeit, die benötigt wird, um diese Maske zu erzeugen. Masken für blaues Rauschen können als Einkanal-8-Bit-Texturen gespeichert werden. Die folgende Tabelle zeigt Beispiele für einige Texturgrößen und ihre Größe in Bytes. Aufgrund der guten Kachelung auf jeder Achse können kleinere Texturen wie 64 × 64 × 16 (64 KB) für raumzeitliches blaues Rauschen und 64 × 64 × 16 × 16 (1 MB) für die Bildwiedergabe ausreichend sein. Die tatsächlichen Größen, die für räumlich-zeitliches blaues Rauschen verwendet werden, und die 4D-Versionen sind mit einem Sternchen (*) und fettgedrucktem gekennzeichnet.
    Maße Größe
    64×64 4KB
    32×32×16 16KB*
    32×32×32 32KB
    64×64×16 64KB
    256×256 64KB
    64×64×64 256KB
    64×6416×16 1MB*
    64×64×64×64 16MB
    256×256×256×256 4GB
  • In einer Ausführungsform kann der Algorithmus zum Erzeugen einer räumlich-zeitlichen Maske für blaues Rauschen konfiguriert sein, um unterschiedliche Dimensionen pro Achse (siehe 13) sowie unterschiedliche Energie-Sigmas (siehe 15) zu spezifizieren. Auch wenn alle Achsen toroidal kontinuierlich sind, ist dies ein Merkmal, das pro Achse gewählt werden kann, wenn dies nicht erwünscht ist, indem die Abstände auf dieser Achse stattdessen nicht toroidal berechnet werden.
  • Bei Verwendung von blauen Masken für blaues Rauschen können mehrere unabhängige Masken erforderlich sein. Wenn sie beispielsweise zum Dithern eines diffusen und eines spiegelnden Puffers verwendet werden, die später durch Addition kombiniert wurden, darf dieselbe Maske für blaues Rauschen nicht wiederholt für beide Puffer verwendet werden, da dies den Unterschied zwischen Pixeln erhöhen würde, wenn sie zusammenaddiert würden, nachdem sie verwendet worden wären Zittermuster auf jedem Puffer. In einigen Fällen kann ein System zwei unabhängige Masken erzeugen und laden, aber das kann mehr Speicher als nötig beanspruchen, insbesondere wenn eine unabhängige Maske für blaues Rauschen für jeden unterschiedlichen Farbpuffer in einer Rendering-Pipeline benötigt wird. Diese Zahl kann sogar dynamisch oder unbegrenzt sein, was noch problematischer wäre.
  • Ein alternativer Weg, ungefähr unabhängige blaue Rauschquellen zu erhalten, besteht darin, zu versetzen, wo eine Maske für blaues Rauschen für jede gewünschte unabhängige blaue Rauschquelle gelesen wird. 14 veranschaulicht eine Autokorrelation mit Masken für blaues Rauschen und zeigt, dass kleine Offset-Lesevorgänge in einer Textur mit blauem Rauschen zu einer Korrelation oder Antikorrelation führen können, dass jedoch größere Offsets zu dekorrelierten Werten führen. Der Grund dafür ist, dass blaues Rauschen über kleine Entfernungen korreliert, aber über große Entfernungen dekorreliert ist, wie die Autokorrelation zeigt.
  • Um dies auf N verschiedene unabhängige Datenquellen zu verallgemeinern, können N Punkte auf der Textur benötigt werden, die nahezu maximal voneinander entfernt sind. Mit anderen Worten, diese Punkte sollten eine geringe Diskrepanz aufweisen. Wo die Sterndiskrepanz nicht toroidal gemessen wird, kann diese Diskrepanz toroidal gemessen werden. Wenn im Voraus nicht bekannt ist, wie viele unabhängige Datenquellen benötigt werden, kann eine progressive, ringförmig niedrige Diskrepanzsequenz eine beliebige Anzahl von Punkten mit dieser Eigenschaft liefern.
  • Da die Berechnung höherdimensionaler Masken für blaues Rauschen länger dauert und mehr Speicherplatz benötigt wird, kann ein System eine N-dimensionale Maske zunächst näherungsweise ermitteln N - 1, indem es mit einer dimensionalen Maske beginnt, den Wert für die ersten Achsen N - 1 abliest und dann den letzten Dimensionsindex mit dem Goldenen Schnitt multipliziert, ihn zu einem Maskenwert addiert und ihn mit Modulus zwischen 0 und 1 hält. N ( a 0 , a 1 , , a n ) = ( N ( a 0 , a 1 , , a n 1 ) + ϕ a n 1 ) Mod1
    Figure DE102022113807A1_0004
  • Dies wurde gezeigt, wo räumlich-zeitliches blaues Rauschen mit 2D-blauem Rauschen verglichen wurde, das durch den Goldenen Schnitt animiert wurde, und wurde auch gezeigt, wo 2D×1D×1D-blaues Rauschen mit räumlich-zeitlichem blauem Rauschen verglichen wurde, das den Goldenen Schnitt verwendete, um eine vierte Dimension hinzuzufügen. Während dies Frequenzen über den Raum hinweg beeinträchtigen kann, zeigt es Konvergenz und kann sowohl die Erstellungszeit als auch die Speichernutzung verbessern. Während es andere irrationale Zahlen gibt, um andere Rang-1-Gitter zu bilden, die hier ebenfalls verwendet werden können, sind sie für das Sampling von geringerer Qualität, und diese Methode kann nur Gruppen von 1 D-Achsen hinzufügen.
  • In einer Ausführungsform werden höherdimensionale Gruppen niedrigerer Qualität hinzugefügt. Beispielsweise könnten Interleaved Gradient Noise oder der Z-Sampler verwendet werden, um eine 2D-Gruppe hinzuzufügen, da sie eine Möglichkeit darstellen, eine 2D-Ganzzahlkoordinate in einen Skalar umzuwandeln, der wünschenswerte Eigenschaften auf einer 2D-Ebene hat. Dieser Skalar könnte zu dem von der Maske für blaues Rauschen gelesenen Wert addiert werden, und der Modulus könnte wiederum verwendet werden, um ihn zwischen 0 und 1 zu bringen.
  • 12 veranschaulicht die Konvergenzraten für Beispielfunktionen, gemäß mindestens einer Ausführungsform; Das heißt, 12 veranschaulicht Konvergenzraten für Funktionen mit x ∈ [0,1] unter Verwendung der Zeitachse verschiedener Maskentypen, wobei sowohl Monte-Carlo- als auch undichte Integration gezeigt wird. Die Funktionen können für höherdimensionale Vektoren sein (z. B. 2D, 3D, 4D und dergleichen). In mindestens einer Ausführungsform zeigt geschichtetes Abtasten, dass bessere Konvergenzgeschwindigkeiten möglich sind, wenn nur die 1D-Zeitachse und nicht auch die 2D-Ebene des Bildschirmraums berücksichtigt wird. Die Offset-Diagramme in den beiden rechten Spalten zeigen, dass der Beginn der Integration bei einem anderen Index als 0 keinen Einfluss auf die Ergebnisse hat und dass das räumlich-zeitliche blaue Rauschen von jedem Index aus progressiv und auch dann kontinuierlich ist, wenn man das Ende der Sequenz erreicht und bei Index 0 neu beginnt. Die Van-Der-Corput-Basis 2 (VDC) hat diese Eigenschaft nicht, wie die unregelmäßige Genauigkeit bei einer geringen Anzahl von Stichproben zeigt.
  • 13 veranschaulicht DFTs der 2D-Projektionen von 4D-Masken für blaues Rauschen, die 64 × 64 × 16 × 16 sind, gemäß mindestens einer Ausführungsform. Aus Gründen der Klarheit sind in 13 sind gemittelt, um erwartete Frequenzspektren zu zeigen. In mindestens einer Ausführungsform können die DFTs unter Verwendung eines Teils des Prozesses 900 (siehe 9A) oder des Prozesses 906 (siehe 9B) erzeugt werden.
  • 14 veranschaulicht Bilder zur Darstellung der Autokorrelation von Texturen mit blauem Rauschen, gemäß mindestens einer Ausführungsform; In einer Ausführungsform können Nachbarn sehr unterschiedliche Werte haben, was eine Welligkeit der Korrelation (rot/weiß) und Antikorrelation (blau/schwarz) in der Mitte für kleine Offsets verursacht, aber schnell auf dekorrelierte Werte (weiß/grau) abfällt.
  • 15 veranschaulicht 2D×1D raum-zeitliche Masken für blaues Rauschen mit verschiedenen Sigmas pro Achse, gemäß mindestens einer Ausführungsform;
  • 16 veranschaulicht einen Graphen, bei dem die Erzeugungszeit eine Funktion der Anzahl von Pixeln in der Maske für blaues Rauschen ist und ungefähr einer y = x2 -Kurve folgt, gemäß mindestens einer Ausführungsform. Eine Verdoppelung der Pixelanzahl kann die Verarbeitungszeit ungefähr vervierfachen.
  • In einer Ausführungsform ist stochastische Transparenz der Prozess der stochastischen Auswahl, ob eine Probe genommen oder ignoriert werden soll, basierend auf dem Transparenzgrad eines Materials. Ausgefeilte Algorithmen wurden durch alternative Methoden entwickelt, aber die Kernidee des stochastischen Akzeptierens oder Zurückweisens eines Pixels kann dieselbe bleiben. In einer Ausführungsform verwendet die hierin beschriebene räumlich-zeitliche Maske für blaues Rauschen sehr niedrige Anzahlen von Samples und niedrige Rechenkosten (ein einzelnes Lesen und Vergleichen der Textur), wodurch ein verteilter Fehler für blaues Rauschen im Bildschirmraum entsteht, wie dies bei 2D-blauem Rauschen der Fall ist, aber schneller als andere konvergiert Methoden zur Verwendung von blauem Rauschen in 2D. Stochastische Transparenz ist nützlich in Situationen wie z. B. verzögerter Beleuchtung, in denen anstelle des schattierten Ergebnisses selbst Informationen darüber gespeichert werden, wie ein Pixel schattiert wird, und es ist unpraktisch, mehrere oder eine beliebige Anzahl von Ebenen zu speichern, um später die richtige Transparenz zu berechnen. Stochastische Transparenz ist auch im Zusammenhang mit der Pfadverfolgung nützlich, wo ein einzelnes Sample pro Strahlscheitel benötigt wird, und Sie nur besorgt sind, dass der durchschnittliche Pixelwert für Dinge wie Halbtransparenz korrekt ist, anstatt die Kosten für Berechnung und Speicher für die Berechnung von Halb aufzuwenden Transparenz für eine einzelne Probe. Stochastische Transparenz funktioniert, indem eine Zufallszahl ξ ∈ [0,1] generiert und diese mit der Deckkraft des Materials a α ∈ [0, 1] verglichen wird. Wenn ξ größer als α ist, wird das Sample verworfen. Wenn Zufallszahlen mit weißem Rauschen für ξ verwendet werden, stimmt der Prozentsatz der Pixel, die den Test überleben, mit α überein, wenn er unendlich oft durchgeführt wird, weist jedoch bei einer geringeren Anzahl von Samples sowohl räumlich als auch zeitlich eine große Varianz auf. In mindestens einer Ausführungsform wird eine Vektormaske (z. B. eine Maske für blaues Rauschen, die Vektoren handhaben kann) verwendet, um mehrere Tiefenebenen stochastischer Transparenz zu handhaben.
  • Die Verwendung von 2D-Masken mit blauem Rauschen führt stattdessen dazu, dass der Prozentsatz der überlebenden Pixel für eine geringere Anzahl von Sampling räumlich genauer ist, was auch dazu führt, dass die überlebenden Pixel randomisiert, aber ungefähr gleichmäßig beabstandet sind. Wie bereits erwähnt, verändern die Verfahren zum Animieren von blauem Rauschen im Laufe der Zeit entweder das blaue Rauschen im Raum oder werden im Laufe der Zeit zu weißem Rauschen, was zu einer schlechten Konvergenz führt, wenn entweder mehrere Samples pro Rahmen genommen oder mehrere Rahmen integriert werden. Die Verwendung von raum-zeitlichen Masken für blaues Rauschen wie hier beschrieben, bei denen jedes einzelne Bild ein gutes blaues Rauschen ist, aber jedes Pixel auch eine gute Samplingsequenz über die Zeit ist, bedeutet, dass einzelne Rahmen überlebende Pixel haben, die blaues Rauschen im Raum verteilen, aber auch, dass jeder Rahmen sehr unterschiedliche überlebende Pixel hat, was eine bessere Konvergenz über die Zeit oder über mehrere Samples innerhalb eines einzelnen Rahmens ermöglicht. Rendering-Vergleiche sind in 17 und Konvergenzraten sind in 18 dargestellt.
  • 17 veranschaulicht stochastische Transparenz unter Verwendung verschiedener Arten von Rauschen gemäß mindestens einer Ausführungsform. In einer Ausführungsform veranschaulicht 17 veranschaulicht ein Sample pro Pixel. Bei den oberen Bildern handelt es sich um ein Rohbild, während die unteren Bilder mit einem Sigma von 2 gaußförmig verwischt wurden. In einer Ausführungsform schneidet das räumlich-zeitliche blaue Rauschen räumlich genauso gut ab wie das blaue 2D-Rauschen und besser als das animierte blaue Rauschen mit Goldenem Schnitt.
  • Dithering
  • Beim Dithering wird den Daten vor der Quantisierung ein wenig Rauschen hinzugefügt, um anstelle von Quantisierungsartefakten ein verrauschtes Ergebnis zu erhalten. Auf diese Weise lassen sich Banding-Artefakte verbergen, die andernfalls durch eine Verringerung der Bittiefe entstehen würden, so dass weniger Speicherplatz verwendet werden kann, ohne die Bildqualität zu beeinträchtigen. Dithering bewirkt, dass Pixel beim Quantisieren stochastisch auf- oder abgerundet werden, wobei die Wahrscheinlichkeit des Rundens zu einem Quantisierungspegel darauf basiert, wie weit der Wert von diesem Pegel entfernt ist. Wenn Sie einen kontinuierlichen Wert x ∈ [0,1] in n verschiedene Werte quantisieren, um den quantisierten Wert y ∈ ℤ zu erhalten, kann eine Zufallszahl ξ ∈ [0,1) in der folgenden Gleichung verwendet werden: y = x ( n 1 ) + ξ
    Figure DE102022113807A1_0005
  • In mindestens einer Ausführungsform stellt eine Vektormaske (z. B. Textur mit blauem Rauschen, die mit Vektoren umgehen kann) eine Zufallszahl pro Farbkanal bereit.
  • Wenn weißes Rauschen zu Dithering verwendet wird, ergibt das Ergebnis ein weißes Rauschmuster. Wenn stattdessen blaues Rauschen verwendet wird, ist das Ergebnis visuell angenehmer für einen Menschen oder auf einer Anzeige, während es auch räumlich korrektere Mittelwerte über kleine Bereiche von Pixeln hat. Wenn räumlich-zeitliches blaues Rauschen für das Dithering verwendet wird, kann das Ergebnis ein blaues Rauschen über den Raum, aber auch über die Zeit sein, wobei jedes Pixel im Laufe der Zeit einen korrekteren Durchschnitt über kleinere Samples haben kann, wenn es animiert wird. Rendering-Vergleiche sind in 11 und Konvergenzraten sind in 20 dargestellt.
  • 19 veranschaulicht ein Dithering vor dem Quantisieren auf 1 Bit pro Farbkanal unter Verwendung verschiedener Arten von Rauschen gemäß mindestens einer Ausführungsform. Bei den oberen Bildern handelt es sich um ein Rohbild, die unteren Bilder wurden mit einem Sigma von 2 gaußförmig verwischt. Wie in 19 zu sehen ist, schneidet das räumlich-zeitliche blaue Rauschen räumlich genauso gut ab wie das blaue 2D-Rauschen und ist im Vergleich zum animierten blauen Rauschen mit Goldenem Schnitt besser.
  • 20 veranschaulicht einen Graphen der Konvergenzraten beim Dithering verschiedener Arten von Rauschen, gemäß mindestens einer Ausführungsform. In einer Ausführungsform konvergiert animiertes blaues Rauschen im Goldenen Schnitt schneller als räumlich-zeitliches blaues Rauschen, ändert aber Frequenzen räumlich.
  • Strahlenmarschierte teilnehmende Medien mit raum-zeitlichem blauem Rauschen
  • In einer Ausführungsform führen ein oder mehrere Rechenvorrichtungen einen Algorithmus aus, um heterogene teilnehmende Medien mit Einzelstreuung mit sehr geringen Anzahlen von Samples wiederzugeben. Dies ist eine andere Art von Algorithmus als stochastische Transparenz oder Dithering, da es zeigt, wie Masken für blaues Rauschen auf beliebige Rendering-Probleme angewendet werden können. Es gibt zwar sehr viel ausgefeiltere Algorithmen für das Rendering von teilnehmenden Medien, aber die hier beschriebene Technik ist gemäß einer Ausführungsform einfach, leistungsfähig, erzeugt gute Ergebnisse bei sehr niedrigen Anzahlen von Samples und funktioniert entweder mit Rasterisierung oder Raytracing. In einer Ausführungsform wird der Algorithmus ausgeführt, nachdem der primäre Treffer schattiert wurde und die Oberflächentiefe bekannt ist. Die Oberflächentiefe d kann die Länge des Liniensegments entlang des Kamerastrahls rsein, das integriert werden muss. In einer Ausführungsform wird dieses Liniensegment an n gleichmäßig beabstandeten Stellen abgetastet, wobei der Abstand zwischen jeder Sample d n
    Figure DE102022113807A1_0006
    Einheiten beträgt. Der Stanort ps einer Probe s ∈ Z[0, n - 1] wird dann berechnet als: p s = r s d n
    Figure DE102022113807A1_0007
  • An jedem Sample-Punkt ps wird ein Nebeldichtefeld F abgetastet, um eine Dichte fs zu erhalten. Es wird angenommen, dass dies die Dichte für eine ganze Schrittlänge der Distanz ist. ƒ s = F ( p s )
    Figure DE102022113807A1_0008
  • Eine Lichtsichtbarkeitsfunktion V wird auch bei ps ausgewertet, um einen Sichtbarkeitswert vs,i ∈ [0,1] für alle Lichter i ∈ I zu erhalten. Der Sichtbarkeitswert vs,i kann entweder ein binärer Wert sein, der ähnlich ist, wenn ein einzelner Strahl auf ein Licht geschossen wird, oder er kann ein kontinuierlicherer Wert sein, der dem Lesen einer Schattenkarte mit prozentual näherer Filterung oder der Aufnahme mehrerer Schattenstrahlen ähnelt Proben. v s , i = V ( p s , i )
    Figure DE102022113807A1_0009
  • Um die Farbe einer einzelnen Nebelprobe cs zu berechnen, werden die schattierten Nebelfarben cunbeleuchtet für Nebel im Schatten und cbeleuchtet,i für durch Licht i beleuchteten Nebel bestimmt. Die Nebelfarben können entweder berechnet oder bereitgestellt werden. Der Sichtbarkeitswert vs,i kann mit cbeleuchtet,i multipliziert werden, um den Beitrag dieses Lichts zu erhalten. Alle Beleuchtungsbeiträge werden summiert und cunbeleuchtet wird zu den Ergebnissen addiert, um die endgültige Farbe für den Nebel bei dieser Probe zu erhalten cs. c s = c u n b e l e u c h e t + i I v s i c b e l e u c h t e t , i
    Figure DE102022113807A1_0010
  • Um die Deckkraft os für ein Sample zu berechnen, kann die übliche Absorptionsformel nach dem Gesetz von Beer unter Verwendung der Dichte f und des Schrittabstands d verwendet werden. o s = e d ƒ
    Figure DE102022113807A1_0011
  • Beim Durchführen der Integration kann das kumulative Ergebnis r auf die schattierte Oberflächenfarbe p initialisiert werden und dann rückwärts von der Oberfläche zur Kamera marschieren, die Farbe und Deckkraft der Nebelprobe berechnen und die übliche Über-Alpha-Mischoperation auf die anwenden kumuliertes Ergebnis. r 0 = p
    Figure DE102022113807A1_0012
    r s = r s 1 ( 1 o s ) + c s o s
    Figure DE102022113807A1_0013
  • Das Ausführen des Algorithmus wie er ist mit niedrigen Werten von n Samples entlang des Liniensegments verursacht eine merkliche Streifenbildung. Ähnlich wie im Dithering-Fall können Zufallszahlen verwendet werden, um die Streifenbildung durch Rauschen zu ersetzen. In einer Ausführungsform wird ein Zufallswert ξ ∈ [0; 1) pro primärem Treffer-Sample (z. B. pro Pixel) verwendet, um die Position jedes Sample-Punktes ps zu versetzen. Beachten Sie, dass die Probenpositionen immer noch gleichmäßig beabstandet sind, sie sind nur in der Tiefe nach vorne oder hinten verschoben. p s = r ( s + ξ ) d n
    Figure DE102022113807A1_0014
  • Unter Verwendung von weißem Rauschen werden Ergebnisse für weißes Rauschen im Bildschirmbereich erhalten. Unter Verwendung von 2D-Blaurauschen wird das Fehlermuster verbessert. Unter Verwendung von räumlich-zeitlichem blauem Rauschen werden Fehlermuster des blauen Rauschens im Bildschirmraum erhalten, aber auch die Grße des Fehlers ist kleiner. Die gerenderten Ergebnisse sind in 21 und die Konvergenzdiagramme in 22 zu sehen.
  • 21 veranschaulicht Beispielausgänge, die unter Verwendung von Rauschen erzeugt wurden, um die Startpunkte des Strahlenmarsches für 4 Schritte des Strahlenmarsches pro Pixel nach dem Zufallsprinzip zu verschieben, gemäß mindestens einer Ausführungsform. Die oberen Bilder sind ein Rohbild, die unteren Bilder sind tiefenbewusste Gaußsche Bilder, die mit einem Sigma von 2 verschwommen sind.
  • 22 veranschaulicht einen Graphen von Konvergenzraten von Strahlmarschnebel mit verschiedenen Arten von Rauschen gemäß mindestens einer Ausführungsform. In einer Ausführungsform werden pro Pixel nur 4 Schritte des Strahlmarsches durchgeführt.
  • Teilnehmende Medien mit 2D×1D×1D Blauem Rauschen
  • In einer Ausführungsform können ein oder mehrere Rechenvorrichtungen einen Algorithmus ausführen, der eine 2D×1D×1D-Blaurauschmaske verwendet, wobei der vorherige Algorithmus eine 2D×1D-räumlich-zeitliche Maske für blaues Rauschen verwendet hat. Dieser Algorithmus kann verwendet werden, um anzuzeigen, wie höherdimensionale Masken für blaues Rauschen in Wiedergabealgorithmen verwendet werden können. Sowohl bei diesem Algorithmus als auch beim vorherigen Algorithmus besteht das Ziel darin, einzelne streuende teilnehmende Medien zu integrieren. Im vorherigen Algorithmus wurden entlang des Liniensegments regelmäßig beabstandete Samples genommen, und Rauschen wurde verwendet, um den Startpunkt dieser Samples zu versetzen, um Bandbildung gegen Rauschen einzutauschen. Bei diesem Algorithmus kann das Liniensegment in n gleichmäßig beabstandete Abschnitte aufgeteilt werden, aber anstatt nur einen einzigen zufälligen Versatz für die gesamte Sample-Sequenz zu verwenden, kann der Algorithmus einen zufälligen Versatz pro Sample lesen. Dann werden n Zufallswerte erhalten ξs ∈ [0, 1) und die Sampling-Position ps kann wie folgt berechnet werden: p s = r ( s + ξ s ) d n
    Figure DE102022113807A1_0015
  • Der Rest des Algorithmus bleibt gleich. Die gerenderten Ergebnisse sind in 23 und die Konvergenzdiagramme in 24 zu sehen. Diese Neuformulierung ändert sie von einer Strahlmarschtechnik zu einer geschichteten Sampling-Technik, und wenn man dies mit den räumlich-zeitlichen Konvergenzen des blauen Rauschens vergleicht, verbessert sie sich für die gleiche Anzahl von Samples.
  • 23 veranschaulicht die Verwendung von Rauschen, um 16 Samples des Liniensegments jedes Pixels durch teilnehmende Medien zu schichten, gemäß mindestens einer Ausführungsform; Bei den oberen Bildern handelt es sich um ein Rohbild, die unteren Bilder sind tiefenbewusst mit einem Sigma von 2 gaußförmig verwischt.
  • 24 veranschaulicht einen Graphen von Konvergenzraten von Strahlmarschnebel mit verschiedenen Arten von Rauschen gemäß mindestens einer Ausführungsform. In einer Ausführungsform werden pro Pixel nur 4 Schritte des Strahlmarsches durchgeführt.
  • Strahlenverfolgte Umgebungsverdeckung (Ambient Occlusion, AO)
  • In einer Ausführungsform ist strahlverfolgtes AO ein weiterer Algorithmus, der verwendet werden kann. In einer Ausführungsform verwendet AO 2D-Vektoren pro Pixel, um jede AO-Abtastung zu nehmen. Bei den hierin beschriebenen Techniken erzeugt ein Algorithmus blaue Masken für blaues Rauschen mit skalaren Werten pro Eintrag und nicht pro Vektor. In einer oder mehreren Ausführungsformen können mehrere unabhängige Ströme von Skalarwerten von einer einzigen Masken für blaues Rauschen abgeleitet werden, indem ungefähr maximal beabstandete Lese-Offsets pro Strom vorhanden sind. Somit kann in einem AO-Algorithmus mit Strahlverfolgung diese Erweiterung als ein unabhängiger räumlich-zeitlicher blauer Rauschdatenstrom pro Achse verwendet werden. Es gibt zwar andere, ausgefeiltere Raytracing- und gerasterte AO-Algorithmen, aber dieser Algorithmus ist für qualitativ hochwertige Ergebnisse mit einer geringen Anzahl von Abtastungen gedacht, wie z. B. 1 Raytracing-Abtastung pro Pixel (spp) - oder weniger, wenn er mit weniger als der vollen Auflösung ausgeführt wird.ln einer Ausführungsform läuft der Raytracing-AO-Algorithmus ab, nachdem der Primärstrahl den Ort p getroffen hat und die Oberflächennormale n bekannt ist. N zufällige 3D-Einheitsvektoren ξ_ί können erzeugt, zur Oberflächennormalen n addiert und normiert werden, um N kosinusgewichtete Halbkugel-Sampling v_i zu erhalten, wobei die Halbkugel zur Oberflächennormalen n orientiert ist. v i = n + ξ i n + ξ i
    Figure DE102022113807A1_0016
  • In einer Ausführungsform wird jedes v_i als eine Richtung verwendet, um einen Strahl von der Position p zu schießen, um eine Trefferentfernung d zu erhalten. Da AO ein lokales Abschattungsphänomen ist, kann die Trefferlänge auf ein szenenabhängiges Maximum von d_max begrenzt werden. Ein AO-Schattierungswert a_i für diesen Strahl kann als Prozentsatz davon berechnet werden, wie weit der Strahl im Vergleich zu der maximalen Entfernung zurückgelegt hat, da engere Treffer mehr Okklusion und somit Abschattung verursachen. Dies ermöglicht auch mehr Informationen pro Sample als ein binäres Treffer- oder Fehlschlagergebnis, was zu einem geringeren Rauschen führt. a i = d d M a x .
    Figure DE102022113807A1_0017
  • Die AO-Schattierungswerte a_i können dann gemittelt werden, um einen kombinierten AO-Schattierungswert von a zu ergeben, der als Abschattungsterm in Beleuchtungsgleichungen verwendet werden kann. a = 1 N i N a i
    Figure DE102022113807A1_0018
  • Wenn unabhängige Zufallszahlen verwendet werden, um jede Komponente von ξ_ί zu erzeugen, wird das Ergebnis ein weißer Rauschfehler sein. Bei Verwendung von blauem 2D-Rauschen wird das Rauschen räumlich aufgeräumt, und bei Verwendung von räumlich-zeitlichem blauem Rauschen gewinnen die AO-Daten im Laufe der Zeit wünschenswerte Sampling-Eigenschaften. Die gerenderten Ergebnisse sind in 25 und die Konvergenzdiagramme in 26 zu sehen.
  • Raumzeitliches blaues Rauschen in der Heitz-Belcour-Technik
  • In einer Ausführungsform neigen Masken für blaues Rauschen dazu, Vorteile zu zeigen, wenn sie in Algorithmen verwendet werden, die Skalare verwenden, wie gezeigt mit Stippling, Dithering und Ray-Marching teilnehmender Medien. Sie zeigen auch Vorteile, wenn sie in einfacheren Grafikalgorithmen verwendet werden, die Vektoren anstelle von Skalaren benötigen, wie z. B. Raytracing-AO, indem mehrere unabhängige Rauschströme für jede Achse verwendet werden. Bei früheren Verfahren tendieren Masken für blaues Rauschen dazu, auch nicht mehr zu funktionieren, wenn die Anzahl von Samples oder die Dimensionalität anwächst (z. B. Pfadverfolgung). Jedoch können in einigen Ausführungsformen hierin beschriebene Techniken als eine Erweiterung zu Algorithmen (z. B. Heitz & Belcour-Technik) zum Erzeugen von Masken für blaues Rauschen bei der Pfadverfolgung verwendet werden. Beispielsweise kann es bei der Technik von Heitz & Belcour einen Startwert pro Pixel geben, der durch beliebige gewünschte Mittel erzeugt wird, der verwendet wird, um das Ergebnis für jedes Pixel unter Verwendung beliebiger Algorithmen und gewünschter Sampling-Sequenzen wiederzugeben. Nachdem dieses Rendering abgeschlossen ist, kann die Technik von Heitz & Belcour den Bildschirm in kleine Abschnitte in der Größenordnung von 4x4 aufteilen und die Pixel in jedem Abschnitt vom dunkelsten zum hellsten sortieren. Darüber hinaus kann die Heitz & Belcour-Technik auch eine Textur mit blauem Rauschen, die über den Bildschirm gekachelt ist, in die gleichen kleinen Abschnitte aufteilen und sie ebenfalls sortieren. Diese beiden sortierten Listen werden als Zuordnung dafür verwendet, wie die für das Rendering des vorherigen Rahmen verwendeten Seeds ausgetauscht werden, sodass das Ergebnis beim erneuten Rendering näher an blauem Rauschen liegt. Die R2-Sequenz mit niedriger Diskrepanz kann verwendet werden, um die Lesevorgänge in diese Textur mit blauem Rauschen bei jedem Frame zu versetzen, so dass jeder Rahmen ungefähr unkorrelierte 2D-Blue-Noise-Werte vom letzten Rahmen aufweist. Dies ergibt blaues Rauschen im Raum, aber weißes Rauschen im Laufe der Zeit. Durch Integrieren der hierin beschriebenen Techniken kann die Technik von Heitz & Belcour dazu gebracht werden, räumlichzeitliche Ergebnisse für blaues Rauschen zu liefern, wodurch die Qualitäten von blauem Rauschen über den Raum hinweg beibehalten werden, während die wünschenswerten Abtasteigenschaften über die Zeit gewonnen werden. Die gerenderten Ergebnisse sind in 28 und die Konvergenzdiagramme in 30 dargestellt. Aus diesem Grund sollte praktisch jedes Zielfehlermuster erreichbar sein, wie z. B. der Wunsch, verschachteltes Gradientenrauschen zu erhalten, das besser für die Verwendung unter zeitlichem Anti-Aliasing geeignet ist.
  • 25 veranschaulicht die Verwendung zweier unabhängiger Rauschströme zum Erzeugen von x- und y-Komponenten für einen 2D-Vektor, der auf eine kosinusgewichtete Hemisphäre abgebildet ist, für eine einzelne Umgebungsverdeckung pro Pixel gemäß mindestens einer Ausführungsform; Bei den oberen Bildern handelt es sich um ein Rohbild, und die unteren Bilder wurden mit einer tiefenwirksamen Gaußschen Unschärfe mit einem Sigma von 2 versehen.
  • 26 veranschaulicht, wie sich die AO-Konvergenz auf verschiedene Arten von Rauschen bezieht, gemäß mindestens einer Ausführungsform;
  • 27 veranschaulicht ein oder mehrere Bilder der Verwendung einer 2D-Maske für blaues Rauschen, einer 3D-Maske für blaues Rauschen, einer räumlichzeitlichen Maske für blaues Rauschen und einer 2DGR-Maske für blaues Rauschen gemäß mindestens einer Ausführungsform; In einer Ausführungsform werden Bilder aus 27 zeigt ein gerendertes Ergebnis unter Verwendung von Monte-Carlo-Integration mit vier Samples pro Pixel.
  • 28 veranschaulicht Bilder unter Verwendung eines Sobol-Sequenz-Offsets gemäß mindestens einer Ausführungsform. In einer Ausführungsform gibt die um ein vec2 von jedem mg versetzte Sobol-Sequenz jeden Rahmen ein. In einer Ausführungsform sind die oberen Bilder ein Rohbild, die unteren Bilder sind tiefenbewusst mit einer Gaußschen Unschärfe mit einem Sigma von 2 versehen.
  • 29 veranschaulicht eine Heitz & Belcour-Technik, die verschachteltes Gradientenrauschen und ein stilisiertes Graustufenbild für Rauschmusterziele verwendet, gemäß mindestens einer Ausführungsform. Diese Bilder wurden mit Standard-Pfadverfolgungs-Rendering-Code gerendert, aber die Samen, die zum Randomisieren jedes Pixels verwendet wurden, wurden neu geordnet, um ein gerendertes Ergebnis wie die Zielbilder zu erhalten.
  • 30 veranschaulicht Graphen der Konvergenz in Monte-Carlo-Integration, Leaky-Integration und Leaky-Integration konvergiert gemäß mindestens einer Ausführungsform;
  • In einer Ausführungsform hat räumlich-zeitliches blaues Rauschen die Eigenschaft, Schwellenwerte auf einen gewissen Prozentsatz zu setzen, so dass der entsprechende Prozentsatz der Pixel überleben wird und die Pixel, die überleben, in einem Mustermuster des blauen Rauschens innerhalb der Beschränkungen der Dimension verteilt werden Gruppen. Genauer gesagt, wenn alle Pixel in einer räumlichzeitlichen 2Dx1D-Blue-Noise-Maske auf 10 % gesetzt werden, kann jeder 2D-XY-Schnitt der Maske ungefähr 10 % der überlebenden Pixel zeigen, und sie werden als blaues Rauschen verteilt (zufällig, aber ungefähr gleichmäßig verteilt). Wenn man außerdem jedes Pixel isoliert auf der 1 D-Z-Achse betrachtet, was ein 1D-Bild ergibt, werden auch dort ungefähr 10 % der Pixel überlebt haben, und sie werden auch als blaues Rauschen verteilt sein. Diese Eigenschaften können sich auf jede beliebige Dimensionalität und Gruppierung von Unterdimensionen erstrecken, mit der die Maske erzeugt wurde.
  • Ein beispielhafter Anwendungsfall dieser Eigenschaft könnte in einer Situation vorliegen, in der eine Wichtigkeitskarte für ein spärliches Raytracing in eine Szene eingefügt werden kann. Es kann eine ungefähre Anzahl von Strahlen definiert werden, die zum Ausschießen pro Frame benötigt werden, und diese pro Pixel zusammen mit einer Zufallszahl pro Pixel verwenden, um zu entscheiden, ob für ein Pixel ein Strahl pro Frame ausgeschossen werden soll oder nicht. Wenn Zufallszahlen verwendet werden, die im Raum und im Laufe der Zeit weiß sind, kommt es zu Verklumpungen und Lücken und somit zu einem ungleichmäßigen und redundanten Sampling sowohl im Raum als auch in der Zeit. Bei Verwendung eines Daumenkinos mit unabhängigen 2D-Textur mit blauem Rauschen verbessert sich das Ergebnis räumlich, aber es gibt immer noch redundantes Sampling im Laufe der Zeit. Bei Verwendung einer räumlichzeitlichen Masken für blaues Rauschen werden sowohl Zeit als auch Raum gleichmäßiger abgetastet, da das Rauschmuster das wünschenswerte blaue Rauschmuster im Bildschirmraum sein kann, aber auch mehr eindeutige Pixel einen Strahl für sie herausgeschossen bekommen Anzahl von Rahmen, wodurch einzigartige Informationen maximiert werden, die pro Strahl pro Rahmen empfangen werden. Ein Graph der Anzahl der eindeutigen Pixel über die Zeit ist in 35 zu sehen, und dies ist auch in 33 visuell zu erkennen.
  • 31 veranschaulicht, wie Schwellenwertmasken gemäß mindestens einer Ausführungsform Punktmengen beliebiger Dichte erstellen können; Das heißt, in 31 werden 1024 Proben von blauem Rauschen durch optimalen Transport (BNOT) mit einer 128x128x10 2Dx1D-Maske für blaues Rauschen mit unterschiedlichen Schwellenwerten verglichen. BNOT ist räumlich viel hochwertiger, hat aber eine feste Dichte und behandelt die Zeitachse nicht, so dass unabhängige Sample-Sets im Zeitverlauf weißes Rauschen sein müssen.
  • 32 veranschaulicht, wie die Schwellenwertsätze ihre gewünschten Frequenzspektren über Achsengruppen hinweg beibehalten, gemäß mindestens einer Ausführungsform. Das heißt, 32 veranschaulicht eine DFT von 2D-Projektionen von 64 × 64 × 64 2D × 1D-Masken mit blauem Rauschen mit einem 1/ 8-Schwellenwert, um zu zeigen, wie die Schwellenwertpunktsätze ihr blaues Rauschspektrum beibehalten, das die Masken haben.
  • In einer Ausführungsform werden hierin Modifikationen des BNDS-Algorithmus beschrieben, wo Masken für blaues Rauschen jeder Dimension erzeugt werden, die blaue Rauscheigenschaften haben, die auf Unterraumachsengruppen beschränkt sind. In einer Ausführungsform können diese Masken für blaues Rauschen für eine Vielzahl von Renderingalgorithmen mit geringer Anzahl von Samples nützlich sein, mit dem Ziel, wünschenswerte Fehlermuster für blaues Rauschen zu erhalten, während sie auch schneller konvergieren als andere Verfahren, die Masken für blaues Rauschen verwenden. In einer Ausführungsform können diese Masken für blaues Rauschen einen Schwellenwert aufweisen, um diese Eigenschaften in den Bereich der Sampling von blauem Rauschen zu bringen.
  • 33 veranschaulicht fünf akkumulierte Rahmen von Pixeln, die von einem Bild abgetastet wurden, unter Verwendung einer ungleichmäßigen Wichtigkeitskarte, um zu machen, dass Pixel in Richtung der Mitte wahrscheinlicher abgetastet werden, gemäß mindestens einer Ausführungsform. Während sowohl 2D-Blaurauschen als auch räumlich-zeitliches blaues Rauschen wünschenswerte räumliche Sample-Muster aufweisen, tastet räumlich-zeitliches blaues Rauschen eindeutigere Pixel in einer kürzeren Anzahl von Rahmen ab.
  • Da Importance Sampling ein Thema ist, das weitgehend im Widerspruch zur Verwendung bestimmter Sample-Muster steht, behält blaues Rauschen selbst häufiger wünschenswerte Eigenschaften bei, wenn es Warping-Funktionen unterzogen wird. In einer Ausführungsform können diese Masken für blaues Rauschen erweitert werden, um nicht nur gewünschte Projektionen pro Achsengruppe aufzuweisen, sondern ihnen auch zu ermöglichen, spezifische Verteilungen pro Achsengruppe aufzuweisen. Dadurch kann blaues Rauschen im Post-Warp-Raum erzeugt werden, was bedeutet, dass das blaue Rauschen in keiner Weise beschädigt wird und beim Importance Sampling von darin gebackenen PDFs wichtig sein könnte. Während einige PDFs möglicherweise sehr spezifisch für die Verwendung sind und daher möglicherweise nicht so wünschenswert sind, sie ständig einzubacken - wie z. B. ein HDRI-Skybox-Bild - würden andere PDFs viel häufiger wiederverwendet werden, z. B. GGX für Spiegelreflexionen.
  • 35 veranschaulicht, dass, während weißes Rauschen redundante abgetastete Pixel in jedem Frame und im Laufe der Zeit haben kann, räumliches blaues Rauschen redundante Pixel über den Raum entfernt und 2Dx1D räumlich-zeitliches blaues Rauschen sie auch im Laufe der Zeit entfernt, gemäß mindestens einer Ausführungsform.
  • Obwohl sich die hierin beschriebenen Techniken auf Masken für blaues Rauschen beziehen, können andere Farben (z. B. rotes Rauschen) des Rauschens ebenfalls anwendbar sein, um die Bildwiedergabe und -verbesserung in Echtzeit zu verbessern.
  • INFERENZ- UND TRAININGSLOGIK
  • 35A veranschaulicht Inferenz- und/oder Trainingslogik 3515, die verwendet wird, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden weiter unten in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 2815 mit dem Prozess 900 (siehe 9A) oder dem Prozess 906 (siehe 9B) implementiert werden, z. B. um ein Bild unter Verwendung von DLSS zu rendern. In mindestens einer Ausführungsform führt die Inferenz- und/oder Trainingslogik 2815 einen Teil oder alle Prozesse 200 und/oder 800 aus.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 3515 ohne Einschränkung einen Code- und/oder Datenspeicher 3501 beinhalten, um Vorwärts- und/oder Ausgabegewichtungs- und/oder Eingabe-/Ausgabedaten und/oder andere Parameter zu speichern, um Neuronen oder Schichten eines neuronalen Netzes zu konfigurieren, das in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder zum Inferenzieren verwendet wird. In mindestens einer Ausführungsform kann die Trainingslogik 3515 einen Code- und/oder Datenspeicher 3501 beinhalten oder mit diesem gekoppelt sein, um Grafik-Code oder andere Software zu speichern, um die Zeitsteuerung und/oder die Reihenfolge zu steuern, in der Gewichtungsinformationen und/oder Informationen zu anderen Parametern gespeichert werden sollen, um Logik zu konfigurieren, die Ganzzahl- und/oder Gleitkommaeinheiten (zusammen arithmetische Logikeinheiten (arithmetic logic units - ALUs) beinhalten. In mindestens einer Ausführungsform lädt Code, wie etwa Graphencode, Gewichtungs- oder andere Parameterinformationen in Prozessor-ALUs auf Grundlage einer Architektur eines neuronalen Netzes, dem derartiger Code entspricht. In mindestens einer Ausführungsform speichert der Code und/oder die Speicherung 3501 Gewichtungsparameter und/oder Eingabe/Ausgabe-Daten jeder Schicht eines neuronalen Netzes, das in Verbindung mit einer oder mehreren Ausführungsformen während der Vorwärtspropagierung von Eingabe/Ausgabe-Daten und/oder Gewichtungsparametern während des Trainings und/oder der Inferenz unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen trainiert oder verwendet wird. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 3501 in einem anderen chipinternen oder chipexternen Datenspeicher, einschließlich des L1-, L2- oder L3-Caches oder Systemspeichers eines Prozessors, enthalten sein.
  • In mindestens einer Ausführungsform kann ein beliebiger Teil des Code- und/oder Datenspeichers 3501 intern oder extern von einem oder mehreren Prozessoren oder anderen Hardwarelogikvorrichtungen oder -schaltungen sein. In mindestens einer Ausführungsform kann der Code und/oder Code- und/oder Datenspeicher 3501 Cache-Speicher, dynamischer zufällig adressierbarer Speicher (dynamic randomly addressable memory - „DRAM“), statischer zufällig adressierbarer Speicher (static randomly addressable memory - „SRAM“), nichtflüchtiger Speicher (z. B. Flash-Speicher) oder anderer Speicher sein. In mindestens einer Ausführungsform kann eine Wahl, ob der Code und/oder Code- und/oder Datenspeicher 3501 zum Beispiel zu einem Prozessor intern oder extern ist oder DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, von dem verfügbaren chipinternen oder chipexternen Speicher, den Latenzanforderungen der Trainings- und/oder Inferenzfunktionen, die durchgeführt werden, der Batch-Größe der Daten, die beim Inferenzieren und/oder Trainieren eines neuronalen Netzes verwendet werden, oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 3515 ohne Einschränkung Folgendes beinhalten: einen Code- und/oder Datenspeicher 3505, um Gewichtung und/oder Eingabe-/Ausgabedaten rückwärtsgerichtet zu speichern und/oder auszugeben, die Neuronen oder Schichten eines neuronalen Netzwerks entsprechen, das in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder zum Inferenzieren verwendet wird. In mindestens einer Ausführungsform speichert der Code- und/oder Datenspeicher 3505 Gewichtungsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzes, das trainiert oder in Verbindung mit einer oder mehreren Ausführungsformen während der Rückwärtspropagation von Eingabe-/Ausgabedaten und/oder Gewichtsparametern während des Trainings und/oder dem Inferenzieren unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen verwendet wird. In mindestens einer Ausführungsform kann die Trainingslogik 3515 einen Code- und/oder Datenspeicher 3505 beinhalten oder mit diesem gekoppelt sein, um Grafik-Code oder andere Software zu speichern, um die Zeitsteuerung und/oder die Reihenfolge zu steuern, in der Gewichtungsinformationen und/oder Informationen zu anderen Parametern gespeichert werden sollen, um Logik zu konfigurieren, die Ganzzahl- und/oder Gleitkommaeinheiten (zusammen arithmetische Logikeinheiten (ALUs)) beinhalten.
  • In mindestens einer Ausführungsform bewirkt Code, wie etwa Graphencode, das Laden von Gewichtungs- oder anderen Parameterinformationen in Prozessor-ALUs auf Grundlage einer Architektur eines neuronalen Netzes, dem derartiger Code entspricht. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 3505 in einem anderen chipinternen oder chipexternen Datenspeicher, einschließlich des L1-, L2- oder L3-Caches oder Systemspeichers eines Prozessors, beinhaltet sein. In mindestens einer Ausführungsform kann ein beliebiger Teil des Code- und/oder Datenspeichers 3505 intern oder extern von einem oder mehreren Prozessoren oder anderen Hardwarelogikvorrichtungen oder -schaltungen sein. In mindestens einer Ausführungsform kann der Code- und/oder Datenspeicher 3505 ein Cache-Speicher, DRAM, SRAM, ein nichtflüchtiger Speicher (z. B. Flash-Speicher) oder ein anderer Speicher sein. In mindestens einer Ausführungsform kann eine Wahl, ob der Code- und/oder Datenspeicher 3505 zum Beispiel zu einem Prozessor intern oder extern ist oder DRAM, SRAM, Flash-Speicher oder einen anderen Speichertyp umfasst, von dem verfügbaren chipinternen oder chipexternen Speicher, den Latenzanforderungen der Trainings- und/oder Inferenzfunktionen, die durchgeführt werden, der Batch-Größe der Daten, die beim Inferenzieren und/oder Trainieren eines neuronalen Netzes verwendet werden, oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 3501 und der Code- und/oder Datenspeicher 3505 getrennte Speicherstrukturen sein. In mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 3501 und der Code- und/oder Datenspeicher 3505 getrennte Speicherstrukturen sein. In mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 3501 und der Code- und/oder Datenspeicher 3505 getrennte Speicherstrukturen sein. In mindestens einer Ausführungsform kann ein beliebiger Teil des Code- und/oder Datenspeichers 3501 und des Code- und/oder Datenspeichers 3505 in einem anderen chipinternen oder chipexternen Datenspeicher beinhaltet sein, was einen L1-, L2- oder L3-Cache oder Systemspeicher eines Prozessors beinhaltet.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 3515 ohne Einschränkung eine oder mehrere arithmetisch-logische Einheit(en) („ALU(s)“) 3510 beinhalten, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten, um logische und/oder mathematische Operationen durchzuführen, die mindestens zum Teil auf Trainings- und/oder Inferenzcode (z. B. Graphencode) basieren oder dadurch angegeben werden, wobei ein Ergebnis davon Aktivierungen (z. B. Ausgabewerte von Schichten oder Neuronen innerhalb eines neuronalen Netzes) produzieren kann, die in einem Aktivierungsspeicher 3520 gespeichert sind und die Funktionen von Eingabe/Ausgabe- und/oder Gewichtungsparameterdaten sind, die in dem Code- und/oder Datenspeicher 3501 und/oder dem Code- und/oder Datenspeicher 3505 gespeichert sind. In mindestens einer Ausführungsform werden in dem Aktivierungsspeicher 3520 gespeicherte Aktivierungen gemäß linearer algebraischer und/oder matrixbasierter Mathematik erzeugt, die durch die ALU(s) 3510 als Reaktion auf das Durchführen von Anweisungen oder anderem Code durchgeführt wird, wobei in dem Code- und/oder Datenspeicher 3505 und/oder dem Datenspeicher 3501 gespeicherte Gewichtungswerte als Operanden zusammen mit anderen Werten, wie etwa Verzerrungswerten, Gradienteninformationen, Momentwerten oder anderen Parametern oder Hyperparametern, verwendet werden, von denen beliebige oder alle in dem Code- und/oder Datenspeicher 3505 oder dem Code- und/oder Datenspeicher 3501 oder einem anderen chipinternen oder -externen Speicher gespeichert sein können.
  • In mindestens einer Ausführungsform sind die ALU 3510 in einem oder mehreren Prozessoren oder anderen Hardwarelogikvorrichtungen oder -schaltungen beinhaltet, wohingegen in einer weiteren Ausführungsform die ALU 3510 außerhalb eines Prozessors oder einer anderen Hardwarelogikvorrichtung oder -schaltung liegen können, die sie verwendet (z. B. ein Co-Prozessor). In mindestens einer Ausführungsform können die ALU 3510 in den Ausführungseinheiten eines Prozessors oder anderweitig in einer Bank von ALU beinhaltet sein, auf welche die Ausführungseinheiten eines Prozessors, entweder innerhalb desselben Prozessors oder zwischen verschiedenen Prozessoren unterschiedlicher Arten (z. B. Zentraleinheiten, Grafikverarbeitungseinheiten, Einheiten mit fester Funktion usw.) verteilt, zugreifen können. In mindestens einer Ausführungsform können sich der Code- und/oder Datenspeicher 3501, der Code- und/oder Datenspeicher 3505 und der Aktivierungsspeicher 3520 einen Prozessor oder eine andere HardwareLogikvorrichtung oder -schaltung teilen, während sie sich in einer anderen Ausführungsform in unterschiedlichen Prozessoren oder anderen Hardware-Logikvorrichtungen oder -Schaltungen oder in einer Kombination aus gleichen und unterschiedlichen Prozessoren oder anderen Hardware-Logikvorrichtungen oder - Schaltungen befinden können. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Aktivierungsspeichers 3520 in einem anderen chipinternen oder chipexternen Datenspeicher, einschließlich des L1-, L2- oder L3-Caches oder Systemspeichers eines Prozessors, beinhaltet sein. Darüber hinaus kann Ableitungs- 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-, Dekodier-, Planungs-, Ausführungs-, Stilllegungs- und/oder anderen logischen Schaltungen eines Prozessors abgerufen und/oder verarbeitet werden.
  • In mindestens einer Ausführungsform kann der Aktivierungsspeicher 3520 Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z. B. Flash-Speicher) oder anderer Speicher sein. In mindestens einer Ausführungsform kann sich der Aktivierungsspeicher 3520 vollständig oder teilweise innerhalb oder außerhalb von einem oder mehreren Prozessoren oder anderen logischen Schaltungen befinden. In mindestens einer Ausführungsform kann eine Wahl, ob der Aktivierungsspeicher 3520 zum Beispiel zu einem Prozessor intern oder extern ist oder DRAM, SRAM, Flash-Speicher oder einen anderen Speichertyp umfasst, von dem verfügbaren chipinternen oder chipexternen Speicher, den Latenzanforderungen der Trainings- und/oder Inferenzfunktionen, die durchgeführt werden, der Batch-Größe der Daten, die beim Inferenzieren und/oder Trainieren eines neuronalen Netzes verwendet werden, oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform kann die in 35A dargestellte Inferenz- und/oder Trainingslogik 3515 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung (application-specific integrated circuit - „ASIC“) verwendet werden, wie etwa einer TensorFlow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (inference processing unit - IPU) von Graphcore™ oder einem Prozessor vom Typ Nervana® (z. B. „Lake Crest“) der Intel Corp. In mindestens einer Ausführungsform kann die Inferenz-und/oder Trainingslogik 3515, die in 35A dargestellt ist, in Verbindung mit Hardware einer Zentraleinheit („CPU“), Hardware einer Grafikverarbeitungseinheit („GPU“) oder anderer Hardware, wie etwa feldprogrammierbaren Gatearrays („FPGA“) verwendet werden.
  • 35B veranschaulicht Ableitungs- und/oder Trainingslogik 3515 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 3515 ohne Einschränkung Folgendes beinhalten: Hardwarelogik, bei der Rechenressourcen dediziert oder anderweitig ausschließlich in Verbindung mit Gewichtungswerten oder anderen Informationen verwendet werden, die einer oder mehreren Schichten von Neuronen innerhalb eines neuronalen Netzes entsprechen. In mindestens einer Ausführungsform kann die in 35B dargestellte Inferenz- und/oder Trainingslogik 3515 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung (application-specific integrated circuit - ASIC) verwendet werden, wie etwa einer TensorFlow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (inference processing unit - IPU) von Graphcore™ oder einem Prozessor vom Typ Nervana® (z. B. „Lake Crest“) der Intel Corp. In mindestens einer Ausführungsform kann die Inferenz-und/oder Trainingslogik 3515, die in 35B zeigt ist, in Verbindung mit Hardware einer Zentraleinheit (CPU), Hardware einer Grafikverarbeitungseinheit (GPU) oder anderer Hardware, wie etwa feldprogrammierbaren Gatearrays (FPGA) verwendet werden. In mindestens einer Ausführungsform beinhaltet die Inferenz- und/oder Trainingslogik 3515 ohne Einschränkung den Code- und/oder Datenspeicher 3501 und den Code- und/oder Datenspeicher 3505, die zum Speichern von Code (z. B. Graphencode), Gewichtungswerten und/oder anderen Informationen, einschließlich Verzerrungswerten, Gradienteninformationen, Momentwerten und/oder anderer Parameter- oder Hyperparameterinformationen, verwendet werden können. In mindestens einer Ausführungsform, die in 35B veranschaulicht ist, ist jeder von dem Code- und/oder Datenspeicher 3501 und dem Code- und/oder Datenspeicher 3505 einer dedizierten Rechenressource, wie etwa der Rechenhardware 3502 bzw. der Rechenhardware 3506, zugeordnet. In mindestens einer Ausführungsform umfasst jede von der Rechenhardware 3502 und der Rechenhardware 3506 eine oder mehrere ALU, die mathematische Funktionen, wie etwa lineare algebraische Funktionen, nur an Informationen durchführen, die im Code- und/oder Datenspeicher 3501 und Code- und/oder Datenspeicher 3505 gespeichert sind, deren Ergebnis im Aktivierungsspeicher 3520 gespeichert ist.
  • In mindestens einer Ausführungsform entspricht jeder von dem Code- und/oder Datenspeicher 3501 und 3505 und die entsprechende Rechenhardware 3502 bzw. 3506 derartig unterschiedlichen Schichten eines neuronalen Netzes, dass die sich ergebende Aktivierung von einem „Speicher-/Rechenpaar 3501/3502“ des Code- und/oder Datenspeichers 3501 und der Rechenhardware 3502 als eine Eingabe für das „Speicher-/Rechenpaar 3505/3506“ des Code- und/oder Datenspeichers 3505 und der Rechenhardware 3506 bereitgestellt wird, um die konzeptionelle Organisation eines neuronalen Netzes widerzuspiegeln. In mindestens einer Ausführungsform kann jedes der Speicher-/Rechenpaar 3501/3502 und 3505/3506 mehr als einer Schicht eines neuronalen Netzes entsprechen. In mindestens einer Ausführungsform können zusätzliche Speicher-/Berechnungspaare (nicht gezeigt) nach oder parallel zu den Speicherberechnungspaaren 3501/3502 und 3505/3506 in der Inferenz- und/oder Trainingslogik 3515 beinhaltet sein.
  • TRAINING UND EINSATZ VON NEURONALEN NETZEN
  • 36 veranschaulicht das Training und den Einsatz eines tiefen neuronalen Netzes gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird das untrainierte neuronale Netz 3606 unter Verwendung eines Trainingsdatensatzes 3602 trainiert. In mindestens einer Ausführungsform kann das untrainierte neuronale Netzwerk 2906 mit dem Prozess 900 oder dem Prozess 906 (siehe 9B) implementiert werden, z. B. um ein Bild unter Verwendung von DLSS oder einer anderen neuronalen Netzwerkoperation zu rendern. In mindestens einer Ausführungsform ist das Trainings-Framework 3604 ein PyTorch-Framework, wohingegen das Trainings-Framework 3604 in anderen Ausführungsformen ein TensorFlow-, Boost-, Caffe-, Microsoft-Cognitive-Toolkit/CNTK-, MXNet-, Chainer-, Keras-, Deeplearning4j- oder ein anderes Trainings-Framework ist. In mindestens einer Ausführungsform trainiert das Trainings-Framework 3604 ein untrainiertes neuronales Netz 3606 und ermöglicht, dass es unter Verwendung von hierin beschriebenen Verarbeitungsressourcen trainiert wird, um ein trainiertes neuronales Netz 3608 zu erzeugen. In mindestens einer Ausführungsform können die Gewichtungen zufällig oder durch Vorabtraining unter Verwendung eines Deep-Belief-Netzes gewählt werden. In mindestens einer Ausführungsform kann das Training entweder auf überwachte, teilweise überwachte oder nicht überwachte Weise durchgeführt werden.
  • In mindestens einer Ausführungsform wird das untrainierte neuronale Netz 3606 unter Verwendung von überwachtem Lernen trainiert, wobei der Trainingsdatensatz 3602 eine Eingabe beinhaltet, die mit einer gewünschten Ausgabe für eine Eingabe gepaart ist, oder wobei der Trainingsdatensatz 3602 eine Eingabe beinhaltet, die eine bekannte Ausgabe aufweist, und eine Ausgabe des neuronalen Netzes 3606 manuell bewertet wird. In mindestens einer Ausführungsform wird das untrainierte neuronale Netz 3606 auf überwachte Weise trainiert und verarbeitet Eingaben aus dem Trainingsdatensatz 3602 und vergleicht die resultierenden Ausgaben mit einem Satz von erwarteten oder gewünschten Ausgaben. In mindestens einer Ausführungsform werden Fehler dann durch das untrainierte neuronale Netz 3606 rückpropagiert. In mindestens einer Ausführungsform stellt das Trainings-Framework 3604 Gewichtungen ein, die das untrainierte neuronale Netz 3606 steuern. In mindestens einer Ausführungsform beinhaltet das Trainings-Framework 3604 Werkzeuge, um zu überwachen, wie gut das untrainierte neuronale Netz 3606 zu einem Modell konvergiert, wie etwa dem trainierten neuronalen Netz 3608, das dazu geeignet ist, korrekte Antworten zu erzeugen, wie etwa in dem Ergebnis 3614, die auf Eingabedaten wie etwa einem neuen Datensatz 3612 basieren. In mindestens einer Ausführungsform trainiert das Trainings-Framework 3604 das untrainierte neuronale Netz 3606 wiederholt, während Gewichtungen eingestellt werden, um eine Ausgabe des untrainierten neuronalen Netzes 3606 unter Verwendung einer Verlustfunktion und eines Anpassungsalgorithmus, wie etwa des stochastischen Gradientenabstiegs, zu verfeinern. In mindestens einer Ausführungsform trainiert das Trainings-Framework 3604 das untrainierte neuronale Netz 3606, bis das untrainierte neuronale Netz 3606 eine gewünschte Genauigkeit erreicht. In mindestens einer Ausführungsform kann das trainierte neuronale Netz 3608 dann eingesetzt werden, um eine beliebige Anzahl von Maschinenlernoperationen zu implementieren.
  • In mindestens einer Ausführungsform wird das untrainierte neuronale Netz 3606 unter Verwendung von nicht überwachtem Lernen trainiert, wobei das untrainierte neuronale Netz 3606 versucht, sich selbst unter Verwendung von unbeschrifteten Daten zu trainieren. In mindestens einer Ausführungsform beinhaltet der Trainingsdatensatz 3602 für unüberwachtes Lernen Eingabedaten ohne zugehörige Ausgabedaten oder „Ground-Truth“-Daten. In mindestens einer Ausführungsform kann das untrainierte neuronale Netz 3606 Gruppierungen innerhalb des Trainingsdatensatzes 3602 lernen und bestimmen, wie einzelne Eingaben mit dem untrainierten Datensatz 3602 in Bezug stehen. In mindestens einer Ausführungsform kann unüberwachtes Training verwendet werden, um eine selbstorganisierende Karte in dem trainierten neuronalen Netz 3608 zu erzeugen, die dazu in der Lage ist, Operationen durchzuführen, die beim Reduzieren der Dimensionalität des neuen Datensatzes 3612 nützlich sind. In mindestens einer Ausführungsform kann auch ein unüberwachtes Training verwendet werden, um eine Anomalieerkennung durchzuführen, was die Identifizierung von Datenpunkten im neuen Datensatz 3612 erlaubt, die von normalen Mustern des neuen Datensatzes 3612 abweichen.
  • In mindestens einer Ausführungsform kann halbüberwachtes Lernen verwendet werden, wobei es sich um eine Technik handelt, bei der der Trainingsdatensatz 3602 eine Mischung aus markierten und nicht markierten Daten beinhaltet. In mindestens einer Ausführungsform kann das Trainings-Framework 3604 verwendet werden, um inkrementelles Lernen durchzuführen, wie etwa durch Transferlerntechniken. In mindestens einer Ausführungsform ermöglicht das inkrementelle Lernen es dem trainierten neuronalen Netz 3608, sich an den neuen Datensatz 3612 anzupassen, ohne das Wissen zu vergessen, das dem trainierten neuronalen Netz 3608 während des anfänglichen Trainings beigebracht wurde.
  • RECHENZENTRUM
  • 37 veranschaulicht ein beispielhaftes Rechenzentrum 3700, in dem mindestens eine Ausführungsform verwendet werden kann. In mindestens einer Ausführungsform beinhaltet das Rechenzentrum 3700 eine Rechenzentrumsinfrastrukturschicht 3710, eine Frameworkschicht 3720, eine Softwareschicht 3730 und eine Anwendungsschicht 3740. Das Datenzentrum 3000 kann den Prozess 900 oder den Prozess 906 implementieren (siehe 9B).
  • In mindestens einer Ausführungsform, wie in 37 gezeigt, kann die Rechenzentrumsinfrastrukturschicht 3710 einen Ressourcenorchestrator 3712, gruppierte Rechenressourcen 3714 und Knoten-Rechenressourcen (node computing resources - „Knoten-C.R.s“) 3716(1)-3716(N) beinhalten, wobei „N“ eine positive ganze Zahl darstellt (die eine andere ganze Zahl „N“ sein kann, als in anderen Figuren verwendet). In mindestens einer Ausführungsform können die Knoten-C.R.s 3716(1)-3716(N) eine beliebige Anzahl von zentralen Verarbeitungseinheiten („CPUs“) oder anderen Prozessoren (einschließlich Beschleunigern, feldprogrammierbarer GateArrays (FPGAs), Grafikprozessoren usw.), Speichervorrichtungen 3718(1)-3718(N) (z. B. dynamischer Festwertspeicher, Festkörperspeicher oder Festplattenlaufwerke), Vorrichtungen zur Netz-Eingabe/Ausgabe (network input/output - „NW-E/A“), Netz-Switches, virtuellen Maschinen (virtual machines - „VMs“), Leistungsmodulen und Kühlmodulen usw. beinhalten, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform kann es sich bei einer oder mehreren Knoten-C.R.s aus den Knoten-C.R.s 3716(1)-3716(N) um einen Server handeln, der eine oder mehrere der vorstehend erwähnten Rechenressourcen aufweist.
  • In mindestens einer Ausführungsform können die gruppierten Rechenressourcen 3714 separate Gruppierungen von Knoten-C.R.s beinhalten, die innerhalb eines oder mehrerer Racks (nicht gezeigt) oder vieler Racks untergebracht sind, die in Rechenzentren an verschiedenen geografischen Standorten untergebracht sind (ebenfalls nicht gezeigt). Separate Gruppierungen von Knoten-C.R.s innerhalb der gruppierten Rechenressourcen 3714 können in mindestens einer Ausführungsform gruppierte Rechen-, Netz-, Arbeitsspeicher- oder Datenspeicherressourcen beinhalten, die dazu konfiguriert oder zugewiesen sein können, eine oder mehrere Arbeitslasten zu unterstützen. In mindestens einer Ausführungsform können mehrere Knoten-C.R.s, die CPUs oder Prozessoren beinhalten, innerhalb eines oder mehrerer Racks gruppiert sein, um Rechenressourcen zum Unterstützen einer oder mehrerer Arbeitslasten bereitzustellen. In mindestens einer Ausführungsform können ein oder mehrere Racks auch eine beliebige Anzahl von Leistungsmodulen, Kühlmodulen und Netz-Switches in beliebiger Kombination beinhalten.
  • In mindestens einer Ausführungsform kann der Ressourcen-Orchestrator 3712 einen oder mehrere Knoten-C.R.s 3716(1)-3716(N) und/oder gruppierte Rechenressourcen 3714 konfigurieren oder anderweitig steuern. In mindestens einer Ausführungsform kann der Ressourcenorchestrierer 3712 eine Softwaredesigninfrastruktur-(„SDI“-)Verwaltungsinstanz für das Rechenzentrum 3700 beinhalten. In mindestens einer Ausführungsform kann der Ressourcen-Orchestrator 3512 Hardware, Software oder eine Kombination davon beinhalten.
  • In mindestens einer Ausführungsform beinhaltet, wie in 37 gezeigt, die Frameworkschicht 3720 einen Aufgabenplaner 3722, einen Konfigurationsverwalter 3724, einen Ressourcenverwalter 3726 und ein verteiltes Dateisystem 3728. In mindestens einer Ausführungsform kann die Frameworkschicht 3720 ein Framework beinhalten, um Software 3732 der Softwareschicht 3730 und/oder eine oder mehrere Anwendung(en) 3742 der Anwendungsschicht 3740 zu unterstützen. In mindestens einer Ausführungsform kann/können die Software 3732 oder die Anwendung(en) 3742 jeweils webbasierte Dienstsoftware oder -anwendungen beinhalten, wie etwa diejenigen, die von Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt sind. In mindestens einer Ausführungsform kann es sich bei der Framework-Schicht 3720 um eine Art freien und quelloffenen Software-Webanwendungsrahmen wie etwa Apache Spark™ (im Folgenden „Spark“) handeln, der das verteilte Dateisystem 3728 für die Verarbeitung großer Datenmengen (z. B. „Big Data“) verwenden kann, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform kann der Aufgabenplaner 3722 einen Spark-Treiber beinhalten, um die Planung von Arbeitslasten zu erleichtern, die von verschiedenen Schichten des Rechenzentrums 3700 unterstützt werden. In mindestens einer Ausführungsform kann der Konfigurationsverwalter 3724 in der Lage sein, unterschiedliche Schichten zu konfigurieren, wie etwa die Softwareschicht 3730 und die Frameworkschicht 3720, was Spark und das verteilte Dateisystem 3728 zum Unterstützen einer umfangreicher Datenverarbeitung beinhaltet. In mindestens einer Ausführungsform kann der Ressourcenverwalter 3726 in der Lage sein, geclusterte oder gruppierte Berechnungsressourcen zu verwalten, die dem verteilten Dateisystem 3728 und dem Aufgabenplaner 3722 zur Unterstützung zugeordnet oder zugewiesen sind. In mindestens einer Ausführungsform können geclusterte oder gruppierte Rechenressourcen gruppierte Rechenressourcen 3714 auf der Rechenzentrumsinfrastrukturschicht 3710 beinhalten. In mindestens einer Ausführungsform kann sich der Ressourcenverwalter 3726 mit dem Ressourcenorchestrierer 3712 koordinieren, um diese zugeordneten oder zugewiesenen Berechnungsressourcen zu verwalten.
  • In mindestens einer Ausführungsform kann die in der Softwareschicht 3730 beinhaltete Software 3732 Software beinhalten, die durch mindestens Teile der Knoten-C.R.s 3716(1)-3716(N), gruppierte Rechenressourcen 3714 und/oder das verteilte Dateisystem 3728 der Frameworkschicht 3720 verwendet werden. Zu einem oder mehreren Typen von Software können in mindestens einer Ausführungsform Software zum Durchsuchen von Internet-Webseiten, Software zum Scannen von EMails auf Viren, Datenbank-Software und Software für Streaming-Videoinhalte gehören, ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform kann/können die Anwendung(en) 3742, die in der Anwendungsschicht 3740 enthalten ist/sind, eine oder mehrere Arten von Anwendungen beinhalten, die von mindestens Teilen der Knoten-C.R.s 3716(1)-3716(N), gruppierten Berechnungsressourcen 3714 und/oder dem verteilten Dateisystem 3728 der Frameworkschicht 3720 verwendet werden. Zu einem oder mehreren Typen von Anwendungen können in mindestens einer Ausführungsform eine beliebige Anzahl von einer Genomikanwendung, einer Anwendung zur kognitiven Berechnung und einer Anwendung für maschinelles Lernen gehören, einschließlich Trainings- oder Inferenz-Software, Rahmen-Software für maschinelles Lernen (z. B. PyTorch, TensorFlow, Caffe usw.) oder anderer Anwendungen für maschinelles Lernen, die in Verbindung mit einer oder mehreren Ausführungsformen verwendet werden, ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform können Konfigurationsverwalter 3724, Ressourcenverwalter 3726 und Ressourcenorchestrierer 3712 eine beliebige Anzahl und Art von selbstmodifizierenden Handlungen auf Grundlage einer beliebigen Menge und Art von Daten umsetzen, die auf jede technisch machbare Weise erfasst werden. In mindestens einer Ausführungsform können selbstmodifizierende Handlungen einen Rechenzentrumsbetreiber des Rechenzentrums 3700 dahingehend entlasten, möglicherweise schlechte Konfigurationsentscheidungen zu treffen und möglicherweise nicht ausgelastete und/oder schlecht funktionierende Abschnitte eines Rechenzentrums zu vermeiden.
  • In mindestens einer Ausführungsform kann das Rechenzentrum 3700 Werkzeuge, Dienste, Software oder andere Ressourcen beinhalten, um ein oder mehrere Modelle für maschinelles Lernen zu trainieren oder Informationen unter Verwendung eines oder mehrerer Modelle für maschinelles Lernen gemäß einer oder mehrerer hierin beschriebener Ausführungsformen vorherzusagen oder zu inferenzieren. Zum Beispiel kann in mindestens einer Ausführungsform ein Modell für maschinelles Lernen trainiert werden, indem Gewichtungsparameter gemäß einer Architektur eines neuronalen Netzes unter Verwendung von Software und Rechenressourcen berechnet werden, die vorstehend in Bezug auf das Rechenzentrum 3700 beschrieben sind. In mindestens einer Ausführungsform können trainierte Modelle für maschinelles Lernen, die einem oder mehreren neuronalen Netzen entsprechen, verwendet werden, um Informationen unter Verwendung der vorstehend in Bezug auf das Rechenzentrum 3700 beschriebenen Ressourcen zu inferenzieren oder vorherzusagen, indem Gewichtungsparameter verwendet werden, die durch eine oder mehrere hierin beschriebene Trainingstechniken berechnet werden.
  • In mindestens einer Ausführungsform kann das Rechenzentrum CPUs, anwendungsspezifische integrierte Schaltungen (ASICs), GPUs, FPGAs oder andere Hardware verwenden, um Training und/oder Inferenzieren unter Verwendung der vorstehend beschriebenen Ressourcen durchzuführen. Darüber hinaus können eine oder mehrere der vorstehend beschriebenen Software- und/oder Hardware-Ressourcen als Dienst konfiguriert sein, um Benutzern das Trainieren oder Durchführen des Inferenzierens von Informationen zu ermöglichen, wie etwa Bilderkennung, Spracherkennung oder andere Dienste der künstlichen Intelligenz.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 3515 in dem System aus 37 für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • SUPERCOMPUTER
  • Die folgenden Figuren legen ohne Einschränkung beispielhafte supercomputerbasierte Systeme dar, die verwendet werden können, um mindestens eine Ausführungsform zu implementieren.
  • In mindestens einer Ausführungsform kann sich ein Supercomputer auf ein Hardwaresystem beziehen, das im Wesentlichen Parallelität aufweist und mindestens einen Chip umfasst, wobei Chips in einem System durch ein Netzwerk miteinander verbunden und in hierarchisch organisierten Gehäusen platziert sind. In mindestens einer Ausführungsform ist ein großes Hardwaresystem, das einen Maschinenraum mit mehreren Racks füllt, von denen jedes mehrere Platinen/Rack-Module enthält, von denen jedes mehrere Chips enthält, die alle durch ein skalierbares Netzwerk miteinander verbunden sind, ein bestimmtes Beispiel eines Supercomputers. In mindestens einer Ausführungsform ist ein einzelnes Rack eines solchen großen Hardwaresystems ein anderes Beispiel eines Supercomputers. In mindestens einer Ausführungsform kann ein einzelner Chip, der eine beträchtliche Parallelität aufweist und mehrere Hardwarekomponenten enthält, gleichermaßen als Supercomputer angesehen werden, da mit abnehmenden Merkmalsgrößen auch eine Menge an Hardware, die in einen einzelnen Chip integriert werden kann, zunehmen kann.
  • 38A veranschaulicht einen Supercomputer auf Chipebene gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird innerhalb eines FPGA- oder ASIC-Chips der Hauptrechenaufwand in endlichen Zustandsmaschinen (3804) durchgeführt, die als Thread-Einheiten bezeichnet werden. In einer Ausführungsform kann der Supercomputer 3100 den Prozess 900 (siehe 9A) oder den Prozess 906 (siehe 9B) implementieren. In mindestens einer Ausführungsform verbinden Task- und Synchronisationsnetzwerke (3802) endliche Zustandsmaschinen und werden verwendet, um Threads abzuschicken und Vorgänge in der richtigen Reihenfolge auszuführen. In mindestens einer Ausführungsform wird unter Verwendung von Speichernetzwerken (3808, 3812) auf eine partitionierte Mehrebenen-Cache-Hierarchie (3806, 3810) auf einem Chip zugegriffen. In mindestens einer Ausführungsform wird auf einen chipexternen Speicher unter Verwendung von Speichersteuerungen (3816) und einem chipexternen Speichernetzwerk (3814) zugegriffen. In mindestens einer Ausführungsform wird eine E/A-Steuerung (3818) für die chipübergreifende Kommunikation verwendet, wenn eine Ausgestaltung nicht in einen einzelnen Logikchip passt.
  • 38B veranschaulicht einen Supercomputer auf Rock-Modulebene gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform gibt es innerhalb eines Rack-Moduls mehrere FPGA- oder ASIC-Chips (3820), die mit einer oder mehreren DRAM-Einheiten (3822) verbunden sind, die einen Hauptbeschleunigerspeicher bilden. In mindestens einer Ausführungsform ist jeder FPGA/ASIC-Chip mit seinem benachbarten FPGA/ASIC-Chip unter Verwendung von breiten Bussen auf einer Platine mit differentieller Hochgeschwindigkeitssignalisierung (3824) verbunden. In mindestens einer Ausführungsform ist jeder FPGA/ASIC-Chip auch mit mindestens einem seriellen Hochgeschwindigkeitskommunikationskabel verbunden.
  • 38C veranschaulicht einen Supercomputer auf Rack-Ebene gemäß mindestens einer Ausführungsform. 38D veranschaulicht einen Supercomputer auf Gesamtsystemebene gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform werden unter Bezugnahme auf 38C und 38D zwischen Rack-Modulen in einem Rack und über Racks hinweg durch ein gesamtes System serielle optische Hochgeschwindigkeits- oder Kupferkabel (3826, 3828) verwendet, um ein skalierbares, möglicherweise unvollständiges Hypercube-Netzwerk zu realisieren. In mindestens einer Ausführungsform ist einer der FPGA/ASIC-Chips eines Beschleunigers über eine PCI-Express-Verbindung (3830) mit einem Host-System verbunden. In mindestens einer Ausführungsform umfasst das Host-System einen Host-Mikroprozessor (3834), auf dem ein Softwareteil einer Anwendung läuft, und einen Speicher, der aus einer oder mehreren Host-Speicher-DRAM-Einheiten (3832) besteht, der mit dem Speicher auf einem Beschleuniger kohärent gehalten wird. In mindestens einer Ausführungsform kann das Host-System ein separates Modul auf einem der Racks sein oder kann in eines der Module eines Supercomputers integriert sein. In mindestens einer Ausführungsform stellt eine Cube-verbundene Zyklen-Topologie Kommunikationsverbindungen bereit, um ein Hypercube-Netzwerk für einen großen Supercomputer zu schaffen. In mindestens einer Ausführungsform kann eine kleine Gruppe von FPGA/ASIC-Chips auf einem Rack-Modul als ein einzelner Hypercube-Knoten fungieren, sodass eine Gesamtzahl von externen Verbindungen jeder Gruppe im Vergleich zu einem einzelnen Chip erhöht ist. In mindestens einer Ausführungsform enthält eine Gruppe die Chips A, B, C und D auf einem Rack-Modul mit internen breiten differentiellen Bussen, die A, B, C und D in einer Torus-Organisation verbinden. In mindestens einer Ausführungsform gibt es 12 serielle Kommunikationskabel, die ein Rack-Modul mit der Außenwelt verbinden. In mindestens einer Ausführungsform ist Chip A auf einem Rack-Modul mit den seriellen Kommunikationskabeln 0, 1, 2 verbunden. In mindestens einer Ausführungsform ist Chip B mit den Kabeln 3, 4, 5 verbunden. In mindestens einer Ausführungsform ist Chip C mit 6, 7, 8 verbunden. In mindestens einer Ausführungsform ist Chip D mit 9, 10, 11 verbunden. In mindestens einer Ausführungsform kann eine gesamte Gruppe {A, B, C, D}, die ein Rack-Modul bildet, einen Hypercube-Knoten innerhalb eines Supercomputersystems mit bis zu 212 = 4096 Rack-Modulen (16384 FPGA/ASIC-Chips) bilden. In mindestens einer Ausführungsform muss, damit Chip A eine Nachricht auf Verbindung 4 der Gruppe {A, B, C, D} senden kann, eine Nachricht mit einer integrierten differentiellen breiten Busverbindung am Chip B geroutet werden. In mindestens einer Ausführungsform muss eine Nachricht, die in einer Gruppe {A, B, C, D} auf Verbindung 4 ankommt (d. h. bei B ankommt), die für Chip A bestimmt ist, auch zuerst an einen korrekten Zielchip (A) innerhalb einer Gruppe {A, B, C, D} intern geroutet werden. In mindestens einer Ausführungsform können auch parallele Supercomputersysteme anderer Größen implementiert sein.
  • COMPUTERSYSTEME
  • 39 ist ein Blockdiagramm, das ein beispielhaftes Computersystem veranschaulicht, das ein System mit zusammengeschalteten Vorrichtungen und Komponenten, ein System auf einem Chip (SOC) oder eine Kombination davon sein kann, gebildet mit einem Prozessor, der Ausführungseinheiten zum Ausführen einer Anweisung beinhalten kann, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann ein Computersystem 3900 ohne Einschränkung eine Komponente, wie etwa einen Prozessor 3902, beinhalten, um Ausführungseinheiten einschließlich Logik zum Durchführen von Algorithmen für Prozessdaten gemäß der vorliegenden Offenbarung zu verwenden, wie etwa in der hierin beschriebenen Ausführungsform. In mindestens einer Ausführungsform kann das Computersystem 3900 Prozessoren beinhalten, wie etwa die PENTIUM®-Prozessorfamilie, die Mikroprozessoren Xeon™, ItaniumⓇ, XScale™ und/oder StrongARM™, Intel® Core™ oder Intel® Nervana™, die von der Intel Corporation in Santa Clara, Kalifornien, erhältlich sind, obwohl auch andere Systeme (einschließlich PCs, die andere Mikroprozessoren, Engineering-Arbeitsstationen, Set-Top-Boxen und dergleichen aufweisen) verwendet werden können. In mindestens einer Ausführungsform kann das Computersystem 3900 eine Version des Betriebssystems WINDOWS ausführen, das von der Microsoft Corporation in Redmond, Washington, erhältlich ist, obwohl auch andere Betriebssysteme (zum Beispiel UNIX und Linux), eingebettete Software und/oder grafische Benutzerschnittstellen verwendet werden können.
  • Ausführungsformen können in anderen Vorrichtungen wie etwa tragbaren Vorrichtungen und eingebetteten Anwendungen verwendet werden. Einige Beispiele für tragbare Vorrichtungen sind Mobiltelefone, Internetprotokoll-Vorrichtungen, Digitalkameras, persönliche digitale Assistenten (personal digital assistants - „PDAs“) und tragbare PCs. In mindestens einer Ausführungsform können eingebettete Anwendungen einen Mikrocontroller, einen digitalen Signalprozessor (digital signal processor - „DSP“), ein System auf einem Chip, Netzcomputer („NetPCs“), Set-Top-Boxen, Netz-Hubs, Switches für ein Weitverkehrsnetz (wide area network - „WAN“) oder ein beliebiges anderes System beinhalten, das eine oder mehrere Anweisungen gemäß mindestens einer Ausführungsform durchführen kann.
  • In mindestens einer Ausführungsform kann das Computersystem 3900 ohne Einschränkung einen Prozessor 3902 umfassen, der ohne Einschränkung eine oder mehrere Ausführungseinheiten 3908 umfassen kann, um das Trainieren und/oder Ableiten eines maschinellen Lernmodells gemäß den hier beschriebenen Techniken auszuführen. In mindestens einer Ausführungsform ist das Computersystem 3900 ein Einzelprozessor-Desktop- oder Serversystem, doch bei einer anderen Ausführungsform kann das Computersystem 3900 ein Mehrprozessorsystem sein. In mindestens einer Ausführungsform kann der Prozessor 3902 ohne Einschränkung einen Mikroprozessor für einen Complex Instruction Set Computer („CISC“), einen Mikroprozessor für Reduced Instruction Set Computing („RISC“), einen Very-Long-lnstruction-Word-(„VLIW“-)Mikroprozessor, einen Prozessor, der eine Kombination von Anweisungssätzen implementiert, oder eine beliebige andere Prozessorvorrichtung, wie etwa einen digitalen Signalprozessor, beinhalten. In mindestens einer Ausführungsform kann der Prozessor 3902 mit einem Prozessorbus 3910 gekoppelt sein, der Datensignale zwischen dem Prozessor 3902 und anderen Komponenten in dem Computersystem 3900 übertragen kann.
  • In mindestens einer Ausführungsform kann der Prozessor 3902 ohne Einschränkung einen Level-1- („L1“) internen Cache-Speicher („Cache“) 3904 umfassen. In mindestens einer Ausführungsform kann der Prozessor 3902 einen einzelnen internen Cache oder mehrere Ebenen des internen Cache aufweisen. In mindestens einer Ausführungsform kann sich der Cache-Speicher außerhalb des Prozessors 3902 befinden. Andere Ausführungsformen können in Abhängigkeit von der konkreten Implementation und den Anforderungen auch eine Kombination aus sowohl internen als auch externen Caches beinhalten. In mindestens einer Ausführungsform kann eine Registerdatei 3906 unterschiedliche Typen von Daten in verschiedenen Registern speichern, einschließlich ohne Einschränkung Integerregistern, Gleitkommaregistern, Statusregistern und eines Anweisungszeigerregisters.
  • In mindestens einer Ausführungsform befindet sich die Ausführungseinheit 3908, die ohne Einschränkung eine Logik umfasst, um Ganzzahl- und Gleitkomma-Operationen auszuführen, ebenfalls in dem Prozessor 3902. In mindestens einer Ausführungsform kann der Prozessor 3902 auch Festwertspeicher (read only memory - „ROM“) für Mikrocode („µcode“) beinhalten, der Mikrocode für bestimmte Makrobefehle speichert. In mindestens einer Ausführungsform kann die Ausführungseinheit 3908 eine Logik umfassen, um einen komprimierten Befehlssatz 3909 zu handhaben. In mindestens einer Ausführungsform können durch die Aufnahme des gepackten Anweisungssatzes 3909 in einen Anweisungssatz eines Universalprozessors zusammen mit der damit assoziierten Schaltung zum Ausführen von Anweisungen Operationen, die durch viele Multimedia-Anwendungen verwendet werden, unter Verwendung von gepackten Daten in dem Prozessor 3902 durchgeführt werden. In 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 Durchführen von Operationen an gepackten Daten verwendet wird, wodurch die Notwendigkeit entfallen kann, kleinere Dateneinheiten über den Datenbus dieses Prozessors zu übermitteln, um eine oder mehrere Operationen an einem Datenelement nach dem anderen durchzuführen.
  • In mindestens einer Ausführungsform kann die Ausführungseinheit 3908 auch in Mikrocontrollern, eingebetteten Prozessoren, Grafikvorrichtungen, DSP und anderen Arten von Logikschaltungen verwendet werden. In mindestens einer Ausführungsform kann das Computersystem 3900 ohne Einschränkung einen Speicher 3920 umfassen. In mindestens einer Ausführungsform kann der Speicher 3920 eine Vorrichtung mit dynamischem Direktzugriffsspeicher („DRAM“), eine Vorrichtung mit statischem Direktzugriffsspeicher („SRAM“), eine Flash-Speichervorrichtung oder eine andere Speichervorrichtung sein. In mindestens einer Ausführungsform kann der Speicher 3920 Anweisung(-en) 3919 und/oder Daten 3921 speichern, die durch Datensignale dargestellt werden, die von dem Prozessor 3902 ausgeführt werden können.
  • In mindestens einer Ausführungsform kann ein Systemlogik-Chip mit dem Prozessorbus 3910 und dem Speicher 3920 gekoppelt sein. In mindestens einer Ausführungsform kann der Systemlogik-Chip ohne Einschränkung einen Speicher-Controller-Hub („MCH“) 3916 umfassen, und der Prozessor 3902 kann mit dem MCH 3916 über den Prozessorbus 3910 kommunizieren. In mindestens einer Ausführungsform kann der MCH 3916 einen Speicherpfad mit hoher Bandbreite 3918 für den Speicher 3920 zur Speicherung von Befehlen und Daten und zur Speicherung von Grafikbefehlen, Daten und Texturen bereitstellen. In mindestens einer Ausführungsform kann der MCH 3916 Datensignale zwischen dem Prozessor 3902, dem Speicher 3920 und anderen Komponenten in dem Computersystem 3900 leiten und Datensignale zwischen dem Prozessorbus 3910, dem Speicher 3920 und einem System-E/A 3922 der Schnittstelle überbrücken. In mindestens einer Ausführungsform kann ein Systemlogikchip einen Grafikport zum Koppeln an eine Grafiksteuerung bereitstellen. In mindestens einer Ausführungsform kann der MCH 3916 mit dem Speicher 3920 über einen Speicherpfad mit hoher Bandbreite 3918 gekoppelt sein, und eine Grafik-/Video-Karte 3912 kann mit dem MCH 3916 über einen beschleunigten Grafikanschluss- („AGP“) Zusammenschluss 3914 gekoppelt sein.
  • In mindestens einer Ausführungsform kann das Computersystem 3900 die System-E/A-Schnittstelle 3922 als proprietären Hub-Schnittstellenbus verwenden, um den MCH 3916 an einen E/A-Steuerungs-Hub (I/O controller hub - „ICH“) 3930 zu koppeln. In mindestens einer Ausführungsform kann der ICH 3930 über einen lokalen E/A-Bus direkte Verbindungen zu einigen E/A-Vorrichtungen bereitstellen. In mindestens einer Ausführungsform kann ein lokaler E/A-Bus ohne Einschränkung einen Hochgeschwindigkeits-E/A-Bus zum Verbinden von Peripheriegeräte mit dem Speicher 3920, einem Chipsatz und dem Prozessor 3902 beinhalten. Beispiele umfassen ohne Einschränkung einen Audiocontroller 3929, einen Firmware-Knoten („Flash-BIOS“) 3928, einen drahtlosen Transceiver 3926, eine Datenspeichervorrichtung 3924, einen alten E/A-Controller 3923, der Benutzereingabe- und Tastaturschnittstellen 3925 enthält, einen seriellen Erweiterungsanschluss 3927, wie etwa einen universellen seriellen Bus („USB“), und einen Netzwerk-Controller 3934 umfasst. In mindestens einer Ausführungsform kann der Datenspeicher 3924 ein Festplattenlaufwerk, ein Diskettenlaufwerk, eine CD-ROM-Vorrichtung, eine Flash-Speichervorrichtung oder eine andere Massenspeichervorrichtung umfassen.
  • In mindestens einer Ausführungsform veranschaulicht 39 ein System, das zusammengeschaltete Hardware-Vorrichtungen oder „Chips“ beinhaltet, wohingegen 39 in anderen Ausführungsformen ein beispielhaftes SoC veranschaulichen kann. In mindestens einer Ausführungsform können die in 39 veranschaulichten Vorrichtungen mit proprietären Zusammenschaltungen, standardisierten Zusammenschaltungen (z. B. PCle) oder einer Kombination davon zusammengeschaltet sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten des Computersystems 3900 unter Verwendung von Compute-Express-Link-(CXL-)Zusammenschaltungen zusammengeschaltet.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform kann eine Inferenz- und/oder Trainingslogik 3515 im System der 39 zum Inferenzieren oder Vorhersagen von Operationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von neuronalen Netztrainingsoperationen, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen von neuronalen Netzen berechnet wurden.
  • 40 ist ein Blockdiagramm, das eine elektronische Vorrichtung 4000 zur Verwendung eines Prozessors 4010 gemäß mindestens einer Ausführungsform abbildet. In mindestens einer Ausführungsform kann die elektronische Vorrichtung 4000 zum Beispiel und ohne Einschränkung ein Notebook, ein Tower-Server, ein Rack-Server, ein Blade-Server, ein Laptop, ein Desktop, ein Tablet, eine mobile Vorrichtung, ein Telefon, ein eingebetteter Computer oder eine beliebige andere geeignete elektronische Vorrichtung sein.
  • In mindestens einer Ausführungsform kann die elektronische Vorrichtung 4000 ohne Einschränkung den Prozessor 4010 beinhalten, der kommunikativ an eine beliebige geeignete Anzahl oder einen beliebigen geeigneten Typ von Komponenten, Peripheriegeräten, Modulen oder Vorrichtungen gekoppelt ist. In mindestens einer Ausführungsform ist der Prozessor 4010 unter Verwendung eines Busses oder einer Schnittstelle gekoppelt, wie etwa eines I2C-Busses, eines Systemverwaltungsbusses (System Management Bus - „SMBus“), eines Low-Pin-Count-(LPC-)Busses, einer seriellen Peripherieschnittstelle (Serial Peripheral Interface - „SPI“), eines High-Definition-Audio-(„HDA“-)Busses, eines Serial-Advance-Technology-Attachment-(„SATA“-)Busses, eines Universal Serial Bus („USB“) (Version 1, 2, 3 usw.) oder eines Universal-Asynchronous-Receiver/Transmitter-(„UART“-)Busses. In mindestens einer Ausführungsform veranschaulicht 40 ein System, das zusammengeschaltete Hardware-Vorrichtungen oder „Chips“ beinhaltet, wohingegen 40 in anderen Ausführungsformen ein beispielhaftes SoC veranschaulichen kann. In mindestens einer Ausführungsform können die in 40 veranschaulichten Vorrichtungen mit proprietären Zusammenschaltungen, standardisierten Zusammenschaltungen (z. B. PCle) oder einer Kombination davon zusammengeschaltet sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten aus 40 unter Verwendung von Compute-Express-Link-(CXL-)Zusammenschaltungen zusammengeschaltet.
  • In mindestens einer Ausführungsform kann 40 eine Anzeige 4024, einen Berührungsbildschirm 4025, ein Touchpad 4030, eine Nahfeld-Kommunikationseinheit („NFC“) 4045, einen Sensor-Hub 4040, einen Wärmesensor 4046, einen Express-Chipsatz („EC“) 4035, ein sicheres Plattformmodul („TPM“) 4038, einen BIOS/Firmware/Flash-Speicher („BIOS, FW-Flash“) 4022, einen DSP 4060, ein Laufwerk 4020, wie etwa ein Solid-State-Laufwerk („SSD“) oder ein Festplattenlaufwerk („HDD“), eine drahtlose lokale Netzwerkeinheit („WLAN“) 4050, eine Bluetooth-Einheit 4052, eine drahtlose Weitverkehrsnetzwerkeinheit („WWAN“) 4056, ein globales Positionsbestimmungssystem (GPS) 4055, eine Kamera („USB 3.0 Kamera“) 4054, wie etwa eine USB-3.0-Kamera und/oder eine Niedrigenergie-Doppeldatenraten- („LPDDR“) Speichereinheit („LPDDR3“) 4015, die beispielsweise im LPDDR3-Standard umgesetzt ist, umfassen. Diese Komponenten können jeweils auf eine beliebige geeignete Weise implementiert sein.
  • In mindestens einer Ausführungsform können andere Komponenten durch hierin beschriebene Komponenten kommunikativ an den Prozessor 4010 gekoppelt sein. In mindestens einer Ausführungsform können ein Beschleunigungsmesser 4041, ein Umgebungslichtsensor („ALS“) 4042, ein Kompass 4043 und ein Gyroskop 4044 kommunikationsmäßig mit dem Sensor-Hub 4040 gekoppelt sein. In mindestens einer Ausführungsform können ein Thermosensor 4039, ein Ventilator 4037, eine Tastatur 4036 und ein Touchpad 4030 kommunikativ an den EC 4035 gekoppelt sein. In mindestens einer Ausführungsform können ein Lautsprecher 4063, ein Kopfhörer 4064 und ein Mikrofon („Mic“) 4065 kommunikationsmäßig mit einer Audioeinheit („Audio-Codec und Verstärker Klasse D“) 4062 gekoppelt sein, die wiederum kommunikationsmäßig mit dem DSP 4060 gekoppelt sein können. In mindestens einer Ausführungsform kann die Audioeinheit 4062 zum Beispiel und ohne Einschränkung einen Audiocodierer/-decodierer („Codec“) und einen Klasse-D-Verstärker beinhalten. In mindestens einer Ausführungsform kann die SIM-Karte („SIM“) 4057 kommunikativ an die WWAN-Einheit 4056 gekoppelt sein. In mindestens einer Ausführungsform können Komponenten, wie etwa die WLAN-Einheit 4050 und die Bluetooth-Einheit 4052, sowie die WWAN-Einheit 4056 in einem Formfaktor der nächsten Generation („NGFF“) umgesetzt sein.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 3515 in dem System aus 40 für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • 41 veranschaulicht ein Computersystem 4100 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist das Computersystem 4100 so konfiguriert, dass es verschiedene Prozesse und Verfahren implementiert, die in dieser Offenbarung beschrieben sind.
  • In mindestens einer Ausführungsform umfasst das Computersystem 4100 ohne Einschränkung mindestens eine zentrale Verarbeitungseinheit („CPU“) 4102, die mit einem Kommunikationsbus 4110 verbunden ist, der unter Verwendung eines beliebigen geeigneten Protokolls implementiert ist, wie etwa PCI („Peripheral Component Interconnect“), Peripheral Component Interconnect Express („PCI-Express“), AGP („Accelerated Graphics Port“), HyperTransport oder beliebiger anderer Bus- oder Punkt-zu-Punkt-Kommunikationsprotokoll(e). In mindestens einer Ausführungsform beinhaltet das Computersystem 4100 ohne Einschränkung einen Hauptspeicher 4104 und Steuerlogik (z. B. implementiert als Hardware, Software oder eine Kombination davon) und Daten werden in dem Hauptspeicher 4104 gespeichert, der die Form eines Direktzugriffsspeichers („RAM“) annehmen kann. In mindestens einer Ausführungsform stellt ein Netzschnittstellen-Teilsystem („Netzschnittstelle“) 4122 eine Schnittstelle zu anderen Rechenvorrichtungen und Netzen bereit, um Daten von anderen Systemen mit dem Computersystem 4100 zu empfangen und an diese zu übertragen.
  • In mindestens einer Ausführungsform beinhaltet das Computersystem 4100 ohne Einschränkung in mindestens einer Ausführungsform Eingabevorrichtungen 4108, ein Parallelverarbeitungssystem 4112 und Anzeigevorrichtungen 4106, 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 implementiert sein können. In mindestens einer Ausführungsform werden Benutzereingaben von Eingabevorrichtungen 4108 wie etwa Tastatur, Maus, Touchpad, Mikrofon usw. empfangen. In mindestens einer Ausführungsform kann sich jedes hierin beschriebene Modul auf einer einzelnen Halbleiterplattform befinden, um ein Verarbeitungssystem zu bilden.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 3515 in dem System aus 41 für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • 42 veranschaulicht ein Computersystem 4200 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet das Computersystem 4200 ohne Einschränkung einen Computer 4210 und einen USB-Stick 4220. In mindestens einer Ausführungsform kann der Computer 4210 ohne Einschränkung eine beliebige Anzahl und einen beliebigen Typ von Prozessor(en) (nicht gezeigt) und einen Speicher (nicht gezeigt) beinhalten. In mindestens einer Ausführungsform beinhaltet der Computer 4210 ohne Einschränkung einen Server, eine Cloud-Instanz, einen Laptop und einen Desktop-Computer.
  • In mindestens einer Ausführungsform beinhaltet der USB-Stick 4220 ohne Einschränkung eine Verarbeitungseinheit 4230, eine USB-Schnittstelle 4240 und eine USB-Schnittstellenlogik 4250. In mindestens einer Ausführungsform kann die Verarbeitungseinheit 4230 ein(e) beliebige(s/r) Anweisungsausführungssystem, - apparat oder -vorrichtung sein, das/der/die dazu in der Lage ist, Anweisungen auszuführen. In mindestens einer Ausführungsform kann die Verarbeitungseinheit 4230 ohne Einschränkung eine beliebige Anzahl und einen beliebigen Typ von Verarbeitungskernen (nicht gezeigt) beinhalten. In mindestens einer Ausführungsform umfasst die Verarbeitungseinheit 4230 eine anwendungsspezifische integrierte Schaltung („ASIC“), die zum Durchführen beliebiger Mengen und Typen von Operationen optimiert ist, die mit maschinellem Lernen assoziiert sind. Zum Beispiel ist in mindestens einer Ausführungsform die Verarbeitungseinheit 4230 eine Tensor-Verarbeitungseinheit („TPC“), die zum Durchführen von Inferenzierungsoperationen des maschinellen Lernens optimiert ist. In mindestens einer Ausführungsform ist die Verarbeitungseinheit 4230 eine Sichtverarbeitungseinheit (vision processing unit - „VPU“), die für zum Durchführen von Inferenzierungsoperationen des maschinellen Sehens und des maschinellen Lernens optimiert ist.
  • In mindestens einer Ausführungsform kann die USB-Schnittstelle 4240 ein beliebiger Typ von USB-Stecker oder USB-Buchse sein. Zum Beispiel ist in mindestens einer Ausführungsform die USB-Schnittstelle 4240 eine USB-3.0-Typ-C-Buchse für Daten und Leistung. In mindestens einer Ausführungsform ist die USB-Schnittstelle 4240 ein USB-3.0-Typ-A-Stecker. In mindestens einer Ausführungsform kann die USB-Schnittstellenlogik 4250 eine beliebige Menge und einen beliebigen Typ von Logik beinhalten, die es der Verarbeitungseinheit 4230 ermöglicht, über den USB-Stecker 4240 eine Schnittstelle mit Vorrichtungen (z. B. dem Computer 4210) zu bilden.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 3515 in dem System aus 42 für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • 43A veranschaulicht eine beispielhafte Architektur, in der eine Vielzahl von GPUs 4310(1)-4310(N) über Hochgeschwindigkeitsverknüpfungen 4305(1)-4305(M) (z. B. Busse, Punkt-zu-Punkt-Zusammenschaltungen usw.) kommunikativ an eine Vielzahl von Mehrkernprozessoren 4340(1)-4340(N) gekoppelt ist. In mindestens einer Ausführungsform unterstützen die Hochgeschwindigkeitsverknüpfungen 4340(1)-4340(N) einen Kommunikationsdurchsatz von 4 GB/s, 30 GB/s, 80 GB/s oder höher. In mindestens einer Ausführungsform können verschiedene Zusammenschaltungsprotokolle verwendet werden, einschließlich, aber nicht beschränkt auf, PCle 4.0 oder 5.0 und NVLink 2.0. In verschiedenen Figuren stellen „N“ und „M“ positive ganze Zahlen dar, deren Werte von Figur zu Figur unterschiedlich sein können.
  • Zusätzlich und in mindestens einer Ausführungsform sind zwei oder mehr der GPUs 4310 über Hochgeschwindigkeitsverknüpfungen 4329(1)-4329(2) zusammengeschaltet, die unter Verwendung ähnlicher oder anderer Protokolle/Verknüpfungen implementiert sein können als derjenigen, die für die Hochgeschwindigkeitsverknüpfungen 4340(1)-4340(N) verwendet werden. Auf ähnliche Weise können zwei oder mehr der Mehrkernprozessoren 4305 über eine Hochgeschwindigkeitsverknüpfung 4328 verbunden sein, bei der es sich um Busse eines symmetrischen Multiprozessors (symmetric multi-processor - SMP) handeln kann, die mit 20 GB/s, 30 GB/s, 120 GB/s oder höher betrieben werden. Alternativ kann die gesamte Kommunikation zwischen den verschiedenen in 43A gezeigten Systemkomponenten unter Verwendung von ähnlichen Protokollen/Verknüpfungen erzielt werden (z. B. über eine gemeinsame Zusammenschaltungsstruktur).
  • In mindestens einer Ausführungsform ist jeder Mehrkernprozessor 4305 jeweils über Speicherzusammenschaltungen 4301 (1)-4301 (M) kommunikativ an einen Prozessorspeicher 4326(1)-4326(M) gekoppelt und jede GPU 4310(1)-4310(N) jeweils über GPU-Speicherzusammenschaltungen 4320(1)-4320(N) kommunikativ an den GPU-Speicher 4350(1)-4350(N) gekoppelt. In mindestens einer Ausführungsform können die Speicherzusammenschaltungen 4326 und 4350 ähnliche oder unterschiedliche Speicherzugriffstechnologien nutzen. Bei den Prozessorspeichern 4301 (1)-4301(M) und den GPU-Speichern 4320 kann es sich beispielsweise und ohne Einschränkung um flüchtige Speicher, wie etwa dynamische Direktzugriffsspeicher (DRAMs) (einschließlich gestapelter DRAMs), Grafik-DDR-SDRAM (GDDR) (z. B. GDDR5, GDDR6) oder Speicher mit hoher Bandbreite (High Bandwidth Memory - HBM), und/oder um nichtflüchtige Speicher, wie etwa 3D XPoint oder Nano-Ram, handeln. In mindestens einer Ausführungsform kann ein Abschnitt der Prozessorspeicher 4301 flüchtiger Speicher sein und ein anderer Abschnitt nichtflüchtiger Speicher sein (z. B. unter Verwendung einer Speicherhierarchie mit zwei Levels (two-level memory - 2LM)).
  • Wie hierin beschrieben, können verschiedene Mehrkernprozessoren 4305 und GPUs 4310 zwar physisch an einen konkreten Speicher 4301 bzw. 4320 gekoppelt sein und/oder eine einheitliche Speicherarchitektur implementiert sein, bei der ein virtueller Systemadressraum (auch als „effektiver Adressraum“ bezeichnet) auf verschiedene physische Speicher verteilt ist. Zum Beispiel können die Prozessorspeicher 4301(1)-4301(M) jeweils 64 GB Systemspeicheradressraum umfassen und die GPU-Speicher 4320(1)-4320(N) jeweils 32 GB Systemspeicheradressraum umfassen, was zu einem adressierbaren Speicher von insgesamt 256 GB führt, wenn M=2 und N=4. Andere Werte für N und M sind möglich.
  • 43B zeigt zusätzliche Details für eine Zusammenschaltung zwischen einem Mehrkernprozessor 4307 und einem Grafikbeschleunigungsmodul 4346 gemäß einer beispielhaften Ausführungsform. In mindestens einer Ausführungsform kann das Grafikbeschleunigungsmodul 4346 einen oder mehrere GPU-Chips beinhalten, die auf einer Leitungskarte integriert sind, die über eine Hochgeschwindigkeitsverknüpfung 4307 (z. B. einen PCIe-Bus, NVLink usw.) an den Prozessor 4340 gekoppelt ist. In mindestens einer Ausführungsform kann das Grafikbeschleunigungsmodul 4346 alternativ auf einem Gehäuse oder Chip mit dem Prozessor 4307 integriert sein.
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 4307 eine Vielzahl von Kernen 4360A-4360D, jeder mit einem Adressenübersetzungspuffer (translation lookaside buffer - „TLB“) 4361A-4361D und einem oder mehreren Caches 4362A-4362D. In mindestens einer Ausführungsform können die Kerne 4360A-4360D verschiedene andere Komponenten zum Ausführen von Anweisungen und Verarbeiten von Daten beinhalten, die nicht veranschaulicht sind. In mindestens einer Ausführungsform können die Caches 4362A-4362D Level-1-(L1-) und Level-2-(L2-)Caches umfassen. Außerdem können ein oder mehrere gemeinsam genutzte Caches 4356 in den Caches 4362A-4362D beinhaltet sein und von Sätzen von Kernen 4360A-4360D gemeinsam genutzt werden. Eine Ausführungsform des Prozessors 4307 beinhaltet zum Beispiel 24 Kerne, jeder mit einem eigenen L1 -Cache, zwölf gemeinsam genutzten L2-Caches und zwölf gemeinsam genutzten L3-Caches. In dieser Ausführungsform werden ein oder mehrere L2- und L3-Caches von zwei benachbarten Kernen gemeinsam genutzt. In mindestens einer Ausführungsform sind der Prozessor 4307 und das Grafikbeschleunigungsmodul 4346 mit dem Systemspeicher 4314 verbunden, der die Prozessorspeicher 4301(1)-4301(M) aus 43A beinhalten kann.
  • In mindestens einer Ausführungsform wird die Kohärenz für Daten und Anweisungen, die in verschiedenen Caches 4362A-4362D, 4356 und Systemspeicher 4314 gespeichert sind, über Zwischenkernkommunikation über einen Kohärenzbus 4364 aufrechterhalten. Zum Beispiel kann in mindestens einer Ausführungsform jeder Cache eine Cache-Kohärenzlogik/-schaltung aufweisen, die damit assoziiert ist, um als Reaktion auf detektierte Lese- oder Schreibvorgänge in konkreten Cache-Zeilen über den Kohärenzbus 4364 zu kommunizieren. In mindestens einer Ausführungsform wird ein Cache-Snooping-Protokoll über den Kohärenzbus 4364 implementiert, um Cache-Zugriffe per Snooping zu kontrollieren.
  • In mindestens einer Ausführungsform koppelt eine Proxy-Schaltung 4325 das Grafikbeschleunigungsmodul 4346 kommunikativ an den Kohärenzbus 4364, was es dem Grafikbeschleunigungsmodul 4346 ermöglicht, an einem Cache-Kohärenzprotokoll als Peer der Kerne 4360A-4360D teilzunehmen. Insbesondere stellt in mindestens einer Ausführungsform eine Schnittstelle 4335 Verbindungsfähigkeit mit der Proxy-Schaltung 4325 über eine Hochgeschwindigkeitsverknüpfung 4340 bereit und eine Schnittstelle 4337 verbindet das Grafikbeschleunigungsmodul 4346 mit der Hochgeschwindigkeitsverknüpfung 4340.
  • In mindestens einer Ausführungsform stellt eine Beschleuniger-Integrationsschaltung 4336 Cache-Verwaltungs-, Speicherzugriffs-, Kontextverwaltungs- und Unterbrechungsverwaltungsdienste im Auftrag einer Vielzahl von Grafikverarbeitungs-Engines 4331(1)-4331(N) des Grafikbeschleunigungsmoduls 4346 bereit. In mindestens einer Ausführungsform können die Grafikverarbeitungs-Engines 4331(1)-4331(N) jeweils eine separate Grafikverarbeitungseinheit (GPU) umfassen. In mindestens einer Ausführungsform können die Grafikverarbeitungs-Engines 4331(1)-4331(N) alternativ unterschiedliche Typen von Grafikverarbeitungs-Engines innerhalb einer GPU umfassen, wie etwa Grafikausführungseinheiten, Medienverarbeitungs-Engines (z. B. Videocodierer/-decodierer), Samplers und Blit-Engines. In mindestens einer Ausführungsform kann das Grafikbeschleunigungsmodul 4346 eine GPU mit einer Vielzahl von Grafikverarbeitungs-Engines 4331(1)-4331(N) sein oder die Grafikverarbeitungs-Engines 4331(1)-4331(N) können einzelne GPUs sein, die auf einem gemeinsamen Gehäuse, einer Leitungskarte oder einem Chip integriert sind.
  • In mindestens einer Ausführungsform beinhaltet die Beschleuniger-Integrationsschaltung 4336 eine Speicherverwaltungseinheit (MMU) 4339 zum Durchführen verschiedener Speicherverwaltungsfunktionen, wie etwa Übersetzungen von virtuellem in physischen Speicher (auch als Übersetzungen von effektivem in realen Speicher bezeichnet) und Speicherzugriffsprotokolle zum Zugreifen auf Systemspeicher 4314. Die MMU 4339 kann in mindestens einer Ausführungsform auch einen Adressenübersetzungspuffer (TLB) (nicht gezeigt) für das Caching von Übersetzungen von virtuellen/effektiven in physische/reale Adressen beinhalten. In mindestens einer Ausführungsform kann ein Cache 4338 Befehle und Daten für einen effizienten Zugriff durch die Grafikverarbeitungs-Engines 4331(1)-4331(N) speichern. In mindestens einer Ausführungsform werden die in dem Cache 4338 und in den Grafikspeichern 4333(1)-4333(M) gespeicherten Daten mit den Kern-Caches 4362A-4362D, 4356 und dem Systemspeicher 4314 kohärent gehalten, möglicherweise unter Verwendung einer Abrufeinheit 4344. Wie erwähnt, kann dies über die Proxy-Schaltung 4325 im Auftrag des Caches 4338 und der Speicher 4333(1)-4333(M) erzielt werden (z. B. Senden von Aktualisierungen an den Cache 4338 in Bezug auf Modifikationen/Zugriffe auf Cache-Zeilen in den Prozessor-Caches 4362A-4362D, 4356 und Empfangen von Aktualisierungen von dem Cache 4338).
  • In mindestens einer Ausführungsform speichert ein Satz von Registern 4345 Kontextdaten für Threads, die durch die Grafikverarbeitungs-Engines 4331 (1)-4331 (N) ausgeführt werden, und eine Kontextverwaltungsschaltung 4348 verwaltet Thread-Kontexte. Zum Beispiel kann die Kontextverwaltungsschaltung 4348 Sicherungs- und Wiederherstellungsoperationen durchführen, um Kontexte verschiedener Threads während Kontextumschaltungen zu sichern und wiederherzustellen (z. B., wenn ein erster Thread gesichert und ein zweiter Thread gespeichert wird, damit ein zweiter Thread durch eine Grafikverarbeitungs-Engine ausgeführt werden kann). Zum Beispiel kann die Kontextverwaltungsschaltung 4348 bei einer Kontextumschaltung derzeitige Registerwerte in einer bezeichneten Region in dem Speicher speichern (z. B. identifiziert durch einen Kontextzeiger). Sie kann dann bei der Rückkehr zu einem Kontext die Registerwerte wiederherstellen. In mindestens einer Ausführungsform empfängt und verarbeitet eine Unterbrechungsverwaltungsschaltung 4347 von Systemvorrichtungen empfangene Unterbrechungen.
  • In mindestens einer Ausführungsform werden virtuelle/effektive Adressen von einer Grafikverarbeitungs-Engine 4331 durch die MMU 4339 in reale/physische Adressen in dem Systemspeicher 4314 übersetzt. In mindestens einer Ausführungsform unterstützt die Beschleuniger-Integrationsschaltung 4336 mehrere (z. B. 4, 8, 16) Grafikbeschleunigermodule 4346 und/oder andere Beschleunigervorrichtungen. Das Grafikbeschleunigermodul 4346 kann in mindestens einer Ausführungsform für eine einzelne Anwendung dediziert sein, die auf dem Prozessor 4307 ausgeführt wird, oder von mehreren Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform ist eine virtualisierte Grafikausführungsumgebung dargestellt, in der die Ressourcen der Grafikverarbeitungs-Engines 4331(1)-4331(N) mit mehreren Anwendungen oder virtuellen Maschinen (VMs) gemeinsam genutzt werden. In mindestens einer Ausführungsform können die Ressourcen in „Schnitte“ unterteilt werden, die unterschiedlichen VMs und/oder Anwendungen auf Grundlage von Verarbeitungsanforderungen und Prioritäten, die mit VMs und/oder Anwendungen assoziiert sind, zugewiesen werden.
  • In mindestens einer Ausführungsform fungiert die Beschleuniger-Integrationsschaltung 4336 als Brücke zu einem System für das Grafikbeschleunigungsmodul 4346 und sie stellt Adressübersetzungs- und Systemspeicher-Cache-Dienste bereit. Darüber hinaus kann die Beschleuniger-Integrationsschaltung 4336 in mindestens einer Ausführungsform Virtualisierungseinrichtungen für einen Host-Prozessor bereitstellen, um die Virtualisierung der Grafikverarbeitungs-Engines 4331(1)-4331(N), Unterbrechungen und Speicherverwaltung zu verwalten.
  • Da in mindestens einer Ausführungsform die Hardware-Ressourcen der Grafikverarbeitungs-Engines 4331(1)-4331(N) explizit auf einen realen Adressraum abgebildet sind, den der Host-Prozessor 4307 sieht, kann ein beliebiger Host-Prozessor diese Ressourcen direkt unter Verwendung eines effektiven Adresswerts adressieren. In mindestens einer Ausführungsform ist eine Funktion der Beschleuniger-Integrationsschaltung 4336 die physische Trennung der Grafikverarbeitungs-Engines 4331(1)-4331(N), sodass sie einem System als unabhängige Einheiten erscheinen.
  • In mindestens einer Ausführungsform sind ein oder mehrere Grafikspeicher 4333(1)-4333(M) jeweils an jede der Grafikverarbeitungs-Engines 4331(1)-4331(N) gekoppelt und es gilt N=M. In mindestens einer Ausführungsform speichern die Grafikspeicher 4333(1)-4333(M) Anweisungen und Daten, die durch jede der Grafikverarbeitungs-Engines 4331(1)-4331(N) verarbeitet werden. In mindestens einer Ausführungsform kann es sich bei den Grafikspeichern 4333(1)-4333(M) um flüchtige Speicher, wie etwa DRAMs (einschließlich gestapelter DRAMs), GDDR-Speicher (z. B. GDDR5, GDDR6) oder HBM, und/oder um nichtflüchtige Speicher, wie etwa 3D XPoint oder Nano-Ram, handeln.
  • In mindestens einer Ausführungsform können zum Reduzieren des Datenverkehrs über die Hochgeschwindigkeitsverknüpfung 4340 Verzerrungstechniken verwendet werden, um sicherzustellen, dass es sich bei den in den Grafikspeichern 4333(1)-4333(M) gespeicherten Daten um Daten handelt, die am häufigsten durch die Grafikverarbeitungs-Engines 4331(1)-4331(N) verwendet werden und vorzugsweise nicht durch die Kerne 4360A-4360D verwendet werden (zumindest nicht häufig). Auf ähnliche Weise versucht in mindestens einer Ausführungsform ein Verzerrungsmechanismus, Daten, die von den Kernen (und vorzugsweise nicht von den Grafikverarbeitungs-Engines 4331(1)-4331(N)) benötigt werden, innerhalb der Caches 4362A-4362D, 4356 und des Systemspeichers 4314 zu behalten.
  • 43C veranschaulicht eine andere beispielhafte Ausführungsform, bei der die Beschleuniger-Integrationsschaltung 4336 in den Prozessor 4307 integriert ist. In dieser Ausführungsform kommunizieren die Grafikverarbeitungs-Engines 4331(1)-4331(N) direkt über die Hochgeschwindigkeitsverknüpfung 4340 mit der Beschleuniger-Integrationsschaltung 4336 über die Schnittstelle 4337 und die Schnittstelle 4335 (die wiederum eine beliebige Form von Bus- oder Schnittstellenprotokoll sein können). In mindestens einer Ausführungsform kann die Beschleuniger-Integrationsschaltung 4336 ähnliche Operationen durchführen wie diejenigen, die in Bezug auf 43B beschrieben sind, aber möglicherweise mit einem höheren Durchsatz, da sie sich in unmittelbarer Nähe zu dem Kohärenzbus 4364 und den Caches 4362A-4362D, 4356 befindet. In mindestens eine Ausführungsform unterstützt eine Beschleuniger-Integrationsschaltung unterschiedliche Programmiermodelle, einschließlich eines Programmiermodells mit dediziertem Prozess (ohne Virtualisierung des Grafikbeschleunigungsmoduls) und gemeinsam genutzter Programmiermodelle (mit Virtualisierung), die Programmiermodelle beinhalten können, die durch die Beschleuniger-Integrationsschaltung 4336 gesteuert werden, und Programmiermodelle, die durch das Grafikbeschleunigungsmodul 4346 gesteuert werden.
  • In mindestens einer Ausführungsform sind die Grafikverarbeitungs-Engines 4331(1)-4331(N) für eine einzelne Anwendung oder einen einzelnen Prozess unter einem einzelnen Betriebssystem dediziert. In mindestens einer Ausführungsform kann eine einzelne Anwendung andere Anwendungsanforderungen zu der Grafikverarbeitungs-Engines 4331(1)-4331(N) lenken und so eine Virtualisierung innerhalb einer VM/Partition bereitstellen.
  • In mindestens einer Ausführungsform können die Grafikverarbeitungs-Engines 4331(1)-4331(N) von mehreren VM-/Anwendungspartitionen gemeinsam genutzt werden. In mindestens einer Ausführungsform können gemeinsam genutzte Modelle einen System-Hypervisor verwenden, um die Grafikverarbeitungs-Engines 4331(1)-4331(N) zu virtualisieren und den Zugriff durch jedes Betriebssystem zu ermöglichen. Bei Systemen mit einzelner Partition ohne Hypervisor befinden sich die Grafikverarbeitungs-Engines 4331(1)-4331(N) in mindestens einer Ausführungsform im Besitz eines Betriebssystems. In mindestens einer Ausführungsform kann ein Betriebssystem die Grafikverarbeitungs-Engines 4331(1)-4331(N) virtualisieren, um Zugriff auf jeden Prozess oder jede Anwendung bereitzustellen.
  • In mindestens einer Ausführungsform wählt das Grafikbeschleunigungsmodul 4346 oder eine einzelne Grafikverarbeitungs-Engine 4331(1)-4331(N) ein Prozesselement unter Verwendung eines Prozessidentifikators aus. In mindestens einer Ausführungsform sind die Prozesselemente in dem Systemspeicher 4314 gespeichert und unter Verwendung der hierin beschriebenen Technik zur Übersetzung von effektiven Adressen in reale Adressen adressierbar. In mindestens einer Ausführungsform kann ein Prozessidentifikator ein implementationsspezifischer Wert sein, der einem Host-Prozess bereitgestellt wird, wenn er seinen Kontext bei der Grafikverarbeitungs-Engine 4331(1)-4331(N) registriert (das heißt, die Systemsoftware aufruft, um ein Prozesselement zu einer mit dem Prozesselement verknüpften Liste hinzuzufügen). In mindestens einer Ausführungsform können die unteren 16 Bit eines Prozessidentifikators einen Versatz eines Prozesselements innerhalb einer mit dem Prozesselement verknüpften Liste sein.
  • 43D veranschaulicht einen beispielhafte Beschleuniger-IntegrationsSchnitt 4390. In mindestens einer Ausführungsform umfasst ein „Schnitt“ einen vorgegebenen Abschnitt der Verarbeitungsressourcen der Beschleuniger-Integrationsschaltung 4336. In mindestens einer Ausführungsform ist eine Anwendung effektiver Adressraum 4382 innerhalb des Systemspeichers 4314, der Prozesselemente 4383 speichert. In mindestens einer Ausführungsform werden Prozesselemente 4383 als Reaktion auf GPU-Aufrufe 4381 von Anwendungen 4380, die auf dem Prozessor 4307 ausgeführt werden, gespeichert. In mindestens einer Ausführungsform enthält ein Prozesselement 4383 den Prozesszustand für die entsprechende Anwendung 4380. In mindestens einer Ausführungsform kann ein in dem Prozesselement 4383 enthaltener Arbeitsdeskriptor (work descriptor - WD) 4384 eine einzelne durch eine Anwendung angeforderte Aufgabe sein oder einen Zeiger auf eine Warteschlange von Aufgaben enthalten. In mindestens einer Ausführungsform ist der WD 4384 ein Zeiger auf eine Aufgabeanforderungswarteschlange im effektiven Adressraum 4382 einer Anwendung.
  • In mindestens einer Ausführungsform können das Grafikbeschleunigungsmodul 4346 und/oder die einzelnen Grafikverarbeitungs-Engines 4331(1)-4331(N) von allen oder einer Teilmenge der Prozesse in einem System gemeinsam genutzt werden. In mindestens einer Ausführungsform kann eine Infrastruktur zum Einrichten der Prozesszustände und zum Senden eines WD 4384 an ein Grafikbeschleunigungsmodul 4346 zum Starten einer Aufgabe in einer virtualisierten Umgebung enthalten sein.
  • In mindestens einer Ausführungsform ist ein Programmiermodell für einen dedizierten Prozess implementationsspezifisch. In mindestens einer Ausführungsform besitzt in diesem Modell ein einzelner Prozess das Grafikbeschleunigungsmodul 4346 oder eine einzelne Grafikverarbeitungs-Engine 4331. Wenn das Grafikbeschleunigungsmodul 4346 durch einen einzelnen Prozess in Besitz genommen ist, initialisiert ein Hypervisor in mindestens einer Ausführungsform die Beschleuniger-Integrationsschaltung 4336 für eine besitzende Partition und ein Betriebssystem initialisiert die Beschleuniger-Integrationsschaltung 4336 für einen besitzenden Prozess, wenn das Grafikbeschleunigungsmodul 4346 zugeordnet ist.
  • In mindestens einer Ausführungsform ruft im Betrieb eine WD-Abrufeinheit 4391 in dem Beschleuniger-Integrationsschnitt 4390 den nächsten WD 4384 ab, der eine Angabe der Arbeit beinhaltet, die durch eine oder mehrere Grafikverarbeitungs-Engines des Grafikbeschleunigungsmoduls 4346 zu erledigen ist. In mindestens einer Ausführungsform können Daten von dem WD 4384 in den Registern 4345 gespeichert und durch die MMU 4339, die Unterbrechungsverwaltungsschaltung 4347 und/oder die Kontextverwaltungsschaltung 4348 verwendet werden, wie veranschaulicht. Eine Ausführungsform der MMU 4339 beinhaltet zum Beispiel eine Segment-/Seitenlaufschaltung zum Zugreifen auf Segment-/Seitentabellen 4386 innerhalb des virtuellen Adressraums 4385 eines OS. In mindestens einer Ausführungsform kann die Unterbrechungsverwaltungsschaltung 4347 von dem Grafikbeschleunigungsmodul 4346 empfangene Unterbrechungsereignisse 4392 verarbeiten. Beim Durchführen von Grafikoperationen wird in mindestens einer Ausführungsform eine durch eine Grafikverarbeitungs-Engine 4331(1)-4331(N) erzeugte effektive Adresse 4393 durch die MMU 4339 in eine reale Adresse übersetzt.
  • In mindestens einer Ausführungsform werden Register 4345 für jede Grafikverarbeitungs-Engine 4331(1)-4331(N) und/oder jedes Grafikbeschleunigungsmodul 4346 dupliziert und sie können durch einen Hypervisor oder ein Betriebssystem initialisiert werden. Jedes dieser duplizierten Register kann in mindestens einer Ausführungsform in einer Beschleuniger-Integrationsschnitt 4390 beinhaltet sein. Beispielhafte Register, die durch einen Hypervisor initialisiert werden können, sind in Tabelle 1 gezeigt. Tabelle 1 - Durch Hypervisor initialisierte Register
    Register Nr. Beschreibung
    1 Schnitt-Steuerungsregister
    2 Geplanter Prozessbereichszeiger für reale Adresse (RA)
    3 Autoritätsmasken-Überschreibungsregister
    4 Unterbrechungsvektor-Tabelleneintragsversatz
    5 Unterbrechungsvektor-Tabelleneintragsbegrenzung
    6 Zustandsregister
    7 Logische Partitions-ID
    8 Hypervisor-Beschleunigernutzungsaufzeichnungszeiger für reale Adresse (RA)
    9 Speicherdeskriptorregister
  • Beispielhafte Register, die durch ein Betriebssystem initialisiert werden können, sind in Tabelle 2 gezeigt. Tabelle 2 - Durch Betriebssystem initialisierte Register
    Register Nr. Beschreibung
    1 Prozess- und Thread-Identifikation
    2 Kontextsicherungs-/Wiederherstellungszeiger für effektive Adresse (EA)
    3 Beschleunigernutzungsaufzeichnungszeiger für virtuelle Adresse (VA)
    4 Speichersegmenttabellenzeiger für virtuelle Adresse (VA)
    5 Autoritätsmaske
    6 Arbeitsdeskriptor
  • In mindestens einer Ausführungsform ist jeder WD 4384 spezifisch für ein konkretes Grafikbeschleunigungsmodul 4346 und/oder die Grafikverarbeitungs-Engines 4331(1)-4331(N). In mindestens einer Ausführungsform enthält er alle Informationen, die für eine Grafikverarbeitungs-Engine 4331(1)-4331(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.
  • 43E veranschaulicht zusätzliche Details für eine beispielhafte Ausführungsform eines gemeinsam genutzten Modells. Diese Ausführungsform beinhaltet einen realen Hypervisor-Adressraum 4398, in dem eine Prozesselementliste 4399 gespeichert ist. In mindestens einer Ausführungsform kann auf den realen Hypervisor-Adressraum 4398 über einen Hypervisor 4396 zugegriffen werden, der die Grafikbeschleunigungsmodul-Engines für das Betriebssystem 4395 virtualisiert.
  • In mindestens einer Ausführungsform ermöglichen gemeinsam genutzte Programmiermodelle, dass alle oder eine Teilmenge von Prozessen aus allen oder einer Teilmenge von Partitionen in einem System ein Grafikbeschleunigungsmodul 4346 verwenden. In mindestens einer Ausführungsform gibt es zwei Programmiermodelle, bei denen das Grafikbeschleunigungsmodul 4346 von mehreren Prozessen und Partitionen gemeinsam genutzt wird, nämlich über Zeit-Schnitte gemeinsam genutzt und über gerichtete Grafik gemeinsam genutzt.
  • In mindestens einer Ausführungsform besitzt in diesem Modell der System-Hypervisor 4396 das Grafikbeschleunigungsmodul 4346 und er stellt seine Funktion allen Betriebssystemen 4395 zur Verfügung. Damit ein Grafikbeschleunigungsmodul 4346 die Virtualisierung durch den System-Hypervisor 4396 unterstützt, muss in mindestens einer Ausführungsform das Grafikbeschleunigungsmodul 4346 bestimmte Anforderungen einhalten, wie etwa (1) die Aufgabenanforderung einer Anwendung muss autonom sein (das heißt, der Zustand muss zwischen den Aufgaben nicht beibehalten werden), oder das Grafikbeschleunigungsmodul 4346 muss einen Mechanismus zum Sichern und Wiederherstellen von Kontext bereitstellen, (2) das Grafikbeschleunigungsmodul 4346 garantiert, dass die Aufgabenanforderung einer Anwendung innerhalb einer vorgegebenen Zeitspanne abgeschlossen wird, einschließlich etwaiger Übersetzungsfehler, oder das Grafikbeschleunigungsmodul 4346 stellt eine Fähigkeit bereit, die Verarbeitung einer Aufgabe vorwegzunehmen, und (3) dem Grafikbeschleunigungsmodul 4346 muss Fairness zwischen den Prozessen garantiert werden, wenn es in einem gerichteten gemeinsam genutzten Programmiermodell arbeitet.
  • In mindestens einer Ausführungsform ist es erforderlich, dass die Anwendung 4380 einen Systemaufruf des Betriebssystems 4395 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. In mindestens einer Ausführungsform beschreibt der Typ des Grafikbeschleunigungsmoduls eine gezielte Beschleunigungsfunktion für einen Systemaufruf. In mindestens einer Ausführungsform kann der Typ des Grafikbeschleunigungsmoduls ein systemspezifischer Wert sein. In mindestens einer Ausführungsform ist der WD spezifisch für das Grafikbeschleunigungsmodul 4346 formatiert und er kann in Form eines Befehls des Grafikbeschleunigungsmoduls 4346, eines effektiven Adresszeigers auf eine benutzerdefinierte Struktur, eines effektiven Adresszeigers auf eine Befehlswarteschlange oder einer beliebigen anderen Datenstruktur vorliegen, um durch das Grafikbeschleunigungsmodul 4346 zu verrichtende Arbeit zu beschreiben.
  • In mindestens einer Ausführungsform ist ein AMR-Wert ein AMR-Zustand, der für einen derzeitigen Prozess zu verwenden ist. In mindestens einer Ausführungsform ist ein Wert, der an ein Betriebssystem übergeben wird, ähnlich einer Anwendung, die einen AMR festlegt. Falls in mindestens einer Ausführungsform Implementationen der Beschleuniger-Integrationsschaltung 4336 (nicht gezeigt) und des Grafikbeschleunigungsmoduls 4346 kein Benutzer-Autoritätsmasken-Überschreibungsregister (User Authority Mask Override Register - UAMOR) unterstützen, kann ein Betriebssystem einen derzeitigen UAMOR-Wert auf einen AMR-Wert anwenden, bevor ein AMR in einem Hypervisor-Aufruf übergeben wird. In mindestens einer Ausführungsform kann der Hypervisor 4396 optional einen derzeitigen Wert für ein Autoritätsmasken-Überschreibungsregister (Authority Mask Override Register - AMOR) anwenden, bevor ein AMR in dem Prozesselement 4383 platziert wird. In mindestens einer Ausführungsform ist CSRP eines der Register 4345, die eine effektive Adresse eines Bereichs im effektiven Adressraum 4382 einer Anwendung für das Grafikbeschleunigungsmodul 4346 zum Sichern und Wiederherstellen des Kontextzustands enthalten. In mindestens einer Ausführungsform ist dieser Zeiger optional, falls zwischen Aufgaben oder bei der Präemption einer Aufgabe kein Zustand gespeichert werden muss. In mindestens einer Ausführungsform kann der Kontext-Sicherungs-/-Wiederherstellungsbereich gepinnter Systemspeicher sein.
  • Beim Empfangen eines Systemaufrufs kann das Betriebssystem 4395 verifizieren, ob die Anwendung 4380 registriert ist und die Autorität zum Verwenden des Grafikbeschleunigungsmoduls 4346 bekommen hat. In mindestens einer Ausführungsform ruft das Betriebssystem 4395 dann den Hypervisor 4396 mit den in Tabelle 3 gezeigten Informationen auf. Tabelle 3 - OS-zu-Hypervisor-Aufrufparameter
    Parameter Nr. Beschreibung
    1 Ein Arbeitsdeskriptor (WD)
    2 Ein Autoritätsmaskenregister(AMR)-Wert (möglicherweise maskiert)
    3 Ein Kontext-Sicherungs-/- Wiederherstellungsbereichszeiger (CSRP) für effektive Adresse (EA)
    4 Eine Prozess-ID (PID) und optionale Thread-ID (TID)
    5 Ein Beschleunigernutzungsaufzeichnungszeiger (AURP) für virtuelle Adresse (VA)
    6 Ein Speichersegmenttabellenzeiger (SSTP) für virtuelle Adresse
    7 Eine logische Unterbrechungsdienstnummer (logical interrupt service number - LISN)
  • In mindestens einer Ausführungsform verifiziert der Hypervisor 4396 beim Empfangen eines Hypervisor-Aufrufs, dass das Betriebssystem 4395 registriert ist und die Autorität zur Verwendung des Grafikbeschleunigungsmoduls 4346 bekommen hat. In mindestens einer Ausführungsform setzt der Hypervisor 4396 dann das Prozesselement 4383 in eine mit dem Prozesselement verknüpfte Liste für einen entsprechenden Typ des Grafikbeschleunigungsmoduls 4346 ein. In mindestens einer Ausführungsform kann ein Prozesselement die in Tabelle 4 gezeigten Informationen beinhalten. Tabelle 4 - Prozesselementinformationen
    Element Nr. Beschreibung
    1 Ein Arbeitsdeskriptor (WD)
    2 Ein Autoritätsmaskenregister(AMR)-Wert (möglicherweise maskiert).
    3 Ein Kontext-Sicherungs-/- Wiederherstellungsbereichszeiger (CSRP) für effektive Adresse (EA)
    4 Eine Prozess-ID (PID) und optionale Thread-ID (TID)
    5 Ein Beschleunigernutzungsaufzeichnungszeiger (AURP) für virtuelle Adresse (VA)
    6 Ein Speichersegmenttabellenzeiger (SSTP) für virtuelle Adresse
    7 Eine logische Unterbrechungsdienstnummer (logical interrupt service number - LISN)
    8 Unterbrechungsvektortabelle, abgeleitet aus Hypervisor-Aufrufparametern
    9 Ein Zustandsregister(SR)-Wert
    10 Ein Wert für eine logische Partition-ID (LPID)
    11 Ein Hypervisor-Beschleunigernutzungsaufzeichnungszeiger für reale Adresse (RA)
    12 Speicherdeskriptorregister (Storage Descriptor Register - SDR)
  • In mindestens einer Ausführungsform initialisiert der Hypervisor eine Vielzahl von Registern 4345 des Beschleunigerintegrations-Schnittes 4390.
  • Wie in 43F veranschaulicht , wird in mindestens einer Ausführungsform ein einheitlicher Speicher verwendet, der über einen gemeinsamen virtuellen Speicheradressraum adressierbar ist, der zum Zugreifen auf die physischen Prozessorspeicher 4301(1)-4301(N) und die GPU-Speicher 4320(1)-4320(N) verwendet wird. In dieser Implementation nutzen Operationen, die auf den GPUs 4310(1)-4310(N) ausgeführt werden, einen gleichen virtuellen/effektiven Speicheradressraum für den Zugriff auf die Prozessorspeicher 4301 (1)-4301(M) und umgekehrt, was die Programmierbarkeit vereinfacht. In mindestens einer Ausführungsform wird ein erster Abschnitt eines virtuellen/effektiven Adressraums dem Prozessorspeicher 4301 (1) zugewiesen, ein zweiter Abschnitt dem zweiten Prozessorspeicher 4301 (N), ein dritter Abschnitt dem GPU-Speicher 4320(1) und so weiter. In mindestens einer Ausführungsform wird dadurch ein gesamter virtueller/effektiver Speicherraum (mitunter als effektiver Adressraum bezeichnet) über jeden der Prozessorspeicher 4301 und GPU-Speicher 4320 verteilt, was ermöglicht, dass ein beliebiger Prozessor oder eine beliebige GPU auf einen beliebigen physischen Speicher mit einer virtuellen Adresse zugreifen kann, die auf diesen Speicher abgebildet ist.
  • In mindestens einer Ausführungsform stellt die Verzerrungs-/Kohärenzverwaltungsschaltung 4394A-4394E innerhalb einer oder mehrerer MMUs 4339A-4339E die Cache-Kohärenz zwischen Caches eines oder mehrerer Host-Prozessoren (z. B. 4305) und GPUs 4310 sicher und implementiert Verzerrungstechniken, die physische Speicher angeben, in denen bestimmte Typen von Daten gespeichert werden sollten. Wenngleich in mindestens einer Ausführungsform mehrere Instanzen der Verzerrungs-/Kohärenzverwaltungsschaltung 4394A-4394E in 43F veranschaulicht sind, kann die Verzerrungs-/Kohärenzschaltung innerhalb einer MMU eines oder mehrerer Host-Prozessoren 4305 und/oder innerhalb der Beschleuniger-Integrationsschaltung 4336 implementiert sein.
  • Eine Ausführungsform ermöglicht es, dass GPU-Speicher 4320 als Teil des Systemspeichers abgebildet werden und unter Verwendung von Technologie für gemeinsam genutzten virtuellen Speicher (shared virtual memory - SVM) darauf zugegriffen wird, ohne jedoch Rechenleistungsnachteile zu erleiden, die mit der vollständigen System-Cache-Kohärenz assoziiert sind. In mindestens einer Ausführungsform stellt eine Fähigkeit, dass auf GPU-Speicher 4320 als Systemspeicher ohne lästigen Cache-Kohärenz-Overhead zugegriffen wird, eine vorteilhafte Betriebsumgebung für GPU-Abladung bereit. In mindestens einer Ausführungsform ermöglicht diese Anordnung es der Software des Host-Prozessors 4305, ohne den Overhead der traditionellen E/A-DMA-Datenkopien Operanden einzurichten und auf Berechnungsergebnisse zuzugreifen. In mindestens einer Ausführungsform sind an derartigen traditionellen Kopien Treiberaufrufe, Unterbrechungen und auf Speicher abgebildete E/A-Zugriffe (memory mapped I/O accesses - MMIO-Zugriffe) beteiligt, die alle in Bezug auf einfache Speicherzugriffe ineffizient sind. In mindestens einer Ausführungsform kann eine Fähigkeit, ohne Cache-Kohärenz-Overheads auf GPU-Speicher 4320 zuzugreifen, für die Ausführungszeit einer abgeladenen Berechnung entscheidend sein. In Fällen mit erheblichem Streaming-Schreibspeicherverkehr kann zum Beispiel der Cache-Kohärenz-Overhead eine effektive Schreibbandbreite, die durch eine GPU 4310 gesehen wird, in mindestens einer Ausführungsform erheblich reduzieren. In mindestens einer Ausführungsform können die Effizienz des Operandensetups, die Effizienz des Ergebniszugriffs und die Effizienz der GPU-Berechnung eine Rolle beim Bestimmen der Effektivität einer GPU-Abladung spielen.
  • In mindestens einer Ausführungsform wird die Auswahl von GPU-Verzerrung und Host-Prozessorverzerrung durch eine Verzerrungs-Tracker-Datenstruktur angetrieben. In mindestens einer Ausführungsform kann zum Beispiel eine Verzerrungstabelle verwendet werden, die eine seitengranulare Struktur sein kann (z. B. mit einer Granularität einer Speicherseite gesteuert), die 1 oder 2 Bit pro GPUgebundener Speicherseite beinhaltet. In mindestens einer Ausführungsform kann eine Verzerrungstabelle in einem gestohlenen Speicherbereich eines oder mehrerer GPU-Speicher 4320 implementiert werden, mit oder ohne Verzerrungs-Cache in einer GPU 4310 (um z. B. häufig/kürzlich verwendete Einträge einer Verzerrungstabelle zwischenzuspeichern). Alternativ kann in mindestens einer Ausführungsform eine gesamte Verzerrungstabelle innerhalb einer GPU aufbewahrt werden.
  • In mindestens einer Ausführungsform wird vor dem tatsächlichen Zugriff auf einen GPU-Speicher auf einen Verzerrungstabelleneintrag zugegriffen, der mit jedem Zugriff auf den GPU-Speicher 4320 assoziiert ist, wodurch die folgenden Operationen verursacht werden. In mindestens einer Ausführungsform werden lokale Anforderungen von einer GPU 4310, die ihre Seite in der GPU-Verzerrung finden, direkt an einen entsprechenden GPU-Speicher 4320 weitergeleitet. In mindestens einer Ausführungsform werden lokale Anforderungen von einer GPU, die ihre Seite in der Host-Verzerrung finden, an den Prozessor 4305 weitergeleitet (z. B. über eine Hochgeschwindigkeitsverknüpfung, wie hierin beschrieben). In mindestens einer Ausführungsform schließen Anforderungen von dem Prozessor 4305, die eine angeforderte Seite in der Host-Prozessor-Verzerrung finden, eine Anforderung wie ein normales Lesen des Speichers ab. Alternativ können Anforderungen, die an eine GPU-Verzerrungsseite gerichtet sind, an eine GPU 4310 weitergeleitet werden. In mindestens einer Ausführungsform kann eine GPU dann eine Seite in eine Host-Prozessor-Verzerrung umwandeln, falls sie derzeitig keine Seite verwendet. In mindestens einer Ausführungsform kann ein Verzerrungszustand 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 Verzerrungszustands setzt in 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 Verzerrungszustand zu ändern und bei einigen Übergängen eine Cache-Leerungsoperation in einem Host durchzuführen. In mindestens einer Ausführungsform wird eine Cache-Leerungsoperation für einen Übergang von der Verzerrung des Host-Prozessors 4305 zur Verzerrung der GPU verwendet, jedoch nicht für einen entgegengesetzten Übergang.
  • In mindestens einer Ausführungsform wird die Cache-Kohärenz aufrechterhalten, indem bewirkt wird, dass GPU-verzerrte Seiten durch den Host-Prozessor 4305 vorübergehend nicht zwischengespeichert werden können. Um auf diese Seiten zuzugreifen, kann in mindestens einer Ausführungsform der Prozessor 4305 Zugriff von der GPU 4310 anfordern, die den Zugriff sofort gewähren kann oder auch nicht. Um die Kommunikation zwischen dem Prozessor 4305 und der GPU 4310 zu reduzieren, ist es daher in mindestens einer Ausführungsform vorteilhaft, sicherzustellen, dass GPU-verzerrte Seiten solche sind, die durch eine GPU, aber nicht den Host-Prozessor 4305, benötigt werden und umgekehrt.
  • 44 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 in mindestens einer Ausführungsform enthalten sein, einschließlich zusätzlicher Grafikprozessoren/-kerne, Peripherieschnittstellensteuerungen oder Universalprozessorkerne.
  • 44 ist ein Blockdiagramm, das eine beispielhafte integrierte Schaltung 4400 als System auf einem Chip, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann, gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform beinhaltet die integrierte Schaltung 4400 einen oder mehrere Anwendungsprozessor(en) 4405 (z. B. CPU), mindestens einen Grafikprozessor 4410 und kann zusätzlich einen Bildprozessor 4415 und/oder einen Videoprozessor 4420 beinhalten, von denen jeder ein modularer IP-Kern sein kann. In mindestens einer Ausführungsform beinhaltet die integrierte Schaltung 4400 Peripherie- oder Buslogik, die eine USB-Steuerung 4425, eine UART-Steuerung 4430, eine SPI/SDIO-Steuerung 4435 und eine I22S/I22C-Steuerung 4440 beinhaltet. In mindestens einer Ausführungsform kann die integrierte Schaltung 4400 eine Anzeigevorrichtung 4445 beinhalten, die an eine oder mehrere von einer High-Definition-Multimedia-Interface-(HDMI-)Steuerung 4450 und einer Mobile-Industry-Processor-Interface-(MIPI-)Anzeigeschnittstelle 4455 gekoppelt ist. In mindestens einer Ausführungsform kann die Speicherung durch ein Flash-Speicherteilsystem 4460 bereitgestellt sein, das Flash-Speicher und eine Flash-Speichersteuerung beinhaltet. In mindestens einer Ausführungsform kann eine Speicherschnittstelle über eine Speichersteuerung 4465 für den Zugriff auf SDRAM- oder SRAM-Speichervorrichtungen bereitgestellt sein. In mindestens einer Ausführungsform beinhalten einige integrierte Schaltungen zusätzlich eine eingebettete Sicherheits-Engine 4470.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 3515 in der integrierten Schaltung 4400 für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • 45A-45B veranschaulichen beispielhafte integrierte Schaltungen und zugeordnete Grafikprozessoren, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden können, gemäß verschiedenen hierin beschriebenen Ausführungsformen. Zusätzlich zu dem, was veranschaulicht ist, können andere Logik und Schaltungen in mindestens einer Ausführungsform enthalten sein, einschließlich zusätzlicher Grafikprozessoren/-kerne, Peripherieschnittstellensteuerungen oder Universalprozessorkerne.
  • 45A-45B sind Blockdiagramme, die beispielhafte Grafikprozessoren zur Verwendung innerhalb eines SoC gemäß hierin beschriebenen Ausführungsformen veranschaulichen. 45A veranschaulicht einen beispielhaften Grafikprozessor 4510 einer integrierten Schaltung als System auf einem Chip, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann, gemäß mindestens einer Ausführungsform. 45B veranschaulicht einen zusätzlichen beispielhaften Grafikprozessor 4540 einer integrierten Schaltung als System auf einem Chip, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der Grafikprozessor 4510 aus 45A ein Grafikprozessorkern mit niedriger Leistung. In mindestens einer Ausführungsform ist der Grafikprozessor 4540 aus 45B ein Grafikprozessorkern mit höherer Rechenleistung. In mindestens einer Ausführungsform kann jeder der Grafikprozessoren 4510, 4540 eine Variante des Grafikprozessors 4410 aus 44 sein.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 4510 einen Vertex-Prozessor 4505 und einen oder mehrere Fragmentprozessoren 4515A-4515N (z. B. 4515A, 4515B, 4515C, 4515D bis 4515N-1 und 4515N). In mindestens einer Ausführungsform kann der Grafikprozessor 4510 unterschiedliche Shader-Programme über getrennte Logik ausführen, sodass der Vertex-Prozessor 4505 optimiert ist, um Operationen für Vertex-Shader-Programme auszuführen, während ein oder mehrere Fragmentprozessoren 4515A-4515N Shading-Operationen für Fragmente (z. B. Pixel) für Fragment- oder Pixel-Shader-Programme ausführen. In mindestens einer Ausführungsform führt der Vertex-Prozessor 4505 eine Vertex-Verarbeitungsstufe einer 3D-Grafikpipeline durch und erzeugt Primitiv- und Vertex-Daten. In mindestens einer Ausführungsform verwenden ein oder mehrere Fragmentprozessoren 4515A-4515N Primitiv- und Vertex-Daten, die durch den Vertex-Prozessor 4505 erzeugt werden, um einen Bildspeicher zu erzeugen, der auf einer Anzeigevorrichtung angezeigt wird. In mindestens einer Ausführungsform sind ein oder mehrere Fragmentprozessoren 4515A-4515N optimiert, um Fragment-Shader-Programme auszuführen, wie in einer OpenGL-API bereitgestellt, die verwendet werden können, um ähnliche Operationen wie ein Pixel-Shader-Programm durchzuführen, wie es in einer Direct 3D-API bereitgestellt ist.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 4510 zusätzlich eine(n) oder mehrere Speicherverwaltungseinheiten (MMUs) 4520A-4520B, Cache(s) 4525A-4525B und Schaltungszusammenschaltung(en) 4530A-4530B. In mindestens einer Ausführungsform stellen eine oder mehrere MMU 4520A-4520B eine virtuell-physische Adresszuordnung für den Grafikprozessor 4510 bereit, was für den Vertex-Prozessor 4505 und/oder Fragmentprozessor(en) 4515A-4515N beinhaltet, die sich auf Vertex- oder im Speicher gespeicherte Bild-/Texturdaten zusätzlich zu in einem oder mehreren Cache 4525A-4525B gespeicherten Vertex- oder Bild-/Texturdaten beziehen. In mindestens einer Ausführungsform können eine oder mehrere MMU 4520A-4520B mit anderen MMU innerhalb des Systems synchronisiert werden, was beinhaltet, dass eine oder mehrere MMU einem oder mehreren Anwendungsprozessoren 4405, Bildprozessoren 4415 und/oder Videoprozessoren 4420 aus 44 zugeordnet sind, sodass jeder Prozessor 4405-4420 an einem gemeinsam genutzten oder vereinheitlichten virtuellen Speichersystem teilnehmen kann. In mindestens einer Ausführungsform ermöglichen es eine oder mehrere Schaltungszusammenschaltung(en) 4530A-4530B dem Grafikprozessor 4510, entweder über einen internen Bus des SoC oder über eine direkte Verbindung Schnittstellen mit anderen IP-Kernen innerhalb des SoC zu bilden.
  • In mindestens einer Ausführungsform umfasst der Grafikprozessor 4540 einen oder mehrere Shader-Kerne 4555A-4555N (z. B. 4555A, 4555B, 4555C, 4555D, 4555E, 4555F bis 4555N-1 und4555N), wie in 45B dargestellt, was eine einheitliche Shader-Kernarchitektur 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 Implementierung von Vertex-Shadern, Fragment-Shadern und/oder Compute-Shadern. In mindestens einer Ausführungsform kann eine Anzahl der Shader-Kerne variieren. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 4540 eine Aufgabenverwaltung innerhalb des Kerns 4545, die als Thread-Zuteiler fungiert, um Ausführungsthreads an einen oder mehrere Shader-Kerne 4555A-4555N zu verteilen, und eine Kachelungseinheit 4558, um Kachelungsoperationen für kachelbasiertes Rendering zu beschleunigen, bei dem Rendering-Operationen für eine Szene im Bildraum unterteilt werden, um zum Beispiel lokale räumliche Kohärenz innerhalb einer Szene auszunutzen oder um die Nutzung interner Zwischenspeicher zu optimieren.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 3515 in der integrierten Schaltung 45A und/oder 45B für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • Die 46A-46B veranschaulichen zusätzliche beispielhafte Grafikprozessorlogik gemäß in dieser Schrift beschriebenen Ausführungsformen. 46A veranschaulicht einen Grafikkern 4600, der in dem Grafikprozessor 4410 aus 44 in mindestens einer Ausführungsform beinhaltet sein kann, und kann ein einheitlicher Shader-Kern 4555A-4555N wie in 45B in mindestens einer Ausführungsform sein. 46B veranschaulicht eine hochparallele Universal-Grafikverarbeitungseinheit (general-purpose graphics processing unit - „GPGPU“) 4630, die in mindestens einer Ausführungsform für den Einsatz auf einem Multi-Chip-Modul geeignet ist.
  • In mindestens einer Ausführungsform beinhaltet der Grafikkern 4600 einen gemeinsam genutzten Anweisungscache 4602, eine Textureinheit 4618 und einen Cache/gemeinsam genutzten Speicher 4620, die Ausführungsressourcen innerhalb des Grafikkerns 4600 gemein sind. In mindestens einer Ausführungsform kann der Grafikkern 4600 mehrere Schnitte 4601A-4601N oder eine Partition für jeden Kern beinhalten, und ein Grafikprozessor kann mehrere Instanzen des Grafikkerns 4600 beinhalten. In mindestens einer Ausführungsform können die Schnitte 4601A-4601N Unterstützungslogik beinhalten, die einen lokalen Anweisungs-Cache 4604A-4604N, einen Thread-Planer 4606A-4606N, einen Thread-Zuteiler 4608A-4608N und einen Satz von Registern 4610A-4610N beinhaltet. In mindestens einer Ausführungsform können die Schnitte 4601A-4601N einen Satz zusätzlicher Funktionseinheiten (additional function units - AFUs 4612A-4612N), Gleitkommaeinheiten (floating-point units - FPUs 4614A-4614N), arithmetisch-logischer Einheiten für Integer (ALUs 4616A-4616N), Adressberechnungseinheiten (address computational units - ACUs 4613A-4613N), Gleitkommaeinheiten mit doppelter Genauigkeit (double-precision floating-point units - DPFPUs 4615A-4615N) und Matrixverarbeitungseinheiten (matrix processing units - MPUs 4617A-4617N) beinhalten.
  • In mindestens einer Ausführungsform können die FPU 4614A-4614N Gleitkommaoperationen mit einfacher Genauigkeit (32 Bit) und mit halber Genauigkeit (16 Bit) durchführen, während die DPFPU 4615A-4615N Gleitkommaoperationen mit doppelter Genauigkeit (64 Bit) durchführen. In mindestens einer Ausführungsform können die ALU 4616A-4616N ganzzahlige Operationen mit variabler Präzision mit einer Genauigkeit von 8 Bit, 16 Bit und 32 Bit durchführen und können für Operationen mit gemischter Präzision konfiguriert sein. In mindestens einer Ausführungsform können die MPU 4617A-4617N auch für Matrixoperationen mit gemischter Genauigkeit konfiguriert sein, die Gleitkomma- und 8-Bit-Ganzzahloperationen mit halber Genauigkeit beinhalten. In mindestens einer Ausführungsform können die MPUs 4617-4617N eine Vielfalt von Matrixoperationen durchführen, um Anwendungsrahmen für maschinelles Lernen zu beschleunigen, einschließlich des Ermöglichens der Unterstützung für eine beschleunigte allgemeine Matrix-zu-Matrix-Multiplikation (general matrix to matrix multiplication - GEMM). In mindestens einer Ausführungsform können die AFU 4612A-4612N zusätzliche logische Operationen ausführen, die nicht durch Gleitkomma- oder Ganzzahleinheiten unterstützt werden, einschließlich trigonometrischer Operationen (z. B. Sinus, Cosinus usw.).
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform kann eine Inferenz- und/oder Trainingslogik 3515 in dem Grafikkern 4600 zum Inferenzieren oder Vorhersagen von Operationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von neuronalen Netztrainingsoperationen, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen von neuronalen Netzen berechnet wurden.
  • 46B veranschaulicht eine Universalverarbeitungseinheit (general-purpose processing unit - GPGPU) 4630, die konfiguriert werden kann, um hochparallele Rechenoperationen zu ermöglichen, die von einem Array von Grafikverarbeitungseinheiten ausgeführt werden sollen, in mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die GPGPU 4630 direkt mit anderen Instanzen der GPGPU 4630 verbunden sein, um einen Multi-GPU-Cluster zu erzeugen, um die Trainingsgeschwindigkeit für tiefe neuronale Netze zu verbessern. In mindestens einer Ausführungsform beinhaltet die GPGPU 4630 eine Host-Schnittstelle 4632, um eine Verbindung mit einem Host-Prozessor zu ermöglichen. In mindestens einer Ausführungsform ist die Host-Schnittstelle 4632 eine PCI-Express-Schnittstelle. In mindestens einer Ausführungsform kann die Host-Schnittstelle 4632 eine anbieterspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur sein. In mindestens einer Ausführungsform empfängt die GPGPU 4630 Befehle von einem Host-Prozessor und verwendet einen globalen Planer 4634, um Ausführungs- Threads, die diesen Befehlen zugeordnet sind, an einen Satz von Rechenclustern 4636A-4636H zu verteilen. In mindestens einer Ausführungsform nutzen die Rechencluster4636A-4636H einen Cache-Speicher 4638 gemeinsam. In mindestens einer Ausführungsform kann der Cache-Speicher 4638 als ein Cache höherer Ebene für Cache-Speicher innerhalb der Rechencluster 4636A-4636H dienen.
  • In mindestens einer Ausführungsform beinhaltet die GPGPU 4630 Speicher 4644A-4644B, der über einen Satz von Speichersteuerungen 4642A-4642B mit den Rechenclustern 4636A-4636H gekoppelt ist. In mindestens einer Ausführungsform kann der Speicher 4644A-4644B verschiedene Typen von Speichervorrichtungen beinhalten, darunter dynamischer Direktzugriffsspeicher (DRAM) oder Grafik-Direktzugriffsspeicher, wie etwa synchroner Grafik-Direktzugriffsspeicher (SGRAM), darunter Grafik-Double-Data-Rate-(GDDR-)Speicher.
  • In mindestens einer Ausführungsform beinhalten die Rechencluster 4636A-4636H jeweils einen Satz von Grafikkernen, wie etwa den Grafikkern 4600 aus 46A, die mehrere Arten von Ganzzahl- und Gleitkomma-Logikeinheiten beinhalten kann, die Rechenoperationen mit einer Reihe von Genauigkeiten ausführen können, die für maschinelle Lernberechnungen geeignete beinhalten. Zum Beispiel kann in mindestens einer Ausführungsform mindestens eine Teilmenge von Gleitkommaeinheiten in jedem der Rechencluster 4636A-4636H dazu konfiguriert sein, 16-Bit- oder 32-Bit-Gleitkommaoperationen auszuführen, während eine andere Teilmenge von Gleitkommaeinheiten dazu konfiguriert sein können, 64-Bit-Gleitkommaoperationen auszuführen.
  • In mindestens einer Ausführungsform können mehrere Instanzen der GPGPU 4630 konfiguriert sein, um als ein Rechencluster betrieben zu werden. In mindestens einer Ausführungsform variiert die Kommunikation, die von den Rechenclustern 4636A-4636H für die Synchronisation und den Datenaustausch verwendet wird, zwischen den Ausführungsformen. In mindestens einer Ausführungsform kommunizieren mehrere Instanzen der GPGPU 4630 über die Host-Schnittstelle 4632. In mindestens einer Ausführungsform beinhaltet die GPGPU 4630 einen E/A-Hub 4639, der die GPGPU 4630 mit einer GPU-Verbindung 4640 koppelt, die eine direkte Verbindung zu anderen Instanzen der GPGPU 4630 ermöglicht. In mindestens einer Ausführungsform ist die GPU-Verbindung 4640 an eine dedizierte GPU-zu-GPU-Brücke gekoppelt, die die Kommunikation und Synchronisation zwischen mehreren Instanzen der GPGPU 4630 ermöglicht. In mindestens einer Ausführungsform ist die GPU-Verbindung 4640 mit einer Hochgeschwindigkeitszusammenschaltung gekoppelt, um Daten an andere GPGPUs oder Parallelprozessoren zu übertragen und davon zu empfangen. In mindestens einer Ausführungsform befinden sich mehrere Instanzen der GPGPU 4630 in getrennten Datenverarbeitungssystemen und kommunizieren über eine Netzwerkvorrichtung, auf die über die Host-Schnittstelle 4632 zugegriffen werden kann. In mindestens einer Ausführungsform kann die GPU-Verbindung 4640 konfiguriert sein, um eine Verbindung zu einem Host-Prozessor zusätzlich zu oder als Alternative zu der Host-Schnittstelle 4632 zu ermöglichen.
  • In mindestens einer Ausführungsform kann die GPGPU 4630 dazu konfiguriert sein, neuronale Netze zu trainieren. In mindestens einer Ausführungsform kann die GPGPU 4630 innerhalb einer Inferenzplattform verwendet werden. In mindestens einer Ausführungsform, in der die GPGPU 4630 zum Inferenzieren verwendet wird, kann die GPGPU 4630 weniger Rechencluster 4636A-4636H beinhalten, als wenn die GPGPU 4630 zum Trainieren eines neuronalen Netzes verwendet wird. In mindestens einer Ausführungsform kann sich die dem Speicher 4644A-4644B zugeordnete Speichertechnologie zwischen Inferenz- und Trainingskonfigurationen unterscheiden, wobei Speichertechnologien mit höherer Bandbreite Trainingskonfigurationen gewidmet sind. In mindestens einer Ausführungsform kann eine Inferenzkonfiguration der GPGPU 4630 inferenzspezifische Anweisungen unterstützen. In mindestens einer Ausführungsform kann eine Inferenzkonfiguration zum Beispiel Unterstützung für eine oder mehrere 8-Bit-Integer-Skalarprodukt-Anweisungen bereitstellen, die während der Inferenzierungsoperationen für eingesetzte neuronale Netze verwendet werden können.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform kann eine Inferenz- und/oder Trainingslogik 3515 in der GPGPU 4630 zum Inferenzieren oder Vorhersagen von Operationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von neuronalen Netztrainingsoperationen, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen von neuronalen Netzen berechnet wurden.
  • 47 ist ein Blockdiagramm, das ein Rechensystem 4700 gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform beinhaltet das Rechensystem 4700 ein Verarbeitungsteilsystem 4701, das einen oder mehrere Prozessor(en) 4702 und einen Systemspeicher 4704 aufweist, die über einen Zusammenschaltungspfad kommunizieren, der einen Speicher-Hub 4705 beinhalten kann. In mindestens einer Ausführungsform kann der Speicher-Hub 4705 eine separate Komponente innerhalb einer Chipsatzkomponente sein oder kann in einen oder mehrere Prozessor(en) 4702 integriert sein. In mindestens einer Ausführungsform ist der Speicher-Hub 4705 über eine Kommunikationsverbindung 4706 mit einem E/A-Teilsystem 4711 gekoppelt. In mindestens einer Ausführungsform beinhaltet das E/A-Teilsystem 4711 einen E/A-Hub 4707, der es dem Rechensystem 4700 ermöglichen kann, Eingaben von einer oder mehreren Eingabevorrichtung(en) 4708 zu empfangen. In mindestens einer Ausführungsform kann der E/A-Hub 4707 einer Anzeigesteuerung, die in einem oder mehreren Prozessor(en) 4702 enthalten sein kann, ermöglichen, einer oder mehreren Anzeigevorrichtung(en) 4710A Ausgaben bereitzustellen. In mindestens einer Ausführungsform können eine oder mehrere mit dem E/A-Hub 4707 gekoppelte Anzeigevorrichtung(en) 4710A eine lokale, interne oder eingebettete Anzeigevorrichtung beinhalten.
  • In mindestens einer Ausführungsform beinhaltet das Verarbeitungsteilsystem 4701 einen oder mehrere Parallelprozessor(en) 4712, die über einen Bus oder eine andere Kommunikationsverbindung 4713 an den Speicher-Hub 4705 gekoppelt sind. In mindestens einer Ausführungsform kann die Kommunikationsverknüpfung 4713 eine/eines von einer beliebigen Anzahl von standardbasierten Kommunikationsverknüpfungstechnologien oder -protokollen verwenden, wie etwa, aber nicht beschränkt auf, PCI Express oder eine anbieterspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur sein. In mindestens einer Ausführungsform bilden ein oder mehrere Parallelprozessor(en) 4712 ein rechnerisch fokussiertes Parallel- oder Vektorverarbeitungssystem, das eine große Anzahl von Verarbeitungskernen und/oder Verarbeitungsclustern beinhalten kann, wie etwa einen Prozessor mit vielen integrierten Kernen (many-integrated core - MIC). In mindestens einer Ausführungsform bilden einige oder alle der Parallelprozessor(en) 4712 ein Grafikverarbeitungsteilsystem, das Pixel an eine oder mehrere Anzeigevorrichtung(en) 4710A ausgeben kann, die über den E/A-Hub 4707 gekoppelt sind. In mindestens einer Ausführungsform können die Parallelprozessor(en) 4712 zudem eine Anzeigesteuerung und eine Anzeigeschnittstelle (nicht gezeigt) beinhalten, um eine direkte Verbindung zu einer oder mehreren Anzeigevorrichtung(en) 4710B zu ermöglichen.
  • In mindestens einer Ausführungsform kann eine Systemspeichereinheit 4714 mit dem E/A-Hub 4707 verbunden sein, um einen Speichermechanismus für das Rechensystem 4700 bereitzustellen. In mindestens einer Ausführungsform kann ein E/A-Switch 4716 verwendet werden, um einen Schnittstellenmechanismus bereitzustellen, der Verbindungen zwischen dem E/A-Hub 4707 und anderen Komponenten ermöglicht, wie etwa einem Netzadapter 4718 und/oder einem drahtlosen Netzadapter 4719, die in eine Plattform integriert werden können, sowie verschiedenen anderen Vorrichtungen, die über eine oder mehrere Erweiterungsvorrichtung(en) 4720 hinzugefügt werden können. In mindestens einer Ausführungsform kann der Netzwerkadapter 4718 ein Ethernet-Adapter oder ein anderer drahtgebundener Netzwerkadapter sein. In mindestens einer Ausführungsform kann der drahtlose Netzadapter 4719 eine oder mehrere Wi-Fi-, Bluetooth-, Nahfeldkommunikations- (NFC-) oder eine andere Netzvorrichtung beinhalten, die ein oder mehrere drahtlose Funkgeräte beinhaltet.
  • In mindestens einer Ausführungsform kann das Rechensystem 4700 andere Komponenten beinhalten, die nicht ausdrücklich dargestellt sind, die USB oder andere Port-Verbindungen, optische Speicherlaufwerke, Videoaufnahmevorrichtungen und dergleichen beinhalten, und auch mit dem E/A-Hub 4707 verbunden sein können. In mindestens einer Ausführungsform können die Kommunikationspfade, die verschiedene Komponenten in 47 zusammenschalten, unter Verwendung beliebiger geeigneter Protokolle implementiert werden, wie etwa auf PCI (Peripheral Component Interconnect) basierender Protokolle (z. B. PCI-Express) oder anderer Bus- oder Punkt-zu-Punkt-Kommunikationsschnittstellen und/oder -protokoll(e), wie etwa NV-Link-Hochgeschwindigkeitszusammenschaltung, oder Zusammenschaltungsprotokolle.
  • In mindestens einer Ausführungsform beinhalten die Parallelprozessor(en) 4712 Schaltungen, die für die Grafik- und Videoverarbeitung optimiert sind, einschließlich zum Beispiel Videoausgabeschaltungen, und sie stellen eine Grafikverarbeitungseinheit (GPU) dar. In mindestens einer Ausführungsform beinhalten die Parallelprozessor(en) 4712 Schaltungen, die für Universalverarbeitung optimiert sind. In mindestens einer Ausführungsform können Komponenten des Rechensystems 4700 mit einem oder mehreren anderen Systemelementen auf einer einzelnen integrierten Schaltung integriert sein. Zum Beispiel können in mindestens einer Ausführungsform die Parallelprozessor(en) 4712, der Speicher-Hub 4705, die Prozessor(en) 4702 und der E/A-Hub 4707 in eine integrierte Schaltung als System auf einem Chip (SoC) integriert sein. In mindestens einer Ausführungsform können die Komponenten des Rechensystems 4700 in ein einzelnes Gehäuse integriert sein, um eine Konfiguration mit einem System in einem Gehäuse (system in package - SIP) zu bilden. In mindestens einer Ausführungsform kann mindestens ein Abschnitt der Komponenten des Rechensystems 4700 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 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 3515 in dem System aus FIG. 4700 für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • PROZESSOREN
  • 48A veranschaulicht einen Parallelprozessor 4800 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform können verschiedene Komponenten des Parallelprozessors 4800 unter Verwendung einer oder mehrerer integrierter Schaltungen implementiert werden, wie etwa programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASICs) oder feldprogrammierbare Gate-Arrays (FPGAs). In mindestens einer Ausführungsform ist der veranschaulichte Parallelprozessor 4800 eine Variante eines oder mehrerer Parallelprozessor(en) 4712, die in 47 gemäß einer beispielhaften Ausführungsform gezeigt sind.
  • In mindestens einer Ausführungsform beinhaltet der Parallelprozessor 4800 eine Parallelverarbeitungseinheit 4802. In mindestens einer Ausführungsform beinhaltet die Parallelverarbeitungseinheit 4802 eine E/A-Einheit 4804, die Kommunikation mit anderen Vorrichtungen ermöglicht, einschließlich anderer Instanzen der Parallelverarbeitungseinheit 4802. In mindestens einer Ausführungsform kann die E/A-Einheit 4804 direkt mit anderen Vorrichtungen verbunden sein. In mindestens einer Ausführungsform ist die E/A-Einheit 4804 über die Verwendung einer Hub- oder Switch-Schnittstelle, wie etwa eines Speicher-Hubs 4805, mit anderen Vorrichtungen verbunden. In mindestens einer Ausführungsform bilden Verbindungen zwischen dem Speicher-Hub 4805 und der E/A-Einheit 4804 eine Kommunikationsverbindung 4813. In mindestens einer Ausführungsform ist die E/A-Einheit 4804 mit einer Host-Schnittstelle 4806 und einer Speicherkreuzschiene 4816 verbunden, wobei die Host-Schnittstelle 4806 Befehle empfängt, die auf das Durchführen von Verarbeitungsoperationen gerichtet sind, und die Speicherkreuzschiene 4816 Befehle empfängt, die auf das Durchführen von Speicheroperationen gerichtet sind.
  • In mindestens einer Ausführungsform kann, wenn die Host-Schnittstelle 4806 einen Befehlspuffer über die E/A-Einheit 4804 empfängt, die Host-Schnittstelle 4806 Arbeitsoperationen zum Durchführen dieser Befehle an ein Frontend 4808 richten. In mindestens einer Ausführungsform ist das Frontend 4808 mit einem Planer 4810 gekoppelt, der dazu konfiguriert ist, Befehle oder andere Arbeitselemente an ein Verarbeitungsclusterarray 4812 zu verteilen. In mindestens einer Ausführungsform stellt der Planer 4810 sicher, dass das Verarbeitungsclusterarray 4812 ordnungsgemäß konfiguriert ist und sich in einem gültigen Zustand befindet, bevor Tasks an ein Cluster eines Verarbeitungsclusterarrays 4812 verteilt werden. In mindestens einer Ausführungsform ist der Planer 4810 über eine Firmware-Logik implementiert, die auf einer Mikrosteuerung ausgeführt wird. In mindestens einer Ausführungsform ist der durch eine Mikrosteuerung implementierte Planer 4810 konfigurierbar, um komplexe Planungs- und Arbeitsverteilungsoperationen mit grober und feiner Granularität durchzuführen, was eine schnelle Vorbelegung und Kontextumschaltung von Threads ermöglicht, die auf dem Verarbeitungsarray 4812 ausgeführt werden. In mindestens einer Ausführungsform kann die Host-Software Arbeitslasten für die Planung auf dem Verarbeitungsclusterarray 4812 über einen von mehreren Grafikverarbeitungspfaden nachweisen. In mindestens einer Ausführungsform können die Arbeitslasten dann durch die Logik des Planers 4810 innerhalb eines Mikrocontrollers, der den Planer 4810 beinhaltet, automatisch auf das Verarbeitungsarraycluster 4812 verteilt werden.
  • In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 4812 bis zu „N“ Verarbeitungscluster beinhalten (z. B. Cluster 4814A, Cluster 4814B bis Cluster 4814N), wobei „N“ eine positive ganze Zahl darstellt (die eine andere ganze Zahl „N“ sein kann, als in anderen Figuren verwendet). In mindestens einer Ausführungsform kann jedes Cluster 4814A-4814N des Verarbeitungsclusterarrays 4812 eine große Anzahl von gleichzeitigen Threads ausführen. In mindestens einer Ausführungsform kann der Planer 4810 den Clustern 4814A-4814N des Verarbeitungsclusterarrays 4812 Arbeit zuweisen, indem er verschiedene Planungs- und/oder Arbeitsverteilungsalgorithmen verwendet, die in Abhängigkeit von der Arbeitslast variieren können, die für jede Art von Programm oder Berechnung entsteht. In mindestens einer Ausführungsform kann die Planung dynamisch durch den Planer 4810 gehandhabt werden oder teilweise durch Compiler-Logik während der Kompilierung der Programmlogik unterstützt werden, die für die Ausführung durch das Verarbeitungsclusterarray 4812 konfiguriert ist. In mindestens einer Ausführungsform können unterschiedliche Cluster 4814A-4814N des Verarbeitungsclusterarrays 4812 zum Verarbeiten unterschiedlicher Arten von Programmen oder zum Durchführen unterschiedlicher Arten von Berechnungen zugewiesen sein.
  • In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 4812 so konfiguriert sein, dass es verschiedene Typen von Parallelverarbeitungsoperationen durchführt. In mindestens einer Ausführungsform ist das Verarbeitungsclusterarray 4812 so konfiguriert, dass es Universal-Parallelberechnungsoperationen durchführt. In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 4812 zum Beispiel Logik zum Ausführen von Verarbeitungs-Tasks beinhalten, einschließlich des Filterns von Video- und/oder Audiodaten, des Durchführens von Modellierungsoperationen, einschließlich Physikoperationen, und des Durchführens von Datentransformationen.
  • In mindestens einer Ausführungsform ist das Verarbeitungsclusterarray 4812 so konfiguriert, dass es Parallelgrafikverarbeitungsoperationen durchführt. In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 4812 zusätzliche Logik beinhalten, um die Ausführung derartiger Grafikverarbeitungsoperationen zu unterstützen, einschließlich, aber nicht beschränkt auf, Textur-Sampling-Logik, um Texturoperationen durchzuführen, sowie Tesselierungslogik und andere Vertexverarbeitungslogik. In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 4812 so konfiguriert sein, dass es grafikverarbeitungsbezogene Shader-Programme ausführt, wie etwa, aber nicht beschränkt auf, Vertex-Shader, Tesselierungs-Shader, Geometrie-Shader und Pixel-Shader. In mindestens einer Ausführungsform kann die Parallelverarbeitungseinheit 4802 Daten aus dem Systemspeicher über die E/A-Einheit 4804 zur Verarbeitung übertragen. In mindestens einer Ausführungsform können während der Verarbeitung die übermittelten Daten in einem chipinternen Speicher (z. B. dem Parallelprozessorspeicher 4822) während der Verarbeitung gespeichert und dann wieder in den Systemspeicher geschrieben werden.
  • Wenn die Parallelverarbeitungseinheit 4802 zum Durchführen der Grafikverarbeitung verwendet wird, kann der Planer 4810 in mindestens einer Ausführungsform dazu konfiguriert sein, eine Verarbeitungsarbeitslast in annähernd gleich große Aufgaben aufzuteilen, um eine bessere Verteilung der Grafikverarbeitungsoperationen auf mehrere Cluster 4814A-4814N des Verarbeitungsclusterarrays 4812 zu ermöglichen. In mindestens einer Ausführungsform können Abschnitte des Verarbeitungsclusterarrays 4812 so konfiguriert sein, dass sie unterschiedliche Verarbeitungstypen durchführen. Zum Beispiel kann in mindestens einer Ausführungsform ein erster Abschnitt so konfiguriert sein, dass er Vertex-Shading und Topologieerzeugung durchführt, ein zweiter Abschnitt kann so konfiguriert sein, dass er Tesselierungs- und Geometrie-Shading durchführt, und ein dritter Abschnitt kann so konfiguriert sein, dass er Pixel-Shading oder andere Bildschirmraumoperationen durchführt, um ein gerendertes Bild zur Anzeige zu produzieren. In mindestens einer Ausführungsform können Zwischendaten, die durch eines oder mehrere der Cluster 4814A-4814N erzeugt werden, in Puffern gespeichert werden, um zu ermöglichen, dass Zwischendaten zwischen den Clustern 4814A-4814N zur weiteren Verarbeitung übertragen werden.
  • In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 4812 auszuführende Verarbeitungsaufgaben über den Planer 4810 empfangen, der von dem Frontend 4808 Befehle empfängt, die Verarbeitungsaufgaben definieren. In mindestens einer Ausführungsform können die Verarbeitungs-Tasks Indizes der zu verarbeitenden Daten beinhalten, z. B. Oberflächen-(Patch-)Daten, Primitivdaten, Vertexdaten und/oder Pixeldaten, sowie Zustandsparameter und Befehle, die definieren, wie die Daten verarbeitet werden sollen (z. B. welches Programm ausgeführt werden soll). In mindestens einer Ausführungsform kann der Planer 4810 dazu konfiguriert sein, Indizes abzurufen, die Aufgaben entsprechen, oder kann Indizes von dem Frontend 4808 empfangen. In mindestens einer Ausführungsform kann das Frontend 4808 dazu konfiguriert sein, sicherzustellen, dass das Verarbeitungsclusterarray 4812 in einen gültigen Zustand konfiguriert wird, bevor eine durch eingehende Befehlspuffer (z. B. Batch-Puffer, Push-Puffer usw.) vorgegebene Arbeitslast initiiert wird.
  • In mindestens einer Ausführungsform kann jede von einer oder mehreren Instanzen der Parallelverarbeitungseinheit 4802 mit einem Parallelprozessorspeicher 4822 gekoppelt sein. In mindestens einer Ausführungsform kann auf den Parallelprozessorspeicher 4822 über die Speicherkreuzschiene 4816 zugegriffen werden, die Speicheranforderungen von dem Verarbeitungsclusterarray 4812 sowie von der E/A-Einheit 4804 empfangen kann. In mindestens einer Ausführungsform kann die Speicherkreuzschiene 4816 über eine Speicherschnittstelle 4818 auf den Parallelprozessorspeicher 4822 zugreifen. In mindestens einer Ausführungsform kann die Speicherschnittstelle 4818 mehrere Partitionseinheiten (z. B. Partitionseinheit 4820A, Partitionseinheit 4820B bis Partitionseinheit 4820N) beinhalten, die jeweils an einen Abschnitt (z. B. Speichereinheit) des Parallelprozessorspeichers 4822 gekoppelt werden können. In mindestens einer Ausführungsform ist eine Anzahl der Partitionseinheiten 4820A-4820N dazu konfiguriert, gleich einer Anzahl von Speichereinheiten zu sein, sodass eine erste Partitionseinheit 4820A eine entsprechende erste Speichereinheit 4824A aufweist, eine zweite Partitionseinheit 4820B eine entsprechende Speichereinheit 4824B aufweist und eine N-te Partitionseinheit 4820N eine entsprechende N-te Speichereinheit 4824N aufweist. In mindestens einer Ausführungsform kann eine Anzahl der Partitionseinheiten 4820A-4820N nicht gleich einer Anzahl der Speichereinheiten sein.
  • In mindestens einer Ausführungsform können die Speichereinheiten 4824A-4824N verschiedene Typen von Speichervorrichtungen beinhalten, darunter dynamischer Direktzugriffsspeicher (DRAM) oder Grafik-Direktzugriffsspeicher, wie etwa synchroner Grafik-Direktzugriffsspeicher (SGRAM), darunter Grafik-Double-Data-Rate-(GDDR-)Speicher. In mindestens einer Ausführungsform können die Speichereinheiten 4824A-4824N auch 3D-Stapelspeicher beinhalten, einschließlich, aber nicht beschränkt auf, Speicher mit hoher Bandbreite (high bandwidth memory - HBM). In mindestens einer Ausführungsform können Rendering-Ziele, wie etwa Bildpuffer oder Texturkarten, über die Speichereinheiten 4824A-4824N hinweg gespeichert werden, was es den Partitionseinheiten 4820A-4820N ermöglicht, Abschnitte jedes Rendering-Ziels parallel zu schreiben, um die verfügbare Bandbreite des Parallelprozessorspeichers 4822 effizient zu nutzen. In mindestens einer Ausführungsform kann eine lokale Instanz des Parallelprozessorspeichers 4822 zugunsten eines einheitlichen Speicherdesigns ausgeschlossen werden, das Systemspeicher in Verbindung mit lokalem Cache-Speicher nutzt.
  • In mindestens einer Ausführungsform kann ein beliebiges der Cluster 4814A-4814N des Verarbeitungsclusterarrays 4812 Daten verarbeiten, die in beliebige der Speichereinheiten 4824A-4824N innerhalb des Parallelprozessorspeichers 4822 geschrieben werden. In mindestens einer Ausführungsform kann die Speicherkreuzschiene 4816 dazu konfiguriert sein, eine Ausgabe jedes Clusters 4814A-4814N an eine beliebige Partitionseinheit 4820A-4820N oder an ein anderes Cluster 4814A-4814N zu übertragen, das zusätzliche Verarbeitungsoperationen an einer Ausgabe durchführen kann. In mindestens einer Ausführungsform kann jedes Cluster 4814A-4814N durch die Speicherkreuzschiene 4816 mit der Speicherschnittstelle 4818 kommunizieren, um aus verschiedenen externen Speichervorrichtungen zu lesen oder in diese zu schreiben. In mindestens einer Ausführungsform weist die Speicherkreuzschiene 4816 eine Verbindung mit der Speicherschnittstelle 4818 auf, um mit der E/A-Einheit 4804 zu kommunizieren, sowie eine Verbindung mit einer lokalen Instanz des Parallelprozessorspeichers 4822, was es den Verarbeitungseinheiten innerhalb der unterschiedlichen Verarbeitungscluster 4814A-4814N ermöglicht, mit Systemspeicher oder anderem Speicher zu kommunizieren, der nicht lokal zu der Parallelverarbeitungseinheit 4802 ist. In mindestens einer Ausführungsform kann die Speicherkreuzschiene 4816 virtuelle Kanäle verwenden, um Verkehrsströme zwischen Clustern 4814A-4814N und Partitionseinheiten 4820A-4820N zu trennen.
  • In mindestens einer Ausführungsform können mehrere Instanzen der Parallelverarbeitungseinheit 4802 auf einer einzelnen Erweiterungskarte bereitgestellt sein oder mehrere Erweiterungskarten zusammengeschaltet sein. In mindestens einer Ausführungsform können unterschiedliche Instanzen der Parallelverarbeitungseinheit 4802 so konfiguriert sein, dass sie zusammenarbeiten, auch wenn die unterschiedlichen Instanzen unterschiedliche Anzahlen von Verarbeitungskernen, unterschiedliche Mengen von lokalem Parallelprozessorspeicher und/oder andere Konfigurationsunterschiede aufweisen. Zum Beispiel können in mindestens einer Ausführungsform einige Instanzen der Parallelverarbeitungseinheit 4802 Gleitkommaeinheiten mit höherer Genauigkeit in Bezug auf andere Instanzen beinhalten. In mindestens einer Ausführungsform können Systeme, die eine oder mehrere Instanzen der Parallelverarbeitungseinheit 4802 oder des Parallelprozessors 4800 beinhalten, in einer Vielfalt von Konfigurationen und Formfaktoren implementiert sein, einschließlich, aber nicht beschränkt auf, Desktop-, Laptop- oder tragbarer Personalcomputer, Server, Arbeitsstationen, Spielekonsolen und/oder eingebetteter Systeme.
  • 48B ist ein Blockdiagramm einer Partitionseinheit 4820 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist die Partitionseinheit 4820 eine Instanz einer der Partitionseinheiten 4820A-4820N aus 48A. In mindestens einer Ausführungsform beinhaltet die Partitionseinheit 4820 einen L2-Cache 4821, eine Rahmenpuffer-Schnittstelle 4825 und eine ROP 4826 (raster operations unit - Rasteroperationeneinheit). In mindestens einer Ausführungsform ist der L2-Cache 4821 ein Lese-/Schreib-Cache, der so konfiguriert ist, dass er Lade- und Sicherungsoperationen durchführt, die von der Speicherkreuzschiene 4816 und der ROP 4826 empfangen werden. In mindestens einer Ausführungsform werden Lesefehler und dringende Rückschreibanforderungen durch den L2-Cache 4821 an die Rahmenpuffer-Schnittstelle 4825 zur Verarbeitung ausgegeben. In mindestens einer Ausführungsform können Aktualisierungen auch über die Rahmenpuffer-Schnittstelle 4825 zur Verarbeitung an einen Bildspeicher gesendet werden. In mindestens einer Ausführungsform bildet die Rahmenpuffer-Schnittstelle 4825 eine Schnittstelle mit einer der Speichereinheiten in dem Parallelprozessorspeicher, wie etwa mit den Speichereinheiten 4824A-4824N aus 48 (z. B. in dem Parallelprozessorspeicher 4822).
  • In mindestens einer Ausführungsform ist die ROP 4826 eine Verarbeitungseinheit, die Rasteroperationen durchführt, wie etwa Schablone, Z-Test, Blending usw. In mindestens einer Ausführungsform gibt die ROP 4826 dann verarbeitete Grafikdaten aus, die in Grafikspeicher gespeichert werden. In mindestens einer Ausführungsform beinhaltet die ROP 4826 Komprimierungslogik, um Tiefen- oder Farbdaten, die in den Speicher geschrieben werden, zu komprimieren und Tiefen- oder Farbdaten, die aus dem Speicher gelesen werden, zu dekomprimieren. In mindestens einer Ausführungsform kann die Komprimierungslogik verlustfreie Komprimierungslogik sein, die einen oder mehrere von mehreren Komprimierungsalgorithmen verwendet. In mindestens einer Ausführungsform kann ein Typ der Komprimierung, die durch die ROP 4826 durchgeführt wird, auf Grundlage von statistischen Eigenschaften der zu komprimierenden Daten variieren. Zum Beispiel wird in mindestens einer Ausführungsform die Delta-Farbkomprimierung an Tiefen- und Farbdaten auf Kachelbasis ausgeführt.
  • In mindestens einer Ausführungsform ist die ROP 4826 innerhalb jedes Verarbeitungsclusters (z. B. Cluster 4814A-4814N aus 48A) anstatt innerhalb der Partitionseinheit 4820 enthalten. In mindestens einer Ausführungsform werden Lese- und Schreibanforderungen für Pixeldaten anstelle von Pixelfragmentdaten über die Speicherkreuzschiene 4816 übertragen. In mindestens einer Ausführungsform können verarbeitete Grafikdaten auf einer Anzeigevorrichtung angezeigt werden, wie etwa einer der einen oder der mehreren Anzeigevorrichtung(en) 4710 aus 47, zur weiteren Verarbeitung durch die Prozessor(en) 4702 geroutet werden oder zur weiteren Verarbeitung durch eine der Verarbeitungsentitäten innerhalb des Parallelprozessors 4800 aus 48A geroutet werden.
  • 48C ist ein Blockdiagramm eines Verarbeitungsclusters 4814 innerhalb einer Parallelverarbeitungseinheit gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist ein Verarbeitungscluster eine Instanz eines der Verarbeitungscluster 4814A-4814N aus 48A. In mindestens einer Ausführungsform kann der Verarbeitungscluster 4814 so konfiguriert sein, dass er viele Threads parallel ausführt, wobei sich „Thread“ auf eine Instanz eines konkreten Programms bezieht, die an einem konkreten Satz von Eingabedaten ausgeführt wird. In mindestens einer Ausführungsform werden Ausgabetechniken für Single-Instruction-Multiple-Data-(SIMD-)Anweisungen verwendet, um die parallele Ausführung einer großen Anzahl von Threads zu unterstützen, ohne mehrere unabhängige Anweisungseinheiten bereitzustellen. In mindestens einer Ausführungsform werden Single-Instruction-Multiple-Thread-(SIMT-)Techniken verwendet, um die parallele Ausführung einer großen Anzahl von im Allgemeinen synchronisierten Threads zu unterstützen, wobei eine gemeinsame Anweisungseinheit verwendet wird, die so konfiguriert ist, dass sie Anweisungen an einen Satz von Verarbeitungs-Engines innerhalb jedes der Verarbeitungscluster ausgibt.
  • In mindestens einer Ausführungsform kann die Operation des Verarbeitungsclusters 4814 über einen Pipeline-Manager 4832 gesteuert werden, der die Verarbeitungsaufgaben auf die SIMT-Parallelprozessoren verteilt. In mindestens einer Ausführungsform empfängt der Pipeline-Manager 4832 Anweisungen von dem Planer 4810 aus 48A und verwaltet die Ausführung dieser Anweisungen über einen Grafik-Multiprozessor 4834 und/oder eine Textureinheit 4836. In mindestens einer Ausführungsform ist der Grafikmultiprozessor 4834 eine beispielhafte Instanz eines SIMT-Parallelprozessors. In mindestens einer Ausführungsform können jedoch verschiedene Arten von SIMT-Parallelprozessoren unterschiedlicher Architekturen innerhalb des Verarbeitungs-Clusters 4814 beinhaltet sein. In mindestens einer Ausführungsform können eine oder mehrere Instanzen des Grafik-Multiprozessors 4834 innerhalb eines Verarbeitungsclusters 4814 enthalten sein. In mindestens einer Ausführungsform kann der Grafik-Multiprozessor 4834 Daten verarbeiten und kann eine Datenkreuzschiene 4840 verwendet werden, um verarbeitete Daten an eines von mehreren möglichen Zielen, einschließlich anderer Shader-Einheiten, zu verteilen. In mindestens einer Ausführungsform kann der Pipeline-Manager 4832 die Verteilung verarbeiteter Daten durch das Festlegen der Ziele für zu verteilende verarbeitete Daten über die Daten-Crossbar 4840 ermöglichen.
  • In mindestens einer Ausführungsform kann jeder Grafik-Multiprozessor 4834 innerhalb des Verarbeitungsclusters 4814 einen identischen Satz von funktioneller Ausführungslogik (z. B. arithmetisch-logische Einheiten, Lade-Speicher-Einheiten usw.) beinhalten. In mindestens einer Ausführungsform kann funktionelle Ausführungslogik pipelineartig konfiguriert sein, wobei neue Anweisungen ausgegeben werden können, bevor vorherige Anweisungen abgeschlossen sind. In mindestens einer Ausführungsform unterstützt die Funktionsausführungslogik eine Vielfalt von Operationen, einschließlich Integer- und Gleitkommaarithmetik, Vergleichsoperationen, Boolescher Operationen, Bitverschiebung und Berechnung verschiedener algebraischer Funktionen. In mindestens einer Ausführungsform kann dieselbe Hardware einer funktionellen Einheit ausgenutzt werden, um unterschiedliche Operationen auszuführen, und eine beliebige Kombination von funktionellen Einheiten kann vorhanden sein.
  • In mindestens einer Ausführungsform bilden Anweisungen, die an den Verarbeitungs-Cluster 4814 übertragen werden, einen Thread. In mindestens einer Ausführungsform ist ein Satz von Threads, der über einen Satz von Parallelverarbeitungs-Engines ausgeführt wird, eine Thread-Gruppe. In mindestens einer Ausführungsform führt eine Thread-Gruppe ein gemeinsames Programm an unterschiedlichen Eingabedaten aus. In mindestens einer Ausführungsform kann jeder Thread innerhalb einer Thread-Gruppe einer anderen Verarbeitungs-Engine innerhalb eines Grafik-Multiprozessors 4834 zugeordnet sein. In mindestens einer Ausführungsform kann eine Thread-Gruppe weniger Threads als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafikmultiprozessors 4834 beinhalten. Wenn eine Thread-Gruppe weniger Threads beinhaltet als eine Anzahl von Verarbeitungs-Engines, können in mindestens einer Ausführungsform eine oder mehrere der Verarbeitungs-Engines während der Zyklen, in denen diese Thread-Gruppe verarbeitet wird, inaktiv sein. In mindestens einer Ausführungsform kann eine Thread-Gruppe auch mehr Threads beinhalten als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 4834. Wenn eine Thread-Gruppe mehr Threads als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 4834 beinhaltet, kann das Verarbeiten in mindestens einer Ausführungsform über aufeinanderfolgende Taktzyklen durchgeführt werden. In mindestens einer Ausführungsform können mehrere Thread-Gruppen nebenläufig auf einem Grafik-Multiprozessor 4834 ausgeführt werden.
  • In mindestens einer Ausführungsform beinhaltet der Grafikmultiprozessor 4834 einen internen Cache-Speicher, um Lade- und Speicheroperationen durchzuführen. In mindestens einer Ausführungsform kann der Grafik-Multiprozessor 4834 auf einen internen Cache verzichten und einen Cache-Speicher (z. B. L1-Cache 4848) innerhalb des Verarbeitungsclusters 4814 verwenden. In mindestens einer Ausführungsform hat jeder Grafik-Multiprozessor 4834 auch Zugriff auf L2-Caches innerhalb von Partitionseinheiten (z. B. Partitionseinheiten 4820A-4820N aus 48A), die von allen Verarbeitungsclustern 4814 gemeinsam genutzt werden und zum Übertragen von Daten zwischen Threads verwendet werden können. In mindestens einer Ausführungsform kann der Grafikmultiprozessor 4834 auch auf den chipexternen globalen Speicher zugreifen, der einen oder mehrere von dem lokalen Parallelprozessorspeicher und/oder dem Systemspeicher beinhalten kann. In mindestens einer Ausführungsform kann jeder beliebige Speicher außerhalb der Parallelverarbeitungseinheit 4802 als globaler Speicher verwendet werden. In mindestens einer Ausführungsform beinhaltet der Verarbeitungscluster 4814 mehrere Instanzen des Grafik-Multiprozessors 4834 und er kann gemeinsame Anweisungen und Daten teilen, die in dem L1-Cache 4848 gespeichert sein können.
  • In mindestens einer Ausführungsform kann jeder Verarbeitungscluster 4814 eine MMU 4845 (Speicherverwaltungseinheit) beinhalten, die so konfiguriert ist, dass sie virtuelle Adressen auf physische Adressen abbildet. In mindestens einer Ausführungsform können sich eine oder mehrere Instanzen der MMU 4845 innerhalb der Speicherschnittstelle 4818 aus 48A. In mindestens einer Ausführungsform beinhaltet die MMU 4845 einen Satz von Seitentabelleneinträgen (page table entries - PTEs), der dazu verwendet wird, eine virtuelle Adresse auf eine physische Adresse einer Kachel abzubilden, sowie optional einen Cache-Zeilenindex. In mindestens einer Ausführungsform kann die MMU 4845 Adressübersetzungspuffer (TLB) oder Caches beinhalten, die sich in dem Grafik-Multiprozessor 4834 oder in dem L1 4848-Cache oder Verarbeitungscluster 4814 befinden können. In mindestens einer Ausführungsform wird eine physische Adresse verarbeitet, um den Oberflächendatenzugriff lokal zu verteilen, um eine effiziente Anforderungsverschachtelung zwischen den Partitionseinheiten zu ermöglichen. In mindestens einer Ausführungsform kann ein Cache-Zeilenindex verwendet werden, um zu bestimmen, ob eine Anforderung für eine Cache-Zeile ein Treffer oder ein Fehler ist.
  • In mindestens einer Ausführungsform kann ein Verarbeitungscluster4814 derart konfiguriert sein, dass jeder Grafik-Multiprozessor 4834 an eine Textureinheit 4836 zum Durchführen von Texturabbildungsoperationen gekoppelt ist, z. B. zum Bestimmen von Textur-Sample-Positionen, Lesen von Texturdaten und Filtern von Texturdaten. In mindestens einer Ausführungsform werden Texturdaten aus einem internen Textur-L1-Cache (nicht dargestellt) oder aus einem L1-Cache innerhalb des Grafikmultiprozessors 4834 gelesen und nach Bedarf aus einem L2-Cache, einem lokalen Parallelprozessorspeicher oder dem Systemspeicher abgerufen. In mindestens einer Ausführungsform gibt jeder Grafik-Multiprozessor 4834 verarbeitete Tasks an die Datenkreuzschiene 4840 aus, um einen verarbeiteten Task einem anderen Verarbeitungscluster 4814 zur weiteren Verarbeitung bereitzustellen oder um einen verarbeiteten Task über die Speicherkreuzschiene 4816 in einem L2-Cache, lokalen Parallelprozessorspeicher oder Systemspeicher zu speichern. In mindestens einer Ausführungsform ist eine preROP 4842 (Vor-Rasteroperationeneinheit) so konfiguriert, dass sie Daten von dem Grafik-Multiprozessor 4834 empfängt und Daten an ROP-Einheiten leitet, die sich in den hierin beschriebenen Partitionseinheiten befinden können (z. B. Partitionseinheiten 4820A-4820N aus 48A). In mindestens einer Ausführungsform kann die preROP-Einheit 4842 Optimierungen für die Farbmischung, das Organisieren von Pixelfarbdaten und das Durchführen von Adressübersetzungen durchführen.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 3515 in dem Grafikverarbeitungscluster 4814 für Inferenzierungs- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • 48D zeigt einen Grafik-Multiprozessor 4834 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der Grafik-Multiprozessor 4834 mit dem Pipelinemanager 4832 des Verarbeitungsclusters 4814 gekoppelt. In mindestens einer Ausführungsform weist der Grafik-Multiprozessor 4834 eine Ausführungspipeline auf, die einen Anweisungs-Cache 4852, eine Anweisungseinheit 4854, eine Adressabbildungseinheit 4856, eine Registerdatei 4858, einen oder mehrere Kerne 4862 einer Universal-Grafikverarbeitungseinheit (GPGPU) und eine oder mehrere Lade-/Speichereinheiten 4866 beinhaltet, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform sind die GPGPU-Kerne 4862 und die Lade-/Speichereinheiten 4866 über eine Speicher- und Cache-Zusammenschaltung 4868 mit dem Cache-Speicher 4872 und dem gemeinsam genutzten Speicher 4870 gekoppelt.
  • In mindestens einer Ausführungsform empfängt der Anweisungs-Cache 4852 einen Strom aus auszuführenden Anweisungen von dem Pipeline-Manager 4832. In mindestens einer Ausführungsform werden die Anweisungen in dem Anweisungs-Cache 4852 zwischengespeichert und durch eine Anweisungseinheit 4854 zur Ausführung zugeteilt. In mindestens einer Ausführungsform kann die Anweisungseinheit 4854 Anweisungen als Thread-Gruppen (z. B. Warps) zuteilen, wobei jeder Thread der Thread-Gruppe einer anderen Ausführungseinheit innerhalb der GPGPU-Kerne 4862 zugeordnet wird. In mindestens einer Ausführungsform kann eine Anweisung auf einen beliebigen von einem lokalen, gemeinsam genutzten oder globalen Adressraum zugreifen, indem sie eine Adresse innerhalb eines einheitlichen Adressraums vorgibt. In mindestens einer Ausführungsform kann die Adressabbildungseinheit 4856 verwendet werden, um Adressen in einem vereinheitlichten Adressraum in eine eindeutige Speicheradresse zu übersetzen, auf die durch die Lade-/Speichereinheit(en) 4866 zugegriffen werden kann.
  • In mindestens einer Ausführungsform stellt die Registerdatei 4858 einen Satz von Registern für funktionelle Einheiten des Grafik-Multiprozessors 4834 bereit. In mindestens einer Ausführungsform stellt die Registerdatei 4858 einen temporären Datenspeicher für Operanden bereit, die mit Datenpfaden von funktionellen Einheiten (z. B. GPGPU-Kernen 4862, Lade-/Speichereinheiten 4866) des Grafik-Multiprozessors 4834 verbunden sind. In mindestens einer Ausführungsform ist die Registerdatei 4858 derart zwischen den einzelnen funktionellen Einheiten aufgeteilt, dass jeder funktionellen Einheit ein dedizierter Abschnitt der Registerdatei 4858 zugewiesen ist. In mindestens einer Ausführungsform ist die Registerdatei 4858 auf unterschiedliche Warps aufgeteilt, die durch den Grafik-Multiprozessor 4834 ausgeführt werden.
  • In mindestens einer Ausführungsform können die GPGPU-Kerne 4862 jeweils Gleitkommaeinheiten (floating point units - FPUs) und/oder arithmetisch-logische Einheiten (ALUs) für Integer beinhalten, die zum Ausführen von Anweisungen des Grafik-Multiprozessors 4834 verwendet werden. In mindestens einer Ausführungsform können die GPGPU-Kerne 4862 eine ähnliche Architektur aufweisen oder sich bezüglich der Architektur unterscheiden. In mindestens einer Ausführungsform beinhaltet ein erster Abschnitt der GPGPU-Kerne 4862 eine FPU mit einfacher Genauigkeit und eine Integer-ALU, während ein zweiter Abschnitt der GPGPU-Kerne eine FPU mit doppelter Genauigkeit beinhaltet. In mindestens einer Ausführungsform können FPUs den Standard IEEE 754-2008 für Gleitkommaarithmetik implementieren oder Gleitkommaarithmetik mit variabler Genauigkeit ermöglichen. In mindestens einer Ausführungsform kann der Grafikmultiprozessor 4834 zusätzlich eine oder mehrere feste Funktions- oder Spezialfunktionseinheiten beinhalten, um spezifische Funktionen, wie etwa Kopierrechteck- oder Pixelmischoperationen, durchzuführen. In mindestens einer Ausführungsform können einer oder mehrere der GPGPU-Kerne 4862 auch Fest- oder Spezialfunktionslogik beinhalten.
  • In mindestens einer Ausführungsform beinhalten die GPGPU-Kerne 4862 eine SIMD-Logik, die in der Lage ist, eine einzelne Anweisung an mehreren Datensätzen auszuführen. In mindestens einer Ausführungsform können die GPGPU-Kerne 4862 SIMD4-, SIMD8- und SIMD16-Anweisungen physisch ausführen und SIMD1-, SIMD2- und SIMD32-Anweisungen logisch ausführen. In mindestens einer Ausführungsform können SIMD-Anweisungen für GPGPU-Kerne zur Kompilierzeit durch einen Shader-Compiler erzeugt werden oder automatisch erzeugt werden, wenn Programme ausgeführt werden, die für Single-Program-Multiple-Data-(SPMD-) oder SIMT-Architekturen geschrieben und kompiliert wurden. In mindestens einer Ausführungsform können mehrere Threads eines für ein SIMT-Ausführungsmodell konfigurierten Programms über eine einzelne SIMD-Anweisung ausgeführt werden. Zum Beispiel können in mindestens einer Ausführungsform acht SIMT-Threads, die gleiche oder ähnliche Operationen durchführen, parallel über eine einzelne SIMD8-Logikeinheit ausgeführt werden.
  • In mindestens einer Ausführungsform ist die Speicher- und Cache-Zusammenschaltung 4868 ein Zusammenschaltungsnetz, das jede funktionelle Einheit des Grafik-Multiprozessors 4834 mit der Registerdatei 4858 und dem gemeinsam genutzten Speicher 4870 verbindet. In mindestens einer Ausführungsform ist die Speicher- und Cache-Zusammenschaltung 4868 eine Kreuzschienen-Zusammenschaltung, die es der Lade-/Speichereinheit 4866 ermöglicht, Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher 4870 und der Registerdatei 4858 zu implementieren. In mindestens einer Ausführungsform kann die Registerdatei 4858 mit der gleichen Frequenz wie die GPGPU-Kerne 4862 arbeiten, sodass die Datenübermittlung zwischen den GPGPU-Kernen 4862 und der Registerdatei 4858 eine sehr geringe Latenz aufweisen kann. In mindestens einer Ausführungsform kann der gemeinsam genutzte Speicher 4870 verwendet werden, um die Kommunikation zwischen Threads zu ermöglichen, die auf funktionellen Einheiten innerhalb des Grafik-Multiprozessors 4834 ausgeführt werden. In mindestens einer Ausführungsform kann der Cache-Speicher 4872 zum Beispiel als Daten-Cache verwendet werden, um Texturdaten zwischenzuspeichern, die zwischen funktionellen Einheiten und der Textureinheit 4836 kommuniziert werden. In mindestens einer Ausführungsform kann der gemeinsam genutzte Speicher 4870 auch als programmverwalteter Cache verwendet werden. In mindestens einer Ausführungsform können Threads, die auf den GPGPU-Kernen 4862 ausgeführt werden, zusätzlich zu den automatisch zwischengespeicherten Daten, die innerhalb des Cache-Speichers 4872 gespeichert sind, programmatisch Daten innerhalb des gemeinsam genutzten Speichers speichern.
  • In mindestens einer Ausführungsform ist ein Parallelprozessor oder eine GPGPU, wie hierin beschrieben, kommunikativ an Host-/Prozessorkerne gekoppelt, um Grafikoperationen, Maschinenlernoperationen, Musteranalyseoperationen und verschiedene Allzweck-GPU-(GPGPU)-Funktionen zu beschleunigen. In mindestens einer Ausführungsform kann eine GPU über einen Bus oder eine andere Zusammenschaltung (z. B. eine Hochgeschwindigkeitszusammenschaltung wie etwa PCle oder NVLink) kommunikativ an den Host-Prozessor/die Kerne gekoppelt sein. In mindestens einer Ausführungsform kann eine GPU in einem Gehäuse oder Chip als Kerne integriert sein und kommunikativ über einen internen Prozessorbus/eine Zusammenschaltung, die intern zu einem Gehäuse oder Chip ist, an Kerne gekoppelt sein. In 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 zuweisen, die in einem Arbeitsdeskriptor enthalten sind. In mindestens einer Ausführungsform verwendet diese GPU dann dedizierte Schaltung/Logik zum effizienten Verarbeiten dieser Befehle/Anweisungen.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 3515 in dem Grafik-Multiprozessor 4834 für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • 49 veranschaulicht ein Mehr-GPU-Rechensystem 4900 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das Mehr-GPU-Rechensystem 4900 einen Prozessor 4902 beinhalten, der über einen Host-Schnittstellen-Switch 4904 an mehrere Universal-Grafikverarbeitungseinheiten (GPGPUs) 4906A-D gekoppelt ist. In mindestens einer Ausführungsform ist der Host-Schnittstellen-Switch 4904 eine PCI-Express-Switch-Vorrichtung, die den Prozessor 4902 an einen PCI-Express-Bus koppelt, über den der Prozessor 4902 mit den GPGPUs 4906A-D kommunizieren kann. In mindestens einer Ausführungsform können die GPGPUs 4906A-D über einen Satz von Hochgeschwindigkeits-Punkt-zu-Punkt-GPU-zu-GPU-Verbindungen 4916 zusammengeschaltet sein. In mindestens einer Ausführungsform sind die GPU-zu-GPU-Verbindungen 4916 mit jeder der GPGPUs 4906A-D über eine dedizierte GPU-Verbindung verbunden. In mindestens einer Ausführungsform ermöglichen die P2P-GPU-Verbindungen 4916 direkte Kommunikation zwischen jeder der GPGPUs 4906A-D, ohne dass Kommunikation über den Host-Schnittstellenbus 4904 erforderlich ist, mit dem der Prozessor 4902 verbunden ist. In mindestens einer Ausführungsform, bei der GPU-zu-GPU-Verkehr zu den P2P-GPU-Verbindungen 4916 geleitet wird, bleibt der Host-Schnittstellenbus 4904 für den Systemspeicherzugriff oder zum Kommunizieren mit anderen Instanzen des Mehr-GPU-Rechensystems 4900 verfügbar, zum Beispiel über eine oder mehrere Netzvorrichtungen. Während in mindestens einer Ausführungsform die GPGPUs 4906A-D mit dem Prozessor 4902 über den Host-Schnittstellen-Switch 4904 verbunden sind, beinhaltet der Prozessor 4902 in mindestens einer Ausführungsform eine direkte Unterstützung für P2P-GPU-Verbindungen 4916 und kann direkt mit den GPGPUs 4906A-D verbunden sein. In mindestens einer Ausführungsform führt das Multi-GPU-Rechensystem 4200 den Prozess 900 (siehe 9A) oder den Prozess 906 (siehe 9B) aus.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 3515 in dem Mehrfach-GPU-Rechensystem 4900 für Inferenzierungs- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • 50 ist ein Blockdiagramm eines Grafikprozessors 5000 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 5000 eine Ringverbindung 5002, ein Pipeline-Front-End 5004, eine Media-Maschine 5037 und Grafikkerne 5080A-5080N. In mindestens einer Ausführungsform verbindet die Ringverbindung 5002 den Grafikprozessor 5000 mit anderen Verarbeitungseinheiten, einschließlich anderer Grafikprozessoren oder eines oder mehrerer Mehrzweckprozessorkerne. In mindestens einer Ausführungsform ist der Grafikprozessor 5000 einer von vielen Prozessoren, die in ein Mehrkern-Verarbeitungssystem integriert sind.
  • In mindestens einer Ausführungsform empfängt der Grafikprozessor 5000 Stapel von Befehlen über die Ringverbindung 5002. In mindestens einer Ausführungsform werden eingehende Befehle durch einen Befehls-Streamer 5003 in dem Pipeline-Frontend 5004 interpretiert. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 5000 skalierbare Ausführungslogik zum Durchführen von 3D-Geometrieverarbeitung und Medienverarbeitung über die Grafikkern(e) 5080A-5080N. In mindestens einer Ausführungsform liefert der Befehlsstreamer 5003 für 3D-Geometrieverarbeitungsbefehle Befehle an die Geometrie-Pipeline 5036. In mindestens einer Ausführungsform führt der Befehls-Streamer 5003 für mindestens einige Medienverarbeitungsbefehle Befehle einem Video-Frontend 5034 zu, das mit der Medien-Engine 5037 gekoppelt ist. In mindestens einer Ausführungsform beinhaltet die Medien-Engine 5037 eine Videoqualitäts-Engine (Video Quality Engine - VQE) 5030 für die Video- und Bildnachverarbeitung und eine Engine zum Codieren/Decodieren in mehreren Formaten (multi-format encode/decode - MFX) 5033 zum Bereitstellen von hardwarebeschleunigter Codierung und Decodierung von Mediendaten. In mindestens einer Ausführungsform erzeugen die Geometriepipeline 5036 und die Medien-Engine 5037 jeweils Ausführungs-Threads für Thread-Ausführungsressourcen, die durch mindestens einen Grafikkern 5080 bereitgestellt sind.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 5000 skalierbare Thread-Ausführungsressourcen mit den Grafikkernen 5080A-5080N (die modular sein können und mitunter als Kern-Schnitte bezeichnet werden), die jeweils mehrere Teilkerne 5050A-50N, 5060A-5060N (mitunter als Kernteil-Schnitte bezeichnet) aufweisen. In mindestens einer Ausführungsform kann der Grafikprozessor 5000 eine beliebige Anzahl von Grafikkernen 5080A ufweisen. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 5000 einen Grafikkern 5080A mit mindestens einem ersten Sub-Kern 5050A und einem zweiten Sub-Kern 5060A. In mindestens einer Ausführungsform ist der Grafikprozessor 5000 ein Prozessor niedriger Leistung mit einem einzelnen Teilkern (z. B. 5050A). In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 5000 mehrere Grafikkerne 5080A-5080N, von denen jeder einen Satz von ersten Sub-Kernen 5050A-5050N und einen Satz von zweiten Sub-Kernen 5060A-5060N beinhaltet. In mindestens einer Ausführungsform beinhaltet jeder Teilkern in den ersten Teilkernen 5050A-5050N mindestens einen ersten Satz von Ausführungseinheiten 5052A-5052N und Medien-/Textur-Samplers 5054A-5054N. In mindestens einer Ausführungsform beinhaltet jeder Teilkern in den zweiten Teilkernen 5060A-5060N mindestens einen zweiten Satz von Ausführungseinheiten 5062A-5062N und Samplers 5064A-5064N. In mindestens einer Ausführungsform nutzen die Teilkerne 5050A-5050N, 5060A-5060N jeweils einen Satz von gemeinsam genutzten Ressourcen 5070A-5070N gemeinsam. In mindestens einer Ausführungsform beinhalten die gemeinsam genutzten Ressourcen gemeinsam genutzten Cache-Speicher und Pixeloperationslogik.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 3515 in dem Grafikprozessor 5000 für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • 51 ist ein Blockdiagramm, das die Mikroarchitektur für einen Prozessor 5100, der Logikschaltungen zum Durchführen von Anweisungen beinhalten kann, gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform kann der Prozessor 5100 Anweisungen durchführen, einschließlich x86-Anweisungen, ARM-Anweisungen, spezialisierter Anweisungen für anwendungsspezifische integrierte Schaltungen (ASICs) usw. In mindestens einer Ausführungsform kann der Prozessor 5100 Register zum Speichern von gepackten Daten beinhalten, wie etwa 64 Bit breite MMX™-Register in Mikroprozessoren, die mit der MMX-Technologie der Intel Corporation aus Santa Clara, Kalifornien, ausgestattet sind. In mindestens einer Ausführungsform können MMX-Register, die sowohl in Integer- als auch in Gleitkommaform verfügbar sind, mit Elementen mit gepackten Daten arbeiten, die mit Single-Instruction-Multiple-Data-(„SIMD“) und Streaming-SIMD-Erweiterungs-(„SSE“)Anweisungen einhergehen. In mindestens einer Ausführungsform können 128 Bit breite XMM-Register, die sich auf die SSE2-, SSE3-, SSE4-, AVX- oder darüber hinausgehende Technologie beziehen (allgemein als „SSEx“ bezeichnet), derartige Operanden mit gepackten Daten aufbewahren. In mindestens einer Ausführungsform kann der Prozessor 5100 Anweisungen zum Beschleunigen von Algorithmen für maschinelles Lernen oder Deep Learning, Training oder Inferenzieren durchführen.
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 5100 ein In-Order-Frontend („Frontend“) 5101 zum Abrufen von auszuführenden Anweisungen und Vorbereiten von Anweisungen, die später in einer Prozessorpipeline verwendet werden sollen. In mindestens einer Ausführungsform kann das Frontend 5101 mehrere Einheiten beinhalten. In mindestens einer Ausführungsform ruft ein Anweisungsvorababrufer 5126 Anweisungen aus dem Speicher ab und speist die Anweisungen in einen Anweisungsdecodierer 5128 ein, der die Anweisungen wiederum decodiert oder interpretiert. Zum Beispiel decodiert in mindestens einer Ausführungsform der Anweisungsdecodierer 5128 eine empfangene Anweisung in eine oder mehrere Operationen, die als „Mikroanweisungen“ oder „Mikrooperationen“ bezeichnet werden (auch als „Mikro-Ops“ oder „µops“ bezeichnet) und die eine Maschine ausführen kann. In mindestens einer Ausführungsform parst der Anweisungsdecodierer 5128 eine Anweisung in einen Opcode und entsprechende Daten- und Steuerfelder, die durch die Mikroarchitektur verwendet werden können, um Operationen gemäß mindestens einer Ausführungsform durchzuführen. In mindestens einer Ausführungsform kann ein Ablaufverfolgungscache 5130 decodierte µops in programmgeordnete Sequenzen oder Abläufe in einer µop-Warteschlange 5134 zur Ausführung zusammenstellen. Wenn der Ablaufverfolgungscache 5130 auf eine komplexe Anweisung stößt, stellt in mindestens einer Ausführungsform ein Mikrocode-ROM 5132 die für den Abschluss einer Operation notwendigen µops bereit.
  • In 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. In mindestens einer Ausführungsform kann, falls mehr als vier Mikro-Ops benötigt werden, um eine Anweisung abzuschließen, der Anweisungsdecodierer 5128 auf den Mikrocode-ROM 5132 zugreifen, um diese Anweisung durchzuführen. In mindestens einer Ausführungsform kann eine Anweisung in eine kleine Anzahl von Mikro-Ops zur Verarbeitung in dem Anweisungsdecodierer 5128 decodiert werden. In mindestens einer Ausführungsform kann eine Anweisung innerhalb des Mikrocode-ROM 5132 gespeichert werden, wenn eine Reihe von Mikro-Ops zum Erzielen einer derartigen Operation benötigt werden sollte. In mindestens einer Ausführungsform bezieht sich der Ablaufverfolgungscache 5130 auf ein programmierbares logisches Array (programmable logic array - „PLA“) für den Einsprungpunkt, um einen korrekten Mikroanweisungszeiger zum Lesen von Mikrocodesequenzen zu bestimmen, um eine oder mehrere Anweisungen aus dem Mikrocode-ROM 5132 gemäß mindestens einer Ausführungsform abzuschließen. In mindestens einer Ausführungsform kann das Frontend 5101 einer Maschine, nachdem der Mikrocode-ROM 5132 die Sequenzierung von Mikro-Ops für eine Anweisung fertiggestellt hat, das Abrufen von Mikro-Ops aus dem Ablaufverfolgungscache 5130 wiederaufnehmen.
  • In mindestens einer Ausführungsform kann die Engine zur Ausführung in einer anderen Reihenfolge („Out-of-Order-Engine“) 5103 Anweisungen zur Ausführung vorbereiten. In mindestens einer Ausführungsform verfügt die Out-of-Order-Ausführungslogik über eine Reihe von Puffern, um den Fluss der Anweisungen zu glätten und neu zu ordnen, um die Rechenleistung zu optimieren, während sie eine Pipeline durchlaufen und zur Ausführung eingeplant werden. In mindestens einer Ausführungsform umfasst die Out-of-Order-Ausführungs-Engine 5103 ohne Einschränkung einen Zuweiser/Registerumbenenner 5140, eine Speicher-pop-Warteschlange 5142, eine Integer-/Gleitkomma-pop-Warteschlange 5144, einen Speicher-Planer 5146, einen schnellen Planer 5102, einen langsamen/allgemeinen Gleitkomma-Planer („langsamer/allgemeiner FP-Planer“) 5104 und einen einfachen Gleitkomma-Planer („einfacher FP-Planer“) 5106. In mindestens einer Ausführungsform werden der schnelle Planer 5102, der langsame/allgemeine Gleitkomma-Planer 5104 und der einfache Gleitkomma-Planer 5106 hierin auch zusammen als „µop-Planer 5102, 5104, 5106“ bezeichnet. In mindestens einer Ausführungsform weist der Zuweiser/Registerumbenenner 5140 Maschinenpuffer und Ressourcen zu, die jede µop für die Ausführung benötigt. In mindestens einer Ausführungsform benennt der Zuweiser/Registerumbenenner 5140 logische Register in Einträge in einer Registerdatei um. In mindestens einer Ausführungsform weist der Zuweiser/Registerumbenenner 5140 auch einen Eintrag für jede µop in einer von zwei µop-Warteschlangen zu, und zwar in der Speicher-µop-Warteschlange 5142 für Speicheroperationen und der Integer-/Gleitkomma-µop-Warteschlange 5144 für Nicht-Speicheroperationen, vor dem Speicher-Planer 5146 und den µop-Planern 5102, 5104, 5106. In mindestens einer Ausführungsform bestimmen die µop-Planer 5102, 5104, 5106 auf Grundlage der Bereitschaft ihrer abhängigen Eingaberegister-Operandenquellen und der Verfügbarkeit der Ausführungsressourcen, die µops benötigen, um ihre Operation abzuschließen, wann eine µop zur Ausführung bereit ist. In mindestens einer Ausführungsform kann der schnelle Planer 5102 auf jeder Hälfte des Haupttaktzyklus planen, während der langsame/allgemeine Gleitkomma-Planer 5104 und der einfache Gleitkomma-Planer 5106 einmal pro Hauptprozessortaktzyklus planen können. In mindestens einer Ausführungsform vermitteln die µop-Planer 5102, 5104, 5106 Zuteilungsports, um µops zur Ausführung einzuplanen.
  • In mindestens einer Ausführungsform beinhaltet der Ausführungsblock 5111 ohne Einschränkung eine Integerregisterdatei/ein Umgehungsnetz 5108, eine Gleitkommaregisterdatei/ein Umgehungsnetz („FP-Registerdatei/Umgehungsnetz“) 5110, Adresserzeugungseinheiten (address generation units - „AGUs“) 5112 und 5114, schnelle arithmetisch-logische Einheiten (ALUs) („schnelle ALUs“) 5116 und 5118, eine langsame arithmetisch-logische Einheit („langsame ALU“) 5120, eine Gleitkomma-ALU („FP“) 5122 und eine Gleitkomma-Bewegungseinheit („FP-Bewegung“) 5124. In mindestens einer Ausführungsform werden die Integerregisterdatei/das Umgehungsnetz 5108 und die Gleitkommaregisterdatei/das Umgehungsnetz 5110 hierin auch als „Registerbänke 5108, 5110“ bezeichnet. In mindestens einer Ausführungsform werden die AGUs 5112 und 5114, die schnellen ALUs 5116 und 5118, die langsame ALU 5120, die Gleitkomma-ALU 5122 und die Gleitkomma-Bewegungseinheit 5124 hierin auch als „Ausführungseinheiten 5112, 5114, 5116, 5118, 5120, 5122 und 5124“ bezeichnet. In mindestens einer Ausführungsform kann der Ausführungsblock 5111 ohne Einschränkung eine beliebige Anzahl (einschließlich null) und einen beliebigen Typ von Registerbänken, Umgehungsnetzen, Adresserzeugungseinheiten und Ausführungseinheiten in beliebiger Kombination beinhalten.
  • In mindestens einer Ausführungsform können die Registernetze 5108, 5110 zwischen den µop-Planern 5102, 5104, 5106 und den Ausführungseinheiten 5112, 5114, 5116, 5118, 5120, 5122 und 5124 angeordnet sein. In mindestens einer Ausführungsform führt die Integerregisterdatei/das Umgehungsnetz 5108 Integeroperationen durch. In mindestens einer Ausführungsform führt die Gleitkommaregisterdatei/das Umgehungsnetz 5110 Gleitkommaoperationen durch. In mindestens einer Ausführungsform kann jedes der Registernetze 5108, 5110 ohne Einschränkung ein Umgehungsnetz beinhalten, das gerade abgeschlossene Ergebnisse, die noch nicht in eine Registerdatei geschrieben wurden, umgehen oder zu neuen abhängigen µops weiterleiten kann. In mindestens einer Ausführungsform können die Registernetze 5108, 5110 miteinander Daten kommunizieren. In mindestens einer Ausführungsform kann die Integerregisterdatei/das Umgehungsnetz 5108 ohne Einschränkung zwei separate Registerbänke beinhalten, eine Registerdatei für Daten niederer Ordnung mit zweiunddreißig Bit und eine zweite Registerdatei für Daten hoher Ordnung mit zweiunddreißig Bit. In mindestens einer Ausführungsform kann die Gleitkommaregisterdatei/das Umgehungsnetz 5110 ohne Einschränkung 128 Bit breite Einträge beinhalten, da Gleitkommaanweisungen typischerweise Operanden mit einer Breite von 64 bis 128 Bit aufweisen.
  • In mindestens einer Ausführungsform können die Ausführungseinheiten 5112 , 5114 , 5116 , 5118 , 5120 , 5122 , 5124 Befehle ausführen. In mindestens einer Ausführungsform speichern die Registernetze 5108, 5110 Integer- und Gleitkommadaten-Operandenwerte, die Mikroanweisungen benötigen, um ausgeführt zu werden. In mindestens einer Ausführungsform kann der Prozessor 5100 ohne Einschränkung eine beliebige Anzahl und Kombination der Ausführungseinheiten 5112, 5114, 5116, 5118, 5120, 5122, 5124 beinhalten. In mindestens einer Ausführungsform können die Gleitkomma-ALU 5122 und die Gleitkomma-Bewegungseinheit 5124 Gleitkomma-, MMX-, SIMD-, AVX- und SSE- oder andere Operationen ausführen, einschließlich spezialisierter Anweisungen des maschinellen Lernens. In mindestens einer Ausführungsform kann die Gleitkomma-ALU 5122 ohne Einschränkung einen 64 Bit mal 64 Bit großen Gleitkommadividierer zum Ausführen von Divisions-, Quadratwurzel- und Rest-Mikro-Ops beinhalten. In mindestens einer Ausführungsform können Anweisungen, an denen ein Gleitkommawert beteiligt ist, mit Gleitkomma-Hardware gehandhabt werden. In mindestens einer Ausführungsform können ALU-Operationen an die schnellen ALUs 5116, 5118 übergeben werden. In mindestens einer Ausführungsform können die schnellen ALUs 5116, 5118 schnelle Operationen mit einer effektiven Latenz von einem halben Taktzyklus ausführen. In mindestens einer Ausführungsform gehen die meisten komplexen Integeroperationen an die langsame ALU 5120, da die langsame ALU 5120 ohne Einschränkung Integerausführungs-Hardware für Operationen vom Typ mit langer Latenz beinhalten kann, wie etwa einen Multiplikator, Verschiebungen, Flag-Logik und Verzweigungsverarbeitung. In mindestens einer Ausführungsform können die Lade-/Speicheroperationen eines Speichers durch die AGUs 5112, 5114 ausgeführt werden. In mindestens einer Ausführungsform können die schnelle ALU 5116, die schnelle ALU 5118 und die langsame ALU 5120 Integeroperationen an 64-Bit-Datenoperanden durchführen. In mindestens einer Ausführungsform können die schnelle ALU 5116, die schnelle ALU 5118 und die langsame ALU 5120 so implementiert sein, dass sie eine Vielfalt von Datenbitgrößen unterstützen, darunter sechzehn, zweiunddreißig, 128, 256 usw. In mindestens einer Ausführungsform können die Gleitkomma-ALU 5122 und die Gleitkomma-Bewegungseinheit 5124 so implementiert sein, dass sie einen Bereich von Operanden unterstützen, der Bits mit verschiedenen Breiten aufweist, wie etwa 128 Bit breite Operanden mit gepackten Daten in Verbindung mit SIMD- und Multimedia-Anweisungen.
  • In mindestens einer Ausführungsform teilen die µop-Planer 5102, 5104, 5106 abhängige Operationen zu, bevor die Ausführung einer übergeordneten Last beendet ist. In mindestens einer Ausführungsform kann der Prozessor 5100, da µops in dem Prozessor 5100 spekulativ geplant und ausgeführt werden können, auch Logik zum Handhaben von Speicherfehlern beinhalten. In mindestens einer Ausführungsform können, falls eine Datenlast in einem Daten-Cache einen Fehler verursacht, abhängige Operationen in einer Pipeline im Gange sein, die einen Planer mit temporär inkorrekten Daten verlassen haben. In mindestens einer Ausführungsform verfolgt ein Wiederholungsmechanismus Anweisungen, die falsche Daten verwenden, und führt sie erneut aus. In mindestens einer Ausführungsform könnte es sein, dass abhängige Operationen wiederholt werden müssen, und es kann unabhängigen Operationen ermöglicht werden, abgeschlossen zu werden. In mindestens einer Ausführungsform können die Planer und ein Wiederholungsmechanismus mindestens einer Ausführungsform eines Prozessors auch dafür ausgestaltet sein, Anweisungssequenzen für Zeichenfolgenvergleichsoperationen abzufangen.
  • In mindestens einer Ausführungsform können sich „Register“ auf bordeigene Prozessorspeicherorte beziehen, die als Teil von Anweisungen zum Identifizieren von Operanden verwendet werden können. In mindestens einer Ausführungsform kann es sich bei den Registern um diejenigen handeln, die von außerhalb eines Prozessors (aus der Sicht eines Programmierers) verwendbar sein können. In mindestens einer Ausführungsform sind die Register möglicherweise nicht auf einen konkreten Schaltungstyp beschränkt. Vielmehr kann ein Register in mindestens einer Ausführungsform Daten speichern, Daten bereitstellen und die hierin beschriebenen Funktionen durchführen. In mindestens einer Ausführungsform können die hierin beschriebenen Register durch Schaltungen innerhalb eines Prozessors unter Verwendung einer beliebigen Anzahl unterschiedlicher Techniken implementiert werden, wie etwa dedizierter physischer Register, dynamisch zugewiesener physischer Register unter Verwendung von Registerumbenennung, Kombinationen aus dedizierten und dynamisch zugewiesenen physischen Registern usw. In mindestens einer Ausführungsform speichern Integerregister 32-Bit-Integerdaten. Eine Registerdatei von mindestens einer Ausführungsform enthält außerdem acht Multimedia-SIMD-Register für gepackte Daten.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 3515 in den Ausführungsblock 5111 und andere gezeigte oder nicht gezeigte Speicher oder Register einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in dem Ausführungsblock 5111 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 5111 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • 52 veranschaulicht einen Deep-Learning-Anwendungsprozessor 5200 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform verwendet der Deep-Learning-Anwendungsprozessor 5200 Anweisungen, die bei Ausführung durch den Deep-Learning-Anwendungsprozessor 5200 den Deep-Learning-Anwendungsprozessor 5200 dazu veranlassen, einige oder alle der in dieser gesamten Offenbarung beschriebenen Prozesse und Techniken durchzuführen. In mindestens einer Ausführungsform ist der Deep-Learning-Anwendungsprozessor 5200 eine anwendungsspezifische integrierte Schaltung (ASIC). In mindestens einer Ausführungsform führt der Anwendungsprozessor 5200 Matrixmultiplikationsoperationen entweder „fest verdrahtet“ in Hardware als Ergebnis des Durchführens einer oder mehrerer Anweisungen oder beides durch. In mindestens einer Ausführungsform beinhaltet der Deep-Learning-Anwendungsprozessor 5200 ohne Einschränkung Verarbeitungscluster 5210(1)-5210(12), chipübergreifende Verknüpfungen (Inter-Chip Links - „ICLs“) 5220(1)-5220(12), chipübergreifende Steuerungen (Inter-Chip Controllers - „ICCs“) 5230(1)-5230(2), Speicher mit hoher Bandbreite der zweiten Generation (high-bandwidth memory second generation - „HBM2“) 5240(1)-5240(4), Speichersteuerungen (memory controllers - „Mem Ctrlrs“) 5242(1 )-5242(4), eine Bitübertragungsschicht mit Speicher mit hoher Bandbreite (high bandwidth memory physical layer - „HBM PHY“) 5244(1 )-5244(4), eine zentrale Verwaltungssteuerungs-Verarbeitungseinheit („Verwaltungssteuerungs-CPU“) 5250, eine serielle Peripherieschnittstelle, eine zwischenintegrierte Schaltung und einen Universal-Eingabe/Ausgabe-Block („SPI, I2C, GPIO“) 5260, eine Interconnect-Express-Steuerung für Peripheriekomponenten und einen Direktspeicherzugriffsblock („PCIe-Steuerung und DMA“) 5270 und einen sechzehnspurigen Interconnect-Express-Port für Peripheriekomponenten („PCI-Express x 16“) 5280.
  • In mindestens einer Ausführungsform können die Verarbeitungscluster 5210 Deep-Learning-Operationen durchführen, einschließlich Inferenz- oder Vorhersageoperationen auf Grundlage von Gewichtungsparametern, die mit einer oder mehreren Trainingstechniken, einschließlich der hierin beschriebenen, berechnet wurden. In mindestens einer Ausführungsform kann jeder Verarbeitungscluster 5210 ohne Einschränkung eine beliebige Anzahl und einen beliebigen Typ von Prozessoren beinhalten. In mindestens einer Ausführungsform kann der Deep-Learning-Anwendungsprozessor 5200 eine beliebige Anzahl und einen beliebigen Typ von Verarbeitungsclustern 5210 beinhalten. In mindestens einer Ausführungsform sind die chipübergreifenden Verknüpfungen 5220 bidirektional. In mindestens einer Ausführungsform ermöglichen die chipübergreifenden Verknüpfungen 5220 und die chipübergreifenden Steuerungen 5230 mehreren Deep-Learning-Anwendungsprozessoren 5200 den Austausch von Informationen, einschließlich Aktivierungsinformationen, die aus dem Durchführen eines oder mehrerer Algorithmen des maschineller Lernens resultieren, die in einem oder mehreren neuronalen Netzen verkörpert sind. In mindestens einer Ausführungsform kann der Deep-Learning-Anwendungsprozessor 5200 eine beliebige Anzahl (einschließlich null) und eine beliebige Art von ICLs 5220 und ICCs 5230 beinhalten.
  • In mindestens einer Ausführungsform stellen die HBM2s 5240 insgesamt 32 Gigabyte (GB) Speicher bereit. In mindestens einer Ausführungsform ist HBM2 5240(i) sowohl mit der Speichersteuerung 5242(i) als auch der HBM PHY 5244(i) assoziiert, wobei „i“ eine willkürliche ganze Zahl ist. In mindestens einer Ausführungsform kann eine beliebige Anzahl von HBM2s 5240 einen beliebigen Typ und eine beliebige Gesamtmenge an Speicher mit hoher Bandbreite bereitstellen und mit einer beliebigen Anzahl (einschließlich null) und einem beliebigen Typ von Speichersteuerungen 5242 und HBM PHYs 5244 assoziiert sein. In mindestens einer Ausführungsform können SPI, I2C, GPIO 5260, PCIe-Steuerung und DMA 5270 und/oder PCle 5280 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 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie etwa ein neuronales Netz, zu trainieren, um dem Deep-Learning-Anwendungsprozessor 5200 bereitgestellte Informationen vorherzusagen oder zu inferenzieren. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor 5200 verwendet, um Informationen auf Grundlage eines trainierten Modells des maschinellen Lernens (z. B. eines neuronalen Netzes) zu inferenzieren oder vorherzusagen, das durch einen anderen Prozessor oder ein anderes System oder durch den Deep-Learning-Anwendungsprozessor 5200 trainiert wurde. In mindestens einer Ausführungsform kann der Prozessor 5200 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netze durchzuführen.
  • 53 ist ein Blockdiagramm eines neuromorphen Prozessors 5300 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der neuromorphe Prozessor 5300 eine oder mehrere Eingaben von Quellen außerhalb des neuromorphen Prozessors 5300 empfangen. In mindestens einer Ausführungsform können diese Eingaben an ein oder mehrere Neuronen 5302 innerhalb des neuromorphen Prozessors 5300 übertragen werden. In mindestens einer Ausführungsform können die Neuronen 5302 und Komponenten davon unter Verwendung von Schaltungen oder Logik implementiert sein, einschließlich einer oder mehrerer arithmetisch-logischer Einheiten (ALUs). In mindestens einer Ausführungsform kann der neuromorphe Prozessor 5300 ohne Einschränkung Tausende oder Millionen von Instanzen von Neuronen 5302 beinhalten, aber es kann eine beliebige geeignete Anzahl von Neuronen 5302 verwendet werden. In mindestens einer Ausführungsform kann jede Instanz des Neurons 5302 einen Neuroneneingang 5304 und einen Neuronenausgang 5306 beinhalten. In mindestens einer Ausführungsform können die Neuronen 5302 Ausgaben erzeugen, die an Eingänge anderer Instanzen von Neuronen 5302 übertragen werden können. Zum Beispiel können in mindestens einer Ausführungsform die Neuroneneingänge 5304 und die Neuronenausgänge 5306 über Synapsen 5308 zusammengeschaltet sein.
  • In mindestens einer Ausführungsform können die Neuronen 5302 und die Synapsen 5308 derart zusammengeschaltet sein, dass der neuromorphe Prozessor 5300 arbeitet, um die durch den neuromorphen Prozessor 5300 empfangenen Informationen zu verarbeiten oder zu analysieren. In mindestens einer Ausführungsform können die Neuronen 5302 einen Ausgabeimpuls (oder „Fire“ oder „Spike“) übertragen, wenn die über den Neuroneneingang 5304 empfangenen Eingaben einen Schwellenwert überschreiten. In mindestens einer Ausführungsform können die Neuronen 5302 die an den Neuroneneingängen 5304 empfangenen Signale summieren oder integrieren. Zum Beispiel können in mindestens einer Ausführungsform die Neuronen 5302 als leckende Integrate-and-Fire-Neuronen implementiert sein, wobei, falls eine Summe (als „Membranpotential“ bezeichnet) einen Schwellenwert überschreitet, das Neuron 5302 eine Ausgabe (oder „Feuern“) unter Verwendung einer Übertragungsfunktion, wie etwa einer Sigmoid- oder Schwellenwertfunktion, erzeugen kann. In mindestens einer Ausführungsform kann ein leckendes Integrate-and-Fire-Neuron Signale, die an den Neuroneneingängen 5304 empfangen werden, zu einem Membranpotential summieren und auch einen Abklingfaktor (oder ein Leck) anwenden, um ein Membranpotential zu reduzieren. In mindestens einer Ausführungsform kann ein leckendes Integrate-and-Fire-Neuron feuern, falls mehrere Eingabesignale an den Neuroneneingängen 5304 schnell genug empfangen werden, um einen Schwellenwert zu überschreiten (d. h., bevor ein Membranpotential zu weit nach unten abklingt, um zu feuern). In mindestens einer Ausführungsform können die Neuronen 5302 unter Verwendung von Schaltungen oder Logik implementiert sein, die Eingaben empfangen, Eingaben in ein Membranpotential integrieren und ein Membranpotential abklingen lassen. In mindestens einer Ausführungsform können Eingaben gemittelt werden oder kann eine beliebige andere geeignete Übertragungsfunktion verwendet werden. Darüber hinaus können die Neuronen 5302 in mindestens einer Ausführungsform ohne Einschränkung Komparatorschaltungen oder -logik beinhalten, die einen Ausgabe-Spike an dem Neuronenausgang 5306 erzeugen, wenn das Ergebnis des Anwendens einer Übertragungsfunktion auf den Neuroneneingang 5304 einen Schwellenwert überschreitet. In mindestens einer Ausführungsform kann das Neuron 5302, sobald es feuert, zuvor empfangene Eingabeinformationen ignorieren, indem es zum Beispiel ein Membranpotential auf 0 oder einen anderen geeigneten Standardwert zurücksetzt. In mindestens einer Ausführungsform kann das Neuron 5302, sobald das Membranpotential auf 0 zurückgesetzt wurde, nach einer geeigneten Zeitspanne (oder Refraktärzeit) den normalen Betrieb wiederaufnehmen.
  • In mindestens einer Ausführungsform können die Neuronen 5302 durch die Synapsen 5308 zusammengeschaltet sein. In mindestens einer Ausführungsform können die Synapsen 5308 arbeiten, um Signale von einem Ausgang eines ersten Neurons 5302 an einen Eingang eines zweiten Neurons 5302 zu übertragen. In mindestens einer Ausführungsform können die Neuronen 5302 Informationen über mehr als eine Instanz der Synapse 5308 übertragen. In mindestens einer Ausführungsform können eine oder mehrere Instanzen der Neuronenausgabe 5306 über eine Instanz der Synapse 5308 mit einer Instanz der Neuroneneingabe 5304 in dem gleichen Neuron 5302 verbunden sein. In mindestens einer Ausführungsform kann eine Instanz des Neurons 5302, die eine über eine Instanz der Synapse 5308 zu übertragende Ausgabe erzeugt, als „präsynaptisches Neuron“ in Bezug auf diese Instanz der Synapse 5308 bezeichnet werden. In mindestens einer Ausführungsform kann eine Instanz des Neurons 5302, die eine über eine Instanz der Synapse 5308 übertragene Eingabe empfängt, als „postsynaptisches Neuron“ in Bezug auf diese Instanz der Synapse 5308 bezeichnet werden. Da eine Instanz des Neurons 5302 Eingaben von einer oder mehreren Instanzen der Synapse 5308 empfangen kann und auch Ausgaben über eine oder mehrere Instanzen der Synapse 5308 übertragen kann, kann in mindestens einer Ausführungsform eine einzelne Instanz des Neurons 5302 daher sowohl ein „präsynaptisches Neuron“ als auch ein „postsynaptisches Neuron“ in Bezug auf verschiedene Instanzen der Synapsen 5308 sein.
  • In mindestens einer Ausführungsform können die Neuronen 5302 in eine oder mehrere Schichten organisiert sein. In mindestens einer Ausführungsform kann jede Instanz des Neurons 5302 einen Neuronenausgang 5306 aufweisen, der sich durch eine oder mehrere Synapsen 5308 zu einem oder mehreren Neuroneneingängen 5304 auffächern kann. In mindestens einer Ausführungsform können die Neuronenausgänge 5306 der Neuronen 5302 in einer ersten Schicht 5310 mit den Neuroneneingängen 5304 der Neuronen 5302 in einer zweiten Schicht 5312 verbunden sein. In mindestens einer Ausführungsform kann die Schicht 5310 als „vorwärtsgekoppelte Schicht“ bezeichnet werden. In mindestens einer Ausführungsform kann sich jede Instanz des Neurons 5302 in einer Instanz der ersten Schicht 5310 zu jeder Instanz des Neurons 5302 in der zweiten Schicht 5312 auffächern. In mindestens einer Ausführungsform kann die erste Schicht 5310 als „vollständig verbundene vorwärtsgekoppelte Schicht“ bezeichnet werden. In mindestens einer Ausführungsform kann sich jede Instanz des Neurons 5302 in einer Instanz der zweiten Schicht 5312 zu weniger als allen Instanzen des Neurons 5302 in einer dritten Schicht 5314 auffächern. In mindestens einer Ausführungsform kann die zweite Schicht 5312 als „spärlich verbundene vorwärtsgekoppelte Schicht“ bezeichnet werden. In mindestens einer Ausführungsform können sich die Neuronen 5302 in der zweiten Schicht 5312 zu den Neuronen 5302 in mehreren anderen Schichten auffächern, einschließlich zu den Neuronen 5302, die sich ebenfalls in der zweiten Schicht 5312 befinden. In mindestens einer Ausführungsform kann die zweite Schicht 5312 als „rekurrente Schicht“ bezeichnet werden. In mindestens einer Ausführungsform kann der neuromorphe Prozessor 5300 ohne Einschränkung eine beliebige geeignete Kombination von rekurrenten Schichten und vorwärtsgekoppelten Schichten beinhalten, einschließlich ohne Einschränkung sowohl spärlich verbundener vorwärtsgekoppelter Schichten als auch vollständig verbundener vorwärtsgekoppelter Schichten.
  • In mindestens einer Ausführungsform kann der neuromorphe Prozessor 5300 ohne Einschränkung eine rekonfigurierbare Zusammenschaltungsarchitektur oder dedizierte fest verdrahtete Zusammenschaltungen beinhalten, um die Synapse 5308 mit den Neuronen 5302 zu verbinden. In mindestens einer Ausführungsform kann der neuromorphe Prozessor 5300 ohne Einschränkung Schaltung oder Logik beinhalten, die es ermöglicht, Synapsen je nach Bedarf auf Grundlage der Topologie des neuronalen Netzes und des Neuronen-Fan-In/-Out unterschiedlichen Neuronen 5302 zuzuweisen. Zum Beispiel können in mindestens einer Ausführungsform die Synapsen 5308 mit den Neuronen 5302 unter Verwendung einer Zusammenschaltungsstruktur, wie etwa eines Netzes auf einem Chip, oder mit dedizierten Verbindungen verbunden sein. In mindestens einer Ausführungsform können die Synapsenzusammenschaltungen und Komponenten davon unter Verwendung von Schaltungen oder Logik implementiert sein.
  • 54 ist ein Blockdiagramm eines Verarbeitungssystems gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet das System 5400 einen oder mehrere Prozessoren 5402 und einen oder mehrere Grafikprozessoren 5408 und kann ein Einzelprozessor-Desktop-System, ein Mehrprozessor-Workstation-System oder ein Server-System sein, dass eine große Anzahl von Prozessoren 5402 oder Prozessorkernen 5407 aufweist. In mindestens einer Ausführungsform ist das System 5400 eine Verarbeitungsplattform, die in eine integrierte Schaltung als System auf einem Chip (SoC) zur Verwendung in mobilen, tragbaren oder eingebetteten Vorrichtungen integriert ist. In mindestens einer Ausführungsform führt das System 4700 den Prozess 900 (siehe 9A) und/oder den Prozess 906 (siehe 9B) durch.
  • In mindestens einer Ausführungsform kann das System 5400 eine serverbasierte Spieleplattform, eine Spielekonsole, einschließlich einer Spiele- und Medienkonsole, eine mobile Spielekonsole, eine tragbare Spielekonsole oder eine Online-Spielekonsole beinhalten oder in diese integriert sein. In mindestens einer Ausführungsform ist das System 5400 ein Mobiltelefon, ein Smartphone, eine Tablet-Rechenvorrichtung oder eine mobile Internet-Vorrichtung. In mindestens einer Ausführungsform kann das Verarbeitungssystem 5400 auch eine tragbare Vorrichtung beinhalten, mit dieser gekoppelt oder in diese integriert sein, wie etwa eine Smartwatch-Wearable-Vorrichtung, eine Smart-Eyewear-Vorrichtung, eine Augmented-Reality-Vorrichtung oder eine Virtual-Reality-Vorrichtung. In mindestens einer Ausführungsform ist das Verarbeitungssystem 5400 ein Fernsehgerät oder eine Set-Top-Box-Vorrichtung, das bzw. die einen oder mehrere Prozessoren 5402 und eine Grafikschnittstelle, die durch einen oder mehrere Grafikprozessoren 5408 aufweist.
  • In mindestens einer Ausführungsform beinhalten ein oder mehrere Prozessoren 5402 jeweils einen oder mehrere Prozessorkerne 5407, um Anweisungen zu verarbeiten, die bei Ausführung Operationen für System- und Benutzersoftware durchführen. In mindestens einer Ausführungsform ist jeder von einem oder mehreren Prozessorkernen 5407 so konfiguriert, dass er eine spezifische Anweisungssequenz 5409 verarbeitet. In mindestens einer Ausführungsform kann die Anweisungssequenz 5409 Complex Instruction Set Computing (CISC), Reduced Instruction Set Computing (RISC) oder Rechnen über ein Very Long Instruction Word (VLIW) ermöglichen. In mindestens einer Ausführungsform können die Prozessorkerne 5407 jeweils eine andere Anweisungssequenz 5409 verarbeiten, die Anweisungen beinhalten kann, um die Emulation anderer Anweisungssequenzen zu erleichtern. In mindestens einer Ausführungsform kann der Prozessorkern 5407 auch andere Verarbeitungsvorrichtungen beinhalten, wie etwa einen digitalen Signalprozessor (DSP).
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 5402 einen Cache-Speicher 5404. In mindestens einer Ausführungsform kann der Prozessor 5402 einen einzelnen internen Cache oder mehrere Ebenen des internen Cache aufweisen. In mindestens einer Ausführungsform wird der Cache-Speicher von verschiedenen Komponenten des Prozessors 5402 gemeinsam genutzt. In mindestens einer Ausführungsform verwendet der Prozessor 5402 auch einen externen Cache (z. B. einen Level-3-(L3-)Cache oder Last-Level-Cache (LLC)) (nicht gezeigt), der unter Verwendung bekannter Cache-Kohärenztechniken von den Prozessorkernen 5407 gemeinsam genutzt werden kann. In mindestens einer Ausführungsform ist in dem Prozessor 5402 zusätzlich eine Registerdatei 5406 enthalten, die unterschiedliche Typen von Registern zum Speichern unterschiedlicher Datentypen beinhalten kann (z. B. Integerregister, Gleitkommaregister, Statusregister und ein Anweisungszeigerregister). In mindestens einer Ausführungsform kann die Registerdatei 5406 Allzweckregister oder andere Register beinhalten.
  • In mindestens einer Ausführungsform sind ein oder mehrere Prozessor(en) 5402 mit einem oder mehreren Schnittstellenbus(sen) 5410 gekoppelt, um Kommunikationssignale, wie etwa Adress-, Daten- oder Steuersignale, zwischen dem Prozessor 5402 und anderen Komponenten in dem System 5400 zu übertragen. In mindestens einer Ausführungsform kann der Schnittstellenbus 5410 ein Prozessorbus sein, wie etwa eine Version eines Direct-Media-Interface-(DMI-)Busses. In mindestens einer Ausführungsform ist der Schnittstellenbus 5410 nicht auf einen DMI-Bus beschränkt, sondern kann einen oder mehrere Peripheral-Component-Interconnect-Busse (z. B. PCI, PCI Express), Speicherbusse oder andere Typen von Schnittstellenbussen beinhalten. In mindestens einer Ausführungsform beinhalten Prozessor(en) 5402 eine integrierte Speichersteuerung 5416 und einen Plattformsteuerungs-Hub 5430. In mindestens einer Ausführungsform ermöglicht die Speichersteuerung 5416 die Kommunikation zwischen einer Speichervorrichtung und anderen Komponenten des Systems 5400, während der Plattformsteuerungs-Hub (platform controller hub - PCH) 5430 Verbindungen mit E/A-Vorrichtungen über einen lokalen E/A-Bus bereitstellt.
  • In mindestens einer Ausführungsform kann eine Speichervorrichtung 5420 eine Vorrichtung mit dynamischem Direktzugriffsspeicher (DRAM), eine Vorrichtung mit statischem Direktzugriffsspeicher (SRAM), eine Flash-Speichervorrichtung, eine Phasenwechsel-Speichervorrichtung oder eine andere Speichervorrichtung sein, die eine geeignete Rechenleistung aufweist, um als Prozessspeicher zu dienen. In mindestens einer Ausführungsform kann die Speichervorrichtung 5420 als Systemspeicher für das System 5400 arbeiten, um Daten 5422 und Anweisungen 5421 zur Verwendung zu speichern, wenn ein oder mehrere Prozessoren 5402 eine Anwendung oder einen Prozess ausführen. In mindestens einer Ausführungsform ist die Speichersteuerung 5416 auch mit einem optionalen externen Grafikprozessor 5412 gekoppelt, der mit einem oder mehreren Grafikprozessoren 5408 in den Prozessoren 5402 kommunizieren kann, um Grafik- und Medienoperationen durchzuführen. In mindestens einer Ausführungsform kann eine Anzeigevorrichtung 5411 mit Prozessor(en) 5402 verbunden sein. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 5411 eine oder mehrere von einer internen Anzeigevorrichtung, wie in einer mobilen elektronischen Vorrichtung oder einer Laptop-Vorrichtung, oder einer externen Anzeigevorrichtung beinhalten, die über eine Anzeigeschnittstelle (z. B. DisplayPort usw.) angeschlossen ist. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 5411 eine am Kopf befestigte Anzeige (head mounted display - HMD) beinhalten, wie etwa eine stereoskopische Anzeigevorrichtung zur Verwendung bei Virtual-Reality-(VR-)Anwendungen oder Augmented-Reality-(AR-)Anwendungen.
  • In mindestens einer Ausführungsform ermöglicht der Plattformsteuerungs-Hub 5430 den Peripheriegeräten, sich über einen Hochgeschwindigkeits-E/A-Bus mit der Speichervorrichtung 5420 und dem Prozessor 5402 zu verbinden. In mindestens einer Ausführungsform beinhalten E/A-Peripheriegeräte, ohne darauf beschränkt zu sein, eine Audiosteuerung 5446, eine Netzwerksteuerung 5434, eine Firmware-Schnittstelle 5428, einen drahtlosen Transceiver 5426, Berührungssensoren 5425, eine Datenspeichervorrichtung 5424 (z. B. Festplatte, Flash-Speicher usw.). In mindestens einer Ausführungsform kann die Datenspeichervorrichtung 5424 über eine Speicherschnittstelle (z. B. SATA) oder über einen Peripheriebus, wie etwa einen Peripheral-Component-Interconnect-Bus (z. B. PCI, PCI Express), verbunden sein. In mindestens einer Ausführungsform können die Berührungssensoren 5425 Berührungsbildschirmsensoren, Drucksensoren oder Fingerabdrucksensoren beinhalten. In mindestens einer Ausführungsform kann der drahtlose Sendeempfänger 5426 ein Wi-Fi-Sendeempfänger, ein Bluetooth-Sendeempfänger oder ein Sendeempfänger für ein mobiles Netz, wie etwa ein 3G-, 4G- oder Long-Term-Evolution-(LTE-)Sendeempfänger sein. In mindestens einer Ausführungsform ermöglicht die Firmware-Schnittstelle 5428 die Kommunikation mit der System-Firmware und kann zum Beispiel eine Unified Extensible Firmware Interface (UEFI) sein. In mindestens einer Ausführungsform kann die Netzwerksteuerung 5434 eine Netzwerkverbindung zu einem drahtgebundenen Netzwerk ermöglichen. In mindestens einer Ausführungsform ist eine Hochleistungsnetzwerksteuerung (nicht dargestellt) mit dem Schnittstellenbus 5410 gekoppelt. In mindestens einer Ausführungsform ist die Audiosteuerung 5446 eine Mehrkanal-Audiosteuerung mit hoher Auflösung. In mindestens einer Ausführungsform beinhaltet das System 5400 eine optionale alte E/A-Steuerung 5440 zum Koppeln von älteren Vorrichtungen (z. B. Personal System 2 (PS/2)) an das System 5400. In mindestens einer Ausführungsform kann der Plattformsteuerungs-Hub 5430 auch mit einer oder mehreren Universal-Serial-Bus-(USB-)Steuerungen 5442 verbunden sein, die mit Eingabevorrichtungen, wie etwa Kombinationen aus Tastatur und Maus 5443, einer Kamera 5444 oder anderen USB-Eingabevorrichtungen, verbunden sind.
  • In mindestens einer Ausführungsform kann eine Instanz der Speichersteuerung 5416 und des Plattformsteuerungs-Hubs 5430 in einen diskreten externen Grafikprozessor, wie etwa den externen Grafikprozessor 5412, integriert sein. In mindestens einer Ausführungsform können sich der Plattformsteuerungs-Hub 5430 und/oder die Speichersteuerung 5416 außerhalb eines oder mehrerer Prozessoren 5402 befinden. Zum Beispiel kann das System 5400 in mindestens einer Ausführungsform eine externe Speichersteuerung 5416 und einen Plattformsteuerungs-Hub 5430 beinhalten, der als Speichersteuerungs-Hub und Peripheriesteuerungs-Hub innerhalb eines Systemchipsatzes konfiguriert sein kann, der mit den Prozessor(en) 5402 in Kommunikation steht.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 3515 in den Grafikprozessor 5408 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in einer 3D-Pipeline verkörperten ALUs verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 35A oder 35B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des/der Grafikprozessors(-en) 5408 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • 55 ist ein Blockdiagramm eines Prozessors 5500, der einen oder mehrere Prozessorkerne 5502A-5502N, eine integrierte Speichersteuerung 5514 und einen integrierten Grafikprozessor 5508 aufweist, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozessor 5500 zusätzliche Kerne bis einschließlich des zusätzlichen Kerns 5502N beinhalten, die durch Kästen mit gestrichelten Linien dargestellt sind. In mindestens einer Ausführungsform beinhaltet jeder der Prozessorkerne 5502A-5502N eine oder mehrere interne Cache-Einheiten 5504A-5504N. In mindestens einer Ausführungsform weist jeder Prozessorkern auch Zugriff auf eine oder mehrere gemeinsam genutzte Cache-Einheiten 5506 auf. In mindestens einer Ausführungsform führt der Prozessor 5500 den Prozess 900 (siehe 9A) oder den Prozess 906 (siehe 9B) durch.
  • In mindestens einer Ausführungsform stellen die internen Cache-Einheiten 5504A-5504N und die gemeinsam genutzten Cache-Einheiten 5506 eine Cache-Speicherhierarchie innerhalb des Prozessors 5500 dar. In mindestens einer Ausführungsform können die Cache-Speichereinheiten 5504A-5504N mindestens ein Level von Anweisungs- und Daten-Cache innerhalb jedes Prozessorkerns und ein oder mehrere Levels von gemeinsam genutztem Cache mittleren Levels, wie etwa ein Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cache-Levels, beinhalten, wobei ein höchstes Cache-Level vor dem externen Speicher als LLC klassifiziert ist. In mindestens einer Ausführungsform hält die Cache-Kohärenzlogik die Kohärenz zwischen verschiedenen Cache-Einheiten 5506 und 5504A-5504N aufrecht.
  • In mindestens einer Ausführungsform kann der Prozessor 5500 auch einen Satz von einer oder mehreren Bussteuerungseinheiten 5516 und einen Systemagentenkern 5510 beinhalten. In mindestens einer Ausführungsform verwalten Bussteuerungseinheiten 5516 einen Satz von Peripheriebussen, wie etwa einen oder mehrere PCI- oder PCI-Express-Busse. In mindestens einer Ausführungsform stellt der Systemagentenkern 5510 eine Verwaltungsfunktionalität für verschiedene Prozessorkomponenten bereit. In mindestens einer Ausführungsform beinhaltet der Systemagentenkern 5510 eine oder mehrere integrierte Speichersteuerungen 5514, um den Zugriff auf verschiedene externe Speichervorrichtungen (nicht gezeigt) zu verwalten.
  • In mindestens einer Ausführungsform beinhalten einer oder mehrere der Prozessorkerne 5502A-5502N Unterstützung für simultanes Multi-Threading. In mindestens einer Ausführungsform beinhaltet der Systemagentenkern 5510 Komponenten zum Koordinieren und Betreiben der Kerne 5502A-5502N während der Multi-Thread-Verarbeitung. In mindestens einer Ausführungsform kann der Systemagentenkern 5510 zusätzlich eine Leistungssteuereinheit (power control unit - PCU) beinhalten, die Logik und Komponenten zum Regulieren eines oder mehrerer Leistungszustände der Prozessorkerne 5502A-5502N und des Grafikprozessors 5508 beinhaltet.
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 5500 zusätzlich den Grafikprozessor 5508 zum Ausführen von Grafikverarbeitungsoperationen. In mindestens einer Ausführungsform ist der Grafikprozessor 5508 mit gemeinsam genutzten Cache-Einheiten 5506 und dem Systemagentenkern 5510 gekoppelt, der eine oder mehrere integrierte Speichersteuerungen 5514 beinhaltet. In mindestens einer Ausführungsform beinhaltet der Systemagentenkern 5510 zudem eine Anzeigesteuerung 5511, um die Grafikprozessorausgabe zu einer oder mehreren gekoppelten Anzeigen zu treiben. In mindestens einer Ausführungsform kann die Anzeigesteuerung 5511 auch ein separates Modul sein, das über mindestens eine Zusammenschaltung mit dem Grafikprozessor 5508 gekoppelt ist, oder sie kann in den Grafikprozessor 5508 integriert sein.
  • In mindestens einer Ausführungsform wird eine ringbasierte Zusammenschaltungseinheit 5512 zum Koppeln interner Komponenten des Prozessors 5500 verwendet. In mindestens einer Ausführungsform kann eine alternative Zusammenschaltungseinheit verwendet werden, wie etwa eine Punkt-zu-Punkt-Zusammenschaltung, eine geschaltete Zusammenschaltung oder andere Techniken. In mindestens einer Ausführungsform ist der Grafikprozessor 5508 über eine E/A-Verknüpfung 5513 mit der Ringzusammenschaltung 5512 gekoppelt.
  • In mindestens einer Ausführungsform stellt die E/A-Verknüpfung 5513 mindestens eine von mehreren Sorten von E/A-Zusammenschaltungen dar, einschließlich einer gehäuseinternen E/A-Zusammenschaltung, die Kommunikation zwischen verschiedenen Prozessorkomponenten und einem eingebetteten Speichermodul 5518 mit hoher Rechenleistung, wie etwa einem eDRAM-Modul, erleichtert. In mindestens einer Ausführungsform verwenden jeder der Prozessorkerne 5502A-5502N und der Grafikprozessor 5508 ein eingebettetes Speichermodul 5518 als gemeinsam genutzten Last-Level-Cache.
  • In mindestens einer Ausführungsform sind die Prozessorkerne 5502A-5502N homogene Kerne, die eine gemeinsame Anweisungssatzarchitektur ausführen. In mindestens einer Ausführungsform sind die Prozessorkerne 5502A-5502N bezüglich der Anweisungssatzarchitektur (instruction set architecture - ISA) heterogen, wobei einer oder mehrere der Prozessorkerne 5502A-5502N einen gemeinsamen Anweisungssatz ausführen, während ein oder mehrere andere Kerne der Prozessorkerne 5502A-5502N eine Teilmenge eines gemeinsamen Anweisungssatzes oder eines anderen Anweisungssatzes ausführen. In mindestens einer Ausführungsform sind die Prozessorkerne 5502A-5502N bezüglich der Mikroarchitektur heterogen, wobei ein oder mehrere Kerne, die einen relativ betrachtet höheren Leistungsverbrauch aufweisen, mit einem oder mehreren Kernen, die einen niedrigeren Leistungsverbrauch aufweisen, gekoppelt sind. In mindestens einer Ausführungsform kann der Prozessor 5500 auf einem oder mehreren Chips oder als SoC-integrierte Schaltung implementiert sein.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte oder die gesamte Inferenz- und/oder Trainingslogik 3515 in den Prozessor 5500 integriert sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in einer 3D-Pipeline verkörperten ALUs, Grafikkern(e) 5502, gemeinsam genutzte Logik oder andere Logik in 55 verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 35A oder 35B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Prozessors 5500 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • 56 ist ein Blockdiagramm eines Grafikprozessors 5600, bei dem es sich um eine diskrete Grafikverarbeitungseinheit oder um einen mit einer Vielzahl von Verarbeitungskernen integrierten Grafikprozessor handeln kann. In mindestens einer Ausführungsform kommuniziert der Grafikprozessor 5600 über eine auf Speicher abgebildete E/A-Schnittstelle mit Registern auf dem Grafikprozessor 5600 und mit in Speicher abgelegten Befehlen. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 5600 eine Speicherschnittstelle 5614 zum Zugreifen auf Speicher. In mindestens einer Ausführungsform ist die Speicherschnittstelle 5614 eine Schnittstelle zu lokalem Speicher, einem oder mehreren internen Caches, einem oder mehreren gemeinsam genutzten externen Caches und/oder zu Systemspeicher.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 5600 zudem eine Anzeigesteuerung 5602, um Anzeigeausgabedaten zu einer Anzeigevorrichtung 5620 zu treiben. In mindestens einer Ausführungsform beinhaltet die Anzeigesteuerung 5602 Hardware für eine oder mehrere Überlagerungsebenen für die Anzeigevorrichtung 5620 und die Komposition mehrerer Schichten von Video- oder Benutzerschnittstellenelementen. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 5620 eine interne oder externe Anzeigevorrichtung sein. In mindestens einer Ausführungsform ist die Anzeigevorrichtung 5620 eine am Kopf befestigte Anzeigevorrichtung, wie etwa eine Virtual-Reality-(VR-)Anzeigevorrichtung oder eine Augmented-Reality-(AR-)Anzeigevorrichtung. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 5600 eine Videocodec-Engine 5606 zum Codieren, Decodieren oder Transcodieren von Medien in, aus oder zwischen einem oder mehreren Mediencodierformaten, einschließlich, aber nicht beschränkt auf, Moving-Picture-Experts-Group-(MPEG-)Formate wie etwa MPEG-2, Advanced-Video-Coding-(AVC-)Formate wie etwa H.264/MPEG-4 AVC sowie Society of Motion Picture & Television Engineers (SMPTE) 421 M/VC-1 und Joint-Photographic-Experts-Group-(JPEG-)Formate wie etwa JPEG und Motion JPEG (MJPEG). In mindestens einer Ausführungsform führt der Prozessor 5600 den Prozess 900 (siehe 9A) oder den Prozess 906 (siehe 9B) durch.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 5600 eine Block-Image-Transfer-(BLIT-)Engine 5604, um zweidimensionale (2D) Rastereroperationen durchzuführen, einschließlich zum Beispiel Bit-Boundary Block Transfers. In mindestens einer Ausführungsform werden jedoch 2D-Grafikoperationen unter Verwendung einer oder mehreren Komponenten einer Grafikverarbeitungs-Engine (graphics processing engine - GPE) 5610 durchgeführt. In mindestens einer Ausführungsform ist die GPE 5610 eine Rechen-Engine zum Durchführen von Grafikoperationen, einschließlich dreidimensionaler (3D) Grafikoperationen und Medienoperationen.
  • In mindestens einer Ausführungsform beinhaltet die GPE 5610 eine 3D-Pipeline 5612 zum Durchführen von 3D-Operationen, wie etwa Rendern dreidimensionaler Bilder und Szenen unter Verwendung von Verarbeitungsfunktionen, die an 3D-Primitivformen (z. B. Rechteck, Dreieck usw.) wirken. In mindestens einer Ausführungsform beinhaltet die 3D-Pipeline 5612 programmierbare Elemente und Festfunktionselemente, die verschiedene Tasks durchführen und/oder Ausführungs-Threads für ein 3D-/Medienteilsystem 5615 erzeugen. Während die 3D-Pipeline 5612 zum Durchführen von Medienoperationen verwendet werden kann, beinhaltet die GPE 5610 in mindestens einer Ausführungsform auch eine Medienpipeline 5616, die zum Durchführen von Medienoperationen, wie etwa Videonachverarbeitung und Bildverbesserung, verwendet wird.
  • In mindestens einer Ausführungsform beinhaltet die Medienpipeline 5616 Festfunktions- oder programmierbare Logikeinheiten, um eine oder mehrere spezialisierte Medienoperationen durchzuführen, wie etwa Beschleunigung von Videodecodierung, Videoentschachtelung und Beschleunigung von Videocodierung anstelle oder im Auftrag der Videocodec-Engine 5606. In mindestens einer Ausführungsform beinhaltet die Medienpipeline 5616 zusätzlich eine Thread-Erzeugungseinheit, um Threads zum Ausführen auf dem 3D-/Medienteilsystem 5615 zu erzeugen. In mindestens einer Ausführungsform führen erzeugte Threads Berechnungen für Medienoperationen auf einer oder mehreren Grafikausführungseinheiten aus, die in dem 3D-/Medienteilsystem 5615 enthalten sind.
  • In mindestens einer Ausführungsform beinhaltet das 3D-/Medienteilsystem 5615 Logik zum Ausführen von Threads, die durch die 3D-Pipeline 5612 und die Medienpipeline 5616 erzeugt werden. In mindestens einer Ausführungsform senden die 3D-Pipeline 5612 und die Medienpipeline 5616 Thread-Ausführungsanforderungen an das 3D-/Medienteilsystem 5615, das Thread-Zuteilungslogik zum Vermitteln und Zuteilen verschiedener Anforderungen an verfügbare Thread-Ausführungsressourcen beinhaltet. In mindestens einer Ausführungsform beinhalten die Ausführungsressourcen ein Array von Grafikausführungseinheiten zum Verarbeiten von 3D- und Medien-Threads. In mindestens einer Ausführungsform beinhaltet das 3D-/Medienteilsystem 5615 einen oder mehrere interne Caches für Thread-Anweisungen und Daten. In mindestens einer Ausführungsform beinhaltet das Teilsystem 5615 auch gemeinsam genutzten Speicher, einschließlich Registern und adressierbaren Speichers, um Daten zwischen Threads gemeinsam zu nutzen und Ausgabedaten zu speichern.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 3515 in den Grafikprozessor 5600 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in der 3D-Pipeline 5612 verkörperten ALUs verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 35A oder 35B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 5600 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • 57 ist ein Blockdiagramm einer Grafikverarbeitungs-Engine 5710 eines Grafikprozessors gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist die Grafikverarbeitungs-Engine (GPE) 5710 eine Version der in 56 gezeigten GPE 5610. In mindestens einer Ausführungsform ist eine Medienpipeline 5716 optional und möglicherweise nicht explizit innerhalb der GPE 5710 enthalten. In mindestens einer Ausführungsform ist ein separater Medien- und/oder Bildprozessor an die GPE 5710 gekoppelt. In mindestens einer Ausführungsform führt der Prozessor 5710 den Prozess 900 (siehe 9A) oder den Prozess 906 (siehe 9B) durch.
  • In mindestens einer Ausführungsform ist die GPE 5710 an einen Befehls-Streamer 5703 gekoppelt oder sie beinhaltet einen solchen, der einer 3D-Pipeline 5712 und/oder der Medienpipeline 5716 einen Befehlsstream bereitstellt. In mindestens einer Ausführungsform ist der Befehls-Streamer 5703 an Speicher gekoppelt, bei dem es sich um Systemspeicher oder um einen oder mehrere von internem Cache-Speicher und gemeinsam genutztem Cache-Speicher handeln kann. In mindestens einer Ausführungsform empfängt der Befehls-Streamer 5703 Befehle aus Speicher und sendet Befehle an die 3D-Pipeline 5712 und/oder die Medienpipeline 5716. In mindestens einer Ausführungsform handelt es sich bei den Befehlen um Anweisungen, Primitive oder Mikrooperationen, die aus einem Ringpuffer abgerufen werden, der Befehle für die 3D-Pipeline 5712 und die Medienpipeline 5716 speichert. In mindestens einer Ausführungsform kann ein Ringpuffer zusätzlich Batch-Befehlspuffer beinhalten, die Batches von mehreren Befehlen speichern. In mindestens einer Ausführungsform können die Befehle für die 3D-Pipeline 5712 auch Bezugnahmen auf Daten beinhalten, die in Speicher gespeichert sind, wie etwa, aber nicht beschränkt auf, Vertex- und Geometriedaten für die 3D-Pipeline 5712 und/oder Bilddaten und Speicherobjekte für die Medienpipeline 5716. In mindestens einer Ausführungsform verarbeiten die 3D-Pipeline 5712 und die Medienpipeline 5716 Befehle und Daten, indem sie Operationen durchführen oder einen oder mehrere Ausführungs-Threads einem Grafikkernarray 5714 zuteilen. In mindestens einer Ausführungsform beinhaltet das Grafikkernarray 5714 einen oder mehrere Blöcke von Grafikkernen (z. B. Grafikkern(e) 5715A, Grafikkern(e) 5715B), wobei jeder Block einen oder mehrere Grafikkerne beinhaltet. In mindestens einer Ausführungsform beinhaltet jeder Grafikkern einen Satz von Grafikausführungsressourcen, der eine Universal- und eine grafikspezifische Ausführungslogik zum Durchführen von Grafik- und Rechenoperationen sowie Logik zur Texturverarbeitung mit fester Funktion und/oder zur Beschleunigung des maschinellen Lernens und der künstlichen Intelligenz, einschließlich der Inferenz- und/oder Trainingslogik 3515 in 35A und 35B, beinhaltet.
  • In mindestens einer Ausführungsform beinhaltet die 3D-Pipeline 5712 Festfunktionslogik und programmierbare Logik, um ein oder mehrere Shader-Programme, wie etwa Vertex-Shader, Geometrie-Shader, Pixel-Shader, Fragment-Shader, Rechen-Shader oder andere Shader-Programme, zu verarbeiten, indem Anweisungen verarbeitet und Ausführungs-Threads dem Grafikkernarray 5714 zugeteilt werden. In mindestens einer Ausführungsform stellt das Grafikkernarray 5714 einen einheitlichen Block von Ausführungsressourcen zur Verwendung beim Verarbeiten von Shader-Programmen bereit. In mindestens einer Ausführungsform beinhaltet eine Mehrzweck-Ausführungslogik (z. B. Ausführungseinheiten) innerhalb der Grafikkern(e) 5715A-5715B des Grafikkernarrays 5714 Unterstützung für verschiedene 3D-API-Shader-Sprachen und sie kann mehrere simultane Ausführungs-Threads ausführen, die mit mehreren Shadern assoziiert sind.
  • In mindestens einer Ausführungsform beinhaltet das Grafikkernarray 5714 auch Ausführungslogik zum Durchführen von Medienfunktionen, wie etwa Video- und/oder Bildverarbeitung. In mindestens einer Ausführungsform beinhalten die Ausführungseinheiten zusätzlich Universallogik, die so programmiert werden kann, dass sie zusätzlich zu Grafikverarbeitungsoperationen parallele Universalrechenoperationen durchführt.
  • In mindestens einer Ausführungsform können Ausgabedaten, die durch Threads erzeugt werden, die auf dem Grafikkernarray 5714 ausgeführt werden, Daten in einem einheitlichen Rückgabepuffer (unified return buffer - URB) 5718 an Speicher ausgeben. In mindestens einer Ausführungsform kann der URB 5718 Daten für mehrere Threads speichern. In mindestens einer Ausführungsform kann der URB 5718 verwendet werden, um Daten zwischen unterschiedlichen Threads zu senden, die auf dem Grafikkernarray 5714 ausgeführt werden. In mindestens einer Ausführungsform kann der URB 5718 zusätzlich für die Synchronisation zwischen Threads auf dem Grafikkernarray 5714 und der Festfunktionslogik innerhalb der gemeinsam genutzten Funktionslogik 5720 verwendet werden.
  • In mindestens einer Ausführungsform ist das Grafikkernarray 5714 skalierbar, sodass das Grafikkernarray 5714 eine variable Anzahl von Grafikkernen beinhaltet, die jeweils eine variable Anzahl von Ausführungseinheiten auf Grundlage eines angestrebten Leistungs- und Rechenleistungslevels der GPE 5710 aufweisen. In mindestens einer Ausführungsform sind die Ausführungsressourcen dynamisch skalierbar, sodass die Ausführungsressourcen nach Bedarf aktiviert oder deaktiviert werden können.
  • In mindestens einer Ausführungsform ist das Grafikkernarray 5714 an die gemeinsam genutzte Funktionslogik 5720 gekoppelt, die mehrere Ressourcen beinhaltet, die von den Grafikkernen in dem Grafikkernarray 5714 gemeinsam genutzt werden. In mindestens einer Ausführungsform sind die gemeinsam genutzten Funktionen, die durch die gemeinsam genutzte Funktionslogik 5720 durchgeführt werden, in Hardware-Logikeinheiten verkörpert, die eine spezialisierte Ergänzungsfunktionalität für das Grafikkernarray 5714 bereitstellen. In mindestens einer Ausführungsform beinhaltet die gemeinsam genutzte Funktionslogik 5720 eine Sampler-Einheit 5721, eine Mathematikeinheit 5722 und Logik 5723 zur Zwischen-Thread-Kommunikation (inter-thread communication - ITC), ist aber nicht darauf beschränkt. In mindestens einer Ausführungsform sind ein oder mehrere Cache(s) 5725 in der gemeinsam genutzten Funktionslogik 5720 enthalten oder an diese gekoppelt.
  • In mindestens einer Ausführungsform wird eine gemeinsam genutzte Funktion verwendet, falls die Nachfrage nach einer spezialisierten Funktion für die Aufnahme in das Grafikkernarray 5714 nicht ausreicht. In mindestens einer Ausführungsform wird eine einzelne Instanziierung einer spezialisierten Funktion in der gemeinsam genutzten Funktionslogik 5720 verwendet und von anderen Ausführungsressourcen innerhalb des Grafikkernarrays 5714 gemeinsam genutzt. In mindestens einer Ausführungsform können spezifische gemeinsam genutzte Funktionen innerhalb der gemeinsam genutzten Funktionslogik 5720, die durch das Grafikkernarray 5714 intensiv genutzt werden, in der gemeinsam genutzten Funktionslogik 5726 innerhalb des Grafikkernarrays 5714 beinhaltet sein. In mindestens einer Ausführungsform kann die gemeinsam genutzte Funktionslogik 5726 innerhalb des Grafikkernarrays 5714 einen Teil der oder die gesamte Logik innerhalb der gemeinsam genutzten Funktionslogik 5720 beinhalten. In mindestens einer Ausführungsform können alle Logikelemente innerhalb der gemeinsam genutzten Funktionslogik 5720 innerhalb der gemeinsam genutzten Funktionslogik 5726 des Grafikkernarrays 5714 dupliziert werden. In mindestens einer Ausführungsform ist die gemeinsam genutzte Funktionslogik 5720 zugunsten der gemeinsam genutzten Funktionslogik 5726 innerhalb des Grafikkernarrays 5714 ausgeschlossen.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 3515 in den Grafikprozessor 5710 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in der 3D-Pipeline 5712 verkörperten ALUs, Grafikkern(e) 5715, gemeinsam genutzte Logik 5726, gemeinsam genutzte Logik 5720 oder andere Logik in 57 verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 35A oder 35B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 5710 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • 58 ist ein Blockdiagramm von Hardware-Logik eines Grafikprozessorkerns 5800 gemäß mindestens einer in dieser Schrift beschriebenen Ausführungsform. In mindestens einer Ausführungsform ist der Grafikprozessorkern 5800 in einem Grafikkernarray enthalten. In mindestens einer Ausführungsform kann es sich bei dem Grafikprozessorkern 5800, mitunter als Kern-Schnitt bezeichnet, um einen oder mehrere Grafikkerne innerhalb eines modularen Grafikprozessors handeln. In mindestens einer Ausführungsform ist der Grafikprozessorkern 5800 beispielhaft für einen Grafikkern-Schnitt und ein Grafikprozessor, wie hierin beschrieben, kann auf Grundlage der angestrebten Leistungs- und Rechenleistungshüllkurven mehrere Grafikkern-Slices beinhalten. In mindestens einer Ausführungsform kann jeder Grafikkern 5800 einen Festfunktionsblock 5830 beinhalten, der mit mehreren Teilkernen 5801A-5801 F gekoppelt ist, die auch als Teilschnitte bezeichnet werden und modulare Blöcke von Universal- und Festfunktionslogik beinhalten. In mindestens einer Ausführungsform führt der Prozessor 5800 den Prozess 900 (siehe 9A) oder den Prozess 906 (siehe 9B) durch.
  • In mindestens einer Ausführungsform beinhaltet der Festfunktionsblock 5830 eine Geometrie- und Festfunktionspipeline 5836, die von allen Teilkernen in dem Grafikprozessor 5800 gemeinsam genutzt werden kann, zum Beispiel in Implementationen mit Grafikprozessoren mit niedrigerer Rechenleistung und/oder niedrigerer Leistung. In mindestens einer Ausführungsform beinhaltet die Geometrie- und Festfunktionspipeline 5836 eine 3D-Festfunktionspipeline, eine Video-Frontend-Einheit, einen Thread-Erzeuger und Thread-Zuteiler sowie einen Verwalter für einheitlichen Rückgabepuffer, der einheitlichen Rückgabepuffer verwaltet.
  • In mindestens einer Ausführungsform beinhaltet der Festfunktionsblock 5830 auch eine Grafik-SoC-Schnittstelle 5837, einen Grafik-Mikrocontroller 5838 und eine Medienpipeline 5839. In mindestens einer Ausführungsform stellt die Grafik-SoC-Schnittstelle 5837 eine Schnittstelle zwischen dem Grafikkern 5800 und anderen Prozessorkernen innerhalb einer integrierten Schaltung als System auf einem Chip bereit. In mindestens einer Ausführungsform ist der Grafik-Mikrocontroller 5838 ein programmierbarer Teilprozessor, der dazu konfiguriert werden kann, er verschiedene Funktionen des Grafikprozessors 5800 zu verwalten, einschließlich Thread-Zuteilung, -Planung und -Präemption. In mindestens einer Ausführungsform beinhaltet die Medienpipeline 5839 Logik zum Erleichtern der Decodierung, Codierung, Vorverarbeitung und/oder Nachverarbeitung von Multimedia-Daten, einschließlich Bild- und Videodaten. In mindestens einer Ausführungsform implementiert die Medienpipeline 5839 Medienoperationen über Anforderungen an Rechen- oder Sampling-Logik innerhalb der Teilkerne 5801A-5801 F.
  • In mindestens einer Ausführungsform ermöglicht die SoC-Schnittstelle 5837 es dem Grafikkern 5800, mit Universal-Anwendungsprozessorkernen (z. B. CPUs) und/oder anderen Komponenten innerhalb eines SoC zu kommunizieren, einschließlich Speicherhierarchieelementen, wie etwa einem gemeinsam genutzten Cache-Speicher der letzten Ebene, System-RAM und/oder eingebettetem chipinternem oder gehäuseinternem DRAM. In mindestens einer Ausführungsform kann die SoC-Schnittstelle 5837 auch Kommunikation mit Festfunktionsvorrichtungen innerhalb eines SoC ermöglichen, wie etwa Kamera-Bildgebungspipelines, und sie ermöglicht die Verwendung von globalem atomarem Speicher und/oder implementiert diesen, der von dem Grafikkern 5800 und den CPUs innerhalb eines SoC gemeinsam genutzt werden kann. In mindestens einer Ausführungsform kann die Grafik-SoC-Schnittstelle 5837 auch Leistungsverwaltungssteuerelemente für den Grafikprozessorkern 5800 implementieren und eine Schnittstelle zwischen einer Taktdomäne des Grafikprozessorkerns 5800 und anderen Taktdomänen innerhalb eines SoC ermöglichen. In mindestens einer Ausführungsform ermöglicht die SoC-Schnittstelle 5837 den Empfang von Befehlspuffern von einem Befehls-Streamer und einem globalen Thread-Zuteiler, die so konfiguriert sind, dass sie jedem von einem oder mehreren Grafikkernen innerhalb eines Grafikprozessors Befehle und Anweisungen bereitstellen. In mindestens einer Ausführungsform können Befehle und Anweisungen der Medienpipeline 5839 zugeteilt werden, wenn Medienoperationen durchgeführt werden sollen, oder einer Geometrie- und Festfunktionspipeline (z. B. der Geometrie- und Festfunktionspipeline 5836 und/oder der Geometrie- und Festfunktionspipeline 5814), wenn Grafikverarbeitungsoperationen durchgeführt werden sollen.
  • In mindestens einer Ausführungsform kann der Grafik-Mikrocontroller 5838 dazu konfiguriert sein, verschiedene Planungs- und Verwaltungsaufgaben für den Grafikkern 5800 durchzuführen. In mindestens einer Ausführungsform kann der Grafik-Mikrocontroller 5838 die Planung der Grafik- und/oder Rechenarbeitslast auf verschiedenen Grafikparallel-Engines innerhalb der Arrays 5802A-5802F, 5804A-5804F der Ausführungseinheiten (execution unit - EU) innerhalb der Teilkerne 5801 A-5801F durchführen. In mindestens einer Ausführungsform kann Host-Software, die auf einem CPU-Kern eines SoC, einschließlich des Grafikkerns 5800, ausgeführt wird, Arbeitslasten an einen von mehreren Grafikprozessorpfaden absenden, der eine Planungsoperation auf einer zweckmäßigen Grafik-Engine aufruft. In mindestens einer Ausführungsform beinhalten die Planungsoperationen das Bestimmen, welche Arbeitslast als Nächstes laufen soll, das Absenden einer Arbeitslast an einen Befehls-Streamer, das Vorwegnehmen bestehender Arbeitslasten, die auf einer Engine laufen, das Überwachen des Fortschritts einer Arbeitslast und das Benachrichtigen der Host-Software, wenn eine Arbeitslast abgeschlossen ist. In mindestens einer Ausführungsform kann der Grafik-Mikrocontroller 5838 auch Zustände mit niedriger Leistung oder inaktive Zustände für den Grafikkern 5800 erleichtern, wobei dem Grafikkern 5800 eine Fähigkeit bereitgestellt wird, Register innerhalb des Grafikkerns 5800 über Zustandsübergänge mit niedriger Leistung unabhängig von einem Betriebssystem und/oder einer Grafiktreiber-Software auf einem System zu sichern und wiederherzustellen.
  • In mindestens einer Ausführungsform kann der Grafikkern 5800 mehr oder weniger als die veranschaulichten Teilkerne 5801A-5801 F aufweisen, bis zu N modulare Teilkerne. Für jeden Satz von N Teilkernen kann der Grafikkern 5800 in mindestens einer Ausführungsform auch gemeinsam genutzte Funktionslogik 5810, gemeinsam genutzten und/oder Cache-Speicher 5812, eine Geometrie-/Festfunktionspipeline 5814 sowie zusätzliche Festfunktionslogik 5816 zum Beschleunigen verschiedener Grafik- und Rechenverarbeitungsoperationen beinhalten. In mindestens einer Ausführungsform kann die gemeinsam genutzte Funktionslogik 5810 Logikeinheiten (z. B. Sampler-, Mathematik- und/oder Zwischen-Thread-Kommunikationslogik) beinhalten, die von N Teilkernen innerhalb des Grafikkerns 5800 gemeinsam genutzt werden können. In mindestens einer Ausführungsform kann der gemeinsam genutzte und/oder Cache-Speicher 5812 Last-Level-Cache für N Teilkerne 5801A-5801 F innerhalb des Grafikkerns 5800 sein und auch als gemeinsam genutzter Speicher dienen, auf den mehrere Teilkerne zugreifen können. In mindestens einer Ausführungsform kann die Geometrie-/Festfunktionspipeline 5814 anstelle der Geometrie-/Festfunktionspipeline 5836 innerhalb des Festfunktionsblocks 5830 enthalten sein und ähnliche Logikeinheiten beinhalten.
  • In mindestens einer Ausführungsform beinhaltet der Grafikkern 5800 zusätzliche Festfunktionslogik 5816, die verschiedene Festfunktionsbeschleunigungslogik zur Verwendung durch den Grafikkern 5800 beinhalten kann. In mindestens einer Ausführungsform beinhaltet die zusätzliche Festfunktionslogik 5816 eine zusätzliche Geometriepipeline für die Verwendung beim Shading von nur der Position. Beim Shading von nur der Position existieren mindestens zwei Geometriepipelines, wohingegen eine vollständige Geometriepipeline innerhalb der Geometrie- und Festfunktionspipelines 5814, 5836 und eine Culling-Pipeline, die eine zusätzliche Geometriepipeline ist, die innerhalb der zusätzlichen Festfunktionslogik 5816 enthalten sein kann. In mindestens einer Ausführungsform ist eine Culling-Pipeline eine abgespeckte Version einer vollständigen Geometriepipeline. In mindestens einer Ausführungsform können eine vollständige Pipeline und eine Culling-Pipeline unterschiedliche Instanzen einer Anwendung ausführen, wobei jede Instanz einen separaten Kontext aufweist. In mindestens einer Ausführungsform kann das Shading von nur der Position lange Culling-Läufe von verworfenen Dreiecken verbergen, sodass ermöglicht wird, dass das Shading in einigen Fällen früher abgeschlossen wird. Zum Beispiel kann in mindestens einer Ausführungsform die Culling-Pipeline-Logik innerhalb der zusätzlichen Festfunktionslogik 5816 Positions-Shader parallel zu einer Hauptanwendung ausführen und sie erzeugt im Allgemeinen kritische Ergebnisse schneller als eine vollständige Pipeline, da eine Culling-Pipeline Positionsattribute von Vertices abruft und schattiert, ohne Rasterung und Rendering von Pixeln in einem Bildspeicher durchzuführen. In mindestens einer Ausführungsform kann eine Culling-Pipeline erzeugte kritische Ergebnisse verwenden, um Sichtbarkeitsinformationen für alle Dreiecke zu berechnen, ohne Rücksicht darauf, ob diese Dreiecke Culling unterzogen werden. In mindestens einer Ausführungsform kann eine vollständige Pipeline (die in diesem Fall als Wiederholungspipeline bezeichnet werden kann) Sichtbarkeitsinformationen verbrauchen, um Culling unterzogene Dreiecke zu überspringen, um nur sichtbare Dreiecke zu schattieren, die schließlich an eine Rasterungsphase übergeben werden.
  • In mindestens einer Ausführungsform kann die zusätzliche Festfunktionslogik 5816 auch Logik zur Beschleunigung des maschinellen Lernens wie etwa Festfunktions-Matrixmultiplikationslogik für Implementationen beinhalten, die Optimierungen für das Training oder das Inferenzieren des maschinellen Lernens beinhalten.
  • In mindestens einer Ausführungsform beinhaltet jeder Grafikteilkern 5801A-5801F einen Satz von Ausführungsressourcen, die verwendet werden können, um Grafik-, Medien- und Rechenoperationen als Reaktion auf Anforderungen durch Grafikpipeline-, Medienpipeline- oder Shader-Programme durchzuführen. In mindestens einer Ausführungsform beinhalten die Grafikteilkerne 5801A-5801F mehrere EU-Arrays 5802A-5802F, 5804A-5804F, Logik 5803A-5803F zur Thread-Zuteilung und Zwischen-Thread-Kommunikation (thread dispatch/inter-thread communication - TD/IC), einen 3D-(z. B. Textur-)Sampler 5805A-5805F, einen Mediensampler 5806A-5806F, einen Shader-Prozessor 5807A-5807F und gemeinsam genutzten lokalen Speicher (shared local memory - SLM) 5808A-5808F. In mindestens einer Ausführungsform beinhalten die EU-Arrays 5802A-5802F, 5804A-5804F jeweils mehrere Ausführungseinheiten, bei denen es sich um Universal-Grafikverarbeitungseinheiten handelt, die dazu in der Lage sind, Gleitkomma- und Integer-/Festkomma-Logikoperationen im Dienste einer Grafik-, Medien- oder Rechenoperation, einschließlich Grafik-, Medien- oder Rechen-Shader-Programmen, durchzuführen. In mindestens einer Ausführungsform führt die TD/IC-Logik 5803A-5803F lokale Thread-Zuteilungs- und Thread-Steueroperationen für Ausführungseinheiten innerhalb eines Teilkerns aus und sie erleichtert die Kommunikation zwischen Threads, die auf Ausführungseinheiten eines Teilkerns ausgeführt werden. In mindestens einer Ausführungsform können die 3D-Samplers 5805A-5805F Textur- oder andere mit 3D-Grafik verwandte Daten in Speicher lesen. In mindestens einer Ausführungsform können die 3D-Samplers Texturdaten auf Grundlage eines konfigurierten Sample-Zustands und eines Texturformats, das mit einer gegebenen Textur assoziiert ist, unterschiedlich lesen. In mindestens einer Ausführungsform können die Medien-Sampler 5806A-5806F ähnliche Leseoperationen auf Grundlage eines Typs und Formats, die mit den Mediendaten assoziiert sind, durchführen. In mindestens einer Ausführungsform kann jeder Grafikteilkern 5801A-5801 F alternativ einen vereinheitlichten 3D- und Medien-Sampler beinhalten. In mindestens einer Ausführungsform können Threads, die auf Ausführungseinheiten innerhalb jedes der Teilkerne 5801A-5801 F ausgeführt werden, den gemeinsam genutzten lokalen Speicher 5808A-5808F innerhalb jedes Teilkerns verwenden, um zu ermöglichen, dass Threads, die innerhalb einer Thread-Gruppe ausgeführt werden, unter Verwendung eines gemeinsamen Pools von chipinternem Speicher ausgeführt werden.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 3515 in den Grafikprozessor 5800 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in einer 3D-Pipeline verkörperten ALUs, den Grafik-Mikrocontroller 5838, die Geometrie- und Festfunktionspipeline 5814 und 5836 oder andere Logik in 58 verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 35A oder 35B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 5800 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • Die 59A-59B veranschaulichen die Thread-Ausführungslogik 5900, die ein Array von Verarbeitungselementen eines Grafikprozessorkerns beinhaltet, gemäß mindestens einer Ausführungsform. 59A veranschaulicht mindestens eine Ausführungsform, in der die Thread-Ausführungslogik 5900 verwendet wird. 59B veranschaulicht beispielhafte interne Details einer Grafikausführungseinheit 5908 gemäß mindestens einer Ausführungsform.
  • Wie in 59A dargestellt, umfasst die Thread-Ausführungslogik 5900 in mindestens einer Ausführungsform einen Shader-Prozessor 5902, einen Thread-Dispatcher 5904, einen Befehls-Cache 5906, ein skalierbares Ausführungseinheiten-Array mit einer Vielzahl von Ausführungseinheiten 5907A-5907N und 5908A-5908N, einen Sampler 5910, einen Daten-Cache 5912 und einen Datenport 5914. In mindestens einer Ausführungsform kann ein skalierbares Ausführungseinheitenarray dynamisch skalieren, indem eine oder mehrere Ausführungseinheiten (z. B. beliebige der Ausführungseinheiten 5908AN oder 5907A-N) zum Beispiel auf Grundlage von Rechenanforderungen einer Arbeitslast aktiviert oder deaktiviert werden. In mindestens einer Ausführungsform sind die skalierbaren Ausführungseinheiten über eine Zusammenschaltungsstruktur zusammengeschaltet, die mit jeder Ausführungseinheit verknüpft ist. In mindestens einer Ausführungsform beinhaltet die Thread-Ausführungslogik 5900 eine oder mehrere Verbindungen mit Speicher, wie etwa Systemspeicher oder Cache-Speicher, durch eines oder mehrere des Anweisungs-Caches 5906, des Datenports 5914, des Sampler 5910 und der Ausführungseinheiten 5907 oder 5908. In mindestens einer Ausführungsform ist jede Ausführungseinheit (z. B. 5907A) eine eigenständige programmierbare Universalrecheneinheit, die dazu in der Lage ist, mehrere simultane Hardware-Threads auszuführen, während mehrere Datenelemente parallel für jeden Thread verarbeitet werden. In mindestens einer Ausführungsform ist das Array der Ausführungseinheiten 5907 und/oder 5908 so skalierbar, dass es eine beliebige Anzahl einzelner Ausführungseinheiten beinhaltet.
  • In mindestens einer Ausführungsform werden die Ausführungseinheiten 5907 und/oder 5908 hauptsächlich zum Ausführen von Shader-Programmen verwendet. In mindestens einer Ausführungsform kann der Shader-Prozessor 5902 verschiedene Shader-Programme verarbeiten und den Shader-Programmen zugeordnete Ausführungs-Threads über einen Thread-Zuteiler 5904 zuteilen. In mindestens einer Ausführungsform beinhaltet der Thread-Zuteiler 5904 Logik zum Vermitteln von Thread-Initiierungsanforderungen von Grafik- und Medienpipelines und zum Instanziieren angeforderter Threads auf einer oder mehreren Ausführungseinheiten in den Ausführungseinheiten 5907 und/oder 5908. Zum Beispiel kann in mindestens einer Ausführungsform eine Geometriepipeline Vertex-, Tesselierungs- oder Geometrie-Shader der Thread-Ausführungslogik zum Verarbeiten zuteilen. In mindestens einer Ausführungsform kann der Thread-Zuteiler 5904 auch Laufzeit-Thread-Erzeugungsanforderungen von ausführenden Shader-Programmen verarbeiten.
  • In mindestens einer Ausführungsform unterstützen die Ausführungseinheiten 5907 und/oder 5908 einen Anweisungssatz, der systemeigene Unterstützung für viele Standard-3D-Grafik-Shader-Anweisungen beinhaltet, sodass Shader-Programme aus Grafikbibliotheken (z. B. Direct 3D und OpenGL) mit einer minimalen Übersetzung ausgeführt werden. In mindestens einer Ausführungsform unterstützen die Ausführungseinheiten Vertex- und Geometrieverarbeitung (z. B. Vertexprogramme, Geometrieprogramme und/oder Vertex-Shader), Pixelverarbeitung (z. B. Pixel-Shader, Fragment-Shader) und Universalverarbeitung (z. B. Rechen- und Medien-Shader). In mindestens einer Ausführungsform ist jede der Ausführungseinheiten 5907 und/oder 5908, die eine oder mehrere arithmetisch-logische Einheiten (ALUs) beinhalten, zur Multi-Issue-Single-Instruction-Multiple-Data-(SIMD-)Ausführung in der Lage und der Mehr-Thread-Betrieb ermöglicht eine effiziente Ausführungsumgebung trotz Speicherzugriffen mit höherer Latenz. In mindestens einer Ausführungsform weist jeder Hardware-Thread innerhalb jeder Ausführungseinheit eine dedizierte Registerdatei mit hoher Bandbreite und einen damit assoziierten unabhängigen Thread-Zustand auf. In mindestens einer Ausführungsform erfolgt die Ausführung mit mehreren Ausgaben pro Takt an Pipelines, die zu Integer- und Gleitkommaoperationen mit einfacher oder doppelter Genauigkeit, SIMD-Verzweigungsfähigkeit, logischen Operationen, transzendentalen Operationen und anderen sonstigen Operationen in der Lage sind. In mindestens einer Ausführungsform bewirkt die Abhängigkeitslogik innerhalb der Ausführungseinheiten 5907 und/oder 5908, dass ein wartender Thread schläft, während er auf Daten aus dem Speicher oder einer der gemeinsam genutzten Funktionen wartet, bis die angeforderten Daten zurückgegeben wurden. In mindestens einer Ausführungsform können, während ein wartender Thread schläft, Hardware-Ressourcen der Verarbeitung anderer Threads gewidmet werden. Zum Beispiel kann in mindestens einer Ausführungsform eine Ausführungseinheit während einer Verzögerung, die mit einer Vertex-Shader-Operation assoziiert ist, Operationen für einen Pixel-Shader, Fragment-Shader oder einen anderen Typ von Shader-Programm, einschließlich eines anderen Vertex-Shaders, durchführen.
  • In mindestens einer Ausführungsform arbeitet jede Ausführungseinheit in den Ausführungseinheiten 5907 und/oder 5908 an Arrays von Datenelementen. In mindestens einer Ausführungsform ist die Anzahl der Datenelemente eine „Ausführungsgröße“ oder die Anzahl der Kanäle für eine Anweisung. In mindestens einer Ausführungsform ist ein Ausführungskanal eine logische Ausführungseinheit für den Zugriff auf Datenelemente, die Maskierung und die Flusssteuerung innerhalb von Anweisungen. In mindestens einer Ausführungsform kann die Anzahl der Kanäle unabhängig von einer Anzahl der physischen arithmetisch-logischen Einheiten (ALUs) oder Gleitkommaeinheiten (FPUs) für einen konkreten Grafikprozessor sein. In mindestens einer Ausführungsform unterstützen die Ausführungseinheiten 5907 und/oder 5908 Integer- und Gleitkommadatentypen.
  • In mindestens einer Ausführungsform beinhaltet ein Anweisungssatz einer Ausführungseinheit SIMD-Anweisungen. In mindestens einer Ausführungsform können verschiedene Datenelemente als gepackter Datentyp in einem Register gespeichert werden und die Ausführungseinheit verarbeitet verschiedene Elemente auf Grundlage der Datengröße der Elemente. Zum Beispiel werden in mindestens einer Ausführungsform beim Betreiben an einem 256 Bit breiten Vektor 256 Bit eines Vektors in einem Register gespeichert und eine Ausführungseinheit wird an einem Vektor als vier separate 64 Bit große gepackte Datenelemente (Datenelemente der Größe Vierfachwort (Quad-Word - QW)), acht separate 32 Bit große gepackte Datenelemente (Datenelemente der Größe Doppelwort (Double Word - DW)), sechzehn separate 16 Bit große gepackte Datenelemente (Datenelemente der Größe Wort (Word - W)) oder zweiunddreißig separate 8 Bit große Datenelemente (Datenelemente der Größe Byte (B)) betrieben. In mindestens einer Ausführungsform sind jedoch andere Vektorbreiten und Registergrößen möglich.
  • In mindestens einer Ausführungsform können eine oder mehrere Ausführungseinheiten zu einer fusionierten Ausführungseinheit 5909A-5909N kombiniert werden, die Thread-Steuerlogik (5911A-5911N) aufweist, die fusionierten EUs gemeinsam ist, wie etwa die Ausführungseinheit 5907A, die mit der Ausführungseinheit 5908A zu der fusionierten Ausführungseinheit 5909A fusioniert wird. In mindestens einer Ausführungsform können mehrere EUs zu einer EU-Gruppe fusioniert werden. In mindestens einer Ausführungsform kann jede EU in einer fusionierten EU-Gruppe so 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. In mindestens einer Ausführungsform können verschiedene SIMD-Breiten pro EU durchgeführt werden, einschließlich, aber nicht beschränkt auf, SIMD8, SIMD16 und SIMD32. In mindestens einer Ausführungsform beinhaltet jede fusionierte Grafikausführungseinheit 5909A-5909N mindestens zwei Ausführungseinheiten. Zum Beispiel beinhaltet in mindestens einer Ausführungsform die fusionierte Ausführungseinheit 5909A eine erste EU 5907A, eine zweite EU 5908A und Thread-Steuerlogik 5911A, die der ersten EU 5907A und der zweiten EU 5908A gemeinsam ist. In mindestens einer Ausführungsform steuert die Thread-Steuerlogik 5911A Threads, die auf der fusionierten Grafikausführungseinheit 5909A ausgeführt werden, sodass jede EU innerhalb der fusionierten Ausführungseinheiten 5909A-5909N unter Verwendung eines gemeinsamen Anweisungszeigerregisters ausgeführt werden kann.
  • In mindestens einer Ausführungsform sind ein oder mehrere interne Anweisungs-Caches (z. B. 5906) in der Thread-Ausführungslogik 5900 enthalten, um Thread-Anweisungen für Ausführungseinheiten zwischenzuspeichern. In mindestens einer Ausführungsform sind ein oder mehrere Daten-Caches (z. B. 5912) enthalten, um Thread-Daten während der Thread-Ausführung zwischenzuspeichern. In mindestens einer Ausführungsform ist ein Sampler 5910 enthalten, um Textur-Sampling für 3D-Operationen und Medien-Sampling für Medienoperationen bereitzustellen. In mindestens einer Ausführungsform beinhaltet der Sampler 5910 eine spezialisierte Textur- oder Medien-Sampling-Funktionalität, um Textur- oder Mediendaten während eines Sample-Prozesses zu verarbeiten, bevor die abgetasteten Daten einer Ausführungseinheit bereitgestellt werden.
  • Während der Ausführung senden Grafik- und Medienpipelines in mindestens einer Ausführungsform Thread-Initiierungsanforderungen über die Thread-Erzeugungs- und -Zuteilungslogik an die Thread-Ausführungslogik 5900. In mindestens einer Ausführungsform wird, sobald eine Gruppe geometrischer Objekte verarbeitet und in Pixeldaten gerastert wurde, die Pixelprozessorlogik (z. B. Pixel-Shader-Logik, Fragment-Shader-Logik usw.) innerhalb des Shader-Prozessors 5902 aufgerufen, um Ausgabeinformationen weiter zu berechnen und zu veranlassen, dass die Ergebnisse in Ausgabeflächen (z. B. Farbpuffer, Tiefenpuffer, Schablonenpuffer usw.) geschrieben werden. In mindestens einer Ausführungsform berechnet ein Pixel-Shader oder Fragment-Shader die Werte verschiedener Vertexattribute, die über ein gerastertes Objekt interpoliert werden sollen. In mindestens einer Ausführungsform führt die Pixelprozessorlogik innerhalb des Shader-Prozessors 5902 dann ein über eine Anwendungsprogrammierschnittstelle (API) zugeführtes Pixel- oder Fragment-Shader-Programm aus. In mindestens einer Ausführungsform teilt der Shader-Prozessor 5902 zum Ausführen eines Shader-Programms Threads über den Thread-Zuteiler 5904 einer Ausführungseinheit (z. B. 5908A) zu. In mindestens einer Ausführungsform verwendet der Shader-Prozessor 5902 die Textur-Sampling-Logik in dem Sampler5910, um auf Texturdaten in Texturkarten zuzugreifen, die in Speicher gespeichert sind. In mindestens einer Ausführungsform werden durch arithmetische Operationen an Texturdaten und eingegebenen Geometriedaten Pixelfarbdaten für jedes geometrische Fragment berechnet oder ein oder mehrere Pixel von der weiteren Verarbeitung ausgeschlossen.
  • In mindestens einer Ausführungsform stellt der Datenport 5914 einen Speicherzugriffsmechanismus für die Thread-Ausführungslogik 5900 bereit, um verarbeitete Daten zur weiteren Verarbeitung an einer Grafikprozessor-Ausgabepipeline an Speicher auszugeben. In mindestens einer Ausführungsform beinhaltet der Datenport 5914 einen oder mehrere Cache-Speicher (z. B. den Daten-Cache 5912) oder ist an diesen gekoppelt, um Daten für den Speicherzugriff über einen Datenport zwischenzuspeichern.
  • Wie in 59B veranschaulicht, kann eine Grafikausführungseinheit 5908 in mindestens einer Ausführungsform eine Anweisungsabrufeinheit 5937, ein Array von allgemeinen Registerbänken (general register file - GRF) 5924, ein Array von architektonischen Registerbänken (architectural register file - ARF) 5926, einen Thread-Vermittler 5922, eine Sendeeinheit 5930, eine Verzweigungseinheit 5932, einen Satz SIMD-Gleitkommaeinheiten (FPUs) 5934 und einen Satz dedizierter Integer-SIMD-ALUs 5935 beinhalten. In mindestens einer Ausführungsform beinhalten die GRF 5924 und die ARF 5926 einen Satz allgemeiner Registerdateien und Architekturregisterdateien, die jedem simultanen Hardware-Thread zugeordnet sind, der in der Grafikausführungseinheit 5908 aktiv sein kann. In mindestens einer Ausführungsform wird der architektonische Zustand pro Thread in der ARF 5926 verwaltet, während die während der Thread-Ausführung verwendeten Daten in der GRF 5924 gespeichert werden. In mindestens einer Ausführungsform kann der Ausführungszustand jedes Threads, einschließlich der Anweisungszeiger für jeden Thread, in Thread-spezifischen Registern in der ARF 5926 aufbewahrt werden.
  • In mindestens einer Ausführungsform weist die Grafikausführungseinheit 5908 eine Architektur auf, die eine Kombination aus simultanem Multi-Threading (Simultaneous Multi-Threading - SMT) und feinkörnigem verschachteltem Multi-Threading (Interleaved Multi-Threading - IMT) ist. In mindestens einer Ausführungsform weist die Architektur eine modulare Konfiguration auf, die zur Ausgestaltungszeit auf Grundlage einer Zielanzahl von simultanen Threads und Anzahl von Registern pro Ausführungseinheit fein abgestimmt werden kann, wobei die Ressourcen der Ausführungseinheit auf die Logik aufgeteilt werden, die zum Ausführen mehrerer simultaner Threads verwendet wird.
  • In mindestens einer Ausführungsform kann die Grafikausführungseinheit 5908 mehrere Anweisungen gleichzeitig ausgeben, die jeweils unterschiedliche Anweisungen sein können. In mindestens einer Ausführungsform kann der Thread-Vermittler 5922 des Grafikausführungseinheits-Threads 5908 Anweisungen einer der Sendeeinheit 5930, der Verzweigungseinheit 5932 oder der SIMD-FPU(s) 5934 zur Ausführung zuteilen. In mindestens einer Ausführungsform kann jeder Ausführungs-Thread auf 128 Universalregister innerhalb der GRF 5924 zugreifen, wobei jedes Register 32 Byte speichern kann, die als SIMD-8-Elementvektor von 32-Bit-Datenelementen zugänglich sind. In mindestens einer Ausführungsform weist jeder Thread der Ausführungseinheit Zugriff auf 4 Kilobyte innerhalb der GRF 5924 auf, obwohl Ausführungsformen nicht derart beschränkt sind und in anderen Ausführungsformen mehr oder weniger Registerressourcen bereitgestellt sein können. In mindestens einer Ausführungsform können bis zu sieben Threads simultan ausgeführt werden, obwohl eine Anzahl der Threads pro Ausführungseinheit gemäß Ausführungsformen auch variieren kann. In mindestens einer Ausführungsform, in der sieben Threads auf 4 Kilobyte zugreifen können, kann die GRF 5924 insgesamt 28 Kilobyte speichern. In mindestens einer Ausführungsform können flexible Adressierungsmodi erlauben, dass Register zusammen adressiert werden, um effektiv breitere Register zu bilden oder um geschichtete rechteckige Blockdatenstrukturen darzustellen.
  • In mindestens einer Ausführungsform werden Speicheroperationen, Sampler-Operationen und andere Systemkommunikation mit längerer Latenz über „Sende“-Anweisungen zugeteilt, die durch Nachrichtenweitergabe an die Sendeeinheit 5930 ausgeführt werden. In mindestens einer Ausführungsform werden Verzweigungsanweisungen der Verzweigungseinheit 5932 zugeteilt, um SIMD-Divergenz und schließlich -Konvergenz zu erleichtern.
  • In mindestens einer Ausführungsform beinhaltet die Grafikausführungseinheit 5908 eine oder mehrere SIMD-Gleitkommaeinheiten (FPU(s)) 5934 zur Durchführung von Gleitkommaoperationen. In mindestens einer Ausführungsform unterstützen die FPU(s) 5934 auch Integerberechnung. In mindestens einer Ausführungsform können die FPU(s) 5934 bis zu einer Anzahl von M 32-Bit-Gleitkomma- (oder -Integer-) Operationen über SIMD ausführen oder bis zu 2M 16-Bit-Integer- oder 16-Bit-Gleitkommaoperationen über SIMD ausführen. In mindestens einer Ausführungsform stellt mindestens eine FPU erweiterte mathematische Fähigkeiten bereit, um transzendentale mathematische Funktionen mit hohem Durchsatz und 64-Bit-Gleitkomma mit doppelter Genauigkeit zu unterstützen. In mindestens einer Ausführungsform ist auch ein Satz von 8-Bit-Integer-SIMD-ALUs 5935 vorhanden, der spezifisch zum Durchführen von Operationen, die Berechnungen für maschinelles Lernen zugeordnet sind, optimiert sein kann.
  • In mindestens einer Ausführungsform können Arrays von mehreren Instanzen der Grafikausführungseinheit 5908 in einer Grafikteilkern-Gruppierung (z. B. einem Teilschnitt) instanziiert sein. In mindestens einer Ausführungsform kann die Ausführungseinheit 5908 Anweisungen über eine Vielzahl von Ausführungskanälen hinweg ausführen. In mindestens einer Ausführungsform wird jeder Thread, der auf der Grafikausführungseinheit 5908 ausgeführt wird, auf einem anderen Kanal ausgeführt.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 3515 in die Thread-Ausführungslogik 5900 einbezogen sein. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 35A oder 35B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs der Thread-Ausführungslogik 5900 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • 60 veranschaulicht eine Parallelverarbeitungseinheit („PPU“) 6000 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist die PPU 6000 mit maschinenlesbarem Code konfiguriert, der bei Ausführung durch die PPU 6000 die PPU 6000 dazu veranlasst, einige oder alle der in dieser Offenbarung beschriebenen Prozesse und Techniken durchzuführen. In mindestens einer Ausführungsform ist die PPU 6000 ein Multi-Thread-Prozessor, der auf einer oder mehreren Vorrichtungen mit integrierter Schaltung implementiert ist und der Multi-Threading als Technik zur Latenzverbergung nutzt, die dazu ausgestaltet ist, computerlesbare Anweisungen (auch als maschinenlesbare Anweisungen oder einfach Anweisungen bezeichnet) auf mehreren Threads parallel zu verarbeiten. In mindestens einer Ausführungsform bezieht sich ein Thread auf einen Ausführungs-Thread und er ist eine Instanziierung eines Satzes von Anweisungen, der dazu konfiguriert ist, durch die PPU 6000 ausgeführt zu werden. In mindestens einer Ausführungsform ist die PPU 6000 eine Grafikverarbeitungseinheit („GPU“), die dazu konfiguriert ist, eine Grafik-Rendering-Pipeline zum Verarbeiten dreidimensionaler („3D“) Grafikdaten zu implementieren, um zweidimensionale („2D“) Bilddaten zur Anzeige auf einer Anzeigevorrichtung, wie etwa einer Flüssigkristallanzeige-(„LCD“-)Vorrichtung, zu erzeugen. In mindestens einer Ausführungsform wird die PPU 6000 genutzt, um Berechnungen, wie etwa lineare Algebraoperationen und Operationen des maschinellen Lernens, durchzuführen. 60 veranschaulicht ein Beispiel für einen Parallelprozessor, der nur zu Veranschaulichungszwecken dient und als nicht einschränkendes Beispiel für Prozessorarchitekturen ausgelegt werden sollte, die innerhalb des Umfangs dieser Offenbarung in Betracht gezogen werden, und dass ein beliebiger geeigneter Prozessor zur Ergänzung und/oder als Ersatz für diesen eingesetzt werden kann. In mindestens einer Ausführungsform führt der Prozessor 6000 den Prozess 900 (siehe 9A) oder den Prozess 906 (siehe 9B) durch.
  • In mindestens einer Ausführungsform sind eine oder mehrere PPUs 6000 so konfiguriert, dass sie Anwendungen für Hochleistungsrechnen (High Performance Computing - „HPC“), für ein Rechenzentrum und für maschinelles Lernen beschleunigen. In mindestens einer Ausführungsform ist die PPU 6000 so konfiguriert, dass sie Deep-Learning-Systeme und -Anwendungen beschleunigt, einschließlich der folgenden nicht einschränkenden Beispiele: Plattformen für autonome Fahrzeuge, Deep Learning, Sprach-, Bild- und Texterkennungssysteme mit hoher Genauigkeit, intelligente Videoanalytik, Molekularsimulationen, Arzneimittelforschung, Krankheitsdiagnose, Wettervorhersage, Big-Data-Analytik, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotik, Fabrikautomatisierung, Echtzeit-Sprachübersetzung, Online-Suchoptimierungen und personalisierte Benutzerempfehlungen und mehr.
  • In mindestens einer Ausführungsform beinhaltet die PPU 6000 ohne Einschränkung eine Eingabe/Ausgabe-(„E/A“-)Einheit 6006, eine Frontend-Einheit 6010, eine Planer-Einheit 6012, eine Arbeitsverteilungseinheit 6014, einen Hub 6016, eine Kreuzschiene („Xbar“) 6020, ein oder mehrere Universalverarbeitungscluster („GPCs“) 6018 und eine oder mehrere Partitionseinheiten („Speicherpartitionseinheiten“) 6022. In mindestens einer Ausführungsform ist die PPU 6000 mit einem Host-Prozessor oder anderen PPUs 6000 über eine oder mehrere Hochgeschwindigkeits-GPU-Zusammenschaltungen („GPU-Zusammenschaltungen“) 6008 verbunden. In mindestens einer Ausführungsform ist die PPU 6000 über einen Systembus 6002 mit einem Host-Prozessor oder anderen Peripherievorrichtungen verbunden. In mindestens einer Ausführungsform ist die PPU 6000 mit einem lokalen Speicher verbunden, der eine oder mehrere Speichervorrichtungen („Speicher“) 6004 umfasst. In mindestens einer Ausführungsform beinhalten die Speichervorrichtungen 6004 ohne Einschränkung eine oder mehrere Vorrichtungen mit dynamischem Direktzugriffsspeicher („DRAM“). In mindestens einer Ausführungsform sind eine oder mehrere DRAM-Vorrichtungen als Teilsysteme mit Speicher mit hoher Bandbreite („HBM“) konfiguriert und/oder konfigurierbar, wobei mehrere DRAM-Dies innerhalb jeder Vorrichtung gestapelt sind.
  • In mindestens einer Ausführungsform kann sich die Hochgeschwindigkeits-GPU-Zusammenschaltung 6008 auf eine drahtbasierte mehrspurige Kommunikationsverbindung beziehen, die durch Systeme zum Skalieren verwendet wird und eine oder mehrere PPUs 6000 in Kombination mit einer oder mehreren zentralen Verarbeitungseinheiten („CPUs“) beinhaltet und die Cache-Kohärenz zwischen PPUs 6000 und CPUs sowie CPU-Mastering unterstützt. In mindestens einer Ausführungsform werden Daten und/oder Befehle durch die Hochgeschwindigkeits-GPU-Zusammenschaltung 6008 über den Hub 6016 zu/von anderen Einheiten der PPU 6000 übertragen, wie etwa einer/einem oder mehreren Kopier-Engines, Videocodierern, Videodecodierern, Leistungsverwaltungseinheiten und anderen Komponenten, die in 60.
  • In mindestens einer Ausführungsform ist die E/A-Einheit 6006 dazu konfiguriert, Kommunikationen (z. B. Befehle, Daten) von einem Host-Prozessor (in 60 nicht veranschaulicht) über den Systembus 6002 zu übertragen und zu empfangen In mindestens einer Ausführungsform kommuniziert die E/A-Einheit 6006 mit dem Host-Prozessor direkt über den Systembus 6002 oder durch eine oder mehrere Zwischenvorrichtungen, wie etwa eine Speicherbrücke. In mindestens einer Ausführungsform kann die E/A-Einheit 6006 über den Systembus 6002 mit einem oder mehreren anderen Prozessoren kommunizieren, wie etwa einer oder mehreren der PPUs 6000. In mindestens einer Ausführungsform implementiert die E/A-Einheit 6006 eine Peripheral-Component-lnterconnect-Express-(„PCIe“-)Schnittstelle für die Kommunikation über einen PCIe-Bus. In mindestens einer Ausführungsform implementiert die E/A-Einheit 6006 Schnittstellen zum Kommunizieren mit externen Vorrichtungen.
  • In mindestens einer Ausführungsform decodiert die E/A-Einheit 6006 über den Systembus 6002 empfangene Pakete. In mindestens einer Ausführungsform stellen mindestens einige Pakete Befehle dar, die so konfiguriert sind, dass sie die PPU 6000 dazu veranlassen, verschiedene Operationen durchzuführen. In mindestens einer Ausführungsform überträgt die E/A-Einheit 6006 decodierte Befehle an verschiedene andere Einheiten der PPU 6000, wie durch Befehle vorgegeben. In mindestens einer Ausführungsform werden Befehle an die Frontend-Einheit 6010 übertragen und/oder an den Hub 6016 oder andere Einheiten der PPU 6000 übertragen, wie etwa eine oder mehrere Kopier-Engines, einen Videocodierer, einen Videodecodierer, eine Leistungsverwaltungseinheit usw. (in 60 nicht explizit veranschaulicht). In mindestens einer Ausführungsform ist die E/A-Einheit 6006 dazu konfiguriert, Kommunikation zwischen und unter verschiedenen logischen Einheiten der PPU 6000 zu leiten.
  • In mindestens einer Ausführungsform codiert ein durch den Host-Prozessor ausgeführtes Programm einen Befehlsstream in einem Puffer, der der PPU 6000 Arbeitslasten zur Verarbeitung bereitstellt. In mindestens einer Ausführungsform umfasst eine Arbeitslast Anweisungen und Daten, die durch diese Anweisungen verarbeitet werden sollen. In mindestens einer Ausführungsform ist ein Puffer eine Region in einem Speicher, auf die sowohl ein Host-Prozessor als auch die PPU 6000 zugreifen können (z. B. Lesen/Schreiben) - eine Host-Schnittstelleneinheit kann so konfiguriert sein, dass sie auf diesen Puffer in einem Systemspeicher, der mit dem Systembus 6002 verbunden ist, über Speicheranforderungen zugreift, die über den Systembus 6002 durch die E/A-Einheit 6006 übertragen werden. In mindestens einer Ausführungsform schreibt ein Host-Prozessor einen Befehlsstrom in einen Puffer und überträgt dann einen Zeiger für einen Start eines Befehlsstroms an die PPU 6000, sodass die Frontend-Einheit 6010 Zeiger für einen oder mehrere Befehlsströme empfängt und einen oder mehrere Befehlsströme verwaltet, indem sie Befehle aus Befehlsströmen liest und Befehle an verschiedene Einheiten der PPU 6000 weiterleitet.
  • In mindestens einer Ausführungsform ist die Frontend-Einheit 6010 an die Planer-Einheit 6012 gekoppelt, die verschiedene GPCs 6018 zum Verarbeiten von Aufgaben konfiguriert, die durch einen oder mehrere Befehlsströme definiert sind. In mindestens einer Ausführungsform ist die Planer-Einheit 6012 dazu konfiguriert, Zustandsinformationen in Bezug auf verschiedene durch die Planer-Einheit 6012 verwaltete Aufgaben zu verfolgen, wobei die Zustandsinformationen angeben können, welchem der GPCs 6018 eine Aufgabe zugewiesen ist, ob die Aufgabe Task aktiv oder inaktiv ist, welche Prioritätsstufe der Aufgabe zugeordnet ist usw. In mindestens einer Ausführungsform verwaltet die Planer-Einheit 6012 die Ausführung einer Vielzahl von Aufgaben auf einem oder mehreren GPCs 6018.
  • In mindestens einer Ausführungsform ist die Planer-Einheit 6012 an die Arbeitsverteilungseinheit 6014 gekoppelt, die dazu konfiguriert ist, Aufgaben zur Ausführung auf den GPCs 6018 zuzuteilen. In mindestens einer Ausführungsform verfolgt die Arbeitsverteilungseinheit 6014 eine Anzahl geplanter Aufgaben nach, die von der Planer-Einheit 6012 empfangen wurde, und die Arbeitsverteilungseinheit 6014 verwaltet einen Pool ausstehender Aufgaben und einen Pool aktiver Aufgaben für jeden der GPCs 6018. In mindestens einer Ausführungsform umfasst der Pool ausstehender Tasks eine Anzahl von Schlitzen (z. B. 32 Schlitze), die Tasks enthalten, die zur Verarbeitung durch einen konkreten GPC 6018 zugeordnet sind; ein Pool aktiver Tasks kann eine Anzahl von Schlitzen (z. B. 4 Schlitze) für Tasks umfassen, die aktiv durch die GPCs 6018 verarbeitet werden, sodass, wenn einer der GPCs 6018 die Ausführung eines Tasks abschließt, dieser Task aus diesem Pool aktiver Tasks für den GPC 6018 entfernt wird und ein anderer Task aus einem Pool ausstehender Tasks ausgewählt und zur Ausführung auf dem GPC 6018 eingeplant wird. Falls ein aktiver Task auf dem GPC 6018 inaktiv ist, wie etwa, während er darauf wartet, dass eine Datenabhängigkeit aufgelöst wird, dann wird in mindestens einer Ausführungsform dieser aktive Task aus dem GPC 6018 entfernt und in diesen Pool ausstehender Tasks zurückgeführt, während ein anderer Task in diesem Pool ausstehender Tasks ausgewählt und zur Ausführung auf dem GPC 6018 eingeplant wird.
  • In mindestens einer Ausführungsform kommuniziert die Arbeitsverteilungseinheit 6014 mit einem oder mehreren GPCs 6018 über die XBar6020. In mindestens einer Ausführungsform ist die XBar 6020 ein Zusammenschaltungsnetz, das viele Einheiten der PPU 6000 an andere Einheiten der PPU 6000 koppelt und dazu konfiguriert sein kann, die Arbeitsverteilungseinheit 6014 an einen konkreten GPC 6018 zu koppeln. In mindestens einer Ausführungsform können auch eine oder mehrere andere Einheiten der PPU 6000 über den Hub 6016 mit der XBar 6020 verbunden sein.
  • In mindestens einer Ausführungsform werden Aufgaben durch die Planer-Einheit 6012 verwaltet und durch die Arbeitsverteilungseinheit 6014 einem der GPCs 6018 zugeteilt. In mindestens einer Ausführungsform ist der GPC 6018 so konfiguriert, dass er einen Task verarbeitet und Ergebnisse erzeugt. In mindestens einer Ausführungsform können die Ergebnisse durch andere Aufgaben innerhalb des GPC 6018 verbraucht, über die XBar 6020 an einen anderen GPC 6018 geleitet oder in dem Speicher 6004 gespeichert werden. In mindestens einer Ausführungsform können die Ergebnisse über die Partitionseinheiten 6022, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in den/aus dem Speicher 6004 implementieren, in den Speicher 6004 geschrieben werden. In mindestens einer Ausführungsform können die Ergebnisse über die Hochgeschwindigkeits-GPU-Zusammenschaltung 6008 an eine andere PPU 6000 oder CPU übertragen werden. In mindestens einer Ausführungsform beinhaltet die PPU 6000 ohne Einschränkung eine Anzahl U von Partitionseinheiten 6022, die gleich einer Anzahl von separaten und unterschiedlichen Speichervorrichtungen 6004 ist, die an die PPU 6000 gekoppelt sind, wie hierin in Verbindung mit 62 detaillierter beschrieben.
  • In mindestens einer Ausführungsform führt ein Host-Prozessor einen Treiberkernel aus, der eine Anwendungsprogrammierschnittstelle („API“) implementiert, die es einer oder mehreren auf einem Host-Prozessor ausgeführten Anwendungen ermöglicht, Operationen zur Ausführung auf der PPU 6000 zu planen. In mindestens einer Ausführungsform werden mehrere Rechenanwendungen simultan durch die PPU 6000 ausgeführt und die PPU 6000 stellt Isolierung, Dienstgüte (quality of service - „QoS“) und unabhängige Adressräume für mehrere Rechenanwendungen bereit. In mindestens einer Ausführungsform erzeugt eine Anwendung Anweisungen (z. B. in Form von API-Aufrufen), die einen Treiberkernel dazu veranlassen, einen oder mehrere Tasks zur Ausführung durch die PPU 6000 zu erzeugen, und dieser Treiberkernel gibt Tasks an einen oder mehrere Ströme aus, die durch die PPU 6000 verarbeitet werden. In mindestens einer Ausführungsform umfasst jeder Task eine oder mehrere Gruppen von verwandten Threads, die als Warp bezeichnet werden können. In mindestens einer Ausführungsform umfasst ein Warp eine Vielzahl von zugehörigen Threads (z. B. 32 Threads), die parallel ausgeführt werden können. In mindestens einer Ausführungsform können sich kooperierende Threads auf eine Vielzahl von Threads beziehen, die Anweisungen zum Durchführen von Tasks beinhalten und die Daten durch einen gemeinsam genutzten Speicher austauschen. In mindestens einer Ausführungsform werden Threads und kooperierende Threads in Verbindung mit 62 detaillierter beschrieben.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie etwa ein neuronales Netz, zu trainieren, um der PPU 6000 bereitgestellte Informationen vorherzusagen oder abzuleiten. In mindestens einer Ausführungsform wird die PPU 6000 verwendet, um Informationen auf der Grundlage eines trainierten Models des maschinellen Lernens (z. B. eines neuronalen Netzes) abzuleiten oder vorherzusagen, das von einem anderen Prozessor oder System oder von der PPU 6000 trainiert wurde. In mindestens einer Ausführungsform kann die PPU 6000 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netze durchzuführen.
  • 61 veranschaulicht ein Universalverarbeitungscluster („GPC“) 6100 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform handelt es sich bei dem GPC 6100 um den GPC 6018 aus 60. In mindestens einer Ausführungsform beinhaltet jeder GPC 6100 ohne Einschränkung eine Anzahl von Hardware-Einheiten zur Verarbeitung von Aufgaben und beinhaltet jeder GPC 6100 ohne Einschränkung einen Pipeline-Manager 6102, eine Vor-Rasteroperationseinheit (pre-raster operations unit - „PROP“-Einheit) 6104, eine Raster-Engine 6108, eine Arbeitsverteilungskreuzschiene (work distribution crossbar„WDX“) 6116, eine Speicherverwaltungseinheit („MMU“) 6118, ein oder mehrere Datenverarbeitungscluster (Data Processing Clusters - „DPCs“)6106 und eine beliebige geeignete Kombination von Teilen.
  • In mindestens einer Ausführungsform wird der Betrieb des GPC 6100 durch den Pipeline-Manager 6102 gesteuert. In mindestens einer Ausführungsform verwaltet der Pipeline-Manager 6102 die Konfiguration eines oder mehrerer DPCs 6106 für die Verarbeitung von Aufgaben, die dem GPC 6100 zugewiesen sind. In mindestens einer Ausführungsform konfiguriert der Pipeline-Manager 6102 mindestens einen von einem oder mehreren DPCs 6106 dazu, mindestens einen Abschnitt einer Grafik-Rendering-Pipeline zu implementieren. In mindestens einer Ausführungsform ist der DPC 6106 dazu konfiguriert, ein Vertex-Shader-Programm auf einem programmierbaren Streaming-Multiprozessor (streaming multi-processor - „SM“) 6114 auszuführen. In mindestens einer Ausführungsform ist der Pipeline-Manager 6102 dazu konfiguriert, die von einer Arbeitsverteilungseinheit empfangenen Pakete in mindestens einer Ausführungsform an die entsprechenden logischen Einheiten innerhalb des GPC 6100 zu leiten und einige Pakete können an Festfunktions-Hardwareeinheiten in der preROP 6104 und/oder die Raster-Engine 6108 geleitet werden, während andere Pakete an die DPCs 6106 zur Verarbeitung durch eine Primitiv-Engine 6112 oder den SM 6114 geleitet werden können. In mindestens einer Ausführungsform konfiguriert der Pipeline-Manager 6102 mindestens einen der DPCs 6106 zum Implementieren eines Modells eines neuronalen Netzes und/oder einer Rechenpipeline.
  • In mindestens einer Ausführungsform ist die preROP-Einheit 6104 dazu konfiguriert, in mindestens einer Ausführungsform die von der Raster-Engine 6108 und den DPCs 6106 erzeugten Daten an eine Rasteroperations-(„ROP“-)Einheit in der Partitionseinheit 6022 zu leiten, die vorstehend in Verbindung mit 60 detaillierter beschrieben ist. In mindestens einer Ausführungsform ist die preROP-Einheit 6104 so konfiguriert, dass sie unter anderem Optimierungen für die Farbmischung durchführt, Pixelfarbdaten organisiert und Adressübersetzungen durchführt. In mindestens einer Ausführungsform beinhaltet die Raster-Engine 6108 ohne Einschränkung eine Anzahl von Festfunktions-Hardwareeinheiten, die so konfiguriert sind, dass sie verschiedene Rasteroperationen durchführen, und in mindestens einer Ausführungsform beinhaltet die Raster-Engine 6108 ohne Einschränkung eine Setup-Engine, eine Grobraster-Engine, eine Culling-Engine, eine Clipping-Engine, eine Feinraster-Engine, eine Kachelverschmelzungs-Engine und eine beliebige geeignete Kombination davon. In mindestens einer Ausführungsform empfängt die Setup-Engine transformierte Vertices und sie erzeugt Ebenengleichungen, die mit dem durch die Vertices definierten geometrischen Primitiv assoziiert sind; die Ebenengleichungen werden an eine Grobraster-Engine übertragen, um Abdeckungsinformationen (z. B. eine x-, y-Abdeckungsmaske für eine Kachel) für das Primitiv zu erzeugen; die Ausgabe einer Grobraster-Engine wird an eine Culling-Engine übertragen, in der Fragmente, die mit einem Primitiv assoziiert sind und einen z-Test nicht bestehen, Culling unterzogen werden und an eine Clipping-Engine übertragen werden, in der Fragmente, die außerhalb eines Sichtkegelstumpfes liegen, Clipping unterzogen werden. In mindestens einer Ausführungsform werden Fragmente, die das Clipping und Culling überstehen, an eine Feinraster-Engine übergeben, um Attribute für Pixelfragmente auf Grundlage von Ebenengleichungen zu erzeugen, die durch eine Setup-Engine erzeugt werden. In mindestens einer Ausführungsform umfasst eine Ausgabe der Raster-Engine 6108 Fragmente, die durch eine beliebige geeignete Entität, wie etwa durch einen innerhalb des DPC 6106 implementierten Fragment-Shader, verarbeitet werden sollen.
  • In mindestens einer Ausführungsform umfasst jeder DPC 6106, der in dem GPC 6100 enthalten ist, ohne Einschränkung eine M-Pipe-Steuerung (M-Pipe Controller - „MPC“) 6110; eine Primitiv-Engine 6112; einen oder mehrere SMs 6114 und eine beliebige geeignete Kombination davon. In mindestens einer Ausführungsform steuert die MPC 6110 den Betrieb des DPC 6106 und leitet von dem Pipeline-Manager 6102 empfangene Pakete an die entsprechenden Einheiten in dem DPC 6106. In mindestens einer Ausführungsform werden Pakete, die mit einem Vertex assoziiert sind, an die Primitiv-Engine 6112 geroutet, die so konfiguriert ist, dass sie Vertexattribute, die mit einem Vertex assoziiert sind, aus dem Speicher abruft; im Gegensatz dazu können Pakete, die mit einem Shader-Programm assoziiert sind, an den SM 6114 übertragen werden.
  • In mindestens einer Ausführungsform umfasst der SM 6114 ohne Einschränkung einen programmierbaren Streaming-Prozessor, der so konfiguriert ist, dass er Tasks verarbeitet, die durch eine Anzahl von Threads dargestellt sind. In mindestens einer Ausführungsform weist der SM 6114 mehrere Threads auf und ist dazu konfiguriert, eine Vielzahl von Threads (z. B. 32 Threads) aus einer konkreten Gruppe von Threads gleichzeitig auszuführen und eine Single-Instruction-Multiple-Data-(„SIMD“-)Architektur zu implementieren, bei der jeder Thread in einer Gruppe von Threads (z. B. ein Warp) dazu konfiguriert ist, einen anderen Datensatz auf Grundlage des gleichen Anweisungssatzes zu verarbeiten. In mindestens einer Ausführungsform führen alle Threads in einer Gruppe von Threads einen gemeinsamen Satz von Anweisungen aus. In mindestens einer Ausführungsform implementiert der SM 6114 eine Single-lnstruction-Multiple-Thread-(„SIMT“-)Architektur, bei der jeder Thread in einer Gruppe von Threads so konfiguriert ist, dass er einen anderen Datensatz auf Grundlage dieses gemeinsamen Anweisungssatzes verarbeitet, wobei jedoch zugelassen wird, dass die einzelnen Threads in einer Gruppe von Threads während der Ausführung divergieren. In mindestens einer Ausführungsform werden ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden Warp beibehalten, wodurch Nebenläufigkeit zwischen Warps und serielle Ausführung innerhalb von Warps ermöglicht werden, wenn Threads innerhalb eines Warps divergieren. In einer anderen Ausführungsform werden ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden einzelnen Thread beibehalten, wodurch gleichwertige Nebenläufigkeit zwischen allen Threads, innerhalb und zwischen Warps ermöglicht wird. In mindestens einer Ausführungsform wird der Ausfü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 6114 wird hierin detaillierter beschrieben.
  • In mindestens einer Ausführungsform stellt die MMU 6118 eine Schnittstelle zwischen dem GPC 6100 und der Speicherpartitionseinheit (z. B. der Partitionseinheit 6022 aus 60) bereit und stellt die MMU 6118 die Übersetzung virtueller Adressen in physische Adressen, den Speicherschutz und die Vermittlung von Speicheranforderungen bereit. In mindestens einer Ausführungsform stellt die MMU 6118 einen oder mehrere Adressenübersetzungspuffer („TLBs“) zum Durchführen der Übersetzung von virtuellen Adressen in physische Adressen in Speicher bereit.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie etwa ein neuronales Netz, zu trainieren, um dem GPC 6100 bereitgestellte Informationen vorherzusagen oder zu inferenzieren. In mindestens einer Ausführungsform wird der GPC 6100 verwendet, um Informationen auf Grundlage eines trainierten Modells des maschinellen Lernens (z. B. eines neuronalen Netzes) abzuleiten oder vorherzusagen, das durch einen anderen Prozessor oder ein anderes System oder durch den GPC 6100 trainiert wurde. In mindestens einer Ausführungsform kann der GPC 6100 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netze durchzuführen.
  • 62 veranschaulicht eine Speicherpartitionseinheit 6200 einer Parallelverarbeitungseinheit („PPU“) gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet die Speicherpartitionseinheit 6200 ohne Einschränkung eine Rasteroperations-(„ROP“-)Einheit 6202, einen Cache 6204 der Ebene zwei („L2“-), eine Speicherschnittstelle 6206 und eine beliebige geeignete Kombination davon. In mindestens einer Ausführungsform ist die Speicherschnittstelle 6206 an Speicher gekoppelt. In mindestens einer Ausführungsform kann die Speicherschnittstelle 6206 32-, 64-, 128-, 1024-Bit-Datenbusse oder dergleichen für die Hochgeschwindigkeitsdatenübermittlung implementieren. In mindestens einer Ausführungsform beinhaltet die PPU U Speicherschnittstellen 6206, wobei U eine positive ganze Zahl ist, mit einer Speicherschnittstelle 6206 pro Paar von Partitionseinheiten 6200, wobei jedes Paar von Partitionseinheiten 6200 mit einer entsprechenden Speichervorrichtung verbunden ist. In mindestens einer Ausführungsform kann die PPU zum Beispiel mit bis zu Y Speichervorrichtungen verbunden sein, wie etwa mit Speicherstapeln mit hoher Bandbreite oder mit einem synchronen dynamischen Direktzugriffsspeicher mit Graphics-Double-Data-Rate-Version 5 („GDDR5-SDRAM“).
  • In mindestens einer Ausführungsform implementiert die Speicherschnittstelle 6206 eine Speicherschnittstelle mit Speicher mit hoher Bandbreite der zweiten Generation („HBM2“) und Y ist gleich der Hälfte von U. In mindestens einer Ausführungsform befinden sich HBM2-Speicherstapel auf einem physischen Gehäuse mit einer PPU, was im Vergleich zu herkömmlichen GDDR5-SDRAM-Systemen erhebliche Leistungs- und Flächeneinsparungen bereitstellt. In mindestens einer Ausführungsform beinhaltet jeder HBM2-Stapel ohne Einschränkung vier Speicher-Dies mit Y=4, wobei jeder HBM2-Stapel zwei 128-Bit-Kanäle pro Die für insgesamt 8 Kanäle und eine Datenbusbreite von 1024 Bit beinhaltet. In mindestens einer Ausführungsform unterstützt dieser Speicher Single-Error-Correcting-Double-Error-Detecting-(„SECDED“-)Fehlerkorrekturcode (Error Correction Code - „ECC“) zum Schützen von Daten. In mindestens einer Ausführungsform kann der ECC eine höhere Zuverlässigkeit für Rechenanwendungen bereitstellen, die für Datenkorruption empfindlich sind.
  • In mindestens einer Ausführungsform implementiert die PPU eine Speicherhierarchie mit mehreren Levels. In mindestens einer Ausführungsform unterstützt die Speicherpartitionseinheit 6200 einen einheitlichen Speicher, um einen einzelnen einheitlichen virtuellen Adressraum für den Speicher der zentralen Verarbeitungseinheit („CPU“) und der PPU bereitzustellen, wodurch die gemeinsame Nutzung von Daten zwischen virtuellen Speichersystemen ermöglicht wird. In mindestens einer Ausführungsform wird die Häufigkeit von Zugriffen durch eine PPU auf einen Speicher, der sich auf anderen Prozessoren befindet, verfolgt, um sicherzustellen, dass Speicherseiten in den physischen Speicher der PPU verschoben werden, die häufiger auf Seiten zugreift. In mindestens einer Ausführungsform unterstützt die Hochgeschwindigkeits-GPU-Zusammenschaltung 6008 Adressübersetzungsdienste, die es der PPU ermöglichen, direkt auf die Seitentabellen einer CPU zuzugreifen, und einer PPU vollen Zugriff auf den CPU-Speicher bereitstellen.
  • In mindestens einer Ausführungsform übermitteln Kopier-Engines Daten zwischen mehreren PPUs oder zwischen PPUs und CPUs. In mindestens einer Ausführungsform können Kopier-Engines Seitenfehler für Adressen erzeugen, die nicht in Seitentabellen abgebildet sind, und die Speicherpartitionseinheit 6200 bedient dann Seitenfehler, indem sie die Adressen in die Seitentabelle abbildet, woraufhin die Kopier-Engine eine Übermittlung durchführt. In mindestens einer Ausführungsform ist der Speicher für mehrere Kopier-Engine-Operationen zwischen mehreren Prozessoren gepinnt (d. h. nicht auslagerbar), was den verfügbaren Speicher erheblich reduziert. In mindestens einer Ausführungsform können bei Hardware-Seitenfehlern Adressen an Kopier-Engines übergeben werden, ohne Rücksicht darauf, ob Speicherseiten speicherresident sind und ein Kopierprozess transparent ist.
  • Daten aus dem Speicher 6004 aus 60 oder einem anderen Systemspeicher werden gemäß mindestens einer Ausführungsform durch die Speicherpartitionseinheit 6200 abgerufen und in L2-Cache 6204 gespeichert, der sich auf dem Chip befindet und von verschiedenen GPCs gemeinsam genutzt wird. Jede Speicherpartitionseinheit 6200 beinhaltet in mindestens einer Ausführungsform ohne Einschränkung mindestens einen Abschnitt des L2-Caches, der einer entsprechenden Speichervorrichtung zugeordnet ist. In mindestens einer Ausführungsform sind die Caches der unteren Levels in verschiedenen Einheiten innerhalb der GPCs implementiert. In mindestens einer Ausführungsform kann jeder der SMs 6114 aus 61 einen Level-1-(„L1“-)Cache implementieren, wobei dieser L1-Cache ein privater Speicher ist, der für einen konkreten SM 6114 dediziert ist, und Daten aus dem L2-Cache 6204 werden abgerufen und in jedem L1-Cache zum Verarbeiten in funktionellen Einheiten der SMs 6114 gespeichert. In mindestens einer Ausführungsform ist der L2-Cache 6204 an die Speicherschnittstelle 6206 und die in 60 gezeigte XBar 6020 gekoppelt.
  • In mindestens einer Ausführungsform führt die ROP-Einheit 6202 Grafikrasteroperationen durch, die mit der Pixelfarbe in Bezug stehen, wie etwa Farbkomprimierung, Pixel-Blending und mehr. In mindestens einer Ausführungsform implementiert die ROP-Einheit 6202 die Tiefenprüfung in Verbindung mit der Raster-Engine 6108, wobei sie eine Tiefe für eine Sampler-Position, die einem Pixelfragment zugeordnet ist, von der Culling-Engine der Raster-Engine 6108 empfängt. In mindestens einer Ausführungsform wird die Tiefe gegen eine entsprechende Tiefe in einem Tiefenpuffer für eine mit einem Fragment assoziierte Sampler-Stelle geprüft. Falls dieses Fragment die Tiefenprüfung für diese Sampler-Stelle besteht, aktualisiert die ROP-Einheit 6202 dann in mindestens einer Ausführungsform den Tiefenpuffer und überträgt ein Ergebnis dieser Tiefenprüfung an die Raster-Engine 6108. Es versteht sich, dass sich eine Anzahl der Partitionseinheiten 6200 von einer Anzahl der GPCs unterscheiden kann und daher kann jede ROP-Einheit 6202 in mindestens einer Ausführungsform an jeden GPC gekoppelt sein. In mindestens einer Ausführungsform verfolgt die ROP-Einheit 6202 die von verschiedenen GPCs empfangenen Pakete und bestimmt, ob ein durch die ROP-Einheit 6202 erzeugtes Ergebnis zu der XBar 6020 durchgeroutet werden soll.
  • 63 veranschaulicht einen Streaming-Multiprozessor („SM“) 6300 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der SM 6300 der SM aus 61. In mindestens einer Ausführungsform beinhaltet der SM 6300 ohne Einschränkung einen Anweisungs-Cache 6302, eine oder mehrere Planer-Einheiten 6304, eine Registerdatei 6308, einen oder mehrere Verarbeitungskerne („Kerne“) 6310, eine oder mehrere Spezialfunktionseinheiten (special function units - „SFUs“) 6312, eine oder mehrere Lade-/Speichereinheiten (load/store units - „LSUs“) 6314, ein Zusammenschaltungsnetz 6316, einen gemeinsam genutzten Speicher/Level-Eins-(„L1 "-)Cache 6318 und/oder eine beliebige geeignete Kombination davon.
  • In mindestens einer Ausführungsform teilt eine ArbeitsverteilungseinheitTasks zur Ausführung auf Universalverarbeitungsclustern („GPCs“) von Parallelverarbeitungseinheiten („PPUs“) zu und jeder Task wird einem konkreten Datenverarbeitungscluster („DPC“) innerhalb eines GPC zugewiesen, und falls ein Task mit einem Shader-Programm assoziiert ist, wird dieser Task einem der SMs 6300 zugewiesen. In mindestens einer Ausführungsform empfängt die Planer-Einheit 6304 Tasks von einer Arbeitsverteilungseinheit und sie verwaltet die Anweisungsplanung für einen oder mehrere Thread-Blöcke, die dem SM 6300 zugeordnet sind. In mindestens einer Ausführungsform plant die Planer-Einheit 6304 Thread-Blöcke für die Ausführung als Warps aus parallelen Threads, wobei jedem Thread-Block mindestens ein Warp zugewiesen ist. In mindestens einer Ausführungsform führt jeder Warp Threads aus. In mindestens einer Ausführungsform verwaltet die Planer-Einheit 6304 eine Vielzahl von unterschiedlichen Thread-Blöcken, indem sie unterschiedlichen Thread-Blöcken Warps zuweist und dann während jedes Taktzyklus Anweisungen aus einer Vielzahl von unterschiedlichen kooperativen Gruppen verschiedenen funktionellen Einheiten (z. B. Verarbeitungskernen 6310, SFUs 6312 und LSUs 6314) zuteilt.
  • In mindestens einer Ausführungsform können sich kooperative Gruppen auf ein Programmiermodell zum Organisieren von Gruppen kommunizierender Threads beziehen, das es Entwicklern erlaubt, die Granularität auszudrücken, mit der Threads kommunizieren, und so den Ausdruck satterer, effizienterer paralleler Dekompositionen ermöglicht. In mindestens einer Ausführungsform unterstützen kooperative Start-APIs die Synchronisation zwischen Thread-Blöcken zur Ausführung paralleler Algorithmen. In mindestens einer Ausführungsform stellen Anwendungen herkömmlicher Programmiermodelle ein einzelnes, einfaches Konstrukt zum Synchronisieren von kooperierenden Threads bereit: eine Sperre über alle Threads eines Thread-Blocks (z. B. die Funktion syncthreads( )). In mindestens einer Ausführungsform können Programmierer jedoch Gruppen von Threads mit einer geringeren als Thread-Block-Granularität definieren und innerhalb definierter Gruppen synchronisieren, um eine höhere Rechenleistung, Ausgestaltungsflexibilität und Software-Wiederverwendung in Form von kollektiven gruppenweiten Funktionsschnittstellen zu ermöglichen. In mindestens einer Ausführungsform ermöglichen es kooperative Gruppen Programmierern, Gruppen von Threads explizit mit Teilblock- (d. h. so klein wie ein einzelner Thread) und Mehrblock-Granularität zu definieren und kollektive Operationen, wie etwa Synchronisation, an Threads in einer kooperativen Gruppe durchzuführen. In 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. In mindestens einer Ausführungsform ermöglichen Primitive der kooperativen Gruppen neue Muster der kooperativen Parallelität, einschließlich, aber nicht beschränkt auf, Produzent-Konsument-Parallelität, opportunistischer Parallelität und globaler Synchronisation über ein gesamtes Gitter von Thread-Blöcken.
  • In mindestens einer Ausführungsform ist eine Zuteilungseinheit 6306 so konfiguriert, dass sie Anweisungen an eine oder mehrere funktionelle Einheiten überträgt, und die Planer-Einheit 6304 beinhaltet ohne Einschränkung zwei Zuteilungseinheiten 6306, die es ermöglichen, dass zwei unterschiedliche Anweisungen aus einem gemeinsamen Warp während jedes Taktzyklus zugeteilt werden. In mindestens einer Ausführungsform beinhaltet jede Planer-Einheit 6304 eine einzelne Zuteilungseinheit 6306 oder zusätzliche Zuteilungseinheiten 6306.
  • In mindestens einer Ausführungsform beinhaltet jeder SM 6300 in mindestens einer Ausführungsform ohne Einschränkung die Registerdatei 6308, die einen Satz von Registern für funktionelle Einheiten des SM 6300 bereitstellt. In mindestens einer Ausführungsform ist die Registerdatei 6308 auf jede funktionelle Einheit aufgeteilt, sodass jeder funktionellen Einheit ein dedizierter Abschnitt der Registerdatei 6308 zugewiesen ist. In mindestens einer Ausführungsform ist die Registerdatei 6308 auf unterschiedliche Warps aufgeteilt, die durch den SM 6300 ausgeführt werden, und die Registerdatei 6308 stellt temporären Datenspeicher für Operanden bereit, die mit Datenpfaden von funktionellen Einheiten verbunden sind. In mindestens einer Ausführungsform umfasst jeder SM 6300 ohne Einschränkung eine Vielzahl von L Verarbeitungskernen 6310, wobei L eine positive ganze Zahl ist. In mindestens einer Ausführungsform beinhaltet der SM 6300 ohne Einschränkung eine große Anzahl (z. B. 128 oder mehr) von unterschiedlichen Verarbeitungskernen 6310. In mindestens einer Ausführungsform beinhaltet jeder Verarbeitungskern 6310 ohne Einschränkung eine Vollpipelineverarbeitungseinheit mit einfacher Genauigkeit, doppelter Genauigkeit und/oder gemischter Genauigkeit, die ohne Einschränkung eine arithmetisch-logische Einheit für Gleitkommazahlen und eine arithmetisch-logische Einheit für Integer beinhaltet. In mindestens einer Ausführungsform implementieren die arithmetisch-logischen Einheiten für Gleitkommazahlen den Standard IEEE 754-2008 für Gleitkommaarithmetik. In mindestens einer Ausführungsform beinhalten die Verarbeitungskerne 6310 ohne Einschränkung 64 Gleitkommakerne mit einfacher Genauigkeit (32 Bit), 64 Integerkerne, 32 Gleitkommakerne mit doppelter Genauigkeit (64 Bit) und 8 Tensorkerne.
  • Tensorkerne sind gemäß mindestens einer Ausführungsform dazu konfiguriert, Matrixoperationen durchzuführen. In mindestens einer Ausführungsform sind ein oder mehrere Tensorkerne in den Verarbeitungskernen 6310 enthalten. In mindestens einer Ausführungsform sind die Tensorkerne so konfiguriert, dass sie Deep-Learning-Matrixarithmetik durchführen, wie etwa Faltungsoperationen zum Trainieren und Inferenzieren neuronaler Netze. In 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.
  • In 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. In mindestens einer Ausführungsform arbeiten die Tensorkerne an 16-Bit-Gleitkommaeingabedaten mit 32-Bit-Gleitkommaakkumulation. In mindestens einer Ausführungsform verwendet die 16-Bit-Gleitkommamultiplikation 64 Operationen und ergibt ein Produkt mit voller Genauigkeit, das dann unter Verwendung von 32-Bit-Gleitkommaaddition mit anderen Zwischenprodukten für eine 4x4x4-Matrixmultiplikation akkumuliert wird. In mindestens einer Ausführungsform werden Tensorkerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen, die aus diesen kleineren Elementen aufgebaut sind. In mindestens einer Ausführungsform legt eine API, wie etwa die CUDA 9 C++-API, spezielle Matrixlade-, Matrixmultiplizier- und -akkumulations- und Matrixspeicheroperationen offen, um Tensorkerne aus einem CUDA-C++-Programm effizient zu verwenden. In mindestens einer Ausführungsform wird auf einem CUDA-Level auf einer Warp-Level-Schnittstelle von Matrizen der Größe 16x16 ausgegangen, die sich über alle 32 Threads des Warp erstrecken.
  • In mindestens einer Ausführungsform umfasst jeder SM 6300 ohne Einschränkung M SFUs 6312, die Spezialfunktionen durchführen (z. B. Attributbewertung, reziproke Quadratwurzel und dergleichen). In mindestens einer Ausführungsform beinhalten die SFUs 6312 ohne Einschränkung eine Baumtraversierungseinheit, die so konfiguriert ist, dass sie eine hierarchische Baumdatenstruktur traversiert. In mindestens einer Ausführungsform beinhalten die SFUs 6312 ohne Einschränkung eine Textureinheit, die dazu konfiguriert ist, Texturkartenfilteroperationen durchzuführen. In mindestens einer Ausführungsform sind die Textureinheiten dazu konfiguriert, Texturkarten (z. B. ein 2D-Array von Texeln) aus Speicher zu laden und Texturkarten abzutasten, um abgetastete Texturwerte zur Verwendung in Shader-Programmen zu produzieren, die durch den SM 6300 ausgeführt werden. In mindestens einer Ausführungsform werden die Texturkarten in dem gemeinsam genutzten Speicher/L1-Cache 6318 gespeichert. In mindestens einer Ausführungsform implementieren die Textureinheiten Texturoperationen, wie etwa Filteroperationen unter Verwendung von Mip-Karten (z. B. Texturkarten mit variierenden Detailgraden), gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet jeder SM 6300 ohne Einschränkung zwei Textureinheiten.
  • Jeder SM 6300 umfasst in mindestens einer Ausführungsform ohne Einschränkung N LSUs 6314, die Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher/L1-Cache 6318 und der Registerdatei 6308 implementieren. Das Zusammenschaltungsnetz 6316 verbindet in mindestens einer Ausführungsform jede funktionelle Einheit mit der Registerdatei 6308 und die LSU 6314 mit der Registerdatei 6308 und dem gemeinsam genutzten Speicher/L1 -Cache 6318. In mindestens einer Ausführungsform ist das Zusammenschaltungsnetz 6316 eine Kreuzschiene, die so konfiguriert sein kann, dass sie beliebige funktionelle Einheiten mit beliebigen Registern in der Registerdatei 6308 verbindet und LSUs 6314 mit der Registerdatei 6308 und Speicherorten in dem gemeinsam genutzten Speicher/L1-Cache 6318 verbindet.
  • In mindestens einer Ausführungsform ist der gemeinsam genutzte Speicher/L1-Cache 6318 ein Array von chipinternem Speicher, das in mindestens einer Ausführungsform die Datenspeicherung und die Kommunikation zwischen dem SM 6300 und der Primitiv-Engine sowie zwischen Threads in dem SM 6300 ermöglicht. In mindestens einer Ausführungsform umfasst der gemeinsam genutzte Speicher/L1-Cache 6318 ohne Einschränkung eine Speicherkapazität von 128 KB und er befindet sich in einem Pfad von dem SM 6300 zu einer Partitionseinheit. In mindestens einer Ausführungsform wird der gemeinsam genutzte Speicher/L1-Cache 6318 in mindestens einer Ausführungsform zum Zwischenspeichern von Lese- und Schreibvorgängen verwendet. In mindestens einer Ausführungsform sind einer oder mehrere von dem gemeinsam genutzten Speicher/L1-Cache 6318, L2-Cache und Speicher Ergänzungsspeicher.
  • Das Kombinieren der Funktionalität des Daten-Cache und des gemeinsam genutzten Speichers in einem einzelnen Speicherblock stellt in mindestens einer Ausführungsform eine verbesserte Rechenleistung für beide Typen von Speicherzugriffen bereit. In mindestens einer Ausführungsform wird die Kapazität durch Programme, die keinen gemeinsam genutzten Speicher verwenden, als Cache verwendet oder sie kann so verwendet werden, wie etwa, falls der gemeinsam genutzte Speicher so konfiguriert ist, dass er die Hälfte einer Kapazität verwendet, und Textur- und Lade-/Speicheroperationen die verbleibende Kapazität verwenden können. Die Integration in den gemeinsam genutzten Speicher/L1-Cache 6318 ermöglicht dem gemeinsam genutzten Speicher/L1-Cache 6318 gemäß mindestens einer Ausführungsform das Fungieren als Leitung mit hohem Durchsatz für Streaming-Daten, während simultan Zugriff mit hoher Bandbreite und niedriger Latenz auf häufig wiederverwendete Daten bereitgestellt wird. In mindestens einer Ausführungsform kann bei einer Konfiguration für Universalparallelberechnung eine einfachere Konfiguration im Vergleich zur Grafikverarbeitung verwendet werden. In mindestens einer Ausführungsform werden Festfunktions-Grafikverarbeitungseinheiten umgangen, wodurch ein viel einfacheres Programmiermodell entsteht. Bei einer Konfiguration für Universalparallelberechnungen ordnet eine Arbeitsverteilungseinheit in mindestens einer Ausführungsform Blöcke von Threads direkt den DPCs zu und verteilt diese. In mindestens einer Ausführungsform führen Threads in einem Block ein gemeinsames Programm aus, wobei eine eindeutige Thread-ID bei der Berechnung verwendet wird, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, wobei der SM 6300 zum Ausführen des Programms und Durchführen von Berechnungen verwendet wird, der gemeinsam genutzte Speicher/L1-Cache 6318 zum Kommunizieren zwischen den Threads verwendet wird und die LSU 6314 zum Lesen des und Schreiben in den globalen Speicher durch den gemeinsam genutzten Speicher/L1-Cache 6318 und die Speicherpartitionseinheit verwendet wird. Bei der Konfiguration für Universalparallelberechnungen schreibt der SM 6300 in mindestens einer Ausführungsform Befehle, die durch die Planer-Einheit 6304 verwendet werden können, um neue Arbeit in den DPCs zu starten.
  • In mindestens einer Ausführungsform ist eine PPU in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, Servern, Supercomputern, einem Smartphone (z. B. einer drahtlosen 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. In mindestens einer Ausführungsform ist eine PPU auf einem einzelnen Halbleitersubstrat verkörpert. In mindestens einer Ausführungsform ist eine PPU in einem System auf einem Chip („SoC“) zusammen mit einer oder mehreren anderen Vorrichtungen enthalten, wie etwa zusätzlichen PPUs, Speicher, einer Reduced-lnstruction-Set-Computer-(„RISC“-)CPU, einer Speicherverwaltungseinheit („MMU“), einem Digital-Analog-Wandler (digital-toanalog converter - „DAC“) und dergleichen.
  • In mindestens einer Ausführungsform kann eine PPU auf einer Grafikkarte enthalten sein, die eine oder mehrere Speichervorrichtungen beinhaltet. In mindestens einer Ausführungsform kann diese Grafikkarte so konfiguriert sein, dass sie mit einem PCIe-Steckplatz auf einer Hauptplatine eines Desktop-Computers eine Schnittstelle bildet. In mindestens einer Ausführungsform kann diese PPU eine integrierte Grafikverarbeitungseinheit („iGPU“) sein, die im Chipsatz einer Hauptplatine enthalten ist.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie etwa ein neuronales Netz, zu trainieren, um dem SM 6300 bereitgestellte Informationen vorherzusagen oder zu inferenzieren. In mindestens einer Ausführungsform wird der SM 6300 verwendet, um Informationen auf Grundlage eines trainierten Modells für maschinelles Lernen (z. B. eines neuronalen Netzes) abzuleiten oder vorherzusagen, das durch einen anderen Prozessor oder ein anderes System oder durch den SM 6300 trainiert wurde. In mindestens einer Ausführungsform kann der SM 6300 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netze durchzuführen.
  • Es werden Ausführungsformen offenbart, die mit einer virtualisierten Rechenplattform für weiterentwickeltes Rechnen in Bezug stehen, wie etwa Bildinferenzierung und Bildverarbeitung in medizinischen Anwendungen. Ohne Einschränkung können Ausführungsformen Radiografie, Magnetresonanztomografie (MRI), Nuklearmedizin, Ultraschall, Sonografie, Elastografie, fotoakustische Bildgebung, Tomografie, Echokardiografie, funktionelle Nahinfrarotspektroskopie und Magnetpartikelbildgebung oder eine Kombination davon beinhalten. In mindestens einer Ausführungsform können eine virtualisierte Rechenplattform und die hierin beschriebenen damit assoziierten Prozesse zusätzlich oder alternativ ohne Einschränkung in der Forensikanalyse, der Detektion 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 64 ist 64 ein beispielhaftes Datenablaufdiagramm für einen Prozess 6400 zum Erzeugen und Einsetzen einer Bildverarbeitungs- und -inferenzpipeline gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozess 6400 zur Verwendung mit Bildgebungsvorrichtungen, Verarbeitungsvorrichtungen, Genomikvorrichtungen, Gensequenzierungsvorrichtungen, Radiologievorrichtungen und/oder anderen Vorrichtungstypen in einer oder mehreren Einrichtungen 6402 eingesetzt werden, wie etwa medizinischen Einrichtungen, Krankenhäusern, Gesundheitsinstituten, Kliniken, Forschungs- oder Diagnoselabors usw. In mindestens einer Ausführungsform kann der Prozess 6400 zum Durchführen einer Genomanalyse und -inferenz an Sequenzierungsdaten eingesetzt werden. Beispiele für Genomanalysen, die unter Verwendung der hierin beschriebenen Systeme und Prozesse durchgeführt werden können, beinhalten ohne Einschränkung Varianten-Calling, Mutationsdetektion und Quantifizierung der Genexpression.
  • In mindestens einer Ausführungsform kann der Prozess 6400 innerhalb eines Trainingssystems 6404 und/oder eines Einsatzsystems 6406 ausgeführt werden. In mindestens einer Ausführungsform kann das Trainingssystem 6404 verwendet werden, um das Training, den Einsatz und die Implementation von Modellen des maschinellen Lernens (z. B. neuronale Netze, Objektdetektionsalgorithmen, Algorithmen des maschinellen Sehens usw.) zur Verwendung in dem Einsatzsystem 6406 durchzuführen. In mindestens einer Ausführungsform kann das Einsatzsystem 6406 so konfiguriert sein, dass es Verarbeitungs- und Rechenressourcen in einer verteilten Rechenumgebung ablädt, um die Infrastrukturanforderungen in der Einrichtung 6402 zu reduzieren. In mindestens einer Ausführungsform kann das Einsatzsystem 6406 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 6402 bereitstellen. In mindestens einer Ausführungsform können virtuelle Instrumente softwaredefinierte Anwendungen zum Durchführen einer oder mehrerer Verarbeitungsoperationen in Bezug auf Bildgebungsdaten beinhalten, die durch Bildgebungsvorrichtungen, Sequenzierungsvorrichtungen, Radiologievorrichtungen und/oder andere Vorrichtungstypen erzeugt werden. In mindestens einer Ausführungsform können eine oder mehrere Anwendungen in einer Pipeline Dienste (z. B. Inferenz, Visualisierung, Berechnung, KI usw.) des Einsatzsystems 6406 während der Ausführung von Anwendungen verwenden oder aufrufen.
  • In mindestens einer Ausführungsform können einige der Anwendungen, die in weiterentwickelten Verarbeitungs- und Inferenzpipelines verwendet werden, Modelle des maschinellen Lernens oder andere KI verwenden, um einen oder mehrere Verarbeitungsschritte durchzuführen. In mindestens einer Ausführungsform können Modelle des maschinellen Lernens in der Einrichtung 6402 unter Verwendung von Daten 6408 (wie etwa Bildgebungsdaten) trainiert werden, die in der Einrichtung 6402 erzeugt wurden (und auf einem oder mehreren Servern eines Bildarchivierungs- und Kommunikationssystems (picture archiving and communication system - PACS) in der Einrichtung 6402 gespeichert sind), und sie können unter Verwendung von Bildgebungs- oder Sequenzierungsdaten 6408 aus einer anderen Einrichtung oder anderen Einrichtungen (z. B. einem anderen Krankenhaus, Labor, einer anderen Klinik usw.) oder einer Kombination davon trainiert werden. In mindestens einer Ausführungsform kann das Trainingssystem 6404 verwendet werden, um Anwendungen, Dienste und/oder andere Ressourcen zum Erzeugen von funktionierenden, einsatzfähigen Modellen des maschinellen Lernens für das Einsatzsystem 6406 bereitzustellen.
  • In mindestens einer Ausführungsform kann eine Modellregistrierungsdatenbank 6424 durch Objektspeicher unterstützt werden, der Versionierung und Objekt-Metadaten unterstützen kann. In mindestens einer Ausführungsform kann der Zugriff auf den Objektspeicher zum Beispiel durch eine mit Cloud-Speicher (z. B. einer Cloud 6526 aus 65) kompatible Anwendungsprogrammierschnittstelle (API) von innerhalb einer Cloud-Plattform erfolgen. In mindestens einer Ausführungsform können Modelle des maschinellen Lernens innerhalb der Modellregistrierungsdatenbank 6424 durch Entwickler oder Partner eines Systems, das mit einer API interagiert, hochgeladen, aufgelistet, modifiziert oder gelöscht werden. In mindestens einer Ausführungsform kann eine API Zugriff auf Verfahren bereitstellen, die es Benutzern mit zweckmäßigen Anmeldeinformationen ermöglichen, Modelle mit Anwendungen zu assoziieren, sodass Modelle als Teil der Ausführung von containerisierten Instanziierungen von Anwendungen ausgeführt werden können.
  • In mindestens einer Ausführungsform kann eine Trainingspipeline 6504 ( 65) ein Szenario beinhalten, in dem die Einrichtung 6402 ihr eigenes Modell des maschinellen Lernens trainiert oder ein bestehendes Modell des maschinellen Lernen aufweist, das optimiert oder aktualisiert werden muss. In mindestens einer Ausführungsform können Bildgebungsdaten 6408, die durch Bildgebungsvorrichtung(en), Sequenzierungsvorrichtungen und/oder andere Vorrichtungstypen erzeugt wurden, empfangen werden. In mindestens einer Ausführungsform kann, sobald Bildgebungsdaten 6408 empfangen werden, die Klgestützte Annotation 6410 verwendet werden, um beim Erzeugen von Annotationen zu helfen, die den Bildgebungsdaten 6408 entsprechen, die als Ground-Truth-Daten für ein Modell des maschinellen Lernens verwendet werden sollen. In mindestens einer Ausführungsform kann die KI-gestützte Annotation 6410 ein oder mehrere Modelle des maschinellen Lernens (z. B. neuronale Faltungsnetze (CNNs)) beinhalten, die darauf trainiert werden können, Annotationen zu erzeugen, die bestimmten Typen von Bildgebungsdaten 6408 (z. B. von bestimmten Vorrichtungen) und/oder bestimmten Typen von Anomalien in den Bildgebungsdaten 6408 entsprechen. In mindestens einer Ausführungsform können die Kl-gestützten Annotationen 6410 dann direkt verwendet oder unter Verwendung eines Annotationswerkzeugs (z. B. von einem Forscher, Kliniker, Arzt, Wissenschaftler usw.) eingestellt oder fein abgestimmt werden, um Ground-Truth-Daten zu erzeugen. In mindestens einer Ausführungsform können in einigen Beispielen beschriftete Klinikdaten 6412 (z. B. Annotationen, die von einem Kliniker, Arzt, Wissenschaftler, Techniker usw. bereitgestellt werden) als Ground-Truth-Daten für das Training eines Modells des maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform können die Kl-gestützten Annotationen 6410, beschrifteten Klinikdaten 6412 oder eine Kombination davon als Ground-Truth-Daten für das Training eines Modells des maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform kann ein trainiertes Modell des maschinellen Lernens als Ausgabemodell 6416 bezeichnet werden und durch das Einsatzsystem 6406 verwendet werden, wie hierin beschrieben.
  • In mindestens einer Ausführungsform kann die Trainingspipeline 6504 ( 65) ein Szenario beinhalten, in dem die Einrichtung 6402 ein Modell des maschinellen Lernens zur Verwendung beim Durchführen eines oder mehrerer Verarbeitungs-Tasks für eine oder mehrere Anwendungen in dem Einsatzsystem 6406 benötigt, die Einrichtung 6402 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). In mindestens einer Ausführungsform kann ein bestehendes Modell des maschinellen Lernens aus der Modellregistrierungsdatenbank 6424 ausgewählt werden. In mindestens einer Ausführungsform kann die Modellregistrierungsdatenbank 6424 Modelle des maschinellen Lernens beinhalten, die zum Durchführen einer Vielfalt von unterschiedlichen Inferenz-Tasks an Bildgebungsdaten trainiert sind. In mindestens einer Ausführungsform können die Modelle des maschinellen Lernens in der Modellregistrierungsdatenbank 6424 an Bildgebungsdaten von anderen Einrichtungen als der Einrichtung 6402 trainiert worden sein (z. B. Einrichtungen, die sich an einem anderen Ort befinden). In mindestens einer Ausführungsform können die Modelle des maschinellen Lernens an Bildgebungsdaten von einem Ort, zwei Orten oder einer beliebigen Anzahl von Orten trainiert worden sein. In mindestens einer Ausführungsform kann das Training beim Trainieren an Bildgebungsdaten von einem spezifischen Ort an diesem Ort oder mindestens auf eine Weise stattfinden, mit der die Vertraulichkeit der Bildgebungsdaten geschützt wird oder die Übermittlung der Bildgebungsdaten außerhalb der Räumlichkeiten eingeschränkt wird (z. B. zur Einhaltung von HIPAA-Vorschriften, Datenschutzvorschriften usw.). In mindestens einer Ausführungsform kann ein Modell des maschinellen Lernens, sobald es an einem Ort trainiert - oder teilweise trainiert - wurde, zur Modellregistrierungsdatenbank 6424 hinzugefügt werden. In mindestens einer Ausführungsform kann ein Modell des maschinellen Lernens dann in einer beliebigen Anzahl von anderen Einrichtungen erneut trainiert oder aktualisiert werden und ein erneut trainiertes oder aktualisiertes Modell kann in der Modellregistrierungsdatenbank 6424 verfügbar gemacht werden. In mindestens einer Ausführungsform kann dann ein Modell des maschinellen Lernens aus der Modellregistrierungsdatenbank 6424 ausgewählt werden - und als Ausgabemodell 6416 bezeichnet werden - und in dem Einsatzsystem 6406 verwendet werden, um einen oder mehrere Verarbeitungs-Tasks für eine oder mehrere Anwendungen eines Einsatzsystems durchzuführen.
  • In mindestens einer Ausführungsform kann die Trainingspipeline 6504 ( 65) in einem Szenario verwendet werden, das beinhaltet, dass die Einrichtung 6402 ein Modell des maschinellen Lernens zur Verwendung beim Durchführen eines oder mehrerer Verarbeitungs-Tasks für eine oder mehrere Anwendungen in dem Einsatzsystem 6406 erfordert, die Einrichtung 6402 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). In mindestens einer Ausführungsform könnte ein aus der Modellregistrierungsdatenbank 6424 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 6402 erzeugten Bildgebungsdaten 6408 fein abgestimmt oder optimiert sein. In mindestens einer Ausführungsform kann die KI-gestützte Annotation 6410 verwendet werden, um beim Erzeugen von Annotationen zu helfen, die den Bildgebungsdaten 6408 entsprechen, die als Ground-Truth-Daten für das erneute Trainieren oder Aktualisieren eines Modells des maschinellen Lernens verwendet werden sollen. In mindestens einer Ausführungsform können beschriftete Klinikdaten 6412 (z. B. Annotationen, die von einem Kliniker, Arzt, Wissenschaftler usw. bereitgestellt werden) als Ground-Truth-Daten für das Training eines Modells des maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform kann das erneute Trainieren oder Aktualisieren eines Modells des maschinellen Lernens als Modelltraining 6414 bezeichnet werden. In mindestens einer Ausführungsform kann das Modelltraining 6414 - z. B. KI-gestützte Annotationen 6410, beschriftete klinische Daten 6412 oder eine Kombination davon - als Ground-Truth-Daten für das erneute Training oder Aktualisieren eines Modells des maschinellen Lernens verwendet werden.
  • In mindestens einer Ausführungsform kann das Einsatzsystem 6406 Software 6418, Dienste 6420, Hardware 6422 und/oder andere Komponenten, Merkmale und Funktionalitäten beinhalten. In mindestens einer Ausführungsform kann das Einsatzsystem 6406 einen Software-„Stapel“ beinhalten, sodass die Software 6418 auf den Diensten 6420 aufgebaut sein kann und die Dienste 6420 verwenden kann, um einige oder alle Verarbeitungs-Tasks durchzuführen, und die Dienste 6420 und die Software 6418 können auf der Hardware 6422 aufgebaut sein und die Hardware 6422 verwenden, um Verarbeitungs-, Speicher- und/oder andere Rechen-Tasks des Einsatzsystems 6406 auszuführen.
  • In mindestens einer Ausführungsform kann die Software 6418 eine beliebige Anzahl von unterschiedlichen Containern beinhalten, wobei jeder Container eine Instanziierung einer Anwendung ausführen kann. In mindestens einer Ausführungsform kann jede Anwendung einen oder mehrere Verarbeitungs-Tasks in einer weiterentwickelten Verarbeitungs- und Inferenzpipeline durchführen (z. B. Inferenz, Objektdetektion, Merkmalsdetektion, Segmentierung, Bildverbesserung, Kalibrierung usw.). In mindestens einer Ausführungsform kann für jeden Typ von Bildgebungsvorrichtung (z. B. CT, MRT, Röntgen, Ultraschall, Sonografie, Echokardiografie usw.), Sequenzierungsvorrichtung, Radiologievorrichtung, Genomikvorrichtung usw. eine beliebige Anzahl von Containern vorhanden sein, die einen Datenverarbeitungs-Task in Bezug auf Bildgebungsdaten 6408 (oder andere Datentypen, wie etwa die hierin beschriebenen), die durch eine Vorrichtung erzeugt werden, durchführen können. In mindestens einer Ausführungsform kann eine weiterentwickelte Verarbeitungs- und Inferenzpipeline auf Grundlage von Auswahlen unterschiedlicher Container definiert werden, die zum Verarbeiten von Bildgebungsdaten 6408 gewünscht oder erforderlich sind, zusätzlich zu Containern, die Bildgebungsdaten zur Verwendung durch jeden Container und/oder zur Verwendung durch die Einrichtung 6402 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 6402). In mindestens einer Ausführungsform kann eine Kombination von Containern innerhalb der Software 6418 (die z. B. eine Pipeline bilden) als virtuelles Instrument bezeichnet werden (wie hierin detaillierter beschrieben) und ein virtuelles Instrument kann Dienste 6420 und Hardware 6422 ausnutzen, um einige oder alle Verarbeitungs-Tasks von in Containern instanziierten Anwendungen auszuführen.
  • In mindestens einer Ausführungsform kann eine Datenverarbeitungspipeline Eingabedaten (z. B. Bildgebungsdaten 6408) 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 6406, wie etwa einem Kliniker, einem Arzt, einem Radiologen usw.) empfangen. In 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 erzeugt werden. In mindestens einer Ausführungsform können die Daten als Teil der Datenverarbeitungspipeline einer Vorverarbeitung unterzogen werden, um die Daten für die Verarbeitung durch eine oder mehrere Anwendungen vorzubereiten. In mindestens einer Ausführungsform kann eine Nachbearbeitung an einer Ausgabe einer oder mehrerer Ableitungsaufgaben oder anderer Verarbeitungsaufgaben einer Pipeline durchgeführt werden, um Ausgabedaten für eine nächste Anwendung vorzubereiten und/oder Ausgabedaten für die Übermittlung und/oder Verwendung durch einen Benutzer vorzubereiten (z. B. als eine Antwort auf eine Ableitungsanfrage). In mindestens einer Ausführungsform können Inferenz-Tasks durch ein oder mehrere Modelle des maschinellen Lernens durchgeführt werden, wie etwa trainierte oder eingesetzte neuronale Netze, die Ausgabemodelle 6416 des Trainingssystems 6404 beinhalten können.
  • In mindestens einer Ausführungsform können die Tasks der Datenverarbeitungspipeline in einem Container(n) eingekapselt sein, die jeweils eine diskrete, voll funktionsfähige Instanziierung einer Anwendung und einer virtualisierten Rechenumgebung darstellen, die dazu in der Lage ist, sich auf Modelle des maschinellen Lernens zu beziehen. In mindestens einer Ausführungsform können Container oder Anwendungen in einem privaten (z. B. zugriffsbeschränkten) Bereich einer Containerregistrierungsdatenbank (hierin detaillierter beschrieben) veröffentlicht werden und trainierte oder eingesetzte Modelle können in der Modellregistrierungsdatenbank 6424 gespeichert und mit einer oder mehreren Anwendungen assoziiert werden. In mindestens einer Ausführungsform können Abbilder von Anwendungen (z. B. Containerabbilder) in einer Containerregistrierungsdatenbank verfügbar sein und sobald es durch einen Benutzer aus einer Containerregistrierungsdatenbank für den Einsatz in einer Pipeline ausgewählt wurde, kann ein Abbild verwendet werden, um einen Container für eine Instanziierung einer Anwendung zur Verwendung durch das System eines Benutzers zu erzeugen.
  • In mindestens einer Ausführungsform können Entwickler (z. B. Software-Entwickler, Kliniker, Ärzte usw.) Anwendungen (z. B. als Container) zum Durchführen von Bildverarbeitung und/oder Inferenz an zugeführten Daten entwickeln, veröffentlichen und speichern. In mindestens einer Ausführungsform kann die Entwicklung, Veröffentlichung und/oder Speicherung unter Verwendung eines Software-Entwicklungskits (software development kit- SDK) durchgeführt werden, das mit einem System assoziiert ist (um z. B. sicherzustellen, dass eine entwickelte Anwendung und/oder ein entwickelter Container mit einem System konform oder kompatibel ist). In mindestens einer Ausführungsform kann eine 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 6420 als System (z. B. System 6500 aus 65) 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 in 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. In mindestens einer Ausführungsform kann eine Anwendung, sobald sie durch das System 6500 validiert wurde (z. B. bezüglich Genauigkeit, Sicherheit, Patientendatenschutz usw.), in einer Containerregistrierungsdatenbank zur Auswahl und/oder Implementation durch einen Benutzer (z. B. ein Krankenhaus, eine Klinik, ein Labor, einen Gesundheitsdienstleister usw.) verfügbar sein, um einen oder mehrere Verarbeitungs-Tasks in Bezug auf Daten in einer Einrichtung (z. B. einer zweiten Einrichtung) eines Benutzers durchzuführen.
  • In mindestens einer Ausführungsform können Entwickler dann Anwendungen oder Container durch ein Netz für den Zugriff und die Verwendung durch Benutzer eines Systems (z. B. des Systems 6500 aus 65) teilen. In mindestens einer Ausführungsform können abgeschlossene und validierte Anwendungen oder Container in einer Containerregistrierungsdatenbank gespeichert werden und damit assoziierte Modelle des maschinellen Lernens in der Modellregistrierungsdatenbank 6424 gespeichert werden. In mindestens einer Ausführungsform kann eine anfordernde Entität (z. B. ein Benutzer in einer medizinischen Einrichtung) - die eine Inferenz- oder Bildverarbeitungsanforderung bereitstellt - eine Containerregistrierungsdatenbank und/oder Modellregistrierungsdatenbank 6424 nach einer Anwendung, einem Container, einem Datensatz, einem Modell des maschinellen Lernens usw. durchsuchen, eine gewünschte Kombination von Elementen zur Aufnahme in die Datenverarbeitungspipeline auswählen und eine Bildverarbeitungsanforderung absenden. In mindestens einer Ausführungsform kann eine Anforderung Eingabedaten (und in einigen Beispielen damit assoziierte Patientendaten) beinhalten, die zum Durchfü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. In mindestens einer Ausführungsform kann eine Anforderung dann an eine oder mehrere Komponenten des Einsatzsystems 6406 (z. B. eine Cloud) übergeben werden, um die Verarbeitung der Datenverarbeitungspipeline durchzuführen. In mindestens einer Ausführungsform kann die Verarbeitung durch das Einsatzsystem 6406 die Referenzierung ausgewählter Elemente (z. B. Anwendungen, Container, Modelle usw.) aus einer Containerregistrierungsdatenbank und/oder Modellregistrierungsdatenbank 6424 beinhalten. In mindestens einer Ausführungsform können, sobald Ergebnisse durch eine Pipeline erzeugt wurden, die Ergebnisse als Referenz an einen Benutzer zurückgegeben werden (z. B. zur Ansicht in einer Ansichtanwendungssuite, die auf einer lokalen Arbeitsstation oder einem lokalen Endgerät in den Räumlichkeiten ausgeführt wird). In mindestens einer Ausführungsform kann ein Radiologe Ergebnisse von einer Datenverarbeitungspipeline empfangen, die eine beliebige Anzahl von Anwendungen und/oder Containern beinhaltet, wobei die Ergebnisse Anomaliedetektion in Röntgenbildern, CT-Scans, MRTs usw. beinhalten können.
  • In mindestens einer Ausführungsform können zur Unterstützung der Verarbeitung oder Ausführung von Anwendungen oder Containern in Pipelines die Dienste 6420 ausgenutzt werden. In mindestens einer Ausführungsform können die Dienste 6420 Rechendienste, Dienste für künstliche Intelligenz (Kl), Visualisierungsdienste und/oder andere Diensttypen beinhalten. In mindestens einer Ausführungsform können die Dienste 6420 eine Funktionalität bereitstellen, die eine oder mehrere Anwendungen in der Software 6418 gemeinsam haben, sodass die Funktionalität zu einem Dienst abstrahiert werden kann, der durch Anwendungen aufgerufen oder ausgenutzt werden kann. In mindestens einer Ausführungsform kann die durch die Dienste 6420 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 6530 (65)). Anstatt dass jede Anwendung, die eine gleiche Funktionalität teilt, die durch einen Dienst 6420 angeboten wird, eine entsprechende Instanz des Dienstes 6420 aufweisen muss, kann der Dienst 6420 in mindestens einer Ausführungsform von verschiedenen Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform können die Dienste einen Inferenzserver oder eine Inferenz-Engine beinhalten, der/die als nicht einschränkende Beispiele zum Ausführen von Detektions- oder Segmentierungs-Tasks verwendet werden kann. In mindestens einer Ausführungsform kann ein Modelltrainingsdienst enthalten sein, der die Fähigkeit bereitstellen kann, Modelle des maschinellen Lernens zu trainieren und/oder erneut zu trainieren. In mindestens einer Ausführungsform kann ferner ein Datenerweiterungsdienst enthalten sein, der die Extraktion, Größenänderung, Skalierung und/oder andere Erweiterung von GPU-beschleunigten Daten (z. B. DICOM-Daten, RIS-Daten, CIS-Daten, REST-konformen Daten, RPC-Daten, Rohdaten usw.) bereitstellen kann. In mindestens einer Ausführungsform kann ein Visualisierungsdienst verwendet werden, der Bild-Rendering-Effekte - wie etwa Strahlverfolgung, Rasterung, Entrauschen, Schärfung usw. - hinzufügen kann, um zweidimensionale (2D) und/oder dreidimensionale (3D) Modelle realistischer zu gestalten. In mindestens einer Ausführungsform können Dienste für virtuelle Instrumente enthalten sein, die Strahlformung, Segmentierung, Inferenzieren, Bildgebung und/oder Unterstützung für andere Anwendungen innerhalb von Pipelines virtueller Instrumente bereitstellen.
  • In mindestens einer Ausführungsform, in der ein Dienst 6420 einen KI-Dienst (z. B. einen Inferenzdienst) beinhaltet, können ein oder mehrere Modelle des maschinellen Lernens, die mit einer Anwendung zur Anomaliedetektion (z. B. Tumoren, Wachstumsauffälligkeiten, Narbenbildung usw.) assoziiert sind, ausgeführt werden, indem ein Inferenzdienst (z. B. ein Inferenzserver) aufgerufen wird (z. B. als API-Aufruf), um Modell(e) des maschinellen Lernens oder deren Verarbeitung als Teil der Anwendungsausführung auszuführen. In mindestens einer Ausführungsform, in der eine andere Anwendung ein oder mehrere Modelle des maschinellen Lernens für Segmentierungs-Tasks beinhaltet, kann eine Anwendung einen Inferenzdienst aufrufen, um Modelle des maschinellen Lernens zum Durchführen einer oder mehrerer mit Segmentierungs-Tasks assoziierten Verarbeitungsoperationen auszuführen. In mindestens einer Ausführungsform kann die Software 6418, die eine weiterentwickelte Verarbeitungs- und Inferenzpipeline implementiert, die eine Segmentierungsanwendung und eine Anomaliedetektionsanwendung beinhaltet, gestrafft werden, da jede Anwendung einen gleichen Inferenzdienst zum Durchführen eines oder mehrerer Inferenz-Tasks aufrufen kann.
  • In mindestens einer Ausführungsform kann die Hardware 6422 GPUs, CPUs, Grafikkarten, ein Kl-/Deep-Learning-System (z. B. einen Kl-Supercomputer wie etwa das DGX-Supercomputersystem von NVIDIA), eine Cloud-Plattform oder eine Kombination davon beinhalten. In mindestens einer Ausführungsform können unterschiedliche Typen von Hardware 6422 verwendet werden, um eine effiziente, speziell entwickelte Unterstützung für Software 6418 und Dienste 6420 in dem Einsatzsystem 6406 bereitzustellen. In mindestens einer Ausführungsform kann die Verwendung von GPU-Verarbeitung für die lokale Verarbeitung (z. B. in der Einrichtung 6402), innerhalb eines Kl/Deep-Learning-Systems, in einem Cloud-System und/oder in anderen Verarbeitungskomponenten des Einsatzsystems 6406 implementiert werden, um die Effizienz, Genauigkeit und Wirksamkeit von Bildverarbeitung, Bildrekonstruktion, Segmentierung, MRT-Untersuchungen, Schlaganfall- oder Herzinfarktdetektion (z. B. in Echtzeit), Bildqualität beim Rendern usw. zu verbessern. In mindestens einer Ausführungsform kann eine Einrichtung Bildgebungsvorrichtungen, Genomikvorrichtungen, Sequenzierungsvorrichtungen und/oder andere Vorrichtungstypen in den Räumlichkeiten beinhalten, die GPUs ausnutzen können, um Bildgebungsdaten zu erzeugen, die für die Anatomie eines Probanden repräsentativ sind.
  • In mindestens einer Ausführungsform können die Software 6418 und/oder die Dienste 6420 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. In mindestens einer Ausführungsform kann mindestens ein Teil der Rechenumgebung des Einsatzsystems 6406 und/oder des Trainingssystems 6404 in einem Rechenzentrum auf einem oder mehreren Supercomputern oder Rechensystemen mit hoher Rechenleistung mit GPU-optimierter Software (z. B. Hardware- und Software-Kombination des DGX-Systems von NVIDIA) ausgeführt werden. In mindestens einer Ausführungsform können Rechenzentren mit HIPAA-Bestimmungen konform sein, sodass der Empfang, die Verarbeitung und die Übertragung von Bildgebungsdaten und/oder anderen Patientendaten in Bezug auf den Schutz von Patientendaten sicher gehandhabt werden. In mindestens einer Ausführungsform kann die Hardware 6422 eine beliebige Anzahl von GPUs beinhalten, die zur parallelen Verarbeitung von Daten, wie hierin beschrieben, aufgerufen werden können. In mindestens einer Ausführungsform kann die Cloud-Plattform ferner GPU-Verarbeitung für die GPU-optimierte Ausführung von Deep-Learning-Tasks, Tasks des maschinellen Lernens oder anderen Rechen-Tasks beinhalten. In mindestens einer Ausführungsform kann die Cloud-Plattform (z. B. NGC von NVIDIA) unter Verwendung von KI-/Deep-Learning-Supercomputer(n) und/oder GPU-optimierter Software (z. B. wie auf DGX-Systemen von NVIDIA bereitgestellt) als Hardware-Abstraktions- und - Skalierungsplattform ausgeführt werden. In mindestens einer Ausführungsform kann die Cloud-Plattform ein Anwendungscontainer-Clustering-System oder Orchestrierungssystem (z. B. KUBERNETES) auf mehreren GPUs integrieren, um eine nahtlose Skalierung und Lastverteilung zu ermöglichen.
  • 65 ist ein Systemdiagramm für ein beispielhaftes System 6500 zum Erzeugen und Einsetzen einer Bildgebungseinsatzpipeline gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das System 6500 dazu verwendet werden, den Prozess 6400 der 64 und/oder andere Prozesse, einschließlich hochentwickelter Verarbeitungs- und Inferencing-Pipelines, umzusetzen. In mindestens einer Ausführungsform kann das System 6500 das Trainingssystem 6404 und das Einsatzsystem 6406 beinhalten. In mindestens einer Ausführungsform können das Trainingssystem 6404 und das Einsatzsystem 6406 unter Verwendung von Software 6418, Diensten 6420 und/oder Hardware 6422, wie hierin beschrieben, implementiert werden.
  • In mindestens einer Ausführungsform kann das System 6500 (z. B. das Trainingssystem 6404 und/oder das Einsatzsystem 6406) in einer Cloud-Computing-Umgebung implementiert sein (z. B. unter Verwendung der Cloud 6526). In mindestens einer Ausführungsform kann das System 6500 lokal in Bezug auf eine Einrichtung des Gesundheitswesens oder als Kombination aus sowohl Cloud- als auch lokalen Rechenressourcen implementiert werden. In mindestens einer Ausführungsform können in Ausführungsformen, in denen Cloud Computing implementiert ist, Patientendaten von einer oder mehreren Komponenten des Systems 6500 getrennt oder nicht durch diese verarbeitet werden, was die Verarbeitung nicht konform mit HIPAA- und/oder anderen Vorschriften oder Gesetzen zur Datenhandhabung und zum Datenschutz machen würde. In mindestens einer Ausführungsform kann der Zugriff auf die APIs in der Cloud 6526 durch erlassene Sicherheitsmaßnahmen oder -protokolle auf autorisierte Benutzer beschränkt sein. In mindestens einer Ausführungsform kann ein Sicherheitsprotokoll Web-Token beinhalten, die durch einen Authentifizierungsdienst (z. B. AuthN, AuthZ, Gluecon usw.) signiert sein können und eine zweckmäßige Autorisierung tragen können. In mindestens einer Ausführungsform können APIs von virtuellen Instrumenten (hierin beschrieben) oder anderen Instanziierungen des Systems 6500 auf einen Satz von öffentlichen IPs beschränkt sein, die für die Interaktion sicherheitsüberprüft oder autorisiert wurden.
  • In mindestens einer Ausführungsform können verschiedene Komponenten des Systems 6500 unter Verwendung beliebiger einer Vielfalt von unterschiedlichen Netztypen, einschließlich, aber nicht beschränkt auf, lokaler Netze (LANs) und/oder Weitverkehrsnetze (WANs), über drahtgebundene und/oder drahtlose Kommunikationsprotokolle miteinander kommunizieren. In mindestens einer Ausführungsform kann die Kommunikation zwischen Einrichtungen und Komponenten des Systems 6500 (z. B. zum Übertragen von Inferenzanforderungen, zum Empfangen von Ergebnissen von Inferenzanforderungen usw.) über einen Datenbus oder Datenbusse, drahtlose Datenprotokolle (Wi-Fi), drahtgebundene Datenprotokolle (z. B. Ethernet) usw. kommuniziert werden.
  • In mindestens einer Ausführungsform kann das Trainingssystem 6404 Trainings-Pipelines 6504 ausführen, ähnlich wie diejenigen, die hier mit Bezug auf 64 beschrieben werden. In mindestens einer Ausführungsform, in der ein oder mehrere Modelle des maschinellen Lernens in Einsatzpipelines 6510 durch das Einsatzsystem 6406 verwendet werden sollen, können Trainingspipelines 6504 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 6506 zu implementieren (z. B. ohne eine Notwendigkeit eines erneuten Trainings oder einer Aktualisierung). In mindestens einer Ausführungsform können als Ergebnis der Trainingspipelines 6504 Ausgabemodell(e) 6416 erzeugt werden. In mindestens einer Ausführungsform können die Trainingspipelines 6504 eine beliebige Anzahl von Verarbeitungsschritten beinhalten, zum Beispiel, aber nicht beschränkt auf, die Konvertierung oder Anpassung von Bildgebungsdaten (oder anderen Eingabedaten) (z. B. unter Verwendung eines DICOM-Adapters 6502A 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 6410, Beschriftung oder Annotation von Bildgebungsdaten 6408, um beschriftete Klinikdaten 6412 zu erzeugen, Modellauswahl aus einer Modellregistrierungsdatenbank, Modelltraining 6414, Training, erneutes Training oder Aktualisieren von Modellen und/oder andere Verarbeitungsschritte. In mindestens einer Ausführungsform können für unterschiedliche Modelle des maschinellen Lernens, die durch das Einsatzsystem 6406 verwendet werden, unterschiedliche Trainingspipelines 6504 verwendet werden. In mindestens einer Ausführungsform kann für ein erstes Modell des maschinellen Lernens eine Trainingspipeline 6504 verwendet werden, die einem ersten Beispiel ähnlich ist, das in Bezug auf 64 beschrieben ist, für ein zweites Modell des maschinellen Lernens eine Trainingspipeline 6504 verwendet werden, die einem zweiten Beispiel ähnlich ist, das in Bezug auf 64 beschrieben ist, und für ein drittes Modell des maschinelles Lernens eine Trainingspipeline 6504 verwendet werden, die einem dritten Beispiel ähnlich ist, das in Bezug auf 64 beschrieben ist. In mindestens einer Ausführungsform kann eine beliebige Kombination von Tasks innerhalb des Trainingssystems 6404 verwendet werden, in Abhängigkeit davon, was für jedes jeweilige Modell des maschinellen Lernens erforderlich ist. In mindestens einer Ausführungsform können eines oder mehrere der Modelle des maschinellen Lernens bereits trainiert und einsatzbereit sein, sodass die Modelle des maschinellen Lernens möglicherweise keiner Verarbeitung durch das Trainingssystem 6404 unterzogen werden und durch das Einsatzsystem 6406 implementiert werden können.
  • In mindestens einer Ausführungsform können die Ausgabemodell(e) 6416 und/oder die vorab trainierte(n) Modell(e) 6506 in Abhängigkeit von der Implementation oder Ausführungsform beliebige Typen von Modellen des maschinellen Lernens beinhalten. In mindestens einer Ausführungsform und ohne Einschränkung können durch das System 6500 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 Netzen (z. B. Autocodierern, faltenden, rekurrenten, Perzeptronen, langem Kurzzeitgedächtnis (Long/Short Term Memory - LSTM), Hopfield, Boltzmann, Deep Belief, entfaltenden, erzeugenden gegnerischen, Flüssigkeitszustandsmaschine usw.) und/oder andere Typen von Modellen des maschinellen Lernens beinhalten.
  • In mindestens einer Ausführungsform können die Trainingspipelines 6504 Klgestützte Annotation beinhalten, wie hierin in Bezug auf mindestens 68B detaillierter beschrieben. In mindestens einer Ausführungsform können beschriftete Klinikdaten 6412 (z. B. herkömmliche Annotation) durch eine beliebige Anzahl von Techniken erzeugt werden. In mindestens einer Ausführungsform können Beschriftungen oder andere Annotationen innerhalb eines Zeichenprogramms (z. B. eines Annotationsprogramms), eines Programms zur computergestützten Konstruktion (computer aided design - CAD), eines Beschriftungsprogramms, eines anderen Typs von Programm, das zum Erzeugen von Annotationen oder Beschriftungen für Ground Truth geeignet ist, erzeugt werden und/oder in einigen Beispielen von Hand gezeichnet werden. In mindestens einer Ausführungsform können die Ground-Truth-Daten synthetisch produziert (z. B. aus Computermodellen oder Renderings erzeugt), real produziert (z. B. aus Daten der realen Welt ausgestaltet und produziert), maschinell automatisiert (z. B. unter Verwendung von Merkmalsanalyse und Lernen, um Merkmale aus Daten zu extrahieren und dann Beschriftungen zu erzeugen), von Menschen annotiert (z. B. definiert ein Beschrifter oder Annotationsexperte die Stelle von Beschriftungen) und/oder eine Kombination davon sein. In mindestens einer Ausführungsform können für jede Instanz der Bildgebungsdaten 6408 (oder eines anderen Datentyps, der durch Modelle des maschinellen Lernens verwendet wird) entsprechende Ground-Truth-Daten vorhanden sein, die durch das Trainingssystem 6404 erzeugt werden. In mindestens einer Ausführungsform kann die KI-gestützte Annotation als Teil der Einsatzpipelines 6510 durchgeführt werden; entweder zusätzlich zu oder anstelle der Kl-gestützten Annotation, die in den Trainingspipelines 6504 enthalten ist. In mindestens einer Ausführungsform kann das System 6500 eine mehrschichtige Plattform beinhalten, die eine Software-Schicht (z. B. Software 6418) von Diagnoseanwendungen (oder anderen Anwendungstypen) beinhalten kann, die eine oder mehrere medizinische Bildgebungs- und Diagnosefunktionen durchführen kann. In mindestens einer Ausführungsform kann das System 6500 kommunikativ an (z. B. über verschlüsselte Verknüpfungen) PACS-Servernetze einer oder mehrerer Einrichtungen gekoppelt sein. In mindestens einer Ausführungsform kann das System 6500 so konfiguriert sein, dass es auf Daten (z. B. DICOM-Daten, RIS-Daten, Rohdaten, CIS-Daten, REST-konforme Daten, RPC-Daten, Rohdaten usw.) von PACS-Servern zugreift und diese referenziert (z. B. über einen DICOM-Adapter 6502 oder einen Adapter für einen anderen Datentyp, wie etwa RIS, CIS, REST-konform, RPC, Rohdaten usw.), um Operationen durchzuführen, wie etwa Trainieren von Modellen des maschinellen Lernens, Einsetzen von Modellen des maschinellen Lernens, Bildverarbeitung, Inferenzieren und/oder andere Operationen.
  • In mindestens einer Ausführungsform kann eine Software-Schicht als sichere, verschlüsselte und/oder authentifizierte API implementiert sein, durch die Anwendungen oder Container aus einer externen Umgebung(en) (z. B. Einrichtung 6402) ausgewählt (z. B. aufgerufen) werden können. In mindestens einer Ausführungsform können Anwendungen dann einen oder mehrere Dienste 6420 aufrufen oder ausführen, um Rechen-, Kl- oder Visualisierungs-Tasks durchzuführen, die mit jeweiligen Anwendungen assoziiert sind, und die Software 6418 und/oder die Dienste 6420 können die Hardware 6422 ausnutzen, um Verarbeitungs-Tasks auf effektive und effiziente Weise durchzuführen.
  • In mindestens einer Ausführungsform kann das Einsatzsystem 6406 Einsatzpipelines 6510 ausführen. In mindestens einer Ausführungsform können Einsatzpipelines 6510 eine beliebige Anzahl von Anwendungen beinhalten, die sequenziell, nicht sequenziell oder auf andere Weise auf Bildgebungsdaten (und/oder andere Datentypen) angewendet werden können, die durch Bildgebungsvorrichtungen, Sequenzierungsvorrichtungen, Genomikvorrichtungen usw. erzeugt werden - einschließlich Kl-gestützter Annotation, wie vorstehend beschrieben. In mindestens einer Ausführungsform, wie hierin beschrieben, kann eine Einsatzpipeline 6510 für eine einzelne Vorrichtung als virtuelles Instrument für eine Vorrichtung bezeichnet werden (z. B. ein virtuelles Ultraschallinstrument, ein virtuelles CT-Scan-Instrument, ein virtuelles Sequenzierungsinstrument usw.). In mindestens einer Ausführungsform kann für eine einzelne Vorrichtung in Abhängigkeit von Informationen, die von Daten gewünscht sind, die durch eine Vorrichtung erzeugt wurden, mehr als eine Einsatzpipeline 6510 vorhanden sein. Wenn Detektionen von Anomalien anhand einer MRT-Maschine gewünscht sind, kann in mindestens einer Ausführungsform eine erste Einsatzpipeline 6510 vorhanden sein, und wenn Bildverbesserung anhand einer Ausgabe einer MRT-Maschine gewünscht ist, kann eine zweite Einsatzpipeline 6510 vorhanden sein.
  • In mindestens einer Ausführungsform können für die Einsatzpipelines 6510 verfügbare Anwendungen eine beliebige Anwendung beinhalten, die zum Durchführen von Verarbeitungs-Tasks an Bildgebungsdaten oder anderen Daten von Vorrichtungen verwendet werden kann. In mindestens einer Ausführungsform können unterschiedliche Anwendungen für die Bildverbesserung, Segmentierung, Rekonstruktion, Anomaliedetektion, Objektdetektion, Merkmalsdetektion, Behandlungsplanung, Dosimetrie, Strahlenplanung (oder andere Strahlenbehandlungsprozeduren) und/oder andere Analyse-, Bildverarbeitungs- oder Inferenz-Tasks zuständig sein. In mindestens einer Ausführungsform kann das Einsatzsystem 6406 Konstrukte für jede der Anwendungen definieren, sodass die Benutzer des Einsatzsystems 6406 (z. B. medizinische Einrichtungen, Labors, Kliniken usw.) die Konstrukte verstehen und die Anwendungen für die Implementation innerhalb ihrer jeweiligen Einrichtung anpassen können. In mindestens einer Ausführungsform kann eine Anwendung zur Bildrekonstruktion für die Aufnahme in die Einsatzpipeline 6510 ausgewählt werden, doch der durch eine Bildgebungsvorrichtung erzeugte Datentyp kann sich von einem innerhalb einer Anwendung verwendeten Datentyp unterscheiden. In mindestens einer Ausführungsform kann der DICOM-Adapter 6502B (und/oder ein DICOM-Lesegerät) oder ein Adapter oder ein Lesegerät für einen anderen Datentyp (z. B. RIS, CIS, REST-konform, RPC, Rohdaten usw.) innerhalb der Einsatzpipeline 6510 verwendet werden, um Daten in eine Form zu konvertieren, die durch eine Anwendung innerhalb des Einsatzsystems 6406 verwendet werden kann. In 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 Durchführens von Faltungen, Farbkorrekturen, Schärfe-, Gamma- und/oder anderen Erweiterungen der Daten. In 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 in mindestens einer Ausführungsform Bildoperationen gemeinsam nutzen können, kann in einigen Ausführungsformen eine Datenerweiterungsbibliothek (z. B. als einer der Dienste 6420) verwendet werden, um diese Operationen zu beschleunigen. In mindestens einer Ausführungsform kann zur Vermeidung von Engpässen herkömmlicher Verarbeitungsansätze, die sich auf CPU-Verarbeitung stützen, die Parallelrechenplattform 6530 zur GPU-Beschleunigung dieser Verarbeitungs-Tasks verwendet werden.
  • In mindestens einer Ausführungsform kann eine Bildrekonstruktionsanwendung einen Verarbeitungs-Task beinhalten, der die Verwendung eines Modells des maschinellen Lernens beinhaltet. In mindestens einer Ausführungsform kann ein Benutzer ein eigenes Modell des maschinellen Lernens verwenden wollen oder ein Modell des maschinellen Lernens aus der Modellregistrierungsdatenbank 6424 auswählen wollen. In mindestens einer Ausführungsform kann ein Benutzer ein eigenes Modell des maschinellen Lernens implementieren oder ein Modell des maschinellen Lernens zur Aufnahme in eine Anwendung zum Durchführen eines Verarbeitungs-Tasks auswählen. In 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. In mindestens einer Ausführungsform können Einsatzpipelines 6510 durch Ausnutzen anderer Merkmale des Systems 6500 -wie etwa der Dienste 6420 und der Hardware 6422 - noch benutzerfreundlicher sein, eine einfachere Integration bereitstellen und genauere, effizientere und raschere Ergebnisse produzieren.
  • In mindestens einer Ausführungsform kann das Einsatzsystem 6406 eine Benutzerschnittstelle 6514 (z. B. eine grafische Benutzerschnittstelle, eine Webschnittstelle usw.) beinhalten, die verwendet werden kann, um Anwendungen für die Aufnahme in die Einsatzpipeline(s) 6510 auszuwählen, Anwendungen anzuordnen, Anwendungen oder Parameter oder Konstrukte davon zu modifizieren oder zu ändern, die Einsatzpipeline(s) 6510 während des Setups und/oder des Einsatzes zu verwenden und damit zu interagieren und/oder anderweitig mit dem Einsatzsystem 6406 zu interagieren. In mindestens einer Ausführungsform, obwohl nicht in Bezug auf das Trainingssystem 6404 veranschaulicht, kann die Benutzerschnittstelle 6514 (oder eine andere Benutzerschnittstelle) zum Auswählen von Modellen für die Verwendung in dem Einsatzsystem 6406, zum Auswählen von Modellen für das Training oder das erneute Training in dem Trainingssystem 6404 und/oder zum anderweitigen Interagieren mit dem Trainingssystem 6404 verwendet werden.
  • In mindestens einer Ausführungsform kann der Pipelineverwalter 6512 zusätzlich zu einem Anwendungsorchestrierungssystem 6528 verwendet werden, um die Interaktion zwischen den Anwendungen oder Containern der Einsatzpipeline(s) 6510 und den Diensten 6420 und/oder der Hardware 6422 zu verwalten. In mindestens einer Ausführungsform kann der Pipelineverwalter 6512 so konfiguriert sein, dass er Interaktionen von Anwendung zu Anwendung, von Anwendung zu Dienst 6420 und/oder von Anwendung oder Dienst zu Hardware 6422 erleichtert. Obwohl er der Veranschaulichung nach in der Software 6418 enthalten ist, soll dies in mindestens einer Ausführungsform nicht einschränkend sein und in einigen Beispielen (wie z. B. in 66 veranschaulicht) kann der Pipelineverwalter 6512 in den Diensten 6420 enthalten sein. In mindestens einer Ausführungsform kann das Anwendungsorchestrierungssystem 6528 (z. B. Kubernetes, DOCKER usw.) ein Container-Orchestrierungssystem beinhalten, das Anwendungen zu Containern als logische Einheiten zur Koordination, Verwaltung, Skalierung und zum Einsatz gruppieren kann. In mindestens einer Ausführungsform kann durch das Assoziieren von Anwendungen aus den Einsatzpipeline(s) 6510 (z. B. einer Rekonstruktionsanwendung, einer Segmentierungsanwendung usw.) mit einzelnen Containern jede Anwendung in einer in sich geschlossenen Umgebung (z. B. auf Kernel-Level) ausgeführt werden, um die Geschwindigkeit und Effizienz zu erhöhen.
  • In mindestens einer Ausführungsform kann jede Anwendung und/oder jeder Container (oder ein Abbild davon) 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 durch Tasks einer anderen Anwendung(en) oder eines anderen Container(n) behindert zu werden. In mindestens einer Ausführungsform kann die Kommunikation und Kooperation zwischen unterschiedlichen Containern oder Anwendungen durch den Pipelineverwalter 6512 und das Anwendungsorchestrierungssystem 6528 unterstützt werden. In mindestens einer Ausführungsform kann, solange eine erwartete Eingabe und/oder Ausgabe jedes Containers oder jeder Anwendung einem System bekannt ist (z. B. auf Grundlage von Konstrukten von Anwendungen oder Containern), das Anwendungsorchestrierungssystem 6528 und/oder der Pipelineverwalter 6512 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 Einsatzpipeline(s) 6510 gleiche Dienste und Ressourcen gemeinsam nutzen können, kann das Anwendungsorchestrierungssystem 6528 in mindestens einer Ausführungsform die gemeinsame Nutzung von Diensten oder Ressourcen zwischen und unter verschiedenen Anwendungen oder Containern orchestrieren, deren Last verteilen und bestimmen. In mindestens einer Ausführungsform kann ein Planer verwendet werden, um den Ressourcenbedarf von Anwendungen oder Containern, die derzeitige Nutzung oder geplante Nutzung dieser Ressourcen und die Ressourcenverfügbarkeit zu verfolgen. In mindestens einer Ausführungsform kann ein Planer somit Ressourcen unterschiedlichen Anwendungen zuweisen und Ressourcen zwischen und unter Anwendungen im Hinblick auf Bedarf und Verfügbarkeit eines Systems verteilen. In einigen Beispielen kann ein Planer (und/oder eine andere Komponente des Anwendungsorchestrierungssystems 6528) die Ressourcenverfügbarkeit und -verteilung auf Grundlage von Beschränkungen bestimmen, die einem System auferlegt werden (z. B. Benutzerbeschränkungen), wie etwa Dienstgüte (QoS), Dringlichkeit des Bedarfs an Datenausgaben (um z. B. zu bestimmen, ob Echtzeitverarbeitung oder verzögerte Verarbeitung ausgeführt werden soll) usw.
  • In mindestens einer Ausführungsform können die Dienste 6420, die durch Anwendungen oder Container in dem Einsatzsystem 6406 ausgenutzt und gemeinsam genutzt werden, Rechendienste 6516, KI-Dienste 6518, Visualisierungsdienste 6520 und/oder andere Diensttypen beinhalten. In mindestens einer Ausführungsform können Anwendungen einen oder mehrere der Dienste 6420 aufrufen (z. B. ausführen), um Verarbeitungsoperationen für eine Anwendung durchzuführen. In mindestens einer Ausführungsform können die Rechendienste 6516 durch Anwendungen ausgenutzt werden, um Superrechnen oder andere Tasks des Hochleistungsrechnens (HPC) durchzuführen. In mindestens einer Ausführungsform können die Rechendienst(e) 6516 ausgenutzt werden, um Parallelverarbeitung (z. B. unter Verwendung einer Parallelrechenplattform 6530) zum Verarbeiten von Daten durch eine oder mehrere Anwendungen und/oder einen oder mehrere Tasks einer einzelnen Anwendung im Wesentlichen simultan durchzuführen. In mindestens einer Ausführungsform kann die Parallelrechenplattform 6530 (z. B. CUDA von NVIDIA) Universaldatenverarbeitung auf GPUs (GPGPU) ermöglichen (z. B. GPUs 6522). In mindestens einer Ausführungsform kann eine Software-Schicht der Parallelrechenplattform 6530 Zugriff auf virtuelle Anweisungssätze und Parallelberechnungselemente von GPUs zur Ausführung von Rechenkernels bereitstellen. In mindestens einer Ausführungsform kann die Parallelrechenplattform 6530 Speicher beinhalten und in einigen Ausführungsformen kann ein Speicher zwischen und unter mehreren Containern und/oder zwischen und unter unterschiedlichen Verarbeitungs-Tasks innerhalb eines einzelnen Containers gemeinsam genutzt werden. In mindestens einer Ausführungsform können Aufrufe für Interprozesskommunikation (inter-process communication - IPC) für mehrere Container und/oder für mehrere Prozesse innerhalb eines Containers erzeugt werden, um gleiche Daten aus einem gemeinsam genutzten Speichersegment der Parallelrechenplattform 6530 zu verwenden (z. B., wenn mehrere unterschiedliche Stufen einer Anwendung oder mehrere Anwendungen gleiche Informationen verarbeiten). In mindestens einer Ausführungsform können gleiche Daten an einem gleichem Speicherort für eine beliebige Anzahl von Verarbeitungs-Tasks verwendet werden (z. B. zur gleichen Zeit, zu unterschiedlichen Zeiten usw.), anstatt eine Kopie der Daten zu erstellen und die Daten an unterschiedliche Orte in dem Speicher zu verschieben (z. B. eine Lese-/Schreiboperation). In mindestens einer Ausführungsform können, da Daten verwendet werden, um neue Daten als Ergebnis der Verarbeitung zu erzeugen, diese Informationen über einen neuen Ort von Daten gespeichert und von verschiedenen Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform können ein Ort von Daten und ein Ort von aktualisierten oder modifizierten Daten Teil einer Definition sein, wie Nutzdaten innerhalb von Containern zu verstehen sind.
  • In mindestens einer Ausführungsform können die KI-Dienste 6518 ausgenutzt werden, um Inferenzdienste zum Ausführen von Modell(en) des maschinellen Lernens durchzuführen, die mit Anwendungen assoziiert sind (z. B. mit dem Durchführen eines oder mehrerer Verarbeitungs-Tasks einer Anwendung beauftragt). In mindestens einer Ausführungsform können die KI-Dienste 6518 das KI-System 6524 ausnutzen, um Modell(e) des maschinellen Lernens (z. B. neuronale Netze wie etwa CNNs) für Segmentierung, Rekonstruktion, Objektdetektion, Merkmalsdetektion, Klassifizierung und/oder andere Inferenz-Tasks auszuführen. In mindestens einer Ausführungsform können die Anwendungen der Einsatzpipeline(s) 6510 eines oder mehrere der Ausgabemodelle 6416 aus dem Trainingssystem 6404 und/oder andere Modelle der Anwendungen verwenden, um Inferenz an Bildgebungsdaten (z. B. DICOM-Daten, RIS-Daten, CIS-Daten, REST-konformen Daten, RPC-Daten, Rohdaten usw.) durchzuführen. In mindestens einer Ausführungsform können zwei oder mehr Beispiele für das Inferenzieren unter Verwendung des Anwendungsorchestrierungssystems 6528 (z. B. eines Planers) verfügbar sein. In mindestens einer Ausführungsform kann eine erste Kategorie einen Pfad mit hoher Priorität/geringer Latenz beinhalten, der höhere Service Level Agreements erreichen kann, wie etwa zum Durchführen von Inferenz an dringenden Anforderungen während eines Notfalls oder für einen Radiologen während der Diagnose. In mindestens einer Ausführungsform kann eine zweite Kategorie einen Pfad mit Standardpriorität beinhalten, der für Anforderungen verwendet werden kann, die nicht dringend sind oder bei denen die Analyse zu einem späteren Zeitpunkt durchgeführt werden kann. In mindestens einer Ausführungsform kann das Anwendungsorchestrierungssystem 6528 Ressourcen (z. B. Dienste 6420 und/oder Hardware 6422) auf Grundlage von Prioritätspfaden für unterschiedliche Inferenz-Tasks der KI-Dienste 6518 verteilen.
  • In mindestens einer Ausführungsform kann der gemeinsam genutzte Datenspeicher mit den KI-Diensten 6518 innerhalb des Systems 6500 verbunden sein. In mindestens einer Ausführungsform kann der gemeinsam genutzte Datenspeicher als Cache (oder anderer Speichervorrichtungstyp) arbeiten und zum Verarbeiten von Inferenzanforderungen von Anwendungen verwendet werden. In mindestens einer Ausführungsform kann, wenn eine Inferenzanforderung abgesendet wird, eine Anforderung durch einen Satz von API-Instanzen des Einsatzsystems 6406 empfangen werden und eine oder mehrere Instanzen können ausgewählt werden (z. B. für beste Anpassung, für Lastverteilung usw.), um eine Anforderung zu verarbeiten. In mindestens einer Ausführungsform kann zum Verarbeiten einer Anforderung eine Anforderung in eine Datenbank eingegeben werden, ein Modell des maschinellen Lernens kann aus der Modellregistrierungsdatenbank 6424 lokalisiert werden, falls es sich nicht bereits in einem Cache befindet, ein Validierungsschritt kann sicherstellen, dass ein zweckmäßiges Modell des maschinellen Lernens in einen Cache (z. B. einen gemeinsam genutzten Datenspeicher) geladen wird, und/oder eine Kopie eines Modells kann in einem Cache gesichert werden. In mindestens einer Ausführungsform kann ein Planer (z. B. des Pipelineverwalters 6512) verwendet werden, um eine Anwendung zu starten, auf die in einer Anforderung verwiesen wird, falls eine Anwendung nicht bereits läuft oder falls nicht genügend Instanzen einer Anwendung vorhanden sind. In mindestens einer Ausführungsform kann ein Inferenzserver gestartet werden, falls ein Inferenzserver zum Ausführen eines Modells nicht bereits gestartet ist. In mindestens einer Ausführungsform kann pro Modell eine beliebige Anzahl von Inferenzservern gestartet werden. In mindestens einer Ausführungsform können in einem Pull-Modell, in dem Inferenzserver geclustert sind, Modelle zwischengespeichert werden, wann immer eine Lastverteilung vorteilhaft ist. In mindestens einer Ausführungsform können Inferenzserver statisch in entsprechende, verteilte Server geladen werden.
  • In mindestens einer Ausführungsform kann das Inferenzieren unter Verwendung eines Inferenzservers durchgeführt werden, der in einem Container läuft. In mindestens einer Ausführungsform kann eine Instanz eines Inferenzservers mit einem Modell (und optional einer Vielzahl von Versionen eines Modells) assoziiert sein. In mindestens einer Ausführungsform kann, falls eine Instanz eines Inferenzservers nicht existiert, wenn eine Anforderung zum Durchführen einer Inferenz an einem Modell empfangen wird, eine neue Instanz geladen werden. In mindestens einer Ausführungsform kann beim Starten eines Inferenzservers ein Modell an einen Inferenzserver übergeben werden, sodass der gleiche Container zum Bedienen unterschiedlicher Modelle verwendet werden kann, solange der Inferenzserver als andere Instanz läuft.
  • In mindestens einer Ausführungsform kann während der Anwendungsausführung eine Inferenzanforderung für eine gegebene Anwendung empfangen werden und ein Container (der z. B. eine Instanz eines Inferenzservers hostet) geladen werden (falls nicht bereits geschehen) und eine Startprozedur aufgerufen werden. In mindestens einer Ausführungsform kann Vorverarbeitungslogik in einem Container eingehende Daten laden, decodieren und/oder beliebige zusätzliche Vorverarbeitung an diesen durchführen (z. B. unter Verwendung von CPU(s) und/oder GPU(s)). In mindestens einer Ausführungsform kann ein Container, sobald die Daten für die Inferenz vorbereitet sind, die Inferenz nach Bedarf an den Daten durchführen. In mindestens einer Ausführungsform kann dies einen einzelnen Inferenzaufruf an einem Bild (z. B. einem Handröntgenbild) beinhalten oder eine Inferenz an Hunderten von Bildern (z. B. einem Brust-CT) erfordern. In mindestens einer Ausführungsform kann eine Anwendung Ergebnisse vor dem Abschluss zusammenfassen, was ohne Einschränkung eine einzelne Konfidenzbewertung, eine Segmentierung auf Pixellevel, eine Segmentierung auf Voxellevel, das Erzeugen einer Visualisierung oder das Erzeugen von Text zum Zusammenfassen von Befunden beinhalten kann. In mindestens einer Ausführungsform können unterschiedlichen Modellen oder Anwendungen unterschiedliche Prioritäten zugeordnet werden. Zum Beispiel können einige Modelle eine Echtzeitpriorität (TAT weniger als eine Minute) aufweisen, während andere eine niedrigere Priorität aufweisen können (z. B. TAT weniger als 10 Minuten). In mindestens einer Ausführungsform können die Modellausführungszeiten von der anfordernden Institution oder Entität gemessen werden und die Zeit für die Traversierung des Partnernetzes sowie die Ausführung auf einem Inferenzdienst beinhalten.
  • In mindestens einer Ausführungsform kann die Übermittlung von Anforderungen zwischen den Diensten 6420 und den Inferenzanwendungen hinter einem Software-Entwicklungskit (SDK) verborgen sein und der robuste Transport durch eine Warteschlange bereitgestellt sein. In mindestens einer Ausführungsform wird eine Anforderung über eine API für eine einzelne Anwendungs-/Tenant-ID-Kombination in einer Warteschlange platziert und ein SDK entnimmt eine Anforderung aus einer Warteschlange und gibt eine Anforderung einer Anwendung. In mindestens einer Ausführungsform kann ein Name einer Warteschlange in einer Umgebung bereitgestellt sein, aus der ein SDK diesen aufnimmt. In mindestens einer Ausführungsform kann die asynchrone Kommunikation durch eine Warteschlange nützlich sein, da sie es einer beliebigen Instanz einer Anwendung ermöglichen kann, die Arbeit aufzunehmen, sobald sie verfügbar wird. In mindestens einer Ausführungsform können die Ergebnisse durch eine Warteschlange zurück übermittelt werden, um sicherzustellen, dass keine Daten verloren gehen. In mindestens einer Ausführungsform können Warteschlangen auch eine Fähigkeit bereitstellen, Arbeit zu segmentieren, da Arbeit mit höchster Priorität an eine Warteschlange gehen kann, mit der die meisten Instanzen einer Anwendung verbunden sind, während Arbeit mit niedrigster Priorität an eine Warteschlange gehen kann, mit der nur eine einzelne Instanz verbunden ist, die Tasks in einer Reihenfolge verarbeitet, in der sie empfangen werden. In mindestens einer Ausführungsform kann eine Anwendung auf einer GPUbeschleunigten Instanz laufen, die in der Cloud 6526 erzeugt wurde, und ein Inferenzdienst kann das Inferenzieren auf einer GPU durchführen.
  • In mindestens einer Ausführungsform können die Visualisierungsdienste 6520 ausgenutzt werden, um Visualisierungen zur Ansicht von Ausgaben von Anwendungen und/oder Einsatzpipeline(s) 6510 zu erzeugen. In mindestens einer Ausführungsform können die GPUs 6522 durch die Visualisierungsdienste 6520 ausgenutzt werden, um Visualisierungen zu erzeugen. In mindestens einer Ausführungsform können Rendering-Effekte, wie etwa Strahlverfolgung, durch die Visualisierungsdienste 6520 implementiert werden, um Visualisierungen mit höherer Qualität zu erzeugen. In mindestens einer Ausführungsform können Visualisierungen ohne Einschränkung 2D-Bild-Renderings, 3D-Volumen-Renderings, 3D-Volumenrekonstruktionen, 2D-Tomografieschnitte, Virtual-Reality-Anzeigen, Augmented-Reality-Anzeigen usw. beinhalten. In mindestens einer Ausführungsform können virtualisierte Umgebungen verwendet werden, um eine virtuelle interaktive Anzeige oder Umgebung (z. B. eine virtuelle Umgebung) für die Interaktion durch Benutzer eines Systems (z. B. Ärzte, Pfleger, Radiologen usw.) zu erzeugen. In mindestens einer Ausführungsform können die Visualisierungsdienste 6520 einen internen Visualizer, Kinematik und/oder andere Rendering- oder Bildverarbeitungsfähigkeiten oder -funktionen (z. B. Strahlverfolgung, Rasterung, interne Optik usw.) beinhalten.
  • In mindestens einer Ausführungsform kann die Hardware 6422 GPUs 6522, das Kl-System 6524, die Cloud 6526 und/oder beliebige andere Hardware beinhalten, die zum Ausführen des Trainingssystems 6404 und/oder des Einsatzsystems 6406 verwendet wird. In mindestens einer Ausführungsform können die GPUs 6522 (z. B. TESLA- und/oder QUADRO-GPUs von NVIDIA) eine beliebige Anzahl von GPUs beinhalten, die zum Ausführen von Verarbeitungs-Tasks von Rechendiensten 6516, KI-Diensten 6518, Visualisierungsdiensten 6520, anderen Diensten und/oder beliebigen von Merkmalen oder Funktionen der Software 6418 verwendet werden können. In Bezug auf die KI-Dienste 6518 können die GPUs 6522 zum Beispiel zum Durchführen von Vorverarbeitung an Bildgebungsdaten (oder anderen Datentypen, die durch Modelle des maschinellen Lernens verwendet werden), Nachverarbeitung an Ausgaben der Modelle des maschinellen Lernens und/oder zum Durchführen von Inferenzieren (z. B. zum Ausführen von Modellen des maschinellen Lernens) verwendet werden. In mindestens einer Ausführungsform können die Cloud 6526, das KI-System 6524 und/oder andere Komponenten des Systems 6500 die GPUs 6522 verwenden. In mindestens einer Ausführungsform kann die Cloud 6526 eine GPU-optimierte Plattform für Deep-Learning-Tasks beinhalten. In mindestens einer Ausführungsform kann das KI-System 6524 GPUs verwenden und die Cloud 6526 - oder mindestens ein Abschnitt, der mit Deep Learning oder Inferenzieren beauftragt ist - kann unter Verwendung eines oder mehrerer KI-Systeme 6524 ausgeführt werden. Obwohl es sich bei der Hardware 6422 der Veranschaulichung nach um diskrete Komponenten handelt, soll dies demnach nicht einschränkend sein und beliebige Komponenten der Hardware 6422 können mit beliebigen anderen Komponenten der Hardware 6422 kombiniert oder durch diese ausgenutzt werden.
  • In mindestens einer Ausführungsform kann das KI-System 6524 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. In mindestens einer Ausführungsform kann das KI-System 6524 (z. B. DGX von NVIDIA) GPU-optimierte Software (z. B. einen Software-Stapel) beinhalten, die unter Verwendung einer Vielzahl von GPUs 6522 zusätzlich zu CPUs, RAM, Datenspeicher und/oder anderen Komponenten, Merkmalen oder Funktionen ausgeführt werden kann. In mindestens einer Ausführungsform können ein oder mehrere KI-Systeme 6524 in der Cloud 6526 (z. B. in einem Rechenzentrum) implementiert sein, um einige oder alle der KI-basierten Verarbeitungs-Tasks des Systems 6500 durchzuführen.
  • In mindestens einer Ausführungsform kann die Cloud 6526 eine GPUbeschleunigte Infrastruktur (z. B. NGC von NVIDIA) beinhalten, die eine GPU-optimierte Plattform zum Ausführen von Verarbeitungs-Tasks des Systems 6500 bereitstellen kann. In mindestens einer Ausführungsform kann die Cloud 6526 ein Kl-System(e) 6524 zum Durchführen eines oder mehrerer KI-basierter Tasks des Systems 6500 beinhalten (z. B. als Hardware-Abstraktions- und -Skalierungsplattform). In mindestens einer Ausführungsform kann die Cloud 6526 in das Anwendungsorchestrierungssystem 6528 integriert sein, das mehrere GPUs ausnutzt, um eine nahtlose Skalierung und Lastverteilung zwischen und unter den Anwendungen und Diensten 6420 zu ermöglichen. In mindestens einer Ausführungsform kann die Cloud 6526 damit beauftragt sein, mindestens einige der Dienste 6420 des Systems 6500 auszuführen, einschließlich der Rechendienste 6516, der KI-Dienste 6518 und/oder der Visualisierungsdienste 6520, wie hierin beschrieben. In mindestens einer Ausführungsform kann die Cloud 6526 Inferenz mit kleinen und großen Batches durchführen (z. B. unter Ausführung von TENSOR RT von NVIDIA), eine beschleunigte Parallelrechen-API und -Plattform 6530 bereitstellen (z. B. CUDA von NVIDIA), ein Anwendungsorchestrierungssystem 6528 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 6500 bereitstellen.
  • In mindestens einer Ausführungsform kann die Cloud 6526 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 beinhalten - wie etwa eine Deep-Learning-Containerregistrierungsdatenbank. In mindestens einer Ausführungsform kann eine Registrierungsdatenbank Container für Instanziierungen von Anwendungen speichern, die Vorverarbeitungs-, Nachverarbeitungs- oder andere Verarbeitungs-Tasks an Patientendaten durchführen können. In mindestens einer Ausführungsform kann die Cloud 6526 Daten empfangen, die Patientendaten sowie Sensordaten in Containern beinhalten, die angeforderte Verarbeitung nur für die Sensordaten in diesen Containern durchfü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 anderweitig darauf zugegriffen werden muss. In mindestens einer Ausführungsform wird die Vertraulichkeit der Patientendaten in Übereinstimmung mit HIPAA- und/oder anderen Datenvorschriften gewahrt.
  • 66 beinhaltet eine beispielhafte Veranschaulichung einer Einsatzpipeline 6510A zum Verarbeiten von Bildgebungsdaten gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das System 6500 - und insbesondere das Einsatzsystem 6406 - verwendet werden, um die Einsatzpipeline(s) 6510A individuell anzupassen, zu aktualisieren und/oder in eine oder mehrere Produktionsumgebungen zu integrieren. In mindestens einer Ausführungsform beinhaltet die Einsatzpipeline 6510A aus 66 ein nicht einschränkendes Beispiel für eine Einsatzpipeline 6510A, die durch einen konkreten Benutzer (oder ein Team von Benutzern) in einer Einrichtung (z. B. in einem Krankenhaus, einer Klinik, einem Labor, einer Forschungsumgebung usw.) individuell definiert sein kann. In mindestens einer Ausführungsform kann ein Benutzer zum Definieren von Einsatzpipelines 6510A für einen CT-Scanner 6602 - zum Beispiel aus einer Containerregistrierungsdatenbank - eine oder mehrere Anwendungen auswählen, die spezifische Funktionen oder Tasks in Bezug auf die durch den CT-Scanner 6602 erzeugten Bildgebungsdaten durchführen. In mindestens einer Ausführungsform können Anwendungen auf die Einsatzpipeline 6510A als Container angewendet werden, die die Dienste 6420 und/oder Hardware 6422 des Systems 6500 ausnutzen können. Darüber hinaus kann die Einsatzpipeline 6510A zusätzliche Verarbeitungs-Tasks oder Anwendungen beinhalten, die implementiert werden können, um Daten für die Verwendung durch Anwendungen vorzubereiten (z. B. können der DICOM-Adapter 6502B und ein DICOM-Lesegerät 6606 in der Einsatzpipeline 6510A verwendet werden, um Daten für die Verwendung durch eine CT-Rekonstruktion 6608, eine Organsegmentierung 6610 usw. vorzubereiten). In mindestens einer Ausführungsform kann die Einsatzpipeline 6510A für einen konsistenten Einsatz, eine einmalige Verwendung oder für eine andere Häufigkeit oder ein anderes Intervall individuell angepasst oder ausgewählt werden. In mindestens einer Ausführungsform kann ein Benutzer die CT-Rekonstruktion 6608 und die Organsegmentierung 6610 für mehrere Probanden über ein spezifisches Intervall wünschen und daher die Pipeline 6510A für diesen Zeitraum einsetzen. In mindestens einer Ausführungsform kann ein Benutzer für jede Anforderung von dem System 6500 die Anwendungen auswählen, die ein Benutzer möchte, um Verarbeitung an diesen Daten für diese Anforderung durchzuführen. In mindestens einer Ausführungsform kann die Einsatzpipeline 6510A in einem beliebigen Intervall eingestellt werden und aufgrund der Anpassungsfähigkeit und Skalierbarkeit einer Container-Struktur innerhalb des Systems 6500 kann dies ein nahtloser Prozess sein.
  • In mindestens einer Ausführungsform kann die Einsatzpipeline 6510A aus 66 einen CT-Scanner 6602 zum Erzeugen von Bildgebungsdaten eines Patienten oder Probanden beinhalten. In mindestens einer Ausführungsform können die Bildgebungsdaten des CT-Scanners 6602 auf (einem) PACS-Server(n) 6604 gespeichert werden, die mit einer Einrichtung assoziiert sind, in der sich der CT-Scanner 6602 befindet. In mindestens einer Ausführungsform kann der/können die PACS-Server 6604 Software- und/oder Hardware-Komponenten beinhalten, die mit den Bildgebungsmodalitäten (z. B. dem CT-Scanner 6602) in einer Einrichtung eine direkte Schnittstelle bilden können. In mindestens einer Ausführungsform kann der DICOM-Adapter 6502B das Senden und Empfangen von DICOM-Objekten unter Verwendung von DICOM-Protokollen ermöglichen. In mindestens einer Ausführungsform kann der DICOM-Adapter 6502B bei der Vorbereitung oder Konfiguration von DICOM-Daten von PACS-Server(n) 6604 für die Verwendung durch die Einsatzpipeline 6510A helfen. In mindestens einer Ausführungsform kann der Pipeline-Manager 6512 Daten an die Einsatzpipeline 6502B durchrouten, sobald DICOM-Daten durch den DICOM-Adapter 6510A verarbeitet sind. In mindestens einer Ausführungsform kann das DICOM-Lesegerät 6606 Bilddateien und beliebige damit assoziierte Metadaten aus DICOM-Daten extrahieren (z. B. Sinogramm-Rohdaten, wie in der Visualisierung 6616A veranschaulicht). In mindestens einer Ausführungsform können Arbeitsdateien, die extrahiert werden, in einem Cache gespeichert werden, um eine schnellere Verarbeitung durch andere Anwendungen in der Einsatzpipeline 6510A zu ermöglichen. In mindestens einer Ausführungsform kann, sobald das DICOM-Lesegerät 6606 das Extrahieren und/oder Speichern von Daten beendet hat, ein Abschlusssignal an den Pipelineverwalter 6512 kommuniziert werden. In mindestens einer Ausführungsform kann der Pipelineverwalter 6512 dann eine oder mehrere andere Anwendungen oder Container in der Einsatzpipeline 6510A initiieren oder aufrufen.
  • In mindestens einer Ausführungsform kann die Anwendung und/oder der Container für die CT-Rekonstruktion 6608 ausgeführt werden, sobald Daten (z. B. Sinogramm-Rohdaten) für die Verarbeitung durch die Anwendung CT-Rekonstruktion 6608 verfügbar sind. In mindestens einer Ausführungsform kann die CT-Rekonstruktion 6608 Sinogramm-Rohdaten aus einem Cache lesen, eine Bilddatei aus den Sinogramm-Rohdaten rekonstruieren (wie z. B. in der Visualisierung 6616B veranschaulicht) und die resultierende Bilddatei in einem Cache speichern. In mindestens einer Ausführungsform kann bei Abschluss der Rekonstruktion dem Pipelineverwalter 6512 signalisiert werden, dass der Rekonstruktions-Task abgeschlossen ist. In mindestens einer Ausführungsform kann, sobald die Rekonstruktion abgeschlossen ist und eine rekonstruierte Bilddatei in einem Cache (oder einer anderen Speichervorrichtung) gespeichert werden kann, die Anwendung und/oder der Container für die Organsegmentierung 6610 durch den Pipelineverwalter 6512 ausgelöst werden. In mindestens einer Ausführungsform kann die Anwendung und/oder der Container für die Organsegmentierung 6610 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 6610 in mindestens einer Ausführungsform auf die Dienste 6420 stützen und der Pipelineverwalter 6512 und/oder das Anwendungsorchestrierungssystem 6528 können die Verwendung der Dienste 6420 durch die Anwendung und/oder den Container für die Organsegmentierung 6610 erleichtern. Zum Beispiel kann in mindestens einer Ausführungsform die Anwendung und/oder der Container für die Organsegmentierung 6610 die KI-Dienste 6518 ausnutzen, um Inferenz an einem normalisierten Bild durchzuführen, und die KI-Dienste 6518 können die Hardware 6422 (z. B. das KI-System 6524) ausnutzen, um die KI-Dienste 6518 auszuführen. In mindestens einer Ausführungsform kann ein Ergebnis einer Inferenz eine Maskendatei sein (wie z. B. in der Visualisierung 6616C veranschaulicht), die in einem Cache (oder einer anderen Speichervorrichtung) gespeichert werden kann.
  • In mindestens einer Ausführungsform kann, sobald Anwendungen, die DICOM-Daten und/oder aus DICOM-Daten extrahierte Daten verarbeiten, die Verarbeitung abgeschlossen haben, ein Signal für den Pipelineverwalter 6512 erzeugt werden. In mindestens einer Ausführungsform kann der Pipelineverwalter 6512 dann ein DICOM-Schreibgerät 6612 ausführen, um Ergebnisse aus einem Cache (oder einer anderen Speichervorrichtung) zu lesen und Ergebnisse in ein DICOM-Format (z. B. als DICOM-Ausgabe 6614) zur Verwendung durch Benutzer in einer Einrichtung, die eine Anforderung erzeugten, zu verpacken. In mindestens einer Ausführungsform kann die DICOM-Ausgabe 6614 dann an den DICOM-Adapter 6502B übertragen werden, um die DICOM-Ausgabe 6614 für die Speicherung auf dem/den PACS-Server(n) 6604 vorzubereiten (z. B. für die Ansicht durch einen DICOM-Viewer in einer Einrichtung). In mindestens einer Ausführungsform können als Reaktion auf eine Anforderung zur Rekonstruktion und Segmentierung Visualisierungen 6616B und 6616C erzeugt werden und einem Benutzer für Diagnose-, Forschungs- und/oder andere Zwecke zur Verfügung gestellt werden.
  • Obwohl als konsekutive Anwendung in der Einsatzpipeline 6510A veranschaulicht, können die Anwendungen für die CT-Rekonstruktion 6608 und die Organsegmentierung 6610 in mindestens einer Ausführungsform parallel verarbeitet werden. In mindestens einer Ausführungsform, in der die Anwendungen keine Abhängigkeiten voneinander aufweisen und Daten für jede Anwendung verfügbar sind (z. B., nachdem das DICOM-Lesegerät 6606 Daten extrahiert hat), können Anwendungen gleichzeitig, im Wesentlichen gleichzeitig oder mit einer gewissen Überlappung ausgeführt werden. In mindestens einer Ausführungsform, in der zwei oder mehr Anwendungen ähnliche Dienste 6420 erfordern, kann ein Planer des Systems 6500 zur Lastverteilung und zum Verteilen von Rechen- oder Verarbeitungsressourcen zwischen und unter verschiedenen Anwendungen verwendet werden. In mindestens einer Ausführungsform kann die Parallelrechenplattform 6530 zum Durchführen von Parallelverarbeitung für Anwendungen verwendet werden, um die Laufzeit der Einsatzpipeline 6510A zu verkürzen, um Ergebnisse in Echtzeit bereitzustellen.
  • In mindestens einer Ausführungsform und unter Bezugnahme auf 67A-67B kann das Einsatzsystem 6406 als ein oder mehrere virtuelle Instrumente implementiert werden, um unterschiedliche Funktionalitäten - wie etwa Bildverarbeitung, Segmentierung, Verbesserung, Kl, Visualisierung und Inferenzieren - mit Bildgebungsvorrichtungen (z. B. CT-Scannern, Röntgenmaschinen, MRT-Maschinen usw.), Sequenzierungsvorrichtungen, Genomikvorrichtungen und/oder anderen Vorrichtungstypen durchzuführen. In mindestens einer Ausführungsform kann das System 6500 die Erstellung und Bereitstellung von virtuellen Instrumenten ermöglichen, die eine softwaredefinierte Einsatzpipeline 6510 beinhalten können, die durch eine Vorrichtung(en) erzeugte rohe/unverarbeitete Eingabedaten empfangen und verarbeitete/rekonstruierte Daten ausgeben kann. In mindestens einer Ausführungsform können Einsatzpipelines 6510 (z. B. 6510A und 6510B), die virtuelle Instrumente darstellen, Intelligenz in einer Pipeline implementieren, wie etwa durch Ausnutzen von Modellen des maschinellen Lernens, um einem System containerisierte Inferenzunterstützung bereitzustellen. In mindestens einer Ausführungsform können virtuelle Instrumente eine beliebige Anzahl von Containern ausführen, die jeweils Instanziierungen von Anwendungen beinhalten. In mindestens einer Ausführungsform, wie etwa, wenn Echtzeitverarbeitung gewünscht ist, können Einsatzpipelines 6510, die virtuelle Instrumente darstellen, statisch sein (z. B. können Container und/oder Anwendungen festgelegt sein), während in anderen Beispielen Container und/oder Anwendungen für virtuelle Instrumente aus einem Pool von Anwendungen oder Ressourcen (z. B. innerhalb einer Containerregistrierungsdatenbank k) ausgewählt werden können (z. B. pro Anforderung).
  • In mindestens einer Ausführungsform kann das System 6500 als ein oder mehrere virtuelle Instrumente in den Räumlichkeiten in einer Einrichtung instanziiert oder ausgeführt werden, zum Beispiel in einem Rechensystem, das neben einer Radiologiemaschine, einer Bildgebungsvorrichtung und/oder einem anderen Vorrichtungstyp in einer Einrichtung eingesetzt wird oder anderweitig in Kommunikation damit steht. In mindestens einer Ausführungsform kann jedoch eine Installation in den Räumlichkeiten innerhalb eines Rechensystems einer Vorrichtung selbst (z. B. eines Rechensystems, das einstückig zu einer Bildgebungsvorrichtung ist), in einem lokalen Rechenzentrum (z. B. einem Rechenzentrum in den Räumlichkeiten) und/oder in einer Cloud-Umgebung (z. B. in der Cloud 6526) instanziiert oder ausgeführt werden. In mindestens einer Ausführungsform kann das Einsatzsystem 6406, das als virtuelles Instrument arbeitet, in einigen Beispielen durch einen Supercomputer oder ein anderes HPC-System instanziiert werden. In mindestens einer Ausführungsform kann die Installation in den Räumlichkeiten Verwendungen mit hoher Bandbreite (zum Beispiel über lokale Kommunikationsschnittstellen mit höherem Durchsatz, wie etwa HF über Ethernet) für die Echtzeitverarbeitung ermöglichen. In mindestens einer Ausführungsform kann Verarbeitung in Echtzeit oder nahezu in Echtzeit besonders nützlich sein, wenn ein virtuelles Instrument eine Ultraschallvorrichtung oder eine andere Bildgebungsmodalität unterstützt, bei der sofortige Visualisierungen erwartet oder für genaue Diagnosen und Analysen erforderlich sind. In mindestens einer Ausführungsform kann eine Cloud-Computing-Architektur zu dynamischem Bursting zu einem Cloud-Computing-Dienstleister oder einem anderen Rechencluster in der Lage sein, wenn die lokale Nachfrage die Kapazität oder Fähigkeit vor Ort übersteigt. In mindestens einer Ausführungsform kann eine Cloud-Architektur, wenn sie implementiert ist, für das Training neuronaler Netze oder anderer Modelle des maschinellen Lernens abgestimmt werden, wie hierin in Bezug auf das Trainingssystem 6404 beschrieben. In mindestens einer Ausführungsform können Modelle des maschinellen Lernens mit vorhandenen Trainingspipelines kontinuierlich lernen und sich verbessern, wenn sie zusätzliche Daten von Vorrichtungen verarbeiten, die sie unterstützen. In mindestens einer Ausführungsform können virtuelle Instrumente unter Verwendung von zusätzlichen Daten, neuen Daten, existierenden Modellen des maschinellen Lernens und/oder aktualisierten Modellen des maschinellen Lernens kontinuierlich verbessert werden.
  • In mindestens einer Ausführungsform kann ein Rechensystem einen Teil der oder die gesamte hierin beschriebene Hardware 6422 beinhalten und die Hardware 6422 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 6526. Da das Einsatzsystem 6406 und die damit assoziierten Anwendungen oder Container in Software erstellt werden (z. B. als diskrete containerisierte Instanziierungen von Anwendungen), können in mindestens einer Ausführungsform das Verhalten, der Betrieb und die Konfiguration von virtuellen Instrumenten sowie die durch virtuelle Instrumente erzeugten Ausgaben nach Wunsch modifiziert oder individuell angepasst werden, ohne dass die Rohausgabe einer Vorrichtung, die ein virtuelles Instrument unterstützt, geändert oder verändert werden muss.
  • 67A beinhaltet ein beispielhaftes Datenablaufdiagramm eines virtuellen Instruments, das eine Ultraschallvorrichtung unterstützt, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die Einsatzpipeline 6510B einen oder mehrere der Dienste 6420 des Systems 6500 ausnutzen. In mindestens einer Ausführungsform können die Einsatzpipeline 6510B und die Dienste 6420 die Hardware 6422 eines Systems entweder lokal oder in der Cloud 6526 ausnutzen. In mindestens einer Ausführungsform, obwohl nicht veranschaulicht, kann der Prozess 6700 durch den Pipelineverwalter 6512, das Anwendungsorchestrierungssystem 6528 und/oder die Parallelrechenplattform 6530 erleichtert werden.
  • In mindestens einer Ausführungsform kann der Prozess 6700 den Empfang von Bildgebungsdaten von einer Ultraschallvorrichtung 6702 beinhalten. In 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 6500 zur Verarbeitung durch die Einsatzpipeline 6510 empfangen werden, die als virtuelles Instrument (z. B. ein virtueller Ultraschall) für die Ultraschallvorrichtung 6702 ausgewählt oder individuell angepasst wurde. In mindestens einer Ausführungsform können die Bildgebungsdaten direkt von einer Bildgebungsvorrichtung (z. B. Ultraschallvorrichtung 6702) empfangen und durch ein virtuelles Instrument verarbeitet werden. In mindestens einer Ausführungsform kann ein Wandler oder ein anderer Signalkonverter, der kommunikativ zwischen einer Bildgebungsvorrichtung und einem virtuellen Instrument gekoppelt ist, die durch eine Bildgebungsvorrichtung erzeugten Signaldaten in Bilddaten umwandeln, die durch ein virtuelles Instrument verarbeitet werden können. In mindestens einer Ausführungsform können Rohdaten und/oder Bilddaten auf das DICOM-Lesegerät 6606 angewendet werden, um Daten zur Verwendung durch Anwendungen oder Container der Einsatzpipeline 6510B zu extrahieren. In mindestens einer Ausführungsform kann das DICOM-Lesegerät 6606 die Datenerweiterungsbibliothek 6714 (z. B. DALI von NVIDIA) als Dienst 6420 (z. B. als einen der Rechendienste(s) 6516) nutzen, um Daten zu extrahieren, deren Größe zu ändern, sie neu zu skalieren und/oder anderweitig für die Verwendung durch Anwendungen oder Container vorzubereiten.
  • In mindestens einer Ausführungsform kann, sobald die Daten vorbereitet sind, eine Anwendung und/oder ein Container für die Rekonstruktion 6706 ausgeführt werden, um die Daten von der Ultraschallvorrichtung 6702 in eine Bilddatei zu rekonstruieren. In mindestens einer Ausführungsform kann nach der Rekonstruktion 6706 oder gleichzeitig mit der Rekonstruktion 6706 eine Anwendung und/oder ein Container für die Erkennung 6708 zur Anomalieerkennung, zur Objekterkennung, zur Merkmalserkennung und/oder zu anderen Erkennungs-Tasks in Bezug auf die Daten ausgeführt werden. In mindestens einer Ausführungsform kann eine während der Rekonstruktion 6706 erzeugte Bilddatei während der Detektion 6708 verwendet werden, um Anomalien, Objekte, Merkmale usw. zu identifizieren. In mindestens einer Ausführungsform kann die Anwendung für die Detektion 6708 eine Inferenz-Engine 6716 (z. B. als einen der KI-Dienste(s) 6518) ausnutzen, um Inferenz an Daten durchzuführen, um Detektionen zu erzeugen. In mindestens einer Ausführungsform können ein oder mehrere Modelle des maschinellen Lernens (z. B. aus dem Trainingssystem 6404) durch die Anwendung für die Detektion 6708 ausgeführt oder aufgerufen werden.
  • In mindestens einer Ausführungsform können nach Abschluss der Rekonstruktion 6706 und/oder der Erkennung 6708 die von diesen Anwendungen und/oder Containern ausgegebenen Daten verwendet werden, um Visualisierungen 6710 zu erzeugen, wie z. B. eine Visualisierung 6712 (z. B. eine Graustufenausgabe), die auf einer Arbeitsstation oder einem Anzeigeendgerät angezeigt wird. In mindestens einer Ausführungsform kann die Visualisierung es einem Techniker oder einem anderen Benutzer ermöglichen, die Ergebnisse der Einsatzpipeline 6510B in Bezug auf die Ultraschallvorrichtung 6702 zu visualisieren. In mindestens einer Ausführungsform kann die Visualisierung 6710 durch Ausnutzen einer Rendering-Komponente 6718 des Systems 6500 (z. B. eines der Visualisierungsdienst(e) 6520) ausgeführt werden. In mindestens einer Ausführungsform kann die Rendering-Komponente 6718 einen 2D-, OpenGL- oder Strahlverfolgungsdienst ausführen, um die Visualisierung 6712 zu erzeugen.
  • 67B beinhaltet ein beispielhaftes Datenablaufdiagramm eines virtuellen Instruments, das einen CT-Scanner unterstützt, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die Einsatzpipeline 6510C einen oder mehrere der Dienste 6420 des Systems 6500 ausnutzen. In mindestens einer Ausführungsform können die Einsatzpipeline 6510C und die Dienste 6420 die Hardware 6422 eines Systems entweder lokal oder in der Cloud 6526 ausnutzen. In mindestens einer Ausführungsform, obwohl nicht veranschaulicht, kann der Prozess 6720 durch den Pipelineverwalter 6512, das Anwendungsorchestrierungssystem 6528 und/oder die Parallelrechenplattform 6530 erleichtert werden.
  • In mindestens einer Ausführungsform kann der Prozess 6720 beinhalten, dass der CT-Scanner 6722 Rohdaten erzeugt, die durch das DICOM-Lesegerät 6606 empfangen werden können (z. B. direkt, über einen PACS-Server 6604, nach der Verarbeitung usw.). In mindestens einer Ausführungsform kann ein virtuelles CT (durch die Einsatzpipeline 6510C instanziiert) eine erste Echtzeitpipeline zum Überwachen eines Patienten (z. B. Patientenbewegungsdetektions-Kl 6726) und/oder zum Einstellen oder Optimieren der Belichtung des CT-Scanners 6722 (z. B. unter Verwendung der Belichtungssteuer-Kl 6724) beinhalten. In mindestens einer Ausführungsform können eine oder mehrere der Anwendungen (z. B. 6724 und 6726) einen Dienst 6420 nutzen, wie z. B. den/die KI-Dienst(e) 6518. In mindestens einer Ausführungsform können die Ausgaben der Anwendung (oder des Containers) für die Belichtungssteuer-Kl 6724 und/oder der Anwendung (oder des Containers) für die Patientenbewegungserkennungs-KI 6726 als Rückmeldung an den CT-Scanner 6722 und/oder einen Techniker verwendet werden, um die Belichtung (oder andere Einstellungen des CT-Scanners 6722) anzupassen und/oder einen Patienten zu informieren, sich weniger zu bewegen.
  • In mindestens einer Ausführungsform kann die Einsatzpipeline 6510C eine Nicht-Echtzeitpipeline zum Analysieren der durch den CT-Scanner 6722 erzeugten Daten beinhalten. In mindestens einer Ausführungsform kann eine zweite Pipeline die Anwendung und/oder den Container für die CT-Rekonstruktion 6608, eine Anwendung und/oder einen Container für die Groberkennungs-KI 6728, eine Anwendung und/oder einen Container für die Feinerkennung-Kl 6732 (wenn z. B. bestimmte Ergebnisse durch die Groberkennungs-KI 6728 erkannt werden), eine Anwendung und/oder einen Container für die Visualisierung 6730 und eine Anwendung und/oder einen Container für den DICOM-Schreiber 6612 (und/oder einen Schreiber für eine andere Datenart, z. B. RIS, CIS, REST-konform, RPC, Rohdaten usw.) beinhalten. In mindestens einer Ausführungsform können die durch den CT-Scanner 6722 erzeugten Rohdaten durch Pipelines der Einsatzpipeline 6510C (als virtuelles CT-Instrument instanziiert) gegeben werden, um Ergebnisse zu erzeugen. In mindestens einer Ausführungsform können die Ergebnisse des DICOM-Schreibers 6612 zur Anzeige übertragen und/oder auf dem/den PACS-Server(n) 6604 zum/zur späteren Abruf, Analyse oder Anzeige durch einen Techniker, eine Fachkraft oder anderen Benutzer gespeichert werden.
  • 68A veranschaulicht ein Datenflussdiagramm für einen Prozess 6800 zum Trainieren, erneuten Trainieren oder Aktualisieren eines Modells für maschinelles Lernen gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozess 6800 als nicht einschränkendes Beispiel unter Verwendung des Systems 6500 aus 65 ausgeführt werden. In mindestens einer Ausführungsform kann der Prozess 6800 die Dienste 6420 und/oder die Hardware 6422 des Systems 6500 ausnutzen, wie hierin beschrieben. In mindestens einer Ausführungsform können verfeinerte Modelle 6812, die durch den Prozess 6800 erzeugt wurden, durch das Einsatzsystem 6406 für eine oder mehrere containerisierte Anwendungen in Einsatzpipelines 6510 ausgeführt werden.
  • In mindestens einer Ausführungsform kann das Modelltraining 6414 das erneute Trainieren oder Aktualisieren eines anfänglichen Modells 6804 (z. B. eines vorab trainierten Modells) unter Verwendung neuer Trainingsdaten (z. B. neuer Eingabedaten, wie etwa des Kundendatensatzes 6806, und/oder neuer mit den Eingabedaten assoziierter Ground-Truth-Daten) beinhalten. In mindestens einer Ausführungsform können, um das Anfangsmodell 6804 neu zu trainieren oder zu aktualisieren, Ausgabe- oder Verlustschicht(en) des Anfangsmodells 6804 zurückgesetzt oder gelöscht und/oder durch (eine) aktualisierte oder neue Ausgabe- oder Verlustschicht(en) ersetzt werden. In mindestens einer Ausführungsform kann das anfängliche Modell 6804 bereits fein abgestimmte Parameter (z. B. Gewichtungen und/oder Verzerrungen) aufweisen, die aus einem früheren Training übriggeblieben sind, sodass das Training oder das erneute Training 6414 nicht so lange dauern oder so viel Verarbeitung erfordern kann wie das Training eines Modells von Grund auf. In mindestens einer Ausführungsform können während des Modelltrainings 6414 durch Zurücksetzen oder Ersetzen der Ausgabe- oder Verlustschicht(en) des anfänglichen Modells 6804 die Parameter aktualisiert und für einen neuen Datensatz auf Grundlage von Verlustberechnungen neu abgestimmt werden, die mit der Genauigkeit der Ausgabe- oder Verlustschicht(en) beim Erzeugen von Vorhersagen an einem neuen Kundendatensatz 6806 (z. B. Bilddaten 6408 aus 64) assoziiert sind.
  • In mindestens einer Ausführungsform können die vorab trainierten Modelle 6506 in einem Datenspeicher oder einer Registrierungsdatenbank (z. B. der Modellregistrierungsdatenbank 6424 aus 64) gespeichert sein. In mindestens einer Ausführungsform können die vorab trainierten Modelle 6506 mindestens teilweise in einer oder mehreren anderen Einrichtungen als der Einrichtung, die den Prozess 6800 ausführt, trainiert worden sein. In mindestens einer Ausführungsform können zum Schutz der Privatsphäre und der Rechte von Patienten, Probanden oder Klienten unterschiedlicher Einrichtungen die vorab trainierten Modelle 6506 in den Räumlichkeiten unter Verwendung von Kunden- oder Patientendaten, die in den Räumlichkeiten erzeugt wurden, trainiert worden sein. In mindestens einer Ausführungsform können die vorab trainierten Modelle 6506 unter Verwendung der Cloud 6526 und/oder anderer Hardware 6422 trainiert werden, aber vertrauliche, datenschutzrechtlich geschützte Patientendaten dürfen nicht an beliebige Komponenten der Cloud 6526 (oder anderer Hardware außerhalb der eigenen Räumlichkeiten) übermittelt werden, durch diese verwendet werden oder für diese zugänglich sein. In mindestens einer Ausführungsform, in der ein vorab trainiertes Modell 6506 unter Verwendung von Patientendaten von mehr als einer Einrichtung trainiert wird, kann das vorab trainierte Modell 6506 einzeln für jede Einrichtung trainiert worden sein, bevor es an Patienten- oder Kundendaten einer anderen Einrichtung trainiert wird. In mindestens einer Ausführungsform, wie etwa, wenn Kunden- oder Patientendaten von Datenschutzbedenken ausgenommen wurden (z. B. durch eine Verzichtserklärung, für die experimentelle Verwendung usw.) oder wenn Kunden- oder Patientendaten in einem öffentlichen Datensatz enthalten sind, können Kunden- oder Patientendaten von einer beliebigen Anzahl von Einrichtungen verwendet werden, um das vorab trainierte Modell 6506 innerhalb und/oder außerhalb der eigenen Räumlichkeiten zu trainieren, wie etwa in einem Rechenzentrum oder einer anderen Cloud-Computing-Infrastruktur.
  • In mindestens einer Ausführungsform kann ein Benutzer beim Auswählen von Anwendungen zur Verwendung in den Einsatzpipelines 6510 auch Modelle des maschinellen Lernens auswählen, die für spezifische Anwendungen verwendet werden sollen. In mindestens einer Ausführungsform kann ein Benutzer kein Modell zur Verwendung aufweisen, sodass ein Benutzer ein vorab trainiertes Modell 6506 zum Verwenden mit einer Anwendung auswählen kann. In mindestens einer Ausführungsform ist das vorab trainierte Modell 6506 möglicherweise nicht dafür optimiert, genaue Ergebnisse an dem Kundendatensatz 6806 einer Einrichtung eines Benutzers zu erzeugen (z. B. auf Grundlage der Patientenvielfalt, der Demografie, der Typen der verwendeten medizinischen Bildgebungsvorrichtungen usw.). In mindestens einer Ausführungsform kann das vorab trainierte Modell 6506 vor dem Einsetzen des vorab trainierten Modells 6506 in der Einsatzpipeline 6510 zur Verwendung mit einer Anwendung(en) für die Verwendung in einer jeweiligen Einrichtung aktualisiert, erneut trainiert und/oder fein abgestimmt werden.
  • In mindestens einer Ausführungsform kann ein Benutzer ein vorab trainiertes Modell 6506 auswählen, das aktualisiert, erneut trainiert und/oder fein abgestimmt werden soll, und das vorab trainierte Modell 6506 kann als anfängliches Modell 6804 für das Trainingssystem 6404 innerhalb des Prozesses 6800 bezeichnet werden. In mindestens einer Ausführungsform kann der Kundendatensatz 6806 (z. B. Bildgebungsdaten, Genomdaten, Sequenzierungsdaten oder andere Datenarten, die von Vorrichtungen in einer Einrichtung erzeugt werden) verwendet werden, um das Modelltraining 6414 (das ohne Einschränkung das Übertragungslernen beinhalten kann) auf dem anfänglichen Modell 6804 durchzuführen, um das präzisierte Modell 6812 zu erzeugen. In mindestens einer Ausführungsform können die Ground-Truth-Daten, die dem Kundendatensatz 6806 entsprechen, durch das Trainingssystem 6404 erzeugt werden. In mindestens einer Ausführungsform können Ground-Truth-Daten mindestens teilweise von Klinikern, Wissenschaftlern, Ärzten, Fachkräften in einer Einrichtung erzeugt werden (z. B. als beschriftete Klinikdaten 6412 aus 64).
  • In mindestens einer Ausführungsform kann die KI-gestützte Annotation 6410 in einigen Beispielen verwendet werden, um Ground-Truth-Daten zu erzeugen. In mindestens einer Ausführungsform kann die KI-gestützte Annotation 6410 (z. B. unter Verwendung eines SDK für die KI-gestützt Annotation implementiert) Modelle des maschinellen Lernens (z. B. neuronale Netze) ausnutzen, um vorgeschlagene oder vorhergesagte Ground-Truth-Daten für einen Kundendatensatz zu erzeugen. In mindestens einer Ausführungsform kann der Benutzer 6810 Anmerkungswerkzeuge innerhalb einer Benutzeroberfläche (einer grafischen Benutzeroberfläche (GUI)) auf der Rechenvorrichtung 6808 verwenden.
  • In mindestens einer Ausführungsform kann der Benutzer 6810 über die Rechenvorrichtung 6808 mit einer GUI interagieren, um Annotationen oder automatische Annotationen zu bearbeiten oder fein abzustimmen. In mindestens einer Ausführungsform kann ein Polygonbearbeitungsmerkmal verwendet werden, um Vertices eines Polygons an genauere oder feiner abgestimmte Stellen zu verschieben.
  • In mindestens einer Ausführungsform können die Ground-Truth-Daten (z. B. aus KI-gestützter Kommentierung, manueller Beschriftung usw.) während des Modelltrainings 6414 verwendet werden, um ein verfeinertes Modell 6812 zu erstellen, sobald dem Kundendatensatz 6806 Ground-Truth-Daten zugeordnet sind. In mindestens einer Ausführungsform kann der Kundendatensatz 6806 beliebig oft auf das Anfangsmodell 6804 angewendet werden und Ground-Truth-Daten können verwendet werden, um Parameter des Anfangsmodells 6804 zu aktualisieren, bis ein zulässiges Genauigkeitsniveau für das präzisierte Modell 6812 erreicht wird. In mindestens einer Ausführungsform kann das verfeinerte Modell 6812, sobald das verfeinerte Modell 6812 erzeugt ist, innerhalb einer oder mehrerer Einsatzpipelines 6510 in einer Einrichtung zum Durchführen eines oder mehrerer Verarbeitungs-Tasks in Bezug auf medizinische Bildgebungsdaten eingesetzt werden.
  • In mindestens einer Ausführungsform kann das verfeinerte Modell 6812 in die vorab trainierten Modellen 6506 in der Modellregistrierungsdatenbank 6424 hochgeladen werden, um durch eine andere Einrichtung ausgewählt zu werden. In mindestens einer Ausführungsform kann dieser Prozess in einer beliebigen Anzahl von Einrichtungen durchgeführt werden, sodass das verfeinerte Modell 6812 an neuen Datensätzen beliebig oft weiter verfeinert werden kann, um ein universelleres Modell zu erzeugen.
  • 68B ist eine beispielhafte Darstellung einer Client-Server-Architektur 6832 zum Verbessern von Anmerkungswerkzeugen mit vortrainierten Anmerkungsmodellen gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform können KI-unterstützte Anmerkungswerkzeuge 6836 auf Grundlage einer Client-Server-Architektur 6832 instanziiert werden. In mindestens einer Ausführungsform können die Annotationswerkzeuge 6836 in Bildgebungsanwendungen zum Beispiel Radiologen beim Identifizieren von Organen und Auffälligkeiten unterstützen. In mindestens einer Ausführungsform können Bildgebungsanwendungen Softwarewerkzeuge beinhalten, die dem Benutzer 6810 helfen, als ein nichteinschränkendes Beispiel einige Extrempunkte auf einem bestimmten Organ von Interesse in Rohbildern 6834 (z. B. in einem 3D-MRT oder CT) zu identifizieren, und automatisch kommentierte Ergebnisse für alle 2D-Schnitte eines bestimmten Organs empfangen. In mindestens einer Ausführungsform können die Ergebnisse in einem Datenspeicher als Trainingsdaten 6838 gespeichert und als (zum Beispiel und ohne Einschränkung) Ground-Truth-Daten für das Training verwendet werden. In mindestens einer Ausführungsform kann, wenn die Rechenvorrichtung 6808 Extrempunkte für die KI-gestützte Annotation 6410 sendet, ein Deep-Learning-Modell diese Daten zum Beispiel als Eingabe empfangen und Inferenzergebnisse eines segmentierten Organs oder einer Auffälligkeit zurückgeben. In mindestens einer Ausführungsform können vorinstanziierte Anmerkungswerkzeuge, wie etwa das Klunterstützte Anmerkungswerkzeug 6836B in 68B, durch das Ausführen von API-Aufrufen (z. B. API-Aufruf 6844) an einen Server, wie etwa einen Anmerkungshilfsserver 6840, der zum Beispiel einen Satz vortrainierter Modelle 6842 beinhalten kann, die in einer Anmerkungsmodellregistrierungsdatenbank gespeichert sind, verbessert werden. In mindestens einer Ausführungsform kann eine Annotationsmodellregistrierungsdatenbank vorab trainierte Modelle 6842 (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 durchzuführen. In mindestens einer Ausführungsform können diese Modelle durch Verwenden von Trainingspipelines 6504 weiter aktualisiert werden. In mindestens einer Ausführungsform können vorab installierte Annotationswerkzeuge im Verlauf der Zeit verbessert werden, wenn neue beschriftete Klinikdaten 6412 hinzugefügt werden.
  • Die Inferenz- und/oder Trainingslogik 3515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 3515 werden hierin in Verbindung mit 35A und/oder 35B bereitgestellt.
  • 69 veranschaulicht einen Softwarestapel einer Programmierplattform gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist eine Programmierplattform eine Plattform zum Einsetzen von Hardware auf einem Rechensystem, um Berechnungstasks zu beschleunigen. In mindestens einer Ausführungsform kann eine Programmierplattform für Softwareentwickler durch Bibliotheken, Compilerdirektiven und/oder Erweiterungen von Programmiersprachen zugänglich sein. In mindestens einer Ausführungsform kann eine Programmierplattform CUDA, Radeon Open Compute Platform („ROCm“), OpenCL (OpenCL™ wird von der Khronos-Gruppe entwickelt), SYCL oder Intel One API sein, ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform stellt ein Softwarestapel 6900 einer Programmierplattform eine Ausführungsumgebung für eine Anwendung 6901 bereit. In mindestens einer Ausführungsform kann die Anwendung 6901 eine beliebige Computersoftware beinhalten, die auf dem Softwarestapel 6900 gestartet werden kann. In mindestens einer Ausführungsform kann die Anwendung 6901 eine Anwendung für künstliche Intelligenz („Kl“)/Maschinenlernen („ML“), eine Hochleistungsrechenanwendung (high performance computing - „HPC“), eine virtuelle Desktop-Infrastruktur („VDI“) oder eine Rechenzentrumsarbeitslast beinhalten, ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform laufen die Anwendung 6901 und der Softwarestapel 6900 auf Hardware 6907. Die Hardware 6907 kann in mindestens einer Ausführungsform eine oder mehrere GPU, CPU, FPGA, KI-Engines und/oder andere Arten von Rechenvorrichtungen beinhalten, die eine Programmierplattform unterstützen. In mindestens einer Ausführungsform, wie etwa bei CUDA, kann der Softwarestapel 6900 herstellerspezifisch und nur mit Vorrichtungen von konkreten Herstellern kompatibel sein. In mindestens einer Ausführungsform, wie etwa bei OpenCL, kann der Softwarestapel 6900 mit Vorrichtungen von verschiedenen Herstellern verwendet werden. In mindestens einer Ausführungsform beinhaltet die Hardware 6907 einen Host, der mit einem oder mehreren Vorrichtungen verbunden ist, auf die zugegriffen werden kann, um Berechnungstasks über Aufrufe einer Anwendungsprogrammierschnittstelle (application programming interface - „API“) auszuführen. Eine Vorrichtung innerhalb der Hardware 6907 kann, ohne darauf beschränkt zu sein, eine GPU, ein FPGA, eine Kl-Engine oder eine andere Rechenvorrichtung und ihren Speicher beinhalten (kann aber auch eine CPU beinhalten), im Gegensatz zu einem Host innerhalb der Hardware 6907, der in mindestens einer Ausführungsform eine CPU und seinen Speicher beinhalten kann (aber auch eine Rechenvorrichtung beinhalten kann), ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform beinhaltet der Softwarestapel 6900 einer Programmierplattform ohne Einschränkung eine Anzahl von Bibliotheken 6903, eine Laufzeit 6905 und einen Vorrichtungskerneltreiber 6906. Jede der Bibliotheken 6903 kann in mindestens einer Ausführungsform Daten und Programmiercode beinhalten, die durch Computerprogramme verwendet und während der Softwareentwicklung eingesetzt werden können. In mindestens einer Ausführungsform können die Bibliotheken 6903 vorgefertigten Code und Unterroutinen, Klassen, Werte, Typspezifikationen, Konfigurationsdaten, Dokumentation, Hilfedaten und/oder Nachrichtenvorlagen beinhalten, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform beinhalten die Bibliotheken 6903 Funktionen, die für die Ausführung auf einer oder mehreren Arten von Vorrichtungen optimiert sind. In mindestens einer Ausführungsform können die Bibliotheken 6903 Funktionen zum Durchführen von mathematischen Operationen, tiefem Lernen und/oder anderen Arten von Operationen auf Vorrichtungen beinhalten, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform sind Bibliotheken 7003 entsprechenden API 7002 zugeordnet, die eine oder mehrere API beinhalten können, die in Bibliotheken 7003 implementierte Funktionen offenlegen.
  • In mindestens einer Ausführungsform ist die Anwendung 6901 als Quellcode geschrieben, der in ausführbaren Code kompiliert wird, wie nachstehend in Verbindung mit 74 ausführlicher erörtert wird. Ausführbarer Code der Anwendung 6901 kann in mindestens einer Ausführungsform zumindest teilweise auf einer Ausführungsumgebung laufen, die durch den Softwarestapel 6900 bereitgestellt wird. In mindestens einer Ausführungsform kann während der Ausführung der Anwendung 6901 Code erreicht werden, der auf einer Vorrichtung im Gegensatz zu einem Host laufen muss. In einem solchen Fall kann die Laufzeit 6905 in mindestens einer Ausführungsform aufgerufen werden, um erforderlichen Code auf eine Vorrichtung zu laden und zu starten. In mindestens einer Ausführungsform kann die Laufzeit 6905 ein beliebiges technisch machbares Laufzeitsystem beinhalten, das die Ausführung der Anwendung S01 unterstützen kann.
  • In mindestens einer Ausführungsform ist die Laufzeit 6905 als eine oder mehrere Laufzeitbibliotheken implementiert, die entsprechenden APIs zugeordnet sind, die als API(s) 6904 dargestellt sind. Eine oder mehrere solcher Laufzeitbibliotheken können in mindestens einer Ausführungsform ohne Einschränkung unter anderem Funktionen für die Speicherverwaltung, die Ausführungssteuerung, die Vorrichtungsverwaltung, die Fehlerbehandlung und/oder die Synchronisation beinhalten. In mindestens einer Ausführungsform können die Speicherverwaltungsfunktionen Funktionen zum Zuweisen, Freigeben und Kopieren von Vorrichtungsspeicher sowie zum Übertragen von Daten zwischen Host-Speicher und Vorrichtungsspeicher beinhalten, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform können die Ausführungssteuerfunktionen Funktionen zum Starten einer Funktion (manchmal als „Kernel“ bezeichnet, wenn eine Funktion eine von einem Host aufrufbare globale Funktion ist) auf einer Vorrichtung beinhalten und Attributwerte in einem Puffer setzen, der durch eine Laufzeitbibliothek für eine bestimmte Funktion gepflegt wird, die auf einer Vorrichtung ausgeführt werden soll, ohne darauf beschränkt zu sein.
  • Laufzeitbibliotheken und entsprechende API 6904 können in mindestens einer Ausführungsform auf eine beliebige technisch machbare Weise implementiert sein. In mindestens einer Ausführungsform kann eine (oder eine beliebige Anzahl von) API einen Satz von Funktionen einer niedrigen Ebene für eine feingranulare Steuerung einer Vorrichtung bereitstellen, während eine andere (oder eine beliebige Anzahl von) API einen Satz solcher Funktionen einer höheren Ebene offenlegen kann. In mindestens einer Ausführungsform kann eine Laufzeit-API einer hohen Ebene auf einer API einer niedrigen Ebene aufgebaut sein. In mindestens einer Ausführungsform können eine oder mehrere Laufzeit-API sprachspezifische API sein, die auf einer sprachunabhängigen Laufzeit-API aufgesetzt sind.
  • In mindestens einer Ausführungsform ist der Vorrichtungskerneltreiber 6906 konfiguriert, um die Kommunikation mit einer zugrundeliegenden Vorrichtung zu ermöglichen. In mindestens einer Ausführungsform kann der Vorrichtungskerneltreiber 6906 Funktionalitäten einer niedrigen Ebene bereitstellen, auf die API, wie etwa die API 6904 und/oder andere Software, zurückgreifen. In mindestens einer Ausführungsform kann der Vorrichtungskerneltreiber 6906 konfiguriert sein, um Zwischendarstellungs (Intermediate Representation - „IR“)-Code zur Laufzeit in Binärcode zu kompilieren. Für CUDA kann der Vorrichtungskerneltreiber 6906 in mindestens einer Ausführungsform IR-Code zur parallelen Thread-Ausführung (Parallel Thread Execution - „PTX“), der nicht hardwarespezifisch ist, zur Laufzeit in Binärcode für eine bestimmtes Zielvorrichtung kompilieren (mit Zwischenspeichern des kompilierten Binärcodes), was manchmal auch als „Finalisieren“ von Code bezeichnet wird. Dies kann in mindestens einer Ausführungsform zulassen, dass finalisierter Code auf einer Zielvorrichtung läuft, der möglicherweise nicht existiert hat, als der Quellcode ursprünglich in PTX-Code kompiliert wurde. Alternativ kann in mindestens einer Ausführungsform der Vorrichtungsquellcode offline in Binärcode kompiliert werden, ohne dass es erforderlich ist, dass der Vorrichtungskerneltreiber 6906 den IR-Code während der Laufzeit kompiliert.
  • 70 veranschaulicht eine CUDA-Implementierung des Softwarestapels 6900 der 69 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet ein CUDA-Softwarestapel 7000, auf dem eine Anwendung 7001 gestartet werden kann, CUDA-Bibliotheken 7003, eine CUDA-Laufzeit 7005, einen CUDA-Treiber 7007 und einen Vorrichtungskerneltreiber 7008. In mindestens einer Ausführungsform wird der CUDA-Softwarestapel 7000 auf Hardware 7009 ausgeführt, die eine GPU beinhalten kann, die CUDA unterstützt und von NVIDIA Corporation, Santa Clara, Kalifornien entwickelt wird.
  • In mindestens einer Ausführungsform können die Anwendung 7001, die CUDA-Laufzeit 7005 und der Vorrichtungs-Kerneltreiber 7008 ähnliche Funktionalitäten wie die Anwendung 6901, die Laufzeit 6905 bzw. der Vorrichtungs-Kerneltreiber 6906 durchführen, die vorstehend in Verbindung mit 69 beschrieben wurden. In mindestens einer Ausführungsform beinhaltet der CUDA-Treiber 7007 eine Bibliothek (libcuda.so), die eine CUDA-Treiber-API 7006 implementiert. Ähnlich einer CUDA-Laufzeit-API 7004, die durch eine CUDA-Laufzeitbibliothek (cudart) implementiert wird, kann die CUDA-Treiber-API 7006 in mindestens einer Ausführungsform ohne Einschränkung unter anderem Funktionen für Speicherverwaltung, Ausführungssteuerung, Vorrichtungsverwaltung, Fehlerbehandlung, Synchronisation und/oder Grafikinteroperabilität offenlegen. In mindestens einer Ausführungsform unterscheidet sich die CUDA-Treiber-API 7006 von der CUDA-Laufzeit-API 7004 darin, dass die CUDA-Laufzeit-API 7004 die Vorrichtungscodeverwaltung vereinfacht, indem sie implizite Initialisierung, Kontextverwaltung (analog zu einem Prozess) und Modulverwaltung (analog zu dynamisch geladenen Bibliotheken) bereitstellt. Im Gegensatz zur CUDA-Laufzeit-API 7004 auf hoher Ebene ist die CUDA-Treiber-API 7006 eine API auf niedriger Ebene, die in mindestens einer Ausführungsform eine feinkörnigere Steuerung einer Vorrichtung bereitstellt, insbesondere in Bezug auf Kontexte und Modulladen. In mindestens einer Ausführungsform kann die CUDA-Treiber-API 7006 Funktionen für die Kontextverwaltung offenlegen, die nicht durch die CUDA-Laufzeit-API 7004 offengelegt werden. In mindestens einer Ausführungsform ist die CUDA-Treiber-API 7006 auch sprachunabhängig und unterstützt z. B. OpenCL zusätzlich zur CUDA-Laufzeit-API 7004. Ferner können in mindestens einer Ausführungsform Entwicklungsbibliotheken, einschließlich der CUDA-Laufzeit 7005, als von Treiberkomponenten getrennt betrachtet werden, einschließlich des Benutzermodus-CUDA-Treibers 7007 und des Kernelmodus-Vorrichtungstreibers 7008 (manchmal auch als „Anzeige“-Treiber bezeichnet).
  • In mindestens einer Ausführungsform können die CUDA-Bibliotheken 7003 mathematische Bibliotheken, Deep-Learning-Bibliotheken, parallele Algorithmusbibliotheken und/oder Signal-/Bild-/Videoverarbeitungsbibliotheken beinhalten, die parallele Rechenanwendungen wie die Anwendung 7001 nutzen können, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform können die CUDA-Bibliotheken 7003 mathematische Bibliotheken beinhalten, wie etwa unter anderem eine cuBLAS-Bibliothek, die eine Implementierung von Basic Linear Algebra Subprograms („BLAS“) zum Durchführen linearer Algebra-Operationen ist, eine cuFFT-Bibliothek zum Berechnen schneller Fourier-Transformationen („FFT“) und eine cuRAND-Bibliothek zur Generierung von Zufallszahlen. In mindestens einer Ausführungsform können die CUDA-Bibliotheken 7003 Deep-Learning-Bibliotheken beinhalten, wie etwa unter anderem eine cuDNN-Bibliothek von Primitiven für tiefe neuronale Netze und eine TensorRT-Plattform für Hochleistungs-Deep-Learning-Inferenz.
  • 71 veranschaulicht eine ROCm-lmplementierung des Softwarestapels 6900 der 69 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet ein ROCm-Softwarestapel 7100, auf dem eine Anwendung 7101 gestartet werden kann, eine Sprachlaufzeit 7103, eine Systemlaufzeit 7105, einen Thunk 7107, einen ROCm-Kerneltreiber 7108 und einen Vorrichtungskerneltreiber 7109. In mindestens einer Ausführungsform wird der ROCm-Softwarestapel 7100 auf Hardware 7110 ausgeführt, die eine GPU beinhalten kann, die ROCm unterstützt und von AMD Corporation, Santa Clara, Kalifornien entwickelt wird.
  • In mindestens einer Ausführungsform kann die Anwendung 7101 ähnliche Funktionalitäten wie die Anwendung 6901 durchführen, die vorstehend in Verbindung mit 69 erörtert wurde. Außerdem können die Sprachlaufzeit 7103 und die Systemlaufzeit 7105 in mindestens einer Ausführungsform ähnliche Funktionalitäten wie die vorstehend in Verbindung mit 69 erörterte Laufzeit 6905 durchführen. In mindestens einer Ausführungsform unterscheiden sich die Sprachlaufzeit 7103 und die Systemlaufzeit 7105 darin, dass die Systemlaufzeit 7105 eine sprachunabhängige Laufzeit ist, die eine ROCr-Systemlaufzeit-API 7104 implementiert und eine Laufzeit-API mit heterogener Systemarchitektur (Heterogeneous System Architecture - „HAS“) verwendet. Die HAS-Laufzeit-API ist in mindestens einer Ausführungsform eine schlanke Benutzermodus-API, die Schnittstellen für den Zugriff auf und die Interaktion mit einer AMD-GPU offenlegt, die unter anderem Funktionen für die Speicherverwaltung, die Ausführungssteuerung über den architekturdefinierten Versand von Kerneln, die Fehlerbehandlung, System- und Agenteninformationen sowie die Initialisierung und das Herunterfahren der Laufzeit beinhaltet. Im Gegensatz zur Systemlaufzeit 7105 ist die Sprachlaufzeit 7103 in mindestens einer Ausführungsform eine Implementierung einer sprachspezifischen Laufzeit-API 7102, die auf der ROCr-Systemlaufzeit-API 7104 geschichtet ist. In mindestens einer Ausführungsform kann die Sprachlaufzeit-API unter anderem eine Sprachlaufzeit-API für Heterogeneous Compute Interface for Portability („HIP“), eine Sprachlaufzeit-API für Heterogeneous Compute Compiler („HCC“) oder eine OpenCL-API beinhalten, ohne darauf beschränkt zu sein. Die HIP-Sprache ist insbesondere eine Erweiterung der Programmiersprache C++ mit funktional ähnlichen Versionen von CUDA-Mechanismen, und in mindestens einer Ausführungsform beinhaltet eine HIP-Sprachen-Laufzeit-API Funktionen, die denen der CUDA-Laufzeit-API 7004 ähneln, die vorstehend in Verbindung mit 70 erörtert wurde, wie etwa unter anderem Funktionen zur Speicherverwaltung, Ausführungssteuerung, Vorrichtungsverwaltung, Fehlerbehandlung und Synchronisation.
  • In mindestens einer Ausführungsform ist der Thunk (ROCt) 7107 eine Schnittstelle, die verwendet werden kann, um mit dem darunterliegenden ROCm-Treiber 7108 zu interagieren. In mindestens einer Ausführungsform ist der ROCm-Treiber 7108 ein ROCk-Treiber, der eine Kombination aus einem AMDGPU-Treiber und einem HAS-Kernel-Treiber (amdkfd) ist. In mindestens einer Ausführungsform ist der AMDGPU-Treiber ein von AMD entwickelter Vorrichtungs-Kerneltreiber für GPU, der ähnliche Funktionen wie der Vorrichtungs-Kerneltreiber 6906 durchführt, der vorstehend in Verbindung mit 69 erörtert wurde. In mindestens einer Ausführungsform ist der HAS-Kernel-Treiber ein Treiber, der es unterschiedlichen Arten von Prozessoren erlaubt, Systemressourcen effektiver über Hardware-Merkmale gemeinsam zu nutzen.
  • In mindestens einer Ausführungsform können verschiedene Bibliotheken (nicht dargestellt) im ROCm-Softwarestapel 7100 oberhalb der Sprachlaufzeit 7103 beinhaltet sein und eine Ähnlichkeit der Funktionalität zu den CUDA-Bibliotheken 7003 bereitstellen, die vorstehend in Verbindung mit 70 erörtert wurden. In mindestens einer Ausführungsform können verschiedene Bibliotheken mathematische, Deep-Learning- und/oder andere Bibliotheken beinhalten, wie etwa unter anderem eine hipBLAS-Bibliothek, die Funktionen ähnlich denen von CUDA cuBLAS implementiert, eine rocFFT-Bibliothek zum Berechnen von FFT, die ähnlich CUDA cuFFT ist.
  • 72 veranschaulicht eine OpenCL-Implementierung des Softwarestapels 6900 der 69 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet ein OpenCL-Softwarestapel 7200, auf dem eine Anwendung 7201 gestartet werden kann, ein OpenCL-Framework 7205, eine OpenCL-Laufzeit 7206 und einen Treiber 7207. In mindestens einer Ausführungsform wird der OpenCL-Softwarestapel 7200 auf Hardware 7009 ausgeführt, die nicht herstellerspezifisch ist. Da OpenCL durch Vorrichtungen unterstützt wird, die von verschiedenen Herstellern entwickelt wurden, können in mindestens einer Ausführungsform spezifische OpenCL-Treiber erforderlich sein, um mit Hardware von solchen Herstellern zusammenzuwirken.
  • In mindestens einer Ausführungsform können die Anwendung 7201, die OpenCL-Laufzeit 7206, der Vorrichtungs-Kerneltreiber 7207 und die Hardware 7208 ähnliche Funktionalitäten wie die Anwendung 6901, die Laufzeit 6905, der Vorrichtungs-Kerneltreiber 6906 bzw. die Hardware 6907 durchführen, die vorstehend in Verbindung mit 69 beschrieben wurden. In mindestens einer Ausführungsform beinhaltet die Anwendung 7201 ferner einen OpenCL-Kernel 7202 mit Code, der auf einer Vorrichtung ausgeführt werden soll.
  • In mindestens einer Ausführungsform definiert OpenCL eine „Plattform“, die es einem Host erlaubt, mit einem Host verbundene Vorrichtungen zu steuern. In mindestens einer Ausführungsform stellt ein OpenCL-Framework eine Plattformschicht-API und eine Laufzeit-API bereit, die als Plattform-API 7203 und Laufzeit-API 7209 dargestellt sind. In mindestens einer Ausführungsform verwendet die Laufzeit-API 7209 Kontexte, um die Ausführung von Kerneln auf Vorrichtungen zu verwalten. In mindestens einer Ausführungsform kann jede identifizierte Vorrichtung einem jeweiligen Kontext zugeordnet sein, den die Laufzeit-API 7209 verwenden kann, für diese Vorrichtung um unter anderem Befehlswarteschlangen, Programmobjekte und Kernelobjekte zu verwalten und Speicherobjekte gemeinsam zu nutzen. In mindestens einer Ausführungsform legt die Plattform-API 7203 Funktionen offen, die unter anderem die Verwendung von Vorrichtungskontexten zum Auswählen und Initialisieren von Vorrichtungen, zum Übermitteln von Arbeit an Vorrichtungen über Befehlswarteschlangen und zum Ermöglichen der Datenübertragung zu und von Vorrichtungen zulassen. Darüber hinaus stellt das OpenCL-Framework in mindestens einer Ausführungsform verschiedene integrierte Funktionen (nicht dargestellt) bereit, einschließlich unter anderem mathematischer Funktionen, relationaler Funktionen und Bildverarbeitungsfunktionen.
  • In mindestens einer Ausführungsform ist auch ein Compiler 7204 im OpenCL-Framework 7205 beinhaltet. Quellcode kann in mindestens einer Ausführungsform offline vor der Ausführung einer Anwendung oder online während der Ausführung einer Anwendung kompiliert werden. Im Gegensatz zu CUDA und ROCm können OpenCL-Anwendungen in mindestens einer Ausführungsform online durch den Compiler 7204 kompiliert werden, der beinhaltet ist, um repräsentativ für eine beliebige Anzahl von Compilern zu sein, die verwendet werden kann, um Quellcode und/oder IR-Code, wie etwa Portable Intermediate Representation („SPIR-V“)-Code, in Binärcode zu kompilieren. Alternativ können in mindestens einer Ausführungsform OpenCL-Anwendungen offline kompiliert werden, bevor solche Anwendungen ausgeführt werden.
  • 73 veranschaulicht Software, die durch eine Programmierplattform unterstützt wird, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist eine Programmierplattform 7304 konfiguriert, um verschiedene Programmiermodelle 7303, Middlewares und/oder Bibliotheken 7302 und Frameworks 7301 zu unterstützen, auf die eine Anwendung 7300 zurückgreifen kann. In mindestens einer Ausführungsform kann die Anwendung 7300 eine KI/ML-Anwendung sein, die beispielweise unter Verwendung eines Deep-Learning-Frameworks wie etwa MXNet, PyTorch oder TensorFlow implementiert ist, das auf Bibliotheken wie cuDNN, NVIDIA Collective Communications Library („NCCL“) und/oder NVIDA Developer Data Loading Library („DALI“) CUDA-Bibliotheken zurückgreifen kann, um beschleunigte Datenverarbeitung auf der zugrunde liegenden Hardware bereitzustellen.
  • In mindestens einer Ausführungsform kann die Programmierplattform 7304 eine der vorstehend in Verbindung mit 70, 71 bzw. 72 beschriebenen CUDA-, ROCm- oder OpenCL-Plattformen sein. In mindestens einer Ausführungsform unterstützt die Programmierplattform 7304 mehrere Programmiermodelle 7303, die Abstraktionen eines zugrunde liegenden Rechensystems sind, das Ausdrücke von Algorithmen und Datenstrukturen zulässt. Die Programmiermodelle 7303 können in mindestens einer Ausführungsform Merkmale der zugrunde liegenden Hardware offenlegen, um die Leistungsfähigkeit zu verbessern. In mindestens einer Ausführungsform können die Programmiermodelle 7303 CUDA, HIP, OpenCL, C++ Accelerated Massive Parallelism („C++AMP“), Open Multi-Processing („OpenMP“), Open Accelerators („OpenACC“) und/oder Vulcan Compute beinhalten, ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform stellen Bibliotheken und/oder Middlewares 7302 Implementierungen von Abstraktionen von Programmiermodellen 7304 bereit. In mindestens einer Ausführungsform können derartige Bibliotheken Daten und Programmiercode beinhalten, die durch Computerprogramme verwendet und während der Softwareentwicklung eingesetzt werden können. In mindestens einer Ausführungsform beinhalten solche Middlewares Software, die Dienste für Anwendungen bereitstellt, die über diejenigen hinausgehen, die von der Programmierplattform 7304 verfügbar sind. In mindestens einer Ausführungsform können die Bibliotheken und/oder Middlewares 7302 cuBLAS-, cuFFT-, cuRAND- und andere CUDA-Bibliotheken oder rocBLAS-, rocFFT-, rocRAND- und andere ROCm-Bibliotheken beinhalten, ohne darauf beschränkt zu sein. Darüber hinaus können die Bibliotheken und/oder Middlewares 7302 in mindestens einer Ausführungsform NCCL- und ROCm Communication Collectives Library („RCCL“)-Bibliotheken, die Kommunikationsroutinen für GPU bereitstellen, eine MIOpen-Bibliothek für Deep Learning-Beschleunigung und/oder eine Eigen-Bibliothek für lineare Algebra, Matrix- und Vektoroperationen, geometrische Transformationen, numerische Solver und verwandte Algorithmen beinhalten.
  • In mindestens einer Ausführungsform hängen die Anwendungs-Frameworks 7301 von den Bibliotheken und/oder Middlewares 7302 ab. In mindestens einer Ausführungsform ist jedes der Anwendungs-Frameworks 7301 ein Software-Framework, das verwendet wird, um eine Standardstruktur von Anwendungssoftware zu implementieren. Eine KI/ML-Anwendung kann in mindestens einer Ausführungsform unter Verwendung eines Frameworks, wie etwa ein Caffe-, Caffe2-, TensorFlow-, Keras-, PyTorch- oder MxNet-Deep-Learning-Framework implementiert sein.
  • 74 veranschaulicht das Kompilieren von Code zum Ausführen auf einer der Programmierplattformen der 69-72 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform empfängt ein Compiler 7401 Quellcode 7400, der sowohl Host-Code als auch Vorrichtungscode beinhaltet. In mindestens einer Ausführungsform ist der Compiler 7401 konfiguriert, um den Quellcode 7400 in einen vom Host ausführbaren Code 7402 zur Ausführung auf einem Host und in einen von der Vorrichtung ausführbaren Code 7403 zur Ausführung auf einer Vorrichtung umzuwandeln. Der Quellcode 7400 kann in mindestens einer Ausführungsform entweder offline vor der Ausführung einer Anwendung oder online während der Ausführung einer Anwendung kompiliert werden.
  • In mindestens einer Ausführungsform kann der Quellcode 7400 Code in einer beliebigen Programmiersprache beinhalten, die durch den Compiler 7401 unterstützt wird, wie etwa C++, C, Fortran usw. In mindestens einer Ausführungsform kann der Quellcode 7400 in einer Einzelquelldatei mit einer Mischung aus Host-Code und Vorrichtungscode beinhaltet sein, wobei darin Stellen des Vorrichtungscodes angegeben sind. In mindestens einer Ausführungsform kann eine Einzelquelldatei eine .cu-Datei, die CUDA-Code beinhaltet, oder eine .hip.cpp-Datei, die HIP-Code beinhaltet, sein. Alternativ kann der Quellcode 7400 in mindestens einer Ausführungsform Mehrfachquellen-Codedateien anstelle einer Einzelquelldatei beinhalten, in die Host-Code und Vorrichtungscode getrennt sind.
  • In mindestens einer Ausführungsform ist der Compiler 7401 konfiguriert, um den Quellcode 7400 in den vom Host ausführbaren Code 7402 zur Ausführung auf einem Host und in den von der Vorrichtung ausführbaren Code 7403 zur Ausführung auf einer Vorrichtung zu kompilieren. In mindestens einer Ausführungsform führt der Compiler 7401 Operationen durch, die das Parsen des Quellcodes 7400 in einen abstrakten Systembaum (abstract system tree - AST), das Durchführen von Optimierungen und das Generieren von ausführbarem Code beinhalten. In mindestens einer Ausführungsform, in der der Quellcode 7400 eine Einzelquelldatei beinhaltet, kann der Compiler 7401 den Vorrichtungscode von dem Host-Code in einer solchen Einzelquelldatei trennen, den Vorrichtungscode und den Host-Code in einen von der Vorrichtung ausführbaren Code 7403 bzw. einen vom Host ausführbaren Code 7402 kompilieren und den von der Vorrichtung ausführbaren Code 7403 und den vom Host ausführbaren Code 7402 miteinander in einer Einzeldatei verlinken
  • In mindestens einer Ausführungsform können der vom Host ausführbare Code 7402 und der von der Vorrichtung ausführbare Code 7403 in einem beliebigen geeigneten Format vorliegen, wie etwa als Binärcode und/oder IR-Code. Im Falle von CUDA kann in mindestens einer Ausführungsform der vom Host ausführbare Code 7402 nativen Objektcode beinhalten und kann der von der Vorrichtung ausführbare Code 7403 Code in einer PTX-Zwischendarstellung beinhalten. Im Falle von ROCm kann sowohl der vom Host ausführbare Code 7402 als auch der von der Vorrichtung ausführbare Code 7403 in mindestens einer Ausführungsform Ziel-Binärcode beinhalten.
  • 75 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird ein Multimediasystem als Spielsystem, Multimediakonsole, Spielkonsole und/oder Variationen davon bezeichnet. In mindestens einer Ausführungsform zeigt 75 veranschaulicht eine Gesamtsystemarchitektur einer Computerspiel-Verarbeitungsvorrichtung.
  • In mindestens einer Ausführungsform umfasst das Multimediasystem 7500 Grafikverarbeitungseinheiten (GPUs) 7502 . In mindestens einer Ausführungsform erzeugt/erzeugen die GPU(s) 7502 , optional in Verbindung mit der/den CPU(s) 7504 , Videobilder und Audio zur Ausgabe über den Audio/Video(A/V)-Ausgang 7508 . In mindestens einer Ausführungsform wird Audio in Verbindung mit oder stattdessen durch einen Audioprozessor erzeugt. In mindestens einer Ausführungsform verwenden die GPU(s) 7502 einen Videocodierer/Videocodec (z. B. Codierer/Decoder), um eine Videoverarbeitungspipeline für die Grafikverarbeitung zu bilden. In mindestens einer Ausführungsform werden Daten von GPU(s) 7502 an einen Videocodierer/Videocodec geliefert und an den A/V-Ausgang 7508 zur Übertragung an eine Anzeige ausgegeben. In mindestens einer Ausführungsform ist (sind) die GPU(s) 7502 mit einem oder mehreren Speichercontrollern verbunden, um den Zugriff auf verschiedene Arten von Speicher zu erleichtern, wie z. B. Direktzugriffsspeicher (RAM) 7506 .
  • In mindestens einer Ausführungsform ist/sind die GPU(s) 7502 Teil einer Verarbeitungseinheit, die zentrale Verarbeitungseinheiten (CPUs) 7504 umfasst. In mindestens einer Ausführungsform sind die GPU(s) 7502 und die CPU(s) 7504 Teil einer beschleunigten Verarbeitungseinheit (APU). In mindestens einer Ausführungsform umfassen die CPU(s) 7504 mindestens einen Cache der Ebene 1, einen Cache der Ebene 2 und einen Speicher. In mindestens einer Ausführungsform speichern ein Level-1-Cache und ein Level-2-Cache vorübergehend Daten und reduzieren eine Anzahl von Speicherzugriffszyklen. In mindestens einer Ausführungsform umfassen die CPU(s) 7504 mindestens einen oder mehrere Kerne und einen oder mehrere Level-Caches. In mindestens einer Ausführungsform speichert der Speicher der CPU(s) 7504 ausführbaren Code, der während eines Boot-Prozesses geladen wird, beispielsweise wenn das Multimediasystem 7500 eingeschaltet wird.
  • In mindestens einer Ausführungsform kommunizieren die GPU(s) 7502 und die CPU(s) 7504 mit dem Bus 7512 , optional über die Input/Output (I/O)-Brücke 7510 , die eine diskrete Komponente oder ein Teil der GPU(s) 7502 und sein kann CPU(s) 7504. In mindestens einer Ausführungsform sind Datenspeicherkomponenten wie Systemspeicher 7526 und Eingabedaten 7528 mit Bus 7512 verbunden. In mindestens einer Ausführungsform kommuniziert RAM 7506 auch mit Bus 7512 . In mindestens einer Ausführungsform sind Hilfsprozessor(en) 7524 mit Bus 7512 verbunden. In mindestens einer Ausführungsform werden Hilfsprozessor(en) 7524 bereitgestellt, um eine oder mehrere Software, Softwareanwendungen, Betriebssysteme und/oder Variationen davon auszuführen oder zu unterstützen, die in Verbindung mit dem Multimediasystem 7500 ausgeführt werden.
  • In mindestens einer Ausführungsform speichert der Systemspeicher 7526 Anwendungsdaten, die während eines Boot-Prozesses geladen werden. In mindestens einer Ausführungsform umfassen die Eingabedaten 7528 ein DVD/CD-Laufwerk, ein Blu-ray-Laufwerk, eine Festplatte oder ein anderes Wechselmedienlaufwerk. In mindestens einer Ausführungsform sind die Eingabedaten 7528 extern oder intern zum Multimediasystem 7500 . In mindestens einer Ausführungsform wird auf Anwendungsdaten über Eingabedaten 7528 zur Ausführung, Wiedergabe und/oder Variationen davon zugegriffen. In mindestens einer Ausführungsform sind die Eingabedaten 7528 über den Bus 7512 mit der E/A-Brücke 7510 verbunden.
  • In mindestens einer Ausführungsform sind eine oder mehrere Komponenten des Multimediasystems 7500 über einen oder mehrere Busse verbunden, einschließlich serieller und paralleler Busse, eines Speicherbusses, eines Peripheriebusses und eines Prozessors oder lokalen Busses unter Verwendung verschiedener Busarchitekturen, wie z. B. Peripherie Components Interconnects (PCI)-Bus, PCI-Express-Bus und/oder Variationen davon. In mindestens einer Ausführungsform kommuniziert das Multimediasystem 7500 gegebenenfalls mit Peripheriegeräten über einen audio/visuellen (A/V) Eingabeport 7514, einen Ethernet-Port 7516, eine drahtlose Bluetooth-Verbindung 7518 , eine drahtlose Wi-Fi-Verbindung 7520 oder eine oder mehrere universelle Serieller Bus (USB) Ports 7522. In mindestens einer Ausführungsform werden Audio und Video über die A/V-Ausgang 7508 , wie z. B. einen HDMI-Anschluss, ausgegeben.
  • In mindestens einer Ausführungsform werden Video und optional Audio des Multimediasystems 7500 über den A/V-Ausgang 7508 an ein oder mehrere Anzeigegeräte ausgegeben. In mindestens einer Ausführungsform umfassen Anzeigevorrichtungen Vorrichtungen wie etwa einen Fernseher, eine elektronische Anzeige, einen Computermonitor und/oder Variationen davon. In mindestens einer Ausführungsform wird Video in verschiedenen Formen präsentiert, wie etwa stereoskopisch. In mindestens einer Ausführungsform wird Audio über ein oder mehrere Audiogeräte in einem einer Reihe von Formaten wie etwa Stereo, 5.1-Surround-Sound oder 7.1-Surround-Sound präsentiert. In mindestens einer Ausführungsform werden Video und Audio einer am Kopf befestigten Anzeigeeinheit präsentiert, wie z. B. einem Virtual-Reality-Gerät, das von einem Benutzer getragen wird.
  • In mindestens einer Ausführungsform werden beim Booten des Multimediasystems 7500 Anwendungsdaten aus dem Systemspeicher 7526 in einen oder mehrere Speicher und/oder Caches der CPU(s) 7504 geladen und auf der/den CPU(s) 7504 ausgeführt. In mindestens einer Ausführungsform präsentiert eine Anwendung eine grafische Benutzeroberfläche, die eine Benutzererfahrung bereitstellt, wenn sie zu verschiedenen Diensten navigiert, die auf dem Multimediasystem 7500 verfügbar sind. In mindestens einer Ausführungsform werden Anwendungen, Medien und/oder Variationen davon der Eingabedaten 7528 gestartet oder von den Eingabedaten 7528 abgespielt, um dem Multimediasystem 7500 zusätzliche Funktionalitäten, Anwendungen, Medien und/oder Variationen davon bereitzustellen. In mindestens einer Ausführungsform ist das Multimediasystem 7500 dazu konfiguriert, ein ausführbares Programm, das einem Computerspiel zugeordnet ist, gemäß Anwendungsdaten aus dem Systemspeicher 7526 und Eingabedaten 7528 auszuführen.
  • 76 veranschaulicht ein verteiltes System 7600 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet das verteilte System 7600 eine oder mehrere Client-Rechenvorrichtungen 7602, 7604, 7606 und 7608, die dazu konfiguriert sind, eine Client-Anwendung, wie etwa einen Webbrowser, einen proprietären Client und/oder Variationen davon, über ein oder mehrere Netzwerke 7610 auszuführen und zu betreiben, In mindestens einer Ausführungsform kann der Server 7612 über das Netzwerk 7610 kommunikativ mit entfernten Client-Rechenvorrichtungen 7602, 7604, 7606 und 7608 gekoppelt sein.
  • In mindestens einer Ausführungsform kann der Server 7612 ausgelegt sein, um einen oder mehrere Dienste oder eine oder mehrere Softwareanwendungen auszuführen, wie etwa Dienste und Anwendungen, die Sitzungsaktivitäten des Zugriffs mit einmaliger Anmeldung (single sign-on - SSO) über mehrere Rechenzentren hinweg verwalten können. In mindestens einer Ausführungsform kann der Server 7612 auch andere Dienste bereitstellen oder können Softwareanwendungen nicht virtuelle und virtuelle Umgebungen beinhalten. In mindestens einer Ausführungsform können diese Dienste Benutzern der Client-Rechenvorrichtungen 7602, 7604, 7606 und/oder 7608 als webbasierte oder Cloud-Dienste oder im Rahmen eines Software-as-a-Service (SaaS)-Modells angeboten werden. In mindestens einer Ausführungsform können Benutzer, die Client-Rechenvorrichtungen 7602, 7604, 7606 und/oder 7608 betreiben, wiederum eine oder mehrere Client-Anwendungen nutzen, um mit dem Server 7612 zu interagieren, um durch diese Komponenten bereitgestellte Dienste zu nutzen. In mindestens einer Ausführungsform führt das verteilte System 7600 den Prozess 900 (siehe 9A) oder den Prozess 906 (siehe 9B) durch.
  • In mindestens einer Ausführungsform sind die Softwarekomponenten 7618, 7620 und 7622 des Systems 7600 auf dem Server 7612 implementiert. In mindestens einer Ausführungsform können eine oder mehrere Komponenten des Systems 7600 und/oder durch diese Komponenten bereitgestellte Dienste auch durch eine oder mehrere der Client-Rechenvorrichtungen 7602, 7604, 7606 und/oder 7608 implementiert sein. In mindestens einer Ausführungsform können Benutzer, die Client-Rechenvorrichtungen betreiben, dann eine oder mehrere Client-Anwendungen nutzen, um durch diese Komponenten bereitgestellte Dienste zu nutzen. In mindestens einer Ausführungsform können diese Komponenten in Hardware, Software, Firmware oder Kombinationen davon implementiert sein. Es versteht sich, dass verschiedene unterschiedliche Systemkonfigurationen möglich sind, die sich von dem verteilten System 7600 unterscheiden können. Die in 76 gezeigte Ausführungsform ist somit ein Beispiel eines verteilten Systems zum Implementieren einer Ausführungsform eines Systems und soll nicht einschränkend sein.
  • In mindestens einer Ausführungsform können die Client-Rechenvorrichtungen 7602, 7604, 7606 und/oder 7608 verschiedene Arten von Rechensystemen beinhalten. In mindestens einer Ausführungsform kann eine Client-Rechenvorrichtung transportable Vorrichtungen (z. B. ein iPhone®, Mobiltelefon, ein iPad®, ein Computertablet, einen persönlichen digitalen Assistenten (PDA)) oder tragbare Vorrichtungen (z. B. ein Google Glass® mit am Kopf montierter Anzeige) beinhalten, auf denen Software wie Microsoft Windows Mobile® und/oder eine Vielzahl von mobilen Betriebssystemen wie iOS, Windows Phone, Android, BlackBerry 10, Palm OS und/oder Variationen davon ausgeführt wird. In mindestens einer Ausführungsform können Vorrichtungen verschiedene Anwendungen unterstützen, wie etwa verschiedene internetbezogene Anwendungen, E-Mail, Kurznachrichtendienst(SMS)-Anwendungen und können verschiedene andere Kommunikationsprotokolle verwenden. In mindestens einer Ausführungsform können Client-Rechenvorrichtungen auch Allzweck-Personal-Computer beinhalten, einschließlich, mittels eines Beispiels, Personal-Computer und/oder Laptop-Computer, auf denen verschiedene Versionen von Microsoft Windows®, Apple Macintosh® und/oder Linux-Betriebssysteme laufen. In mindestens einer Ausführungsform können Client-Rechenvorrichtungen Workstation-Computer sein, auf denen ein beliebiges von einer Vielzahl von kommerziell erhältlichen UNIX® oder UNIX-ähnlichen Betriebssystemen läuft, einschließlich ohne Einschränkung eine Vielzahl von GNU/Linux-Betriebssystemen, wie beispielsweise Google Chrome OS. In mindestens einer Ausführungsform können Client-Rechenvorrichtungen auch elektronische Vorrichtungen beinhalten, wie etwa einen Thin-Client-Computer, ein internetfähiges Spielsystem (z. B. eine Microsoft Xbox-Spielekonsole mit oder ohne Kinect®-Gesteneingabevorrichtung) und/oder eine persönliche Nachrichtenvorrichtung, die in der Lage ist, über Netzwerk(e) 7610 zu kommunizieren. Auch wenn das verteilte System 7600 in 76 mit vier Client-Rechenvorrichtungen dargestellt ist, kann eine beliebige Anzahl von Client-Rechenvorrichtungen unterstützt werden. Andere Vorrichtungen, wie etwa Vorrichtungen mit Sensoren usw., können mit dem Server 7612 interagieren.
  • In mindestens einer Ausführungsform kann/können das/die Netzwerk(e) 7610 in dem verteilten System 7600 jede Art von Netzwerk sein, das Datenkommunikationen unter Verwendung eines beliebigen einer Vielzahl von verfügbaren Protokollen unterstützen kann, einschließlich ohne Einschränkung TCP/IP (transmission control protocol/Internet protocol - Übertragungssteuerungsprotokoll/Internetprotokoll), SNA (Systemnetzwerkarchitektur), IPX (Internet Packet Exchange), AppleTalk und/oder Variationen davon. In mindestens einer Ausführungsform kann/können das/die Netzwerk(e) 7610 ein lokales Netzwerk (LAN), Netzwerke basierend auf Ethernet, Token-Ring, ein Weitverkehrsnetzwerk, Internet, ein virtuelles Netzwerk, ein virtuelles privates Netzwerk (VPN), ein Intranet, ein Extranet, ein öffentliches Telefonnetz (PSTN), ein Infrarotnetz, ein drahtloses Netz (z. B. ein Netzwerk, das gemäß einem beliebigen von Institute of Electrical and Electronics (IEEE) 802.11 Protokollsuite, Bluetooth® und/oder einem beliebigen anderen drahtlosen Protokoll arbeitet) und/oder eine beliebige Kombination dieser und/oder anderer Netzwerke sein.
  • In mindestens einer Ausführungsform kann der Server 7612 aus einem oder mehreren Allzweckcomputern, spezialisierten Server-Computern (einschließlich mittels eines Beispiels PC(Personal Computer)-Servern, UNIX®-Servern, Midrange-Servern, Mainrahmen, Rack-montierten Servern usw.), Serverfarmen, Serverclustern oder jede andere geeignete Anordnung und/oder Kombination bestehen. In mindestens einer Ausführungsform kann der Server 7612 eine oder mehrere virtuelle Maschinen, auf denen virtuelle Betriebssysteme laufen, oder andere Rechenarchitekturen mit Virtualisierung beinhalten. In mindestens einer Ausführungsform können ein oder mehrere flexible Pools logischer Speichervorrichtungen virtualisiert werden, um virtuelle Speichervorrichtungen für einen Server zu verwalten. In mindestens einer Ausführungsform können virtuelle Netzwerke durch den Server 7612 unter Verwendung von softwaredefinierten Netzwerken gesteuert werden. In mindestens einer Ausführungsform kann der Server 7612 ausgelegt sein, um einen oder mehrere Dienste oder eine oder mehrere Softwareanwendungen auszuführen. In mindestens einer Ausführungsform umfasst der Server 7612 eine oder mehrere Hardware- und/oder Softwarekomponenten, die ein neuronales Netzwerk implementieren, wie es in Verbindung mit 77 - 81 beschrieben ist In mindestens einer Ausführungsform umfasst der Server 7612 ein oder mehrere neuronale Netze, die als als Deep-Learning-Supersampling-Netzwerke bezeichnet werden, die qualitativ hochwertige Versionen von Eingaberahmen (z. B. gerenderte Rahmen eines Computergrafikprogramms, wie z. B. eines Videospielprogramms).
  • In mindestens einer Ausführungsform kann der Server 7612 ein beliebiges Betriebssystem sowie ein beliebiges im Handel erhältliches Server-Betriebssystem ausführen. In mindestens einer Ausführungsform kann der Server 7612 auch eine beliebige einer Vielzahl zusätzlicher Serveranwendungen und/oder Mid-Tier-Anwendungen ausführen, einschließlich HTTP-Server (Hypertext Transport Protocol), FTP-Server (File Transfer Protocol), CGI-Server (Common Gateway Interface), JAVA®-Server, Datenbankserver und/oder Variationen davon. In mindestens einer Ausführungsform beinhalten beispielhafte Datenbankserver ohne Einschränkung diejenigen, die im Handel von Oracle, Microsoft, Sybase, IBM (International Business Machines) erhältlich sind, und/oder Variationen davon.
  • In mindestens einer Ausführungsform kann der Server 7612 eine oder mehrere Anwendungen beinhalten, um Datenfeeds und/oder Ereignisaktualisierungen zu analysieren und zu konsolidieren, die von Benutzern der Client-Rechenvorrichtungen 7602, 7604, 7606 und 7608 empfangen werden. In mindestens einer Ausführungsform können Datenfeeds und/oder Ereignisaktualisierungen Twitter®-Feeds, Facebook®-Aktualisierungen oder Echtzeitaktualisierungen, die von einer oder mehreren Drittanbieter-Informationsquellen empfangen werden, und kontinuierliche Datenströme, die Echtzeitereignisse in Bezug auf Sensordatenanwendungen, Finanzticker, Netzwerkleistungsmesstools (z. B. Netzwerküberwachungs- und Verkehrsverwaltungsanwendungen), Clickstream-Analysetools, Automobilverkehrsüberwachung beinhalten können, und/oder Variationen davon beinhalten, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform kann der Server 7612 auch eine oder mehrere Anwendungen beinhalten, um Datenfeeds und/oder Ereignisaktualisierungen über eine oder mehrere Anzeigevorrichtungen der Client-Rechenvorrichtungen 7602, 7604, 7606 und 7608 anzuzeigen.
  • In mindestens einer Ausführungsform kann das verteilte System 7600 zudem eine oder mehrere Datenbanken 7614 und 7616 beinhalten. In mindestens einer Ausführungsform können Datenbanken einen Mechanismus zum Speichern von Informationen bereitstellen, wie etwa Benutzerinteraktionsinformationen, Nutzungsmusterinformationen, Anpassungsregelinformationen und andere Informationen. In mindestens einer Ausführungsform können sich die Datenbanken 7614 und 7616 an einer Vielzahl von Stellen befinden. In mindestens einer Ausführungsform können sich eine oder mehrere der Datenbanken 7614 und 7616 auf einem nichttransitorischen Speichermedium lokal auf (und/oder in) dem Server 7612 befinden. In mindestens einer Ausführungsform können die Datenbanken 7614 und 7616 vom Server 7612 entfernt sein und mit dem Server 7612 über eine netzwerkbasierte oder dedizierte Verbindung kommunizieren. In mindestens einer Ausführungsform können sich die Datenbanken 7614 und 7616 in einem Speicherbereichsnetzwerk (storage-area network - SAN) befinden. In mindestens einer Ausführungsform können alle erforderlichen Dateien zum Durchführen von Funktionen, die dem Server 7612 zugeschrieben werden, je nach Bedarf lokal auf dem Server 7612 und/oder entfernt gespeichert sein. In mindestens einer Ausführungsform können die Datenbanken 7614 und 7616 relationale Datenbanken beinhalten, wie etwa Datenbanken, die ausgelegt sind, um Daten als Reaktion auf SQL-formatierte Befehle zu speichern, zu aktualisieren und abzurufen.
  • 77 veranschaulicht ein Supersampling-Neuralnetzwerk gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 7706 als Supersampling-Neuralnetzwerk, Deep-Learning-Supersampling(DLSS)-Netzwerk, Supersampling-Netzwerk und/oder Variationen davon bezeichnet. In mindestens einer Ausführungsform werden ein Eingaberahmen 7702 und Bewegungsvektoren 7704 von einem neuronalen Netzwerk 7706 verarbeitet, um einen Ausgaberahmen 7708 zu erzeugen. In mindestens einer Ausführungsform können neuronale Netze wie die in Verbindung mit 77 - 81 sind DLSS-Netzwerke. In mindestens einer Ausführungsform wird das neuronale Netzwerk 7706 verwendet, um einen Teil des Prozesses 900 (siehe 9A) oder des Prozesses 906 (siehe 9B) auszuführen, z. B. wenn ein gerendertes oder bereitgestelltes Bild Teil von DLSS in der Bildverarbeitung ist.
  • In mindestens einer Ausführungsform ist ein Eingaberahmen 7702 ein Bild. In mindestens einer Ausführungsform ist ein Eingaberahmen 7702 ein computererzeugtes Bild, das durch ein oder mehrere Computergrafikprogramme oder -software erzeugt wird. In mindestens einer Ausführungsform ist ein Eingaberahmen 7702 ein Bild, das von einem oder mehreren Bilderfassungsgeräten, wie z. B. einer Kamera, erfasst wird. In mindestens einer Ausführungsform ist ein Eingaberahmen 7702 ein Rahmen eines Satzes von Rahmen eines Videos. In mindestens einer Ausführungsform ist ein Eingaberahmen 7702 ein Rahmen eines Videos, das von einer oder mehreren Videoaufnahmevorrichtungen, wie beispielsweise einer Videokamera, aufgenommen wird. In mindestens einer Ausführungsform ist ein Eingaberahmen 7702 ein Rahmen eines computergenerierten Videos, der von einem oder mehreren Computergrafikprogrammen oder -software erzeugt wird.
  • In mindestens einer Ausführungsform ist ein Eingaberahmen 7702 ein Rendering eines zweidimensionalen (2D) Modells. In mindestens einer Ausführungsform ist ein Eingaberahmen 7702 ein Rendering eines dreidimensionalen (3D) Modells. In mindestens einer Ausführungsform wird ein Eingaberahmen 7702 durch ein Render-Computerprogramm generiert, das ein Computerprogramm ist, das ausführbare Anweisungen umfasst, die, wenn sie ausgeführt werden, Bilder basierend zumindest teilweise auf einer Szene generieren. In mindestens einer Ausführungsform bezieht sich eine Szene auf ein 2D- oder 3D-Modell. In mindestens einer Ausführungsform wird eine Szene durch verschiedene Eigenschaften definiert, wie beispielsweise Geometrie, Blickwinkel, Textur, Beleuchtung, Schattierung und/oder Variationen davon. In mindestens einer Ausführungsform erhält ein Computerprogramm eine Szene und erzeugt ein Bild einer Szene durch die Verwendung eines oder mehrerer Rendering-Algorithmen. In mindestens einer Ausführungsform ist ein Eingaberahmen 7702 ein Bild, das durch Verwendung einer oder mehrerer Lichttransport-Modellierungstechniken erzeugt wird. In mindestens einer Ausführungsform wird ein Eingaberahmen 7702 durch eine oder mehrere Rasterisierungstechniken erzeugt. In mindestens einer Ausführungsform wird ein Eingaberahmen 7702 durch eine oder mehrere Raycasting-Techniken erzeugt. In mindestens einer Ausführungsform wird ein Eingaberahmen 7702 durch eine oder mehrere Verfolgungstechniken erzeugt.
  • In mindestens einer Ausführungsform ist ein Eingaberahmen 7702 ein Rahmen, der von einem Videospielprogramm erzeugt wird. In mindestens einer Ausführungsform wird ein Videospielprogramm von einem oder mehreren Computergeräten ausgeführt, die Grafikhardware umfassen, die Echtzeit-Computergrafiken erzeugt. In mindestens einer Ausführungsform ist ein Eingaberahmen 7702 ein Rahmen, der in Echtzeit erzeugt wird. In mindestens einer Ausführungsform ist ein Eingaberahmen 7702 ein Rahmen, der vorgerendert wird. In mindestens einer Ausführungsform ist ein Eingaberahmen 7702 ein Rahmen eines Videospiels, das auf einer oder mehreren Computergrafikanzeigehardware angezeigt wird, wie z. B. einem Videoanzeigegerät, einer mobilen Vorrichtung, einem Virtual-Reality-Headset und/oder Variationen davon. In mindestens einer Ausführungsform wird ein Videospielprogramm ausgeführt und erzeugt eine 3D-Szene, in der ein Eingabeframe 7702 ein Rendering einer 3D-Szene ist. In mindestens einer Ausführungsform ist ein Eingaberahmen 7702 ein Frame, der von einer Rendervorrichtung mit verschiedenen Hardware- und Softwarebeschränkungen gerendert wird, wie z. B. Grafikhardwarebeschränkungen, Speicherbeschränkungen und/oder Variationen davon.
  • In mindestens einer Ausführungsform ist ein neuronales Netzwerk 7706 ein neuronales Netzwerk, das einen Eingaberahmen erhält und einen Ausgaberahmen erzeugt. In mindestens einer Ausführungsform ist ein neuronales Netzwerk 7706 ein Convolutional Autoencoder-Netzwerk. In mindestens einer Ausführungsform ist ein neuronales Netzwerk 7706 ein neuronales Netzwerk, das eine Version eines Eingaberahmens mit höherer Qualität erzeugt. In mindestens einer Ausführungsform umfassen Qualitäten eines Rahmens Auflösung und Aliasing, wobei ein Frame hoher Qualität eine hohe Auflösung und minimales Aliasing aufweist. In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 7706 einen Eingaberahmen und erzeugt einen Ausgaberahmen mit einer höheren Auflösung und einem geringeren Aliasing als ein Eingaberahmen. In mindestens einer Ausführungsform verarbeitet ein neuronales Netzwerk 7706 Rahmen nahezu in Echtzeit. In mindestens einer Ausführungsform bezieht sich die Verarbeitung nahezu in Echtzeit auf eine Verarbeitung, bei der Eingaben innerhalb eines Zeitintervalls verarbeitet werden, aus dem Eingaben generiert werden. In mindestens einer Ausführungsform verarbeitet ein neuronales Netzwerk 7706 Eingaberahmen nahezu in Echtzeit, so dass Eingaberahmen innerhalb eines Zeitintervalls verarbeitet werden, in dem sie erzeugt und/oder gerendert werden. In mindestens einer Ausführungsform verarbeitet ein neuronales Netzwerk 7706 einen Eingaberahmen innerhalb eines Zeitintervalls in einen Ausgaberahmen, so dass Ausgaberahmen von Eingaberahmen mit minimaler Latenz verfügbar sind. In mindestens einer Ausführungsform bezieht sich minimale Latenz auf eine Latenz, die auf oder unter einem definierten Latenzzeitintervallschwellenwert liegt. In mindestens einer Ausführungsform sind Ausgaberahmen, die von Eingaberahmen mit minimaler Latenz verfügbar sind, innerhalb eines definierten Zeitintervalls verfügbar, das jeder geeignete Wert sein kann, wie etwa Sekunden, Bruchteile einer Sekunde und/oder Variationen davon. In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 7706 einen Frame eines Videospiels und erzeugt einen Ausgaberahmen mit hoher Auflösung und minimalem Aliasing. In mindestens einer Ausführungsform wird ein neuronales Netz 7706 mit Hilfe verschiedener Trainingstechniken für neuronale Netze trainiert, wie sie in Verbindung mit 78 beschrieben sind... In mindestens einer Ausführungsform werden Ausgaberahmen mit einer Rate erzeugt, die für einen Menschen als kontinuierliche Bewegung wahrgenommen werden kann, was sich auf Bildfrequenz über einem bestimmten Schwellenwert beziehen kann. In mindestens einer Ausführungsform werden Ausgaberahmen mit einer Zielrate von oder über 20 Rahmen pro Sekunde (fps) erzeugt, einschließlich oder nicht beschränkt auf 23,976 fps, 24 fps, 25 fps, 29,97 fps, 30 fps, 48 fps, 50 fps, 59,94 fps, 60 fps, 90 fps, 120 fps, 240 fps und jede andere angepeilite Bildfrequenz. In mindestens einer Ausführungsform kann es einem Rechnersystem an Rechenressourcen fehlen, um Rahmen mit hoher Qualität kontinuierlich mit einer Zielframerate (z. B. 4k-Auflösung bei 60 fps) zu rendern und stattdessen Rahmen mit niedrigerer Auflösung zu rendern, die unter Verwendung des neuronalen Netzwerks 7706 superabgetastet werden Erreichen des Ziel-Rahmens (z. B. Rendern einer 1080p-Auflösung bei 60 fps und Super-Sample auf 4k-Auflösung).
  • In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 7706 einen Eingaberahmen 7702 . In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 7706 einen Eingaberahmen 7702 von einem Videospielprogramm, das auf einem oder mehreren Rechenvorrichtungen ausgeführt wird, wie etwa einer Videospielkonsole, einem Rechner, einer mobilen Vorrichtung und/oder Variationen davon. In mindestens einer Ausführungsform stellt ein Rechnerprogramm, wie etwa ein Videospielprogramm, Computergrafikprogramm, Renderprogramm und/oder Variationen davon, einen Eingaberahmen 7702 an ein neuronales Netzwerk 7706 über eine oder mehrere Schnittstellen bereit, wie etwa durch Übertragung ein oder mehrere Computernetzwerke, die über eine oder mehrere Datenübertragungsschnittstellen und/oder Variationen davon übertragen werden. In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 7706 einen Eingaberahmen 7702 , der ein Bild ist, das von einem Videospielprogramm erzeugt wird. In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 7706 einen Eingaberahmen 7702 und zugeordnete Bewegungsvektoren 7704 , die angeben, in welche Richtung sich Objekte in einer Szene (z. B. einer in einem Eingaberahmen 7702 abgebildeten Szene) bewegen. In mindestens einer Ausführungsform ist ein Bewegungsvektor ein Vektor, der eine Einheit in einem Einzelbild darstellt, basierend auf einer Position einer Einheit in einem vorherigen Einzelbild. In mindestens einer Ausführungsform gibt ein Bewegungsvektor eine Bewegung oder Bewegungsrichtung einer Einheit eines Rahmens einer Szene an. In mindestens einer Ausführungsform umfassen Bewegungsvektoren 7704 eine Sammlung von einem oder mehreren Bewegungsvektoren, die Bewegungen oder Bewegungsrichtungen von Entitäten und/oder Objekten eines Eingaberahmens 7702 anzeigen. In mindestens einer Ausführungsform erzeugt ein Programm wie etwa ein Videospielprogramm sowohl den Eingaberahmen 7702 als auch die Bewegungsvektoren 7704 .
  • In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 7706 einen Eingaberahmen 7702 und Bewegungsvektoren 7704 und erzeugt einen Ausgaberahmen 7708. In mindestens einer Ausführungsform erzeugt ein neuronales Netzwerk 7706 einen Ausgaberahmen 7708 aus einem Eingaberahmen 7702 und/oder zugehörigen Bewegungsvektoren 7704. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 7706 unter Verwendung einer hochqualitativen Version eines Eingaberahmens 7702 trainiert, wobei das trainierte neuronale Netzwerk 7706 einen Ausgaberahmen 7708 generiert, um mit einer hochqualitativen Version des Eingaberahmens 7702 übereinzustimmen. In mindestens einer Ausführungsform ist ein Ausgaberahmen 7708 eine hochskalierte/höher Auflösungsversion eines Eingaberahmens 7702 . In mindestens einer Ausführungsform ist ein Ausgaberahmen 7708 eine höher aufgelöste Version eines Eingaberahmen 7702. In mindestens einer Ausführungsform weist ein Ausgaberahmen 7708 einen geringeren Aliasing-Grad als ein Eingaberahmen 7702 auf. In mindestens einer Ausführungsform ist ein Ausgaberahmen 7708 eine qualitativ bessere Darstellung eines Eingaberahmen 7702. In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 7706 ein Eingaberahmen 7702, bei dem es sich um ein Echtzeit-Rendering einer Szene eines Videospiels handelt, und zugehörige Bewegungsvektoren 7704, und erzeugt einen Ausgaberahmen 7708, bei dem es sich um eine qualitativ hochwertige Version eines Eingaberahmens 7702 handelt.
  • 78 veranschaulicht eine Architektur eines Supersampling-Neuralnetzwerks gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 7806 als neuronales Supersampling-Netzwerk, DLSS-Netzwerk, Supersampling-Netzwerk und/oder Variationen davon bezeichnet. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 7806 trainiert, Ausgaberahmen 7808 aus Eingaberahmen 7802 und Bewegungsvektoren 7804 zu erzeugen. In mindestens einer Ausführungsform werden als Teil des Trainierens eines neuronalen Netzwerks 7806 Ausgaberahmens 7808 , die von einem neuronalen Netzwerk 7806 erzeugt werden, mit Referenzrahmen 7810 verglichen, um das neuronale Netzwerk 7806 zu aktualisieren.
  • In mindestens einer Ausführungsform handelt es sich bei den Eingaberahmen 7802 um Eingaberahmen, wie sie in Verbindung mit 77 beschrieben sind. In mindestens einer Ausführungsform umfassen die Eingaberahmen 7802 ein oder mehrere Bilder, die als Rahmen bezeichnet werden. In mindestens einer Ausführungsform sind die eingegebenen Einzelbilder 7802 Einzelbilder (z. B. Bilder), die von einer oder mehreren Bild- und/oder Videoaufnahmevorrichtungen aufgenommen wurden. In mindestens einer Ausführungsform umfassen Eingaberahmen 7802 ein oder mehrere Renderings einer Szene. In mindestens einer Ausführungsform umfassen Eingaberahmen 7802 Rahmen, die von einem Videospielprogramm erzeugt werden. In mindestens einer Ausführungsform wird ein Videospielprogramm von einem oder mehreren Computervorrichtung(-en) ausgeführt, die Grafikhardware umfassen, die Echtzeit-Rechnergrafiken erzeugt. In mindestens einer Ausführungsform sind die Eingaberahmen 7802 Rahmen, die vorgerendert werden. In mindestens einer Ausführungsform wird ein Videospielprogramm ausgeführt und erzeugt eine 3D-Szene, wobei die Eingaberahmen 7802 Renderings einer 3D-Szene umfassen. In mindestens einer Ausführungsform ist Eingaberahmen 7802 ein Rahmen, der von einer Rendervorrichtung mit verschiedenen Hardware- und Softwarebeschränkungen gerendert wird, wie z. B. Grafikhardwarebeschränkungen, Speicherbeschränkungen und/oder Variationen davon. In mindestens einer Ausführungsform sind Eingaberahmen 7802 Rahmen, die mit minimalen Nachbearbeitungstechniken gerendert werden, wie etwa Anti-Aliasing (z. B. umfassen Eingaberahmen 7802 Rahmen, die mit einem geringen oder keinem Grad an Anti-Aliasing gerendert werden).
  • In mindestens einer Ausführungsform umfassen Nachbearbeitungstechniken für gerenderte Rahmen Techniken und Effekte wie z. B.: Umgebungsverdeckung (z. B. horizontbasierte Umgebungsverdeckung (HBAO), Screen Space Ambient Occlusion (SSAO)), Anti-Aliasing (z. B. Fast Approximate Anti-Aliasing (FXAA), Super-Sample Anti-Aliasing (SSAA), Multi-Sampling Anti-Aliasing (MSAA), Temporal Anti-Aliasing (TXAA)), Bloom, Blur (z. B., Tiefenschärfe, Bewegungsunschärfe), Cel-Shading, chromatische Aberration, Farbkorrektur, Gammakorrektur, Rendering mit hohem Dynamikbereich, Partikeleffekte, Schattierung, Schattenabbildung, Schärfen, Entschärfen, Hochskalierung, Texturfilterung (z. B. punktuell, linear, bilinear, trilinear, anisotrop) und/oder Variationen davon. In mindestens einer Ausführungsform sind Eingaberahmen 7802 Rahmen, die mit wenig bis gar keinen Nachbearbeitungstechniken und/oder -effekten gerendert werden.
  • In mindestens einer Ausführungsform sind Bewegungsvektoren 7804 ein Set aus einem oder mehreren Vektoren, die Bewegungsrichtungen von Objekten von Rahmen von Eingaberahmen 7802 angeben. In mindestens einer Ausführungsform ist ein Bewegungsvektor ein Vektor, der eine Einheit in einem Einzelbild darstellt, basierend auf einer Position einer Einheit in einem vorherigen Einzelbild. In mindestens einer Ausführungsform gibt ein Bewegungsvektor eine Bewegung oder Bewegungsrichtung einer Einheit eines Rahmens einer Szene an. In mindestens einer Ausführungsform werden Bewegungsvektoren 7804 von einem Programm erzeugt, das Eingaberahmen 7802 gerendert hat und Eingaberahmen 7802 entspricht, in denen ein erster Satz von Bewegungsvektoren von Bewegungsvektoren 7804 einem ersten Rahmen von Eingaberahmen 7802 entspricht und Bewegung anzeigt von Objekten und/oder Einheiten, die in einem ersten Rahmen von Eingaberahmen 7802 dargestellt sind. In mindestens einer Ausführungsform entspricht ein erster Satz von Bewegungsvektoren von Bewegungsvektoren 7804 einem ersten Rahmen von Eingaberahmen 7802 und gibt die Bewegung von Objekten eines ersten Rahmen von Eingaberahmen 7802 an (z. B. Richtungen und/oder Orte, an denen sich Objekte befinden ein erster Rahmen von Eingaberahmen 7802 wird möglicherweise in einem nachfolgenden Rahmen von Eingaberahmen 7802 sein oder sich dorthin bewegen). In mindestens einer Ausführungsform umfassen Bewegungsvektoren 7804 Bewegungsvektoren, die von einem Videospielprogramm erzeugt werden. In mindestens einer Ausführungsform wird ein Videospielprogramm ausgeführt und erzeugt eine 3D-Szene, in der die Bewegungsvektoren 7804 Vektoren umfassen, die die Bewegung von Objekten und/oder Einheiten einer 3D-Szene angeben.
  • In mindestens einer Ausführungsform umfassen die Referenzrahmen 7810 ein oder mehrere Bilder, die als Rahmen bezeichnet werden. In mindestens einer Ausführungsform entsprechen Referenzrahmen 7810 Eingaberahmen 7802 (z. B. entspricht jeder Rahmen von Referenzrahmen 7810 einem Rahmen von Eingaberahmen 7802). In mindestens einer Ausführungsform umfassen Referenzrahmen 7810 ein oder mehrere Renderings einer Szene. In mindestens einer Ausführungsform umfassen Referenzrahmen 7810 Rahmen, die von einem Videospielprogramm erzeugt werden. In mindestens einer Ausführungsform sind Referenzrahmen 7810 Rahmen, die mit verschiedenen Nachbearbeitungstechniken und/oder -effekten gerendert werden. In mindestens einer Ausführungsform sind die Referenzrahmen 7810 höherwertige Versionen der EingabeRahmen 7802 . In mindestens einer Ausführungsform wird ein erster Frame von Eingaberahmen 7802 aus einer Szene unter Verwendung von minimalen Nachbearbeitungstechniken und/oder -effekten gerendert, und ein erster Rahmen von Referenzrahmen 7810 wird aus derselben Szene unter Verwendung von Nachbearbeitungstechniken und/oder - effekten gerendert . In mindestens einer Ausführungsform sind Referenzrahmen 7810 Rahmen, die unter Verwendung von 64x Supersampling (64xSS) gerendert werden.
  • In mindestens einer Ausführungsform handelt es sich bei den Referenzrahmen 7810 um Rahmen, die von einem oder mehreren Supercomputern gerendert werden, wie sie in Verbindung mit 38 beschrieben sind. In mindestens einer Ausführungsform sind Eingaberahmen 7802 und Referenzrahmen 7810 Rahmen, die von derselben Computergrafikanwendung oder demselben Computergrafikprogramm (z. B. demselben Videospielprogramm) gerendert werden. In mindestens einer Ausführungsform werden Referenzrahmen 7810 und Bewegungsvektoren von einem oder mehreren Rendervorrichtung(-en) erzeugt, in denen Eingaberahmen 7802 und Bewegungsvektoren 7804 aus erzeugten Referenzrahmen 7810 und Bewegungsvektoren durch einen oder mehrere Prozesse, wie z. B. Herunterskalierung, erhalten werden Referenzrahmen 7810 und/oder Bewegungsvektoren, um Eingaberahmen 7802 und Bewegungsvektoren 7804 zu erhalten, Entfernen einer oder mehrerer Nachbearbeitungstechniken und/oder -effekte von erzeugten Referenzrahmen 7810 und/oder Bewegungsvektoren, um Eingaberahmen 7802 und Bewegungsvektoren 7804 zu erhalten, und Variationen davon. In mindestens einer Ausführungsform erzeugen ein oder mehrere Rendervorrichtung(-en) Eingaberahmen 7802, Bewegungsvektoren 7804 und/oder Referenzrahmen 7810 aus einer bestimmten Computergrafikanwendung oder einem Programm (z. B. einem Videospielprogramm).
  • In mindestens einer Ausführungsform wird ein neuronales Netzwerk 7806 darauf trainiert, Eingaberahmen 7802 und Bewegungsvektoren 7804 zu verarbeiten und Ausgaberahmen 7808 zu erzeugen, die den entsprechenden Referenzrahmen 7810 sehr nahe kommen oder mit ihnen übereinstimmen. In mindestens einer Ausführungsform erzeugen und speichern ein oder mehrere Rendervorrichtung(-en) durch eine oder mehrere Computergrafikanwendungen oder -programme Eingaberahmen 7802 , Bewegungsvektoren 7804 und Referenzrahmen 7810 , in denen ein oder mehrere Systeme gespeicherte Eingaberahmen 7802 abrufen. Bewegungsvektoren 7804 und Referenzrahmen 7810, um ein neuronales Netzwerk 7806 zu trainieren.Rendervorrichtung(-en) In mindestens einer Ausführungsform ist ein neuronales Netzwerk 7806 ein Convolutional Autoencoder-Netzwerk. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 7806 unter Verwendung von Rahmen und/oder Bewegungsvektoren aus einer bestimmten Computergrafikanwendung oder einem bestimmten Computergrafikprogramm (z. B. einem Videospielprogramm) trainiert und ist verwendbar, um Rahmen für eine bestimmte Computergrafikanwendung oder ein bestimmtes Computergrafikprogramm zu erzeugen. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 7806 darauf trainiert, qualitativ hochwertige Versionen von Eingaberahmen 7802 (z. B. hochskalierte/höher aufgelöste Rahmen, Anti-Aliasing-Rahmen) als Ausgaberahmen 7808 zu erzeugen. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 7806 darauf trainiert, Rahmen von Eingaberahmens 7802 als Ausgaberahmens 7808 hochzuskalieren und zu antialiasieren. In mindestens einer Ausführungsform verwendet ein neuronales Netzwerk 7806 Bewegungsvektoren 7804 zum Erzeugen von Ausgaberahmen 7808. In mindestens einer Ausführungsform erzeugt ein neuronales Netzwerk 7806 einen ersten Ausgaberahmen von Ausgaberahmen 7808 aus Eingaberahmen 7802 und Bewegungsvektoren 7804 , erzeugt einen zweiten Ausgaberahmen von Ausgaberahmen 7808 aus einem ersten Ausgaberahmen von Ausgaberahmen 7808 , Eingaberahmen 7802 , und Bewegungsvektoren 7804 und so weiter für nachfolgende Ausgaberahmen der Ausgaberahmen 7808 . In mindestens einer Ausführungsform wendet ein neuronales Netzwerk 7806 Sets von Bewegungsvektoren von Bewegungsvektoren 7804 auf Rahmen von Ausgaberahmen 7808 an, um nachfolgende Rahmen von Ausgaberahmen 7808 zu erzeugen. In mindestens einer Ausführungsform verwendet ein neuronales Netzwerk 7806 Bewegungsvektoren 7804 als Teil eines oder mehrerer zeitlicher Feedback-Prozesse, die Bewegungsvektoren auf Ausgaberahmen anwenden, um nachfolgende Ausgaberahmen zu erzeugen.
  • In mindestens einer Ausführungsform sind Ausgaberahmen 7808 höherwertige Versionen von Eingaberahmen 7802 , die sich auf verschiedene Qualitäten beziehen können, wie etwa höhere Auflösung, höhere Grade verschiedener Nachbearbeitungstechniken und/oder Effekte und/oder Variationen davon. In mindestens einer Ausführungsform wird ein Videospielprogramm in Verbindung mit einer oder mehreren Computergrafikhardware ausgeführt, in der ein Frame gerendert und in ein neuronales Netzwerk 7806 eingegeben wird, in dem das neuronale Netzwerk 7806 einen entsprechenden Frame höherer Qualität (z. ein hochskalierter und/oder geglätteter Rahmen). In mindestens einer Ausführungsform wird ein neuronales Netzwerk 7806 trainiert, Rahmen (z. B. Ausgaberahmen 7808) mit verschiedenen Nachbearbeitungstechniken und/oder Effekten aus Rahmen (z. B. Eingaberahmen 7802) mit minimalen Nachbearbeitungstechniken und/oder Effekten auszugeben. In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 7806 einen Rahmen und entsprechende Bewegungsvektoren, wie beispielsweise einen Rahmen und Bewegungsvektoren von Eingaberahmen 7802 bzw. Bewegungsvektoren 7804 , und erzeugt einen entsprechenden Ausgaberahmen hoher Qualität, wie beispielsweise einen Rahmen von Ausgaberahmen 7808 (z. B. ein Rahmen mit verschiedenen Nachbearbeitungstechniken und/oder -effekten, wie etwa ein hochskalierter Rahmen, ein Anti-Aliasing-Rahmen, ein hochskalierter und Anti-Aliasing-Rahmen und/oder Variationen davon). In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 7806 einen Eingaberahmen (z. B. einen Rahmen von Eingaberahmen 7802 ), einen vorherigen Ausgaberahmen (z. B. einen zuvor erzeugten Ausgaberahmen von Ausgaberahmen 7808) und Bewegungsvektoren (z. B. Bewegung Vektoren von Bewegungsvektoren 7804) und erzeugt einen Ausgaberahmen (z. B. einen nachfolgenden Ausgaberahmen von Ausgaberahmen 7808).
  • In mindestens einer Ausführungsform wird ein neuronales Netzwerk 7806 trainiert und/oder aktualisiert, indem generierte Ausgaberahmen 7808 mit Referenzrahmen 7810 verglichen werden. In mindestens einer Ausführungsform wird ein neuronales Netz 7806 trainiert und in Verbindung mit 77 verwendet. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 7806 von einem oder mehreren Systemen trainiert oder anderweitig aktualisiert, die ein Trainingsframework wie PyTorch, TensorFlow, Boost, Caffe, Microsoft Cognitive Toolkit/CNTK, MXNet, Chainer, Keras, Deeplearning4j oder ein anderes geeignetes Trainingsframework verwenden. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 7806 trainiert, indem Ausgaberahmens 7808 mit Referenzrahmen 7810 verglichen werden, Unterschiede zwischen Ausgaberahmens 7808 undReferenzrahmen 7810 bestimmt werden und ermittelte Unterschiede verwendet werden, um Gewichtungen und andere Komponenten des neuronalen Netzwerks 7806 zu aktualisieren, so dass Unterschiede zwischen Ausgaberahmen 7808 und Referenzrahmen 7810 minimiert werden.
  • In mindestens einer Ausführungsform wird das Training zumindest auf überwachte, teilweise überwachte und/oder nicht überwachte Weise durchgeführt. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 7806 darauf trainiert, Eingaberahmen 7802 mit Referenzrahmen 7810 abzugleichen. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 7806 durch ein oder mehrere System(e) trainiert, die das neuronale Netzwerk 7806 veranlassen, einen Ausgaberahmen von Ausgaberahmen 7808 aus einem Rahmen von Eingaberahmen 7802 zu erzeugen und eine Differenz zwischen einem Ausgaberahmen von Ausgaberahmen zu messen 7808 und einem entsprechenden Referenzrahmen 7810. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 7806 von einem oder mehreren Systemen trainiert, die bewirken, dass das neuronale Netzwerk 7806 einen Rahmen von Eingaberahmen 7802 erhält und eine oder mehrere Bildverarbeitungs-/Erzeugungs-/Rendering-Operationen des neuronalen Netzwerks durchführt (z. B. neue Pixel generiert). , vorhandene Pixel modifizieren), um einen Ausgaberahmen von Ausgaberahmen 7808 zu erzeugen, einen Ausgaberahmen von Ausgaberahmen 7808 mit einem entsprechenden Rahmen von Referenzrahmen 7810 zu vergleichen und Gewichte des neuronalen Netzwerks 7806 zumindest teilweise basierend auf einem Vergleich einer Ausgabe anzupassen Rahmen von Ausgaberahmen 7808 mit einem entsprechenden Rahmen von Referenzrahmen 7810. In mindestens einer Ausführungsform wird ein Rahmen von Ausgaberahmen 7808 mit einem Rahmen von Referenzrahmen 7810 verglichen, indem Pixel beider Rahmen miteinander verglichen werden. In mindestens einer Ausführungsform werden Rahmen verglichen, indem Pixeleigenschaften von Rahmen verglichen werden (z. B. Pixelintensität, Pixelhelligkeit, Pixelfarbe, Pixelkontrast) und Unterschiede in Pixeleigenschaften gemessen werden (z. B. Unterschiede in Pixelintensität, Pixelhelligkeit, Pixelfarbe, Pixelkontrast zwischen Pixeln von Rahmen). In mindestens einer Ausführungsform wird ein neuronales Netz 7806 mit Hilfe eines oder mehrerer Backpropagation-Verfahren in Verbindung mit einer oder mehreren Verlustfunktionen trainiert. In mindestens einer Ausführungsform wird ein neuronales Netz 7806 unter Verwendung verschiedener hierin beschriebener Techniken trainiert, wie z. B. der in Verbindung mit 36 beschriebenen.
  • 79 veranschaulicht ein Beispiel für Streaming unter Verwendung eines neuronalen Supersampling-Neuralnetzwerks gemäß mindestens einer Ausführungsform; In mindestens einer Ausführungsform verarbeitet ein neuronales Netzwerk 7908 Rahmen 7906 , die von Rendervorrichtung(en) 7904 erzeugt wurden, um Ausgaberahmen 7910 zu erzeugen, die über Netzwerk(e) 7912 zu einer streamingfähigen Vorrichtung 7914 gestreamt werden. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 7908 als DLSS-Netzwerk, Supersampling-Neuralnetzwerk, Supersampling-Netzwerk und/oder Variationen davon bezeichnet. In mindestens einer Ausführungsform wird ein neuronales Netz 7908 mit Techniken trainiert, wie sie in Verbindung mit 78 beschrieben sind. In mindestens einer Ausführungsform wird das neuronale Netzwerk 7208 im Prozess 900 (siehe 9A) oder im Prozess 906 (siehe 9B) verwendet, z. B. als Teil der DLSS-Berechnung oder Bildwiedergabe.
  • In mindestens einer Ausführungsform ist ein Server 7902 eine Sammlung von einer oder mehreren Computerhardware- und/oder Softwarekomponenten. In mindestens einer Ausführungsform stellt ein Server 7902 anderen Programmen oder Vorrichtungen, die als Clients bezeichnet werden, verschiedene Funktionen zur Verfügung. In mindestens einer Ausführungsform stellt ein Server 7902 Streaming-Dienste bereit. In mindestens einer Ausführungsform beziehen sich Streaming-Dienste auf Dienste, die einem Benutzer Streaming-Medien bereitstellen. In mindestens einer Ausführungsform beziehen sich Streaming-Medien auf Multimedia (z. B. Video, Audio), das ständig von einem Benutzer empfangen und einem Benutzer präsentiert wird, während es von einem Anbieter geliefert wird. In mindestens einer Ausführungsform stellt ein Server 7902 Streaming-Dienste bereit. In mindestens einer Ausführungsform stellt ein Server 7902 Dienste bereit, bei denen Rahmen eines Videospiels ständig von einem Benutzer empfangen und einem Benutzer präsentiert werden, während sie von einem Server 7902 geliefert/erzeugt werden. In mindestens einer Ausführungsform umfasst ein Server 7902 eine oder mehrere Rendervorrichtung(-en) 7904 . In mindestens einer Ausführungsform umfasst ein Server 7902 eine oder mehrere Hardware- und/oder Softwarekomponenten, die ein neuronales Netz 7908 implementieren. In mindestens einer Ausführungsform umfasst ein Server 7902 eine oder mehrere Datenspeicherkomponenten (z. B. Festplatten), die eine Speicherung und Verarbeitung von Rahmen 7906 und Ausgaberahmen 7910 bereitstellen.
  • In mindestens einer Ausführungsform umfassen die Rendervorrichtung(-en) 7904 eine oder mehrere Computergrafik-Rendering-Hardware- und/oder - softwarekomponenten. In mindestens einer Ausführungsform umfassen die Rendervorrichtung(-en) 7904 eine oder mehrere Grafikverarbeitungseinheiten. In mindestens einer Ausführungsform umfassen die Rendervorrichtung(en) 7904 eine oder mehrere Rechenvorrichtungen, die Grafiken erzeugen und/oder rendern. In mindestens einer Ausführungsform umfassen die Wiedergabevorrichtung(en) 7904 eine oder mehrere Rechenvorrichtungen, die Wiedergaben von einem Videospiel erzeugen. In mindestens einer Ausführungsform rendern die Rendervorrichtung(-en) 7904 Rahmen eines Videospiels oder eines anderen Computergrafikprogramms. In mindestens einer Ausführungsform rendern die Rendervorrichtung(en) 7904 unter Verwendung von Eingabedaten von einem Computergrafikprogramm (z. B. einem Videospielprogramm) den Rahmen bzw. die Rahmen 7906 .
  • In mindestens einer Ausführungsform handelt es sich bei den Rahmen 7906 um Rahmen, die durch die Rendervorrichtung(en) 7904 gerendert werden. In mindestens einer Ausführungsform sind Rahmen 7906 Bewegungsvektoren zugeordnet, die Bewegungsrichtungen von Objekten von Rahmen 7906 anzeigen. In mindestens einer Ausführungsform werden Rahmen 7906 und zugeordnete Bewegungsvektoren von Renderivorrichtung(en) 7904 erzeugt. In mindestens einer Ausführungsform umfassen Rahmen 7906 Rahmen, die von einem bestimmten Videospielprogramm erzeugt werden. In mindestens einer Ausführungsform wird ein Videospielprogramm von einem oder mehreren Computervorrichtung(-en) ausgeführt, die Grafikhardware (z.B. Rendervorrichtung(en) 7904) umfassen, die Echtzeit-Rechnergrafiken erzeugt. In mindestens einer Ausführungsform wird ein Videospielprogramm ausgeführt, das eine 3D-Szene erzeugt, wobei Rahmen 7906 aus Renderings einer 3D-Szene bestehen. In mindestens einer Ausführungsform ist Eingaberahmen 7906 ein Rahmen, der von einer Rendervorrichtung mit verschiedenen Hardware- und Softwarebeschränkungen gerendert wird, wie z. B. Grafikhardwarebeschränkungen, Speicherbeschränkungen und/oder Variationen davon. In mindestens einer Ausführungsform sind Rahmen 7906 Rahmen, die mit minimalen Nachbearbeitungstechniken gerendert werden, wie etwa Anti-Aliasing (z. B. umfassen Rahmen 7906 Rahmen, die mit einem geringen oder keinem Grad an Anti-Aliasing gerendert werden).
  • In mindestens einer Ausführungsform umfasst ein neuronales Netzwerk 7908 ein oder mehrere neuronale Netzwerke, die Rahmen hoher Qualität aus Eingaberahmen erzeugen. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 7908 unter Verwendung von Rahmen aus einer bestimmten Computergrafikanwendung oder einem bestimmten Computergrafikprogramm (z. B. einem Videospielprogramm) trainiert und ist verwendbar, um Rahmen für eine bestimmte Computergrafikanwendung oder ein bestimmtes Computergrafikprogramm zu erzeugen. In mindestens einer Ausführungsform wird ein neuronales Netz 7908 so trainiert, dass es qualitativ hochwertige Versionen von Rahmen 7906 (z. B. hochskalierte Bilder/höher aufgelöste Rahmen, entzerrte Rahmen) erzeugt. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 7908 darauf trainiert, Rahmen von Rahmen 7906 hochzuskalieren und Anti-Aliasing durchzuführen. In mindestens einer Ausführungsform wird ein Videospielprogramm in Verbindung mit einer oder mehreren Computergrafikhardware ausgeführt, in der ein Frame gerendert und in ein neuronales Netzwerk 7908 eingegeben wird (z. B. werden Rahmen 7906 durch Renderivorrichtung(en) gerendert) 7904 und Eingabe in das neuronale Netzwerk 7908), in dem das neuronale Netzwerk 7908 einen entsprechenden Rahmen höherer Qualität (z. B. einen hochskalierten und/oder Anti-Aliasing-Rahmen) erzeugt. In mindestens einer Ausführungsform wird ein neuronales Netz 7908 so trainiert, dass es Ausgaberahmen mit verschiedenen Nachbearbeitungstechniken und/oder Effekten von Rahmen mit minimalen Nachbearbeitungstechniken und/oder Effekten unterscheidet. In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 7908 einen Rahmen und entsprechende Bewegungsvektoren und erzeugt einen entsprechenden Ausgaberahmen hoher Qualität (z. B. einen Rahmen mit verschiedenen Nachbearbeitungstechniken und/oder -effekten, wie etwa einen hochskalierten Rahmen, einen Anti- aliased Rahmen, ein hochskalierter und geglätteter Rahmen und/oder Variationen davon). In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 7908 Rahmen 7906 und Bewegungsvektoren und erzeugt Ausgaberahmen 7910. In mindestens einer Ausführungsform verwendet ein neuronales Netzwerk 7908 einen oder mehrere zeitliche Feedback-Prozesse, die Ausgaberahmen von Ausgaberahmen 7910 in Verbindung mit Rahmen 7906 und zugehörigen Bewegungsvektoren verarbeiten, um nachfolgende Rahmen von Ausgaberahmen 7910 zu erzeugen.
  • In mindestens einer Ausführungsform entsprechen der/die Ausgaberahmen 7910 dem/den Rahmen 7906 (z. B. entspricht jeder Rahmen des Ausgaberahmens/der Ausgaberahmen 7910 einem Rahmen des Rahmens/der Rahmen 7906). In mindestens einer Ausführungsform sind Ausgaberahmen 7910 Rahmen, die mit verschiedenen Nachbearbeitungstechniken und/oder -effekten erzeugt werden. In mindestens einer Ausführungsform sind der/die Ausgaberahmen 7910 höherwertige Versionen von Rahmen 7906. In mindestens einer Ausführungsform umfassen der/die Ausgaberahmen 7910 hochskalierte (z. B. höhere Auflösung) und/oder geglättete Versionen von Rahmen 7906.
  • In mindestens einer Ausführungsform umfassen das/die Netzwerk(e) 7912 ein beliebiges geeignetes Computerkommunikationsnetzwerk, wie z. B. das Internet. In mindestens einer Ausführungsform sind das/die Netzwerk(e) 7912 kryptografisch geschützt, verschlüsselt oder anderweitig gesichert. In mindestens einer Ausführungsform umfassen das/die Netzwerk(e) 7912 einen oder mehrere Computernetzwerk-Kommunikationskanäle, in denen Daten gesendet und empfangen werden. In mindestens einer Ausführungsform stellen das/die Netzwerk(e) 7912 Verfahren zur Kommunikation zwischen einem Server 7902 und einer streamingfähigen Vorrichtung 7914 bereit. In mindestens einer Ausführungsform werden Ausgaberahmen 7910 von einem Server 7902 über Netzwerk(e) 7912 zu einer streamingfähigen Vorrichtung 7914 übertragen.
  • In mindestens einer Ausführungsform ist eine streamingfähige Vorrichtung 7914 eine Rechenvorrichtung, das in der Lage ist, Multimedia über ein oder mehrere Netzwerke zu empfangen. In mindestens einer Ausführungsform ist eine streamingfähige Vorrichtung 7914 eine Vorrichtung mit eingeschränkten Fähigkeiten zum Rendern von Grafiken, das keine Rahmen wie Ausgaberahmen 7910 rendern kann, aber über Netzwerk(e) 7912 auf einen Server 7902 zugreifen kann, um es zu erhalten Ausgaberahmen 7910. In mindestens einer Ausführungsform ist eine streamingfähige Vorrichtung 7914 eine streamingfähige Rechenvorrichtung, so dass das streamingfähige Vorrichtung 7914 verschiedene Hardware- und/oder Softwarekomponenten umfasst, die ständig Multimedia von einem oder mehreren Netzwerken empfangen und/oder erhalten. In mindestens einer Ausführungsform ist eine streamingfähige Vorrichtung 7914 eine Rechenvorrichtung wie etwa ein Mobiltelefon, ein Laptop, ein Rechner, eine Spielekonsole, ein Tablet und/oder Variationen davon. In mindestens einer Ausführungsform umfasst eine streamingfähige Vorrichtung 7914 eine oder mehrere Computernetzwerkkomponenten, wie z. B. verschiedene Empfänger, Sender und/oder Transceiver, die über ein oder mehrere Netzwerke übertragene Multimediadaten erhalten und verarbeiten. In mindestens einer Ausführungsform ist eine streamingfähige Vorrichtung 7914 von einem oder mehreren Benutzern bedienbar. In mindestens einer Ausführungsform empfängt eine streamingfähige Vorrichtung 7914 Ausgaberahmen 7910 über Netzwerk(e) 7912. In mindestens einer Ausführungsform empfängt eine streamingfähige Vorrichtung 7914 Ausgaberahmen 7910 in Verbindung mit einem oder mehreren Programmen, die auf der streamingfähigen Vorrichtung 7914 ausgeführt werden, die Ausgaberahmen 7910 anzeigen und/oder verarbeiten.
  • In mindestens einer Ausführungsform umfasst eine streamingfähige Vorrichtung 7914 ein oder mehrere Softwareprogramme und/oder Anwendungen, die den/die erhaltenen Ausgaberahmen 7910 verarbeitet/verarbeiten und den/die Ausgaberahmen 7910 bereitstellt/bereitstellen, um von einem oder mehreren Benutzern betrachtet (z. B. über eine elektronische visuelle Anzeige der streamingfähigen Vorrichtung 7914) und/oder mit ihnen interagiert zu werden (z. B. über verschiedene Benutzereingabehardware der streamingfähigen Vorrichtung 7914). In mindestens einer Ausführungsform umfasst ein streamingfähige Vorrichtung 7914 eine oder mehrere elektronische visuelle Anzeigehardware, wie z. B. eine Flüssigkristallanzeige (LCD), eine Leuchtdiodenanzeige (LED) und/oder Variationen davon, und einen oder mehrere Benutzer Eingabehardware, wie Computermaus, Tastatur, Gaming-Controller und/oder Variationen davon, die Benutzer verwenden, um mit einem oder mehreren Softwareprogrammen und/oder Anwendungen zu interagieren, die auf der streamingfähigen Vorrichtung 7914 ausgeführt werden. In mindestens einer Ausführungsform liefert ein streamingfähigen Vorrichtung 7914 Hinweise auf Benutzereingaben an einen Server 7902 über Netzwerk(e) 7912 , in denen Rahmen 7906 von Rendervorrichtung(-en) 7904 mindestens teilweise basierend auf dem Benutzer generiert werden Eingang.
  • In mindestens einer Ausführungsform wird ein Videospielprogramm auf einem Server 7902 ausgeführt, wobei Rahmen 7906 Rahmen eines Videospielprogramms sind, wobei Rahmen 7906 von Rendering-Vorrichtung(en) 7904 gerendert und verarbeitet und als Ausgaberahmen 7910 an eine streamingfähige Vorrichtung 7914 übertragen werden, wobei ein Benutzer mit der streamingfähigen Vorrichtung 7914 in Verbindung mit dem/den Ausgaberahmen 7910 interagiert (z. B., Ausgaberahmen 7910 sind Rahmen eines Videospielprogramms, die eine Interaktion erfordern, bei denen ein Benutzer eine Interaktion in die streamingfähige Vorrichtung 7914 eingibt), wobei Benutzerinteraktionen an den Server 7902 zu einem Videospielprogramm übertragen werden, um zu bestimmen, wie nachfolgende Rahmen eines Videospielprogramms durch die Renderingvorrichtung(en) 7904 gerendert werden sollen. In mindestens einer Ausführungsform werden Rahmen 7906 zumindest teilweise auf der Grundlage von Eingang eines Benutzers in Verbindung mit einer streamingfähigen Vorrichtung 7914 gerendert und von einem neuronalen Netz 7908 verarbeitet, um Ausgaberahmen 7910 zu erzeugen, wobei die Ausgaberahmen 7910 an die streamingfähige Vorrichtung 7914 übertragen werden, wobei weitere Benutzereingaben von der streamingfähigen Vorrichtung 7914 empfangen und an den Server 7902 übertragen werden, um nachfolgende Rahmen zu erzeugen, die dann vom neuronalen Netz 7908 verarbeitet und an die streamingfähige Vorrichtung 7914 übertragen werden, und so weiter für nachfolgende Rahmen und nachfolgende Benutzereingaben.
  • 80 veranschaulicht ein Beispiel für eine Simulation unter Verwendung eines Super-Sampling-Neuralnetzes gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform verarbeitet ein neuronales Netz 8008 das/die von der/den Rendervorrichtung(en) 8004 erzeugte(n) Bild(er) 8006, um das/die Ausgabebild(er) 8010 zu erzeugen, die an die Simulatoranzeige(n) 8012 ausgegeben werden. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 8008 als DLSS-Netzwerk, Supersampling-Neuralnetzwerk, Supersampling-Netzwerk und/oder Variationen davon bezeichnet. In mindestens einer Ausführungsform wird ein neuronales Netz 8008 mit Techniken trainiert, wie sie in Verbindung mit 78 beschrieben sind.
  • In mindestens einer Ausführungsform umfasst ein Simulator 8002, der mit einem Supersampling-Neuralnetzwerk ausgestattet ist, eine Sammlung von einer oder mehreren Computerhardware- und/oder -softwarekomponenten. In mindestens einer Ausführungsform umfasst ein Simulator 8002, der mit einem Supersampling-Neuralnetzwerk ausgestattet ist, eine oder mehrere Rendervorrichtung(-en) 8004. In mindestens einer Ausführungsform umfasst ein Simulator 8002, der mit einem Supersampling-Neuralnetzwerk ausgestattet ist, eine oder mehrere Hardware- und/oder Softwarekomponenten, die ein neuronales Netzwerk 8008 implementieren. In mindestens einer Ausführungsform umfasst Simulator 8002, der mit einem Supersampling-Neuralnetzwerk ausgestattet ist, eine oder mehrere Datenspeicherkomponenten (z. B. Festplatten), die eine Speicherung und Verarbeitung von Rahmen 8006 und Ausgaberahmens 8010 bereitstellen.
  • In mindestens einer Ausführungsform ist ein Simulator 8002, der mit einem Supersampling-Neuralnetzwerk ausgestattet ist, eine Simulatorvorrichtung, wie z. B. ein Flugsimulator, ein Fahrsimulator und/oder Variationen davon, das verschiedene Simulatorprogramme ausführt, wie z. B. Flugsimulatorprogramme, Fahrsimulatorprogramme und/oder Variationen davon. In mindestens einer Ausführungsform ist ein Flugsimulator eine Vorrichtung, das den Flug eines Flugzeugs und eine Umgebung, in der es fliegt, künstlich nachbildet. In mindestens einer Ausführungsform simuliert ein Flugsimulator durch Ausführung eines Flugsimulatorprogramms verschiedene Flugaspekte, wie beispielsweise die Physik, wie Flugzeuge fliegen, wie Flugzeuge auf Anwendungen verschiedener Flugsteuerungen reagieren, Effekte anderer Flugzeugsysteme und Effekte von Faktoren wie Turbulenz, Luftdichte, Windscherung, Bewölkung, Niederschlag, Wetter und/oder Schwankungen davon in Flugzeugen. In mindestens einer Ausführungsform umfasst ein Flugsimulator (z. B. ein Simulator 8002, der mit einem neuronalen Supersampling-Neuralnetzwerk ausgestattet ist) eine oder mehrere Hardwarekomponenten, die ein Flugzeug simulieren, wie z. B. Hardware eines Cockpits eines Flugzeugs, die eine Benutzerinteraktion mit einem Flugsimulator ermöglichen (z. B. umfassen Hardwarekomponenten verschiedene Benutzereingabevorrichtungen, wie z. B. ein Lenkrad, eine Steuerung, einen Joystick, Knöpfe, Schalter, Hebel und/oder Variationen davon). In mindestens einer Ausführungsform umfasst ein Flugsimulator eine oder mehrere Anzeigen (z. B. Simulatoranzeige(n) 8012), mit denen Benutzer in Verbindung mit Hardware eines Flugsimulators interagieren, um verschiedene Flugaspekte zu simulieren. In mindestens einer Ausführungsform ist ein Fahrsimulator eine Vorrichtung, die die Bewegung eines Kraftfahrzeugs und eine Umgebung, in der es sich bewegt, künstlich nachbildet. In mindestens einer Ausführungsform simuliert ein Fahrsimulator durch Ausführen eines Fahrsimulatorprogramms verschiedene Aspekte des Betriebs eines Kraftfahrzeugs, wie beispielsweise die Physik eines Kraftfahrzeugs, wie ein Kraftfahrzeug auf Anwendungen verschiedener Kraftfahrzeugsteuerungen reagiert, Effekte von anderen Kraftfahrzeugsystemen und Auswirkungen von Faktoren wie Umweltveränderungen, Wind, Wetter und/oder Schwankungen davon auf Kraftfahrzeuge. In mindestens einer Ausführungsform umfasst ein Fahrsimulator (z. B. ein Simulator 8002, der mit einem Supersampling-Neuralnetzwerk ausgestattet ist) eine oder mehrere Hardwarekomponenten, die ein Kraftfahrzeug simulieren, wie z. B. die Hardware eines Fahrersitzes eines Kraftfahrzeugs, die eine Benutzerinteraktion mit einem Fahrsimulator ermöglichen (z. B. umfassen die Hardwarekomponenten verschiedene Benutzereingabegeräte, wie ein Lenkrad, Pedale, einen Controller, einen Joystick, Tasten, Schalter, Hebel und/oder Variationen davon). In mindestens einer Ausführungsform umfasst ein Fahrsimulator eine oder mehrere Anzeigen (z. B. Simulatoranzeige(n) 8012), mit denen Benutzer in Verbindung mit Hardware eines Fahrsimulators interagieren, um verschiedene Aspekte des Fahrens oder eines anderen Kraftfahrzeugbetriebs zu simulieren. In mindestens einer Ausführungsform sind die Simulatoranzeige(n) 8012 Anzeigen eines Simulators 8002, der mit einem neuronalen Supersampling-Neuralnetzwerk ausgestattet ist.
  • In mindestens einer Ausführungsform umfassen die Rendervorrichtung(-en) 8004 eine oder mehrere Computergrafik-Rendering-Hardware- und/oder - softwarekomponenten. In mindestens einer Ausführungsform umfassen die Rendervorrichtung(-en) 8004 eine oder mehrere Grafikverarbeitungseinheiten. In mindestens einer Ausführungsform umfassen die Rendervorrichtung(en) 8004 eine oder mehrere Rechenvorrichtungen, die Grafiken erzeugen und/oder rendern. In mindestens einer Ausführungsform umfassen die Rendervorrichtung(-en) 8004 eine oder mehrere Rechenvorrichtungen, die Wiedergaben von einem Computergrafikprogramm erzeugen, wie etwa einem Videospiel, einem Simulationsprogramm, einem Simulationsvideospiel und/oder Variationen davon. In mindestens einer Ausführungsform rendern die Rendervorrichtung(en) 8004 unter Verwendung von Eingabedaten von einem Computergrafikprogramm (z. B. einem Simulationsprogramm) den Rahmen bzw. die Rahmen 8006.
  • In mindestens einer Ausführungsform handelt es sich bei den Rahmen 8006 um Rahmen, die durch die Rendervorrichtung(en) 8004 gerendert werden. In mindestens einer Ausführungsform sind Rahmen 8006 Bewegungsvektoren zugeordnet, die Bewegungsrichtungen von Objekten von Rahmen 8006 anzeigen. In mindestens einer Ausführungsform werden Rahmen 8006 und zugeordnete Bewegungsvektoren von Rendervorrichtung(en) 8004 erzeugt. In mindestens einer Ausführungsform umfassen Rahmen 8006 Rahmen, die durch ein bestimmtes Simulationsprogramm erzeugt werden, wie etwa ein Flugsimulatorprogramm, ein Fahrsimulatorprogramm und/oder Variationen davon. In mindestens einer Ausführungsform wird ein Simulationsprogramm von einem oder mehreren Rechenvorrichtungen ausgeführt, die Grafikhardware (z.B. Rendervorrichtung(en) 8004) umfassen, die Echtzeit-Rechnergrafiken erzeugt. In mindestens einer Ausführungsform wird ein Simulationsprogramm ausgeführt, das eine 3D-Szene erzeugt, wobei Rahmen 8006 aus Renderings einer 3D-Szene bestehen. In mindestens einer Ausführungsform sind Rahmen 8006 Rahmen, die mit minimalen Nachbearbeitungstechniken gerendert werden, wie etwa Anti-Aliasing (z. B. umfassen Rahmen 8006 Rahmen, die mit einem geringen oder keinem Grad an Anti-Aliasing gerendert werden).
  • In mindestens einer Ausführungsform umfasst ein neuronales Netzwerk 8008 ein oder mehrere neuronale Netzwerke, die Rahmen hoher Qualität aus Eingaberahmen erzeugen. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 8008 unter Verwendung von Rahmen aus einer bestimmten Computergrafikanwendung oder einem bestimmten Computergrafikprogramm (z. B. einem Simulationsprogramm) trainiert und ist verwendbar, um Rahmen für eine bestimmte Computergrafikanwendung oder ein bestimmtes Computergrafikprogramm zu erzeugen. In mindestens einer Ausführungsform wird ein neuronales Netz 8008 so trainiert, dass es qualitativ hochwertige Versionen von Rahmen 8006 (z. B. hochskalierte Bilder/höher aufgelöste Rahmen, entzerrte Rahmen) erzeugt. In mindestens einer Ausführungsform wird ein Simulationsprogramm in Verbindung mit einer oder mehreren Computergrafikhardware ausgeführt, in der ein Frame gerendert und in ein neuronales Netzwerk 8008 eingegeben wird (z. B. werden Rahmen 8006 durch Renderivorrichtung(en) gerendert) 8004 und Eingabe in das neuronale Netzwerk 8008), in dem das neuronale Netzwerk 8008 einen entsprechenden Rahmen höherer Qualität (z. B. einen hochskalierten und/oder Anti-Aliasing-Rahmen) erzeugt. In mindestens einer Ausführungsform wird ein neuronales Netz 8008 so trainiert, dass es Ausgaberahmen mit verschiedenen Nachbearbeitungstechniken und/oder Effekten von Rahmen mit minimalen Nachbearbeitungstechniken und/oder Effekten unterscheidet. In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 8008 einen Rahmen und entsprechende Bewegungsvektoren und erzeugt einen entsprechenden Ausgaberahmen hoher Qualität (z. B. einen Rahmen mit verschiedenen Nachbearbeitungstechniken und/oder -effekten, wie etwa einen hochskalierten/höher aufgelösten Rahmen, einen Anti- aliased Rahmen, ein hochskalierter und geglätteter Rahmen und/oder Variationen davon). In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 8008 Rahmen 8006 und Bewegungsvektoren und erzeugt Ausgaberahmen 8010. In mindestens einer Ausführungsform verwendet ein neuronales Netzwerk 8008 einen oder mehrere zeitliche Feedback-Prozesse, die Ausgaberahmen von Ausgaberahmen 8010 in Verbindung mit Rahmen 8006 und zugehörigen Bewegungsvektoren verarbeiten, um nachfolgende Rahmen von Ausgaberahmen 8010 zu erzeugen.
  • In mindestens einer Ausführungsform entsprechen der/die Ausgaberahmen 8010 dem/den Rahmen 8006 (z. B. entspricht jeder Rahmen des Ausgaberahmens/der Ausgaberahmen 8010 einem Rahmen des Rahmens/der Rahmen 8006). In mindestens einer Ausführungsform sind Ausgaberahmen 8010 Rahmen, die mit verschiedenen Nachbearbeitungstechniken und/oder -effekten erzeugt werden. In mindestens einer Ausführungsform sind der/die Ausgaberahmen 8010 höherwertige Versionen von Rahmen 8006. In mindestens einer Ausführungsform umfassen Ausgaberahmen 8010 hochskalierte und/oder geglättete Versionen von Rahmen 8006. In mindestens einer Ausführungsform werden die Ausgaberahmen 8010 auf der/den Simulatoranzeige(n) 8012 als Teil des Betriebs eines oder mehrerer Simulatoren angezeigt (z. B. ein Simulator 8002, der mit einem Supersampling-Neuralnetzwerk ausgestattet ist), wie z. B. ein Flugsimulator, der ein Flugsimulatorprogramm ausführt, ein Fahrsimulator, der ein Fahrsimulatorprogramm ausführt, und/oder Variationen davon. In mindestens einer Ausführungsform bedient ein Benutzer einen Simulator 8002 mit Supersampling-Neuralnetzwerk und führt eine oder mehrere Aktionen durch eine oder mehrere Benutzereingabevorrichtungen aus, basierend mindestens teilweise auf dem/den Ausgaberahmen 8010, der/die auf der Simulatoranzeige angezeigt wird(n). s) 8012.
  • 81 veranschaulicht das Beispiel einer Vorrichtung unter Verwendung eines Supersampling-Neuralnetzwerks gemäß mindestens einer Ausführungsform; In mindestens einer Ausführungsform verarbeitet ein neuronales Netzwerk 8106 Rahmen 8104 , die von einem Multimediasystem 8102 erzeugt wurden, um Ausgaberahmen 8108 zu erzeugen, die an Multimediasystemanzeige(n) 8110 ausgegeben werden. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 8106 als DLSS-Netzwerk, Supersampling-Neuralnetzwerk, Supersampling-Netzwerk und/oder Variationen davon bezeichnet. In mindestens einer Ausführungsform wird ein neuronales Netz 8106 mit Techniken trainiert, wie sie in Verbindung mit 78 beschrieben sind.
  • In mindestens einer Ausführungsform ist ein Multimediasystem 8102 eine Sammlung von einer oder mehreren Computerhardware- und/oder Softwarekomponenten. In mindestens einer Ausführungsform umfasst ein Multimediasystem 8102 eine oder mehrere Rendervorrichtung(-en). In mindestens einer Ausführungsform umfasst ein Multimediasystem 8102 eine oder mehrere Hardware- und/oder Softwarekomponenten, die ein neuronales Netz 8106 implementieren. In mindestens einer Ausführungsform umfasst ein Multimediasystem 8102 eine oder mehrere Datenspeicherkomponenten (z. B. Festplatten), die für die Speicherung und Verarbeitung von Rahmen 8104 und Ausgaberahmen 8108 sorgen. In mindestens einer Ausführungsform handelt es sich bei dem Multimediasystem 8102 um eine Spielkonsole, wie sie in 75 beschrieben ist. In mindestens einer Ausführungsform ist ein Multimediasystem 8102 eine beliebige geeignete Rechenvorrichtung, die Multimedia verarbeitet, wie etwa ein Computer, ein Tablet, ein Spielgerät, eine Spielkonsole, ein mobiles Gerät und/oder Variationen davon. In mindestens einer Ausführungsform sind die Multimediasystemanzeige(n) 8110 eine oder mehrere elektronische visuelle Anzeigehardware, die Daten (z. B. Multimedia, Videospiele) von einem Multimediasystem 8102 anzeigen. In mindestens einer Ausführungsform sind die Multimediasystemanzeige(n) 8110 Anzeigen eines Multimediasystems 8102 .
  • In mindestens einer Ausführungsform umfasst ein Multimediasystem 8102 eine oder mehrere Hardware- und/oder Softwarekomponenten zum Rendern von Computergrafiken. In mindestens einer Ausführungsform umfasst ein Multimediasystem 8102 eine oder mehrere Grafikverarbeitungseinheiten. In mindestens einer Ausführungsform umfasst ein Multimediasystem 8102 ein oder mehrere Rechenvorrichtungen, die Grafiken erzeugen und/oder wiedergeben. In mindestens einer Ausführungsform umfasst ein Multimediasystem 8102 einen oder mehrere Prozessoren, die verschiedene Programme ausführen, wie etwa Videospielprogramme, Softwareanwendungen, Softwareprogramme und/oder Variationen davon. In mindestens einer Ausführungsform umfasst ein Multimediasystem 8102 ein oder mehrere Rechenvorrichtungen, die Renderings von einem Computergrafikprogramm, wie z. B. einem Videospiel, erzeugen. In mindestens einer Ausführungsform rendert ein Multimediasystem 8102 unter Verwendung von Eingabedaten aus einem Computergrafikprogramm, das auf dem Multimediasystem 8102 ausgeführt wird (z. B. ein Videospielprogramm), Bild(er) 8104. In mindestens einer Ausführungsform umfasst ein Multimediasystem 8102 eine oder mehrere Hardwarekomponenten, die eine Benutzerinteraktion mit einem Multimediasystem 8102 ermöglichen (z. B. umfassen Hardwarekomponenten verschiedene Benutzereingabegeräte, wie z. B. Steuerungen, Joysticks, Knöpfe, Schalter, Hebel und/oder Variationen davon). In mindestens einer Ausführungsform ist ein Multimediasystem 8102 mit einem oder mehreren Benutzereingabegeräten verbunden, die es Benutzern ermöglichen, mit verschiedenen Programmen zu interagieren, die auf einem Multimediasystem 8102 (z. B. Videospielprogrammen) ausgeführt werden.
  • In mindestens einer Ausführungsform handelt es sich bei dem/den Rahmen 8104 um Bilder, die von einem Multimediasystem 8102 gerendert werden. In mindestens einer Ausführungsform sind Rahmen 8104 Bewegungsvektoren zugeordnet, die Bewegungsrichtungen von Objekten von Rahmen 8104 anzeigen. In mindestens einer Ausführungsform werden Rahmen 8104 und zugehörige Bewegungsvektoren von einem Multimediasystem 8102 generiert. In mindestens einer Ausführungsform umfassen Rahmen 8104 Rahmen, die von einem bestimmten Videospielprogramm erzeugt werden. In mindestens einer Ausführungsform wird ein Videospielprogramm von einem oder mehreren Rechenvorrichtungen ausgeführt, die Grafikhardware (z.B. Multimediasystem 8102) umfassen, die Echtzeit-Rechnergrafiken erzeugt. In mindestens einer Ausführungsform wird ein Videospielprogramm ausgeführt, das eine 3D-Szene erzeugt, wobei Rahmen 8104 aus Renderings einer 3D-Szene bestehen. In mindestens einer Ausführungsform sind Rahmen 8104 Rahmen, die mit minimalen Nachbearbeitungstechniken gerendert werden, wie etwa Anti-Aliasing (z. B. umfassen Rahmen 8104 Rahmen, die mit einem geringen oder keinem Grad an Anti-Aliasing gerendert werden).
  • In mindestens einer Ausführungsform umfasst ein neuronales Netzwerk 8106 ein oder mehrere neuronale Netzwerke, die Rahmen hoher Qualität aus Eingaberahmen erzeugen. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 8106 unter Verwendung von Rahmen aus einer bestimmten Computergrafikanwendung oder einem bestimmten Computergrafikprogramm (z. B. einem Videospielprogramm) trainiert und ist verwendbar, um Rahmen für eine bestimmte Computergrafikanwendung oder ein bestimmtes Computergrafikprogramm zu erzeugen. In mindestens einer Ausführungsform wird ein neuronales Netz 8106 so trainiert, dass es qualitativ hochwertige Versionen von Rahmen 8104 (z. B. hochskalierte Bilder/höher aufgelöste Rahmen, entzerrte Rahmen) erzeugt. In mindestens einer Ausführungsform wird ein Videospielprogramm in Verbindung mit einer oder mehreren Computergrafik-Hardware(n) ausgeführt, wobei ein Rahmen gerendert und in ein neuronales Netzwerk 8106 eingegeben wird (z. B. werden Rahmen 8104 von einem Multimediasystem 8102 gerendert und in das neuronale Netzwerk 8106 eingegeben), wobei das neuronale Netzwerk 8106 einen entsprechenden Rahmen höherer Qualität erzeugt (z. B. einen hochskalierten Rahmen mit höherer Auflösung und/oder einen Rahmen mit Anti-Aliasing). In mindestens einer Ausführungsform wird ein neuronales Netz 8106 so trainiert, dass es Ausgaberahmen mit verschiedenen Nachbearbeitungstechniken und/oder Effekten von Rahmen mit minimalen Nachbearbeitungstechniken und/oder Effekten unterscheidet. In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 8106 einen Rahmen und entsprechende Bewegungsvektoren und erzeugt einen entsprechenden Ausgaberahmen hoher Qualität (z. B. einen Rahmen mit verschiedenen Nachbearbeitungstechniken und/oder -effekten, wie etwa einen hochskalierten/höher aufgelösten Rahmen, einen Anti- aliased Rahmen, ein hochskalierter und geglätteter Rahmen und/oder Variationen davon). In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 8106 Rahmen 8104 und Bewegungsvektoren und erzeugt Ausgaberahmen 8108. In mindestens einer Ausführungsform verwendet ein neuronales Netzwerk 8106 einen oder mehrere zeitliche Feedback-Prozesse, die Ausgaberahmen von Ausgaberahmen 8108 in Verbindung mit Rahmen 8104 und zugehörigen Bewegungsvektoren verarbeiten, um nachfolgende Rahmen von Ausgaberahmen 8108 zu erzeugen.
  • In mindestens einer Ausführungsform entspricht/entsprechen der/die Ausgaberahmen 8108 dem/den Rahmen 8104 (z. B. entspricht jeder Rahmen des/der Ausgaberahmen 8108 einem Rahmen des/der Rahmen 8104). In mindestens einer Ausführungsform sind Ausgaberahmen 8108 Rahmen, die mit verschiedenen Nachbearbeitungstechniken und/oder -effekten erzeugt werden. In mindestens einer Ausführungsform sind der/die Ausgaberahmen 8108 höherwertige Versionen von Rahmen 8104. In mindestens einer Ausführungsform umfassen Ausgaberahmen 8108 hochskalierte und/oder geglättete Versionen von Rahmen 8104. In mindestens einer Ausführungsform erzeugt ein neuronales Netz 8106 ständig Ausgaberahmen von Ausgaberahmen 8108, während Rahmen von Rahmen 8104 von einem Multimediasystem 8102 gerendert werden. In mindestens einer Ausführungsform werden Ausgaberahmen 8108 auf Multimediaanzeige(n) 8110 als Teil des Betriebs eines oder mehrerer Videospielprogramme angezeigt. In mindestens einer Ausführungsform bedient ein Benutzer ein Multimediasystem 8102 und führt über eine oder mehrere Benutzereingabevorrichtung(-en) eine oder mehrere Aktionen aus, die zumindest teilweise auf (einem) Ausgaberahmen 8108 basieren, die auf (einem) Multimediaanzeigen(s) 8110 angezeigt werden.
  • Mindestens eine Ausführungsform der Offenbarung kann im Hinblick auf die folgenden Absätze beschrieben werden:
    • Klausel 1: Das computerimplementierte Verfahren zum Erzeugen einer Textur, wobei das Verfahren umfasst:
      • Empfangen einer Textur, die zwei oder mehr Pixel enthält;
      • Berechnen eines Texturenergiewerts für die Textur basierend auf einer Energiefunktion,
      • wobei die Energiefunktion auf einem Abstand zwischen einem Pixelpaar der zwei oder mehr Pixel und einem oder mehreren konfigurierbaren Parametern basiert,
      • wobei der Texturenergiewert auf einer Summierung von Pixelenergiewerten für Pixel in der Textur basiert,
      • wobei ein Pixelenergiewert für jedes Pixel in dem Pixelpaar einen Nicht-Null-Wert als Ergebnis von mindestens einem von Folgendem umfasst: das Pixelpaar befindet sich in einer gleichen mehrdimensionalen Schicht, oder das Pixelpaar hat identische Koordinaten bei verschiedenen zeitlichen Schnitten;
      • Austauschen von Pixelpositionen von Pixelpaaren in der Textur, bis der Texturenergiewert basierend auf der Energiefunktion einen minimalen Energiewert erreicht; und
      • Erzeugen einer Ausgabetextur, die Ausgabepixel enthält, basierend auf der Textur mit minimalem Energiewert, die auf Bilddaten anzuwenden ist.
    • Klausel 2: Das computerimplementierte Verfahren nach Klausel 1, wobei die Textur eine Textur mit weißem Rauschen ist.
    • Klausel 3: Das computerimplementierte Verfahren nach einer der vorhergehenden Klauseln, wobei die Energiefunktion ferner auf einem oder mehreren Sample-Werten basiert, die dem Pixelpaar zugeordnet sind.
    • Klausel 4: Das computerimplementierte Verfahren nach einer der vorhergehenden Klauseln, wobei mindestens ein Pixel der zwei oder mehr Pixel mindestens einem entspricht von: einem oder mehreren Vektoren, einem oder mehreren Punkten auf einem Netz oder einem oder mehr Objekte mit mehr als drei Dimensionen, und wobei die Ausgabetextur auf Bilddaten anzuwenden ist, die Vektoren, Punkte auf einem Netz oder Objekte mit mehr als drei Dimensionen enthalten.
    • Klausel 5: Das computerimplementierte Verfahren nach einer der vorhergehenden Klauseln, wobei das Verfahren vor dem Berechnen des Energiewerts für die Textur ferner Folgendes umfasst:
      • Sampling von einem oder mehreren Pixeln, die den Bilddaten entsprechen, wobei jedes Pixel einer Zufallsvariablen entspricht, wobei das Sampling von einem oder mehreren Pixeln dem Bestimmen eines Wertes für eine Wahrscheinlichkeitsdichtefunktion für ein Pixel entspricht, und wobei das Sampling das Reduzieren einer Varianz von Samples durch Schrägstellen von Samples in Richtung von Regionen mit höherer Energie auf der Grundlage der Energiefunktion umfasst.
    • Klausel 6: Das computerimplementierte Verfahren nach einer der vorhergehenden Klauseln, wobei der eine oder die mehreren konfigurierbaren Parameter einen ersten konfigurierbaren Parameter und einen zweiten konfigurierbaren Parameter umfassen, wobei der erste konfigurierbare Parameter einen Gaußschen Wert umfasst und der zweite konfigurierbare Parameter umfasst ein anderer Gaußscher Wert als der erste konfigurierbare Parameter.
    • Klausel 7: Das computerimplementierte Verfahren nach einer der vorhergehenden Klauseln, wobei das Verfahren ferner Folgendes umfasst:
      • vor dem Berechnen des Energiewerts für die Textur, Sampling eines oder mehrerer Pixel entsprechend den Bilddaten, wobei jedes Pixel einer Zufallsvariablen entspricht, wobei das Sampling eines oder mehrerer Pixel mindestens eines umfasst von: Bestimmen eines Werts für eine Wahrscheinlichkeitsdichte Funktion für ein Pixel oder Durchführen eines ungleichmäßigen Sampling.
    • Klausel 8: Das computerimplementierte Verfahren nach einem der vorangegangenen Klauseln, das ferner umfasst:
      • Anwenden einer Sequenz mit geringer Diskrepanz auf die Ausgabetextur, um jedem Ausgabepixel eine zusätzliche Dimension hinzuzufügen.
    • Klausel 9: Das computer-implementierte Verfahren nach Anspruch 1, das ferner umfasst:
      • Eingeben eines oder mehrerer skalarer Ausgabepixelwerte in eine raumfüllende Kurvenfunktion, um einen oder mehrere Pixelwerte auszugeben, die Vektoren sind.
    • Klausel 10: Das computerimplementierte Verfahren nach einem der vorangegangenen Klauseln, das ferner umfasst:
      • Schichtung der Textur in Schichten über die Zeit;
      • Berechnen eines Schichtungswerts basierend auf einer Anzahl von Pixelwerten in jeder Schicht, in der sich ein Pixel des Pixelpaars befindet; und
      • Ablehnen eines Austauschs von Pixeln, wenn der Austausch den Schichtungswert erhöht.
    • Klausel 11: Das computerimplementierte Verfahren nach einem der vorangegangenen Klauseln, das ferner umfasst:
      • Anwenden eines Tiefpassfilters auf die Bilddaten.
    • Klausel 12: Das computerimplementierte Verfahren nach einem der vorangegangenen Klauseln, wobei das Vertauschen ferner das Auswählen von zwei oder mehr zufälligen Paaren von zu vertauschenden Pixeln umfasst.
    • Klausel 13: Ein Prozessor, umfassend:
      • eine oder mehrere Verarbeitungseinheiten zum Ausführen einer Vielzahl von Operationen, einschließlich:
        • Empfangen einer Textur, die zwei oder mehr Pixel enthält;
      • Berechnen eines Texturenergiewerts für die Textur basierend auf einer Energiefunktion,
      • wobei die Energiefunktion auf einem Abstand zwischen einem Pixelpaar der zwei oder mehr Pixel und einem oder mehreren konfigurierbaren Parametern basiert,
      • wobei der Texturenergiewert auf einer Summierung von Pixelenergiewerten für Pixel in der Textur basiert,
      • wobei ein Pixelenergiewert für jedes Pixel in dem Pixelpaar einen Nicht-Null-Wert als Ergebnis von mindestens einem von Folgendem umfasst: das Pixelpaar befindet sich in einer gleichen mehrdimensionalen Schicht, oder das Pixelpaar hat identische Koordinaten bei verschiedenen zeitlichen Schnitten;
      • Austauschen von Pixelpositionen von Pixelpaaren in der Textur, bis der Texturenergiewert basierend auf der Energiefunktion einen minimalen Energiewert erreicht;
      • Erzeugen einer Ausgabetextur, die Ausgabepixel enthält, basierend auf der Textur mit minimalem Energiewert, die auf Bilddaten anzuwenden ist; und
      • Rendering eines Ausgabebildes über mehrere Rahmen basierend auf dem Anwenden der Textur auf das eine oder die mehreren Bilder.
    • Klausel 14 : der Prozessor nach Klausel 13, wobei Sampling von einem oder mehreren Pixeln, die den Bilddaten entsprechen, wobei jedes Pixel einer Zufallsvariablen entspricht, wobei das Sampling von einem oder mehreren Pixeln dem Bestimmen eines Wertes für eine Wahrscheinlichkeitsdichtefunktion für ein Pixel entspricht, und wobei das Sampling das Reduzieren einer Varianz von Samples durch Schrägstellen von Samples in Richtung von Regionen mit höherer Energie auf der Grundlage der Energiefunktion umfasst.
    • Klausel 15: Der Prozessor nach Klausel 13 oder 14, wobei die Textur eine Textur mit weißem Rauschen ist.
    • Klausel 16: der Prozessor nach einer der Klauseln 13-15, wobei die Pixel Vektoren, Punkten auf einem Netz oder Objekten mit mehr als drei Dimensionen entsprechen und wobei die Ausgabetextur auf Bilddaten anzuwenden ist, die Vektoren enthalten , Punkte auf einem Netz oder Objekte mit mehr als drei Dimensionen.
    • Klausel 17: der Prozessor nach einer der Klauseln 13-16, wobei die Vorgänge ferner Folgendes umfassen:
      • Sampling von einem oder mehreren Pixeln, die den Bilddaten entsprechen, wobei jedes Pixel einer Zufallsvariablen entspricht, wobei das Sampling von einem oder mehreren Pixeln dem Bestimmen eines Wertes für eine Wahrscheinlichkeitsdichtefunktion für ein Pixel entspricht, und wobei das Sampling das Reduzieren einer Varianz von Samples durch Schrägstellen von kosinusgewichteten Samples in Richtung von Regionen mit höherer Energie auf der Grundlage der Energiefunktion umfasst.
    • Klausel 18: der Prozessor nach einer der Klauseln 13-17, wobei die Operationen ferner Folgendes umfassen:
      • Anwenden eines Rang-1-Gitters, um der Ausgabetextur eine zusätzliche Dimension hinzuzufügen.
    • Klausel 19: der Prozessor nach einer der Klauseln 13-18, wobei die Operationen ferner Folgendes umfassen:
      • Eingabe von Ausgabepixelwerten, die skalar sind, in eine raumfüllende Kurvenfunktion, um Pixelwerte auszugeben, die Vektoren sind.
    • Klausel 20: ein computerlesbares Speichermedium, auf dem eine oder mehrere Anweisungen gespeichert sind, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, einen oder mehrere Prozessoren veranlassen, Operationen auszuführen, die Folgendes umfassen:
      • Empfangen einer Textur, die zwei oder mehr Pixel enthält;
      • Berechnen eines Texturenergiewerts für die Textur basierend auf einer Energiefunktion,
      • wobei die Energiefunktion auf einem Abstand zwischen einem Pixelpaar der zwei oder mehr Pixel und einem oder mehreren konfigurierbaren Parametern basiert,
      • wobei der Texturenergiewert auf einer Summierung von Pixelenergiewerten für Pixel in der Textur basiert,
      • wobei ein Pixelenergiewert für jedes Pixel in dem Pixelpaar einen Nicht-Null-Wert als Ergebnis von mindestens einem von Folgendem umfasst: das Pixelpaar befindet sich in einer gleichen mehrdimensionalen Schicht, oder das Pixelpaar hat identische Koordinaten bei verschiedenen zeitlichen Schnitten;
      • Austauschen von Pixelpositionen von Pixelpaaren in der Textur, bis der Texturenergiewert basierend auf der Energiefunktion einen minimalen Energiewert erreicht; und
      • Erzeugen einer Ausgabetextur, die Ausgabepixel enthält, basierend auf der Textur mit minimalem Energiewert, die auf Bilddaten anzuwenden ist.
    • Klausel 21: das computerlesbare Speichermedium nach Klausel 20, wobei eine Textur über die Zeit geschichtet ist, und ferner umfassend das Zurückweisen eines Pixelaustauschs basierend auf einer Anzahl von Pixelwerten, die in Schichten der Textur gefunden werden.
    • Klausel 22: das computerlesbare Speichermedium nach Klausel 20 oder 21, wobei die Textur eine zeitliche Dimension enthält.
    • Klausel 23: das computerlesbare Speichermedium nach einer der Klauseln 20-22, ferner umfassend:
      • Sampling von einem oder mehreren Pixeln, die den Bilddaten entsprechen, wobei jedes Pixel einer Zufallsvariablen entspricht, wobei das Sampling von einem oder mehreren Pixeln dem Bestimmen eines Wertes für eine Wahrscheinlichkeitsdichtefunktion für ein Pixel entspricht, und wobei das Sampling das Reduzieren einer Varianz der Samples durch Schrägstellen von Samples in Richtung von Regionen mit größerer Lichtreflexion basierend auf der Energiefunktion beinhaltet. Klausel 24: das computerlesbare Speichermedium nach einer der Klauseln 20-23, wobei die Operationen ferner Folgendes umfassen:
      • Setzen des Energiewerts eines Pixels auf einen Nullwert, wenn das Pixel und ein anderes Pixel nicht in derselben zweidimensionalen Ebene liegen oder nicht die gleichen Koordinaten haben.
    • Klausel 25: das computerlesbare Speichermedium nach einer der Klauseln 20-24, wobei der eine oder die mehreren konfigurierbaren Parameter einen ersten konfigurierbaren Parameter und einen zweiten konfigurierbaren Parameter umfassen, wobei der erste konfigurierbare Parameter einen Energieabfallparameter umfasst, der der Energie entspricht von einem Pixel abgeführt wird, und der zweite konfigurierbare Parameter einer normalen Energieverteilung entspricht.
    • Klausel 26: das computerlesbare Speichermedium nach einem der Klauseln 20-25, das ferner umfasst:
      • Eingabe eines oder mehrerer skalarer Ausgabespixelwerte in eine raumfüllende Kurvenfunktion in einen oder mehrere Ausgabepixelwerte, die Vektoren sind.
    • Klausel 27: das computerlesbare Speichermedium nach einer der Klauseln 20-25, wobei die Operationen ferner Folgendes umfassen:
      • Anwenden eines Tiefpassfilters auf die Bilddaten.
    • Klausel 28: das computerlesbare Speichermedium nach einer der Klauseln 20-27, wobei eine Anzahl von Vertauschungen einer Breite, Höhe und Tiefe der Textur entspricht.
    • Klausel 29: das computerlesbare Speichermedium nach einer der Klauseln 20-28, wobei die Energiefunktion einen von Null verschiedenen Wert hat, weil das Pixelpaar identische z-Koordinaten hat.
  • In mindestens einer Ausführungsform kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung oder einen solchen Chip beziehen. In mindestens einer Ausführungsform können Multi-Chip-Module mit erhöhter Verbindungsfähigkeit verwendet werden, die den chipinternen Betrieb simulieren und wesentliche Verbesserungen gegenüber der Nutzung einer herkömmlichen Implementation mit einer zentralen Verarbeitungseinheit („CPU“) und einem Bus bieten. In mindestens einer Ausführungsform können verschiedene Module je nach Wunsch des Benutzers auch separat oder in verschiedenen Kombinationen von Halbleiterplattformen untergebracht sein.
  • In mindestens einer Ausführungsform, unter erneuter Bezugnahme auf 41, sind Computerprogramme in Form von maschinenlesbarem ausführbarem Code oder Computersteuerlogik-Algorithmen in dem Hauptspeicher 4104 und/oder Sekundärspeicher gespeichert. Falls sie durch einen oder mehrere Prozessoren ausgeführt werden, ermöglichen es Computerprogramme dem System 4100, verschiedene Funktionen gemäß mindestens einer Ausführungsform durchzuführen. In mindestens einer Ausführungsform sind Arbeitsspeicher 4104, Datenspeiche und/oder beliebiger anderer Speicher mögliche Beispiele für computerlesbare Medien. In mindestens einer Ausführungsform kann sich der Sekundärspeicher auf ein(e) beliebige(s) geeignete(s) Speichervorrichtung oder -system beziehen, wie etwa ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Compact-Disk-Laufwerk, ein Digital-Versatile-Disk-(„DVD“-)Laufwerk, eine Aufzeichnungsvorrichtung, einen Universal-Serial-Bus-(„USB“-)Flash-Speicher usw. darstellt. In mindestens einer Ausführungsform werden die Architektur und/oder die Funktionalität verschiedener vorheriger Figuren im Kontext der CPU 4102, des Parallelverarbeitungssystems 4112, einer integrierten Schaltung, die mindestens zu einem Teil der Fähigkeiten sowohl der CPU 4102 als auch des Parallelverarbeitungssystems 4112 in der Lage ist, eines Chipsatzes (z. B. einer Gruppe integrierter Schaltungen, die so ausgestaltet ist, dass sie als Einheit zum Durchführen verwandter Funktionen arbeitet und verkauft wird, usw.) und/oder einer beliebigen geeigneten Kombination integrierter Schaltung(en) implementiert.
  • In mindestens einer Ausführungsform werden die Architektur und/oder Funktionalität verschiedener vorhergehender Figuren im Kontext eines allgemeinen Computersystems, eines Leiterplattensystems, eines für Unterhaltungszwecke dedizierten Spielekonsolensystems, eines anwendungsspezifischen Systems und mehr implementiert. In mindestens einer Ausführungsform kann das Computersystem 4100 die Form eines Desktop-Computers, eines Laptop-Computers, eines Tablet-Computers, von Servern, von Supercomputern, eines Smartphones (z. B. einer drahtlosen tragbaren Vorrichtung), eines persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, eines Fahrzeugs, einer am Kopf befestigten Anzeige, einer tragbaren elektronischen Vorrichtung, einer Mobiltelefonvorrichtung, eines Fernsehgeräts, einer Arbeitsstation, von Spielekonsolen, eines eingebetteten Systems und/oder eines beliebigen anderen Typs von Logik annehmen.
  • In mindestens einer Ausführungsform beinhaltet das Parallelverarbeitungssystem 4112 ohne Einschränkung eine Vielzahl von Parallelverarbeitungseinheiten („PPUs“) 4114 und damit assoziierte Speicher 4116. In mindestens einer Ausführungsform sind die PPUs 4114 über eine Zusammenschaltung 4118 und einen Switch 4120 oder Multiplexer mit einem Host-Prozessor oder anderen Peripherievorrichtungen verbunden. In mindestens einer Ausführungsform verteilt das Parallelverarbeitungssystem 4112 Berechnungsaufgaben über die PPUs 4114, die parallelisierbar sein können - zum Beispiel als Teil der Verteilung von Berechnungs-Tasks über mehrere Thread-Blöcke von Grafikverarbeitungseinheiten („GPUs“). In mindestens einer Ausführungsform wird der Speicher von einigen oder allen PPUs 4114 gemeinsam genutzt und ist er 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 4114 resident sind, mit sich bringen kann. In mindestens einer Ausführungsform wird der Betrieb der PPUs 4114 durch Verwendung eines Befehls wie etwa syncthreads() synchronisiert, wobei alle Threads in einem Block (z. B. über mehrere PPUs 4114 hinweg ausgeführt) einen bestimmten Punkt der Codeausführung erreichen müssen, bevor sie fortfahren.
  • Andere Varianten liegen innerhalb des Geistes der vorliegenden Offenbarung. Wenngleich an den offenbarten Techniken diverse Modifikationen und alternative Konstruktionen vorgenommen werden können, sind somit bestimmte veranschaulichte Ausführungsformen davon in den Zeichnungen dargestellt und diese 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 Umfang 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 Ausdrücke „umfassend“, „aufweisend“, „beinhaltend“ und „enthaltend“ sind als offene Ausdrücke auszulegen (die „einschließlich, aber nicht beschränkt auf“ bedeuten), sofern nicht anderweitig angemerkt. Wenn es unmodifiziert vorliegt und sich auf physische Verbindungen bezieht, ist „verbunden“ als teilweise oder vollständig ineinander enthalten, aneinander angebracht oder aneinander angefügt auszulegen, auch wenn ein Element dazwischenliegt. Die Nennung von Wertebereichen hierin soll lediglich als kurzes Verfahren zur einzelnen Bezugnahme auf jeden separaten Wert dienen, der in den Bereich fällt, es sei denn, hierin ist etwas anderes angegeben, und jeder separate Wert ist in die Beschreibung eingeschlossen, als ob er einzeln hierin wiedergegeben wäre. In mindestens einer Ausführungsform ist die Verwendung des Begriffs „Satz“ (z. B. „ein Satz von Objekten“) oder „Teilsatz“ als eine nichtleere Zusammenstellung auszulegen, die ein oder mehrere Elemente umfasst, es sei denn, es ist etwas anderes angemerkt oder dies widerspricht dem Kontext. Sofern nichts anderes angegeben ist oder der Kontext dem widerspricht, bezeichnet ferner der Ausdruck „Teilmenge“ eines entsprechenden Satzes nicht notwendigerweise eine richtige Teilmenge des entsprechenden Satzes, sondern die Teilmenge und der entsprechende Satz können gleich sein.
  • Sofern nicht spezifisch etwas anderes genannt ist oder der Kontext dem eindeutig widerspricht, ist verbindende Sprache, wie etwa Formulierungen der Form „wenigstens eines von A, B und C“ oder „mindestens eines von A, B und C“, andernfalls in dem Kontext zu verstehen, in dem sie allgemein verwendet werden, um darzustellen, dass ein Gegenstand, ein Ausdruck usw. entweder A oder B oder C oder eine beliebige nicht leere Teilmenge des Satzes aus A und B und C sein kann. Zum Beispiel beziehen sich in dem veranschaulichenden Beispiel für einen Satz, der drei Elemente aufweist, die verbindenden Formulierungen „wenigstens eines von A, B und C“ und „mindestens eines von A, B und C“ auf einen beliebigen der folgenden Sätze: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Somit soll derartige verbindende Sprache im Allgemeinen nicht implizieren, dass bestimmte Ausführungen es erforderlich machen, dass mindestens eines von A, mindestens eines von B und mindestens eines von C vorhanden ist. Sofern nichts anderes angemerkt ist oder der Kontext dem widerspricht, gibt der Ausdruck „Vielzahl“ einen Zustand der Pluralität an (z. B. gibt „eine Vielzahl von Gegenständen“ mehrere Gegenstände an). In mindestens einer Ausführungsform beträgt die Anzahl der Gegenstände in einer Vielzahl mindestens zwei, es können aber auch mehr sein, wenn dies entweder explizit oder durch den Kontext angegeben ist. Sofern nichts anderes genannt ist oder es anderweitig aus dem Kontext ersichtlich ist, bedeutet die Formulierung „auf Grundlage von“ „mindestens zum Teil auf Grundlage von“ und nicht „ausschließlich auf Grundlage von“.
  • Hier beschriebene Vorgänge von Prozessen können in einer beliebigen geeigneten Reihenfolge durchgeführt werden, sofern es hier nicht anders angegeben ist oder der Kontext dem anderweitig eindeutig widerspricht. In mindestens einer Ausführungsform wird ein Prozess, wie etwa die hierin beschriebenen Prozesse (oder Variationen und/oder Kombinationen davon), unter der Steuerung von einem oder mehreren Computersystemen durchgeführt, die mit ausführbaren Anweisungen konfiguriert sind, und er ist als Code (z. B. ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen), der zusammen auf einem oder mehreren Prozessoren ausgeführt wird, durch Hardware oder Kombinationen davon implementiert. In mindestens einer Ausführungsform ist Code auf einem computerlesbaren Speichermedium gespeichert, zum Beispiel in Form eines Computerprogramms, das eine Vielzahl von Anweisungen umfasst, die durch einen oder mehrere Prozessoren ausgeführt werden können. In mindestens einer Ausführungsform ist ein computerlesbares Speichermedium ein nichttransitorisches computerlesbares Speichermedium, das transitorische Signale (z. B. eine sich ausbreitende transiente elektrische oder elektromagnetische Übertragung) ausschließt, aber nichttransitorische Datenspeicherschaltungen (z. B. Puffer, Cache und Warteschlangen) innerhalb von Sendeempfängern von transitorischen Signalen einschließt. In mindestens einer Ausführungsform ist der Code (z. B. ausführbarer Code oder Quellcode) auf einem Satz von einem oder mehreren nichttransitorischen computerlesbaren Speichermedien gespeichert, auf denen ausführbare Anweisungen gespeichert sind (oder einem anderen Speicher zum Speichern ausführbarer Anweisungen), die bei Ausführung (d. h. als Ergebnis der Ausführung) durch einen oder mehrere Prozessoren eines Computersystems das Computersystem dazu veranlassen, hierin beschriebene Operationen durchzuführen. Ein Satz von nichttransitorischen computerlesbaren Speichermedien umfasst in mindestens einer Ausführungsform mehrere nichttransitorische computerlesbare Speichermedien und einem oder mehreren der einzelnen nichttransitorischen Speichermedien mehrerer nichttransitorischer computerlesbarer Speichermedien fehlt der gesamte Code, während mehrere nichttransitorische computerlesbare Speichermedien zusammen den gesamten Code speichern. In mindestens einer Ausführungsform werden die ausführbaren Anweisungen so ausgeführt, dass unterschiedliche Anweisungen durch unterschiedliche Prozessoren ausgeführt werden - zum Beispiel speichert ein nichttransitorisches computerlesbares Speichermedium Anweisungen und eine hauptsächliche zentrale Verarbeitungseinheit („CPU“) führt einige der Anweisungen aus, während eine Grafikverarbeitungseinheit („GPU“) andere Anweisungen ausführt. In mindestens einer Ausführungsform weisen unterschiedliche Komponenten eines Computersystems separate Prozessoren auf und unterschiedliche Prozessoren führen unterschiedliche Teilmengen von Anweisungen aus.
  • Dementsprechend sind in mindestens einer Ausführungsform Computersysteme so konfiguriert, dass sie einen oder mehrere Dienste implementieren, die einzeln oder zusammen Operationen der hierin beschriebenen Prozesse durchführen, und derartige Computersysteme sind mit geeigneter Hardware und/oder Software konfiguriert, die eine Durchführung der Operationen ermöglichen. Ferner ist ein Computersystem, das mindestens eine Ausführungsform der vorliegenden Offenbarung implementiert, eine einzelne Vorrichtung und in einer anderen Ausführungsform ein verteiltes Computersystem, das mehrere Vorrichtungen umfasst, die unterschiedlich arbeiten, sodass das verteilte Computersystem die hierin beschriebenen Operationen durchführt und sodass eine einzelne Vorrichtung nicht alle Operationen durchführt.
  • Die Verwendung jeglicher und aller Beispiele oder beispielhafter Wortwahl (z. B. „wie etwa“), die hierin bereitgestellt ist, soll lediglich die Ausführungsformen der Offenbarung besser verdeutlichen und stellt keine Einschränkung des Umfangs der Offenbarung dar, es sei denn, es ist etwas anderes beansprucht. Keinerlei Wortwahl in der Beschreibung sollte so ausgelegt werden, dass sie ein beliebiges nicht beanspruchtes Element als für die Umsetzung der Offenbarung wesentlich angibt.
  • Jegliche 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 Begriffe „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen verwendet werden. Es versteht sich, dass diese Ausdrücke nicht als Synonyme füreinander beabsichtigt sein können. Vielmehr kann in konkreten Beispielen „verbunden“ oder „gekoppelt“ verwendet werden, um anzugeben, dass zwei oder mehr Elemente in direktem oder indirektem physischem oder elektrischem Kontakt miteinander stehen. Mit „gekoppelt“ kann auch gemeint sein, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, jedoch trotzdem miteinander zusammenwirken oder interagieren.
  • Sofern nicht ausdrücklich anders angegeben, versteht es sich, dass sich Begriffe wie „Verarbeitung“, „Berechnung“, „Berechnen“, „Bestimmen“ oder dergleichen in der gesamten Beschreibung auf Handlungen und/oder Prozesse eines Computers oder Rechensystems oder einer ähnlichen elektronischen Rechenvorrichtung, die Daten, die als physische, z. B. elektronische, Größen in den Registern und/oder Speichern des Rechensystems dargestellt sind, manipulieren und/oder in andere Daten umwandeln, die auf ähnliche Weise als physische Größen in den Speichern, Registern oder anderen derartigen Informationsspeicher-, - übertragungs- oder -anzeigevorrichtungen des Rechensystems dargestellt sind.
  • Auf ähnliche Weise kann sich der Ausdruck „Prozessor“ auf eine beliebige Vorrichtung oder einen beliebigen Abschnitt einer Vorrichtung beziehen, die/der elektronische Daten aus Registern und/oder Speicher verarbeitet und diese elektronischen Daten in andere elektronische Daten umwandelt, die in Registern und/oder Speicher gespeichert werden können. Als nicht einschränkende Beispiele kann der „Prozessor“ eine CPU oder eine GPU sein. Eine „Rechenplattform“ kann einen oder mehrere Prozessoren umfassen. Wie hierin verwendet, können „Software“-Prozesse zum Beispiel Software- und/oder Hardware-Entitäten beinhalten, die im Verlauf der Zeit Arbeit verrichten, wie etwa Tasks, Threads und intelligente Agenten. Außerdem kann sich jeder Prozess auf mehrere Prozesse beziehen, um Anweisungen nacheinander oder parallel, kontinuierlich oder intermittierend auszuführen. In mindestens einer Ausführungsform werden die Ausdrücke „System“ und „Verfahren“ hierin insofern austauschbar verwendet, dass ein System ein oder mehrere Verfahren verkörpern kann und die Verfahren als System betrachtet werden können.
  • Im vorliegenden Dokument kann auf das Erlangen, Erfassen, Empfangen oder Eingeben von analogen oder digitalen Daten in ein Teilsystem, ein Computersystem oder eine computerimplementierte Maschine Bezug genommen werden. In mindestens einer Ausführungsform kann der Prozess des 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. In 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. In 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 Computernetz von der bereitstellenden Entität zu der erfassenden Entität erfolgen. In mindestens einer Ausführungsform kann auch auf das Bereitstellen, Ausgeben, Übertragen, Senden oder Darstellen von analogen oder digitalen Daten Bezug genommen werden. In verschiedenen Beispielen können 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 zu implementieren, und sie sollen im Umfang 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 ferner in für Strukturmerkmale und/oder Verfahrenshandlungen spezifischer Sprache beschrieben wurde, versteht sich, dass der in den beigefügten Ansprüchen beanspruchte Gegenstand nicht unbedingt auf die beschriebenen spezifischen Merkmale oder Handlungen beschränkt ist. Vielmehr werden spezifische Merkmale und Handlungen als beispielhafte Formen zum Implementieren der Ansprüche offenbart.

Claims (29)

  1. Ein computerimplementiertes Verfahren zur Erzeugung einer Textur, wobei das Verfahren umfasst: Empfangen einer Textur, die zwei oder mehr Pixel enthält; Berechnen eines Texturenergiewerts für die Textur basierend auf einer Energiefunktion, wobei die Energiefunktion auf einem Abstand zwischen einem Pixelpaar der zwei oder mehr Pixel und einem oder mehreren konfigurierbaren Parametern basiert, wobei der Texturenergiewert auf einer Summierung von Pixelenergiewerten für Pixel in der Textur basiert, wobei ein Pixelenergiewert für jedes Pixel in dem Pixelpaar einen Nicht-Null-Wert als Ergebnis von mindestens einem von Folgendem umfasst: das Pixelpaar befindet sich in einer gleichen mehrdimensionalen Schicht, oder das Pixelpaar hat identische Koordinaten bei verschiedenen zeitlichen Schnitten; Austauschen von Pixelpositionen von Pixelpaaren in der Textur, bis der Texturenergiewert basierend auf der Energiefunktion einen minimalen Energiewert erreicht; und Erzeugen einer Ausgabetextur, die Ausgabepixel enthält, basierend auf der Textur mit minimalem Energiewert, die auf Bilddaten anzuwenden ist.
  2. Das computerimplementierte Verfahren nach Anspruch 1, wobei die Textur eine Textur mit weißem Rauschen ist.
  3. Das computerimplementierte Verfahren nach Anspruch 1 oder 2, wobei die Energiefunktion ferner auf einem oder mehreren Sample-Werten basiert, die dem Pixelpaar zugeordnet sind.
  4. Das computerimplementierte Verfahren nach einem der vorhergehenden Ansprüche, wobei mindestens ein Pixel der zwei oder mehr Pixel mindestens einem derfolgenden Punkte entspricht: einem oder mehreren Vektoren, einem oder mehreren Punkten auf einem Gitter oder einem oder mehreren Objekten mit mehr als drei Dimensionen, und wobei die Ausgabetextur auf Bilddaten angewendet werden soll, die Vektoren, Punkte auf einem Gitter oder Objekte mit mehr als drei Dimensionen enthalten.
  5. Das computerimplementierte Verfahren nach einem der vorhergehenden Ansprüche, wobei das Verfahren vor dem Berechnen des Energiewerts für die Textur ferner Folgendes umfasst: Sampling von einem oder mehreren Pixeln, die den Bilddaten entsprechen, wobei jedes Pixel einer Zufallsvariablen entspricht, wobei das Sampling von einem oder mehreren Pixeln dem Bestimmen eines Wertes für eine Wahrscheinlichkeitsdichtefunktion für ein Pixel entspricht, und wobei das Sampling das Reduzieren einer Varianz von Samples durch Schrägstellen von Samples in Richtung von Regionen mit höherer Energie auf der Grundlage der Energiefunktion umfasst.
  6. Das computerimplementierte Verfahren nach einem der vorhergehenden Ansprüche, wobei der eine oder die mehreren konfigurierbaren Parameter einen ersten konfigurierbaren Parameter und einen zweiten konfigurierbaren Parameter umfassen, wobei der erste konfigurierbare Parameter einen Gaußwert umfasst und der zweite konfigurierbare Parameter einen anderen Gaußwert als der erste konfigurierbare Parameter umfasst.
  7. Das computerimplementierte Verfahren nach einem der vorhergehenden Ansprüche, wobei das Verfahren ferner Folgendes umfasst: vor dem Berechnen des Energiewerts für die Textur, Sampling eines oder mehrerer Pixel entsprechend den Bilddaten, wobei jedes Pixel einer Zufallsvariablen entspricht, wobei das Sampling eines oder mehrerer Pixel mindestens eines umfasst von: Bestimmen eines Werts für eine Wahrscheinlichkeitsdichte Funktion für ein Pixel oder Durchführen eines ungleichmäßigen Sampling.
  8. Computerumgesetztes Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend: Anwenden einer Sequenz mit geringer Diskrepanz auf die Ausgabetextur, um jedem Ausgabepixel eine zusätzliche Dimension hinzuzufügen.
  9. Computerumgesetztes Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend: Eingeben eines oder mehrerer skalarer Ausgabepixelwerte in eine raumfüllende Kurvenfunktion, um einen oder mehrere Pixelwerte auszugeben, die Vektoren sind.
  10. Computerumgesetztes Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend: Schichtung der Textur in Schichten über die Zeit; Berechnen eines Schichtungswerts basierend auf einer Anzahl von Pixelwerten in jeder Schicht, in der sich ein Pixel des Pixelpaars befindet; und Ablehnen eines Austauschs von Pixeln, wenn der Austausch den Schichtungswert erhöht.
  11. Computerumgesetztes Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend: Anwenden eines Tiefpassfilters auf die Bilddaten.
  12. Das computerimplementierte Verfahren nach einem der vorhergehenden Ansprüche, wobei das Vertauschen ferner das Auswählen von zwei oder mehr zufälligen Paaren von zu vertauschenden Pixeln umfasst.
  13. Prozessor, umfassend: eine oder mehrere Verarbeitungseinheiten zum Ausführen einer Vielzahl von Operationen, einschließlich: Empfangen einer Textur, die zwei oder mehr Pixel enthält; Berechnen eines Texturenergiewerts für die Textur basierend auf einer Energiefunktion, wobei die Energiefunktion auf einem Abstand zwischen einem Pixelpaar der zwei oder mehr Pixel und einem oder mehreren konfigurierbaren Parametern basiert, wobei der Texturenergiewert auf einer Summierung von Pixelenergiewerten für Pixel in der Textur basiert, wobei ein Pixelenergiewert für jedes Pixel in dem Pixelpaar einen Nicht-Null-Wert als Ergebnis von mindestens einem von Folgendem umfasst: das Pixelpaar befindet sich in einer gleichen mehrdimensionalen Schicht, oder das Pixelpaar hat identische Koordinaten bei verschiedenen zeitlichen Schnitten; Austauschen von Pixelpositionen von Pixelpaaren in der Textur, bis der Texturenergiewert basierend auf der Energiefunktion einen minimalen Energiewert erreicht; Erzeugen einer Ausgabetextur, die Ausgabepixel enthält, basierend auf der Textur mit minimalem Energiewert, die auf Bilddaten anzuwenden ist; und Rendering eines Ausgabebildes über mehrere Rahmen basierend auf dem Anwenden der Textur auf das eine oder die mehreren Bilder.
  14. Der Prozessor nach Klausel 13, wobei Sampling von einem oder mehreren Pixeln, die den Bilddaten entsprechen, wobei jedes Pixel einer Zufallsvariablen entspricht, wobei das Sampling von einem oder mehreren Pixeln dem Bestimmen eines Wertes für eine Wahrscheinlichkeitsdichtefunktion für ein Pixel entspricht, und wobei das Sampling das Reduzieren einer Varianz von Samples durch Schrägstellen von Samples in Richtung von Regionen mit höherer Energie auf der Grundlage der Energiefunktion umfasst.
  15. Der Prozessor nach Klausel 13 oder 14, wobei die Textur eine Textur mit weißem Rauschen ist.
  16. Prozessor nach einem der Ansprüche 13 bis 15, wobei mindestens ein Pixel der zwei oder mehr Pixel mindestens einem der folgenden Punkte entspricht: einem oder mehreren Vektoren, einem oder mehreren Punkten auf einem Netz oder einem oder mehreren Objekten mit mehr als drei Dimensionen, und wobei die Ausgabetextur auf Bilddaten angewendet werden soll, die Vektoren, Punkte auf einem Netz oder Objekte mit mehr als drei Dimensionen enthalten.
  17. Der Prozessor nach einem der Ansprüche 13 bis 16, wobei die Vorgänge weiterhin umfassen: Sampling von einem oder mehreren Pixeln, die den Bilddaten entsprechen, wobei jedes Pixel einer Zufallsvariablen entspricht, wobei das Sampling von einem oder mehreren Pixeln dem Bestimmen eines Wertes für eine Wahrscheinlichkeitsdichtefunktion für ein Pixel entspricht, und wobei das Sampling das Reduzieren einer Varianz von Samples durch Schrägstellen von kosinusgewichteten Samples in Richtung von Regionen mit höherer Energie auf der Grundlage der Energiefunktion umfasst.
  18. Der Prozessor nach einem der Ansprüche 13 bis 17, wobei die Operationen weiterhin umfassen: Anwenden eines Rang-1-Gitters, um der Ausgabetextur eine zusätzliche Dimension hinzuzufügen.
  19. Der Prozessor nach einem der Ansprüche 13 bis 18, wobei die Operationen weiterhin umfassen: Eingeben eines oder mehrerer skalarer Ausgabepixelwerte in eine raumfüllende Kurvenfunktion, um einen oder mehrere Pixelwerte auszugeben, die Vektoren sind.
  20. Ein computerlesbares Speichermedium, auf dem ein oder mehrere Befehle gespeichert sind, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, einen oder mehrere Prozessoren veranlassen, Operationen durchzuführen, die Folgendes umfassen: Empfangen einer Textur, die zwei oder mehr Pixel enthält; Berechnen eines Texturenergiewerts für die Textur basierend auf einer Energiefunktion, wobei die Energiefunktion auf einem Abstand zwischen einem Pixelpaar der zwei oder mehr Pixel und einem oder mehreren konfigurierbaren Parametern basiert, wobei der Texturenergiewert auf einer Summierung von Pixelenergiewerten für Pixel in der Textur basiert, wobei ein Pixelenergiewert für jedes Pixel in dem Pixelpaar einen Nicht-Null-Wert als Ergebnis von mindestens einem von Folgendem umfasst: das Pixelpaar befindet sich in einer gleichen mehrdimensionalen Schicht, oder das Pixelpaar hat identische Koordinaten bei verschiedene zeitlichen Schnitten; Austauschen von Pixelpositionen von Pixelpaaren in der Textur, bis der Texturenergiewert basierend auf der Energiefunktion einen minimalen Energiewert erreicht; und Erzeugen einer Ausgabetextur, die Ausgabepixel enthält, basierend auf der Textur mit minimalem Energiewert, die auf Bilddaten anzuwenden ist.
  21. Das computerlesbare Speichermedium nach Klausel 20, wobei eine Textur über die Zeit geschichtet ist, und ferner umfassend das Zurückweisen eines Pixelaustauschs basierend auf einer Anzahl von Pixelwerten, die in Schichten der Textur gefunden werden.
  22. Das computerlesbare Speichermedium nach Klausel 20 oder 21, wobei die Textur eine zeitliche Dimension enthält.
  23. Das computerlesbare Speichermedium nach einer der Klauseln 20-22, ferner umfassend: Sampling von einem oder mehreren Pixeln, die den Bilddaten entsprechen, wobei jedes Pixel einer Zufallsvariablen entspricht, wobei das Sampling von einem oder mehreren Pixeln dem Bestimmen eines Wertes für eine Wahrscheinlichkeitsdichtefunktion für ein Pixel entspricht, und wobei das Sampling das Reduzieren einer Varianz der Samples durch Schrägstellen von Samples in Richtung von Regionen mit größerer Lichtreflexion basierend auf der Energiefunktion beinhaltet.
  24. Das computerlesbare Speichermedium nach einem der Ansprüche 20 bis 23, wobei die Operationen weiterhin umfassen: Setzen des Energiewerts eines Pixels auf einen Nullwert, wenn das Pixel und ein anderes Pixel nicht in derselben mehrdimensionalen Ebene liegen oder nicht die gleichen Koordinaten haben.
  25. Das computerlesbare Speichermedium nach einer der Klauseln 20-24, wobei der eine oder die mehreren konfigurierbaren Parameter einen ersten konfigurierbaren Parameter und einen zweiten konfigurierbaren Parameter umfassen, wobei der erste konfigurierbare Parameter einen Energieabfallparameter umfasst, der der Energie entspricht von einem Pixel abgeführt wird, und der zweite konfigurierbare Parameter einer normalen Energieverteilung entspricht.
  26. Das computerlesbare Speichermedium nach einer der Klauseln 20-25, ferner umfassend: Eingeben eines oder mehrerer skalarer Ausgabepixelwerte in eine raumfüllende Kurvenfunktion, um einen oder mehrere Pixelwerte auszugeben, die Vektoren sind.
  27. Das computerlesbare Speichermedium nach einem der Ansprüche 20 bis 26, wobei die Operationen weiterhin umfassen: Anwenden eines Tiefpassfilters auf die Bilddaten.
  28. Das computerlesbare Speichermedium nach einer der Klauseln 20-27, wobei eine Anzahl von Vertauschungen einer Breite, Höhe und Tiefe der Textur entspricht.
  29. Das computerlesbare Speichermedium nach einer der Klauseln 20-28, wobei die Energiefunktion einen von Null verschiedenen Wert hat, weil das Pixelpaar identische z-Koordinaten hat.
DE102022113807.0A 2021-06-02 2022-06-01 Räumlich-zeitliche masken für rauschen und sampling unter verwendung von vektoren für bildverarbeitungs- und lichttransport-simulationssysteme und -anwendungen Pending DE102022113807A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163196116P 2021-06-02 2021-06-02
US63/196,116 2021-06-02
US17/553,692 US11727621B2 (en) 2021-06-02 2021-12-16 Spatio-temporal noise masks and sampling using vectors for image processing and light transport simulation systems and applications
US17/553,692 2021-12-16

Publications (1)

Publication Number Publication Date
DE102022113807A1 true DE102022113807A1 (de) 2022-12-08

Family

ID=84102113

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022113807.0A Pending DE102022113807A1 (de) 2021-06-02 2022-06-01 Räumlich-zeitliche masken für rauschen und sampling unter verwendung von vektoren für bildverarbeitungs- und lichttransport-simulationssysteme und -anwendungen

Country Status (3)

Country Link
US (2) US11727621B2 (de)
CN (1) CN115439341A (de)
DE (1) DE102022113807A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11755888B1 (en) * 2023-01-09 2023-09-12 Fudan University Method and system for accelerating score-based generative models with preconditioned diffusion sampling
CN116664560B (zh) * 2023-07-28 2023-11-10 南方医科大学珠江医院 一种胃肠道影像数据分割方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9417700B2 (en) * 2009-05-21 2016-08-16 Edge3 Technologies Gesture recognition systems and related methods
US9563953B2 (en) * 2014-08-28 2017-02-07 Qualcomm Incorporated Systems and methods for determining a seam
KR20210007393A (ko) * 2019-07-11 2021-01-20 삼성전자주식회사 전자 장치 및 그 제어 방법

Also Published As

Publication number Publication date
US11727621B2 (en) 2023-08-15
US20240037838A1 (en) 2024-02-01
CN115439341A (zh) 2022-12-06
US20220392142A1 (en) 2022-12-08

Similar Documents

Publication Publication Date Title
DE112021002830T5 (de) Erzeugung von bildern von virtuellen umgebungen unter verwendung eines oder mehrerer neuronaler netzwerke
DE112021002631T5 (de) Bilderzeugung unter verwendung eines oder mehrerer neuronaler netzwerke
DE112021002772T5 (de) Bilderzeugung unter verwendung eines oder mehrerer neuronaler netzwerke
DE102021119857A1 (de) Erzeugung von ansichten unter verwendung eines oder mehrerer neuronaler netzwerke
DE112021004543T5 (de) Bilderzeugung unter verwendung eines oder mehrerer neuronaler netzwerke
DE102022101555A1 (de) Bildsynthese unter verwendung eines oder mehrerer neuronaler netzwerke
DE112021002657T5 (de) Bilderzeugung unter verwendung eines oder mehrerer neuronaler netzwerke
US20240037838A1 (en) Spatio-temporal noise masks and sampling using vectors for image processing and light transport simulation systems and applications
DE102022129436A1 (de) Bilderzeugung mit einem oder mehreren neuronalen Netzen
DE112022000993T5 (de) Bestimmen eines oder mehrerer neuronaler netze zur objektklassifizierung
DE102021128623A1 (de) Hochskalierung eines bilds unter verwendung eines oder mehrerer neuronaler netzwerke
DE102022114520A1 (de) Pixel-blending zur bilderzeugung basierend auf neuronalen netzwerken
DE102021128962A1 (de) Bildmischung unter verwendung eines oder mehrerer neuronaler netzwerke
DE102021122615A1 (de) Bildverbesserung unter verwendung eines oder mehrerer neuronaler netzwerke
DE112021000174T5 (de) Upsampling eines bildes unter verwendung eines oder mehrerer neuronaler netze
DE112021000999T5 (de) Bilderzeugung unter verwendung eines oder mehrerer neuronaler netzwerke
DE102023125188A1 (de) Überblenden von videorahmen
DE102023125014A1 (de) Anwendungsprogrammierschnittstelle zum ausführen der rahmeninterpolation
DE102023102679A1 (de) Berechnung des optischen flusses mittels semiglobalem abgleich
DE102022113303A1 (de) Raum-zeitliche rauschmasken für die bildverarbeitung
DE102022131119A1 (de) Zeitliches bildmischen unter verwendung eines oder mehrerer neuronaler netzwerke
DE112022002881T5 (de) Bedingte Bildgenerierung unter Verwendung eines oder mehrerer neuronaler Netzwerke
DE112022002056T5 (de) Volumetrische bildannotation mit einem oder mehreren neuronalen netzwerken
DE112022002852T5 (de) Bildanmerkung unter verwendung von einem oder mehreren neuronalen netzwerken
DE112022001091T5 (de) Objektverfolgung unter verwendung von optischem fluss

Legal Events

Date Code Title Description
R012 Request for examination validly filed