DE102023119191A1 - Verbesserung der anfänglichen kandidaten bei der räumlich-zeitlichen neuabtastung - Google Patents

Verbesserung der anfänglichen kandidaten bei der räumlich-zeitlichen neuabtastung Download PDF

Info

Publication number
DE102023119191A1
DE102023119191A1 DE102023119191.8A DE102023119191A DE102023119191A1 DE 102023119191 A1 DE102023119191 A1 DE 102023119191A1 DE 102023119191 A DE102023119191 A DE 102023119191A DE 102023119191 A1 DE102023119191 A1 DE 102023119191A1
Authority
DE
Germany
Prior art keywords
sample
processor
graphics
memory
data
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
DE102023119191.8A
Other languages
English (en)
Inventor
Chris Wyman
Jakub Boksansky
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 DE102023119191A1 publication Critical patent/DE102023119191A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/506Illumination models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

Ansätze gemäß verschiedener Ausführungsformen stellen die Auswahl und Wiederverwendung von Beleuchtungsmusterdaten bereit, um qualitativ hochwertige Ausgangskandidaten zu erzeugen, die sich für die Eingabe in Neuabtastungstechniken eignen und die besser für die tatsächliche Beleuchtung einer Szene repräsentativ sind, für die ein Bild, ein Frame oder eine andere derartige Darstellung gerendert werden soll. Anstatt eine wichtige Lichtabtastung zu verwerfen, bei der die Gewichtung oder die Abtastungszahl nicht mehr zuverlässig ist, können zumindest einige dieser Abtastungen als zusätzliche, ungewichtete Kandidaten für die Verwendung in der Wichtigkeitsabtastung bereitgestellt werden, zusätzlich zu denjenigen, die mit Hilfe eines zufälligen (oder halbzufälligen) Abtastungsverfahrens ausgewählt wurden. Ein solcher Ansatz kann dazu beitragen, dass wichtige Lichter bei der Schattierung von Pixeln für eine Szene berücksichtigt werden, zumindest dort, wo eine solche Wiederverwendung aufgrund von Veränderungen in der Szene oder am Standort sinnvoll ist. Zwischen den Frames wiederverwendete Abtastungen können sich auf verschiedene frühere Abtastungen beziehen, wie beispielsweise auf Abtastungen, die bestimmt wurden, um wichtigen, nahen oder hellen Lichtern zu entsprechen.

Description

  • QUERVERWEIS AUF VERWANDTE ANWENDUNGEN
  • Diese Anmeldung beansprucht die Priorität der am 22. Juli 2022 eingereichten vorläufigen US-Patentanmeldung mit der Seriennummer 63/391,576 und dem Titel „Improving Initial Candidates in Spatiotemporal Resampling“, die hiermit in vollem Umfang und für alle Zwecke einbezogen wird.
  • STAND DER TECHNIK
  • Bei Aufgaben des Berechnens, bei denen eine große Menge an Daten zur Verfügung steht, kann ein gewisses Maß an Abtastungen die zu verarbeitende Datenmenge verringern. Um eine Neuabtastung durchzuführen, die hinreichend genaue oder wünschenswerte Ergebnisse liefert, haben einige frühere Ansätze eine Neuabtastung nach der Wichtigkeit durchgeführt. Zum Beispiel kann bei einer räumlich-zeitlichen Neuabtastung eine relativ kleine Anzahl von Abtastungen genommen und dann sowohl räumlich als auch zeitlich wiederverwendet werden, um zu versuchen, eine Schätzung zu booten, bis die Ergebnisse hinreichend genau sind. Dies kann z. B. bei komplexen Rendering-Aufgaben verwendet werden, bei denen viele mögliche Lichtquellen, Photonen oder Lichtpfade zu einer Szene beitragen können. Es ist jedoch erwünscht, eine kleine Teilmenge für die Verarbeitung auszuwählen, die zu einer ausreichend genauen oder realistischen Beleuchtung der Objekte in dieser Szene führt. Leider stellen solche Algorithmen für die Wiederverwendung von Abtastungen in Umgebungen mit begrenztem Budget häufig weiterhin ein inakzeptables Maß an Unterabtastung bereit. Oftmals wird die Wiederverwendung schlecht durchgeführt oder scheitert an Faktoren wie Diskontinuitäten, Disokklusionen oder extrem schwierigen Lichtverhältnissen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Verschiedene Ausführungsformen gemäß der vorliegenden Offenbarung werden unter Bezugnahme auf die Zeichnungen beschrieben, in denen Folgendes gilt:
    • 1A, 1B, 1C und 1D veranschaulichen die Verwendung von Lichtabtastung bei der grafischen Darstellung gemäß verschiedenen Ausführungsformen;
    • 2A, 2B und 2C veranschaulichen Beispielbilder, die gemäß verschiedenen Ausführungsformen für eine Szene gerendert werden können;
    • 3A, 3B und 3C veranschaulichen die Lichtabtastung mit ungewichteter Wiederverwendung von Abtastungen für die grafische Darstellung gemäß verschiedenen Ausführungsformen;
    • 4A und 4B veranschaulichen Komponenten einer beispielhaften Grafik-Pipeline zum Durchführen von Rendering unter Verwendung von Lichtabtastung und Wiederverwendung gemäß verschiedenen Ausführungsformen;
    • 5 veranschaulicht einen beispielhaften Prozess zum Rendern einer Sequenz von Frames unter Verwendung von abgetasteten Lichtinformationen, der gemäß mindestens einer Ausführungsform durchgeführt werden kann;
    • 6 veranschaulicht ein beispielhaftes netzwerkbasiertes System, wobei Aspekte mindestens einer Ausführungsform implementiert werden können;
    • 7 veranschaulicht ein beispielhaftes Rechenzentrumsystem gemäß mindestens einer Ausführungsform;
    • 8 ist ein Blockdiagramm, das ein Computersystem veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 9 ist ein Blockdiagramm, das ein Computersystem veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 10 ein Computersystem gemäß mindestens einer Ausführungsform;
    • 11 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 12A veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 12B veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 12C veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 12D veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 12E und 12F veranschaulichen ein gemeinsam genutztes Programmiermodell gemäß mindestens einer Ausführungsform;
    • 13 veranschaulicht beispielhafte integrierte Schaltungen und damit assoziierte Grafikprozessoren gemäß mindestens einer Ausführungsform;
    • 14A und 14B veranschaulichen beispielhafte integrierte Schaltungen und zugehörige Grafikprozessoren, gemäß mindestens einer Ausführungsform;
    • 15A und 15B veranschaulichen zusätzliche beispielhafte Grafikprozessorlogik gemäß mindestens einer Ausführungsform;
    • 16 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 17A veranschaulicht einen Parallelprozessor gemäß mindestens einer Ausführungsform;
    • 17B veranschaulicht eine Partitionseinheit gemäß mindestens einer Ausführungsform;
    • 17C veranschaulicht einen Verarbeitungsclustergemäß mindestens einer Ausführungsform;
    • 17D veranschaulicht einen Grafik-Multiprozessor gemäß mindestens einer Ausführungsform;
    • 18 veranschaulicht ein Multi-Grafikprozessoreinheits- (GPU-) System gemäß mindestens einer Ausführungsform;
    • 19 veranschaulicht einen Grafikprozessor gemäß mindestens einer Ausführungsform;
    • 20 veranschaulicht zumindest Abschnitte eines Grafikprozessors gemäß einer oder mehreren Ausführungsformen;
    • 21 veranschaulicht zumindest Abschnitte eines Grafikprozessors gemäß einer oder mehreren Ausführungsformen;
    • 22 veranschaulicht einen Universalverarbeitungscluster (general processing cluster - „GPC“) gemäß mindestens einer Ausführungsform;
    • 23 veranschaulicht einen Streaming-Multiprozessor gemäß mindestens einer Ausführungsform;
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung werden verschiedene Ausführungsformen beschrieben. Zu Zwecken der Erläuterung werden spezifische Konfigurationen und Details dargelegt, um ein umfassendes Verständnis der Ausführungsformen bereitzustellen. Es wird jedoch auch für den Fachmann offensichtlich sein, dass die Ausführungsformen ohne diese spezifischen Details umgesetzt werden können. Ferner können hinlänglich bekannte Merkmale weggelassen oder vereinfacht dargestellt sein, um die beschriebene Ausführungsform nicht unkenntlich zu machen.
  • Die hier vorliegenden Techniken, die Abtastungen wiederverwenden, um ein Integral numerisch anzunähern, einschließlich verschiedener Ausführungsformen, die hier für das Rendern der Beleuchtung einer virtuellen Szene beschrieben werden, können aus mindestens zwei Hauptteilen bestehen. Diese Teile können zum Beispiel das Auswählen anfänglicher Kandidatenabtastungen und das Bestimmen der Wiederverwendung dieser Kandidatenabtastungen umfassen. Die räumlich-zeitliche Neuabtastung kann zur Verbesserung der Qualität durch die Wiederverwendung von Abtastungen eingesetzt werden, während der Prozess der Auswahl der Ausgangsabtastungen weitgehend unverändert bleibt. Ausgaben aus der Wiederverwendung von Abtastungen können angewandt werden, um künftige Schritte der Erstbemusterung zu verbessern, wie beispielsweise verschiedene veranschaulichende Ausführungsformen für das Auswählen und Wiederverwenden von Beleuchtungsabtastungendaten, um qualitativ hochwertige Erstbemusterungen zu erzeugen, die für die tatsächliche Beleuchtung einer Szene repräsentativ sind, für die ein Bild, ein Video Frame oder eine andere derartige Darstellung gerendert werden soll.
  • In verschiedenen veranschaulichenden Ausführungsformen können Lichtreservoirs verwendet werden, um Lichtabtastungen mit Informationen über die Gewichtung und die effektive Abtastungszahl zu speichern. Die Gewichtung und die Abtastungszahl sind nur nützlich, wenn es eine kontinuierliche Kette gültiger Wiederverwendungsschritte gibt. Anstatt eine wichtige Lichtabtastung zu verwerfen, wenn diese zusätzlichen Informationen nicht mehr zuverlässig sind, kann diese Abtastung stattdessen als neuer oder zusätzlicher anfänglicher Kandidat für die Berücksichtigung von Beleuchtungspixeln für zukünftige Frames bereitgestellt werden. Ein solcher Ansatz kann dazu beitragen, dass als wichtig bestimmte Lichtabtastungen bei der Schattierung von Pixeln für ein nachfolgendes Bild oder einen Frame einer Szene berücksichtigt werden, zumindest dort, wo eine solche Wiederverwendung aufgrund von Veränderungen der Szene oder des Standorts usw. sinnvoll ist. Diese anfänglichen Kandidaten können alle durch einen Prozess der Neuabtastung der Wichtigkeit bewertet werden, um zum Beispiel die Beleuchtungsinformationen zu bestimmen, die bei der Schattierung jedes Pixels eines zu rendernden Frames verwendet werden sollen. Die Abtastungen, die zwischen den Frames wiederverwendet werden, können sich auf verschiedene frühere Abtastungen beziehen, wie beispielsweise Abtastungen, die bestimmt wurden, um wichtigen, nahen oder hellen Lichtern, komplexen Texturen und dergleichen zu entsprechen. Es können auch Abtastungen von nahegelegenen Pixeln in einem früheren Frame in Betracht gezogen werden, wie beispielsweise, wenn ein wichtiges Licht für einen bestimmten Standort des Pixels keine Abtastungen aufweist. In mindestens einer Ausführungsform kann eine Mischung Wahrscheinlichkeitsverteilungsfunktion (PDF) verwendet werden, um anfängliche Kandidatenabtastungen für einen zukünftigen Frame zu bestimmen.
  • Variationen dieser und anderer solcher Funktionen können im Frame der verschiedenen Ausführungsformen ebenso verwendet werden, wie es für einen Fachmann mit normalen Kenntnissen der Technik im Lichte der hierin enthaltenen Lehren und Vorschläge offensichtlich wäre.
  • 1A-1D veranschaulichen einen beispielhaften Ansatz 100 zur Schattierung einer Szene mit zu renderndem Inhalt, der gemäß mindestens einer Ausführungsform verwendet werden kann. In dieser Szene kann es eine begrenzte Anzahl von Lichtquellen geben, die eine direkte Beleuchtung bereitstellen, wie beispielsweise eine oder mehrere Deckenleuchten in diesem Raum, wie im linken Bild 100 von 1A veranschaulicht. In diesem Beispiel ist die Tür leicht geöffnet und ein helles Licht fällt durch den Spalt der geöffneten Tür ein, um eine starke Reflexion an den entsprechenden Regionen der Teekannen für den aktuellen Blickwinkel einer für die Szene verwendeten virtuellen Kamera zu verursachen. Jede dieser Lichtquellen kann Licht leiten, das auf Objekte in dieser Szene fällt, und Raytracing kann verwendet werden, um Strahlen von der/den Lichtquelle(n) auf die Objekte zu projizieren, um eine realistische Beleuchtung und Farbschattierung bereitzustellen. Neben diesen Quellen direkter Beleuchtung kann es jedoch noch viele andere Objekte in einer Szene geben, die die Beleuchtung in einer Szene beeinflussen können. Dies kann zum Beispiel helle Wände beinhalten, die das Licht der Lichtquellen reflektieren, eine metallische Teekanne, die ferner von den Lichtquellen oder von allen ungehinderten Objekten in der Szene reflektiert werden kann, ein großes Gemälde an einer Wand mit einer komplexen Textur oder eine transparente oder durchscheinende Teekanne, die zumindest einen Abschnitt der Lichtstrahlen übertragen kann, die auf der Teekanne unpassend sind. Es kann auch andere Objekte geben, die die Beleuchtung der Szene beeinflussen, wie beispielsweise eine glänzende Tischplatte oder andere derartige Objekte. Es können auch mehrere Reflexionen zu berücksichtigen sein, wie beispielsweise, wenn ein Licht von einer Teekanne abprallt, das dann in den Reflexionen einer anderen Teekanne oder als Fleck an einer Wand reflektiert wird usw. Das Bild 102 auf der rechten Seite von 1A veranschaulicht eine beispielhafte Darstellung der groben Beleuchtung, die in einem begrenzten Zeitbudget berechnet werden kann, zum Beispiel, wenn die reflektierende Natur von Objekten bestimmt und verwendet werden kann, um eine genaue Schattierung für Pixel in einer Szene durchzuführen. Die Bestimmungen der Beleuchtung für jeden dieser Pixel-Standorte können mit einer Abtastung pro Pixel durchgeführt werden, auch wenn es viele verschiedene Abtastungen für viele verschiedene Pixel-Standorte geben kann, die die Farbe eines bestimmten Pixel-Standorts entlang der Oberfläche eines Objekts beeinflussen könnten. Für die Genauigkeit oder den Realismus der Beleuchtung kann es dann wichtig sein, die wichtigste Abtastung für einen bestimmten Standort eines Pixels in Bild 102 auszuwählen, die sich am stärksten auf die endgültige Farbe dieses Pixels auswirkt, wenn es in Bild 100 dargestellt wird.
  • Um eine realistische Beleuchtung oder Schattierung einer Szene bereitzustellen, kann es wünschenswert sein, all diese direkten und indirekten Lichtquellen in Betracht zu ziehen. Dies könnte die Projektion von Strahlen von jedem potenziellen Punkt auf einem Objekt in einer Szene zu jedem anderen Punkt in der Szene beinhalten, einschließlich der Bestimmung von Reflexionen, Brechungen, Übertragungen, kaustischen Strukturen und anderen Beleuchtungsaspekten. Ein solcher Ansatz würde jedoch eine sehr große Anzahl von Berechnungen erfordern, selbst für eine Szene mit einer begrenzten Anzahl von Objekten oder direkten Lichtquellen. Eine so große Anzahl von Berechnungen ist bei der Verwendung von Hardware mit begrenzten Ressourcen möglicherweise nicht möglich, insbesondere bei Echtzeit-Rendering-Anwendungen wie beispielsweise Online-Spielen, bei denen die Rendering-Latenz eng begrenzt ist.
  • Um die Anzahl der Berechnungen zu verringern, die in einem Schattierungsprozess für eine Szene durchgeführt werden müssen, kann ein Prozess wie beispielsweise die Lichtabtastung durchgeführt werden. In einem Prozess der Lichtabtastung kann eine Anzahl von Pixelstandorten zufällig (oder semi-zufällig oder gemäß einem Auswahlalgorithmus) ausgewählt und basierend auf diesen Standorten Lichtinformationen für die Pixel einer Szene bestimmt werden. Wie bereits erwähnt, wirken sich jedoch einige Pixelstandorte stärker auf die Beleuchtung einer Szene aus als andere. Daher kann es von Vorteil sein, Standorte für Abtastungen zu verwenden, die sich mit größerer Wahrscheinlichkeit auf die Schattierung der Szene für ein bestimmtes Bild oder einen Frame auswirken. Dementsprechend kann eine Neuabtastung der Wichtigkeit durchgeführt werden, um zu versuchen, aus einem Satz von anfänglichen Kandidaten Standorte zu lokalisieren, die zumindest im Durchschnitt als wichtiger bestimmt werden als andere ausgewählte Positionen. Dazu kann es gehören, eine Anzahl von Abtastungen zufällig auszuwählen, diese Abtastungen dann zu analysieren, um zu bestimmen, welche Abtastungen angesichts eines Satzes von Wichtigkeitskriterien am wichtigsten sind, und dann nur ausgewählte „wichtige“ Abtastungen zu verwenden, um die Beleuchtung für eine Szene zu bestimmen.
  • Das Auswählen verschiedener Beleuchtungspositionen nach dem Zufallsprinzip für jeden Frame kann zu Artefakten wie beispielsweise Flackern führen, was in einer Szene, in der mehrere Bilder oder Videobilder in Sequenz vorliegen, störend oder zumindest unrealistisch sein kann. Um eine gleichmäßigere Ausleuchtung zwischen den Frames bereitzustellen, kann die Abtastung 134 aus dem zuvor gerenderten Frame 132 für einen aktuellen Frame 140 wiederverwendet werden, wie in Beispiel 130 von 1B veranschaulicht. Wie bereits erwähnt, kann die Abtastung selbst einem Punkt auf einer Lichtquelle oder einem Pfad durch den Raum in einer virtuellen Umgebung entsprechen. Die Wiederverwendung 144 in 1 B stellt die zeitliche Wiederverwendung dar, bei der eine Neuabtastung zwischen einem neuen Pfad und einem vorherigen Frame erfolgt. Die zeitliche Wiederverwendung einer Lichtabtastung kann dazu beitragen, dass die Beleuchtung zwischen den Frames zumindest einigermaßen konsistent ist. Allerdings kann die Wiederverwendung einer Lichtabtastung zwischen den Frames in bestimmten Situationen unzuverlässig sein, wie beispielsweise bei einer Bewegung eines Objekts oder einer Lichtquelle, einer Veränderung des Zustands der Szene oder einer Veränderung des Zustands einer virtuellen Kamera, die zum Rendern einer Ansicht der Szene verwendet wird, neben anderen solchen Optionen. Zum Beispiel, wenn ein Objekt ein bestimmtes Objekt nicht verdeckt, kann das Licht dieses Objekts die Ansicht der Szene nicht mehr beeinträchtigen, und wenn das Objekt oder die Kamera sich bewegt haben, würde dieser Punkt auf einem Objekt nicht einem anderen Standort für den aktuellen Frame zugeordnet werden. Um diese potenziellen Veränderungen zu berücksichtigen, können Informationen wie beispielsweise optische Strömungsdaten verwendet werden, um eine Bestimmung zur Gewichtung der Beleuchtungsinformationen aus dem vorherigen Frame zu bestimmen.
  • In mindestens einer Ausführungsform kann eine Anzahl zufälliger Abtastungen 162 für einen aktuellen Frame ausgewählt werden, wie in der Ansicht 160 von 1C veranschaulicht, und diese Abtastungen 162 können verwendet werden, um die Farbe für einen Pixelstandort (oder gespeicherten Pfad) des aktuellen Frames 140 zu bestimmen, wie in der Ansicht 180 von 1D veranschaulicht. Die Neuabtastung in 1C stellt eine räumliche Wiederverwendung dar, bei der eine Neuabtastung zwischen dieser „neuen“ Abtastung, die wiederverwendet wird, und zufällig ausgewählten benachbarten Pixeln erfolgt. In diesem Beispiel, in dem die alte Abtastung 132 als „neue“ Abtastung wiederverwendet wird, kann diese alte Abtastung gewichtet werden, um ihre Bedeutung für die aktuelle Szene widerzuspiegeln. Lichtquellen aus früheren Frames können zwar wertvolle Informationen bereitstellen, sind jedoch aufgrund von Faktoren wie beispielsweise der Bewegung eines Objekts oder der Kamera für einen aktuellen Frame möglicherweise weniger relevant. So kann die Bedeutung dieser früheren Abtastungsdaten gewichtet werden, wenn sie mit Abtastungspunkten aus dem aktuellen Frame betrachtet werden. Eine solche Wiederverwendung von Beispieldaten kann auf streamingfreundliche Weise erfolgen, wobei die Beispieldaten sowohl räumlich als auch zeitlich wiederverwendet werden. Verschiedene Qualitätsalgorithmen können Abtastungen im Bildschirmbereich wiederverwenden, ebenso wie in Gittern, schützenden Hash-Karten und anderen derartigen Datenstrukturen. Diese Wiederverwendung kann die Wiederverwendung von zufälligen Lichtabtastungen beinhalten, wie beispielsweise für die direkte Beleuchtung, oder ganze Lichtpfade, wie sie für die globale Beleuchtung nützlich sein können. Wie veranschaulicht, können bei jedem neu gerenderten Pixel einige neue Abtastungen (oder anfängliche Kandidaten) entnommen werden, wobei auch Abtastungen aus dem letzten Frame und benachbarten Pixeln wiederverwendet werden können, mit entsprechender Neugewichtung. Normalerweise wird nur eine dieser Abtastungen ausgewählt und pro Pixel schattiert, aber sie ist wahrscheinlich sehr relevant und weist Beiträge von allen wiederverwendeten Abtastungen auf. Eine solche zeitliche Wiederverwendung kann rekursiv sein, da die alte Abtastung durch Abtastungen aus dem vorherigen Frame verbessert wurde, der wiederum von noch früheren Frames beeinflusst wurde.
  • Ein Vorteil eines solchen Ansatzes ist, dass diese anfänglichen Kandidaten mit minimalem Rechenaufwand erhalten werden können, und dass diese Kandidaten durch ihre Wiederverwendung in einem solchen Prozess in qualitativ hochwertige Abtastungen umgewandelt werden können. Es kann jedoch sein, dass die anfänglichen Abtastungen die Beleuchtung in einer Szene nicht mit ausreichender Genauigkeit dargestellt haben, so dass die Qualität der endgültigen Abtastungen unzureichend ist. In manchen Fällen kann die Unterabtastung mit naiv ausgewählten Kandidaten zu stark sein. Ein in 2A veranschaulichtes Bild 200 stellt eine komplexe Szene mit vielen verschiedenen Lichtquellen dar, bei der einzelne Lichtquellen die Beleuchtung nur eines kleinen Abschnitts dieser Szene für eine bestimmte Ansicht spürbar beeinflussen können. In einer solchen Situation können Lichtabtastungen ausgewählt werden, die für bestimmte Abschnitte der Szene wichtig sind, für andere jedoch nicht. Ferner kann es sein, dass für einen bestimmten Frame keine Abtastungen genommen werden, die Lichter für andere Abschnitte der Szene darstellen. 2B veranschaulicht einen Abschnitt 202 der in 2A veranschaulichten Szene. In einem ersten Bild 230 wird gezeigt, dass an der Wand neben einem Eingang Lampen 234 angebracht sind und in einem der Räume des Gebäudes eine Leuchte 232 steht. Zum Beispiel wurden bei der Zufallsauswahl verschiedene Lichtquellen ausgewählt, die für Abschnitte dieser Szene wichtig sein könnten, aber keine dieser Lichtquellen wurde ausgewählt. Wie veranschaulicht, sind die nahe gelegenen Regionen im Bild 230 nicht gut beleuchtet, da die für diese Regionen wichtigen Lichtquellen nicht ausgewählt wurden. Wenn diese Lichtquellen 262, 264 durch die Beleuchtungsmuster dargestellt würden, wäre die Beleuchtung dieser Abschnitte der Szene genauer, wie im zweiten Bild 260 rechts veranschaulicht. Wie veranschaulicht, wird der Bereich in der Nähe der Tür durch die an der Wand angebrachten Lampen 264 beleuchtet, und der Raum wird durch das innere Raumlicht 262 beleuchtet. Wie veranschaulicht, kann eine unzureichende oder ungenaue Abtastung daher zu einer ungenauen, unvollständigen oder unrealistischen Beleuchtung einer Szene führen.
  • Eine Unterabtastung kann auch in verschiedenen anderen Situationen auftreten. Zum Beispiel kann es bei Szenen mit kleinen Lichtern oder schwer zu lokalisierenden Lichtern oder bei Pfaden, die bei globaler Beleuchtung schwer zu finden sind, zu einer Unterabtastung kommen. Eine Unterabtastung kann bei Disokklusionen im Bildschirmraum auftreten, die eine Rücksetzung der Wiederverwendung bewirken, sowie bei Fehlern in der Wiederverwendung, die durch die Wiederverwendung über Diskontinuitäten oder aggregierte Oberflächen wie beispielsweise Laub entstehen können. Unterabtastung kann auch aufgrund des Wunsches der Ingenieure auftreten, die Anzahl der anfänglichen Abtastungen zu minimieren, wie beispielsweise die Verwendung von 4 oder 8 Kandidaten anstelle von 32. Zu einer Unterabtastung kann es bei Szenen mit einer großen Anzahl von Lichtern kommen, die jeweils nur in einer kleinen Region die Farbe dominieren, oder aufgrund von kochenden, hochfrequenten Texturlichtern oder Farbrauschen und anderen Faktoren. Das Verständnis, wann eine Unterabtastung wahrscheinlich ist, kann dazu beitragen, zu bestimmen, wie man Probleme mit einer Unterabtastung am besten vermeidet.
  • Ferner sind die Gewichtung und Abtastungszahl für eine Abtastung aus einem früheren Frame vor allem dann nützlich, wenn es eine kontinuierliche Kette gültiger Wiederverwendungsschritte gibt, bei denen Abtastungen von einem Frame zum anderen oder von einem Pixel zum anderen wiederverwendet werden können. Wenn es eine Bedingung gibt, wie beispielsweise eine Disokklusion, die diese Werte im Wesentlichen zurücksetzt oder verursacht, dass sie nicht mehr gültig sind, dann können diese Gewichtungen und Abtastungszahlen nicht mehr verwendet werden, und frühere Abtastungen in bestehenden Abtastungsansätzen müssten verworfen werden, weil der Prozess nicht mehr wüsste, wie er diese früheren Abtastungen behandeln soll. Zum Beispiel veranschaulicht das Bild 290 in 2C die Gegenwart von schwarzen Pixeln 292, die zumindest teilweise aus einer Disokklusion resultieren, die aufgrund einer Stanzbewegung einer Figur in einer Szene auftritt. Die Disokklusion kann dazu führen, dass die Informationen der vorherigen Lichtabtastungen verworfen werden, wobei die neuen Abtastungen möglicherweise die wichtigen Lichtdaten nicht schnell oder genau genug erfassen, um die Gegenwart von schwarzen Pixeln auf dem Bildschirm zu vermeiden, wenn noch keine ausreichenden Beleuchtungsdaten verfügbar sind. Das Verwerfen der zeitlichen Beleuchtungshistorie kann zu relativ groben Abtastungen führen, zumindest für Frames kurz nach der Disokklusion, und es kann eine Reihe von Frames erfordern, um die zeitliche Beleuchtungshistorie in dem betreffenden Behälter ausreichend wiederherzustellen. In der Szene, die durch das Bild 290 dargestellt wird, befindet sich eine Deckenleuchte an einem Mast, die nicht nur den Arm, sondern auch die Objekte hinter dem Arm, wie beispielsweise die Rückwand, beleuchtet. Auch wenn die Beleuchtungsdaten für dieses Oberlicht für einige dieser Pixel verworfen wurden, ist das Oberlicht wahrscheinlich immer noch relevant für die entsprechende Farbe dieser Pixel, wenn sie nicht mehr verdeckt sind. Auch wenn ein Rendering-Prozess in einem solchen Fall möglicherweise nicht mehr weiß, wie eine wichtige Lichtquelle aus einem früheren Frame zu gewichten ist, bedeutet dies nicht, dass die Abtastung keinen Wert mehr hat oder verworfen werden sollte, da die Lichtabtastung für den aktuellen Frame immer noch wichtig sein kann und zumindest im Prozess der Abtastung berücksichtigt werden sollte, um zu vermeiden, dass eine wichtige Lichtquelle für den aktuellen Frame nicht berücksichtigt wird.
  • Dementsprechend ermöglichen Ausführungsformen die Auswahl und Wiederverwendung von Abtastungsdaten, um qualitativ hochwertigere Ausgangskandidaten zu erzeugen, die für die tatsächliche Beleuchtung einer Szene repräsentativer sind. Bestehende Ansätze, wie beispielsweise die Verwendung eines Algorithmus zur zeitlichen Neuabtastung der Wichtigkeit (z. B. ReSTIR von NVIDIA Corporation), enthalten in den Behältern drei Komponenten, darunter eine Abtastung, eine Gewichtung und eine effektive Abtastungszahl. Die Gewichtung (Umfang, in dem eine Abtastung berücksichtigt wird) und die Abtastungszahl (Anzahl der Abtastungen, die zur Gewichtung der wiederverwendeten Abtastung für den aktuellen Pixel beitragen) ermöglichen es, die Abtastung als repräsentativ für einen großen Pool von Abtastungen zu behandeln, die sich im Laufe der Zeit angesammelt haben, was eine numerische Wahrscheinlichkeit aus einer sehr komplexen Wahrscheinlichkeitsverteilungsfunktion (PDF) ergibt. Diese PDF ist jedoch nur (oder zumindest in erster Linie) dann sinnvoll, wenn es eine fortlaufende Kette gültiger Wiederverwendungsschritte gibt. In Situationen, in denen die Gewichtung und die Abtastungszahl unzuverlässig sind oder verworfen werden sollen, kann die Abtastung selbst jedoch immer noch für einen aktuellen Frame oder ein Bild nützlich sein. In mindestens einer Ausführungsform kann diese Abtastung ohne jegliche Gewichtung, aber so, als ob die Abtastung als Zufallsabtastung für den aktuellen Frame ausgewählt worden wäre, als ein neuer anfänglicher Kandidat für zukünftige Frames ausgewählt werden.
  • Eine solche Verwendung kann in verschiedenen Situationen von Vorteil sein. Zum Beispiel kann es eine Okklusion oder Disokklusion geben, bei der der zeitliche Verlauf aufgrund von Objekt- oder Kamerabewegungen ungültig ist. Dies kann z. B. der Fall sein, wenn der Arm oder ein Gegenstand, den eine Figur in einem Ego-Videospiel hält, normalerweise sichtbar ist und die Bewegung dieser Figur Disokklusionen in der Szene verursacht. Frühere Ansätze würden die gesamten Behälter mit abtastungenbezogenen Daten, einschließlich Gewichtung und Abtastungszahl, verwerfen, aber oft sind die wichtigsten Lichter in der Szene, wie beispielsweise eine Straßenlaterne über dem Spieler-Avatar im Spiel, immer noch wichtig, um den Arm und den Gegenstand sowie die Geometrie dahinter zu beleuchten. Ansätze gemäß verschiedener Ausführungsformen können dann immer einen anfänglichen Kandidaten aus diesem Licht auswählen, wenn sie sich an diesem Standort der Szene befinden, zum Beispiel auch (oder insbesondere) in den Fällen, in denen eine Verdeckung auftritt. Diese Lichtabtastung kann somit aus dem vorherigen Frame beibehalten werden, wobei für den aktuellen Frame eine neue Gewichtung und eine neue Abtastungszahl erzeugt werden, wie es bei einer neu ausgewählten Abtastung der Fall wäre. Ein solcher Ansatz kann sicherstellen, dass ein wichtiges Licht für einen früheren Frame auch für einen aktuellen Frame berücksichtigt wird, zumindest dort, wo eine solche Wiederverwendung aufgrund von Veränderungen der Szene oder des Standorts usw. sinnvoll ist, und versucht, die Bedeutung für den aktuellen Frame unabhängig von einer früheren Gewichtung zu bestimmen, die nicht mehr verfügbar oder zuverlässig ist. Zurück zu der in 2A und 2B veranschaulichten Szene: Es gibt viele Lichter (z. B. 250.000) in dieser Szene, aber nur für einige Pixel und genau eines dieser Lichter weist einen sinnvollen Beleuchtungsbeitrag auf. Um diese Pixel richtig zu beleuchten, ist es wichtig, das spezifisch wichtige Licht regelmäßig zu identifizieren, um Rauschen zu vermeiden, da benachbarte Abtastungen dieses relevante Licht möglicherweise nicht aufweisen. Sobald ein relevantes oder wichtiges Licht identifiziert ist, sollte es zumindest in einer Ausführungsform nicht vergessen werden, solange es sich noch in dieser Szene, Umgebung oder an diesem Standort im Weltraum befindet.
  • In mindestens einer Ausführungsform können eine oder mehrere Abtastungen aus einem früheren Frame (oder Bild) in einer Sequenz ohne Gewichtungs- oder Abtastungszahlwerte wiederverwendet werden, wobei diese früheren Abtastungen als zusätzliche Ausgangskandidaten in einen Prozess der Neuabtastung der Wichtigkeit eingespeist werden. Zum Beispiel kann ein Abtastungspunkt 304 in einem vorherigen Frame 302 als wichtig für die Beleuchtung bestimmt werden, wie in der Ansicht 300 von 3A veranschaulicht. Eine Anzahl von Zufallsabtastungen 334 kann für einen Standort in einem aktuellen Frame 332 ausgewählt werden, wie in der Ansicht 330 von 3B veranschaulicht, wobei diese Abtastungen 334 als anfängliche Kandidaten für die Wichtigkeitsabtastungen dienen. In diesem Beispiel kann die Abtastung 304 aus dem vorherigen Frame, die als wichtig bestimmt wurde, ebenfalls als Eingang in den Prozess der Wichtigkeitsprüfung eingespeist werden, um als weiterer anfänglicher Kandidat behandelt zu werden. Auf diese Weise kann die zu bewertende Pixelfarbe 362 für den aktuellen Frame 332, wie in der Ansicht 360 von 3C veranschaulicht, auf der Neuabtastung der Wichtigkeit aller anfänglichen Kandidaten basieren, einschließlich der Abtastung 304 aus dem vorherigen Frame, die in diesem Schritt des Prozesses genauso behandelt wird wie jeder andere anfängliche Kandidat.
  • Im Frame verschiedener Ausführungsformen können verschiedene Ansätze zur Wiederverwendung von Lichtabtastungen durchgeführt werden. Zum Beispiel haben gute oder wichtige Lichtabtastungen aus einem früheren Frame eine Wahrscheinlichkeit, auch gute oder wichtige Lichtabtastungen in Bezug auf einen aktuellen Frame zu sein, wie beispielsweise, dass ein Prozess sich dafür entscheiden könnte, zumindest einige dieser Lichtabtastungen aus dem früheren Frame immer wieder zu verwenden. Die Lichtabtastungen, die einem Standort eines Pixels am nächsten liegen, weisen auch eine Wahrscheinlichkeit auf, dass sie für die Farbe dieses Pixels von Bedeutung sind, wie beispielsweise die Wiederverwendung der nächstgelegenen Lichtabtastungen zwischen Frames. In einigen Szenen kann es dynamische Lichter geben, die ihren Zustand (z. B. Farbe, Intensität, Blinken) im Laufe der Zeit verändern, und es kann wichtig sein, diese Lichter häufig zu berühren, so dass einige Ausführungsformen immer wieder Abtastungen für dynamische Lichter verwenden, die im vorherigen Frame identifiziert wurden. Es kann Objekte mit großer Textur geben, wie z. B. Werbetafeln, die eine höhere Anzahl von Abtastungen erfordern als andere Objekte, so dass einige Ausführungsformen Abtastungen für wichtige texturierte Lichter wiederverwenden und stören können. Lichter, die in spiegelnden Lappen reflektiert werden, können wichtiger sein, wie beispielsweise Lichter in spiegelnden Lappen, die zwischen Frames wiederverwendet und auf benachbarte Pixel neu projiziert werden können. Andere Objekte wie beispielsweise Emissionsnetze, die das Licht eines früheren Frames enthalten, können ebenfalls von Bedeutung sein, wobei in einigen Ausführungsformen die Wiederverwendung für Abtastungen dichter durchgeführt werden kann. Bei der Wiederverwendung von Pfaden in einem Prozess der Wichtigkeitsabtastungen können zumindest einige dieser Ansätze auf die Schätzung des nächsten Ereignisses für zukünftige Pfadkandidaten angewandt werden oder für die Wiederverwendung expliziter Pfade oder Pfadsegmente.
  • In mindestens einer Ausführungsform kann eine Mischung Wahrscheinlichkeitsverteilungsfunktion (PDF) verwendet werden, um anfängliche Kandidatenabtastungen für einen zukünftigen Frame zu bestimmen. Bestehende Prozesse wie ReSTIR verwenden in der Regel eine relativ naive Abtastungsverteilung, um die anfänglichen Kandidaten zu bestimmen. Dies kann sich unter anderem auf eine gleichmäßige Lichtabtastung, eine Lichtabtastung relativ zur Intensität oder eine bidirektionale Reflexionsverteilungsfunktion (BRDF) beziehen. Bei der Verwendung einer gemischten PDF hingegen besteht ein Ansatz darin, N-2 Abtastungen mit einer dieser naiven Abtastungsverteilungen zu verwenden und zwei Abtastungen aus dem vorherigen Frame zu verwenden. Diese Abtastungen können eine Abtastung des nächstgelegenen Lichts beinhalten, das im letzten Frame gefunden wurde, sowie eine Abtastung des Lichts, das im letzten Frame vom Pixel ausgewählt wurde. Bei anderen Ansätzen können N-M Abtastungen mit Hilfe einer naiven Abtastungsverteilung für insgesamt N Abtastungen oder anfängliche Kandidaten ausgewählt werden, wobei M Abtastungen aus dem vorherigen Frame (aus jeglichem der verschiedenen Gründe wie beispielsweise den hier vorliegenden) entnommen und als zusätzliche anfängliche Kandidaten wiederverwendet werden. Ein solcher Prozess kann einheitliche Gewichtungen für diese Mischung verwenden oder zumindest einige dieser Gewichtungen basierend auf dem Wissen über Veränderungen in der Szene zwischen den Frames variieren.
  • In mindestens einer Ausführungsform kann eine ziemlich naive Abtastungsverteilung verwendet werden, um die anfänglichen Abtastungen für einen aktuellen Frame auszuwählen. Bei direkter Beleuchtung kann dies z. B. das Auswählen einer bestimmten Anzahl von Lichtern (z. B. 8 oder 32) in der gesamten Szene für ein bestimmtes Pixel beinhalten. Die Verteilung kann auf Faktoren wie Leistung oder Helligkeit basieren, so dass hellere Lichter eher Abtastungen aufweisen, oder auf der Größe, so dass größere Lichter eher Abtastungen aufweisen als kleinere Lichter. In einigen Ausführungsformen kann eine Alias-Tabelle oder ein anderer derartiger Mechanismus verwendet werden, um die Verteilung zu erstellen, und dann kann ein Sampling-Algorithmus oder Prozess für jede Pixelposition in einem zu rendernden Frame eine Abtastung aus dieser Tabelle nehmen. Für die Pfadverfolgung kann ein Strahl (z. B. ein bidirektionaler Strahl mit Reflexionsverteilungsfunktion (BRDF)) für Folgestrahlen aufgenommen und eine Schätzung des nächsten Ereignisses durchgeführt werden, als eine Art naive unidirektionale Pfadverfolgung. Zusätzlich zu diesen naiv ausgewählten Abtastungen kann zumindest eine gewisse Anzahl von Abtastungen aus einem früheren Frame wiederverwendet werden. Dies kann beispielsweise das Auswählen des nächstgelegenen Lichts aus dem letzten Frame beinhalten, wie bereits erwähnt, Abtastungen von benachbarten Pixeln oder das Licht, das für diesen Standort im vorherigen Frame ausgewählt wurde, neben anderen solchen Optionen. Diese wiederverwendeten Lichter können zum Beispiel mit der Abtastungszahl kombiniert werden, die mit Hilfe einer Leistungsverteilungsfunktion zufällig ausgewählt wurden, und dann als Eingabe als gleichberechtigter anfänglicher Kandidat ohne historische Daten bereitgestellt werden. In mindestens einer Ausführungsform können die für die Wiederverwendung ausgewählten Abtastungen von verschiedenen Faktoren oder Kombinationen von Faktoren abhängen, einschließlich mindestens einiger der hierin besprochenen Faktoren, wie z. B. Helligkeit, Nähe, Größe, dynamische Bewegung, Veränderung des Beleuchtungsbeitrags, relativer Beitrag der bidirektionalen Reflexionsverteilungsfunktion (BRDF), Schattierungsbeitrag, Gegenwart von Texturvariationen oder vorherige Auswahl als Lichtabtastung in Bezug auf das Pixel oder mindestens ein benachbartes Pixel. In einigen Ausführungsformen kann die Anzahl der wiederverwendeten Abtastungen teilweise von Faktoren wie der Art der Szene, der Art des Objekts in einer Szene, der Anzahl der Lichter, der Anzahl der Lichter, die in einem vorherigen Frame als wichtig bestimmt wurden, oder anderen solchen Faktoren abhängen, wobei die Anzahl der naiv ausgewählten Abtastungen möglicherweise entsprechend angepasst wird, z. B. wenn es eine maximale Anzahl von Ausgangskandidaten gibt, die in ein Modul oder einen Prozess zur Ermittlung der Wichtigkeit eingegeben werden. Zum Beispiel könnte der Prozess bei einer dynamischen Billboard-Textur immer eine oder zwei Abtastungen auswählen, die dem Billboard entsprechen, um sie als erste Kandidaten bereitzustellen. Ein solcher Ansatz kann dazu beitragen, dass eine unvoreingenommene Bestimmung der Beleuchtung erzeugt wird, während die Abtastungen für die wichtigen Lichter in der Szene aufrechterhalten werden.
  • In mindestens einer Ausführungsform können Lichtinformationen, die als wichtig für eine Szene bestimmt wurden, bei der Wiedergabe eines beliebigen Bildes oder Frames für diese Szene berücksichtigt werden. Diese Informationen können in verschiedenen Ausführungsformen auf unterschiedliche Weise bestimmt und gespeichert werden. Ferner kann es wichtig sein, die Region einer Szene zu bestimmen, für die eine bestimmte Lichtabtastung wichtig ist. In einer Ausführungsform kann die Wichtigkeitsinformation pro Standort eines Pixels oder pro Gruppe von benachbarten Pixeln (z. B. 5x5 Anordnungen von Pixeln) gespeichert werden. Wie bereits erwähnt, kann es wünschenswert sein, Informationen über das nächstgelegene Licht zu einem bestimmten Standort eines Pixels zu erhalten, aber dieses nächstgelegene Licht wurde möglicherweise nicht in einem früheren Frame für diesen Standort lokalisiert. Dementsprechend besteht ein Ansatz darin, eine Region (z. B. 5x5 oder 7x7 Pixel) in einer Region um den Standort dieses Pixels abzufragen, um zu versuchen, das nächstgelegene Licht zu identifizieren, das sich für eine dieser Positionen in der Abtastung befand. Dadurch kann die nächstgelegene Lichtabtastung für diesen Standort im nächsten Frame wiederverwendet werden, auch wenn diese Lichtabtastung zuvor nicht für diesen Standort verwendet wurde.
  • Es gibt verschiedene Ansätze, um Statistiken aus einem oder mehreren früheren Frames zu sammeln, wie beispielsweise, um das nächstgelegene Licht für den nächsten Frame zu bestimmen. In mindestens einer Ausführungsform können die Statistiken auf einer Einzelpixelbasis erfasst werden, wobei die Abtastung in der entsprechenden Pixelposition des letzten Frames immer wieder verwendet wird. Bei einem auf einem Filter pro Pixel basierenden Ansatz kann stattdessen ein Gitter-Filter (z. B. ein 5x5-Filter) um den Standort des Pixels im vorherigen Frame herum verwendet werden. Es können ein oder mehrere auf Kacheln basierende Ansätze verwendet werden, wie beispielsweise Kacheln für den Bildschirmraum (bei denen die wichtigste Billboard-Textur in einer quadratischen Pixelregion ausgewählt werden kann), Kacheln für den Weltraum (bei denen das in einer Voxelregion wichtigste emittierende Mesh bestimmt werden kann) oder Kacheln für den Texturraum (bei denen das Licht bestimmt wird, das an dieser Position die meiste spiegelnde Farbe liefert). In mindestens einer Ausführungsform kann der Bildschirm in eine Anzahl von Kacheln unterteilt werden, beispielsweise in 32 Kacheln, und jede Kachel kann eine bestimmte Lichtquelle oder ein Objekt identifizieren, das für eine ganze Szene wichtig sein könnte, wie beispielsweise eine große beleuchtete Werbetafel bei Nacht oder ein Fernseher in einem dunklen Raum. Diese Lichtabtastungsdaten können dann für die Pixel in jeder dieser Kacheln wiederverwendet werden.
  • In mindestens einer Ausführungsform kann das Kacheln im Weltraum durchgeführt werden. Eine Welt oder virtuelle 3D-Umgebung für eine Szene kann zum Beispiel in eine 3D-Anordnung oder ein Gitter von Voxeln unterteilt werden. Es kann dann bestimmt werden, welches emittierende Netz in jeder Voxel-Region am wichtigsten ist, und dann wird immer mindestens ein anfänglicher Kandidat aus diesem Netz genommen, wenn eine Abtastung für einen Standort innerhalb oder entsprechend einer bestimmten Kachel lokalisiert wird. Das Kacheln kann auch im Texturraum durchgeführt werden, wo es viele verschiedene Koordinaten (z. B. UVs) im Texturraum geben kann, die den Oberflächen von Objekten oder anderer Geometrie in einer Szene entsprechen. Bestimmungen von wichtigen Lichtern können dann zumindest teilweise von einer Textur oder einem Abschnitt einer Textur für eine zu analysierende Oberflächenposition abhängen. In mindestens einer Ausführungsform kann in einem dieser Gitter oder Kacheln aus dem vorherigen Frame ein Lichtidentifikator gespeichert werden, der dazu verwendet werden kann, Informationen für eine wichtige Lichtabtastung zu speichern.
  • In einigen Ausführungsformen kann es wünschenswert sein, die Informationen über die Wichtigkeit von Licht aus mehreren vergangenen Frames aufrecht zu erhalten. Zum Beispiel kann bei einer Disokklusion oder Obstruktion, die nur einen Frame oder eine begrenzte Anzahl von Frames dauert, das Licht, das für das Objekt, das die Obstruktion verursacht hat, wichtig war, nicht auch für das Objekt, das die Obstruktion verursacht hat, wichtig sein, oder das Licht, das für das Objekt, das die Obstruktion verursacht hat, wichtig war, kann durch die Okklusion verdeckt worden sein. In einigen Ausführungsformen kann die Lichtabtastung also anhand des vorherigen Frames und mindestens eines anderen historischen Frames durchgeführt werden, wie beispielsweise eines Frames, der 2 oder 5 Frames zurückliegt. In einer Ausführungsform kann eine Abtastung aus jeder der letzten Serie von Frames, wie beispielsweise den letzten 3-5 Frames, wiederverwendet werden. Es können mehrere Behälter verwendet werden, um die Abtastungen über einen längeren Zeitraum aufzubewahren, oder die Abtastungen können ohne Verwendung eines oder mehrerer Behälter aufbewahrt werden.
  • In mindestens einer Ausführungsform können Ansätze zum Durchführen von Lichtabtastungen in einem Prozess einer Grafik-Pipeline 400 implementiert werden, wie beispielsweise in der in 4A dargestellten Beispielpipeline. Diese BeispielPipeline kann in zwei Teile unterteilt werden: ein Teil bezieht sich auf eine zentrale Verarbeitungseinheit und ein anderer Teil auf eine Grafikverarbeitungseinheit (GPU). Innerhalb der GPU gibt es eine Reihe von parallel arbeitenden Funktionseinheiten, die im Wesentlichen wie getrennte Spezialprozessoren funktionieren.
  • Der Systemspeicher 402 auf einer Vorrichtung, der Daten und Anweisungen für eine zentrale Verarbeitungseinheit 404 beinhalten kann, kann in einem Videospeicher 406 Informationen bereitstellen, die zum Rendern eines Bildes oder Videorahmens einer Szene verwendet werden, wie z. B. Geometrieinformationen (z. B. Meshes) für Objekte in der Szene, Texturen, die auf diese Meshes aufgebracht werden sollen, sowie Befehle, wie diese Objekte in der Szene zu rendern sind. Zum Beispiel können die relevanten Geometrie- und Texturinformationen zur Rendering-Zeit in einem oder mehreren Caches im Speicher 408 auf dem Chip gespeichert werden. Die Geometrieinformationen können in einem Scheitelpunkt-Schattierungsprozess 410 verwendet werden, um Aufgaben wie Scheitelpunkttransformation und Beleuchtung durchzuführen. Ein Scheitelpunkt-Shader kann zum Beispiel die Positionen von Formen in 3D-Zeichenkoordinaten transformieren. Die Ausgabe des Scheitelpunkt-Shaders kann verwendet werden, um eine Dreieckseinrichtung (für eine dreieckige Netzdarstellung) und eine Rasterung durchzuführen, um zu einer 3D-Darstellung zu gelangen, auf die die Textur im Textur-Cache angewendet werden kann. Die Textur kann in diesem Beispiel mithilfe von Fragmentschattierung und Rasteroperationen auf das dreieckige Netz aufgebracht werden. Es ist zu verstehen, dass im Frame der verschiedenen Ausführungsformen auch andere Arten von Shadern verwendet werden können. In diesem Beispiel berechnen die Fragment-Shader die Renderings der Farben und anderer Attribute einer Form und bestimmen die Farbe für jedes Pixel in einer virtuellen Kameraansicht oder im Bildschirmraum unter Verwendung von Informationen aus der Textur und dem Netz, einschließlich Beleuchtungsdaten, wie sie hier vorliegen. In einigen Ausführungsformen wird zumindest ein Teil der Beleuchtungsberechnungen in dem Scheitelpunkt-Schattierungsprozess 410 verarbeitet, während in anderen Ausführungsformen zumindest ein Teil der Beleuchtungsberechnungen in dem Fragment-Schattierungsprozess 412 verarbeitet wird, neben anderen solchen Optionen.
  • 4B veranschaulicht eine Ansicht 450 von Komponenten, die gemäß mindestens einer Ausführungsform zum Durchführen von Wichtigkeitsabtastungen verwendet werden können. Diese Komponenten können beispielsweise Teil eines Vertex-Shaders oder eines Fragment-Shaders sein oder getrennte Komponenten, die beispielsweise Informationen aus einem Pre-Transform- und Beleuchtungs(T&L)-Cache auswählen und dann die ausgewählten Ausgangskandidaten dem Shader zum Durchführen von Beleuchtungsberechnungen bereitstellen, wie beispielsweise durch Projizieren eines Lichtstrahls, um die Auswirkungen einer oder mehrerer Lichtquellen in einer Szene auf Punkte auf den Oberflächen verschiedener Objekte zu bestimmen. In diesem Beispiel werden relevante Daten für den aktuellen Frame 452 aus einem T&L-Cache oder einer anderen Quelle oder einem anderen Standort erhalten, und diese Frame-Daten können als Eingabe für einen Abtastungs-Selektor 454 bereitgestellt werden. Der Abtastungs-Selektor kann jeden geeigneten Auswahlalgorithmus verwenden, um Beleuchtungsabtastungen für den aktuellen Frame auszuwählen, wie beispielsweise Zufallsabtastungen oder halb-zufällige Abtastungen, oder Algorithmen, die eine Abtastung nach bestimmten Kriterien vornehmen, neben anderen Optionen. Der Abtastungs-Selektor 454 kann dann eine Auswahl von Abtastungsdaten auswählen, die den anfänglichen Kandidaten für die Wichtigkeitsabtastung entsprechen. Ein Wichtigkeitsabtastungsalgorithmus 456 kann dann einen geeigneten Wichtigkeitsabtastungsalgorithmus (oder ein trainiertes Modell oder einen anderen derartigen Prozess oder Mechanismus) verwenden, um eine oder mehrere Abtastungen auszuwählen, die für die Schattierung mindestens eines Pixel-Standorts im aktuellen Frame verwendet werden. Zum Beispiel werden die ausgewählte(n) Abtastung(en) für einen aktuellen Frame auch in einen Sample-Cache 458 im On-Chip-Speicher geschrieben. Wenn ein nachfolgender Frame gerendert werden soll, können zumindest einige der Abtastungsdaten des vorherigen Frames aus dem Abtastungs-Cache 458 gezogen und als Eingang für einen oder mehrere andere Kandidaten bereitgestellt werden, die von der Wichtigkeitsabtastung 456 berücksichtigt werden. Wie bereits erwähnt, müssen die im Cache gespeicherten Abtastungswerte keine Informationen über Gewichtung oder Abtastungszahl beinhalten und können wie jede andere neue Kandidatenabtastung behandelt werden. Abtastungen aus einem früheren Frame können anhand beliebiger relevanter Kriterien ausgewählt werden, wie beispielsweise den hier besprochenen, die sich auf wichtige oder nahe gelegene Lichtquellen für einen aktuellen Standort beziehen können. Die Beleuchtungsinformationen können sich so im Laufe der Zeit im Cache ansammeln, zumindest in einem Maße, dass die Abtastungen weiterhin als zumindest einigermaßen wichtig für die Szene angesehen werden.
  • 5 veranschaulicht einen beispielhaften Prozess 500 zum Durchführen einer auf Wiederverwendung basierenden Wichtigkeitsabtastung, der gemäß verschiedener Ausführungsformen durchgeführt werden kann. Es versteht sich, dass für diesen und andere hier vorgestellte Prozesse zusätzliche, weniger oder alternative Schritte in einer ähnlichen oder alternativen Reihenfolge oder mindestens teilweise parallel im Umfang von verschiedenen Ausführungsformen durchgeführt werden können, soweit nicht spezifisch anderweitig angegeben. Obwohl dieses Beispiel auf die Lichtabtastung für Pixel in einem zu rendernden Frame bezogen ist, kann ein solcher Prozess im Frame der verschiedenen Ausführungsformen auch für andere Arten von Abtastungen in anderen Arten von virtuellen Umgebungen oder Situationen vorteilhaft verwendet werden. In diesem Beispiel wird die Lichtabtastung 502 für jedes Pixel eines ersten Frames (z. B. eines Bildes oder Videobildes) durchgeführt, der für eine Szene gerendert werden soll, um einen Satz von anfänglichen Kandidaten zu erzeugen. Diese Kandidaten können mithilfe eines jegliches geeigneten Auswahlalgorithmus oder -ansatzes ausgewählt werden, wie beispielsweise mithilfe einer Leistungsverteilungsfunktion. Die Lichtabtastung kann durchgeführt werden, um zu versuchen, die wichtigsten Lichter für jeden Standort eines Pixels abzutasten, die sich am stärksten auf einen für dieses Pixel bestimmten endgültigen Farbwert auswirken werden. Die Wichtigkeitsabtastung kann 504 unter diesen anfänglichen Kandidaten durchgeführt werden, um eine entsprechende Abtastung (oder Lichtinformation) zu bestimmen, die zur Schattierung jedes einzelnen Pixels für diesen anfänglichen Frame verwendet wird. Der anfängliche Frame kann dann unter Verwendung der jeweiligen Lichtabtastungen für die verschiedenen Pixelstandorte gerendert werden 506, wie dies beispielsweise mit einem Shader einer Grafik-Pipeline geschehen kann. Zumindest die entsprechenden Lichtabtastungen können 508 von diesem anfänglichen Frame aus in einem Licht-Cache oder -Reservoir gespeichert werden, und andere als wichtig bestimmte Lichtabtastungen können ebenfalls gespeichert werden, wie beispielsweise Abtastungen, die dem nächstgelegenen oder hellsten Licht entsprechen, usw.
  • Die Lichtabtastung kann wiederum 510 für jedes Pixel eines nächsten Frames durchgeführt werden, der für die Szene gerendert werden soll, wobei es sich um Veränderungen der Ansicht, des Standorts des Objekts, des Zustands der Beleuchtung oder anderer solcher Aspekte handeln kann. Die Abtastung kann einen neuen Satz von anfänglichen Kandidaten für jedes Pixel des nächsten zu rendernden Frames erzeugen. Darüber hinaus kann für jeden Standort eines Pixels mindestens eine der Lichtabtastungen aus mindestens einem vorherigen Frame ausgewählt 512 werden, um als zusätzlicher Kandidat zu dienen. Wie bereits erwähnt, kann dies bedeuten, dass eine oder mehrere Abtastungen aus einem früheren Frame ausgewählt werden, wie beispielsweise in Relation zu einer relativ nahen oder hellen Lichtquelle oder einer großen komplexen Textur bestimmt. Der gesamte Satz der Kandidaten, einschließlich der neu ausgewählten Kandidaten und der zur Wiederverwendung ausgewählten Kandidaten, kann dann als Eingang für einen Prozess der Wichtigkeitsabtastung bereitgestellt werden. Aus diesen Kandidaten kann eine Wichtigkeitsabtastung 514 durchgeführt werden, um eine entsprechende Lichtabtastung (oder Lichtinformation) zu bestimmen, die zur Schattierung jedes Pixels des Frames verwendet wird, und der Frame kann dann 516 unter Verwendung der jeweiligen ausgewählten Lichtabtastungen gerendert werden. Zumindest die jeweiligen Lichtabtastungen für diesen Frame können 518 im Licht-Cache oder -Reservoir gespeichert werden, damit sie für die Beleuchtung von Pixeln in einem nachfolgenden Frame, der für diese Szene gerendert wird, zur Verfügung stehen und berücksichtigt werden können.
  • Wie erörtert, können Aspekte verschiedener hier vorliegender Ansätze leichtgewichtig genug sein, um auf einer Vorrichtung wie einer Client-Vorrichtung, z. B. einem Personal Computer oder einer Spielkonsole, ausgeführt zu werden, sei es offline oder online in Echtzeit. Ein solcher Prozess kann mit Inhalten (z. B. einer gerenderten Version eines eindeutigen Assets) durchgeführt werden, die auf dieser Client-Vorrichtung erzeugt oder von ihr aufgenommen wurden oder von einer externen Quelle empfangen wurden, wie beispielsweise Streaming-Daten oder andere Inhalte, die über mindestens ein Netzwerk empfangen wurden. In einigen Fällen kann die Verarbeitung und/oder Bestimmung dieses Inhalts von einer dieser anderen Vorrichtungen, Systeme oder Instanzen durchgeführt werden, die dann der Client-Vorrichtung (oder einem anderen derartigen Empfänger) zur Präsentation oder einer anderen derartigen Verwendung bereitgestellt wird.
  • Zum Beispiel veranschaulicht 6 eine beispielhafte Netzwerk-Konfiguration 600, die zum Bereitstellen, Erzeugen, Ändern, Codieren, Verarbeiten und/oder Übertragen von Daten oder anderen derartigen Inhalten verwendet werden kann. In diesem Beispiel können die Daten zumindest für die Lagerung oder Übertragung verschlüsselt werden. In mindestens einer Ausführungsform kann eine Client-Vorrichtung 602 Daten für eine Sitzung erzeugen oder aufnehmen, indem sie Komponenten einer Inhaltsanwendung 604 auf der Client-Vorrichtung 602 und lokal auf dieser Client-Vorrichtung gespeicherte Daten verwendet. In mindestens einer Ausführungsform kann eine Anwendung 624, die auf einem Server 620 (z. B. einem Cloud-Server oder Edge-Server) ausgeführt wird, eine Sitzung einleiten, die mindestens einer Client-Vorrichtung 602 zugeordnet ist, einen Sitzungsmanager und in einer Benutzerdatenbank 634 gespeicherte Benutzerdaten verwenden und Daten (z. B. Assets) in einer Datenbank 632 oder einem Repository verursachen, die von einem Inhaltsmanager 626 bestimmt werden. Ein Inhaltsmanager 626 kann mit einem Datenmanager 628 zusammenarbeiten, um Daten zu erhalten oder zu verarbeiten, die für die Präsentation bereitgestellt oder in einem Prozess zur Erzeugung von Inhalten für die Präsentation über die Client-Vorrichtung 602 verwendet werden sollen. In mindestens einer Ausführungsform kann diese Datenverwaltung 628 mit einer Grafik-Pipeline 630 auf dem Server 620 zusammenarbeiten, um Bilder oder Videobilder zu rendern, die den Ansichten der ausgewählten Daten oder Inhalte entsprechen. Mindestens ein Abschnitt der Daten oder Inhalte kann mit Hilfe eines geeigneten Übertragungsmanagers 622 an die Client-Vorrichtung 602 übertragen werden, um sie per Download, Streaming oder über einen anderen solchen Übertragungskanal zu versenden. Ein Encoder kann verwendet werden, um zumindest einen Teil dieser Daten zu codieren und/oder zu komprimieren, bevor sie an die Client-Vorrichtung 602 übertragen werden. In mindestens einer Ausführungsform kann die Client-Vorrichtung 602, die solche Inhalte empfängt, diese Inhalte einer entsprechenden Inhaltsanwendung 604 zur Verfügung stellen, die auch oder alternativ eine grafische Benutzeroberfläche 610 und eine Grafik-Pipeline 612 beinhalten kann, um Inhalte für die Präsentation über die Client-Vorrichtung 602 auszuwählen, auszuwählen oder bereitzustellen. Ein Decoder kann auch verwendet werden, um Daten zu decodieren, die über das/die Netzwerk(e) 640 zur Präsentation über die Client-Vorrichtung 602 aufgenommen wurden, wie beispielsweise Bild- oder Videoinhalte über eine Anzeige 606 und Audio, wie Töne und Musik, über mindestens eine Audio-Wiedergabevorrichtung 608, wie Lautsprecher oder Kopfhörer. In mindestens einer Ausführungsform können mindestens einige dieser Inhalte bereits auf der Client-Vorrichtung 602 gespeichert, gerendert oder für diese zugänglich sein, so dass keine Übertragung über ein Netzwerk 640 für diesen Anteil von Inhalten notwendig ist, wie etwa wenn diese Inhalte vielleicht zuvor heruntergeladen oder lokal auf einer Festplatte oder einer optischen Platte gespeichert wurden. In mindestens einer Ausführungsform kann ein Übertragungsmechanismus wie Datenstreaming verwendet werden, um diese Inhalte vom Server 620 oder der Benutzerdatenbank 634 auf die Client-Vorrichtung 602 zu übertragen. In mindestens einer Ausführungsform kann zumindest ein Abschnitt dieses Inhalts von einer anderen Quelle erhalten oder gestreamt werden, wie beispielsweise von einem Drittanbieterdienst 660 oder einer anderen Client-Vorrichtung 650, die auch eine Anwendung 662 zum Erzeugen oder Bereitstellen von Inhalten beinhalten kann. In mindestens einer Ausführungsform können Abschnitte dieser Funktionalität unter Verwendung mehrerer Rechenvorrichtungen oder mehrerer Prozessoren innerhalb einer oder mehrerer Rechenvorrichtungen durchgeführt werden, wie beispielsweise eine Kombination aus CPUs und GPUs beinhalten kann.
  • In diesem Beispiel können diese Client-Vorrichtungen jegliches geeignete Rechenvorrichtung beinhalten, wie z. B. einen Desktop-Computer, ein Notebook, eine Set-Top-Box, eine Streaming-Vorrichtung, eine Spielkonsole, ein Smartphone, einen Tablet-Computer, ein VR-Headset, eine AR-Brille, einen tragbaren Computer oder einen Smart-TV. Jede Client-Vorrichtung kann eine Anfrage über mindestens ein drahtgebundenes oder drahtloses Netzwerk übermitteln, das unter anderem das Internet, ein Ethernet, ein lokales Netzwerk (LAN) oder ein zellulares Netzwerk beinhalten kann. In diesem Beispiel können diese Anfragen an eine Adresse gerichtet werden, die einem Cloud-Anbieter zugeordnet ist, der eine oder mehrere elektronische Ressourcen in einer Cloud-Anbieterumgebung, wie beispielsweise ein Rechenzentrum oder eine Serverfarm, bewältigt oder kontrolliert. In mindestens einer Ausführungsform kann die Anfrage von mindestens einem Edge-Server aufgenommen oder verarbeitet werden, der sich an einer Kante des Netzwerks befindet und außerhalb mindestens einer der Umgebung des Cloud-Anbieters zugeordneten Sicherheitsschicht liegt. Auf diese Weise kann die Latenzzeit verringert werden, indem die Client-Vorrichtungen mit Servern interagieren können, die sich in größerer Nähe befinden, während gleichzeitig die Sicherheit der Ressourcen in der Umgebung des Cloud-Anbieters verbessert wird.
  • In mindestens einer Ausführungsform kann ein solches System zum Durchführen grafischer Operationen verwendet werden. In anderen Ausführungsformen kann ein solches System auch für andere Zwecke verwendet werden, wie beispielsweise zum Bereitstellen von Bild- oder Videoinhalten, um autonome maschinelle Anwendungen zu testen oder zu validieren, oder zum Durchführen von Deep Learning Operationen. In mindestens einer Ausführungsform kann ein solches System mit einer Edge-Vorrichtung implementiert werden oder eine oder mehrere virtuelle Maschinen (VMs) enthalten. In mindestens einer Ausführungsform kann ein solches System zumindest teilweise in einem Rechenzentrum oder zumindest teilweise unter Verwendung von Cloud-Rechenressourcen implementiert werden.
  • RECHENZENTRUM
  • 7 veranschaulicht ein beispielhaftes Rechenzentrum 700, in dem mindestens eine Ausführungsform verwendet werden kann. In mindestens einer Ausführungsform beinhaltet das Rechenzentrum 700 eine Rechenzentruminfrastrukturschicht 710, eine Frameworkschicht 720, eine Softwareschicht 730 und eine Anwendungsschicht 740.
  • In mindestens einer Ausführungsform, wie in 7 gezeigt, kann die Rechenzentrumsinfrastrukturschicht 710 einen Ressourcenorchestrator 712, gruppierte Rechenressourcen 714 und Knoten-Rechenressourcen (node computing resources - „Knoten-CRs“) 716(1)-716(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 716(1)-716(N) eine beliebige Anzahl von zentralen Verarbeitungseinheiten („CPUs“) oder anderen Prozessoren (einschließlich Beschleunigern, feldprogrammierbarer Gate-Arrays (FPGAs), Grafikprozessoren usw.), Speichervorrichtungen 718(1)-718(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 716(1)-716(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 714 getrennte Gruppierungen von Knoten-C.R.s aufweisen, die in einem oder mehreren Racks (nicht gezeigt) untergebracht sind, oder viele Racks, die in Rechenzentren an verschiedenen geografischen Standorten untergebracht sind (ebenfalls nicht gezeigt). In mindestens einer Ausführungsform können separate Gruppierungen von Knoten-C.R.s innerhalb der gruppierten Rechenressourcen 714 gruppierte Rechen-, Netzwerk-, Speicher- oder Storage-Ressourcen aufweisen, die zur Unterstützung einer oder mehrerer Arbeitslasten ausgestaltet oder zugewiesen werden können. 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 Ressourcenorchestrierer 712 einen oder mehrere Knoten-CR 716(1)-716(N) und/oder gruppierte Rechenressourcen 714 konfigurieren oder anderweitig steuern. In mindestens einer Ausführungsform kann der Ressourcenorchestrator 712 eine Softwaredesigninfrastruktur-(„SDI“-)Managerentität für das Rechenzentrum 700 beinhalten. In mindestens einer Ausführungsform kann der Ressourcenorchestrator @1 @12 Hardware, Software oder eine Kombination davon beinhalten.
  • In mindestens einer Ausführungsform beinhaltet, wie in 7 gezeigt, die Frameworkschicht 720 einen Aufgabenplaner 722, einen Konfigurationsverwalter 724, einen Ressourcenverwalter 726 und ein verteiltes Dateisystem 728. In mindestens einer Ausführungsform kann die Frameworkschicht 720 ein Framework beinhalten, um Software 732 der Softwareschicht 730 und/oder eine oder mehrere Anwendung(en) 742 der Anwendungsschicht 740 zu unterstützen. In mindestens einer Ausführungsform kann/können die Software 732 oder die Anwendung(en) 742 jeweils webbasierte Dienstsoftware oder -anwendungen beinhalten, wie etwa diejenigen, die durch Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt sind. In mindestens einer Ausführungsform kann die Frameworkschicht 720 eine Art von freiem und Open-Source-Software-Webanwendungs-Framework sein, ohne darauf beschränkt zu sein, wie etwa Apache Spark™ (im Folgenden „Spark“), welches das verteilte Dateisystem 728 für umfangreiche Datenverarbeitungen (z. B. „Big Data“) nutzen kann. In mindestens einer Ausführungsform kann der Aufgabenplaner 722 einen Spark-Treiber beinhalten, um die Planung von Arbeitslasten zu erleichtern, die durch verschiedene Schichten des Rechenzentrums 700 unterstützt werden. In mindestens einer Ausführungsform kann der Konfigurationsmanager 724 in der Lage sein, unterschiedliche Schichten zu konfigurieren, wie etwa die Softwareschicht 730 und die Frameworkschicht 720, was Spark und das verteilte Dateisystem 728 zum Unterstützen einer umfangreicher Datenverarbeitung beinhaltet. In mindestens einer Ausführungsform kann der Ressourcenmanager 726 in der Lage sein, geclusterte oder gruppierte Computerressourcen zu verwalten, die in dem verteilten Dateisystem 728 und dem Aufgabenplaner 722 abgebildet sind oder diesen zur Unterstützung zugewiesen sind. In mindestens einer Ausführungsform können geclusterte oder gruppierte Computerressourcen gruppierte Computerressourcen 714 auf der Rechenzentrumsinfrastrukturschicht 710 beinhalten. In mindestens einer Ausführungsform kann sich der Ressourcenmanager 726 mit dem Ressourcenorchestrator 712 koordinieren, um diese abgebildeten oder zugewiesenen Computerressourcen zu managen.
  • In mindestens einer Ausführungsform kann die in der Softwareschicht 730 enthaltene Software 732 Software beinhalten, die mindestens durch Abschnitte der Knoten-CRs 716(1)-716(N), der gruppierten Computerressourcen 714 und/oder des verteilten Dateisystems 728 der Frameworkschicht 720 verwendet wird. Zu einem oder mehreren Typen von Software können in mindestens einer Ausführungsform Software zum Durchsuchen von Internet-Webseiten, Software zum Scannen von E-Mails auf Viren, Datenbank-Software und Software für Streaming-Videoinhalte gehören, ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform kann/können die Anwendung(en) 742, die in der Anwendungsschicht 740 enthalten ist/sind, eine oder mehrere Arten von Anwendungen beinhalten, die von mindestens Abschnitten der Knoten-CRs 716(1)-716(N), gruppierten Computerressourcen 714 und/oder dem verteilten Dateisystem 728 der Frameworkschicht 720 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, Frame-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 724, Ressourcenverwalter 726 und Ressourcenorchestrierer 712 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 700 davon befreien, möglicherweise schlechte Konfigurationsentscheidungen zu treffen, und möglicherweise nicht ausgelastete und/oder leistungsschwache Abschnitte eines Rechenzentrums vermeiden.
  • In mindestens einer Ausführungsform kann das Rechenzentrum 700 Werkzeuge, Dienste, Software oder andere Ressourcen aufweisen, um ein oder mehrere Modelle zum maschinellen Lernen zu trainieren oder Informationen unter Verwendung eines oder mehrerer Modelle zum maschinellen Lernen gemäß einer oder mehrerer hier beschriebener Ausführungsformen vorherzusagen oder abzuleiten. Zum Beispiel kann in mindestens einer Ausführungsform ein Modell des maschinellen Lernens durch das Berechnen von Gewichtungsparametern gemäß einer neuronalen Netzwerkarchitektur unter Verwendung von Software und Computerressourcen trainiert werden, die vorstehend im Hinblick auf das Rechenzentrum 700 beschrieben wurden. In mindestens einer Ausführungsform können trainierte Modelle maschinellen Lernens verwendet werden, die einem oder mehreren neuronalen Netzwerken entsprechen, um Informationen unter Verwendung der vorstehend beschriebenen Ressourcen in Bezug auf das Rechenzentrum 700 durch das Verwenden von Gewichtungsparameters abzuleiten oder vorherzusagen, die durch eine oder mehrere in dieser Schrift beschriebene Trainingsmethoden berechnet wurden.
  • In mindestens einer Ausführungsform kann das Rechenzentrum CPUs, anwendungsspezifische integrierte Schaltungen (ASICs), GPUs, FPGAs oder andere Hardware verwenden, um Training und/oder Inferenzierung unter Verwendung der oben 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 115 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 115 in dem System aus 7 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 hier vorliegenden Ausführungsformen ermöglichen die Wiederverwendung von Beleuchtungsabtastungen zwischen den Frames bei der Wichtigkeitsprüfung, selbst wenn die Gewichtungs- oder Abtastungszahlinformationen nicht mehr zuverlässig sind.
  • COMPUTERSYSTEME
  • 8 ist ein Blockdiagramm, das ein beispielhaftes Computersystem veranschaulicht, das ein System mit miteinander verbundenen Einrichtungen und Komponenten, ein System-on-a-Chip (SOC) oder eine Kombination davon sein kann, das gemäß mindestens einer Ausführungsform einen Prozessor aufweist, der Ausführungseinheiten zur Ausführung eines Befehls enthält. In mindestens einer Ausführungsform kann ein Computersystem 800 ohne Einschränkung eine Komponente beinhalten, wie etwa einen Prozessor 802, um Ausführungseinheiten zu verwenden, die eine Logik beinhalten, um Algorithmen für Verfahrensdaten gemäß der vorliegenden Offenbarung durchzuführen, wie etwa in der in dieser Schrift beschriebenen Ausführungsform. In mindestens einer Ausführungsform kann das Computersystem 800 Prozessoren aufweisen, wie z. B. die PENTIUMO-Prozessorfamilie, Xeon™-, Itanium®-, XScale™- und/oder StrongARM™-, Intel® Core™- oder Intel® Nervana™-Mikroprozessoren, die von der Intel Corporation in Santa Clara, Kalifornien, erhältlich sind, obwohl auch andere Systeme (einschließlich PCs mit anderen Mikroprozessoren, technische Workstations, Set-Top-Boxen und dergleichen) verwendet werden können. In mindestens einer Ausführungsform kann das Computersystem 800 eine Version des Betriebssystems WINDOWS ausführen, das von der Microsoft Corporation in Redmond, Washington, erhältlich ist, obwohl auch andere Betriebssysteme (z. B. UNIX und Linux), eingebettete Software und/oder grafische Benutzeroberflächen verwendet werden können.
  • Ausführungsformen können auch bei anderen Ausführungen wie Handheld-Geräten 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 („DSP“), ein System auf einem Chip, Netzwerkcomputer („NetPCs“), Set-Top-Boxen, Netzwerk-Hubs, Wide-Area-Network-Switches („WAN“) oder jedes andere System beinhalten, das eine oder mehrere Anweisungen gemäß mindestens einer Ausführungsform ausführen kann.
  • In mindestens einer Ausführungsform kann das Computersystem 800 ohne Einschränkung einen Prozessor 802 beinhalten, der ohne Einschränkung eine oder mehrere Ausführungseinheiten 808 beinhalten kann, um ein Training und/oder eine Ableitung für ein Modell maschinellen Lernens gemäß in dieser Schrift beschriebenen Methoden durchzuführen. In mindestens einer Ausführungsform ist das Computersystem 800 ein Desktop mit einem einzelnen Prozessor oder ein Serversystem, in einer weiteren Ausführungsform kann das Computersystem 800 jedoch ein Mehrprozessorsystem sein. In mindestens einer Ausführungsform kann der Prozessor 802 ohne Einschränkung Folgendes beinhalten: einen Mikroprozessor eines Computers mit komplexem Befehlssatz (complex instruction set computer - „CISC“), einen Mikroprozessor zum Berechnen mit reduziertem Befehlsatz (reduced instruction set computing - „RISC“), einen Mikroprozessor mit sehr langem Befehlswort (very long instruction word - „VLIW“), einen Prozessor, der eine Kombination von Befehlssätzen implementiert, oder eine beliebige andere Prozessorvorrichtung, wie etwa einen digitalen Signalprozessor. In mindestens einer Ausführungsform kann der Prozessor 802 mit einem Prozessorbus 810 gekoppelt sein, der Datensignale zwischen dem Prozessor 802 und anderen Komponenten im Computersystem 800 übertragen kann.
  • In mindestens einer Ausführungsform kann der Prozessor 802 ohne Einschränkung einen internen Level-1 („L1“)-Cache-Speicher („Cache“) 804 beinhalten. In mindestens einer Ausführungsform kann der Prozessor 802 einen einzelnen internen Cache oder mehrere Levels von internem Cache aufweisen. In mindestens einer Ausführungsform kann sich der Cache-Speicher außerhalb des Prozessors 802 befinden. Andere Ausführungsformen können auch eine Kombination von sowohl internen als auch externen Caches beinhalten, abhängig von der jeweiligen Implementierung und den Bedürfnissen. In mindestens einer Ausführungsform kann die Registerdatei 806 verschiedene Datentypen in verschiedenen Registern speichern, einschließlich, ohne Einschränkung, Ganzzahlregister, Gleitkommaregister, Statusregister und Befehlszeigerregister.
  • In mindestens einer Ausführungsform befindet sich die Ausführungseinheit 808, einschließlich ohne Einschränkung der Logik zum Durchführen von Integer- und Gleitkommaoperationen, ebenfalls in dem Prozessor 802. In mindestens einer Ausführungsform kann der Prozessor 802 auch einen Nur-Lese-Speicher („ROM“) für Mikrocode („ucode“) aufweisen, der Mikrocode für bestimmte Makrobefehle speichert. In mindestens einer Ausführungsform kann die Ausführungseinheit 808 Logik beinhalten, um einen gepackten Befehlssatz 809 zu handhaben. In mindestens einer Ausführungsform können durch die Aufnahme des gepackten Anweisungssatzes 809 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 802 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 808 auch in Mikrocontrollern, eingebetteten Prozessoren, Grafikeinrichtungen, DSPs und anderen Arten von Logikschaltungen verwendet werden. In mindestens einer Ausführungsform kann das Computersystem 800 ohne Einschränkung einen Speicher 820 beinhalten. In mindestens einer Ausführungsform kann der Speicher 820 eine dynamische Random-Access-Memory- („DRAM“) Einrichtung, statische Random-Access-Memory- („SRAM“) Einrichtung, Flash-Speichereinrichtung oder eine andere Speichereinrichtung sein. In mindestens einer Ausführungsform kann der Speicher 820 die Befehl(e) 819 und/oder Daten 821 speichern, die durch Datensignale dargestellt sind, die durch den Prozessor 802 ausgeführt werden können.
  • In mindestens einer Ausführungsform kann ein Systemlogikchip an den Prozessorbus 810 und den Speicher 820 gekoppelt sein. In mindestens einer Ausführungsform kann ein Systemlogikchip ohne Einschränkung einen Speicher-Controller-Hub (memory controller hub - „MCH“) 816 beinhalten, und der Prozessor 802 kann mit dem MCH 816 über den Prozessorbus 810 kommunizieren. In mindestens einer Ausführungsform kann der MCH 816 einen Speicherpfad 818 mit hoher Bandbreite zum Speicher 820 zur Befehls- und Datenspeicherung und zur Speicherung von Grafikbefehlen, Daten und Texturen bereitstellen. In mindestens einer Ausführungsform kann der MCH 816 Datensignale zwischen dem Prozessor 802, dem Speicher 820 und anderen Komponenten im Computersystem 800 leiten und Datensignale zwischen dem Prozessorbus 810, dem Speicher 820 und einer System-E/A-Schnittstelle 822 ü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 816 über den Speicherpfad 818 mit hoher Bandbreite an den Speicher 820 gekoppelt sein und eine Grafik-/Videokarte 812 kann an den MCH 816 über eine Accelerated-Graphics-Port(„AGP“)-Verbindung 814 gekoppelt sein.
  • In mindestens einer Ausführungsform kann das Computersystem 800 die System-E/A-Schnittstelle 822 als proprietären Hub-Schnittstellenbus verwenden, um den MCH 816 an einen E/A-Steuerungs-Hub (I/O controller hub - „ICH“) 830 zu koppeln. In mindestens einer Ausführungsform kann ICH 830 direkte Verbindungen zu einigen E/A-Vorrichtungen über einen lokalen E/A-Bus bereitstellen. In mindestens einer Ausführungsform kann ein lokaler E/A-Bus ohne Einschränkung einen Hochgeschwindigkeits-E/A-Bus zum Anschluss von Peripheriegeräten an Speicher 820, einen Chipsatz und Prozessor 802 beinhalten. Beispiele können ohne Einschränkung einen Audiocontroller 829, einen Firmware-Hub („Flash-BIOS“) 828, einen drahtlosen Sendeempfänger 826, einen Datenspeicher 824, einen herkömmlichen E/A-Controller 823, die Benutzereingabe- und Tastaturschnittstellen 825 enthält, einen seriellen Erweiterungsport 827, wie etwa einen Universal Serial Bus („USB“)-Anschluss, und einen Netzwerkcontroller 834 beinhalten. In mindestens einer Ausführungsform kann der Datenspeicher 824 ein Festplattenlaufwerk, ein Diskettenlaufwerk, eine CD-ROM-Einrichtung, eine Flash-Speichereinrichtung oder eine andere Massenspeichereinrichtung umfassen.
  • In mindestens einer Ausführungsform stellt 8 ein System dar, das zusammengeschaltete Hardware-Vorrichtungen oder „Chips“ beinhaltet, wohingegen 8 in anderen Ausführungsformen ein beispielhaftes SoC darstellen kann. In mindestens einer Ausführungsform können die in 8 veranschaulichten Vorrichtungen mit proprietären Zusammenschaltungen, standardisierten Zusammenschaltungen (z. B. PCIe) oder einer Kombination davon zusammengeschaltet sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten des Computersystems 800 unter Verwendung von Compute-Express-Link-(CXL-)Zusammenschaltungen miteinander verbunden.
  • Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 115 in dem System aus 8 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 hier vorliegenden Ausführungsformen ermöglichen die Wiederverwendung von Beleuchtungsabtastungen zwischen den Frames bei der Wichtigkeitsprüfung, selbst wenn die Gewichtungs- oder Abtastungszahlinformationen nicht mehr zuverlässig sind.
  • 9 ist ein Blockdiagramm, das eine elektronische Vorrichtung 900 zum Nutzen eines Prozessors 910 gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform kann die elektronische Vorrichtung 900 zum Beispiel und ohne Einschränkung ein Notebook, ein Tower-Server, ein Rack-Server, ein Blade-Server, ein Laptop, ein Desktop, ein Tablet, eine Mobilvorrichtung, ein Telefon, ein eingebetteter Computer oder eine beliebige andere geeignete elektronische Vorrichtung sein.
  • In mindestens einer Ausführungsform kann die elektronische Vorrichtung 900 ohne Einschränkung den Prozessor 910 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 910 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. 9 veranschaulicht ein System, das zusammengeschaltete Hardware-Vorrichtungen oder „Chips“ beinhaltet, wohingegen 9 in anderen Ausführungsformen ein beispielhaftes SoC darstellen kann. In mindestens einer Ausführungsform können die in 9 veranschaulichten Vorrichtungen mit proprietären Verbindungen, standardisierten Verbindungen (z. B. PCIe) oder einer Kombination davon verbunden sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten von 9 über Compute-Express-Link(CXL)-Verbindungen miteinander verbunden.
  • In mindestens einer Ausführungsform kann 9 ein Display 924, einen Touchscreen 925, ein Touchpad 930, eine Nahfeldkommunikations(near field communications -„NFC“)-Einheit 945, einen Sensor-Hub 940, einen Wärmesensor 946, einen Express-Chipsatz („EC“) 935, ein Trusted Platform Module („TPM“) 938, BIOS/Firmware/Flash-Speicher („BIOS, FW Flash“) 922, ein DSP 960, ein Laufwerk 920 wie eine Solid State Disk („SSD“) oder ein Festplattenlaufwerk („HDD“), eine drahtlose lokale Netzwerkeinheit („WLAN“) 950, eine Bluetooth-Einheit 952, eine Wireless Wide Area Network-Einheit („WWAN“) 956, eine Global-Positioning-System(GPS)-Einheit 955, eine Kamera („USB 3.0-Kamera“) 954 wie etwa eine USB-3.0 Kamera und/oder eine Low-Power-Double-Data-Rate(„LPDDR“)-Speichereinheit („LPDDR3“) 915 beinhalten, die beispielsweise in einem LPDDR3-Standard implementiert ist. Diese Komponenten können in jeder geeigneten Weise umgesetzt werden.
  • In mindestens einer Ausführungsform können andere Komponenten mit dem Prozessor 910 über die hier beschriebenen Komponenten kommunikativ verbunden sein. In mindestens einer Ausführungsform können ein Beschleunigungsmesser 941, ein Umgebungslichtsensor (Ambient Light Sensor-„ALS“) 942, ein Kompass 943 und ein Gyroskop 944 kommunikativ an den Sensorhub 940 gekoppelt sein. In mindestens einer Ausführungsform können ein Wärmesensor 939, ein Lüfter 937, eine Tastatur 936 und Touchpad 930 kommunikativ an den EC 935 gekoppelt sein. In mindestens einer Ausführungsform können Lautsprecher 963, Kopfhörer 964 und ein Mikrofon („mic“) 965 kommunikativ an eine Audioeinheit („Audiocodec und Klasse-D-Verstärker“) 962 gekoppelt sein, die wiederum kommunikativ an den DSP 960 gekoppelt sein kann. In mindestens einer Ausführungsform kann die Audioeinheit 962 beispielsweise und ohne Einschränkung einen Audiocodierer/-decoder („Codec“) und einen Verstärker der Klasse D aufweisen. In mindestens einer Ausführungsform kann eine SIM-Karte („SIM“) 957 kommunikativ an die WWAN-Einheit 956 gekoppelt sein. In mindestens einer Ausführungsform können Komponenten wie die WLAN-Einheit 950 und die Bluetooth-Einheit 952 sowie die WWAN-Einheit 956 in einem Next Generation Form Factor („NGFF“) implementiert sein.
  • Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 115 in dem System 9 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 hier vorliegenden Ausführungsformen ermöglichen die Wiederverwendung von Beleuchtungsabtastungen zwischen den Frames bei der Wichtigkeitsprüfung, selbst wenn die Gewichtungs- oder Abtastungszahlinformationen nicht mehr zuverlässig sind.
  • 10 veranschaulicht ein Computersystem 1000 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist das Computersystem 1000 dazu konfiguriert, verschiedene Prozesse und Verfahren umzusetzen, die in dieser Offenbarung beschrieben sind.
  • In mindestens einer Ausführungsform umfasst das Computersystem 1000 ohne Einschränkung mindestens eine Zentraleinheit („CPU“) 1002, die an einen Kommunikationsbus 1010 angeschlossen ist, der unter Verwendung eines beliebigen geeigneten Protokolls implementiert ist, wie PCI („Peripheral Component Interconnect“), Peripheral Component Interconnect Express („PCI-Express“), AGP („Accelerated Graphics Port“), HyperTransport oder ein anderes Bus- oder Punkt-zu-Punkt-Kommunikationsprotokoll. In mindestens einer Ausführungsform weist das Computersystem 1000 ohne Einschränkung einen Hauptspeicher 1004 und eine Steuerlogik auf (z. B. implementiert als Hardware, Software oder eine Kombination davon), und die Daten werden im Hauptspeicher 1004 gespeichert, der die Form eines Direktzugriffsspeichers („RAM“) annehmen kann. In mindestens einer Ausführungsform stellt ein Netzschnittstellen-Teilsystem („Netzschnittstelle“) 1022 eine Schnittstelle zu anderen Rechenvorrichtungen und Netzen bereit, um Daten von anderen Systemen mit dem Computersystem 1000 zu empfangen und an diese zu übertragen."
  • In mindestens einer Ausführungsform beinhaltet das Computersystem 1000 ohne Einschränkung in mindestens einer Ausführungsform Eingabevorrichtungen 1008, ein Parallelverarbeitungssystem 1012 und Anzeigevorrichtungen 1006, 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 Eingabeeinrichtungen 1008, wie Tastatur, Maus, Touchpad, Mikrofon usw., empfangen. In mindestens einer Ausführungsform kann jedes hier beschriebene Modul auf einer einzigen Halbleiterplattform angeordnet sein, um ein Verarbeitungssystem zu bilden.
  • Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 115 in dem System 10 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 hier vorliegenden Ausführungsformen ermöglichen die Wiederverwendung von Beleuchtungsabtastungen zwischen den Frames bei der Wichtigkeitsprüfung, selbst wenn die Gewichtungs- oder Abtastungszahlinformationen nicht mehr zuverlässig sind.
  • 11 veranschaulicht ein Computersystem 1100 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet das Computersystem 1100 ohne Einschränkung einen Computer 1110 und einen USB-Stick 1120. In mindestens einer Ausführungsform kann der Computer 1110 ohne Einschränkung eine beliebige Anzahl und Art von Prozessor(en) (nicht dargestellt) und einen Speicher (nicht dargestellt) aufweisen. In mindestens einer Ausführungsform beinhaltet der Computer 1110 ohne Einschränkung einen Server, eine Cloud-Instanz, einen Laptop und einen Desktop-Computer.
  • In mindestens einer Ausführungsform beinhaltet der USB-Stick 1120 ohne Einschränkung eine Verarbeitungseinheit 1130, eine USB-Schnittstelle 1140 und eine USB-Schnittstellenlogik 1150. In mindestens einer Ausführungsform kann die Verarbeitungseinheit 1130 ein beliebiges Befehlsausführungssystem, eine Einrichtung oder eine Vorrichtung sein, die Befehle ausführen kann. In mindestens einer Ausführungsform kann die Verarbeitungseinheit 1130 ohne Einschränkung eine beliebige Anzahl und Art von Verarbeitungskernen (nicht gezeigt) beinhalten. In mindestens einer Ausführungsform umfasst die Verarbeitungseinheit 1130 eine anwendungsspezifische integrierte Schaltung („ASIC“), die für die Durchführung beliebiger Mengen und Arten von Operationen im Zusammenhang mit maschinellem Lernen optimiert ist. In mindestens einer Ausführungsform ist die Verarbeitungseinheit 1130 beispielsweise eine Tensor Processing Unit („TPC“), die für die Durchführung von Inferenzierungs-Operationen des maschinellen Lernens optimiert ist. In mindestens einer Ausführungsform ist die Verarbeitungseinheit 1130 eine Bildverarbeitungseinheit („VPU“), die für die Durchführung von Bildverarbeitungs- und maschinellen Lernoperationen optimiert ist.
  • In mindestens einer Ausführungsform kann die USB-Schnittstelle 1140 eine beliebige Art von USB-Stecker oder USB-Buchse sein. Zum Beispiel ist in mindestens einer Ausführungsform die USB-Schnittstelle 1140 eine USB-3.0-Typ-C-Buchse für Daten und Leistung. In mindestens einer Ausführungsform ist die USB-Schnittstelle 1140 ein USB-3.0-Typ-A-Anschluss. In mindestens einer Ausführungsform kann die USB-Schnittstellenlogik 1150 einen beliebigen Umfang an und eine beliebige Art von Logik aufweisen, die es der Verarbeitungseinheit 1130 ermöglicht, über den USB-Anschluss 1140 mit einer Einrichtung (z. B. einem Computer 1110) zu kommunizieren.
  • Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 115 in dem System 11 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 hier vorliegenden Ausführungsformen ermöglichen die Wiederverwendung von Beleuchtungsabtastungen zwischen den Frames bei der Wichtigkeitsprüfung, selbst wenn die Gewichtungs- oder Abtastungszahlinformationen nicht mehr zuverlässig sind.
  • 12A zeigt eine beispielhafte Architektur, in der eine Vielzahl von GPUs 1210(1)-1210(N) mit einer Vielzahl von Multi-Core-Prozessoren 1205(1)-1205(M) über Hochgeschwindigkeitsverbindungen 1240(1)-1240(N) (z. B. Busse, Punkt-zu-Punkt-Verbindungen usw.) kommunikativ gekoppelt sind. In mindestens einer Ausführungsform unterstützen die Hochgeschwindigkeitsverknüpfungen 1240(1)-1240(N) einen Kommunikationsdurchsatz von 4 GB/s, 30 GB/s, 80 GB/s oder höher. In mindestens einer Ausführungsform können verschiedene Zusammenschaltungsprotokolle verwendet werden, einschließlich, aber nicht beschränkt auf, PCIe 4.0 oder 5.0 und NVLink 2.0. In verschiedenen Figuren stellen „N“ und „M“ positive ganze Zahlen dar, deren Werte von Figur zu Figur unterschiedlich sein können. In mindestens einer Ausführungsform beinhaltet eine oder mehrere GPUs in einer Vielzahl von GPUs 1210(1)-1210(N) einen oder mehrere Grafikkerne (auch einfach als „Kerne“ bezeichnet) 1500, wie in den 15A und 15B offenbart. In mindestens einer Ausführungsform können ein oder mehrere Grafikkerne 1500 als Streaming-Multiprozessoren („SMs“), Stream-Prozessoren („SPs“), Stream-Processing-Einheiten („SPUs“), Recheneinheiten („CUs“), Ausführungseinheiten („EUs“) und/oder Slices bezeichnet werden, wobei sich eine Scheibe in diesem Zusammenhang auf einen Abschnitt der Rechenressourcen in einer Verarbeitungseinheit (z. B. 16 Kerne, eine Strahlverfolgungseinheit, ein Thread-Direktor oder Scheduler) beziehen kann.
  • Zusätzlich und in mindestens einer Ausführungsform sind zwei oder mehr der GPUs 1210 über Hochgeschwindigkeitsverknüpfungen 1229(1)-1229(2) zusammengeschaltet, die unter Verwendung ähnlicher oder anderer Protokolle/Verknüpfungen implementiert sein können als derjenigen, die für die Hochgeschwindigkeitsverknüpfungen 1240(1)-1240(N) verwendet werden. Auf ähnliche Weise können zwei oder mehr der Mehrkernprozessoren 1205 über eine Hochgeschwindigkeitsverknüpfung 1228 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 12A gezeigten Systemkomponenten über ähnliche Protokolle/Leitungen erfolgen (z. B. über eine gemeinsame Verbindungsstruktur).
  • In mindestens einer Ausführungsform ist jeder Mehrkernprozessor 1205 jeweils über Speicherzusammenschaltungen 1226(1)-1226(M) kommunikativ an einen Prozessorspeicher 1201(1)-1201(M) gekoppelt und jede GPU 1210(1)-1210(N) jeweils über GPU-Speicherzusammenschaltungen 1250(1)-1250(N) kommunikativ an den GPU-Speicher 1220(1)-1220(N) gekoppelt. In mindestens einer Ausführungsform können die Speicherzusammenschaltungen 1226 und 1250 ähnliche oder unterschiedliche Speicherzugriffstechnologien nutzen. Bei den Prozessorspeichern 1201(1)-1201(M) und den GPU-Speichern 1220 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 1201 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 1205 und GPUs 1210 zwar physisch an einen konkreten Speicher 1201 bzw. 1220 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 1201 (1)-1201(M) jeweils 64 GB Systemspeicheradressraum umfassen und die GPU-Speicher 1220(1)-1220(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.
  • 12B veranschaulicht zusätzliche Details für eine Zusammenschaltung zwischen einem Mehrkernprozessor 1207 und einem Grafikbeschleunigungsmodul 1246 gemäß einer beispielhaften Ausführungsform. In mindestens einer Ausführungsform kann das Grafikbeschleunigungsmodul 1246 einen oder mehrere GPU-Chips beinhalten, die auf einer Leitungskarte integriert sind, die über eine Hochgeschwindigkeitsverknüpfung 1240 (z. B. einen PCle-Bus, NVLink usw.) an den Prozessor 1207 gekoppelt ist. In mindestens einer Ausführungsform kann das Grafikbeschleunigungsmodul 1246 alternativ auf einem Gehäuse oder Chip mit dem Prozessor 1207 integriert sein.
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 1207 eine Vielzahl von Kernen 1260A-1260D, jeder mit einem Adressenübersetzungspuffer (translation lookaside buffer-„TLB“) 1261A-1261D und einem oder mehreren Caches 1262A-1262D. In mindestens einer Ausführungsform können die Kerne 1260A-1260D 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 1262A-1262D Level-1-(L1-) und Level-2-(L2-)Caches umfassen. Zusätzlich können ein oder mehrere gemeinsam genutzte Caches 1256 in den Caches 1262A-1262D vorhanden sein, die von Gruppen von Kernen 1260A-1260D gemeinsam genutzt werden. Eine Ausführungsform des Prozessors 1207 weist beispielsweise 24 Kerne auf, jeder mit seinem eigenen L1-Cache, zwölf gemeinsam genutzten L2-Caches und zwölf gemeinsam genutzten L3-Caches. In dieser Ausführungsform werden ein oder mehrere L2- und L3-Caches von zwei benachbarten Kernen gemeinsam genutzt. In mindestens einer Ausführungsform sind der Prozessor 1207 und das Grafikbeschleunigungsmodul 1246 mit dem Systemspeicher 1214 verbunden, der die Prozessorspeicher 1201(1)-1201 (M) aus 12A beinhalten kann.
  • In mindestens einer Ausführungsform wird die Kohärenz für Daten und Anweisungen, die in verschiedenen Caches 1262A-1262D, 1256 und Systemspeicher 1214 gespeichert sind, über Zwischenkernkommunikation über einen Kohärenzbus 1264 aufrechterhalten. In mindestens einer Ausführungsform kann beispielsweise jeder Cache über eine Cache-Kohärenzlogik/-schaltung verfügen, die mit ihm verbunden ist, um als Reaktion auf erkannte Lese- oder Schreibvorgänge in bestimmten Cache-Zeilen über den Kohärenzbus 1264 zu kommunizieren. In mindestens einer Ausführungsform wird ein Cache-Snooping-Protokoll über den Kohärenzbus 1264 implementiert, um Cache-Zugriffe mitzulesen.
  • In mindestens einer Ausführungsform koppelt eine Proxy-Schaltung 1225 das Grafikbeschleunigungsmodul 1246 kommunikativ an den Kohärenzbus 1264, was es dem Grafikbeschleunigungsmodul 1246 ermöglicht, an einem Cache-Kohärenzprotokoll als Peer der Kerne 1260A-1260D teilzunehmen. Insbesondere stellt in mindestens einer Ausführungsform eine Schnittstelle 1235 Verbindungsfähigkeit mit der Proxy-Schaltung 1225 über eine Hochgeschwindigkeitsverknüpfung 1240 bereit und eine Schnittstelle 1237 verbindet das Grafikbeschleunigungsmodul 1246 mit der Hochgeschwindigkeitsverknüpfung 1240.
  • In mindestens einer Ausführungsform stellt eine Beschleuniger-Integrationsschaltung 1236 Cache-Verwaltungs-, Speicherzugriffs-, Kontextverwaltungs- und Unterbrechungsverwaltungsdienste im Auftrag einer Vielzahl von Grafikverarbeitungs-Engines 1231(1)-1231(N) des Grafikbeschleunigungsmoduls 1246 bereit. In mindestens einer Ausführungsform können die Grafikverarbeitungs-Engines 1231(1)-1231(N) jeweils eine separate Grafikverarbeitungseinheit (GPU) umfassen. In mindestens einer Ausführungsform umfassen mehrere Grafikverarbeitungs-Engines 1231(1)-1231(N) des Grafikbeschleunigungsmoduls 1246 einen oder mehrere Grafikkerne 1500, wie in Verbindung mit den und erläutert. In mindestens einer Ausführungsform können die Grafikverarbeitungsmaschinen 1231(1)-1231(N) alternativ verschiedene Arten von Grafikverarbeitungsmaschinen innerhalb einer GPU umfassen, wie z. B. Grafikausführungseinheiten, Medienverarbeitungsmaschinen (z. B. Video-Encoder/Decoder), Sampler und Blit-Module. In mindestens einer Ausführungsform kann das Grafikbeschleunigungsmodul 1246 ein Grafikprozessor (GPU) mit einer Vielzahl von Grafikverarbeitungsengines 1231(1)-1231(N) sein, oder die Grafikverarbeitungsengines 1231(1)-1231(N) können einzelne GPUs sein, die in einem gemeinsamen Gehäuse, auf einer gemeinsamen Linecard oder einem gemeinsamen Chip integriert sind.
  • In mindestens einer Ausführungsform beinhaltet die Beschleuniger-Integrationsschaltung 1236 eine Speicherverwaltungseinheit (MMU) 1239 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 1214. In mindestens einer Ausführungsform kann die MMU 1239 auch einen Translations-Lookaside-Buffer (TLB) (nicht gezeigt) aufweisen, um Übersetzungen von virtuellen/effektiven in physische/reale Adressen zwischenzuspeichern. In mindestens einer Ausführungsform kann ein Cache 1238 Befehle und Daten für einen effizienten Zugriff durch die Grafikverarbeitungs-Engines 1231(1)-1231(N) speichern. In mindestens einer Ausführungsform werden die in dem Cache 1238 und in den Grafikspeichern 1233(1)-1233(M) gespeicherten Daten mit den Kern-Caches 1262A-1262D, 1256 und dem Systemspeicher 1214 kohärent gehalten, möglicherweise unter Verwendung einer Abrufeinheit 1244. Wie es oben erwähnt ist, kann dies über eine Proxy-Schaltung 1225 im Auftrag des Cache 1238 und der Speicher 1233(1)-1233(M) erfolgen (z. B. Senden von Aktualisierungen an den Cache 1238 in Bezug auf Änderungen/Zugriffen auf Cache-Zeilen in den Prozessor-Caches 1262A-1262D, 1256 und Empfangen von Aktualisierungen von dem Cache 1238).
  • In mindestens einer Ausführungsform speichert ein Satz von Registern 1245 Kontextdaten für Threads, die durch die Grafikverarbeitungs-Engines 1231(1)-1231 (N) ausgeführt werden, und eine Kontextverwaltungsschaltung 1248 verwaltet Thread-Kontexte. Beispielsweise kann die Kontextverwaltungsschaltung 1248 Speicher- und Wiederherstellungsoperationen durchführen, um Kontexte verschiedener Threads während Kontextumschaltungen zu speichern und wiederherzustellen (z. B. wenn ein erster Thread gesichert und ein zweiter Thread gespeichert wird, damit ein zweiter Thread von einer Grafikverarbeitungsmaschine ausgeführt werden kann). Zum Beispiel kann die Kontextverwaltungsschaltung 1248 bei einem Kontextwechsel aktuelle Registerwerte in einem bestimmten Bereich im Speicher speichern (z. B. durch einen Kontextverweis identifiziert). Sie kann dann die Registerwerte wiederherstellen, wenn sie zu einem Kontext zurückkehrt. In mindestens einer Ausführungsform empfängt und verarbeitet eine Unterbrechungsverwaltungsschaltung 1247 Unterbrechungen, die von Systemeinrichtungen empfangen werden.
  • In mindestens einer Ausführungsform werden virtuelle/effektive Adressen von einer Grafikverarbeitungs-Engine 1231 durch die MMU 1239 in reale/physische Adressen in dem Systemspeicher 1214 übersetzt. In mindestens einer Ausführungsform unterstützt die Beschleuniger-Integrationsschaltung 1236 mehrere (z. B. 4, 8, 16) Grafikbeschleunigermodule 1246 und/oder andere Beschleunigervorrichtungen. Das Grafikbeschleunigermodul 1246 kann in mindestens einer Ausführungsform für eine einzelne Anwendung dediziert sein, die auf dem Prozessor 1207 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 1231(1)-1231(N) mit mehreren Anwendungen oder virtuellen Maschinen (VMs) gemeinsam genutzt werden. In mindestens einer Ausführungsform können die Ressourcen in „Slices“ unterteilt werden, die verschiedenen VMs und/oder Anwendungen basierend auf den Verarbeitungsanforderungen und den mit den VMs und/oder Anwendungen verbundenen Prioritäten zugewiesen werden.
  • In mindestens einer Ausführungsform fungiert die Beschleuniger-Integrationsschaltung 1236 als Brücke zu einem System für das Grafikbeschleunigungsmodul 1246 und sie stellt Adressübersetzungs- und Systemspeicher-Cache-Dienste bereit. Darüber hinaus kann die Beschleuniger-Integrationsschaltung 1236 in mindestens einer Ausführungsform Virtualisierungseinrichtungen für einen Host-Prozessor bereitstellen, um die Virtualisierung der Grafikverarbeitungs-Engines 1231(1)-1231(N), Unterbrechungen und Speicherverwaltung zu verwalten.
  • Da in mindestens einer Ausführungsform die Hardware-Ressourcen der Grafikverarbeitungs-Engines 1231(1)-1231(N) explizit auf einen realen Adressraum abgebildet sind, den der Host-Prozessor 1207 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 1236 die physische Trennung der Grafikverarbeitungs-Engines 1231(1)-1231(N), sodass sie einem System als unabhängige Einheiten erscheinen.
  • In mindestens einer Ausführungsform sind ein oder mehrere Grafikspeicher 1233(1)-1233(M) jeweils an jede der Grafikverarbeitungs-Engines 1231(1)-1231(N) gekoppelt und es gilt N=M. In mindestens einer Ausführungsform speichern die Grafikspeicher 1233(1)-1233(M) Anweisungen und Daten, die durch jede der Grafikverarbeitungs-Engines 1231(1)-1231(N) verarbeitet werden. In mindestens einer Ausführungsform kann es sich bei den Grafikspeichern 1233(1)-1233(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 1240 Verzerrungstechniken verwendet werden, um sicherzustellen, dass es sich bei den in den Grafikspeichern 1233(1)-1233(M) gespeicherten Daten um Daten handelt, die am häufigsten durch die Grafikverarbeitungs-Engines 1231(1)-1231(N) verwendet werden und vorzugsweise nicht durch die Kerne 1260A-1260D 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 1231(1)-1231(N)) benötigt werden, innerhalb der Caches 1262A-1262D, 1256 und des Systemspeichers 1214 zu behalten.
  • 12C veranschaulicht eine andere beispielhafte Ausführungsform, bei der die Beschleuniger-Integrationsschaltung 1236 in den Prozessor 1207 integriert ist. Zumindest bei dieser Ausführungsform kommunizieren die Grafikprozessor-Engines 1231(1)-1231(N) direkt über die Hochgeschwindigkeitsverbindung 1240 mit der Beschleunigerintegrationsschaltung 1236 über die Schnittstelle 1237 und die Schnittstelle 1235 (die wiederum jede Form von Bus- oder Schnittstellenprotokoll verwenden kann). In mindestens einer Ausführungsform kann die Beschleuniger-Integrationsschaltung 1236 ähnliche Operationen durchführen wie diejenigen, die in Bezug auf 12B beschrieben sind, aber möglicherweise mit einem höheren Durchsatz, da sie sich in unmittelbarer Nähe zu dem Kohärenzbus 1264 und den Caches 1262A-1262D, 1256 befindet. In mindestens einer Ausführungsform unterstützt eine Beschleuniger-Integrationsschaltung verschiedene Programmiermodelle, einschließlich eines Programmiermodells für dedizierte Prozesse (ohne Virtualisierung des Grafikbeschleunigungsmoduls) und gemeinsam genutzter Programmiermodelle (mit Virtualisierung), die Programmiermodelle aufweisen können, die von der Beschleuniger-Integrationsschaltung 1236 gesteuert werden, und Programmiermodelle, die vom Grafikbeschleunigungsmodul 1246 gesteuert werden.
  • In mindestens einer Ausführungsform sind die Grafikverarbeitungs-Engines 1231(1)-1231(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 an die Grafikverarbeitung-Engines 1231(1)-1231(N) weiterleiten, was eine Virtualisierung innerhalb einer VM/Partition ermöglicht.
  • In mindestens einer Ausführungsform können die Grafikverarbeitungs-Engines 1231(1)-1231(N) von mehreren VM-/Anwendungspartitionen gemeinsam genutzt werden. In mindestens einer Ausführungsform können die gemeinsam genutzten Modelle einen Systemhypervisor verwenden, um die Grafikverarbeitungs-Engines 1231(1)-1231(N) zu virtualisieren und den Zugriff durch jedes Betriebssystem zu ermöglichen. Bei Systemen mit einzelner Partition ohne Hypervisor befinden sich die Grafikverarbeitungs-Engines 1231(1)-1231(N) in mindestens einer Ausführungsform im Besitz eines Betriebssystems. In mindestens einer Ausführungsform kann ein Betriebssystem die Grafikverarbeitungs-Engines 1231(1)-1231(N) virtualisieren, um jedem Prozess oder jeder Anwendung Zugriff zu gewähren.
  • In mindestens einer Ausführungsform wählt das Grafikbeschleunigungsmodul 1246 oder eine einzelne Grafikverarbeitungs-Engine 1231(1)-1231(N) ein Prozesselement unter Verwendung eines Prozessidentifikators aus. In mindestens einer Ausführungsform werden Prozesselemente im Systemspeicher 1214 gespeichert und sind unter Verwendung einer Übersetzungstechnik von effektiver Adresse zu realer Adresse adressierbar, was hier beschrieben ist. In mindestens einer Ausführungsform kann ein Prozesshandle ein implementierungsspezifischer Wert sein, der einem Host-Prozess zur Verfügung gestellt wird, wenn er seinen Kontext bei der Grafikverarbeitungs-Engine 1231(1)-1231(N) registriert (d. h. wenn er die Systemsoftware aufruft, um ein Prozesselement zu einer verknüpften Prozesselementliste hinzuzufügen). In mindestens einer Ausführungsform können die unteren 16 Bits eines Prozesshandles ein Offset eines Prozesselements innerhalb einer verknüpften Prozesselementliste sein.
  • 12D veranschaulicht eine beispielhafte Beschleuniger-Integrations-Slice 1290. In mindestens einer Ausführungsform umfasst ein „Slice“ einen bestimmten Abschnitt der Verarbeitungsressourcen der Beschleuniger-Integrationsschaltung 1236. In mindestens einer Ausführungsform ist eine Anwendung effektiver Adressraum 1282 innerhalb des Systemspeichers 1214, der Prozesselemente 1283 speichert. In mindestens einer Ausführungsform werden Prozesselemente 1283 als Reaktion auf GPU-Aufrufe 1281 von Anwendungen 1280, die auf dem Prozessor 1207 ausgeführt werden, gespeichert. In mindestens einer Ausführungsform enthält ein Prozesselement 1283 den Prozesszustand für die entsprechende Anwendung 1280. In mindestens einer Ausführungsform kann ein in dem Prozesselement 1283 enthaltener Arbeitsdeskriptor (work descriptor - WD) 1284 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 1284 ein Zeiger auf eine Aufgabeanforderungswarteschlange im effektiven Adressraum 1282 einer Anwendung.
  • In mindestens einer Ausführungsform können das Grafikbeschleunigungsmodul 1246 und/oder die einzelnen Grafikverarbeitungs-Engines 1231(1)-1231(N) von allen oder einer Teilmenge der Prozesse in einem System gemeinsam genutzt werden. In mindestens einer Ausführungsform kann eine Infrastruktur zum Einrichten des Prozessstatus und zum Senden eines WD 1284 an ein Grafikbeschleunigungsmodul 1246 zum Starten eines Auftrags in einer virtualisierten Umgebung vorhanden sein.
  • In mindestens einer Ausführungsform ist ein Programmiermodell für dedizierte Prozesse implementierungsspezifisch. In mindestens einer Ausführungsform besitzt in diesem Modell ein einzelner Prozess das Grafikbeschleunigungsmodul 1246 oder eine einzelne Grafikverarbeitungs-Engine 1231. Wenn das Grafikbeschleunigungsmodul 1246 durch einen einzelnen Prozess in Besitz genommen ist, initialisiert ein Hypervisor in mindestens einer Ausführungsform die Beschleuniger-Integrationsschaltung 1236 für eine besitzende Partition und ein Betriebssystem initialisiert die Beschleuniger-Integrationsschaltung 1236 für einen besitzenden Prozess, wenn das Grafikbeschleunigungsmodul 1246 zugeordnet ist.
  • In mindestens einer Ausführungsform ruft im Betrieb eine WD-Abrufeinheit 1291 in der Beschleuniger-Integrations-Slice 1290 den nächsten WD 1284 ab, der eine Angabe der Arbeit beinhaltet, die durch eine oder mehrere Grafikverarbeitungs-Engines des Grafikbeschleunigungsmoduls 1246 zu erledigen ist. In mindestens einer Ausführungsform können Daten von dem WD 1284 in den Registern 1245 gespeichert und durch die MMU 1239, die Unterbrechungsverwaltungsschaltung 1247 und/oder die Kontextverwaltungsschaltung 1248 verwendet werden, wie veranschaulicht. Eine Ausführungsform der MMU 1239 weist z. B. eine Segment-/Page-Walk-Schaltung für den Zugriff auf Segment-/Page-Tabellen 1286 innerhalb des virtuellen OS-Adressraums 1285 auf. In mindestens einer Ausführungsform kann die Unterbrechungsverwaltungsschaltung 1247 von dem Grafikbeschleunigungsmodul 1246 empfangene Unterbrechungsereignisse 1292 verarbeiten. Beim Durchführen von Grafikoperationen wird in mindestens einer Ausführungsform eine durch eine Grafikverarbeitungs-Engine 1231(1)-1231(N) erzeugte effektive Adresse 1293 durch die MMU 1239 in eine reale Adresse übersetzt.
  • In mindestens einer Ausführungsform werden Register 1245 für jede Grafikverarbeitungs-Engine 1231(1)-1231(N) und/oder jedes Grafikbeschleunigungsmodul 1246 dupliziert und sie können durch einen Hypervisor oder ein Betriebssystem initialisiert werden. Jedes dieser duplizierten Register kann in mindestens einer Ausführungsform in einem Beschleuniger-Integrations-Slice 1290 vorhanden 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 Slice-Steuerregister
    2 Bereichszeiger geplante Prozesse reale Adresse (RA)
    3 Autoritätsmasken-Überschreibungsregister
    4 Unterbrechungsvektor-Tabelleneintragsversatz
    5 Unterbrechungsvektor-Tabelleneintragsbegrenzung
    6 Zustandsregister
    7 Logische Partitions-ID
    8 Datensatzzeiger Hypervisor-Beschleuniger-Nutzung reale Adresse (RA)
    9 Speicherbeschreibungsregister
  • Beispielhafte Register, die durch ein Betriebssystem initialisiert werden können, sind in Tabelle 2 gezeigt. Tabelle 2 - Durch Betriebssystem initialisierte Register
    Register Nr. Beschreibung
    1 Prozess- und Thread-Identifikation
    2 Kontext-Speicherungs-/Wiederherstellungs-Zeiger effektive Adresse (EA)
    3 Datensatzzeiger Beschleuniger-Nutzung virtuelle Adresse (VA)
    4 Speichersegmenttabellenzeiger virtuelle Adresse (VA)
    5 Autoritätsmaske
    6 Arbeitsdeskriptor
  • In mindestens einer Ausführungsform ist jeder WD 1284 spezifisch für ein konkretes Grafikbeschleunigungsmodul 1246 und/oder die Grafikverarbeitungs-Engines 1231(1)-1231(N). In mindestens einer Ausführungsform enthält er alle Informationen, die für eine Grafikverarbeitungs-Engine 1231(1)-1231(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.
  • 12E veranschaulicht zusätzliche Details für eine beispielhafte Ausführungsform eines gemeinsamen Modells. Diese Ausführungsform weist einen realen Hypervisor-Adressraum 1298 auf, in dem eine Prozesselementliste 1299 gespeichert ist. In mindestens einer Ausführungsform kann auf den realen Hypervisor-Adressraum 1298 über einen Hypervisor 1296 zugegriffen werden, der die Grafikbeschleunigungsmodul-Engines für das Betriebssystem 1295 virtualisiert.
  • In mindestens einer Ausführungsform erlauben gemeinsame Programmiermodelle allen oder einer Teilmenge von Prozessen aus allen oder einer Teilmenge von Partitionen in einem System, ein Grafikbeschleunigungsmodul 1246 zu verwenden. Es gibt in mindestens einer Ausführungsform zwei Programmiermodelle, bei denen das Grafikbeschleunigungsmodul 1246 von mehreren Prozessen und Partitionen gemeinsam genutzt wird: nämlich zeitlich geteilte und grafisch gerichtete gemeinsame Nutzung.
  • In mindestens einer Ausführungsform besitzt in diesem Modell der System-Hypervisor 1296 das Grafikbeschleunigungsmodul 1246 und er stellt seine Funktion allen Betriebssystemen 1295 zur Verfügung. Damit ein Grafikbeschleunigungsmodul 1246 die Virtualisierung durch den System-Hypervisor 1296 unterstützt, muss in mindestens einer Ausführungsform das Grafikbeschleunigungsmodul 1246 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 1246 muss einen Mechanismus zum Sichern und Wiederherstellen von Kontext bereitstellen, (2) das Grafikbeschleunigungsmodul 1246 garantiert, dass die Aufgabenanforderung einer Anwendung innerhalb einer vorgegebenen Zeitspanne abgeschlossen wird, einschließlich etwaiger Übersetzungsfehler, oder das Grafikbeschleunigungsmodul 1246 stellt eine Fähigkeit bereit, die Verarbeitung einer Aufgabe vorwegzunehmen, und (3) dem Grafikbeschleunigungsmodul 1246 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 1280 einen Systemaufruf des Betriebssystems 1295 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 speziell für das Grafikbeschleunigungsmodul 1246 formatiert und kann in Form eines Befehls des Grafikbeschleunigungsmoduls 1246, eines effektiven Adressverweises auf eine benutzerdefinierte Struktur, eines effektiven Adressverweises auf eine Warteschlange von Befehlen, oder eine beliebige andere Datenstruktur vorliegen, um die vom Grafikbeschleunigungsmodul 1246 auszuführende Arbeit zu beschreiben.
  • In einer Ausführungsform ist ein AMR-Wert ein AMR-Zustand, der für einen aktuellen Prozess zu verwenden ist. In mindestens einer Ausführungsform ähnelt ein an ein Betriebssystem übergebener Wert einer Anwendung, die einen AMR einstellt. Falls in mindestens einer Ausführungsform Implementationen der Beschleuniger-Integrationsschaltung 1236 (nicht gezeigt) und des Grafikbeschleunigungsmoduls 1246 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 1296 optional einen derzeitigen Wert für ein Autoritätsmasken- Überschreibungsregister (Authority Mask Override Register - AMOR) anwenden, bevor ein AMR in dem Prozesselement 1283 platziert wird. In mindestens einer Ausführungsform ist ein CSRP eines der Register 1245, die eine effektive Adresse eines Bereichs im effektiven Adressraum 1282 einer Anwendung für das Grafikbeschleunigungsmodul 1246 zum Speichern und Wiederherstellen des Kontextstatus 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 Kontextsicherungs-/Wiederherstellungsbereich im Systemspeicher gepinnt sein.
  • Beim Empfang eines Systemaufrufs kann das Betriebssystem 1295 überprüfen, ob die Anwendung 1280 registriert ist und die Berechtigung zur Verwendung des Grafikbeschleunigungsmoduls 1246 erhalten hat. In mindestens einer Ausführungsform ruft das Betriebssystem 1295 dann den Hypervisor 1296 mit den in Tabelle 3 gezeigten Informationen auf. Tabelle 3 - Betriebssystem-zu-Hypervisor-Aufrufparameter
    Parameter Nr. Beschreibung
    1 Ein Arbeitsdeskriptor (WD)
    2 Ein Autoritätsmaskenregister(AMR)-Wert (möglicherweise maskiert)
    3 Ein Kontext-Speicherungs-/Wiederherstellungs-Bereichszeiger (CSRP) effektive Adresse (EA)
    4 Eine Prozess-ID (PID) und optionale Thread-ID (TID)
    5 Ein Beschleunigernutzungs-Datensatzzeiger (AURP) der virtuellen Adresse (VA)
    6 Virtuelle Adresse eines Speichersegmenttabellenzeigers (storage segment table pointer - SSTP)
    7 Eine logische Interrupt-Service-Nummer (LISN)
  • In mindestens einer Ausführungsform verifiziert der Hypervisor 1296 beim Empfangen eines Hypervisor-Aufrufs, dass das Betriebssystem 1295 registriert ist und die Autorität zur Verwendung des Grafikbeschleunigungsmoduls 1246 bekommen hat. In mindestens einer Ausführungsform setzt der Hypervisor 1296 dann das Prozesselement 1283 in eine mit dem Prozesselement verknüpfte Liste für einen entsprechenden Typ des Grafikbeschleunigungsmoduls 1246 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-Speicherungs/Wiederherstellungs-Bereichszeiger (CSRP) effektive Adresse (EA)
    4 Eine Prozess-ID (PID) und optionale Thread-ID (TID)
    5 Ein Beschleunigernutzungs-Datensatzzeiger (AURP) der virtuellen Adresse (VA)
    6 Virtuelle Adresse eines Speichersegmenttabellenzeigers (storage segment table pointer - SSTP)
    7 Eine logische Interrupt-Service-Nummer (LISN)
    8 Unterbrechungsvektortabelle, abgeleitet von Hypervisor-Aufrufparametern
    9 Ein Zustandsregisterwert (SR)
    10 Eine logische Partitions-ID (LPID)
    11 Ein Hypervisor-Beschleunigernutzungsbereichszeiger der realen Adresse (RA)
    12 Speicherdeskriptorregister (SDR)
  • In mindestens einer Ausführungsform initialisiert der Hypervisor eine Vielzahl von Registern 1245 der Beschleuniger-Integrations-Slice 1290.
  • Wie in 12F 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 1201(1)-1201(N) und die GPU-Speicher 1220(1)-1220(N) verwendet wird. In dieser Implementierung nutzen Operationen, die auf den GPUs 1210(1)-1210(N) ausgeführt werden, denselben virtuellen/effektiven Speicheradressraum, um auf die Prozessorspeicher 1201(1)-1201(M) zuzugreifen und umgekehrt, was die Programmierbarkeit vereinfacht. In mindestens einer Ausführungsform wird ein erster Abschnitt eines virtuellen/effektiven Adressraums dem Prozessorspeicher 1201(1) zugewiesen, ein zweiter Abschnitt dem zweiten Prozessorspeicher 1201(N), ein dritter Abschnitt dem GPU-Speicher 1220(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 1201 und GPU-Speicher 1220 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 1294A-1294E innerhalb einer oder mehrerer MMUs 1239A-1239E die Cache-Kohärenz zwischen Caches eines oder mehrerer Host-Prozessoren (z. B. 1205) und GPUs 1210 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 1294A-1294E in 12F veranschaulicht sind, kann die Verzerrungs-/Kohärenzschaltung innerhalb einer MMU eines oder mehrerer Host-Prozessoren 1205 und/oder innerhalb der Beschleuniger-Integrationsschaltung 1236 implementiert sein.
  • Eine Ausführungsform ermöglicht es, dass GPU-Speicher 1220 als Teil des Systemspeichers abgebildet ist und dass auf ihn unter Verwendung der SVM-Technologie (Shared Virtual Memory) zugegriffen wird, ohne jedoch Leistungsnachteile zu erleiden, die mit einer vollständigen System-Cache-Kohärenz verbunden sind. In mindestens einer Ausführungsform bietet die Möglichkeit des Zugriffs auf die GPU-Speicher 1220 als Systemspeicher ohne lästigen Cache-Kohärenz-Overhead eine vorteilhafte Betriebsumgebung für GPU-Offload. Diese Anordnung ermöglicht es der Software des Host-Prozessors 1205 in mindestens einer Ausführungsform, Operanden einzustellen und auf Berechnungsergebnisse zuzugreifen, ohne den Overhead herkömmlicher E/A -DMA-Datenkopien. 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 die Fähigkeit, ohne Cache-Kohärenz-Overheads auf die GPU Speicher 1220 zuzugreifen, für die Ausführungszeit einer ausgelagerten Berechnung entscheidend sein. In Fällen mit erheblichem Streaming-Schreibspeicherverkehr kann in mindestens einer Ausführungsform der Cache-Kohärenz-Overhead beispielsweise die effektive Schreibbandbreite einer GPU 1210 erheblich reduzieren. In mindestens einer Ausführungsform können die Effizienz der Operandeneinrichtung, die Effizienz des Ergebniszugriffs und die Effizienz der GPU-Berechnung eine Rolle beim Bestimmen der Effektivität einer GPU-Offload spielen.
  • In mindestens einer Ausführungsform wird die Auswahl von GPU-Verzerrung und Host-Prozessorverzerrung durch eine Verzerrungs-Tracker-Datenstruktur angetrieben. In mindestens einer Ausführungsform kann zum Beispiel eine Verzerrungstabelle verwendet werden, die eine seitengranulare Struktur sein kann (z. B. mit einer Granularität einer Speicherseite gesteuert), die 1 oder 2 Bit pro GPUgebundener Speicherseite beinhaltet. In mindestens einer Ausführungsform kann eine Verzerrungstabelle in einem gestohlenen Speicherbereich eines oder mehrerer GPU-Speicher 1220 implementiert werden, mit oder ohne Verzerrungs-Cache in einer GPU 1210 (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 Bias-Tabelleneintrag zugegriffen, der jedem Zugriff auf den GPU-Speicher 1220 zugeordnet ist, was die folgenden Vorgänge bewirkt. In mindestens einer Ausführungsform werden lokale Anforderungen von einer GPU 1210, die ihre Seite in der GPU-Verzerrung finden, direkt an einen entsprechenden GPU-Speicher 1220 weitergeleitet. In mindestens einer Ausführungsform werden lokale Anfragen von einer GPU, die ihre Seite im Host-Bias finden, an den Prozessor 1205 weitergeleitet (z. B. über eine Hochgeschwindigkeitsverbindung). In mindestens einer Ausführungsform werden Anfragen vom Prozessor 1205, die eine angeforderte Seite im Host-Prozessor-Bias finden, wie ein normaler Speicherlesezugriff abgeschlossen. Alternativ können Anforderungen, die an eine GPU-biased Seite gerichtet sind, an die GPU 1210 weitergeleitet werden. In mindestens einer Ausführungsform kann eine GPU dann eine Seite in eine Hostprozessor-Verzerrung überführen, wenn sie die Seite gerade nicht 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 Bias-Zustands verwendet in mindestens einer Ausführungsform einen API-Aufruf (z. B. OpenCL), der wiederum den Einrichtungstreiber einer GPU aufruft, der wiederum eine Nachricht an eine GPU sendet (oder einen Befehlsdeskriptor in die Warteschlange stellt), um sie anzuweisen, einen Bias-Zustand zu ändern und für einige Übergänge einen Cache-Flushing-Vorgang in einem Host durchzuführen. In mindestens einer Ausführungsform wird die Cache-Flushing-Operation für einen Übergang von dem Bias des Host-Prozessors 1205 zum Bias der GPU verwendet, aber nicht für einen entgegengesetzten Übergang.
  • In mindestens einer Ausführungsform wird die Cache-Kohärenz aufrechterhalten, indem GPU-gebundene Seiten vorübergehend gerendert werden, die vom Host-Prozessor 1205 nicht gecacht werden können. Um auf diese Seiten zuzugreifen, kann in mindestens einer Ausführungsform der Prozessor 1205 Zugriff von der GPU 1210 anfordern, die den Zugriff sofort gewähren kann oder auch nicht. Um die Kommunikation zwischen dem Prozessor 1205 und der GPU 1210 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 1205, benötigt werden und umgekehrt.
  • Die Hardwarestruktur(en) 115 werden verwendet, um eine oder mehrere Ausführungsformen durchzuführen. Details bezüglich der Hardwarestruktur(en) von Inferenz- und/oder Trainingslogik 115 können hierin in Verbindung mit FIG. @1@A und/oder @1@B bereitgestellt werden.
  • 13 zeigt beispielhafte integrierte Schaltungen und zugehörige Grafikprozessoren, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden können, gemäß verschiedener Ausführungsformen, wie sie hier beschrieben sind. Zusätzlich zu den veranschaulichten Schaltungen können in mindestens einer Ausführungsform weitere Logik und Schaltungen enthalten sein, einschließlich zusätzlicher Grafikprozessoren/-kerne, Controller für periphere Schnittstellen oder Allzweckprozessorkerne.
  • 13 ist ein Blockdiagramm, das eine beispielhafte integrierte Schaltung 1300 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 weist die integrierte Schaltung 1300 einen oder mehrere Anwendungsprozessor(en) 1305 (z. B. CPUs), mindestens einen Grafikprozessor 1310 auf und kann zusätzlich einen Bildprozessor 1315 und/oder einen Videoprozessor 1320 aufweisen, von denen jeder ein modularer IP-Kern sein kann. In mindestens einer Ausführungsform weist die integrierte Schaltung 1300 eine Peripherie- oder Buslogik auf, einschließlich einer USB-Steuerung 1325, einer UART-Steuerung 1330, einer SPI/SDIO-Steuerung 1335 und einer I22S/I22C-Steuerung 1340. In mindestens einer Ausführungsform kann die integrierte Schaltung 1300 eine Anzeigevorrichtung 1345 beinhalten, die an einen oder mehrere von einer Steuerung einer Multimediaschnittstelle mit hoher Auflösung (high-definition multimedia interface - HDMI) 1350 und eine Anzeigeschnittstelle für eine mobile Industrieprozessorschnittstelle (mobile industry processor interface - MIPI) 1355 gekoppelt ist. In mindestens einer Ausführungsform kann der Speicher durch ein Flash-Speicherteilsystem 1360 bereitgestellt sein, das Flash-Speicher und eine Flash-Speichersteuerung beinhaltet. In mindestens einer Ausführungsform kann die Speicherschnittstelle über eine Speichersteuerung 1365 für den Zugriff auf SDRAM- oder SRAM-Speichereinrichtungen bereitgestellt sein. In mindestens einer Ausführungsform weisen einige integrierte Schaltungen zusätzlich eine eingebettete Sicherheits-Engine 1370 auf.
  • Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. In mindestens einer Ausführungsform kann die Ableitungs- und/oder Trainingslogik 115 in der integrierten Schaltung 1300 für Ableitungs- oder Vorhersagevorgänge verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsvorgängen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
  • Die hier vorliegenden Ausführungsformen ermöglichen die Wiederverwendung von Beleuchtungsabtastungen zwischen den Frames bei der Wichtigkeitsprüfung, selbst wenn die Gewichtungs- oder Abtastungszahlinformationen nicht mehr zuverlässig sind.
  • 14A-14B zeigen beispielhafte integrierte Schaltungen und zugehörige Grafikprozessoren, die unter Verwendung eines oder mehrerer IP-Kerne gemäß verschiedenen hier beschriebenen Ausführungsformen hergestellt sein können. Zusätzlich zu den veranschaulichten Schaltungen können in mindestens einer Ausführungsform weitere Logik und Schaltungen enthalten sein, einschließlich zusätzlicher Grafikprozessoren/-kerne, Controller für periphere Schnittstellen oder Allzweckprozessorkerne.
  • 14A-14B sind Blockdiagramme, die beispielhafte Grafikprozessoren zur Verwendung innerhalb eines SoC gemäß hierin beschriebenen Ausführungsformen veranschaulichen. 14A veranschaulicht einen beispielhaften Grafikprozessor 1410 eines Systems auf einer integrierten Chipschaltung, die unter Verwendung eines oder mehrerer IP-Kerne gemäß mindestens einer Ausführungsform gefertigt werden kann. 14B veranschaulicht einen zusätzlichen beispielhaften Grafikprozessor 1440 eines Systems auf einer integrierten Chipschaltung, die unter Verwendung eines oder mehrerer IP-Kerne gemäß mindestens einer Ausführungsform gefertigt werden kann. In mindestens einer Ausführungsform ist der Grafikprozessor 1410 aus 14A ist ein Grafikprozessorkern mit niedriger Leistung. In mindestens einer Ausführungsform ist der Grafikprozessor 1440 aus 14B ein Grafikprozessorkern mit höherer Leistung. In mindestens einer Ausführungsform kann jeder der Grafikprozessoren 1410, 1440 eine Variante des Grafikprozessors 1310 aus 13 sein.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 1410 einen Vertex-Prozessor 1405 und einen oder mehrere Fragmentprozessoren 1415A-1415N (z. B. 1415A, 1415B, 1415C, 1415D bis 1415N-1 und 1415N). In mindestens einer Ausführungsform kann der Grafikprozessor 1410 verschiedene Shader-Programme über eine separate Logik ausführen, so dass der Vertex-Prozessor 1405 für die Ausführung von Operationen für Vertex-Shader-Programme optimiert ist, während ein oder mehrere Fragment-Prozessor(en) 1415A-1415N Fragment- (z. B. Pixel-) Shading-Operationen für Fragment- oder Pixel-Shader-Programme ausführen. In mindestens einer Ausführungsform führt der Vertex-Prozessor 1405 eine Vertex-Verarbeitungsstufe einer 3D-Grafik-Pipeline aus und erzeugt Primitivs und VertexDaten. In mindestens einer Ausführungsform verwenden Fragmentprozessor(en) 1415A-1415N die vom Vertexprozessor 1405 erzeugten Primitiv- und Vertexdaten, um einen Bildpuffer zu erzeugen, der auf einer Anzeigeeinrichtung angezeigt wird. In mindestens einer Ausführungsform ist/sind der/die Fragmentprozessor(en) 1415A-1415N für die Ausführung von Fragment-Shader-Programmen optimiert, wie sie in einer OpenGL-API vorgesehen sind, die zur Ausführung ähnlicher Operationen wie ein Pixel-Shader-Programm verwendet werden kann, wie es in einer Direct 3D-API vorgesehen ist.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 1410 zusätzlich eine(n) oder mehrere Speicherverwaltungseinheiten (MMUs) 1420A-1420B, Cache(s) 1425A-1425B und Schaltungszusammenschaltung(en) 1430A-1430B. In mindestens einer Ausführungsform sorgen eine oder mehrere MMU(s) 1420A-1420B für die Zuordnung von virtuellen zu physischen Adressen für den Grafikprozessor 1410, einschließlich für den Vertexprozessor 1405 und/oder den/die Fragmentprozessor(en) 1415A-1415N, der/die auf Vertex- oder Bild-/Texturdaten verweisen kann/können, die im Speicher gespeichert sind, zusätzlich zu Vertex- oder Bild-/Texturdaten, die in einem oder mehreren Cache(s) 1425A-1425B gespeichert sind. In mindestens einer Ausführungsform können eine oder mehrere MMU(s) 1420A-1420B mit anderen MMUs innerhalb eines Systems synchronisiert werden, einschließlich einer oder mehrerer MMUs, die einem oder mehreren Anwendungsprozessoren 1305, Bildprozessoren 1315 und/oder Videoprozessoren 1320 von 13 zugeordnet sind, so dass jeder Prozessor 1305-1320 an einem gemeinsamen oder vereinheitlichten virtuellen Speichersystem beteiligt sein kann. In mindestens einer Ausführungsform ermöglichen eine oder mehrere Schaltungsverbindung(en) 1430A-1430B dem Grafikprozessor 1410 eine Schnittstelle zu anderen IP-Kernen innerhalb des SoC, entweder über einen internen Bus des SoC oder über eine direkte Verbindung.
  • In mindestens einer Ausführungsform weist der Grafikprozessor 1440 einen oder mehrere Shader-Kern(e) 1455A-1455N auf (z. B. 1455A, 1455B, 1455C, 1455D, 1455E, 1455F bis 1455N-1 und 1455N), wie in 14B gezeigt, der eine einheitliche Shader-Kern-Architektur vorsieht, 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 Rechen-Shadern. In mindestens einer Ausführungsform kann die Anzahl der Shader-Kerne variieren. In mindestens einer Ausführungsform weist der Grafikprozessor 1440 einen Inter-Core-Task-Manager 1445 auf, der als Thread-Dispatcher fungiert, um Ausführungs-Threads an einen oder mehrere Shader-Kerne 1455A-1455N zu verteilen, sowie eine Tiling-Einheit 1458, um Tiling-Operationen für Tiling-basiertes Rendering zu beschleunigen, bei dem Rendering-Operationen für eine Szene im Bildraum unterteilt werden, um beispielsweise die lokale räumliche Kohärenz innerhalb einer Szene auszunutzen oder die Verwendung interner Caches zu optimieren.
  • Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 115 in der integrierten Schaltung 14A und/oder 14B für Inferenz- oder Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen neuronaler Netze oder hier beschriebenen Anwendungsfällen neuronaler Netze berechnet werden.
  • Die hier vorliegenden Ausführungsformen ermöglichen die Wiederverwendung von Beleuchtungsabtastungen zwischen den Frames bei der Wichtigkeitsprüfung, selbst wenn die Gewichtungs- oder Abtastungszahlinformationen nicht mehr zuverlässig sind.
  • 15A-15B illustrieren eine zusätzliche beispielhafte Grafikprozessorlogik gemäß den hier beschriebenen Ausführungsformen. 15A veranschaulicht einen Grafikkern 1500, der in dem Grafikprozessor 1310 aus 13 in mindestens einer Ausführungsform beinhaltet sein kann, und kann ein einheitlicher Shader-Kern 1455A-1455N wie in 14B in mindestens einer Ausführungsform sein. 15B veranschaulicht eine hochparallele Universal-Grafikverarbeitungseinheit (generalpurpose graphics processing unit - „GPGPU“) 1530, die in mindestens einer Ausführungsform für den Einsatz auf einem Multi-Chip-Modul geeignet ist.
  • In mindestens einer Ausführungsform weist der Grafikkern 1500 einen gemeinsam genutzten Befehlscache 1502, eine Textureinheit 1518 und einen Cache / gemeinsamen Speicher 1520 (z. B. einschließlich L1, L2, L3, Last Level Cache oder anderen Caches) auf, die den Ausführungsressourcen innerhalb des Grafikkerns 1500 gemeinsam sind. In mindestens einer Ausführungsform kann der Grafikkern 1500 mehrere Slices 1501A-1501N oder eine Partition für jeden Kern aufweisen, und ein Grafikprozessor kann mehrere Instanzen des Grafikkerns 1500 aufweisen. In mindestens einer Ausführungsform betrifft jedes Slice 1501A-1501N den Grafikkern 1500. In mindestens einer Ausführungsform weisen die Slices 1501A-1501N Unter-Slices auf, die Teil eines Slices 1501A-1501N sind. In mindestens einer Ausführungsform sind die Slices 1501A-1501N unabhängig von anderen Slices oder abhängig von anderen Slices. In mindestens einer Ausführungsform können Slices 1501A-1501N eine Unterstützungslogik aufweisen, die einen lokalen Befehlscache 1504A-1504N, einen Thread-Scheduler (Sequencer) 1506A-1506N, einen Thread-Dispatcher 1508A-1508N und einen Satz von Registern 1510A-1510N umfasst. In mindestens einer Ausführungsform können die Slices 1501A-1501N einen Satz zusätzlicher Funktionseinheiten (AFUs 1512A-1512N), Gleitkommaeinheiten (FPUs 1514A-1514N), ganzzahlige arithmetische Logikeinheiten (ALUs 1516A-1516N)), Adressberechnungseinheiten (ACUs 1513A-1513N), doppeltgenaue Gleitkommaeinheiten (DPFPU 1515A-1515N) und Matrixverarbeitungseinheiten (MPUs1517A-1517N) aufweisen.
  • In mindestens einer Ausführungsform beinhaltet jedes Slice 1501A-1501N einen oder mehrere Motoren für Gleitkomma- und Ganzzahlvektoroperationen sowie einen oder mehrere Motoren zur Beschleunigung von Faltungs- und Matrixoperationen bei KI, maschinellem Lernen oder großen Datensätzen. In mindestens einer Ausführungsform beinhalten eine oder mehrere Slices 1501A-1501N eine oder mehrere Vektorengines zum Berechnen eines Vektors (z. B. zum Berechnen mathematischer Operationen für Vektoren). In mindestens einer Ausführungsform kann eine Vektorengine eine Vektoroperation in 16-Bit-Gleitkomma (auch als „FP16“ bezeichnet), 32-Bit-Gleitkomma (auch als „FP32“ bezeichnet) oder 64-Bit-Gleitkomma (auch als „FP64“ bezeichnet) berechnen. In mindestens einer Ausführungsform beinhaltet eine oder mehrere Slices 1501A-1501N 16 Vektorengines, die mit 16 mathematischen Einheiten gepaart sind, um Matrix-/Tensoroperationen zu berechnen, wobei Vektorengines und mathematische Einheiten über Matrixerweiterungen offengelegt werden. In mindestens einer Ausführungsform umfasst eine Scheibe einen bestimmten Abschnitt der Verarbeitungsressourcen einer Verarbeitungseinheit, z. B. 16 Kerne und eine Strahlverfolgungseinheit oder 8 Kerne, einen Thread-Scheduler, einen Thread-Dispatcher und zusätzliche Funktionseinheiten für einen Prozessor. In mindestens einer Ausführungsform beinhaltet der Grafikkern 1500 einen oder mehrere Matrix-Motoren zum Berechnen von Matrixoperationen, z. B. beim Berechnen von Tensoroperationen.
  • In mindestens einer Ausführungsform beinhaltet eine oder mehrere Slices 1501A-1501N eine oder mehrere Strahlverfolgungseinheiten zum Berechnen von Rechenoperationen (z. B. 16 Strahlverfolgungseinheiten pro Slices 1501A-1501N). In mindestens einer Ausführungsform berechnet eine Strahlverfolgungseinheit eine Strahlendurchquerung, eine Dreiecksüberschneidung, eine Begrenzungsbox-Überschneidung oder andere Strahlverfolgungsoperationen.
  • In mindestens einer Ausführungsform beinhaltet eine oder mehrere Slices 1501A-1501N eine Medien-Slice, die Daten codiert, decodiert und/oder umwandelt, Daten skaliert und/oder umwandelt, und/oder Operationen zur Verbesserung der Videoqualität an Videodaten durchführt.
  • In mindestens einer Ausführungsform sind ein oder mehrere Slices 1501A-1501N mit L2-Cache und Memory Fabric, Verbindungssteckern, High-Bandwidth Memory (HBM) (z. B. HBM2e, HDM3) Stacks und einem Media Motor verbunden. In mindestens einer Ausführungsform beinhalten ein oder mehrere Slices 1501A-1501N mehrere Kerne (z. B. 16 Kerne) und mehrere Strahlverfolgungseinheiten (z. B. 16), die mit jedem Kern gepaart sind. In mindestens einer Ausführungsform weist eine oder mehrere Slices 1501A-1501N einen oder mehrere L1-Caches auf. In mindestens einer Ausführungsform beinhalten ein oder mehrere Slices 1501A-1501N einen oder mehrere Vektorengines; einen oder mehrere Anweisungs-Caches zum Speichern von Anweisungen; einen oder mehrere L1-Caches zum Cachen von Daten; einen oder mehrere Shared Local Memories (SLMs) zum Speichern von Daten, z. B, die Anweisungen entsprechen; einen oder mehrere Sampler zum Abtasten von Daten; eine oder mehrere Strahlverfolgungseinheiten zum Durchführen von Raytracing-Operationen; eine oder mehrere Geometrien zum Durchführen von Operationen in Geometrie-Pipelines und/oder zum Anwenden von geometrischen Transformationen auf Scheitelpunkte oder Polygone; einen oder mehrere Rasterizer zum Beschreiben eines Bildes in einem Vektorgrafikformat (z. B. Form) zu beschreiben und in ein Rasterbild umzuwandeln (z. B. eine Reihe von Pixeln, Punkten oder Linien, die bei der Anzeige zusammen ein Bild ergeben, das durch Formen dargestellt wird); einen oder mehrere Hierarchical Depth Buffer (Hiz) zum Puffern von Daten; und/oder ein oder mehrere Pixel-Backends. In mindestens einer Ausführungsform beinhaltet ein Slice 1501A-1501N eine Speicherstruktur, z. B. einen L2-Cache.
  • In mindestens einer Ausführungsform können die FPUs 1514A-1514N Gleitkommaoperationen mit einfacher Genauigkeit (32 Bit) und halber Genauigkeit (16 Bit) durchführen, während die DPFPUs 1515A-1515N Gleitkommaoperationen mit doppelter Genauigkeit (64 Bit) durchführen. In mindestens einer Ausführungsform können die ALUs 1516A-1516N ganzzahlige Operationen mit variabler Präzision mit einer Genauigkeit von 8-Bit, 16-Bit und 32-Bit ausführen und können für Operationen mit gemischter Präzision konfiguriert sein. In mindestens einer Ausführungsform können die MPUs 1517A-1517N 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 1517-1517N eine Vielzahl von Matrixoperationen durchführen, um Anwendungsframeworks für maschinelles Lernen zu beschleunigen, einschließlich der Unterstützung für eine beschleunigte allgemeine Matrix-zu-Matrix-Multiplikation (GEMM). In mindestens einer Ausführungsform können die AFUs 1512A-1512N zusätzliche logische Operationen durchführen, die von Gleitkomma- oder Ganzzahl-Einheiten nicht unterstützt werden, einschließlich trigonometrischer Operationen (z. B. Sinus, Kosinus) Inferenz- und/oder Trainingslogik 115 werden verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 115 in dem Grafikkern 1500 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.
  • In mindestens einer Ausführungsform beinhaltet der Grafikkern 1500 einen Zusammenschaltungs- und einen Link-Fabric-Sublayer, der an einen Schalter und eine GPU-GPU-Brücke angehängt ist, die es ermöglicht, mehrere Grafikprozessoren 1500 (z. B. 8) ohne Leim miteinander zu verbinden, und zwar mit Lade-/Speichereinheiten (LSUs), Datenüberführungseinheiten und Synchronisierungssemantik über mehrere Grafikprozessoren 1500. In mindestens einer Ausführungsform beinhalten die Zusammenschaltungen standardisierte Zusammenschaltungen (z. B. PCIe) oder eine Kombination davon.
  • In mindestens einer Ausführungsform beinhaltet der Grafikkern 1500 mehrere Kacheln. In mindestens einer Ausführungsform ist eine Kachel ein einzelner Chip oder ein oder mehrere Chips, wobei einzelne Chips mit einer Zusammenschaltung (z. B. Embedded Multi-Die Interconnect Bridge (EMIB)) verbunden sein können. In mindestens einer Ausführungsform beinhaltet der Grafikkern 1500 eine Rechenkachel, eine Speicherkachel (z. B. wenn auf eine Speicherkachel ausschließlich von verschiedenen Kacheln oder verschiedenen Chipsätzen wie einer Rambo-Kachel zugegriffen werden kann), eine Substrat-Kachel, eine Basis-Kachel, eine HMB-Kachel, eine Link-Kachel und eine EMIB-Kachel, wobei alle Kacheln zusammen im Grafikkern 1500 als Teil einer GPU verpackt sind. In mindestens einer Ausführungsform kann der Grafikkern 1500 mehrere Kacheln in einem einzigen Paket beinhalten (auch als „Multi-Kachel-Paket“ bezeichnet). In mindestens einer Ausführungsform kann eine Rechenkachel 8 Grafikkerne 1500, einen L1-Cache und eine Basiskachel eine Host-Schnittstelle mit PCIe 5.0, HBM2e, MDFI und EMIB aufweisen, eine Link-Kachel mit 8 Links, 8 Ports mit einem eingebetteten Schalter. In mindestens einer Ausführungsform sind die Kacheln mit Face-to-Face (F2F) Chip-on-Chip-Bonding durch Mikrobumps mit einer Teilung von 36 Mikron (z. B. Kupfersäulen) verbunden. In mindestens einer Ausführungsform beinhaltet der Grafikkern 1500 eine Speicherstruktur, die einen Speicher beinhaltet und auf die mehrere Kacheln zugreifen können. In mindestens einer Ausführungsform speichert, greift oder lädt der Grafikkern 1500 seine eigenen Hardwarekontexte im Speicher, wobei ein Hardwarekontext ein Satz von Daten ist, die vor der Wiederaufnahme eines Prozesses aus Registern geladen werden, und wobei ein Hardwarekontext einen Zustand der Hardware (z. B. den Zustand einer GPU) anzeigen kann.
  • In mindestens einer Ausführungsform beinhaltet der Grafikkern 1500 eine Serialisierungs-/Deserialisierungsschaltung (SERDES), die einen seriellen Datenstrom in einen parallelen Datenstrom umwandelt oder einen parallelen Datenstrom in einen seriellen Datenstrom umwandelt.
  • In mindestens einer Ausführungsform beinhaltet der Grafikkern 1500 eine kohärente Hochgeschwindigkeits-Unified-Fabric (GPU zu GPU), Lade-/Speichereinheiten, Massendatenübertragung und Sync-Semantik sowie über einen eingebetteten Schalter verbundene GPUs, wobei eine GPU-GPU-Brücke von einer Steuerung kontrolliert wird.
  • In mindestens einer Ausführungsform führt der Grafikkern 1500 eine API aus, wobei die API die Hardware des Grafikkerns 1500 abstrahiert und auf Bibliotheken mit Anweisungen zum Durchführen von mathematischen Operationen (z. B. Mathematik-Kernel-Bibliothek), Operationen des tiefen neuronalen Netzwerks (z. B. Bibliothek des tiefen neuronalen Netzwerks), Vektoroperationen, kollektiver Kommunikation, Thread-Bausteinen, Videoverarbeitung, Datenanalysebibliothek und/oder Raytracing-Operationen zugreift.
  • Die hier vorliegenden Ausführungsformen ermöglichen die Wiederverwendung von Beleuchtungsabtastungen zwischen den Frames bei der Wichtigkeitsprüfung, selbst wenn die Gewichtungs- oder Abtastungszahlinformationen nicht mehr zuverlässig sind.
  • 15B zeigt eine General Purpose Processing Unit (GPGPU) 1530, die so ausgestaltet sein kann, dass in mindestens einer Ausführungsform hochparallele Rechenoperationen von einem Array von Grafikverarbeitungseinheiten durchgeführt werden können. In mindestens einer Ausführungsform kann die GPGPU 1530 direkt mit anderen Instanzen der GPGPU 1530 verbunden sein, um einen Multi-GPU-Cluster zu erstellen, um die Trainingsgeschwindigkeit für tiefe neuronale Netze zu verbessern. In mindestens einer Ausführungsform beinhaltet die GPGPU 1530 eine Hostschnittstelle 1532, um eine Verbindung mit einem Hostprozessor zu ermöglichen. In mindestens einer Ausführungsform ist die Hostschnittstelle 1532 eine PCI-Express-Schnittstelle. In mindestens einer Ausführungsform kann es sich bei der Host-Schnittstelle 1532 um eine herstellerspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur handeln. In mindestens einer Ausführungsform empfängt die GPGPU 1530 Befehle von einem Host-Prozessor und verwendet einen globalen Scheduler 1534 (die auch als Thread-Sequenzer und/oder asynchrone Rechen-Engine bezeichnet werden kann), um Ausführungs-Threads, die mit diesen Befehlen verbunden sind, auf einen Satz von Rechenclustern 1536A-1536H zu verteilen. In mindestens einer Ausführungsform teilen sich die Rechencluster 1536A-1536H einen Cache-Speicher 1538. In mindestens einer Ausführungsform kann der Cache-Speicher 1538 als übergeordneter Cache für Cache-Speicher innerhalb von Rechenclustern 1536A-1536H dienen.
  • In mindestens einer Ausführungsform weist die GPGPU 1530 einen Speicher 1544A-1544B auf, der über eine Reihe von Speichersteuerungen 1542A-1542B (z. B. eine oder mehrere Steuerungen für HBM2e) mit Rechen-Clustern 1536A-1536H gekoppelt ist. In mindestens einer Ausführungsform kann der Speicher 1544A-1544B verschiedene Arten von Speichervorrichtungen umfassen, die dynamischen Direktzugriffsspeicher (DRAM) oder Grafik-Direktzugriffsspeicher, wie etwa synchronen Grafik-Direktzugriffsspeicher (SGRAM) beinhalten, der Grafik-Doppeldatenraten-(GDDR-)Speicher beinhaltet.
  • In mindestens einer Ausführungsform beinhalten die Rechencluster 1536A-1536H jeweils einen Satz von Grafikkernen, wie etwa den Grafikkern 1500 aus 15A, der mehrere Typen von Logikeinheiten für Integer und Gleitkommazahlen beinhalten kann, die Rechenoperationen mit einer Reihe von Genauigkeiten durchführen können, einschließlich solcher, die für Berechnungen des maschinellen Lernens geeignet sind. Zum Beispiel kann in mindestens einer Ausführungsform mindestens eine Teilmenge von Gleitkommaeinheiten in jedem der Rechencluster 1536A-1536H 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 1530 für den Betrieb als ein Compute-Cluster ausgestaltet sein. In mindestens einer Ausführungsform variiert die Kommunikation, die von den Rechenclustern 1536A-1536H für die Synchronisation und den Datenaustausch verwendet wird, zwischen den Ausführungsformen. In mindestens einer Ausführungsform kommunizieren mehrere Instanzen der GPGPU 1530 über die Hostschnittstelle 1532. In mindestens einer Ausführungsform beinhaltet die GPGPU 1530 einen E/A-Hub 1539, der die GPGPU 1530 mit einer GPU-Link 1540 koppelt, der eine direkte Verbindung zu anderen Instanzen der GPGPU 1530 ermöglicht. In mindestens einer Ausführungsform ist der GPU-Link 1540 an eine dedizierte GPU-zu-GPU-Brücke gekoppelt, welche die Kommunikation und Synchronisation zwischen mehreren Instanzen der GPGPU 1530 ermöglicht. In mindestens einer Ausführungsform ist der GPU-Link 1540 mit einer Hochgeschwindigkeits-Verbindung gekoppelt, um Daten an andere GPGPUs oder Parallelprozessoren zu senden und zu empfangen. In mindestens einer Ausführungsform befinden sich mehrere Instanzen der GPGPU 1530 in separaten Datenverarbeitungssystemen und kommunizieren über eine Netzwerkeinrichtung, die über die Host-Schnittstelle 1532 zugänglich ist. In mindestens einer Ausführungsform kann die GPU-Verbindung 1540 so ausgestaltet sein, dass sie zusätzlich oder alternativ zu der Hostschnittstelle 1532 eine Verbindung zu einem Hostprozessor ermöglicht.
  • In mindestens einer Ausführungsform kann die GPGPU 1530 so ausgestaltet sein, dass sie neuronale Netze trainiert. In mindestens einer Ausführungsform kann die GPGPU 1530 innerhalb einer Inferenzierungs-Plattform verwendet werden. In mindestens einer Ausführungsform, bei der die GPGPU 1530 für Inferencing verwendet wird, kann die GPGPU 1530 weniger Rechencluster 1536A-1536H aufweisen, als wenn die GPGPU 1530 für das Training eines neuronalen Netzes verwendet wird. In mindestens einer Ausführungsform kann sich die mit dem Speicher 1544A-1544B verbundene Speichertechnologie zwischen Inferenz- und Trainingskonfigurationen unterscheiden, wobei den Trainingskonfigurationen Speichertechnologien mit höherer Bandbreite zugewiesen werden. In mindestens einer Ausführungsform kann die Inferenzierungs-Konfiguration der GPGPU 1530 Inferenzierungs-spezifische Anweisungen unterstützen. In mindestens einer Ausführungsform kann eine Inferenzkonfiguration zum Beispiel Unterstützung für eine oder mehrere 8-Bit-lnteger-Skalarprodukt-Anweisungen bereitstellen, die während der Inferenzierungsoperationen für eingesetzte neuronale Netze verwendet werden können.
  • Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 115 in der GPGPU 1530 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 hier vorliegenden Ausführungsformen ermöglichen die Wiederverwendung von Beleuchtungsabtastungen zwischen den Frames bei der Wichtigkeitsprüfung, selbst wenn die Gewichtungs- oder Abtastungszahlinformationen nicht mehr zuverlässig sind.
  • 16 ist ein Blockdiagramm, das ein Computersystem 1600 gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform weist das Rechensystem 1600 ein Verarbeitungssubsystem 1601 mit einem oder mehreren Prozessor(en) 1602 und einem Systemspeicher 1604 auf, die über einen Verbindungspfad kommunizieren, der einen Speicher-Hub 1605 aufweisen kann. In mindestens einer Ausführungsform kann der Speicher-Hub 1605 eine getrennte Komponente innerhalb einer Chipsatzkomponente sein oder kann in einen oder mehrere Prozessoren 1602 integriert sein. In mindestens einer Ausführungsform ist der Speicher-Hub 1605 über eine Kommunikationsverbindung 1606 mit einem E/A-Teilsystem 1611 gekoppelt. In mindestens einer Ausführungsform weist das E/A-Subsystem 1611 einen E/A-Hub 1607 auf, der es dem Rechensystem 1600 ermöglichen kann, Eingaben von einer oder mehreren Eingabeeinrichtung(en) 1608 zu empfangen. In mindestens einer Ausführungsform kann der E/A-Hub 1607 einer Anzeigesteuerung, die in einem oder mehreren Prozessoren 1602 beinhaltet sein kann, ermöglichen, einer oder mehreren Anzeigevorrichtungen 1610A Ausgaben bereitzustellen. In mindestens einer Ausführungsform können ein oder mehrere Anzeigevorrichtungen 1610A, die mit dem E/A-Hub 1607 gekoppelt sind, eine lokale, interne oder eingebettete Anzeigevorrichtung beinhalten.
  • In mindestens einer Ausführungsform beinhaltet das Verarbeitungssubsystem 1601 einen oder mehrere parallele(n) Prozessor(en) 1612, der/die über einen Bus oder eine andere Verknüpfung 1613 mit dem Speicher-Hub 1605 gekoppelt ist/sind. In mindestens einer Ausführungsform kann es sich bei der Kommunikationsverbindung 1613 um eine beliebige Anzahl von standardbasierten Kommunikationsverbindungstechnologien oder -protokollen handeln, wie z. B. PCI Express, ist aber nicht darauf beschränkt, oder um eine herstellerspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur. In mindestens einer Ausführungsform bilden einige oder alle der parallelen Prozessoren 1612 ein rechnerisch fokussiertes Parallel- oder Vektorverarbeitungssystem, das eine große Anzahl von Verarbeitungskernen und/oder Verarbeitungsclustern aufweisen kann, wie z. B. einen MIC-Prozessor (Many Integrated Core). In mindestens einer Ausführungsform bilden einige oder alle der Parallelprozessor(en) 1612 ein Grafikverarbeitungsteilsystem, das Pixel an eine oder mehrere Anzeigevorrichtung(en) 1610A ausgeben kann, die über den E/A-Hub 1607 gekoppelt sind. In mindestens einer Ausführungsform können die Parallelprozessor(en) 1612 zudem eine Anzeigesteuerung und eine Anzeigeschnittstelle (nicht gezeigt) beinhalten, um eine direkte Verbindung zu einer oder mehreren Anzeigevorrichtung(en) 1610B zu ermöglichen. In mindestens einer Ausführungsform beinhaltet der/die Parallelprozessor(en) 1612 einen oder mehrere Kerne, wie beispielsweise die hier besprochenen Grafikkerne 1500.
  • In mindestens einer Ausführungsform kann eine Systemspeichereinheit 1614 mit dem E/A-Hub 1607 verbunden sein, um einen Speichermechanismus für das Rechensystem 1600 bereitzustellen. In mindestens einer Ausführungsform kann ein E/A-Switch 1616 verwendet werden, um einen Schnittstellenmechanismus bereitzustellen, um Verbindungen zwischen dem E/A-Hub 1607 und anderen Komponenten zu ermöglichen, wie z. B. einem Netzwerkadapter 1618 und/oder einem drahtlosen Netzwerkadapter 1619, der in einer Plattform integriert sein kann, und verschiedenen anderen Einrichtungen, die über eine oder mehrere Zusatzeinrichtungen 1620 hinzugefügt werden können. In mindestens einer Ausführungsform kann der Netzwerkadapter 1618 ein Ethernet-Adapter oder ein anderer kabelgebundener Netzwerkadapter sein. In mindestens einer Ausführungsform kann der drahtlose Netzwerkadapter 1619 eine oder mehrere Wi-Fi-, Bluetooth-, Near Field Communication (NFC)- oder andere Netzwerkeinrichtungen aufweisen, die ein oder mehrere drahtlose Funkeinrichtungen enthalten.
  • In mindestens einer Ausführungsform kann das Rechensystem 1600 auch andere, nicht explizit dargestellte Komponenten aufweisen, wie z. B. USB- oder andere Anschlüsse, optische Speicherlaufwerke, Videoaufzeichnungsgeräte und dergleichen, die ebenfalls mit dem E/A-Hub 1607 verbunden sein können. In mindestens einer Ausführungsform können die Kommunikationspfade, die die verschiedenen Komponenten in 16 miteinander verbinden, unter Verwendung beliebiger geeigneter Protokolle implementiert sein, wie z. B. auf PCI (Peripheral Component Interconnect) basierende Protokolle (z. B. PCI-Express) oder andere Bus- oder Punktzu-Punkt-Kommunikationsschnittstellen und/oder Protokolle, wie z. B. NV-Link High-Speed-Interconnect oder Interconnect-Protokolle.
  • In mindestens einer Ausführungsform enthalten der/die Parallelprozessor(en) 1612 Schaltungen, die für die Grafik- und Videoverarbeitung optimiert sind, z. B. Schaltungen für die Videoausgabe, und stellen eine Grafikverarbeitungseinheit (GPU) dar, z. B. beinhaltet der/die Parallelprozessor(en) 1612 den Grafikkern 1500. In mindestens einer Ausführungsform enthalten ein oder mehrere Parallelprozessor(en) 1612 Schaltkreise, die für die allgemeine Verarbeitung optimiert sind. In mindestens einer Ausführungsform können Komponenten des Rechensystems 1600 mit einem oder mehreren anderen Systemelementen auf einem einzigen integrierten Schaltkreis integriert sein. Zum Beispiel können in mindestens einer Ausführungsform die Parallelprozessor(en) 1612, der Speicher-Hub 1605, die Prozessor(en) 1602 und der E/A-Hub 1607 in eine integrierte Schaltung als System auf einem Chip (SoC) integriert sein. In mindestens einer Ausführungsform können Komponenten des Computersystems 1600 in ein einzelnes Paket integriert werden, um eine System-in-Gehäuse-(system in package - SIP-)Konfiguration zu bilden. In mindestens einer Ausführungsform kann mindestens ein Abschnitt von Komponenten des Rechensystems 1600 in einem Multi-Chip-Modul (MCM) integriert sein, das mit anderen Multi-Chip-Modulen zu einem modularen Rechensystem zusammengeschaltet sein kann.
  • Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 115 in dem System FIG. 1600 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 hier vorliegenden Ausführungsformen ermöglichen die Wiederverwendung von Beleuchtungsabtastungen zwischen den Frames bei der Wichtigkeitsprüfung, selbst wenn die Gewichtungs- oder Abtastungszahlinformationen nicht mehr zuverlässig sind.
  • PROZESSOREN
  • 17A veranschaulicht einen Parallelprozessor 1700 gemäß mindestens einer Ausführungsform; In mindestens einer Ausführungsform können verschiedene Komponenten des Parallelprozessors 1700 unter Verwendung einer oder mehrerer integrierten Schaltungsvorrichtungen umgesetzt sein, wie etwa programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASICs) oder feldprogrammierbare Gatearrays (FPGA). In mindestens einer Ausführungsform ist der veranschaulichte Parallelprozessor 1700 eine Variante eines oder mehrerer Parallelprozessoren 1612, die in 16 gezeigt sind, gemäß einer beispielhaften Ausführungsform. In mindestens einer Ausführungsform beinhaltet ein Parallelprozessor 1700 einen oder mehrere Grafikkerne 1500.
  • In mindestens einer Ausführungsform beinhaltet der Parallelprozessor 1700 eine Parallelverarbeitungseinheit 1702. In mindestens einer Ausführungsform beinhaltet die Parallelverarbeitungseinheit 1702 eine E/A-Einheit 1704, welche die Kommunikation mit anderen Vorrichtungen ermöglicht, was andere Instanzen der Parallelverarbeitungseinheit 1702 beinhaltet. In mindestens einer Ausführungsform kann die E/A-Einheit 1704 direkt mit anderen Vorrichtungen verbunden sein. In mindestens einer Ausführungsform ist die E/A-Einheit 1704 über eine Hub- oder Switch-Schnittstelle mit anderen Einrichtungen verbunden, z. B. mit einem Speicher-Hub 1705. In mindestens einer Ausführungsform bilden die Verbindungen zwischen dem Speicher-Hub 1705 und der E/A-Einheit 1704 eine Kommunikationsverbindung 1713. In mindestens einer Ausführungsform ist die E/A-Einheit 1704 mit einer Hostschnittstelle 1706 und einer Speicher-Crossbar 1716 verbunden, wobei die Hostschnittstelle 1706 Befehle empfängt, die auf die Ausführung von Verarbeitungsoperationen gerichtet sind, und die Speicher-Crossbar 1716 Befehle empfängt, die auf die Ausführung von Speicheroperationen gerichtet sind.
  • In mindestens einer Ausführungsform kann, wenn die Host-Schnittstelle 1706 einen Befehlspuffer über die E/A-Einheit 1704 empfängt, die Host-Schnittstelle 1706 Arbeitsoperationen zum Durchführen dieser Befehle an ein Frontend 1708 richten. In mindestens einer Ausführungsform ist das Frontend 1708 mit einem Scheduler 1710 (der auch als Sequenzer bezeichnet werden kann) gekoppelt, der so ausgestaltet ist, dass er Befehle oder andere Arbeitselemente an einen Cluster eines Verarbeitungs-Cluster-Arrays 1712 verteilt. In mindestens einer Ausführungsform stellt der Scheduler 1710 sicher, dass das Verarbeitungs-Cluster-Array 1712 ordnungsgemäß ausgestaltet ist und sich in einem gültigen Zustand befindet, bevor Aufgaben an einen Cluster eines Verarbeitungs-Cluster-Arrays 1712 verteilt werden. In mindestens einer Ausführungsform ist der Scheduler 1710 über eine Firmware-Logik implementiert, die auf einem Mikrocontroller ausgeführt wird. In mindestens einer Ausführungsform ist der in einem Mikrocontroller implementierte Scheduler 1710 so ausgestaltet, dass er komplexe Scheduling- und Arbeitsverteilungsoperationen mit grober und feiner Granularität durchführt und so eine schnelle Präemption und eine Kontextumschaltung von Threads ermöglicht, die auf dem Verarbeitungs-Array 1712 ausgeführt werden. In mindestens einer Ausführungsform kann die Host-Software Arbeitslasten für die Planung auf der Verarbeitungsclusteranordnung 1712 über eine von mehreren Grafikverarbeitungspfaden nachweisen. In mindestens einer Ausführungsform können die Arbeitslasten dann automatisch durch die Logik des Schedulers 1710 innerhalb eines Mikrocontrollers, der einen Scheduler 1710 aufweist, auf den Verarbeitungs-Array-Cluster 1712 verteilt werden.
  • In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 1712 bis zu „N“ Verarbeitungscluster beinhalten (z. B. Cluster 1714A, Cluster 1714B bis Cluster 1714N), wobei „N“ eine positive ganze Zahl darstellt (die eine andere ganze Zahl „N“ sein kann, als in anderen Figuren verwendet). In mindestens einer Ausführungsform kann jeder Cluster 1714A-1714N des Verarbeitungsclusterarrays 1712 eine große Anzahl gleichzeitiger Threads ausführen. In mindestens einer Ausführungsform kann der Scheduler 1710 den Clustern 1714A-1714N des Verarbeitungscluster-Arrays 1712 Arbeit zuweisen, indem er verschiedene Scheduling- 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 das Scheduling dynamisch durch den Scheduler 1710 gehandhabt werden oder teilweise durch die Compilerlogik während der Kompilierung der Programmlogik unterstützt werden, die für die Ausführung durch das Verarbeitungscluster-Array 1712 ausgestaltet ist. In mindestens einer Ausführungsform können unterschiedliche Cluster 1714A-1714N des Verarbeitungsclusterarrays 1712 zum Verarbeiten unterschiedlicher Arten von Programmen oder zum Durchführen unterschiedlicher Arten von Berechnungen zugewiesen werden.
  • In mindestens einer Ausführungsform kann die Verarbeitungsclusteranordnung 1712 so ausgestaltet sein, dass sie verschiedene Arten von Parallelverarbeitungsoperationen durchführt. In mindestens einer Ausführungsform ist das Verarbeitungsclusterarray 1712 dazu konfiguriert, universelle Parallelrechenoperationen durchzuführen. Zum Beispiel kann das Verarbeitungsclusterarray 1712 in mindestens einer Ausführungsform Logik zum Ausführen von Verarbeitungsaufgaben beinhalten, was das Filtern von Video- und/oder Audiodaten, das Durchführen von Modellierungsoperationen, was Physikoperationen beinhaltet, und das Durchführen von Datentransformationen beinhaltet.
  • In mindestens einer Ausführungsform ist die Verarbeitungsclusteranordnung 1712 so ausgestaltet, dass sie parallele Grafikverarbeitungsoperationen durchführt. In mindestens einer Ausführungsform kann die Verarbeitungsclusteranordnung 1712 eine zusätzliche Logik aufweisen, um die Ausführung solcher Grafikverarbeitungsoperationen zu unterstützen, einschließlich, aber nicht beschränkt auf Texturabtastlogik, um Texturoperationen durchzuführen, sowie Tesselationslogik und andere Vertexverarbeitungslogik. In mindestens einer Ausführungsform kann die Verarbeitungsclusteranordnung 1712 so ausgestaltet sein, dass sie grafikverarbeitungsbezogene Shader-Programme ausführt, wie z. B. Vertex-Shader, Tesselation-Shader, Geometrie-Shader und Pixel-Shader. In mindestens einer Ausführungsform kann die Parallelverarbeitungseinheit 1702 Daten vom Systemspeicher zur Verarbeitung über die E/A-Einheit 1704 übertragen. In mindestens einer Ausführungsform können übertragene Daten während der Verarbeitung in einem On-Chip-Speicher (z. B. in einem Parallelprozessorspeicher 1722) gespeichert und dann in einen Systemspeicher zurückgeschrieben werden.
  • In mindestens einer Ausführungsform, wenn die Parallelverarbeitungseinheit 1702 zum Ausführen der Grafikverarbeitung verwendet wird, kann der Scheduler 1710 so konfigurierbar sein, dass er ein Verarbeitungspensum in ungefähr gleich große Aufgaben aufteilt, um eine bessere Verteilung der Grafikverarbeitungsoperationen auf mehrere Cluster 1714A-1714N des Verarbeitungsclusterarrays 1712 zu ermöglichen. In mindestens einer Ausführungsform können Teile des Verarbeitungsclusterarrays 1712 dazu konfiguriert sein, unterschiedliche Verarbeitungsarten durchzufü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 von einem oder mehreren der Cluster 1714A-1714N erzeugt werden, in Puffern gespeichert werden, um zu ermöglichen, dass Zwischendaten zwischen den Clustern 1714A-1714N zur weiteren Verarbeitung übermittelt werden.
  • In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 1712 über den Scheduler 1710, der Befehle zur Definition von Verarbeitungsaufgaben vom Frontend 1708 erhält, auszuführende Verarbeitungsaufgaben empfangen. In mindestens einer Ausführungsform können die Verarbeitungs-Tasks Indizes der zu verarbeitenden Daten beinhalten, z. B. Oberflächen-(Patch-)Daten, Primitivdaten, 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 Scheduler 1710 so ausgestaltet sein, dass er den Tasks entsprechende Indizes abruft oder Indizes vom Frontend 1708 empfängt. In mindestens einer Ausführungsform kann das Front-End 1708 dazu konfiguriert sein, sicherzustellen, dass das Verarbeitungsclusterarray 1712 in einen gültigen Zustand konfiguriert ist, bevor eine durch eingehende Befehlspuffer (z. B. Stapelpuffer, Push-Puffer usw.) spezifizierte Arbeitslast initiiert wird.
  • In mindestens einer Ausführungsform kann jede von einer oder mehreren Instanzen der Parallelverarbeitungseinheit 1702 mit einem Parallelprozessorspeicher 1722 gekoppelt sein. In mindestens einer Ausführungsform kann auf den Parallelprozessorspeicher 1722 über die Speicher-Crossbar 1716 zugegriffen werden, die Speicheranforderungen von dem Verarbeitungsclusterarray 1712 sowie der E/A-Einheit 1704 empfangen kann. In mindestens einer Ausführungsform kann die Speicher-Crossbar 1716 über eine Speicherschnittstelle 1718 auf den Parallelprozessorspeicher 1722 zugreifen. In mindestens einer Ausführungsform kann die Speicherschnittstelle 1718 mehrere Partitionseinheiten (z. B. Partitionseinheit 1720A, Partitionseinheit 1720B bis Partitionseinheit 1720N) beinhalten, die jeweils an einen Teil (z. B. Speichereinheit) des Parallelprozessorspeichers 1722 koppeln können. In mindestens einer Ausführungsform ist eine Anzahl von Partitionseinheiten 1720A-1720N so ausgestaltet, dass sie gleich einer Anzahl von Speichereinheiten ist, so dass eine erste Partitionseinheit 1720A eine entsprechende erste Speichereinheit 1724A aufweist, eine zweite Partitionseinheit 1720B eine entsprechende Speichereinheit 1724B aufweist und eine N-te Partitionseinheit 1720N eine entsprechende N-te Speichereinheit 1724N aufweist. In mindestens einer Ausführungsform kann eine Anzahl der Partitionseinheiten 1720A-1720N nicht gleich einer Anzahl der Speichereinheiten sein.
  • In mindestens einer Ausführungsform können die Speichereinheiten 1724A-1724N verschiedene Arten von Speichereinrichtungen aufweisen, einschließlich dynamischer Direktzugriffsspeicher (DRAM) oder Grafik-Direktzugriffsspeicher, wie synchroner Grafik-Direktzugriffsspeicher (SGRAM), einschließlich Grafik-Doppeldatenraten-Speicher (GDDR). In mindestens einer Ausführungsform können die Speichereinheiten 1724A-1724N auch einen übereinander angeordneten 3D-Speicher aufweisen, einschließlich, aber nicht beschränkt auf einen Speicher mit hoher Bandbreite (High Bandwidth Memory (HBM)), HBM2e oder HDM3. In mindestens einer Ausführungsform können Renderziele, wie etwa Bildspeicher oder Texturkarten, über die Speichereinheiten 1724A-1724N gespeichert werden, was es den Partitionseinheiten 1720A-1720N ermöglicht, Teile jedes Renderziels parallel zu schreiben, um die verfügbare Bandbreite des Parallelprozessorspeichers 1722 effizient zu nutzen. In mindestens einer Ausführungsform kann eine lokale Instanz des Parallelprozessorspeichers 1722 zugunsten eines einheitlichen Speicherdesigns ausgeschlossen werden, das Systemspeicher in Verbindung mit lokalem schnellem Pufferspeicher nutzt.
  • In mindestens einer Ausführungsform kann ein beliebiger der Cluster 1714A-1714N des Verarbeitungsclusterarrays 1712 Daten verarbeiten, die in beliebige der Speichereinheiten 1724A-1724N innerhalb des Parallelprozessorspeichers 1722 geschrieben werden. In mindestens einer Ausführungsform kann die Speicher-Crossbar 1716 dazu konfiguriert sein, eine Ausgabe jedes Clusters 1714A-1714N an eine beliebige Partitionseinheit 1720A-1720N oder an einen anderen Cluster 1714A-1714N zu übertragen, die zusätzliche Verarbeitungsoperationen an einer Ausgabe durchführen können. In mindestens einer Ausführungsform kann jeder Cluster 1714A-1714N mit der Speicherschnittstelle 1718 über die Speicher-Crossbar 1716 kommunizieren, um von verschiedenen externen Speichervorrichtungen zu lesen oder in sie zu schreiben. In mindestens einer Ausführungsform weist die Speicher-Crossbar 1716 eine Verbindung zur Speicherschnittstelle 1718 auf, um mit der E/A-Einheit 1704 zu kommunizieren, sowie eine Verbindung zu einer lokalen Instanz des Parallelprozessorspeichers 1722, wodurch Verarbeitungseinheiten innerhalb unterschiedlicher Verarbeitungscluster 1714A-1714N ermöglicht werden, um mit dem Systemspeicher oder einem anderen Speicher zu kommunizieren, der nicht lokal für die Parallelverarbeitungseinheit 1702 ist. In mindestens einer Ausführungsform kann die Speicher-Crossbar 1716 virtuelle Kanäle verwenden, um Verkehrsströme zwischen den Clustern 1714A-1714N und den Partitionseinheiten 1720A-1720N zu trennen.
  • In mindestens einer Ausführungsform können mehrere Instanzen der Parallelverarbeitungseinheit 1702 auf einer einzigen Add-in-Karte bereitgestellt sein, oder mehrere Add-in-Karten können miteinander verbunden sein. In mindestens einer Ausführungsform können verschiedene Instanzen der Parallelverarbeitungseinheit 1702 so ausgestaltet sein, dass sie auch dann zusammenarbeiten, wenn die verschiedenen Instanzen eine unterschiedliche Anzahl von Verarbeitungskernen, unterschiedliche Mengen an lokalem Parallelprozessorspeicher und/oder andere Konfigurationsunterschiede aufweisen. Zum Beispiel können in mindestens einer Ausführungsform einige Instanzen der Parallelverarbeitungseinheit 1702 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 1702 oder des parallelen Prozessors 1700 einschließen, in einer Reihe von Konfigurationen und Formfaktoren umgesetzt sein, was Desktop-, Laptop- oder Handheld-Personalcomputer, Server, Workstations, Spielekonsolen und/oder eingebettete Systeme beinhaltet, ohne darauf beschränkt zu sein.
  • 17B ist ein Blockdiagramm einer Partitionseinheit 1720 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist die Partitionseinheit 1720 eine Instanz einer der Partitionseinheiten 1720A-1720N aus 17A. In mindestens einer Ausführungsform weist die Partitionseinheit 1720 einen L2-Cache 1721, eine Bildpufferschnittstelle 1725 und eine ROP (Rasteroperationseinheit) 1726 auf. Der L2-Cache 1721 ist in mindestens einer Ausführungsform ein Lese-/Schreib-Cache, der so ausgestaltet ist, dass er von dem Speicherkoppelfeld 1716 und der ROP 1726 empfangene Lade- und Speicheroperationen durchführt. In mindestens einer Ausführungsform werden Lesefehler und dringende Rückschreibanforderungen vom L2-Cache 1721 zur Verarbeitung an die Bildpufferschnittstelle 1725 ausgegeben. In mindestens einer Ausführungsform können Aktualisierungen auch über die Bildspeicherschnittstelle 1725 zur Verarbeitung an einen Bildspeicher gesendet werden. In mindestens einer Ausführungsform ist die Bildspeicherschnittstelle 1725 mit einer der Speichereinheiten im Parallelprozessorspeicher, wie etwa den Speichereinheiten 1724A-1724N von aus 17 (z. B. innerhalb des Parallelprozessorspeichers 1722) verbunden.
  • In mindestens einer Ausführungsform ist die ROP 1726 eine Verarbeitungseinheit, die Rasteroperationen durchführt, wie etwa Schablone, Z-Test, Blending usw. In mindestens einer Ausführungsform gibt die ROP 1726 dann verarbeitete Grafikdaten aus, die in Grafikspeicher gespeichert werden. In mindestens einer Ausführungsform beinhaltet die ROP 1726 Komprimierungslogik zum Komprimieren von Tiefen- oder Farbdaten, die in den Speicher geschrieben werden, und zum Dekomprimieren von Tiefen- oder Farbdaten, die aus dem Speicher gelesen werden. In mindestens einer Ausführungsform kann die Komprimierungslogik eine verlustfreie Komprimierungslogik sein, die einen oder mehrere von mehreren Komprimierungsalgorithmen verwendet. In mindestens einer Ausführungsform kann die Art der von der ROP 1726 durchgeführten Komprimierung auf der Grundlage statistischer Merkmale 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 1726 innerhalb jedes Verarbeitungsclusters (z. B. Cluster 1714A-1714N aus 17A) statt innerhalb der Partitionseinheit 1720 enthalten. In mindestens einer Ausführungsform werden Lese- und Schreibanforderungen für Pixeldaten anstelle von Pixelfragmentdaten über die Speicher-Crossbar 1716 übermittelt. In mindestens einer Ausführungsform können verarbeitete Grafikdaten auf einer Anzeigeeinrichtung, wie z. B. einer oder mehreren Anzeigeeinrichtung(en) 1610 von 16, angezeigt werden, oder zur weiteren Verarbeitung durch Prozessor(en) 1602 oder zur weiteren Verarbeitung durch eine der Verarbeitungseinheiten innerhalb des Parallelprozessors 1700 von 17A weitergeleitet werden.
  • 17C ist ein Blockdiagramm eines Verarbeitungsclusters 1714 innerhalb einer Parallelverarbeitungseinheit gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist ein Verarbeitungscluster eine Instanz von einem der Verarbeitungscluster 1714A-1714N aus 17A. In mindestens einer Ausführungsform kann der Verarbeitungscluster 1714 so ausgestaltet sein, dass er viele Threads parallel ausführt, wobei sich der Begriff „Thread“ auf eine Instanz eines bestimmten Programms bezieht, das auf einem bestimmten Satz von Eingabedaten ausgeführt wird. In mindestens einer Ausführungsform werden Single-Instruction-Multiple-Data-(SIMD-)Befehlsausgabetechniken (Single-Instruction, Multiple-Data) 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 der Betrieb des Verarbeitungsclusters 1714 über einen Pipelineverwalter 1732 gesteuert werden, der die Verarbeitungs-Tasks auf die SIMT-Parallelprozessoren verteilt. In mindestens einer Ausführungsform empfängt der Pipeline-Manager 1732 Anweisungen vom Scheduler 1710 aus 17A und verwaltet die Ausführung dieser Anweisungen über einen Grafik-Multiprozessor 1734 und/oder eine Textureinheit 1736. In mindestens einer Ausführungsform ist der Grafik-Multiprozessor 1734 eine beispielhafte Instanz eines SIMT-Parallelprozessors. In mindestens einer Ausführungsform können jedoch verschiedene Arten von SIMT-Parallelprozessoren unterschiedlicher Architekturen innerhalb des Verarbeitungsclusters 1714 beinhaltet sein. In mindestens einer Ausführungsform kann ein oder können mehrere Instanzen des Grafik-Multiprozessors 1734 in einem Verarbeitungscluster 1714 vorhanden sein. In mindestens einer Ausführungsform kann der Grafik-Multiprozessor 1734 Daten verarbeiten und eine Datenkreuzschiene 1740 kann verwendet werden, um verarbeitete Daten an eines von mehreren möglichen Zielen, einschließlich anderer Shader-Einheiten, zu verteilen. In mindestens einer Ausführungsform kann der Pipeline-Manager 1732 die Verteilung der verarbeiteten Daten erleichtern, indem er Ziele für die zu verteilenden verarbeiteten Daten über das Daten-Koppelfeld 1740 angibt.
  • In mindestens einer Ausführungsform kann jeder Grafik-Multiprozessor 1734 innerhalb des Verarbeitungsclusters 1714 einen identischen Satz von funktioneller Ausführungslogik (z. B. arithmetisch-logische Einheiten, Lade-Speicher-Einheiten usw.) beinhalten. In mindestens einer Ausführungsform kann eine funktionelle Ausführungslogik in einer Pipeline-Weise konfiguriert sein, in der neue Anweisungen ausgegeben werden können, bevor vorherige Anweisungen abgeschlossen sind. In mindestens einer Ausführungsform unterstützt die funktionale Ausführungslogik eine Vielzahl von Operationen, darunter Ganzzahl- und Gleitkommaarithmetik, Vergleichsoperationen, boolesche Operationen, Bitverschiebung und die Berechnung verschiedener algebraischer Funktionen. In mindestens einer Ausführungsform kann dieselbe Hardware der funktionellen Einheit genutzt werden, um unterschiedliche Operationen durchzuführen, und es kann eine beliebige Kombination von funktionellen Einheiten vorhanden sein.
  • In mindestens einer Ausführungsform bilden die an den Verarbeitungscluster 1714 übertragenen Anweisungen einen Thread. In mindestens einer Ausführungsform ist ein Satz von Threads, die über einen Satz von Parallelverarbeitungsengines ausgeführt werden, eine Thread-Gruppe. In mindestens einer Ausführungsform führt eine Thread-Gruppe ein gemeinsames Programm an unterschiedlichen Eingabedaten aus. In mindestens einer Ausführungsform kann jeder Thread innerhalb einer Thread-Gruppe einer anderen Verarbeitungs-Engine innerhalb eines Grafik-Multiprozessors 1734 zugewiesen werden. In mindestens einer Ausführungsform kann eine Thread-Gruppe weniger Threads aufweisen als eine Anzahl von Verarbeitungseinheiten innerhalb des Grafik-Multiprozessors 1734. 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 aufweisen als die Anzahl der Verarbeitungs-Engines im Grafik-Multiprozessor 1734. In mindestens einer Ausführungsform kann, wenn eine Thread-Gruppe mehr Threads aufweist als die Anzahl der Verarbeitungsmaschinen im Grafik-Multiprozessor 1734, die Verarbeitung über aufeinander folgende Taktzyklen erfolgen. In mindestens einer Ausführungsform können mehrere Thread-Gruppen gleichzeitig auf einem Grafik-Multiprozessor 1734 ausgeführt werden.
  • In mindestens einer Ausführungsform weist der Grafik-Multiprozessor 1734 einen internen Cache-Speicher auf, um Lade- und Speicheroperationen durchzuführen. In mindestens einer Ausführungsform kann der Grafik-Multiprozessor 1734 auf einen internen Cache verzichten und einen Cache-Speicher (z. B. L1-Cache 1748) innerhalb des Verarbeitungsclusters 1714 verwenden. In mindestens einer Ausführungsform hat jeder Grafik-Multiprozessor 1734 auch Zugriff auf L2-Caches innerhalb von Partitionseinheiten (z. B. Partitionseinheiten 1720A-1720N von 17A), die von allen Verarbeitungsclustern 1714 gemeinsam genutzt werden und zur Datenübertragung zwischen Threads verwendet werden können. In mindestens einer Ausführungsform kann der Grafikmultiprozessor 1734 auch auf den globalen Speicher außerhalb des Chips zugreifen, der einen oder mehrere lokale Parallelprozessorspeicher und/oder Systemspeicher beinhalten kann. In mindestens einer Ausführungsform kann jeder beliebige Speicher außerhalb der Parallelverarbeitungseinheit 1702 als globaler Speicher verwendet werden. In mindestens einer Ausführungsform weist der Verarbeitungscluster 1714 mehrere Instanzen des Grafik-Multiprozessors 1734 auf und können sich gemeinsame Anweisungen und Daten teilen, die im L1-Cache 1748 gespeichert sein können.
  • In mindestens einer Ausführungsform kann jeder Verarbeitungscluster 1714 eine MMU 1745 (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 1745 innerhalb der Speicherschnittstelle 1718 aus 17A befinden. In mindestens einer Ausführungsform beinhaltet die MMU 1745 einen Satz von Seitentabelleneinträgen (page table entries - PTEs), die verwendet werden, um eine virtuelle Adresse einer physischen Adresse einer Kachel und optional einem Zwischenspeicherzeilenindex zuzuordnen. In mindestens einer Ausführungsform kann die MMU 1745 Adressübersetzungs-Lookaside-Puffer (TLB) oder Caches aufweisen, die sich im Grafik-Multiprozessor 1734 oder im L1-Cache 1748 oder im Verarbeitungscluster 1714 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 Verarbeitungscluster 1714 so ausgestaltet sein, dass jeder Grafik-Multiprozessor 1734 mit einer Textureinheit 1736 gekoppelt ist, um Texturabbildungsoperationen durchzuführen, z. B. Bestimmen von Texturabtastpositionen, Lesen von Texturdaten und Filtern von Texturdaten. In mindestens einer Ausführungsform werden die Texturdaten aus einem internen Textur-L1-Cache (nicht gezeigt) oder aus einem L1-Cache innerhalb des Grafik-Multiprozessors 1734 gelesen und je nach Bedarf aus einem L2-Cache, einem lokalen Parallelprozessorspeicher oder dem Systemspeicher geholt. In mindestens einer Ausführungsform gibt jeder Grafikmultiprozessor 1734 verarbeitete Tasks an das Daten-Koppelfeld 1740 aus, um die verarbeitete(n) Task(s) einem anderen Verarbeitungscluster 1714 zur weiteren Verarbeitung zur Verfügung zu stellen oder um die verarbeitete Task über das Speicher-Koppelfeld 1716 in einem L2-Cache, einem lokalen Parallelprozessorspeicher oder einem Systemspeicher zu speichern. In mindestens einer Ausführungsform ist eine preROP 1742 (Pre-Raster Operations Unit) so ausgestaltet, dass sie Daten vom Grafik-Multiprozessor 1734 empfängt und Daten an ROP-Einheiten weiterleitet, die mit Partitionseinheiten angeordnet sein können, wie es hier beschrieben ist (z. B. Partitionseinheiten 1720A-1720N von 17A). In mindestens einer Ausführungsform kann die preROP-Einheit 1742 Optimierungen für die Farbmischung durchführen, Pixelfarbdaten organisieren und Adressübersetzungen vornehmen.
  • Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 115 in dem Grafikverarbeitungscluster 1714 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 hier vorliegenden Ausführungsformen ermöglichen die Wiederverwendung von Beleuchtungsabtastungen zwischen den Frames bei der Wichtigkeitsprüfung, selbst wenn die Gewichtungs- oder Abtastungszahlinformationen nicht mehr zuverlässig sind.
  • 17D zeigt einen Grafik-Multiprozessor 1734 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der Grafik-Multiprozessor 1734 mit dem Pipeline-Manager 1732 des Verarbeitungsclusters 1714 gekoppelt. In mindestens einer Ausführungsform weist der Grafikmultiprozessor 1734 eine Ausführungspipeline auf, die unter anderem einen Befehlscache 1752, eine Befehlseinheit 1754, eine Adressabbildungseinheit 1756, eine Registerdatei 1758, einen oder mehrere GPGPU-Kerne (General Purpose Graphics Processing Unit) 1762 und eine oder mehrere Lade-/Speichereinheiten 1766 aufweist, wobei eine oder mehrere Lade-/Speichereinheiten 1766 Lade-/Speicheroperationen durchführen können, um Anweisungen zu laden/speichern, die dem Durchführen einer Operation entsprechen. In mindestens einer Ausführungsform sind die GPGPU-Kerne 1762 und die Lade-/Speichereinheiten 1766 über eine Speicher- und Cache-Verbindung 1768 an den Cachespeicher 1772 und den gemeinsam genutzten Speicher 1770 gekoppelt.
  • In mindestens einer Ausführungsform empfängt der Anweisungs-Cache 1752 einen Strom aus auszuführenden Anweisungen von dem Pipelineverwalter 1732. In mindestens einer Ausführungsform werden die Befehle im Befehlscache 1752 zwischengespeichert und von einer Befehlseinheit 1754 zur Ausführung weitergeleitet. In mindestens einer Ausführungsform kann die Befehlseinheit 1754 Befehle als Thread-Gruppen (z. B. Warps, Wellenfronten, Wellen) versenden, wobei jeder Thread der Thread-Gruppe einer anderen Ausführungseinheit innerhalb der GPGPU-Kerne 1762 zugewiesen ist. In mindestens einer Ausführungsform kann eine Anweisung auf einen lokalen, gemeinsam genutzten oder globalen Adressraum zugreifen, indem sie eine Adresse innerhalb eines einheitlichen Adressraums angibt. In mindestens einer Ausführungsform kann die Adressabbildungseinheit 1756 verwendet werden, um Adressen in einem vereinheitlichten Adressraum in eine eindeutige Speicheradresse zu übersetzen, auf die die Lade-/Speichereinheiten 1766 zugreifen können.
  • In mindestens einer Ausführungsform stellt die Registerdatei 1758 einen Satz von Registern für Funktionseinheiten des Grafik-Multiprozessors 1734 bereit. In mindestens einer Ausführungsform stellt die Registerdatei 1758 einen temporären Speicher für Operanden bereit, die mit Datenpfaden von Funktionseinheiten (z. B. GPGPU-Kerne 1762, Lade-/Speichereinheiten 1766) des Grafik-Multiprozessors 1734 verbunden sind. In mindestens einer Ausführungsform wird die Registerdatei 1758 derartig zwischen jeder der funktionellen Einheiten aufgeteilt, dass jeder funktionellen Einheit ein dedizierter Teil der Registerdatei 1758 zugewiesen wird. In mindestens einer Ausführungsform ist die Registerdatei 1758 auf verschiedene Warps (die auch als Wellenfronten und/oder Wellen bezeichnet werden können) aufgeteilt, die vom Grafik-Multiprozessor 1734 ausgeführt werden.
  • In mindestens einer Ausführungsform können die GPGPU-Kerne 1762 jeweils Gleitkommaeinheiten (FPUs) und/oder Ganzzahlarithmetiklogikeinheiten (ALUs) beinhalten, die verwendet werden, um Anweisungen des Grafikmultiprozessors 1734 auszuführen. Die GPGPU-Kerne 1762 können sich in mindestens einer Ausführungsform in ihrer Architektur ähneln oder unterscheiden. In mindestens einer Ausführungsform weist ein erster Abschnitt der GPGPU-Kerne 1762 eine FPU mit einfacher Genauigkeit und eine Ganzzahl-ALU auf, während ein zweiter Abschnitt der GPGPU-Kerne eine FPU mit doppelter Genauigkeit aufweist. 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 1734 zusätzlich eine oder mehrere Festfunktions- oder Sonderfunktionseinheiten aufweisen, um bestimmte Funktionen wie z. B. ein Kopieren von Rechtecken oder Pixel-Blending-Operationen durchzuführen. In mindestens einer Ausführungsform kann einer oder können mehrere der GPGPU-Kerne 1762 auch eine feste oder spezielle Funktionslogik aufweisen.
  • In mindestens einer Ausführungsform weisen die GPGPU-Kerne 1762 eine SIMD-Logik auf, die in der Lage ist, einen einzigen Befehl für mehrere Datensätze auszuführen. In mindestens einer Ausführungsform können GPGPU-Kerne 1762 physikalisch SIMD4-, SIMD8- und SIMD16-Befehle und logisch SIMD1-, SIMD2- und SIMD32-Befehle ausführen. In mindestens einer Ausführungsform können SIMD-Anweisungen für GPGPU-Kerne zur Kompilierzeit von einem Shader-Compiler oder automatisch bei der Ausführung von Programmen erzeugt werden, die für SPMD- oder SIMT-Architekturen (Single Program Multiple Data) 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 ausführen, über eine einzige SIMD8-Logikeinheit parallel ausgeführt werden.
  • In mindestens einer Ausführungsform ist die Speicher- und Cache-Zusammenschaltung 1768 ein Zusammenschaltungsnetz, das jede funktionelle Einheit des Grafikmultiprozessors 1734 mit der Registerbank 1758 und dem gemeinsam genutzten Speicher 1770 verbindet. In mindestens einer Ausführungsform ist die Speicher- und Cache-Verbindung 1768 eine Koppelfeld-Verbindung, die es der Lade-/Speichereinheit 1766 ermöglicht, Lade- und Speicheroperationen zwischen dem gemeinsamen Speicher 1770 und der Registerdatei 1758 zu implementieren. In mindestens einer Ausführungsform kann die Registerdatei 1758 mit der gleichen Frequenz wie die GPGPU-Kerne 1762 arbeiten, so dass die Datenübertragung zwischen den GPGPU-Kernen 1762 und der Registerdatei 1758 eine sehr geringe Latenzzeit aufweisen kann. In mindestens einer Ausführungsform kann der gemeinsame Speicher 1770 verwendet werden, um die Kommunikation zwischen Threads zu ermöglichen, die auf Funktionseinheiten innerhalb des Grafik-Multiprozessors 1734 ausgeführt werden. In mindestens einer Ausführungsform kann der Cache-Speicher 1772 z. B. als Daten-Cache verwendet werden, um Texturdaten, die zwischen Funktionseinheiten und der Textureinheit 1736 übertragen werden, zwischenzuspeichern. In mindestens einer Ausführungsform kann der gemeinsame Speicher 1770 auch als ein von einem Programm verwalteter Cache verwendet werden. In mindestens einer Ausführungsform können Threads, die auf GPGPU-Kernen 1762 ausgeführt werden, zusätzlich zu automatisch zwischengespeicherten Daten, die im schnellen Pufferspeicher 1772 gespeichert sind, programmgesteuert Daten innerhalb des gemeinsam genutzten Speichers speichern.
  • In mindestens einer Ausführungsform ist ein Parallelprozessor oder eine GPGPU, wie hierin beschrieben, kommunikativ mit Host-/Prozessorkernen gekoppelt, um Grafikoperationen, Operationen des maschinellen Lernens, Musteranalyseoperationen und verschiedene Funktionen einer Allzweck-GPU (GPGPU) zu beschleunigen. In mindestens einer Ausführungsform kann die GPU über einen Bus oder eine andere Verbindung (z. B. eine Hochgeschwindigkeitsverbindung wie PCIe oder NVLink) mit dem Host-Prozessor (den Prozessorkernen) kommunikativ verbunden sein. In mindestens einer Ausführungsform kann 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 der Art des Anschlusses der GPU der GPU Arbeit in Form von Befehlsfolgen/Befehlen zuweisen, die in einem Arbeitsdeskriptor enthalten sind. In mindestens einer Ausführungsform verwendet diese GPU dann dedizierte Schaltung/Logik zum effizienten Verarbeiten dieser Befehle/Anweisungen.
  • Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 115 in dem Grafikmultiprozessor 1734 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 hier vorliegenden Ausführungsformen ermöglichen die Wiederverwendung von Beleuchtungsabtastungen zwischen den Frames bei der Wichtigkeitsprüfung, selbst wenn die Gewichtungs- oder Abtastungszahlinformationen nicht mehr zuverlässig sind.
  • 18 veranschaulicht ein Multi-GPU-Computersystem 1800 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das Multi-GPU-Rechnersystem 1800 einen Prozessor 1802 aufweisen, der über einen Host-Schnittstellen-Switch 1804 mit mehreren Universal-Grafikverarbeitungseinheiten (GPGPUs) 1806A-D verbunden ist. In mindestens einer Ausführungsform ist der Hostschnittstellen-Switch 1804 eine PCI-Express-Switch-Vorrichtung, die den Prozessor 1802 mit einem PCI-Express-Bus koppelt, über den der Prozessor 1802 mit den GPGPUs 1806A-D kommunizieren kann. In mindestens einer Ausführungsform können die GPGPUs 1806A-D über einen Satz von Hochgeschwindigkeits-Punkt-zu-Punkt-GPU-zu-GPU-Verknüpfungen 1816 zusammengeschaltet sein. In mindestens einer Ausführungsform sind die GPU-zu-GPU-Verbindungen 1816 mit jeder der GPGPUs 1806A-D über eine dedizierte GPU-Verbindung verbunden. In mindestens einer Ausführungsform ermöglichen P2P-GPU-Links 1816 eine direkte Kommunikation zwischen jeder der GPGPUs 1806A-D, ohne dass eine Kommunikation über den Hostschnittstellenbus 1804 erforderlich ist, mit dem der Prozessor 1802 verbunden ist. In mindestens einer Ausführungsform, bei der der GPU-zu-GPU-Verkehr zu den P2P-GPU-Verbindungen 1816 geleitet wird, bleibt der Host-Schnittstellenbus 1804 für den Systemspeicherzugriff oder für die Kommunikation mit anderen Instanzen des Multi-GPU-Rechensystems 1800 verfügbar, beispielsweise über eine oder mehrere Netzwerkeinrichtungen. Während in mindestens einer Ausführungsform die GPGPUs 1806A-D über den Hostschnittstellen-Switch 1804 mit dem Prozessor 1802 verbunden sind, beinhaltet der Prozessor 1802 in mindestens einer Ausführungsform eine direkte Unterstützung für P2P-GPU-Links 1816 und kann sich direkt mit den GPGPUs 1806A-D verbinden.
  • Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 115 in dem Mehr-GPU-Rechensystem 1800 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. In mindestens einer Ausführungsform beinhaltet das Multi-GPU-Rechensystem 1800 einen oder mehrere Grafikkerne 1500.
  • Die hier vorliegenden Ausführungsformen ermöglichen die Wiederverwendung von Beleuchtungsabtastungen zwischen den Frames bei der Wichtigkeitsprüfung, selbst wenn die Gewichtungs- oder Abtastungszahlinformationen nicht mehr zuverlässig sind.
  • 19 ist ein Blockdiagramm eines Grafikprozessors 1900 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform weist der Grafikprozessor 1900 eine Ringverbindung 1902, ein Pipeline-Frontend 1904, eine Media-Engine 1937 und Grafikkerne 1980A-1980N auf. In mindestens einer Ausführungsform verbindet die Ringverbindung 1902 den Grafikprozessor 1900 mit anderen Verarbeitungseinheiten, einschließlich anderer Grafikprozessoren oder eines oder mehrerer Mehrzweckprozessorkerne. In mindestens einer Ausführungsform ist der Grafikprozessor 1900 einer von vielen Prozessoren, die in ein Mehrkernverarbeitungssystem integriert sind. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 1900 den Grafikkern 1500.
  • In mindestens einer Ausführungsform empfängt der Grafikprozessor 1900 Batches von Befehlen über die Ringzusammenschaltung 1902. In mindestens einer Ausführungsform werden eingehende Befehle von einem Befehlsstreamer 1903 im Pipeline-Front-End 1904 interpretiert. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 1900 eine skalierbare Ausführungslogik, um eine 3D-Geometrieverarbeitung und eine Medienverarbeitung über einen oder mehrere Grafikkerne 1980A-1980N durchzuführen. In mindestens einer Ausführungsform liefert der Befehlsstreamer 1903 für 3D-Geometrieverarbeitungsbefehle Befehle an die Geometriepipeline 1936. In mindestens einer Ausführungsform liefert der Befehlsstreamer 1903 für mindestens einige Medienverarbeitungsbefehle Befehle an ein Video-Frontend 1934, das mit Medien-Engine 1937 gekoppelt ist. In mindestens einer Ausführungsform beinhaltet die Medien-Engine 1937 eine Videoqualitäts-Engine (Video Quality Engine - VQE) 1930 für die Video- und Bildnachverarbeitung und eine Engine zum Codieren/Decodieren in mehreren Formaten (multi-format encode/decode - MFX) 1933 zum Bereitstellen von hardwarebeschleunigter Codierung und Decodierung von Mediendaten. In mindestens einer Ausführungsform erzeugen die Geometrie-Pipeline 1936 und die Medien-Engine 1937 jeweils Ausführungs-Threads für Thread-Ausführungsressourcen, die von mindestens einem Grafikkern 1980 bereitgestellt werden.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 1900 skalierbare Thread-Ausführungsressourcen mit den Grafikkernen 1980A-1980N (die modular sein können und mitunter als Kernslicen bezeichnet werden), die jeweils mehrere Teilkerne 1950A-50N, 1960A-1960N (mitunter als Kernteilslices bezeichnet) aufweisen. In mindestens einer Ausführungsform kann der Grafikprozessor 1900 eine beliebige Anzahl von Grafikkernen 1980A aufweisen. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 1900 einen Grafikkern 1980A, der mindestens einen ersten Teilkern 1950A und einen zweiten Teilkern 1960A aufweist. In mindestens einer Ausführungsform ist der Grafikprozessor 1900 ein Niedrigenergieprozessor mit einem einzelnen Teilkern (z. B. 1950A). In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 1900 mehrere Grafikkerne 1980A-1980N, von denen jeder einen Satz von ersten Teilkernen 1950A-1950N und einen Satz von zweiten Teilkernen 1960A-1960N beinhaltet. In mindestens einer Ausführungsform beinhaltet jeder Teilkern in den ersten Teilkernen 1950A-1950N mindestens einen ersten Satz von Ausführungseinheiten 1952A-1952N und Medien-/Textur-Abtaster 1954A-1954N. In mindestens einer Ausführungsform beinhaltet jeder Teilkern in den zweiten Teilkernen 1960A-1960N mindestens einen zweiten Satz von Ausführungseinheiten 1962A-1962N und Abtastern 1964A-1964N. In mindestens einer Ausführungsform teilt sich jeder Teilkern 1950A-1950N, 1960A-1960N einen Satz gemeinsam genutzter Ressourcen 1970A-1970N. In mindestens einer Ausführungsform beinhalten die gemeinsam genutzten Ressourcen einen gemeinsamen Cache-Speicher und eine Pixel-Operationslogik. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 1900 Lade-/Speichereinheiten im Pipeline-Frontend 1904.
  • Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 115 in dem Grafikprozessor 1900 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 hier vorliegenden Ausführungsformen ermöglichen die Wiederverwendung von Beleuchtungsabtastungen zwischen den Frames bei der Wichtigkeitsprüfung, selbst wenn die Gewichtungs- oder Abtastungszahlinformationen nicht mehr zuverlässig sind.
  • 20 ist ein Blockdiagramm eines Verarbeitungssystems gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet das System 2000 einen oder mehrere Prozessoren 2002 und einen oder mehrere Grafikprozessoren 2008 und kann ein Einzelprozessor-Desktopsystem, ein Multiprozessor-Arbeitsstationssystem oder ein Server-System mit einer großen Anzahl von Prozessoren 2002 oder Prozessorkernen 2007 sein. In mindestens einer Ausführungsform ist das System 2000 eine Verarbeitungsplattform, die in eine integrierte System-on-a-Chip (SoC)-Schaltung zur Verwendung in mobilen, tragbaren oder eingebetteten Einrichtungen integriert ist. In mindestens einer Ausführungsform beinhalten ein oder mehrere Grafikprozessoren 2008 einen oder mehrere Grafikkerne 1500.
  • In mindestens einer Ausführungsform kann das System 2000 eine serverbasierte Spielplattform, eine Spielkonsole, einschließlich einer Spiel- und Medienkonsole, eine mobile Spielkonsole, eine Handheld-Spielkonsole oder eine Online-Spielkonsole aufweisen oder darin integriert sein. In mindestens einer Ausführungsform ist das System 2000 ein Mobiltelefon, ein Smartphone, eine Recheneinrichtung für Tablets oder eine mobile Interneteinrichtung. In mindestens einer Ausführungsform kann das Verarbeitungssystem 2000 auch eine tragbare Einrichtung aufweisen, mit dieser gekoppelt oder in diese integriert sein, wie z. B. eine tragbare Einrichtung für eine intelligente Uhr, eine intelligente Brille, eine Augmented-Reality-Einrichtung oder eine Virtual-Reality-Einrichtung. In mindestens einer Ausführungsform ist das Verarbeitungssystem 2000 eine Fernseh- oder Set-Top-Box-Vorrichtung mit einem oder mehreren Prozessoren 2002 und einer grafischen Schnittstelle, die durch einen oder mehrere Grafikprozessoren 2008 erzeugt wird.
  • In mindestens einer Ausführungsform beinhalten ein oder mehrere Prozessoren 2002 jeweils einen oder mehrere Prozessorkerne 2007 zum Verarbeiten von Anweisungen, die bei ihrer Ausführung Operationen für System- und Benutzer-Software durchführen. In mindestens einer Ausführungsform ist jeder von einem oder mehreren Prozessorkernen 2007 so konfiguriert, dass er eine spezifische Anweisungssequenz 2009 verarbeitet. In mindestens einer Ausführungsform kann die Befehlsfolge 2009 das Complex Instruction Set Computing (CISC), das Reduced Instruction Set Computing (RISC) oder das Rechnen über ein Very Long Instruction Word (VLIW) ermöglichen. In mindestens einer Ausführungsform können die Prozessorkerne 2007 jeweils eine andere Anweisungssequenz 2009 verarbeiten, die Anweisungen beinhalten kann, um die Emulation anderer Anweisungssequenzen zu erleichtern. In mindestens einer Ausführungsform kann der Prozessorkern 2007 auch andere verarbeitende Einrichtungen aufweisen, wie etwa einen digitalen Signalprozessor (DSP).
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 2002 einen Cache-Speicher 2004. In mindestens einer Ausführungsform kann der Prozessor 2002 einen einzelnen internen Cache oder mehrere Levels von internem Cache aufweisen. In mindestens einer Ausführungsform wird der Cache-Speicher von verschiedenen Komponenten des Prozessors 2002 gemeinsam genutzt. In mindestens einer Ausführungsform verwendet der Prozessor 2002 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 2007 gemeinsam genutzt werden kann. In mindestens einer Ausführungsform ist zusätzlich eine Registerdatei 2006 im Prozessor 2002 vorhanden, die verschiedene Arten von Registern zur Speicherung unterschiedlicher Datentypen aufweisen kann (z. B. Ganzzahlregister, Gleitkommaregister, Statusregister und ein Befehlszeigerregister). In mindestens einer Ausführungsform kann die Registerdatei 2006 Allzweckregister oder andere Register beinhalten.
  • In mindestens einer Ausführungsform sind ein oder mehrere Prozessoren 2002 mit einem oder mehreren Schnittstellenbussen 2010 gekoppelt, um Kommunikationssignale, wie etwa Adress-, Daten- oder Steuersignale, zwischen dem Prozessor 2002 und anderen Komponenten im System 2000 zu übermitteln. In mindestens einer Ausführungsform kann der Schnittstellenbus 2010 ein Prozessorbus sein, beispielsweise eine Version eines Direct Media Interface (DMI)-Busses. In mindestens einer Ausführungsform ist der Schnittstellenbus 2010 nicht auf einen DMI-Bus beschränkt und kann einen oder mehrere Peripheral Component Interconnect-Busse (z. B. PCI, PCI Express), Speicherbusse oder andere Arten von Schnittstellenbussen aufweisen. In mindestens einer Ausführungsform beinhalten der/die Prozessor(en) 2002 einen integrierten Speichercontroller 2016 und einen Plattform-Controller-Hub 2030. In mindestens einer Ausführungsform ermöglicht der Speichercontroller 2016 die Kommunikation zwischen einer Speichervorrichtung und anderen Komponenten des Systems 2000, während der Plattform-Controller-Hub (platform controller hub - PCH) 2030 Verbindungen zu E/A-Vorrichtungen über einen lokalen E/A-Bus bereitstellt.
  • In mindestens einer Ausführungsform kann die Speichereinrichtung 2020 eine dynamische Direktzugriffsspeichereinrichtung (DRAM), eine statische Direktzugriffsspeichereinrichtung (SRAM), eine Flash-Speichereinrichtung, eine Phasenwechsel-Speichereinrichtung oder eine andere Speichereinrichtung mit geeigneter Leistung sein, um als Prozessspeicher zu dienen. In mindestens einer Ausführungsform kann die Speichervorrichtung 2020 als Systemspeicher für das System 2000 arbeiten, um Daten 2022 und Anweisungen 2021 zur Verwendung zu speichern, wenn ein oder mehrere Prozessoren 2002 eine Anwendung oder einen Prozess ausführen. In mindestens einer Ausführungsform ist der Speichercontroller 2016 auch mit einem optionalen externen Grafikprozessor 2012 gekoppelt, der mit einem oder mehreren Grafikprozessoren 2008 von den Prozessoren 2002 kommunizieren kann, um Grafik- und Medienoperationen durchzuführen. In mindestens einer Ausführungsform kann eine Anzeigevorrichtung 2011 mit dem/den Prozessor(en) 2002 verbunden sein. In mindestens einer Ausführungsform kann die Anzeigeeinrichtung 2011 eine oder mehrere interne Anzeigeeinrichtungen, wie z. B. in einer mobilen elektronischen Einrichtung oder einem Laptop, oder eine externe Anzeigeeinrichtung, die über eine Anzeigeschnittstelle (z. B. DisplayPort usw.) angeschlossen ist, aufweisen. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 2011 eine kopfmontierte Anzeige (head mounted display - HMD) beinhalten, wie eine stereoskopische Anzeigevorrichtung zur Verwendung in Virtual-Reality-Anwendungen (VR) oder Augmented-Reality-Anwendungen (AR).
  • In mindestens einer Ausführungsform ermöglicht der Plattform-Controller-Hub 2030 den Anschluss von Peripheriegeräten an die Speichervorrichtung 2020 und den Prozessor 2002 über einen Hochgeschwindigkeits-E/A-Bus. In mindestens einer Ausführungsform beinhalten die E/A-Peripheriegeräte, ohne auf diese beschränkt zu sein, einen Audiocontroller 2046, einen Netzwerkcontroller 2034, eine Firmware-Schnittstelle 2028, einen drahtlosen Sendeempfänger 2026, Berührungssensoren 2025 und eine Datenspeichervorrichtung 2024 (z. B. ein Festplattenlaufwerk, einen Flash-Speicher usw.). In mindestens einer Ausführungsform kann die Datenspeichereinrichtung 2024 über eine Speicherschnittstelle (z. B. SATA) oder über einen Peripheriebus, wie einen Peripheral Component Interconnect Bus (z. B. PCI, PCI Express), angeschlossen sein. In mindestens einer Ausführungsform können die Berührungssensoren 2025 Touchscreen-Sensoren, Drucksensoren oder Fingerabdrucksensoren beinhalten. In mindestens einer Ausführungsform kann der drahtlose Transceiver 2026 ein Wi-Fi-Transceiver, ein Bluetooth-Transceiver oder ein Mobilfunk-Transceiver wie ein 3G-, 4G- oder Long Term Evolution (LTE)-Transceiver sein. In mindestens einer Ausführungsform ermöglicht die Firmware-Schnittstelle 2028 die Kommunikation mit der System-Firmware und kann z. B. eine einheitliche erweiterbare Firmware-Schnittstelle (UEFI) sein. In mindestens einer Ausführungsform kann die Netzwerksteuerung 2034 eine Netzwerkverbindung mit einem kabelgebundenen Netzwerk ermöglichen. In mindestens einer Ausführungsform ist eine Hochleistungs-Netzwerksteuerung (nicht dargestellt) mit dem Schnittstellenbus 2010 gekoppelt. In mindestens einer Ausführungsform ist der Audiocontroller 2046 ein Multikanal-High-Definition-Audiocontroller. In mindestens einer Ausführungsform beinhaltet das System 2000 eine optionale ältere E/A-Steuerung 2040 zum Koppeln von älteren Vorrichtungen (z. B. Personal System 2 (PS/2)) an das System 2000. In mindestens einer Ausführungsform kann der Plattform-Controller-Hub 2030 auch mit einem oder mehreren Universal-Serial-Bus(USB)-Controllern 2042 verbunden sein, die mit Eingabevorrichtungen, wie zum Beispiel Kombinationen aus Tastatur und Maus 2043, einer Kamera 2044 oder anderen USB-Eingabevorrichtungen, verbunden sind.
  • In mindestens einer Ausführungsform kann eine Instanz des Speichercontrollers 2016 und des Plattform-Controller-Hubs 2030 in einen diskreten externen Grafikprozessor, wie etwa den externen Grafikprozessor 2012, integriert sein. In mindestens einer Ausführungsform können der Plattform-Controller-Hub 2030 und/oder der Speichercontroller 2016 extern zu einem oder mehreren Prozessor(en) 2002 sein. Zum Beispiel kann das System 2000 in mindestens einer Ausführungsform einen externen Speichercontroller 2016 und einen Plattform-Controller-Hub 2030 beinhalten, die als Speicher-Controller-Hub und Peripherie-Controller-Hub innerhalb eines System-Chipsatzes konfiguriert sein können, die mit dem/den Prozessor(en) 2002 in Kommunikation stehen.
  • Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. In mindestens einer Ausführungsform können Teile oder die Gesamtheit der Inferenz- und/oder Trainingslogik 115 in den Grafikprozessor 2008 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. 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 2008 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • Die hier vorliegenden Ausführungsformen ermöglichen die Wiederverwendung von Beleuchtungsabtastungen zwischen den Frames bei der Wichtigkeitsprüfung, selbst wenn die Gewichtungs- oder Abtastungszahlinformationen nicht mehr zuverlässig sind.
  • 21 ist ein Blockdiagramm eines Prozessors 2100, der einen oder mehrere Prozessorkerne 2102A-2102N, einen integrierten Speichercontroller 2114 und einen integrierten Grafikprozessor 2108 aufweist, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozessor 2100 zusätzliche Kerne bis einschließlich des zusätzlichen Kerns 2102N beinhalten, dargestellt durch Kästen mit gestrichelten Linien. In mindestens einer Ausführungsform beinhaltet jeder der Prozessorkerne 2102A-2102N eine oder mehrere interne Cache-Einheiten 2104A-2104N. In mindestens einer Ausführungsform hat jeder Prozessorkern auch Zugriff auf eine oder mehrere gemeinsam genutzte Cache-Einheiten 2106. In mindestens einer Ausführungsform beinhalten ein oder mehrere Grafikprozessoren 2108 einen oder mehrere Grafikkerne 1500.
  • In mindestens einer Ausführungsform stellen die internen Cache-Einheiten 2104A-2104N und die gemeinsam genutzten Cache-Einheiten 2106 eine Cache-Speicher-Hierarchie innerhalb des Prozessors 2100 dar. In mindestens einer Ausführungsform können die Cache-Speicher-Einheiten 2104A-2104N mindestens ein Level von Befehls- und Daten-Cache innerhalb jedes Prozessorkerns und ein oder mehrere Levels von gemeinsam genutztem Cache mittleren Levels, wie z. B. ein Level 2 (L2), Level 3 (L3), Level 4 (L4) oder anderes Cache-Level, beinhalten, wobei ein höchstes Cache-Level vor dem externen Speicher als LLC klassifiziert ist. In mindestens einer Ausführungsform hält die Cache-Kohärenzlogik die Kohärenz zwischen verschiedenen Cache-Einheiten 2106 und 2104A-2104N aufrecht.
  • In mindestens einer Ausführungsform kann der Prozessor 2100 auch einen Satz von einer oder mehreren Bus-Controller-Einheiten 2116 und einem Systemagentenkern 2110 beinhalten. In mindestens einer Ausführungsform verwalten eine oder mehrere Bussteuerungseinheiten 2116 einen Satz von Peripheriebussen, wie einen oder mehrere PCI- oder PCI-Express-Busse. In mindestens einer Ausführungsform bietet der Systemagenten-Kern 2110 Verwaltungsfunktionen für verschiedene Prozessorkomponenten. In mindestens einer Ausführungsform beinhaltet der Systemagentenkern 2110 einen oder mehrere integrierte Speichercontroller 2114, um den Zugriff auf verschiedene externe Speichervorrichtungen (nicht gezeigt) zu managen.
  • In mindestens einer Ausführungsform beinhalten einer oder mehrere der Prozessorkerne 2102A-2102N Unterstützung für simultanes Multithreading. In mindestens einer Ausführungsform beinhaltet der Systemagentenkern 2110 Komponenten zur Koordinierung und zum Betrieb der Kerne 2102A-2102N während der Verarbeitung mit mehreren Threads. In mindestens einer Ausführungsform kann der Systemagentenkern 2110 zusätzlich eine Leistungssteuereinheit (power control unit - PCU) beinhalten, die Logik und Komponenten zur Regulierung eines oder mehrerer Leistungsstatus der Prozessorkerne 2102A-2102N und des Grafikprozessors 2108 beinhaltet.
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 2100 zusätzlich den Grafikprozessor 2108, um Grafikverarbeitungsoperationen auszuführen. In mindestens einer Ausführungsform ist der Grafikprozessor 2108 mit gemeinsam genutzten Cache-Einheiten 2106 und dem Systemagentenkern 2110, einschließlich eines oder mehrerer integrierter Speichercontrollern 2114, gekoppelt. In mindestens einer Ausführungsform beinhaltet der Systemagentenkern 2110 auch einen Anzeigecontroller 2111 zum Steuern der Grafikprozessorausgabe zu einer oder mehreren gekoppelten Anzeigen. In mindestens einer Ausführungsform kann der Anzeigecontroller 2111 auch ein separates Modul sein, das über mindestens eine Zusammenschaltung mit dem Grafikprozessor 2108 gekoppelt ist, oder er kann in den Grafikprozessor 2108 integriert sein.
  • In mindestens einer Ausführungsform wird eine ringbasierte Zusammenschaltungseinheit 2112 zum Koppeln interner Komponenten des Prozessors 2100 verwendet. In mindestens einer Ausführungsform kann eine alternative Verbindungseinheit verwendet werden, beispielsweise eine Punkt-zu-Punkt-Verbindung, eine geschaltete Verbindung oder eine andere Technik. In mindestens einer Ausführungsform ist der Grafikprozessor 2108 über eine E/A-Verbindung 2113 mit der Ringzusammenschaltung 2112 gekoppelt.
  • In mindestens einer Ausführungsform stellt die E/A-Verknüpfung 2113 mindestens eine von mehreren Arten von E/A-Zusammenschaltungen dar, was eine E/A-Zusammenschaltung auf dem Gehäuse beinhaltet, welche die Kommunikation zwischen verschiedenen Prozessorkomponenten und einem eingebetteten Hochleistungsspeichermodul 2118, wie etwa einem eDRAM-Modul, erleichtert. In mindestens einer Ausführungsform verwenden jeder der Prozessorkerne 2102A-2102N und der Grafikprozessor 2108 ein eingebettetes Speichermodul 2118 als gemeinsam genutzten Last-Level-Cache.
  • In mindestens einer Ausführungsform sind die Prozessorkerne 2102A-2102N homogene Kerne, die eine gemeinsame Anweisungssatzarchitektur ausführen. In mindestens einer Ausführungsform sind die Prozessorkerne 2102A-2102N in Bezug auf die Befehlssatzarchitektur (instruction set architecture - ISA) heterogen, wobei einer oder mehrere der Prozessorkerne 2102A-2102N einen gemeinsamen Befehlssatz ausführt, während ein oder mehrere andere Kerne der Prozessorkerne 2102A-2102N einen Teilsatz eines gemeinsamen Befehlssatzes oder einen anderen Befehlssatz ausführen. In mindestens einer Ausführungsform sind die Prozessorkerne 2102A-2102N in Bezug auf die Mikroarchitektur heterogen, wobei ein oder mehrere Kerne mit einem relativ gesehen höheren Leistungsverbrauch mit einem oder mehreren Kernen mit einem niedrigeren Leistungsverbrauch gekoppelt sind. In mindestens einer Ausführungsform kann der Prozessor 2100 auf einem oder mehreren Chips oder als integrierte SoC-Schaltung implementiert sein.
  • Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. In mindestens einer Ausführungsform können Teile oder die Gesamtheit der Inferenz- und/oder Trainingslogik 115 in den Grafikprozessor 2108 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, Grafikkern(e) 2102, gemeinsam genutzte Logik oder andere Logik in 21 verwenden. 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 2100 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • Die hier vorliegenden Ausführungsformen ermöglichen die Wiederverwendung von Beleuchtungsabtastungen zwischen den Frames bei der Wichtigkeitsprüfung, selbst wenn die Gewichtungs- oder Abtastungszahlinformationen nicht mehr zuverlässig sind.
  • 22 illustriert einen allgemeinen Verarbeitungscluster („GPC“) 2200 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der GPC 2200 der GPC 2118 aus 21. In mindestens einer Ausführungsform weist jeder GPC 2200, ohne Einschränkung, eine Anzahl von Hardwareeinheiten zur Verarbeitung von Tasks auf, und jeder GPC 2200 weist, ohne Einschränkung, einen Pipeline-Manager 2202, eine Pre-Raster-Operationseinheit („preROP“) 2204, eine Raster-Engine 2208, ein Arbeitsverteilungs-Koppelfeld („WDX“) 2216, eine Speicherverwaltungseinheit („MMU“) 2218, einen oder mehrere Datenverarbeitungscluster („DPCs“) 2206 und jede geeignete Kombination dieser Einrichtungen auf.
  • In mindestens einer Ausführungsform wird der Betrieb des GPC 2200 durch den Pipeline-Manager2202 gesteuert. In mindestens einer Ausführungsform verwaltet der Pipeline-Manager 2202 die Konfiguration eines oder mehrerer DPCs 2206 zur Verarbeitung von Tasks, die dem GPC 2200 zugewiesen sind. In mindestens einer Ausführungsform konfiguriert der Pipeline-Manager 2202 mindestens einen von einem oder mehreren DPCs 2206, um mindestens einen Abschnitt einer Grafik-Rendering-Pipeline zu implementieren. In mindestens einer Ausführungsform ist der DPC 2206 so ausgestaltet, dass er ein Vertex-Shader-Programm auf einem programmierbaren Streaming-Multiprozessor („SM“) 2214 ausführt. In mindestens einer Ausführungsform ist der Pipeline-Manager 2202 so ausgestaltet, dass er die von einer Arbeitsverteilungseinheit empfangenen Pakete an geeignete logische Einheiten innerhalb des GPC 2200 weiterleitet, wobei einige Pakete an Hardwareeinheiten mit fester Funktion im preROP 2204 und/oder an die Raster-Engine 2208 weitergeleitet werden können, während andere Pakete an die DPCs 2206 zur Verarbeitung durch eine Primitiv-Engine 2212 oder SM 2214 weitergeleitet werden können. In mindestens einer Ausführungsform konfiguriert der Pipeline-Manager 2202 mindestens einen der DPCs 2206 zur Implementierung eines Modells eines neuronalen Netzes und/oder einer Rechenpipeline.
  • In mindestens einer Ausführungsform ist die preROP-Einheit 2204 so ausgestaltet, dass sie die von der Rastermaschine 2208 und den DPCs 2206 generierten Daten an eine Raster Operations („ROP“)-Einheit in der Partitionseinheit 2122 weiterleitet, die oben in Verbindung mit 21 ausführlicher beschrieben ist. In mindestens einer Ausführungsform ist die preROP-Einheit 2204 so ausgestaltet, dass sie Optimierungen für die Farbmischung durchführt, Pixeldaten organisiert, Adressübersetzungen vornimmt und vieles mehr. In mindestens einer Ausführungsform beinhaltet die Rasterengine 2208 ohne Einschränkung eine Anzahl von Hardwareeinheiten mit fester Funktion, die dazu konfiguriert sind, verschiedene Operationen auszuführen, und die Rasterengine 2208 beinhaltet ohne Einschränkung eine Setup-Engine, eine Grobraster-Engine, eine Culling-Engine, eine Clipping-Engine, eine Feinraster-Engine, eine Tile-Coalescing-Engine und jede 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 die Ausgabe der Raster-Maschine 2208 Fragmente, die von einer beliebigen geeigneten Einheit, wie z. B. einem in DPC 2206 implementierten Fragment-Shader, verarbeitet werden.
  • In mindestens einer Ausführungsform umfasst jeder DPC 2206, der in der GPC 2200 enthalten ist, ohne Einschränkung eine M-Pipe-Steuerung („MPC“) 2210, eine Primitiv-Maschine 2212, einen oder mehrere SMs 2214 und eine beliebige geeignete Kombination davon auf. In mindestens einer Ausführungsform steuert die MPC 2210 den Betrieb von dem DPC 2206 und leitet die vom Pipeline-Manager 2202 empfangenen Pakete an die entsprechenden Einheiten im DPC 2206 weiter. In mindestens einer Ausführungsform werden Pakete, die einem Vertex zugeordnet sind, an die Primitiv-Maschine 2212 weitergeleitet, die so ausgestaltet ist, dass sie Vertex-Attribute, die dem Vertex zugeordnet sind, aus dem Speicher abruft; im Gegensatz dazu können Pakete, die einem Shader-Programm zugeordnet sind, an den SM 2214 übertragen werden.
  • In mindestens einer Ausführungsform umfasst SM 2214 ohne Einschränkung einen programmierbaren Streaming-Prozessor, der dazu konfiguriert ist, Aufgaben zu verarbeiten, die durch eine Anzahl von Threads repräsentiert werden. In mindestens einer Ausführungsform ist der SM 2214 multi-threaded und so ausgestaltet, dass er eine Vielzahl von Threads (z. B. 32 Threads) aus einer bestimmten Gruppe von Threads gleichzeitig ausführt und eine Single-Instruction, Multiple-Data („SIMD“)-Architektur implementiert, bei der jeder Thread in einer Gruppe von Threads (z. B. ein Warp) so ausgestaltet ist, dass er einen anderen Datensatz auf der Grundlage desselben Satzes von Anweisungen verarbeitet. In mindestens einer Ausführungsform führen alle Threads in einer Gruppe von Threads einen gemeinsamen Satz von Anweisungen aus. In mindestens einer Ausführungsform implementiert der SM 2214 eine Single-Instruction, Multiple Thread („SIMT“)-Architektur, bei der jeder Thread in einer Gruppe von Threads so ausgestaltet ist, dass er einen anderen Datensatz auf der Grundlage dieses gemeinsamen Satzes von Befehlen verarbeitet, wobei jedoch die einzelnen Threads in der Gruppe von Threads während der Ausführung divergieren dürfen. In mindestens einer Ausführungsform werden ein Programmzähler, ein Aufrufstack und ein Ausführungsstatus für jeden Warp (der auch als Wellenfronten und/oder Wellen bezeichnet werden können) gehalten, wodurch die Gleichzeitigkeit zwischen Warps und die serielle Ausführung innerhalb von Warps ermöglicht wird, wenn Threads innerhalb eines Warps divergieren. In einer anderen Ausführungsform werden ein Programmzähler, ein Aufrufstapel und ein Ausfü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 2214 wird hier ausführlicher beschrieben.
  • In mindestens einer Ausführungsform stellt die MMU 2218 eine Schnittstelle zwischen dem GPC 2200 und der Speicherpartitionseinheit (z. B. der Partitionseinheit 2122 in 21) bereit, und die MMU 2218 sorgt für die Übersetzung virtueller Adressen in physikalische Adressen, den Speicherschutz und die Konkurrenzbereinigung von Speicheranforderungen. In mindestens einer Ausführungsform stellt MMU 2218 einen oder mehrere Übersetzungs-Lookaside-Buffer (translation lookaside buffers - „TLBs“) bereit, um die Übersetzung von virtuellen Adressen in physische Adressen im Speicher auszuführen.
  • Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell zum maschinellen Lernen, wie z. B. ein neuronales Netz, zu trainieren, um die dem GPC 2200 bereitgestellten Informationen vorherzusagen oder abzuleiten. In mindestens einer Ausführungsform wird der GPC 2200 verwendet, um Informationen auf der Grundlage eines trainierten Modelles zum maschinellen Lernen (z. B. eines neuronalen Netzes) abzuleiten oder vorherzusagen, das von einem anderen Prozessor oder System oder von dem GPC 2200 trainiert wurde. In mindestens einer Ausführungsform kann der GPC 2200 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netze durchzuführen.
  • Die hier vorliegenden Ausführungsformen ermöglichen die Wiederverwendung von Beleuchtungsabtastungen zwischen den Frames bei der Wichtigkeitsprüfung, selbst wenn die Gewichtungs- oder Abtastungszahlinformationen nicht mehr zuverlässig sind.
  • 23 veranschaulicht einen Streaming-Multiprozessor („SM“) 2300 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der SM 2300 der SM aus 22. In mindestens einer Ausführungsform beinhaltet der SM 2300 ohne Einschränkung einen Anweisungs-Cache 2302, eine oder mehrere Planer-Einheiten 2304 (die auch als Sequenzer-Einheiten bezeichnet werden können), eine Registerdatei 2308, einen oder mehrere Verarbeitungskerne („Kerne“) 2310, eine oder mehrere Spezialfunktionseinheiten (special function units - „SFUs“) 2312, eine oder mehrere Lade-/Speichereinheiten (load/store units - „LSUs“) 2314, ein Zusammenschaltungsnetz 2316, einen gemeinsam genutzten Speicher/Level-Eins-(„L1“-)Cache 2318 und/oder eine beliebige geeignete Kombination davon. In mindestens einer Ausführungsform führen die LSUs 2314 Ladevorgänge von Speichern durch, die dem Laden/Speichern von Daten (z. B. Anweisungen) entsprechen, um eine Operation auszuführen (z. B. eine API, einen API-Aufruf auszuführen).
  • In mindestens einer Ausführungsform teilt eine Arbeitsverteilungseinheit Tasks zur Ausführung auf Universalverarbeitungsclustern („GPCs“) von Parallelverarbeitungseinheiten („PPUs“) zu und jeder Task wird einem konkreten Datenverarbeitungscluster („DPC“) innerhalb eines GPC zugewiesen, und falls ein Task mit einem Shader-Programm assoziiert ist, wird dieser Task einem der SMs 2300 (die als CUs und/oder Slices bezeichnet werden können) zugewiesen. In mindestens einer Ausführungsform empfängt die Planer-Einheit 2304 (die auch als Sequenzer und/oder asynchrone Rechen-Engine bezeichnet werden kann) Tasks von einer Arbeitsverteilungseinheit und sie verwaltet die Anweisungsplanung für einen oder mehrere Thread-Blöcke, die dem SM 2300 zugeordnet sind. In mindestens einer Ausführungsform plant die Scheduler-Einheit 2304 Thread-Blöcke für die Ausführung als Warps (die auch als Wellenfronten und/oder Wellen bezeichnet werden können) von parallelen Threads, wobei jedem Thread-Block mindestens ein Warp zugewiesen wird. In mindestens einer Ausführungsform führt jeder Warp Threads aus. In mindestens einer Ausführungsform verwaltet die Planer-Einheit 2304 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 2310, SFUs 2312 und LSUs 2314) zuteilt.
  • In mindestens einer Ausführungsform können sich kooperative Gruppen (die auch als Wellenfronten und/oder Wellen bezeichnet werden können) auf ein Programmiermodell zur Organisation von Gruppen kommunizierender Threads beziehen, das es den Entwicklern ermöglicht, die Granularität auszudrücken, mit der die Threads kommunizieren, und so reichhaltigere, effizientere parallele Dekompositionen zu ermöglichen. In mindestens einer Ausführungsform unterstützen kooperative Start-APIs die Synchronisierung zwischen Thread-Blöcken zur Ausführung paralleler Algorithmen. In mindestens einer Ausführungsform bieten Anwendungen herkömmlicher Programmiermodelle ein einziges, einfaches Konstrukt für die Synchronisierung kooperierender Threads: eine Barriere über alle Threads eines Thread-Blocks (z. B. die Funktion syncthreads()). In mindestens einer Ausführungsform können Programmierer jedoch Gruppen von Threads mit einer kleineren Granularität als Thread-Blöcke definieren und innerhalb der definierten Gruppen synchronisieren, um eine höhere Leistung, mehr Flexibilität beim Entwurf und eine Wiederverwendung der Software in Form von gruppenweiten Funktionsschnittstellen zu ermöglichen. In mindestens einer Ausführungsform ermöglichen es kooperative Gruppen Programmierern, Gruppen von Threads explizit bei Teilblock- (d. h. so klein wie ein einzelner Thread) und Multiblock-Granularitäten zu definieren und kollektive Operationen, wie etwa die Synchronisierung von Threads, in einer kooperativen Gruppe durchzuführen. In mindestens einer Ausführungsform unterstützt das Programmiermodell eine saubere Komposition über Softwaregrenzen hinweg, so dass Bibliotheken und Dienstprogramme innerhalb ihres lokalen Kontexts sicher synchronisieren können, ohne dass Annahmen über Konvergenz getroffen werden müssen. In mindestens einer Ausführungsform ermöglichen die Primitive der kooperativen Gruppen neue Muster kooperativer Parallelität, die ohne Einschränkung Produzent-Verbraucher-Parallelität, opportunistische Parallelität und globale Synchronisierung über ein gesamtes Gitter von Thread-Blöcken beinhalten.
  • In mindestens einer Ausführungsform ist eine Zuteilungseinheit 2306 so konfiguriert, dass sie Anweisungen an eine oder mehrere funktionelle Einheiten überträgt, und die Planer-Einheit 2304 beinhaltet ohne Einschränkung zwei Zuteilungseinheiten 2306, 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 2304 eine einzelne Zuteilungseinheit 2306 oder zusätzliche Zuteilungseinheiten 2306.
  • In mindestens einer Ausführungsform beinhaltet jeder SM 2300 (der als CU und/oder Slices bezeichnet werden kann) in mindestens einer Ausführungsform ohne Einschränkung die Registerdatei 2308, die einen Satz von Registern für funktionelle Einheiten des SM 2300 bereitstellt. In mindestens einer Ausführungsform ist die Registerdatei 2308 auf jede funktionelle Einheit aufgeteilt, sodass jeder funktionellen Einheit ein dedizierter Abschnitt der Registerdatei 2308 zugewiesen ist. In mindestens einer Ausführungsform ist die Registerdatei 2308 auf unterschiedliche Warps aufgeteilt, die durch den SM 2300 ausgeführt werden, und die Registerdatei 2308 stellt temporären Datenspeicher für Operanden bereit, die mit Datenpfaden von funktionellen Einheiten verbunden sind. In mindestens einer Ausführungsform umfasst jeder SM 2300 ohne Einschränkung eine Vielzahl von L Verarbeitungskernen 2310, wobei L eine positive ganze Zahl ist. In mindestens einer Ausführungsform beinhaltet der SM 2300 ohne Einschränkung eine große Anzahl (z. B. 128 oder mehr) von unterschiedlichen Verarbeitungskernen 2310. In mindestens einer Ausführungsform weist jeder Verarbeitungskern 2310 ohne Einschränkung eine Vollpipeline-, Einzelpräzisions-, Doppelpräzisions- und/oder gemischte Präzisionsverarbeitungseinheit auf, die ohne Einschränkung eine arithmetische Gleitkomma-Logikeinheit und eine arithmetische Ganzzahl-Logikeinheit umfasst. In mindestens einer Ausführungsform implementieren die Gleitkomma-Arithmetik-Logikeinheiten den IEEE 754-2008-Standard für Gleitkomma-Arithmetik. In mindestens einer Ausführungsform weisen die Verarbeitungskerne 2310 ohne Einschränkung 64 Gleitkomma-Kerne mit einfacher Genauigkeit (32 Bit), 64 Ganzzahl-Kerne, 32 Gleitkomma-Kerne mit doppelter Genauigkeit (64 Bit) und 8 Tensor-Kerne auf.
  • Tensorkerne sind gemäß mindestens einer Ausführungsform für die Durchführung von Matrixoperationen ausgestaltet. In mindestens einer Ausführungsform sind ein oder mehrere Tensorkerne in den Verarbeitungskernen 2310 vorhanden. In mindestens einer Ausführungsform sind Tensorkerne dazu konfiguriert, Deep-Learning-Matrixarithmetik auszuführen, wie z. B. Faltungsoperationen für das Training und Inferenzieren neuronaler Netzwerke. In mindestens einer Ausführungsform arbeitet jeder Tensorkern mit einer 4x4-Matrix und führt eine Matrixmultiplikations- und Akkumulationsoperation D = A X B + C durch, wobei A, B, C und D 4x4-Matrizen sind.
  • In mindestens einer Ausführungsform sind die Matrixmultiplikationseingaben A und B 16-Bit-Fließkommamatrizen und sind die Akkumulationsmatrizen C und D 16-Bit-Fließkomma- oder 32-Bit-Fließkommamatrizen. In mindestens einer Ausführungsform arbeiten die Tensorkerne an 16-Bit-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 auf CUDA-Ebene geht die Schnittstelle auf Warp-Ebene von Matrizen der Größe 16x16 aus, die sich über alle 32 Threads des Warp (der als Wellenfront und/oder Welle bezeichnet werden kann) erstrecken.
  • In mindestens einer Ausführungsform umfasst jeder SM 2300 ohne Einschränkung M SFUs 2312, die Spezialfunktionen durchführen (z. B. Attributbewertung, reziproke Quadratwurzel und dergleichen). In mindestens einer Ausführungsform beinhalten die SFUs 2312 ohne Einschränkung eine Baumtraversaleinheit, die dazu konfiguriert ist, eine hierarchische Baumdatenstruktur zu durchlaufen. In mindestens einer Ausführungsform beinhalten die SFUs 2312 ohne Einschränkung eine Textureinheit, die dazu konfiguriert ist, Operationen zur Filterung von Texturkarten auszuführen. In mindestens einer Ausführungsform sind die Textureinheiten so ausgestaltet, dass sie Texturkarten (z. B. eine 2D-Anordnung von Texeln) aus dem Speicher laden und Texturkarten abtasten, um abgetastete Texturwerte zur Verwendung in von dem SM 2300 ausgeführten Shader-Programmen zu erzeugen. In mindestens einer Ausführungsform werden die Texturkarten in dem gemeinsam genutzten Speicher/L1-Cache 2318 gespeichert. In mindestens einer Ausführungsform implementieren Textureinheiten Texturoperationen, wie z. B. Filteroperationen unter Verwendung von Mip-Maps (z. B. Textur-Maps mit unterschiedlichen Detailstufen), gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform weist jeder SM 2300, ohne Einschränkung, zwei Textureinheiten auf.
  • Jeder SM 2300 umfasst in mindestens einer Ausführungsform ohne Einschränkung N LSUs 2314, die Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher/L1-Cache 2318 und der Registerdatei 2308 implementieren. Das Zusammenschaltungsnetz 2316 verbindet in mindestens einer Ausführungsform jede funktionelle Einheit mit der Registerdatei 2308 und die LSU 2314 mit der Registerdatei 2308 und dem gemeinsam genutzten Speicher/L1-Cache 2318. In mindestens einer Ausführungsform ist das Zusammenschaltungsnetz 2316 eine Kreuzschiene, die so konfiguriert sein kann, dass sie beliebige funktionelle Einheiten mit beliebigen Registern in der Registerdatei 2308 verbindet und LSUs 2314 mit der Registerdatei 2308 und Speicherorten in dem gemeinsam genutzten Speicher/L1-Cache 2318 verbindet.
  • In mindestens einer Ausführungsform ist der gemeinsam genutzte Speicher/L1-Cache 2318 ein Array von chipinternem Speicher, das in mindestens einer Ausführungsform die Datenspeicherung und die Kommunikation zwischen dem SM 2300 und der Primitiv-Engine sowie zwischen Threads in dem SM 2300 ermöglicht. In mindestens einer Ausführungsform umfasst der gemeinsam genutzte Speicher/L1-Cache 2318 ohne Einschränkung eine Speicherkapazität von 128 KB und er befindet sich in einem Pfad von dem SM 2300 zu einer Partitionseinheit. In mindestens einer Ausführungsform wird der gemeinsam genutzte Speicher/L1-Cache 2318 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 2318, L2-Cache und Speicher Ergänzungsspeicher.
  • Die Kombination von Daten-Cache und gemeinsam genutzter Speicherfunktionalität in einem einzigen Speicherblock bietet in mindestens einer Ausführungsform eine verbesserte Leistung für beide Arten von Speicherzugriffen. 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. Durch die Integration in den gemeinsam genutzten Speicher/L1-Cache 2318 kann der gemeinsam genutzte Speicher/L1-Cache 2318 gemäß mindestens einer Ausführungsform als durchsatzstarke Leitung für Streaming-Daten fungieren und gleichzeitig Zugriff auf häufig wiederverwendete Daten mit hoher Bandbreite und geringer Latenz bieten. In mindestens einer Ausführungsform kann, wenn sie für allgemeine parallele Berechnungen konfiguriert ist, eine einfachere Konfiguration im Vergleich zur Grafikverarbeitung verwendet werden. In mindestens einer Ausführungsform werden Grafikverarbeitungseinheiten mit feststehender Funktion umgangen, wodurch ein viel einfacheres Programmiermodell erzeugt wird. 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 2300 zum Ausführen des Programms und Durchführen von Berechnungen verwendet wird, der gemeinsam genutzte Speicher/L1-Cache 2318 zum Kommunizieren zwischen den Threads verwendet wird und die LSU 2314 zum Lesen des und Schreiben in den globalen Speicher durch den gemeinsam genutzten Speicher/L1-Cache 2318 und die Speicherpartitionseinheit verwendet wird. Bei der Konfiguration für Universalparallelberechnungen schreibt der SM 2300 in mindestens einer Ausführungsform Befehle, die durch die Planer-Einheit 2304 verwendet werden können, um neue Arbeit in den DPCs zu starten.
  • In mindestens einer Ausführungsform ist die PPU in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, Servern, Supercomputern, einem Smartphone (z. B. einer drahtlosen Handheld-Einrichtung), einem persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, einem Fahrzeug, einer am Kopf montierten Anzeige, einer elektronischen in der Hand gehaltenen Einrichtung usw. vorhanden oder damit verbunden. In mindestens einer Ausführungsform ist die PPU auf einem einzigen Halbleitersubstrat untergebracht. In mindestens einer Ausführungsform ist die PPU in einem System-on-a-Chip („SoC“) zusammen mit einer oder mehreren anderen Einrichtungen wie zusätzlichen PPUs, Speicher, einer CPU mit reduziertem Befehlssatz („RISC“), einer Speicherverwaltungseinheit („MMU“), einem Digital-Analog-Wandler („DAC“) und dergleichen vorhanden.
  • In mindestens einer Ausführungsform kann eine PPU in einer Grafikkarte beinhaltet sein, die eine oder mehrere Speichervorrichtungen beinhaltet. In mindestens einer Ausführungsform kann die Grafikkarte so ausgestaltet sein, dass sie mit einem PCIe-Steckplatz auf einem Motherboard eines Desktop-Computers verbunden werden kann. In mindestens einer Ausführungsform kann diese PPU eine integrierte Grafikverarbeitungseinheit („iGPU“) sein, die im Chipsatz einer Hauptplatine enthalten ist.
  • Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell zum maschinellen Lernen, z. B. ein neuronales Netz, zu trainieren, um die dem SM 2300 bereitgestellten Informationen vorherzusagen oder abzuleiten. In mindestens einer Ausführungsform wird der SM 2300 verwendet, um Informationen auf der Grundlage eines trainierten Modelles zum maschinellen Lernen (z. B. eines neuronalen Netzes), das von einem anderen Prozessor oder System oder von dem SM 2300 trainiert wurde, abzuleiten oder vorherzusagen. In mindestens einer Ausführungsform kann der SM 2300 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netze auszuführen.
  • Die hier vorliegenden Ausführungsformen ermöglichen die Wiederverwendung von Beleuchtungsabtastungen zwischen den Frames bei der Wichtigkeitsprüfung, selbst wenn die Gewichtungs- oder Abtastungszahlinformationen nicht mehr zuverlässig sind.
  • Mindestens eine Ausführungsform der Offenbarung kann mit Blick auf die folgenden Sätze beschrieben werden.
    1. 1. Computerimplementiertes Verfahren, umfassend:
      • Erzeugen, für ein Pixel eines aktuellen Bildes in einer Sequenz, eines Satzes von anfänglichen Kandidatenabtastungen, die Lichtquellen in einer virtuellen Umgebung entsprechen;
      • Auswählen von mindestens einer Lichtabtastung, die als wichtige Abtastung für ein vorheriges Bild in der Sequenz identifiziert wurde, als eine oder mehrere zusätzliche anfängliche Kandidatenabtastungen des Satzes;
      • Erzeugen von Gewichtungen und Abtastungszahlen für die anfänglichen Kandidatenabtastungen und die eine oder mehreren zusätzlichen anfänglichen Kandidatenabtastungen des Satzes für das aktuelle Bild, wobei vorherige Gewichtungen und Abtastungszahlen für die eine oder mehreren zusätzlichen Kandidatenabtastungen aus dem vorherigen Bild verworfen werden;
      • Durchführen einer Neuabtastung der Wichtigkeit aus dem Satz der anfänglichen Kandidaten, einschließlich der zusätzlichen anfänglichen Kandidaten, um Beleuchtungsdaten für das Pixel zu bestimmen; und
      • Bereitstellen der Beleuchtungsdaten zur Verwendung bei der Schattierung der Pixel für das aktuell zu rendernde Bild.
    2. 2. Computerimplementiertes Verfahren nach Anspruch 1, ferner umfassend:
      • Speichern von Beleuchtungsdaten für das vorherige Bild als Lichtabtastung, die als zusätzliche anfängliche Kandidatenabtastung für ein oder mehrere nachfolgende Bilder in der Sequenz in Betracht kommt.
    3. 3. Computerimplementiertes Verfahren nach Anspruch 1, ferner umfassend:
      • Erzeugen des Satzes der anfänglichen Kandidatenabtastungen unter Verwendung einer Mischung der Wahrscheinlichkeitsverteilungsfunktion (PDF).
    4. 4. Computerimplementiertes Verfahren nach Anspruch 1, wobei die Neuabtastung der Wichtigkeit unter Verwendung eines räumlich-zeitlichen Algorithmus zur Neuabtastung der Wichtigkeit durchgeführt wird.
    5. 5. Computerimplementiertes Verfahren nach Anspruch 1, ferner umfassend:
      • Auswählen der zusätzlichen anfänglichen Kandidatenabtastung basierend auf mindestens einer der folgenden Eigenschaften: Helligkeit, Nähe, Größe, dynamische Bewegung, relative Veränderung des Beleuchtungsbeitrags, relativer Beitrag der bidirektionalen Reflexionsverteilungsfunktion (BRDF) zur Schattierung, Vorhandensein von Texturvariationen oder vorherige Auswahl als Lichtabtastung in Bezug auf das Pixel oder mindestens ein Nachbarpixel.
    6. 6. Computerimplementiertes Verfahren nach Anspruch 1, wobei die mindestens eine Lichtabtastung, die für das vorherige Bild identifiziert wurde, nicht mit zuverlässigen Gewichtungs- oder Abtastungszahldaten, die für das vorherige Bild erzeugt wurden, verknüpft ist.
    7. 7. Computerimplementiertes Verfahren nach Anspruch 1, wobei die mindestens eine Lichtabtastung für mehrere Bilder in der Sequenz wiederverwendet wird, sobald die mindestens eine Lichtabtastung als eine wichtige Beleuchtungsabtastung für mindestens eines der Pixel oder die Szene ausgewählt wurde.
    8. 8. Computerimplementiertes Verfahren nach Anspruch 1, wobei die Beleuchtungsdaten in einem Shader einer Grafik-Pipeline bestimmt werden, der auf einer grafischen Verarbeitungseinheit (GPU) ausgeführt wird.
    9. 9. Computerimplementiertes Verfahren nach Anspruch 1, wobei die Beleuchtungsdaten für das Pixel einer einzelnen, aus der Wichtigkeitsabtastung bestimmten Abtastung entsprechen.
    10. 10. Computerimplementiertes Verfahren nach Anspruch 1, wobei die anfänglichen Kandidatenabtastungen Zufallsabtastungen für die Lichtabtastung oder Lichtpfade für die globale Beleuchtung entsprechen.
    11. 11. Prozessor, umfassend:
      • eine oder mehrere Schaltungen zum:
        • Erzeugen, für ein Pixel eines aktuellen Bildes in einer Sequenz, eines Satzes von anfänglichen Kandidatenabtastungen, die Lichtquellen in einer virtuellen Umgebung entsprechen;
        • Auswählen von mindestens einer Lichtabtastung, die als wichtige Abtastung für ein vorheriges Bild in der Sequenz identifiziert wurde, als eine oder mehrere zusätzliche anfängliche Kandidatenabtastungen des Satzes;
        • Erzeugen von Gewichtungen und Abtastungszahlen für die anfänglichen Kandidatenabtastungen und die eine oder mehreren zusätzlichen anfänglichen Kandidatenabtastungen des Satzes für das aktuelle Bild, wobei vorherige Gewichtungen und Abtastungszahlen für die eine oder mehreren zusätzlichen Kandidatenabtastungen aus dem vorherigen Bild verworfen werden;
        • Durchführen einer Neuabtastung der Wichtigkeit aus dem Satz der anfänglichen Kandidaten, einschließlich der zusätzlichen anfänglichen Kandidaten, um Beleuchtungsdaten für das Pixel zu bestimmen; und
        • Bereitstellen der Beleuchtungsdaten zur Verwendung bei der Schattierung der Pixel für das aktuell zu rendernde Bild.
    12. 12. Prozessor nach Anspruch 11, wobei die eine oder mehreren Schaltungen ferner zu Folgendem dienen:
      • Erzeugen des Satzes der anfänglichen Kandidatenabtastungen unter Verwendung einer Mischung der Wahrscheinlichkeitsverteilungsfunktion (PDF).
    13. 13. Prozessor nach Anspruch 11, wobei die Neuabtastung der Wichtigkeit unter Verwendung eines räumlich-zeitlichen Algorithmus zur Neuabtastung der Wichtigkeit durchgeführt wird.
    14. 14. Prozessor nach Anspruch 11, wobei die eine oder mehreren Schaltungen ferner zu Folgendem dienen:
      • Auswählen der zusätzlichen anfänglichen Kandidatenabtastung basierend auf mindestens einer der folgenden Eigenschaften: Helligkeit, Nähe, Größe, dynamische Bewegung, relative Veränderung des Beleuchtungsbeitrags, relativer Beitrag der bidirektionalen Reflexionsverteilungsfunktion (BRDF) zur Schattierung, Vorhandensein von Texturvariationen oder vorherige Auswahl als Lichtabtastung in Bezug auf das Pixel oder mindestens ein Nachbarpixel.
    15. 15. Prozessor nach Anspruch 11, wobei die mindestens eine Lichtabtastung, die für das vorherige Bild identifiziert wurde, nicht mit zuverlässigen Gewichtungs- oder Abtastungszahldaten, die für das vorherige Bild erzeugt wurden, verknüpft ist.
    16. 16. Prozessor nach Anspruch 11, wobei die mindestens eine Lichtabtastung für mehrere Bilder in der Sequenz wiederverwendet wird, sobald die mindestens eine Lichtabtastung als eine wichtige Beleuchtungsabtastung für mindestens eines der Pixel oder die Szene ausgewählt wurde.
    17. 17. System, umfassend:
      • einen oder mehrere Prozessoren, um Beleuchtungsdaten für ein Pixel eines aktuellen Bildes einer Sequenz von darzustellenden Bildern zu bestimmen, basierend teilweise auf dem Durchführen von räumlich-zeitlicher Neuabtastung für einen Satz von anfänglichen Kandidatenabtastungen, wobei der Satz Beleuchtungsabtastungen enthält, die für das aktuelle Bild ausgewählt wurden, und eine oder mehrere zusätzliche anfängliche Kandidatenabtastungen, die mindestens einer wiederverwendeten Lichtabtastung entsprechen, die als eine wichtige Abtastung für ein vorheriges Bild in der Sequenz identifiziert wurde, der eine oder die mehreren Prozessoren ferner Gewichtungen und Abtastungszahlen für den Satz der anfänglichen Kandidatenabtastungen für das aktuelle Bild erzeugen, einschließlich der einen oder der mehreren zusätzlichen anfänglichen Kandidatenabtastungen, und vorherige Gewichtungen und Abtastungszahlen für die eine oder die mehreren zusätzlichen Kandidatenabtastungen aus dem vorherigen Bild verwerfen.
    18. 18. System nach Anspruch 17, wobei der eine oder die mehreren Prozessoren ferner zu Folgendem dienen:
      • Erzeugen des Satzes der anfänglichen Kandidatenabtastungen unter Verwendung einer Mischung der Wahrscheinlichkeitsverteilungsfunktion (PDF).
    19. 19. System nach Anspruch 17, wobei die mindestens eine wiederverwendete Lichtabtastung, die für das vorherige Bild identifiziert wurde, nicht mit zuverlässigen Gewichtungs- oder Abtastungszahldaten, die für das vorherige Bild erzeugt wurden, verknüpft ist.
    20. 20. System nach Anspruch 17, wobei das System mindestens eines der Folgenden ist:
      • einem System zum Durchführen von Simulationsoperationen;
      • ein System zum Durchführen von Operationen, um autonome Maschinenanwendungen zu testen oder zu validieren;
      • ein System zum Rendern grafischer Ausgaben;
      • einem System zum Durchführen von Deep-Learning-Operationen;
      • einem System, das unter Verwendung eines Edge-Geräts implementiert ist;
      • ein System zum Erzeugen oder Präsentieren von virtuellen Realitätsinhalten (VR);
      • ein System zum Erzeugen oder Präsentieren von erweiterten Realitätsinhalten (AR);
      • ein System zum Erzeugen oder Präsentieren von gemischten Realitätsinhalten (MR);
      • einem System, das eine oder mehrere virtuelle Maschinen (VMs) enthält;
      • einem System, das mindestens teilweise in einem Rechenzentrum implementiert ist;
      • ein System zum Durchführen von Hardwaretests unter Verwendung von Simulationen;
      • ein System zum Erzeugen synthetischer Daten;
      • eine Plattform zur gemeinsamen Erstellung von Inhalten für 3D-Assets; oder
      • einem System, das mindestens teilweise unter Verwendung von Cloud-Computing-Ressourcen implementiert ist.
  • 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 auch separat oder in verschiedenen Kombinationen von Halbleiterplattformen je nach Wunsch des Benutzers untergebracht werden.
  • In mindestens einer Ausführungsform, unter erneuter Bezugnahme auf 10, sind Computerprogramme in Form von maschinenlesbarem ausführbarem Code oder Computersteuerlogik-Algorithmen in dem Hauptspeicher 1004 und/oder Sekundärspeicher gespeichert. Computerprogramme ermöglichen, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, dem System 1000 gemäß mindestens einer Ausführungsform, verschiedene Funktionen auszuführen. In mindestens einer Ausführungsform sind der Speicher 1004, der Speicher und/oder jeder andere Speicher mögliche Beispiele für computerlesbare Medien. In mindestens einer Ausführungsform kann sich der Sekundärspeicher auf eine beliebige geeignete Speichereinrichtung oder ein beliebiges Speichersystem beziehen, wie z. B. ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Compact-Disk-Laufwerk, ein DVD-Laufwerk, eine Aufnahmeeinrichtung, einen USB-Flash-Speicher usw. darstellt. In mindestens einer Ausführungsform ist die Architektur und/oder Funktionalität verschiedener vorheriger Figuren im Zusammenhang mit der CPU 1002, dem Parallelverarbeitungssystem 1012, einem integrierten Schaltkreis, der mindestens einen Teil der Fähigkeiten sowohl der CPU 1002 als auch des Parallelverarbeitungssystems 1012 besitzt, einem Chipsatz (z. B. eine Gruppe integrierter Schaltkreise, die als Einheit zur Ausführung verwandter Funktionen konzipiert und verkauft werden, usw.) und/oder jeder geeigneten Kombination integrierter Schaltkreise implementiert.
  • In mindestens einer Ausführungsform wird die Architektur und/oder Funktionalität verschiedener vorhergehender Figuren im Zusammenhang mit einem allgemeinen Computersystem, einem Leiterplattensystem, einem Spielkonsolensystem für Unterhaltungszwecke, einem anwendungsspezifischen System usw. umgesetzt. In mindestens einer Ausführungsform kann das Computersystem 1000 die Form eines Desktop-Computers, eines Laptops, eines Tablet-Computers, eines Servers, eines Supercomputers, eines Smartphones (z. B. einer drahtlosen, handgehaltenen Einrichtung), eines persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, eines Fahrzeugs, einer am Kopf angebrachten Anzeige, einer handgehaltenen elektronischen Einrichtung, einer Mobiltelefoneinrichtung, eines Fernsehers, einer Workstation, von Spielkonsolen, eines eingebetteten Systems und/oder jeder anderen Art von Logik annehmen.
  • In mindestens einer Ausführungsform beinhaltet das Parallelverarbeitungssystem 1012 ohne Einschränkung eine Vielzahl von Parallelverarbeitungseinheiten („PPUs“) 1014 und damit assoziierte Speicher 1016. In mindestens einer Ausführungsform sind die PPUs 1014 mit einem Host-Prozessor oder anderen peripheren Einrichtungen über eine Zwischenverbindung 1018 und einen Switch 1020 oder Multiplexer verbunden. In mindestens einer Ausführungsform verteilt das Parallelverarbeitungssystem 1012 Rechenaufgaben auf PPUs 1014, die parallelisierbar sein können - zum Beispiel als Teil der Verteilung von Rechenaufgaben auf mehrere Thread-Blöcke der Grafikverarbeitungseinheit („GPU“). In mindestens einer Ausführungsform wird der Speicher von einigen oder allen PPUs 1014 gemeinsam genutzt und ist für diese zugänglich (z. B. für den Lese- und/oder Schreibzugriff), obwohl ein derartiger gemeinsam genutzter Speicher Leistungseinbußen in Bezug auf die Verwendung von lokalem Speicher und in einer PPU 1014 residenten Registern nach sich ziehen kann. In mindestens einer Ausführungsform wird der Betrieb der PPUs 1014 durch die Verwendung eines Befehls wie etwa _syncthreads() synchronisiert, wobei alle Threads in einem Block (z. B. über mehrere PPUs 1014 ausgeführt) einen bestimmten Punkt der Codeausführung erreichen, bevor sie fortfahren.
  • In mindestens einer Ausführungsform verwenden eine oder mehrere hier beschriebene Verfahren ein oneAPI-Programmiermodell. In mindestens einer Ausführungsform bezieht sich ein oneAPI-Programmiermodell auf ein Programmiermodell für die Interaktion mit verschiedenen Compute Accelerator-Architekturen. In mindestens einer Ausführungsform bezieht sich oneAPI auf eine Anwendungsprogrammierschnittstelle (API), die für die Interaktion mit verschiedenen Compute Accelerator-Architekturen entwickelt wurde. In mindestens einer Ausführungsform verwendet ein oneAPI-Programmiermodell die Programmiersprache DPC++. In mindestens einer Ausführungsform bezieht sich eine DPC++-Programmiersprache auf eine Hochsprache für eine produktive datenparallele Programmierung. In mindestens einer Ausführungsform basiert eine DPC++-Programmiersprache zumindest teilweise auf den Programmiersprachen C und/oder C++. In mindestens einer Ausführungsform handelt es sich bei einem oneAPI-Programmiermodell um ein Programmiermodell, wie es von der Intel Corporation in Santa Clara, CA, entwickelt wurde.
  • In mindestens einer Ausführungsform wird oneAPI und/oder das oneAPI-Programmiermodell verwendet, um mit verschiedenen Architekturen von Beschleunigern, GPUs, Prozessoren und/oder Variationen davon zu interagieren. In mindestens einer Ausführungsform weist oneAPI eine Reihe von Bibliotheken auf, die verschiedene Funktionalitäten implementieren. In mindestens einer Ausführungsform weist oneAPI mindestens eine oneAPI-DPC++-Bibliothek, eine oneAPl-Mathe-Kernel-Bibliothek, eine oneAPI-Datenanalyse-Bibliothek, eine oneAPI-Bibliothek für tiefe neuronale Netze, eine oneAPI-Bibliothek für kollektive Kommunikation, eine oneAPl-Bibliothek für Threading-Bausteine, eine oneAPI-Bibliothek für Videoverarbeitung und/oder Variationen davon auf.
  • In mindestens einer Ausführungsform ist eine oneAPI-DPC++-Bibliothek, die auch als oneDPL bezeichnet wird, eine Bibliothek, die Algorithmen und Funktionen zur Beschleunigung der DPC++ Kernel-Programmierung implementiert. In mindestens einer Ausführungsform implementiert oneDPL eine oder mehrere Funktionen der Standard Template Library (STL). In mindestens einer Ausführungsform implementiert oneDPL eine oder mehrere parallele STL-Funktionen. In mindestens einer Ausführungsform bietet oneDPL eine Reihe von Bibliotheksklassen und -funktionen wie parallele Algorithmen, Iteratoren, Funktionsobjektklassen, bereichsbasierte API und/oder Variationen davon. In mindestens einer Ausführungsform implementiert oneDPL eine oder mehrere Klassen und/oder Funktionen einer C++ Standardbibliothek. In mindestens einer Ausführungsform implementiert oneDPL eine oder mehrere Zufallszahlengeneratorfunktionen.
  • In mindestens einer Ausführungsform handelt es sich bei einer oneAPl-Math-Kernel-Library, auch oneMKL genannt, um eine Bibliothek, die verschiedene optimierte und parallelisierte Routinen für verschiedene mathematische Funktionen und/oder Operationen implementiert. In mindestens einer Ausführungsform implementiert oneMKL ein oder mehrere BLAS (Basic Linear Algebra Subprograms) und/oder LAPACK (Linear Algebra Package) dichte lineare Algebra-Routinen. In mindestens einer Ausführungsform implementiert oneMKL eine oder mehrere dünn besetzte BLAS-Routinen für lineare Algebra. In mindestens einer Ausführungsform implementiert oneMKL einen oder mehrere Zufallszahlengeneratoren (RNGs). In mindestens einer Ausführungsform implementiert oneMKL eine oder mehrere Vektormathematik (VM)-Routinen für mathematische Operationen auf Vektoren. In mindestens einer Ausführungsform implementiert oneMKL eine oder mehrere Fast-Fourier-Transformations- (FFT-) Funktionen.
  • In mindestens einer Ausführungsform ist eine oneAPI-Daten-Analyse-Library, auch oneDAL genannt, eine Bibliothek, die verschiedene Datenanalyseanwendungen und verteilte Berechnungen implementiert. In mindestens einer Ausführungsform implementiert oneDAL verschiedene Algorithmen für die Vorverarbeitung, Transformation, Analyse, Modellierung, Validierung und Entscheidungsfindung für die Datenanalyse in Batch-, Online- und verteilten Verarbeitungsmodi einer Berechnung. In mindestens einer Ausführungsform implementiert oneDAL verschiedene C++- und/oder Java-APIs und verschiedene Konnektoren zu einer oder mehreren Datenquellen. In mindestens einer Ausführungsform implementiert oneDAL DPC++-API-Erweiterungen zu einer traditionellen C++-Schnittstelle und ermöglicht die Nutzung von GPUs für verschiedene Algorithmen.
  • In mindestens einer Ausführungsform ist eine oneAPI-Bibliothek für tiefe neuronale Netze, die auch als oneDNN bezeichnet wird, eine Bibliothek, die verschiedene Funktionen für tiefes Lernen implementiert. In mindestens einer Ausführungsform implementiert oneDNN verschiedene Funktionen Algorithmen und/oder Variationen davon für neuronale Netze, maschinelles Lernen und Deep-Learning.
  • In mindestens einer Ausführungsform ist eine kollektive oneAPl-Kommunikationsbibliothek, auch oneCCL genannt, eine Bibliothek, die verschiedene Anwendungen für Deep Learning und maschinelles Lernen implementiert. In mindestens einer Ausführungsform baut oneCCL auf Kommunikations-Middleware der unteren Ebene auf, wie z.B. Message Passing Interface (MPI) und libfabrics. In mindestens einer Ausführungsform ermöglicht oneCCL eine Reihe von Deep-Learningspezifischen Optimierungen, wie z.B. Priorisierung, persistente Operationen, Ausführung außerhalb der Reihenfolge und/oder Variationen davon. In mindestens einer Ausführungsform implementiert oneCCL verschiedene CPU- und GPU-Funktionen.
  • In mindestens einer Ausführungsform ist eine oneAPl-Threading-Building-Blocks-Bibliothek, auch oneTBB genannt, eine Bibliothek, die verschiedene parallelisierte Prozesse für verschiedene Anwendungen implementiert. In mindestens einer Ausführungsform wird oneTBB für eine Task-basierte, gemeinsame parallele Programmierung auf einem Host verwendet. In mindestens einer Ausführungsform implementiert oneTBB generische parallele Algorithmen. In mindestens einer Ausführungsform implementiert oneTBB nebenläufige Container. In mindestens einer Ausführungsform implementiert oneTBB einen skalierbaren Speicherallokator. In mindestens einer Ausführungsform implementiert oneTBB einen Work-Stealing-Task-Scheduler. In mindestens einer Ausführungsform implementiert oneTBB Low-Level-Synchronisationsprimitive. In mindestens einer Ausführungsform ist oneTBB compilerunabhängig und auf verschiedenen Prozessoren wie GPUs, PPUs, CPUs und/oder Variationen davon verwendbar.
  • In mindestens einer Ausführungsform ist eine oneAPl-Videoverarbeitungsbibliothek, die auch als oneVPL bezeichnet wird, eine Bibliothek, die zur Beschleunigung der Videoverarbeitung in einer oder mehreren Anwendungen verwendet wird. In mindestens einer Ausführungsform implementiert oneVPL verschiedene Funktionen zur Videodekodierung, -kodierung und -verarbeitung. In mindestens einer Ausführungsform implementiert oneVPL verschiedene Funktionen für Medien-Pipelines auf CPUs, GPUs und anderen Beschleunigern. In mindestens einer Ausführungsform implementiert oneVPL die Erkennung und Auswahl von Einrichtungen bei medienzentrierten und videoanalytischen Arbeitsbelastungen. In mindestens einer Ausführungsform implementiert oneVPL API-Primitive für die gemeinsame Nutzung von Zero-Copy-Puffern.
  • In mindestens einer Ausführungsform verwendet ein oneAPI-Programmiermodell eine DPC++-Programmiersprache. In mindestens einer Ausführungsform ist eine DPC++-Programmiersprache eine Programmiersprache, die ohne Einschränkung funktional ähnliche Versionen von CUDA-Mechanismen aufweist, um Gerätecode zu definieren und zwischen Gerätecode und Hostcode zu unterscheiden. In mindestens einer Ausführungsform kann eine DPC++-Programmiersprache eine Teilmenge der Funktionalität einer CUDA-Programmiersprache aufweisen. In mindestens einer Ausführungsform werden eine oder mehrere Operationen des CUDA Programmiermodells unter Verwendung eines oneAPl Programmiermodells mit einer DPC++ Programmiersprache durchgeführt.
  • In mindestens einer Ausführungsform wird jede hier beschriebene Anwendungsprogrammierschnittstelle (API) von einem Compiler, Interpreter oder einem anderen Softwaretool in eine oder mehrere Anweisungen, Operationen oder ein anderes Signal übersetzt. In mindestens einer Ausführungsform umfasst die Kompilierung das Erzeugen einer oder mehrerer maschinenausführbarer Anweisungen, Operationen oder anderer Signale aus dem Quellcode. In mindestens einer Ausführungsform verursacht eine API, die in eine oder mehrere Anweisungen, Operationen oder andere Signale kompiliert ist, wenn sie ausgeführt wird, dass ein oder mehrere Prozessoren wie Grafikprozessoren @22@00, Grafikkerne 1500, Parallelprozessor 1700, Prozessor @17@00, Prozessorkern @17@00 oder jede andere hier weiter beschriebene logische Schaltung eine oder mehrere Rechenoperationen durchführen.
  • Es ist zu beachten, dass sich die hier beschriebenen Ausführungsformen zwar auf ein CUDA-Programmiermodell beziehen, die hier beschriebenen Verfahren jedoch mit jedem geeigneten Programmiermodell, wie HIP, oneAPI und/oder Variationen davon, verwendet werden können.
  • Andere Variationen liegen innerhalb des Geistes der vorliegenden Offenbarung. Somit können zwar bezüglich der offenbarten Verfahren diverse Modifikationen und alternative Konstruktionen vorgenommen werden, bestimmte veranschaulichte Ausführungsformen davon werden jedoch in den Zeichnungen gezeigt und wurden vorangehend ausführlich beschrieben. Allerdings versteht es sich, dass nicht die Absicht verfolgt wird, die Offenbarung auf die spezifische(n) offenbarte(n) Form oder Formen einzuschränken, sondern die Absicht ganz im Gegenteil darin besteht, sämtliche Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die in den Geist und Umfang der wie in den beigefügten Ansprüchen definierten Offenbarung fallen.
  • 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 (d. h. in der Bedeutung „beinhaltend, ohne darauf beschränkt zu sein“), es sei denn, es ist etwas anderes angegeben. Wenn es unmodifiziert vorliegt und sich auf physische Verbindungen bezieht, ist „verbunden“ als teilweise oder vollständig ineinander enthalten, aneinander angebracht oder aneinander angefügt auszulegen, auch wenn ein Element dazwischenliegt. Die Nennung von Wertebereichen hierin soll lediglich als schnelle Methode des einzelnen Bezugnehmens auf jeden separaten Wert dienen, der in den Bereich fällt, es sei denn, hierin ist etwas anderes angegeben, und jeder separate Wert ist in die Beschreibung eingeschlossen, als ob er einzeln hierin wiedergegeben wäre. In mindestens einer Ausführungsform ist die Verwendung des Ausdrucks „Satz“ bzw. „Menge“ (z. B. „ein Satz bzw. eine Menge von Gegenständen“) oder „Teilmenge“ als eine nicht leere Sammlung auszulegen, die ein oder mehrere Elemente umfasst, es sei denn, es ist etwas anderes angemerkt oder der Kontext widerspricht dem. Sofern nichts anderes angegeben ist oder der Kontext dem widerspricht, bezeichnet ferner der Ausdruck „Teilmenge“ eines entsprechenden Satzes nicht notwendigerweise eine richtige Teilmenge des entsprechenden Satzes, sondern die Teilmenge und der entsprechende Satz können gleich sein.
  • Sofern nicht spezifisch etwas anderes genannt ist oder der Kontext dem eindeutig widerspricht, ist verbindende Sprache, wie etwa Formulierungen der Form „wenigstens eines von A, B und C“ oder „mindestens eines von A, B und C“, andernfalls in dem Kontext zu verstehen, in dem sie allgemein verwendet werden, um darzustellen, dass ein Gegenstand, ein Ausdruck usw. entweder A oder B oder C oder eine beliebige nicht leere Teilmenge des Satzes aus A und B und C sein kann. Zum Beispiel beziehen sich in dem veranschaulichten Beispiel eines Satzes, der drei Elemente aufweist, beziehen sich die verbindenden Formulierungen „wenigstens eines von A, B und C“ und „mindestens eines von A, B und C“ auf einen beliebigen der folgenden Sätze: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Somit soll derartige verbindende Sprache im Allgemeinen nicht implizieren, dass bestimmte Ausführungen es erforderlich machen, dass mindestens eines von A, mindestens eines von B und mindestens eines von C vorhanden ist. Sofern nichts anderes angemerkt ist oder der Kontext dem widerspricht, gibt der Ausdruck „Vielzahl“ einen Zustand der Pluralität an (z. B. gibt „eine Vielzahl von Gegenständen“ mehrere Gegenstände an). In mindestens einer Ausführungsform beträgt die Anzahl der Gegenstände in einer Vielzahl mindestens zwei, es können aber auch mehr sein, wenn dies entweder explizit oder durch den Kontext angegeben ist. Sofern nichts anderes genannt ist oder es anderweitig aus dem Kontext ersichtlich ist, bedeutet die Formulierung „auf Grundlage von“ „mindestens zum Teil auf Grundlage von“ und nicht „ausschließlich auf Grundlage von“.
  • Hierin beschriebene Vorgänge von Prozessen können in einer beliebigen geeigneten Reihenfolge durchgeführt werden, sofern es hierin nicht anders angegeben ist oder der Kontext dem anderweitig eindeutig widerspricht. In mindestens einer Ausführungsform wird ein Prozess, wie 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 ausführbare Befehle so ausgeführt, dass verschiedene Befehle von verschiedenen Prozessoren ausgeführt werden übertragbares computerlesbares Speichermedium Befehle und eine zentrale Verarbeitungseinheit („CPU“) führt einige der Befehle aus, während eine Grafikverarbeitungseinheit („GPU“) andere Befehle 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.
  • In mindestens einer Ausführungsform ist eine arithmetische Logikeinheit ein Satz von kombinatorischen Logikschaltungen, die einen oder mehrere Eingaben verarbeiten, um ein Ergebnis zu erzeugen. In mindestens einer Ausführungsform wird eine arithmetische Logikeinheit von einem Prozessor verwendet, um mathematische Operationen wie beispielsweise Addition, Subtraktion oder Multiplikation zu implementieren. In mindestens einer Ausführungsform wird eine arithmetische Logikeinheit verwendet, um logische Operationen wie beispielsweise logisches AND/OR oder XOR zu implementieren. In mindestens einer Ausführungsform ist eine arithmetische Logikeinheit zustandslos und besteht aus physischen Komponenten zum Umschalten, wie beispielsweise Halbleitertransistoren, die so angeordnet sind, dass sie logische Gatter bilden. In mindestens einer Ausführungsform kann eine arithmetische Logikeinheit intern als zustandsabhängige logische Schaltung mit einer zugeordneten Uhr arbeiten. In mindestens einer Ausführungsform kann eine arithmetische Logikeinheit als asynchrone logische Schaltung mit einem internen Zustand, der nicht in einer zugeordneten Menge von Registern aufrechterhalten wird, aufgebaut sein. In mindestens einer weiteren Ausführungsform wird eine arithmetische Logikeinheit von einem Prozessor verwendet, um in einem oder mehreren Registern des Prozessors gespeicherte Operanden zu kombinieren und eine Ausgabe zu erzeugen, die vom Prozessor in einem anderen Register oder einem Standort lokalisiert werden kann.
  • In mindestens einer Ausführungsform stellt der Prozessor als Ergebnis der Verarbeitung einer vom Prozessor abgerufenen Anweisung eine oder mehrere Eingaben oder Operanden einer arithmetischen Logikeinheit zur Verfügung, wodurch die arithmetische Logikeinheit veranlasst wird, ein Ergebnis zu erzeugen, das zumindest teilweise auf einem Anweisungscode basiert, der den Eingängen der arithmetischen Logikeinheit bereitgestellt wird. In mindestens einer Ausführungsform basieren die vom Prozessor an die ALU bereitgestellten Befehlscodes zumindest teilweise auf dem vom Prozessor ausgeführten Befehl. In mindestens einer Ausführungsform verarbeitet die kombinierte Logik in der ALU die Eingänge und erzeugt eine Ausgabe, die auf einem Bus innerhalb des Prozessors angeordnet ist. In mindestens einer Ausführungsform wählt der Prozessor ein Zielregister, eine Speichervorrichtung, eine Vorrichtung oder einen Standort für die Ausgabe auf dem Ausgangsbus aus, so dass das Takten des Prozessors bewirkt, dass die von der ALU erzeugten Ergebnisse an den gewünschten Standort gesendet werden.
  • Im Frame dieser Anwendung bezieht sich der Begriff arithmetische Logikeinheit (ALU) auf jede logische Schaltung, die Operanden verarbeitet, um ein Ergebnis zu erzeugen. Zum Beispiel kann sich der Begriff ALU im vorliegenden Dokument auf eine Gleitkommaeinheit, einen DSP, einen Tensorkern, einen Shaderkern, einen Koprozessor oder eine CPU beziehen.
  • 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 von Beispielen 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. Keine Formulierung in der Beschreibung sollte so ausgelegt werden, dass ein nicht beanspruchtes Element als wesentlich für die Durchführung der Offenbarung angesehen wird.
  • Jegliche Referenzen, einschließlich Veröffentlichungen, Patentanmeldungen und Patenten, die hierin erwähnt werden, sind hiermit durch Bezugnahme in demselben Maße aufgenommen, als wäre jede Referenz einzeln und spezifisch als durch Referenz eingeschlossen angegeben und in ihrer Gesamtheit hierin ausgeführt.
  • In der Beschreibung und den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen verwendet werden. Es versteht sich, dass diese Ausdrücke nicht als Synonyme füreinander beabsichtigt sein können. Vielmehr kann in konkreten Beispielen „verbunden“ oder „gekoppelt“ verwendet werden, um anzugeben, dass zwei oder mehr Elemente in direktem oder indirektem physischem oder elektrischem Kontakt miteinander stehen. Mit „gekoppelt“ kann auch gemeint sein, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, jedoch trotzdem miteinander zusammenwirken oder interagieren.
  • Sofern nicht ausdrücklich anders angegeben, versteht es sich, dass sich Begriffe wie „Verarbeitung“, „Berechnung“, „Berechnen“, „Bestimmen“ oder dergleichen in der gesamten Beschreibung auf Handlungen und/oder Prozesse eines Computers oder Rechensystems oder einer ähnlichen elektronischen Rechenvorrichtung, die Daten, die als physische, z. B. elektronische, Größen in den Registern und/oder Speichern des Rechensystems dargestellt sind, manipulieren und/oder in andere Daten umwandeln, die auf ähnliche Weise als physische Größen in den Speichern, Registern oder anderen derartigen Informationsspeicher-, - übertragungs- oder -anzeigevorrichtungen des Rechensystems dargestellt sind.
  • Auf ähnliche Weise kann sich der Ausdruck „Prozessor“ auf eine beliebige Vorrichtung oder einen beliebigen Abschnitt einer Vorrichtung beziehen, die/der elektronische Daten aus Registern und/oder Speicher verarbeitet und diese elektronischen Daten in andere elektronische Daten umwandelt, die in Registern und/oder Speicher gespeichert werden können. Als nicht einschränkende Beispiele kann der „Prozessor“ eine CPU oder eine GPU sein. Eine „Rechenplattform“ kann einen oder mehrere Prozessoren umfassen. Wie hierin verwendet, können „Software“-Prozesse zum Beispiel Software- und/oder Hardware-Entitäten beinhalten, die im Verlauf der Zeit Arbeit verrichten, wie etwa Tasks, Threads und intelligente Agenten. Außerdem kann sich jeder Prozess auf mehrere Prozesse beziehen, um Anweisungen nacheinander oder parallel, kontinuierlich oder intermittierend auszuführen. In mindestens einer Ausführungsform werden die Ausdrücke „System“ und „Verfahren“ hierin insofern austauschbar verwendet, dass ein System ein oder mehrere Verfahren verkörpern kann und die Verfahren als System betrachtet werden können.
  • Im vorliegenden Dokument kann auf das Beschaffen, 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.
  • Obwohl in den vorliegenden Beschreibungen beispielhafte Implementierungen der beschriebenen Techniken beschrieben werden, können auch andere Architekturen verwendet werden, um die beschriebene Funktionalität zu implementieren, und sie sind im Frame dieser Offenbarung vorgesehen. 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 (20)

  1. Computerimplementiertes Verfahren, umfassend: Erzeugen, für ein Pixel eines aktuellen Bildes in einer Sequenz, eines Satzes von anfänglichen Kandidatenabtastungen, die Lichtquellen in einer virtuellen Umgebung entsprechen; Auswählen von mindestens einer Lichtabtastung, die als wichtige Abtastung für ein vorheriges Bild in der Sequenz identifiziert wurde, als eine oder mehrere zusätzliche anfängliche Kandidatenabtastungen des Satzes; Erzeugen von Gewichtungen und Abtastungszahlen für die anfänglichen Kandidatenabtastungen und die eine oder mehreren zusätzlichen anfänglichen Kandidatenabtastungen des Satzes für das aktuelle Bild, wobei vorherige Gewichtungen und Abtastungszahlen für die eine oder mehreren zusätzlichen Kandidatenabtastungen aus dem vorherigen Bild verworfen werden; Durchführen einer Neuabtastung der Wichtigkeit aus dem Satz der anfänglichen Kandidaten, einschließlich der zusätzlichen anfänglichen Kandidaten, um Beleuchtungsdaten für das Pixel zu bestimmen; und Bereitstellen der Beleuchtungsdaten zur Verwendung bei der Schattierung der Pixel für das aktuell zu rendernde Bild.
  2. Computerimplementiertes Verfahren nach Anspruch 1, ferner umfassend: Speichern von Beleuchtungsdaten für das vorherige Bild als Lichtabtastung, die als zusätzliche anfängliche Kandidatenabtastung für ein oder mehrere nachfolgende Bilder in der Sequenz in Betracht kommt.
  3. Computerimplementiertes Verfahren nach Anspruch 1 oder 2, ferner umfassend: Erzeugen des Satzes der anfänglichen Kandidatenabtastungen unter Verwendung einer Mischung der Wahrscheinlichkeitsverteilungsfunktion (PDF).
  4. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die Neuabtastung der Wichtigkeit unter Verwendung eines räumlich-zeitlichen Algorithmus zur Neuabtastung der Wichtigkeit durchgeführt wird.
  5. Computerumgesetztes Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend: Auswählen der zusätzlichen anfänglichen Kandidatenabtastung basierend auf mindestens einer der folgenden Eigenschaften: Helligkeit, Nähe, Größe, dynamische Bewegung, relative Veränderung des Beleuchtungsbeitrags, relativer Beitrag der bidirektionalen Reflexionsverteilungsfunktion (BRDF) zur Schattierung, Vorhandensein von Texturvariationen oder vorherige Auswahl als Lichtabtastung in Bezug auf das Pixel oder mindestens ein Nachbarpixel.
  6. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die mindestens eine Lichtabtastung, die für das vorherige Bild identifiziert wurde, nicht mit zuverlässigen Gewichtungs- oder Abtastungszahldaten, die für das vorherige Bild erzeugt wurden, verknüpft ist.
  7. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die mindestens eine Lichtabtastung für mehrere Bilder in der Sequenz wiederverwendet wird, sobald die mindestens eine Lichtabtastung als eine wichtige Beleuchtungsabtastung für mindestens eines der Pixel oder die Szene ausgewählt wurde.
  8. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die Beleuchtungsdaten in einem Shader einer Grafik-Pipeline bestimmt werden, der auf einer grafischen Verarbeitungseinheit (GPU) ausgeführt wird.
  9. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die Beleuchtungsdaten für das Pixel einer einzelnen, aus der Wichtigkeitsabtastung bestimmten Abtastung entsprechen.
  10. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die anfänglichen Kandidatenabtastungen Zufallsabtastungen für die Lichtabtastung oder Lichtpfade für die globale Beleuchtung entsprechen.
  11. Prozessor, umfassend: eine oder mehrere Schaltungen zum: Erzeugen, für ein Pixel eines aktuellen Bildes in einer Sequenz, eines Satzes von anfänglichen Kandidatenabtastungen, die Lichtquellen in einer virtuellen Umgebung entsprechen; Auswählen von mindestens einer Lichtabtastung, die als wichtige Abtastung für ein vorheriges Bild in der Sequenz identifiziert wurde, als eine oder mehrere zusätzliche anfängliche Kandidatenabtastungen des Satzes; Erzeugen von Gewichtungen und Abtastungszahlen für die anfänglichen Kandidatenabtastungen und die eine oder mehreren zusätzlichen anfänglichen Kandidatenabtastungen des Satzes für das aktuelle Bild, wobei vorherige Gewichtungen und Abtastungszahlen für die eine oder mehreren zusätzlichen Kandidatenabtastungen aus dem vorherigen Bild verworfen werden; Durchführen einer Neuabtastung der Wichtigkeit aus der Menge der anfänglichen Kandidaten, einschließlich der zusätzlichen anfänglichen Kandidaten, um Beleuchtungsdaten für das Pixel zu bestimmen; und Bereitstellen der Beleuchtungsdaten zur Verwendung bei der Schattierung der Pixel für das aktuell zu rendernde Bild.
  12. Prozessor nach Anspruch 11, wobei die eine oder mehreren Schaltungen ferner zu Folgendem dienen: Erzeugen des Satzes der anfänglichen Kandidatenabtastungen unter Verwendung einer Mischung der Wahrscheinlichkeitsverteilungsfunktion (PDF).
  13. Prozessor nach Anspruch 11 oder 12, wobei die Neuabtastung der Wichtigkeit unter Verwendung eines räumlich-zeitlichen Algorithmus zur Neuabtastung der Wichtigkeit durchgeführt wird.
  14. Prozessor nach einem der Ansprüche 11 bis 13, wobei die eine oder mehreren Schaltungen ferner zu Folgendem dienen: Auswählen der zusätzlichen anfänglichen Kandidatenabtastung basierend auf mindestens einer der folgenden Eigenschaften: Helligkeit, Nähe, Größe, dynamische Bewegung, relative Veränderung des Beleuchtungsbeitrags, relativer Beitrag der bidirektionalen Reflexionsverteilungsfunktion (BRDF) zur Schattierung, Vorhandensein von Texturvariationen oder vorherige Auswahl als Lichtabtastung in Bezug auf das Pixel oder mindestens ein Nachbarpixel.
  15. Prozessor nach einem der Ansprüche 11 bis 14, wobei die mindestens eine Lichtabtastung, die für das vorherige Bild identifiziert wurde, nicht mit zuverlässigen Gewichtungs- oder Abtastungszahldaten, die für das vorherige Bild erzeugt wurden, verknüpft ist.
  16. Prozessor nach einem der Ansprüche 11 bis 15, wobei die mindestens eine Lichtabtastung für mehrere Bilder in der Sequenz wiederverwendet wird, sobald die mindestens eine Lichtabtastung als eine wichtige Beleuchtungsabtastung für mindestens eines der Pixel oder die Szene ausgewählt wurde.
  17. System, umfassend: einen oder mehrere Prozessoren, um Beleuchtungsdaten für ein Pixel eines aktuellen Bildes einer Sequenz von darzustellenden Bildern zu bestimmen, basierend teilweise auf dem Durchführen von räumlich-zeitlicher Neuabtastung für einen Satz von anfänglichen Kandidatenabtastungen, wobei der Satz Beleuchtungsabtastungen enthält, die für das aktuelle Bild ausgewählt wurden, und eine oder mehrere zusätzliche anfängliche Kandidatenabtastungen, die mindestens einer wiederverwendeten Lichtabtastung entsprechen, die als eine wichtige Abtastung für ein vorheriges Bild in der Sequenz identifiziert wurde, der eine oder die mehreren Prozessoren ferner Gewichtungen und Abtastungszahlen für den Satz der anfänglichen Kandidatenabtastungen für das aktuelle Bild erzeugen, einschließlich der einen oder der mehreren zusätzlichen anfänglichen Kandidatenabtastungen, und vorherige Gewichtungen und Abtastungszahlen für die eine oder die mehreren zusätzlichen Kandidatenabtastungen aus dem vorherigen Bild verwerfen.
  18. System nach Anspruch 17, wobei der eine oder die mehreren Prozessoren ferner zu Folgendem dienen: Erzeugen des Satzes der anfänglichen Kandidatenabtastungen unter Verwendung einer Mischung der Wahrscheinlichkeitsverteilungsfunktion (PDF).
  19. System nach Anspruch 17 oder 18, wobei die mindestens eine wiederverwendete Lichtabtastung, die für das vorherige Bild identifiziert wurde, nicht mit zuverlässigen Gewichtungs- oder Abtastungszahldaten, die für das vorherige Bild erzeugt wurden, verknüpft ist.
  20. System nach einem der Ansprüche 17 bis 19, wobei das System mindestens eines der Folgenden ist: einem System zum Durchführen von Simulationsoperationen; ein System zum Durchführen von Operationen, um autonome Maschinenanwendungen zu testen oder zu validieren; ein System zum Rendern grafischer Ausgaben; einem System zum Durchführen von Deep-Learning-Operationen; einem System, das unter Verwendung eines Edge-Geräts implementiert ist; ein System zum Erzeugen oder Präsentieren von virtuellen Realitätsinhalten (VR); ein System zum Erzeugen oder Präsentieren von erweiterten Realitätsinhalten (AR); ein System zum Erzeugen oder Präsentieren von gemischten Realitätsinhalten (MR); einem System, das eine oder mehrere virtuelle Maschinen (VMs) enthält; einem System, das mindestens teilweise in einem Rechenzentrum implementiert ist; ein System zum Durchführen von Hardwaretests unter Verwendung von Simulationen; ein System zum Erzeugen synthetischer Daten; eine Plattform zur gemeinsamen Erstellung von Inhalten für 3D-Assets; oder einem System, das mindestens teilweise unter Verwendung von Cloud-Computing-Ressourcen implementiert ist.
DE102023119191.8A 2022-07-22 2023-07-20 Verbesserung der anfänglichen kandidaten bei der räumlich-zeitlichen neuabtastung Pending DE102023119191A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202263391576P 2022-07-22 2022-07-22
US63/391,576 2022-07-22
US202318164043A 2023-02-03 2023-02-03
US18/164,043 2023-02-03

Publications (1)

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

Family

ID=89429812

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102023119191.8A Pending DE102023119191A1 (de) 2022-07-22 2023-07-20 Verbesserung der anfänglichen kandidaten bei der räumlich-zeitlichen neuabtastung

Country Status (1)

Country Link
DE (1) DE102023119191A1 (de)

Similar Documents

Publication Publication Date Title
CN112561048B (zh) 在推断期间中对图形处理器的协调和增加利用
CN108734648B (zh) 计算优化机制
JP7430050B2 (ja) クラウドに基づくリアルタイム光線追跡
DE112020001256T5 (de) Kompressionstechniken
EP3675046B1 (de) Spekulative ausführung von hit- und intersection-shadern auf programmierbaren raytracing-architekturen
CN113191501A (zh) 机器学习稀疏计算机制
CN111383159A (zh) 用于加速叶节点中的相交的标量引擎集群
DE102018110380A1 (de) Tool zum Ermöglichen der Effizienz beim Maschinenlernen
DE102020129969A1 (de) Verbesserungen der verarbeitung und des caching von graphikverarbeitungseinheiten
DE102021112250A1 (de) Bestimmung von Audiorauschen unter Verwendung eines oder mehrerer neuronaler Netze
DE102019120661A1 (de) Videoverfeinerungsmechanismus
DE112020000464T5 (de) Mehrfachkachel-grafikprozessor-rendering
DE102020107080A1 (de) Grafiksysteme und Verfahren zum Beschleunigen von Synchronisation mittels feinkörniger Abhängigkeitsprüfung und Planungsoptimierungen basierend auf verfügbarem gemeinsam genutztem Speicherplatz
DE112020000854T5 (de) Thread-gruppen-planung für die grafikverarbeitung
DE102020132272A1 (de) Verfahren und vorrichtung zum codieren basierend auf schattierungsraten
DE102019117495A1 (de) System und verfahren zur 3d-blob-klassifizierung und -übertragung
DE102020132377A1 (de) Vorrichtung und Verfahren zur Drosselung einer Raytracing-Pipeline
CN113424219A (zh) 用于多线程通道的同步的系统和方法
EP3798992A1 (de) Vorrichtung und verfahren zur beschleunigung der datenstrukturwiederherstellung
DE112020000902T5 (de) Datenvorabruf für die grafikdatenverarbeitung
US20230138718A1 (en) Illumination resampling using temporal gradients in light transport simulation systems and applications
DE102020129432A1 (de) System und Verfahren zum Anpassen eines ausführbaren Objekts an eine Verarbeitungseinheit
DE102022130536A1 (de) Sich selbst abstimmende thread-verteilungsrichtlinie
DE102020113789A1 (de) Asynchroner ausführungsmechanismus
DE112022002140T5 (de) Licht-Resampling mit Strahlenverfolgung und Sichtbarkeit im Bildschirmraum

Legal Events

Date Code Title Description
R012 Request for examination validly filed