DE102023125014A1 - Anwendungsprogrammierschnittstelle zum ausführen der rahmeninterpolation - Google Patents

Anwendungsprogrammierschnittstelle zum ausführen der rahmeninterpolation Download PDF

Info

Publication number
DE102023125014A1
DE102023125014A1 DE102023125014.0A DE102023125014A DE102023125014A1 DE 102023125014 A1 DE102023125014 A1 DE 102023125014A1 DE 102023125014 A DE102023125014 A DE 102023125014A DE 102023125014 A1 DE102023125014 A1 DE 102023125014A1
Authority
DE
Germany
Prior art keywords
frame
api
processor
frames
frame interpolation
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
DE102023125014.0A
Other languages
English (en)
Inventor
Robert Thomas Pottorff
Karan Sapra
Andrew Leighton Edelsten
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 DE102023125014A1 publication Critical patent/DE102023125014A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4007Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/01Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level
    • H04N7/0127Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level by changing the field or frame frequency of the incoming video signal, e.g. frame rate converter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/01Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level
    • H04N7/0135Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level involving interpolation processes

Landscapes

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

Abstract

Geräte, Systeme und Techniken zur Verarbeitung von Bildrahmen. In mindestens einer Ausführungsform wird eine Anwendungsprogrammierschnittstelle (API) ausgeführt, um die Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke auszuführen.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung beansprucht die Vorteile der am 20. September 2022 eingereichten vorläufigen US-Patentanmeldung Nr. 63/408,469 mit dem Titel „APPLICATION PROGRAMMING INTERFACE FOR VIDEO FRAME BLENDING“, deren Offenbarung hierin durch Bezugnahme vollständig enthalten ist. Diese Anmeldung bezieht für alle Zwecke auch die vollständige Offenbarung der gemeinsam angemeldeten US-Patentanmeldung Nr. 17/949,104 vom 20. September 2022 mit dem Titel „VIDEO FRAME CONSENSUS BLENDING“, gemeinsam angemeldete US-Patentanmeldung Nr. 17/949,099 , eingereicht am 20. September 2022, mit dem Titel „VIDEO FRAME MOTION ESTIMATION“, gemeinsam angemeldete US-Patentanmeldung Nr. 17/949,124 , eingereicht am 20. September 2022, mit dem Titel „EDGE-ENHANCED VIDEO FRAME BLENDING“, und gemeinsam angemeldete US-Patentanmeldung Nr. 17/949,156 , eingereicht am 20. September 2022, mit dem Titel „ADAPTIVE VIDEO FRAME BLENDING“, gemeinsam angemeldete US-Patentanmeldung Nr. 17/949,138 , eingereicht am 20. September 2022, mit dem Titel „DETECTING DUPLICATION IN VIDEO FRAME BLENDING“, und gemeinsam angemeldete US-Patentanmeldung Nr. 17/949,125 , eingereicht am 20. September 2022, mit dem Titel „TECHNIQUES TO BLEND VIDEO FRAMES“, gemeinsam angemeldete US-Patentanmeldung Nr. 17/949,153 , eingereicht am 20. September 2022, mit dem Titel „VIDEO FRAME BLENDING“, gemeinsam angemeldete U.S. Patentanmeldung Nr. 17/949,115 , eingereicht am 20. September 2022, mit dem Titel „PARALLEL WRITING OF DEPTH AND PIXEL INFORMATION“, gemeinsam angemeldete U.S. Patentanmeldung Nr. 17/949,166 , eingereicht am 20. September 2022, mit dem Titel „GENERATING MOTION INFORMATION OF VIDEO FRAMES“, gemeinsam angemeldete US-Patentanmeldung Nr. 17/949,135 , eingereicht am 20. September 2022, mit dem Titel „NON-LINEAR MOTION BLENDING IN VIDEO FRAMES“, gemeinsam angemeldete US-Patentanmeldung Nr. 18/106,963 , 7. Februar 2023, mit dem Titel „APPLICATION PROGRAMMING INTERFACE TO INDICATE FRAME INTERPOLATION SUPPORT“, gemeinsam angemeldete US-Patentanmeldung Nr. 18/106,964 , 7. Februar 2023, mit dem Titel „APPLICATION PROGRAMMING INTERFACE TO ENABLE FRAME INTERPOLATION“, gemeinsam angemeldete US-Patentanmeldung Nr. 18/106,966 , mit dem Titel „APPLICATION PROGRAMMING INTERFACE TO DISABLE FRAME INTERPOLATION“ und gemeinsam angemeldete US-Patentanmeldung Nr. 18/106,971, 7. Februar 2023, mit dem Titel „APPLICATION PROGRAMMING INTERFACE TO INDICATE FRAME SIZE INFORMATION“ ein.
  • TECHNISCHES GEBIET
  • Mindestens eine Ausführungsform bezieht sich auf Ressourcen, die für die Ausführung eines oder mehrerer neuronaler Netzwerke verwendet werden. Mindestens eine Ausführungsform bezieht sich beispielsweise auf Ressourcen, die zur Interpolation von Videorahmen unter Verwendung eines oder mehrerer neuronaler Netzwerke verwendet werden.
  • STAND DER TECHNIK
  • Das Erzielen einer hohen Videoqualität kann viel Speicher, Zeit oder Ressourcen verwenden. Die Menge an Speicher, Zeit oder Ressourcen (z. B. Rechenressourcen) kann verbessert werden. Hochauflösende Videos enthalten beispielsweise eine große Menge an Informationen, deren Verarbeitung und Speicherung erhebliche Ressourcen an Rechenleistung, Bandbreite, Speicher und anderen Ressourcen beanspruchen kann. Außerdem kann der Inhalt des Videos komplex sein, da mehrere Subjekte des Videos unterschiedliche Dinge tun, die dazu führen können, dass sich die Pixel des Videos auf nicht ganz einfache Weise verändern. In manchen Kontexten sollte die Verbesserung oder andere Verarbeitung von Videos schnell erfolgen, damit die Verarbeitung des Videos für einen bestimmten Zweck nützlich ist. Die Komplexität des Videos in Verbindung mit der Menge der im Video enthaltenen Informationen und die Beschränkungen der Rechenressourcen erschweren jedoch eine effektive Verarbeitung des Videos.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
    • 1 veranschaulicht ein Beispieldiagramm, in dem nach mindestens einer Ausführungsform Überblendungsfaktoren für Rahmenbewegungen unter Verwendung eines neuronalen Netzwerks erstellt werden;
    • 2 veranschaulicht ein Beispieldiagramm, in dem ein neuronales Netzwerk gemäß mindestens einer Ausführungsform interpolierte Videorahmen erstellt;
    • 3 veranschaulicht einen beispielhaften Prozess zur Erstellung von interpolierten Videorahmen gemäß mindestens einer Ausführungsform;
    • 4 veranschaulicht ein Beispieldiagramm, in dem Bewegungsvektoren verwendet werden, um einen interpolierten Rahmen gemäß mindestens einer Ausführungsform zu erstellen;
    • 5 veranschaulicht ein Beispieldiagramm, in dem gemäß mindestens einer Ausführungsform Vektoren für Vorwärtsbewegungen berechnet werden;
    • 6 veranschaulicht ein Beispieldiagramm, in dem die Analyse des optischen Flusses verwendet wird, um gemäß mindestens einer Ausführungsform Zwischenrahmen zu erstellen;
    • 7 veranschaulicht ein Beispieldiagramm, in dem gemäß mindestens einer Ausführungsform Vorwärtsbewegungskandidaten überlagert werden;
    • 8 veranschaulicht ein Beispieldiagramm, in dem gemäß mindestens einer Ausführungsform die Kandidaten für die Rückwärtsbewegung gemischt werden;
    • 9 veranschaulicht ein Beispieldiagramm, in dem ein interpolierter Rahmen gemäß mindestens einer Ausführungsform erstellt wird;
    • 10 veranschaulicht einen beispielhaften Prozess zur Erstellung eines interpolierten Rahmens unter Verwendung eines neuronalen Netzwerks, gemäß mindestens einer Ausführungsform;
    • 11 veranschaulicht ein Beispieldiagramm, in dem Bewegungskandidaten gemischt werden, um einen interpolierten Rahmen gemäß mindestens einer Ausführungsform zu erstellen,
    • 12 veranschaulicht ein Beispieldiagramm, in dem gemäß mindestens einer Ausführungsform eine Vielzahl von interpolierten Rahmen erstellt wird;
    • 13 veranschaulicht ein Beispieldiagramm, in dem gemäß mindestens einer Ausführungsform eine Vielzahl von interpolierten Rahmen erstellt wird;
    • 14 veranschaulicht ein Beispieldiagramm, in dem eine Anwendungsprogrammierschnittstelle (API) verwendet wird, um gemäß mindestens einer Ausführungsform Überblendungsfaktoren für Rahmenbewegungen zu erstellen;
    • 15 ist ein Blockdiagramm, das ein Softwareprogramm veranschaulicht, das von einem oder mehreren Prozessoren gemäß mindestens einer Ausführungsform ausgeführt wird;
    • 16 ist ein Blockdiagramm, das eine Anwendungsprogrammierschnittstelle (API) veranschaulicht, um gemäß mindestens einer Ausführungsform die Unterstützung für die Interpolation von Videorahmen zu bestimmen;
    • 17 ist ein Blockdiagramm, das eine Anwendungsprogrammierschnittstelle (API) veranschaulicht, um die Interpolation von Videorahmen gemäß mindestens einer Ausführungsform zu ermöglichen;
    • 18 ist ein Blockdiagramm, das eine Anwendungsprogrammierschnittstelle (API) veranschaulicht, um die Interpolation von Videorahmen gemäß mindestens einer Ausführungsform zu deaktivieren;
    • 19 ist ein Blockdiagramm, das eine Anwendungsprogrammierschnittstelle (API) veranschaulicht, um Parameter für die Interpolation von Videorahmen gemäß mindestens einer Ausführungsform zu ermitteln;
    • 20 ist ein Blockdiagramm, das eine Anwendungsprogrammierschnittstelle (API) veranschaulicht, um Parameter für die Interpolation von Videorahmen gemäß mindestens einer Ausführungsform festzulegen;
    • 21 veranschaulicht einen Prozess zum Ausführen einer oder mehrerer Anwendungsprogrammierschnittstellen (APIs), gemäß mindestens einer Ausführungsform;
    • 22 ist ein Blockdiagramm, das einen beispielhaften Software-Stack veranschaulicht, in dem Anwendungsprogrammierschnittstellen (API) gemäß mindestens einer Ausführungsform verarbeitet werden;
    • 23A veranschaulicht Inferenz- und/oder Trainingslogik gemäß mindestens einer Ausführungsform;
    • 23B veranschaulicht Inferenz- und/oder Trainingslogik gemäß mindestens einer Ausführungsform;
    • 24 veranschaulicht das Training und den Einsatz eines neuronalen Netzwerks, gemäß mindestens einer Ausführungsform;
    • 25 veranschaulicht ein beispielhaftes Rechenzentrumssystem, gemäß mindestens einer Ausführungsform;
    • 26A veranschaulicht einen Supercomputer auf Chipebene gemäß mindestens einer Ausführungsform;
    • 26B veranschaulicht einen Supercomputer auf Rackmodulebene gemäß mindestens einer Ausführungsform;
    • 26C veranschaulicht einen Supercomputer auf Rack-Ebene gemäß mindestens einer Ausführungsform;
    • 26D veranschaulicht einen Supercomputer auf Gesamtsystemebene gemäß mindestens einer Ausführungsform.
    • 27 ist ein Blockdiagramm, das ein Computersystem veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 28 ist ein Blockdiagramm, das ein Computersystem veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 29 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 30 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 31A veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 31 B veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 31C veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 31 D veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 31E und 31 F veranschaulichen ein gemeinsam genutztes Programmiermodell gemäß mindestens einer Ausführungsform;
    • 32 veranschaulicht beispielhafte integrierte Schaltungen und zugeordnete GPUen gemäß mindestens einer Ausführungsform;
    • 33A und 33B veranschaulichen beispielhafte integrierte Schaltungen und zugehörige GPUen, gemäß mindestens einer Ausführungsform;
    • 34A und 34B veranschaulichen zusätzliche beispielhafte GPUlogik gemäß mindestens einer Ausführungsform;
    • 35 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 36A veranschaulicht einen Parallelprozessor gemäß mindestens einer Ausführungsform;
    • 36B veranschaulicht eine Partitionseinheit gemäß mindestens einer Ausführungsform;
    • 36C veranschaulicht einen Verarbeitungscluster gemäß mindestens einer Ausführungsform;
    • 36D veranschaulicht einen Grafik-Multiprozessor gemäß mindestens einer Ausführungsform;
    • 37 veranschaulicht ein System mit mehreren Grafikverarbeitungseinheiten (GPU) gemäß mindestens einer Ausführungsform;
    • 38 veranschaulicht einen GPU gemäß mindestens einer Ausführungsform;
    • 39 ist ein Blockdiagramm, das eine Prozessor-Mikroarchitektur für einen Prozessor veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 40 veranschaulicht einen Deep-Learning-Anwendungsprozessor gemäß mindestens einer Ausführungsform;
    • 41 ist ein Blockdiagramm, das einen beispielhaften neuromorphen Prozessor veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 42 veranschaulicht mindestens Abschnitte eines GPUs, gemäß einer oder mehreren Ausführungsformen;
    • 43 veranschaulicht mindestens Abschnitte eines GPUs, gemäß einer oder mehreren Ausführungsformen;
    • 44 veranschaulicht mindestens Abschnitte eines GPUs, gemäß einer oder mehreren Ausführungsformen;
    • 45 ist ein Blockdiagramm einer Grafikverarbeitungsmaschine eines GPUs, gemäß mindestens einer Ausführungsform;
    • 46 ist ein Blockdiagramm von mindestens Abschnitten eines GPUkerns, gemäß mindestens einer Ausführungsform;
    • 47A und 47B veranschaulichen Thread-Ausführungslogik, die ein Array von Verarbeitungselementen eines GPUkerns einschließt, gemäß mindestens einer Ausführungsform;
    • 48 veranschaulicht eine Parallelverarbeitungseinheit (PPU) gemäß mindestens einer Ausführungsform;
    • 49 veranschaulicht einen allgemeinen Verarbeitungscluster (GPC) gemäß mindestens einer Ausführungsform;
    • 50 veranschaulicht eine Speicherpartitionseinheit einer Parallelverarbeitungseinheit („PPU“) gemäß mindestens einer Ausführungsform;
    • 51 veranschaulicht einen Streaming-Multiprozessor gemäß mindestens einer Ausführungsform.
    • 52 ist ein beispielhaftes Datenflussdiagramm für eine erweiterte Rechenpipeline, gemäß mindestens einer Ausführungsform;
    • 53 ist eine Systemdarstellung für ein beispielhaftes System zum Trainieren, Anpassen, Instanziieren und Einsetzen von Modellen des maschinellen Lernens in einer weiterentwickelten Rechenpipeline, gemäß mindestens einer Ausführungsform;
    • 54 schließt eine beispielhafte Veranschaulichung einer fortgeschrittenen Rechenpipeline 5310A zur Verarbeitung von Bildgebungsdaten ein, gemäß mindestens einer Ausführungsform;
    • 55A enthält ein beispielhaftes Datenflussdiagramm eines virtuellen Instruments, das eine Ultraschallvorrichtung unterstützt, gemäß mindestens einer Ausführungsform;
    • 55B schließt ein beispielhaftes Datenflussdiagramm eines virtuellen Instruments ein, das einen CT-Scanner unterstützt, gemäß mindestens einer Ausführungsform;
    • 56A veranschaulicht ein Datenflussdiagramm für einen Prozess zum Trainieren eines maschinellen Lernmodells, gemäß mindestens einer Ausführungsform;
    • 56B ist eine beispielhafte Veranschaulichung einer Client-Server-Architektur zum Erweitern von Annotationswerkzeugen mit vorab trainierten Annotationsmodellen gemäß mindestens einer Ausführungsform;
    • 57 veranschaulicht einen Software-Stack einer Programmierplattform, gemäß mindestens einer Ausführungsform;
    • 58 veranschaulicht eine CUDA-Implementierung eines Software-Stacks von 57 gemäß mindestens einer Ausführungsform;
    • 59 veranschaulicht eine ROCm-lmplementierung eines Software-Stacks von 57 gemäß mindestens einer Ausführungsform;
    • 60 veranschaulicht eine OpenCL-Implementierung eines Software-Stacks von 57 gemäß mindestens einer Ausführungsform;
    • 61 veranschaulicht Software, die durch eine Programmierplattform unterstützt wird, gemäß mindestens einer Ausführungsform;
    • 62 veranschaulicht die Kompilierung von Code zur Ausführung auf den Programmierplattformen von 57-60, gemäß mindestens einer Ausführungsform;
    • 63 veranschaulicht ein Multimediasystem gemäß mindestens einer Ausführungsform;
    • 64 veranschaulicht ein verteiltes System gemäß mindestens einer Ausführungsform;
    • 65 veranschaulicht ein neuronales Supersampling-Netzwerk gemäß mindestens einer Ausführungsform;
    • 66 veranschaulicht eine Architektur eines neuronalen Supersampling-Netzwerks gemäß mindestens einer Ausführungsform;
    • 67 veranschaulicht ein Beispiel für Streaming unter Verwendung eines neuronalen Supersampling-Netzwerks gemäß mindestens einer Ausführungsform;
    • 68 veranschaulicht ein Beispiel für eine Simulation unter Verwendung eines neuronalen Supersampling-Netzwerks gemäß mindestens einer Ausführungsform; und
    • 69 veranschaulicht das Beispiel einer Vorrichtung unter Verwendung eines neuronalen Supersampling-Netzwerks gemäß mindestens einer Ausführungsform;
  • DETAILLIERTE BESCHREIBUNG
  • Die hierin beschriebenen und vorgeschlagenen Techniken beziehen sich auf die Verwendung von einem oder mehreren neuronalen Netzwerken, um Operationen zur Videoverarbeitung auszuführen, einschließlich Operationen zur Erhöhung der Rahmenrate eines Videos. In mindestens einer Ausführungsform erstellt ein System (z. B. ein Prozessor, der eine Spielmaschine ausführt) Videorahmen, die den jeweiligen Zeiten in einem Video entsprechen, und die Bildrate des Videos wird durch den Prozessor erhöht, indem ein oder mehrere neuronale Netzwerke verwendet werden, um einen oder mehrere Videorahmen zu Zeiten zwischen den Zeiten der durch das Video erzeugten Rahmen zu erstellen, z. B. indem ein Rahmen zwischen jedem Paar von Rahmen erstellt wird, die durch die Spielmaschine erzeugt werden. Ein beispielhafter Prozess, bei dem ein oder mehrere neuronale Netzwerke verwendet werden, um Rahmen zu erstellen, wird im Folgenden beschrieben, beispielsweise in Verbindung mit 3. Die in Verbindung mit 1-22. beschriebenen und vorgeschlagenen Techniken können unter Verwendung einer oder mehrerer Techniken ausgeführt werden, die in Anhang A beschrieben sind, der hiermit eingereicht wird, Teil der schriftlichen Offenbarung ist und durch Verweis einbezogen wird.
  • In mindestens einer Ausführungsform erstellt eine Spielmaschine (wie oben und an anderer Stelle hierin erwähnt) oder ein anderer Anbieter von Videospielen Videorahmen, die zwei aufeinanderfolgende Rahmen einschließen (als „vorheriger Rahmen“ bzw. „aktueller Rahmen“ bezeichnet, auch wenn sich die Wörter „vorheriger Rahmen“ und „aktueller Rahmen“ auf Rahmen beziehen, zwischen denen ein oder mehrere Rahmen erstellt werden sollen, wobei die Wörter in manchen Kontexten möglicherweise keine genauen Adjektive sind). In mindestens einer Ausführungsform führt der Prozessor oder ein anderer Prozessor (wie der unten in 1 beschriebene Prozessor 102) ein räumliches Upsampling (z. B. unter Verwendung eines neuronalen Netzwerks wie unten beschrieben oder ohne ein neuronales Netzwerk) des vorherigen Rahmens und des aktuellen Rahmens aus, um die Auflösung des vorherigen und des aktuellen Rahmens zu erhöhen (z. B. von 1080p auf 4K oder von 4K auf 8K oder anderweitig), obwohl in einigen Ausführungsformen kein Upsampling angewendet wird. Upsampling kann auch als Super-Sampling bezeichnet werden, und upgesampelte Rahmen können als Super-Sampling-Rahmen bezeichnet werden.
  • In mindestens einer Ausführungsform erstellt der Prozessor oder ein anderer Prozessor aus dem hochabgetasteten aktuellen Rahmen und dem hochabgetasteten vorherigen Rahmen eine erste Vielzahl von Rahmen und eine zweite Vielzahl von Rahmen, die die gleiche Auflösung aufweisen wie der hochabgetastete vorherige und aktuelle Rahmen und der hochabgetastete vorherige Rahmen (z. B. 4K oder 8K). In mindestens einer Ausführungsform. Diese Rahmen der ersten Vielzahl von Rahmen und der zweiten Vielzahl von Rahmen können als bewegungsverzerrte Farbrahmen (oder hochauflösende (HR) bewegungsverzerrte Farbrahmen oder anders) bezeichnet werden, und diese Rahmen können Pixelwerte in einem RGB- oder einem anderen Farbraum aufweisen. Es sei darauf hingewiesen, dass trotz der Bezeichnung „bewegungsverzerrt“ ein oder mehrere dieser bewegungsverzerrten Farbrahmen keine Bewegungsverzerrung aufweisen können, wie im nächsten Absatz beschrieben.
  • In mindestens einer Ausführungsform umfasst diese erste Vielzahl von Rahmen (von bewegungsverzerrten Farbrahmen): einen ersten Rahmen, der mit dem aktuellen Rahmen identisch ist oder anderweitig auf diesem basiert, dem aber jegliche Bewegung fehlt, die auf den aktuellen Rahmen angewendet wird (wobei dieser erste Rahmen, wenn er angezeigt wird, dem vorherigen Rahmen ähneln würde, da sich Objekte in einem entsprechenden angezeigten Bild an identischen oder ähnlichen Stellen befinden würden); einen zweiten Rahmen, der erstellt wird, um die Bewegung eines oder mehrerer Pixel des aktuellen Rahmens basierend auf einem oder mehreren Bewegungsvektoren darzustellen, die von der Spielmaschine ausgegeben oder anderweitig ermittelt wurden; und einen dritten Rahmen, der erstellt wird, um die Bewegung eines oder mehrerer Pixel aus dem aktuellen Rahmen basierend auf einem oder mehreren Bewegungsvektoren darzustellen, die auf eine andere Weise als der zweite Rahmen ermittelt wurden, wie beispielsweise optische Flussbewegungsvektoren, die unter Verwendung einer optischen Flussanalyse erstellt wurden, die optische Flussschaltungen oder andere optische Flusshardware des Prozessors oder eines anderen Prozessors verwenden kann. In mindestens einer Ausführungsform umfasst diese erste Vielzahl von Rahmen ebenfalls: einen ersten Rahmen, der mit dem vorherigen Rahmen identisch ist oder auf diesem basiert und bei dem keine Bewegung auf den vorherigen Rahmen angewendet wird (wobei dieser erste Rahmen, wenn er angezeigt wird, dem vorherigen Rahmen ähneln würde, da sich die Objekte in einem entsprechenden angezeigten Bild an identischen oder ähnlichen Stellen befinden würden); einem zweiten Rahmen, der erstellt wird, um die Bewegung eines oder mehrerer Pixel aus dem vorhergehenden Rahmen basierend auf einem oder mehreren Bewegungsvektoren darzustellen, die von der Spielmaschine ausgegeben oder auf andere Weise ermittelt werden; und einem dritten Rahmen, der erstellt wird, um die Bewegung eines oder mehrerer Pixel aus dem vorhergehenden Rahmen basierend auf einem oder mehreren Bewegungsvektoren darzustellen, die auf andere Weise als der zweite Rahmen ermittelt werden, wie z.B. optische Flussbewegungsvektoren, die unter Verwendung einer optischen Flussanalyse erstellt werden, die optische Flussschaltungen des Prozessors oder eines anderen Prozessors verwenden kann. In mindestens einer Ausführungsform nähern sich die Bewegungsvektoren (aus der Spielmaschine oder der optischen Flussanalyse oder anderweitig) der Bewegung vom aktuellen Rahmen oder dem vorherigen Rahmen bis zu einem Rahmen, der gerade erstellt wird (z. B. ein Rahmen zwischen dem aktuellen Rahmen und dem vorherigen Rahmen). Beispiele für eine Vielzahl von Rahmen (die als Zwischenrahmen bezeichnet werden) werden ferner im Zusammenhang mit 1 und 2 erörtert. In mindestens einer Ausführungsform, ohne Verlust der Allgemeingültigkeit und der Einfachheit halber, bezieht sich die Verwendung von „Zwischenrahmen“ (oder Variationen, wie beispielsweise „Zwischenrahmen“) auf einen der folgenden Begriffe: bewegungsverzerrte Farbrahmen, bewegungsverzerrte LR-Luma-Rahmen, gemischte Zwischenrahmen, interpolierte Rahmen und Variationen dieser Ausdrücke, und ein bestimmter Typ von Rahmen, auf den die Verwendung von „Zwischenrahmen“ zutrifft, wird aus dem Kontext ersichtlich sein.
  • In mindestens einer Ausführungsform tastet der Prozessor oder ein anderer Prozessor die bewegungsverzerrten Farbrahmen ab und konvertiert den abgetasteten bewegungsverzerrten Rahmen in einen YUV-Farbraum oder, in mindestens einer anderen Ausführungsform, konvertiert die bewegungsverzerrten Farbrahmen und konvertiert die bewegungsverzerrten Farbrahmen und tastet die Ergebnisse dieser konvertierten bewegungsverzerrten Farbrahmen ab. In mindestens einer Ausführungsform führt der Prozessor oder ein anderer Prozessor die Konvertierung und das Downsampling aus und verwendet nur einen Luma-Kanal des YUV-Farbraums, um verzerrte Luma-Rahmen mit niedrigerer Auflösung (LR) zu erstellen, wobei ein verzerrter LR-Luma-Rahmen (z. B. ein LR-Rahmen mit nur Luma-Werten aus dem YUV-Farbraum). In mindestens einer Ausführungsform führt dieser oder ein anderer Prozessor das Downsampling aus, um die Auflösung der von der Spielmaschine oder einem anderen Videoanbieter ausgegebenen Rahmen zu übereinstimmen. In mindestens einer Ausführungsform verwenden die heruntergetasteten Versionen des aktuellen Rahmens und des vorherigen Rahmens nur einen Luma-Kanal des YUV-Farbraums. In mindestens einer Ausführungsform umfassen diese verzerrten LR-Luma-Rahmen eine erste Vielzahl von Rahmen, die Rahmen umfassen, die aus dem aktuellen Rahmen erstellt oder anderweitig ermittelt wurden, und eine zweite Vielzahl von Rahmen, die Rahmen umfassen, die aus dem vorherigen Rahmen erstellt oder anderweitig ermittelt wurden, wobei jeder Rahmen dieser ersten und zweiten Vielzahl von Rahmen einem anderen Typ von Bewegungsverzerrung des jeweiligen aktuellen oder vorherigen Rahmens entspricht (z. B. keine Bewegungsverzerrung, Bewegungsverzerrung aufgrund der Spielmaschine oder anderer bereitgestellter Bewegungsvektoren und/oder Bewegungsverzerrung aufgrund von Bewegungsvektoren der optischen Flussanalyse, wie oben und anderweitig hierin diskutiert).
  • In mindestens einer Ausführungsform gibt der Prozessor oder ein anderer Prozessor diese Vielzahl von verzerrten LR Luma-Bewegungsrahmen (die oben erwähnte erste Vielzahl von Rahmen und die zweite Vielzahl von Rahmen) in ein neuronales Netzwerk ein (z. B. ein neuronales Netzwerk mit einer U-Netz-Architektur mit einer SoftMax-Schicht, in der dieses neuronale Netzwerk trainiert wird, um Überblendungsfaktoren zu erzeugen), um eine Vielzahl von Überblendungsfaktoren zu erzeugen, die angeben, wie Zwischenrahmen (z. B. die oben erwähnte Vielzahl von Rahmen, die aus aktuellen und vorherigen Rahmen erstellt wurden) zu überblenden sind. In mindestens einer Ausführungsform haben die vom neuronalen Netzwerk ausgegebenen Überblendungsfaktoren (Überblendungsfaktoren werden weiter unten detailliert besprochen) eine Auflösung, die der Auflösung der verzerrten LR-Luma-Bewegungsrahmen und/oder der Ausgabe einer Spielmaschine oder eines anderen Videoanbieters entspricht. In mindestens einer Ausführungsform weisen die Überblendungsfaktoren beispielsweise eine Auflösung von 1080p auf und es gibt einen separaten Überblendungsfaktor für jedes Pixel in einem 1080p-Bild, obwohl die Komprimierung oder andere Techniken in einigen Ausführungsformen zu einer fehlenden Eins-zu-eins-Entsprechung von Pixeln zu Überblendungsfaktoren führen können.
  • In mindestens einer Ausführungsform weist der Prozessor oder ein anderer Prozessor die von dem neuronalen Netzwerk erstellten Überblendungsfaktoren so auf, dass sie eine Auflösung aufweisen, die mit der Auflösung der bewegungsverzerrten Farbrahmen übereinstimmt (dies kann dieselbe Auflösung sein, die von einem räumlichen Upsampling-Algorithmus ausgegeben wird, wie unten beschrieben, z. B. 4K oder 8K). In mindestens einer Ausführungsform führt der Prozessor oder ein anderer Prozessor ein Upsampling eines oder mehrerer Arrays von Überblendungsfaktoren durch, indem er eine Korrespondenz zwischen den Stellen der Pixel nach der hochgesampelten Auflösung und den Überblendungsfaktoren herstellt, wobei die Korrespondenz einen einzigen Überblendungsfaktor auf mehrere Pixel anwenden kann, wie beispielsweise ein 4x4 oder 9x9 Gitter von Pixeln, oder anspruchsvollere Upsampling-Techniken verwendet werden können, wie beispielsweise die Interpolation durch den nächsten Nachbarn, Upsampling mit nicht maximaler Unterdrückung, bilineare Interpolation, Interpolation unter Verwendung von Gauß-Rekonstruktion, Upsampling mit Gauß- oder anderen Filtern, bikubische Interpolation und Upsampling unter Verwendung eines oder mehrerer neuronaler Netzwerke, die für das Upsampling von Überblendungsfaktoren trainiert wurden. Während in mindestens einer Ausführungsform ein Array von Überblendungsfaktoren dieselbe Auflösung aufweisen kann wie die Bilder, auf die die Überblendungsfaktoren angewendet werden sollen, können andere Ausführungsformen unterschiedliche Auflösungen von Arrays von Überblendungsfaktoren und Bildern aufweisen, auf die die Überblendungsfaktoren angewendet werden sollen, wenn beispielsweise auf andere Weise eine Entsprechung zwischen Pixeln und Überblendungsfaktoren hergestellt wird.
  • In mindestens einer Ausführungsform umfassen diese Überblendungsfaktoren Informationen, die für jede Pixelstelle in einem zu erstellenden Rahmen angeben, wie (z. B. durch eine gewichtete Summe von Pixelwerten) Pixelwerte an derselben Stelle in jedem der bewegungsverzerrten Farbrahmen kombiniert werden sollen. In mindestens einer Ausführungsform sind die Überblendungsfaktoren in zwei Arrays organisiert, wobei ein erstes Array Überblendungsfaktoren einschließt, die angeben, wie entsprechende Pixel von bewegungsverzerrten Farbrahmen, die aus dem aktuellen Rahmen erstellt oder anderweitig ermittelt wurden, überblendet werden sollen, und ein zweites Array Überblendungsfaktoren einschließt, die angeben, wie entsprechende Pixel von bewegungsverzerrten Farbrahmen, die aus dem vorherigen Rahmen erstellt oder anderweitig ermittelt wurden, überblendet werden sollen.
  • In mindestens einer Ausführungsform umfasst das erste Array eine Vielzahl von dreidimensionalen oder anders-dimensionalen Vektoren, wobei jede Komponente eine Gewichtung angibt, die auf einen entsprechenden Pixelwert in einem entsprechenden bewegungsverzerrten Farbrahmen anzuwenden ist, der aus dem aktuellen Rahmen erstellt oder anderweitig ermittelt wurde. In mindestens einer Ausführungsform gibt beispielsweise ein Vektor von (0,25, 0,75, 0,0), der einer Pixelstelle in einem zu erstellenden Rahmen entspricht, einen Pixelwert (z. B. Luminanz) der Pixelstelle als 0,25*p1+0,75*p2+0,0*p3 zu berechnen ist, wobei p1 einen Pixelwert eines ersten bewegungsverzerrten Farbrahmens an derselben Pixelstelle angibt, p2 einen Pixelwert eines zweiten bewegungsverzerrten Farbrahmens an derselben Pixelstelle angibt und p3 einen Pixelwert eines dritten bewegungsverzerrten Farbrahmens an derselben Pixelstelle angibt.
  • In mindestens einer Ausführungsform umfasst das zweite Array eine Vielzahl von dreidimensionalen oder anders-dimensionalen Vektoren, wobei jede Komponente eine Gewichtung angibt, die auf einen entsprechenden Pixelwert in einem entsprechenden bewegungsverzerrten Farbrahmen anzuwenden ist, der aus dem vorherigen Rahmen erstellt oder anderweitig ermittelt wurde. In mindestens einer Ausführungsform gibt beispielsweise ein Vektor von (0,31, 0,41, 0,28), der einer Pixelstelle in einem zu erstellenden Rahmen entspricht, einen Pixelwert (z. B. Luminanz) der Pixelstelle als 0,31*p1+0,41*p2+0,28*p3 zu berechnen ist, wobei p1 einen Pixelwert eines ersten bewegungsverzerrten Farbrahmens an derselben Pixelstelle angibt, p2 einen Pixelwert eines zweiten bewegungsverzerrten Farbrahmens an derselben Pixelstelle angibt und p3 einen Pixelwert eines dritten bewegungsverzerrten Farbrahmens an derselben Pixelstelle angibt. In mindestens einer Ausführungsform handelt es sich bei den Pixelwerten dieses Beispiels um RGB-Vektoren, die Komponenten umfassen, die einen Wert für Rot, einen Wert für Grün und einen Wert für Blau angeben, und die Hinzufügung erfolgt durch elementweise Addition (z. B. indem entsprechende Rotwerte hinzugefügt werden, entsprechende Grünwerte hinzugefügt werden und entsprechende Blauwerte hinzugefügt werden). Während die Beispiele zeigen, dass die Elemente jedes Vektors zu 1,0 hinzugefügt werden (z. B. aufgrund der SoftMax-Schicht in dem neuronalen Netzwerk), sind die Elemente nicht notwendigerweise normalisiert und können in einigen Ausführungsformen zu Werten hinzugefügt werden, die von 1 abweichen (z. B. größer oder kleiner als 1).
  • In mindestens einer Ausführungsform kann ein einzelnes Array anstelle von zwei Arrays von Vektoren, bei denen jedes Array einem entsprechenden Untersatz von bewegungsverzerrten Farbrahmen entspricht, größere Vektoren einschließen, wie beispielsweise Vektoren, bei denen jede Komponente einem entsprechenden bewegungsverzerrten Farbrahmen entspricht und alle diese bewegungsverzerrten Farbrahmen zusammen ein entsprechendes Element in jedem Vektor aufweisen. In mindestens einer Ausführungsform, zum Beispiel in Ausführungsformen, in denen sechs bewegungsverzerrte Farbrahmen erstellt werden, kann ein Array 6-dimensionale Vektoren umfassen, und in Fortsetzung der Beispiele in den vorstehenden Absätzen kann ein Vektor (0,31, 0,41, 0,28, 0,25, 0,75, 0,0) sein, wobei die Entsprechungen wie oben beschrieben sind, oder (0,155, 0,205, 0,14, 0,125, 0,375, 0,0), der Komponenten aufweist, die sich zu eins summieren. In einer solchen Ausführungsform können die hierin beschriebenen Operationen entsprechend eingerichtet werden. Auf die Überblendungsfaktoren wird weiter unten eingegangen, zum Beispiel in Verbindung mit 1.
  • In mindestens einer Ausführungsform verwendet der Prozessor oder ein anderer Prozessor vom neuronalen Netzwerk bereitgestellte Überblendungsfaktoren, um eine elementweise Summe von bewegungsverzerrten Farbrahmen nach Überblendungsfaktoren zu erstellen. In mindestens einer Ausführungsform kombiniert der Prozessor oder ein anderer Prozessor Pixel einer gleichen Stelle von entsprechenden bewegungsverzerrten Farbrahmen, wie oben beschrieben. Beispielsweise verwendet der Prozessor oder ein anderer Prozessor für jedes Pixel an einer Pixelstelle Überblendungsfaktoren, die dieser Pixelstelle entsprechen, um die Pixelwerte der entsprechenden bewegungsverzerrten Farbrahmen an dieser Pixelstelle zu kombinieren (z. B. Pixelwerte hinzuzufügen), wie oben beschrieben. In mindestens einer Ausführungsform, wie beispielsweise in einer Ausführungsform, die zwei Arrays von Vektoren verwendet oder ein einziges Array von Vektoren verwendet, wie oben beschrieben, erstellt der Prozessor oder ein anderer Prozessor zwei gemischte Zwischenrahmen, einen aus bewegungsverzerrten Farbrahmen, die aus dem aktuellen Rahmen erstellt oder anderweitig ermittelt wurden, und einen weiteren aus bewegungsverzerrten Farbrahmen, die aus dem vorherigen Rahmen erstellt oder anderweitig ermittelt wurden. In mindestens einer Ausführungsform erstellt der besagte Prozessor oder ein anderer Prozessor einen einzelnen überblendeten, bewegungsverzerrten Farbrahmen, der ein endgültiger Ausgaberahmen sein kann, der als interpolierter Rahmen bezeichnet werden kann.
  • In mindestens einer Ausführungsform kann der Prozessor oder der andere Prozessor, wie oben erwähnt, zwei weitere gemischte Zwischenrahmen erstellen und in einer solchen Ausführungsform mischt der Prozessor und der andere Prozessor die zwei oder mehr gemischten Zwischenrahmen, um einen interpolierten Rahmen zu erstellen. In mindestens einer Ausführungsform verwendet der Prozessor oder ein anderer Prozessor kein neuronales Netzwerk, um die Überblendung von Zwischenrahmen auszuführen, aber in einigen Ausführungsformen kann ein neuronales Netzwerk verwendet werden, das für die Überblendung von Zwischenrahmen trainiert wurde. In mindestens einer Ausführungsform führt der Prozessor oder ein anderer Prozessor die Mittelung der entsprechenden Pixelwerte von den entsprechenden (z. B. gleichen) Pixelstellen jedes der gemischten Zwischenrahmen aus. In mindestens einer Ausführungsform wird das Ergebnis der Überblendung von Zwischenrahmen als endgültiger Ausgaberahmen verwendet (z. B. zum Hinzufügen zu einem Anzeigepuffer oder für andere Zwecke), obwohl in einigen Ausführungsformen eine zusätzliche Bildverarbeitung ausgeführt werden kann, bevor das Ergebnis als endgültige Ausgabe verwendet wird.
  • In mindestens einer Ausführungsform wiederholen sich Operationen wie oben beschrieben, wobei der aktuelle Rahmen zum vorherigen Rahmen wird und ein neuer aktueller Rahmen von einer Spielmaschine oder einem anderen Videoanbieter ermittelt wird.
  • In mindestens einer Ausführungsform sind die hierin beschriebenen Systeme, Verfahren, Techniken und Operationen in Bezug auf die Interpolation von Rahmen, die neuronale Netzwerke verwenden, ohne ein neuronales Netzwerk auszuführen. In mindestens einer Ausführungsform kann beispielsweise eine Operation zur Rahmeninterpolation, wie sie hierin beschrieben ist, ausgeführt werden, indem zunächst eine oder mehrere Matrix- oder Tensoroperationen (z. B. Multiplikation, Addition, Faltung usw.) ausgeführt werden, um Zwischenrahmen zu erstellen, und anschließend eine Rahmeninterpolation unter Verwendung dieser Zwischenrahmen durchgeführt wird. In mindestens einer Ausführungsform werden nach oder während der Interpolation von Zwischenrahmen zusätzliche Operationen ausgeführt, einschließlich, aber nicht beschränkt auf zusätzliche Matrix- oder Tensoroperationen.
  • 1 veranschaulicht ein Beispieldiagramm 100, in dem Überblendungsfaktoren für Rahmenbewegungen nach mindestens einer Ausführungsform unter Verwendung eines neuronalen Netzwerks erstellt werden. In mindestens einer Ausführungsform führt ein Prozessor 102 eine oder mehrere Anweisungen aus, um ein neuronales Netzwerk 110 zu verwenden, um Überblendungsfaktoren für die Bewegung von Rahmen zu erstellen, und zwar unter Verwendung von Systemen und Verfahren, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform erstellt der Prozessor 102 mit Hilfe des neuronalen Netzwerks 110 Überblendungsfaktoren für Rahmenbewegungen, die bei der Rahmeninterpolation verwendet werden, wie hierin mindestens in Verbindung mit 2 und 3 beschrieben. In mindestens einer Ausführungsform erstellt der Prozessor 102 mit Hilfe des neuronalen Netzwerks 110 Überblendungsfaktoren, die in der Rahmenbewegung verwendet werden, um eine Deep-Learning-basierte Rahmeninterpolation (z. B. Deep-Learning Frame Generation (DLFG)) auszuführen, wie hierin mindestens in Verbindung mit 4 bis 10 beschrieben. In mindestens einer Ausführungsform umfassen die Eingaben in das neuronale Netzwerk 110 einen oder mehrere Rahmen (z. B. einen vorherigen Rahmen 104 und/oder einen aktuellen Rahmen 106) und zusätzliche Rahmeninformationen, einschließlich, aber nicht beschränkt auf, Tiefeninformationen von Pixeln des vorherigen Rahmens 104 und/oder des aktuellen Rahmens 106, Bewegungsinformationen von Pixeln des vorherigen Rahmens 104 und/oder des aktuellen Rahmens 106, die Stelle und/oder Orientierung der Kamera und/oder andere derartige Informationen, wie sie hierin mindestens in Verbindung mit 1 und 2 beschrieben sind. In mindestens einer Ausführungsform werden die Ausgaben des neuronalen Netzwerks 110 Überblendungsfaktoren des einen oder der mehreren dazwischen liegenden Rahmen.
  • In mindestens einer Ausführungsform ist der Prozessor 102 ein Prozessor, wie er im Folgenden beschrieben wird. In mindestens einer Ausführungsform ist der Prozessor 102 beispielsweise eine zentrale Verarbeitungseinheit (central processing unit - CPU), eine grafische Verarbeitungseinheit (graphics processing unit - GPU), eine Parallelverarbeitungseinheit (parallel processing unit - PPU), eine allgemeine grafische Verarbeitungseinheit (general purpose graphics processing unit - GPGPU), ein Rechencluster und/oder eine Kombination aus diesen und/oder anderen derartigen Prozessoren. In mindestens einer Ausführungsform ist der Prozessor 102 Teil eines Computersystems, wie es hierin beschrieben ist (z. B. wie es hierin zumindest in Verbindung mit 27-30 beschrieben ist). In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, werden ein oder mehrere zusätzliche Prozessoren verwendet, um eine oder mehrere Anweisungen auszuführen oder anderweitig auszuführen, um das neuronale Netzwerk 110 zu verwenden, um Überblendungsfaktoren zu erstellen, die bei der Bewegung von Rahmen verwendet werden, wobei Systeme und Verfahren verwendet werden, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, ist der Prozessor 102 einer von mehreren Prozessoren, wie sie hierin beschrieben sind.
  • In mindestens einer Ausführungsform ist das neuronale Netzwerk 110 ein neuronales Netzwerk, wie es hierin mindestens in Verbindung mit 24 beschrieben ist. In mindestens einer Ausführungsform wird das neuronale Netzwerk 110 als neuronales Modell bezeichnet. In mindestens einer Ausführungsform wird das neuronale Netzwerk 110 als ein Lernmodell bezeichnet. In mindestens einer Ausführungsform wird das neuronale Netzwerk 110 als Inferenzmodell bezeichnet. In mindestens einer Ausführungsform ist das neuronale Netzwerk 110 eines aus einer Vielzahl von neuronalen Netzwerken, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform ist das neuronale Netzwerk ein neuronales Netzwerk wie das neuronale Netzwerk 212, das hierin mindestens in Verbindung mit 2 beschrieben ist.
  • In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, werden Trainingsdaten verwendet, um ein untrainiertes neuronales Netzwerk zu trainieren, um ein trainiertes neuronales Netzwerk zu erstellen, wobei Systeme und Verfahren wie die hierin beschriebenen verwendet werden (z. B. wie hierin zumindest in Verbindung mit dem neuronalen Netzwerk 212 beschrieben, das hierin zumindest in Verbindung mit 2 beschrieben ist). In mindestens einer Ausführungsform handelt es sich bei einem untrainierten neuronalen Netzwerk um ein neuronales Netzwerk, das teilweise trainiert wurde und für das ein zusätzliches Training durchgeführt werden soll. In mindestens einer Ausführungsform handelt es sich bei den Trainingsdaten um einen Trainingsdatensatz wie den Trainingsdatensatz 2402, der hierin mindestens in Verbindung mit 24 beschrieben wird. In mindestens einer Ausführungsform ist ein untrainiertes neuronales Netzwerk ein untrainiertes neuronales Netzwerk wie das untrainierte neuronale Netzwerk 2406, das hierin mindestens in Verbindung mit 24 beschrieben ist. In mindestens einer Ausführungsform handelt es sich bei einem trainierten neuronalen Netzwerk um ein trainiertes neuronales Netzwerk, wie beispielsweise das trainierte neuronale Netzwerk 2408, das hierin mindestens in Verbindung mit 24 beschrieben ist. In mindestens einer Ausführungsform wird ein neuronales Netzwerk, wie die hierin beschriebenen, unter Verwendung des überwachten Lernens, des stark überwachten Lernens oder des schwach überwachten Lernens trainiert, indem zufällig veränderte Variationen von Eingabedaten erstellt werden.
  • In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, wird ein neuronales Netzwerk, wie die hierin beschriebenen, unter Verwendung eines oder mehrerer Netzwerkparameter erstellt. In mindestens einer Ausführungsform sind Netzwerkparameter Parameter, die dazu verwendet werden, die Struktur und die Leistungseigenschaften eines neuronalen Netzwerks zu bestimmen. In mindestens einer Ausführungsform schließen die Netzwerkparameter Gewichte und/oder andere Parameter ein, wie beispielsweise die Lernraten eines neuronalen Netzwerks, lokale Iterationen eines neuronalen Netzwerks, Aggregationsgewichte eines neuronalen Netzwerks, eine Anzahl von Neuronen eines neuronalen Netzwerks usw.
  • In mindestens einer Ausführungsform empfängt der Prozessor 102 einen vorherigen Rahmen 104 (der auch als historischer Rahmen oder historischer Rahmen oder auf andere Weise bezeichnet werden kann), einen aktuellen Rahmen 106 und zusätzliche Rahmeninformationen 108. Obwohl das Wort „Rahmen“ verwendet wird, können auch andere Begriffe verwendet werden, wie beispielsweise Videorahmen, Spielrahmen, Bildrahmen, Bild, Abbildung, Rahmendaten, Bilddaten und ähnliches. In mindestens einer Ausführungsform ist der vorherige Rahmen 104 ein vorheriger Rahmen eines Satzes von Rahmen von Video- und/oder Bilddaten. In mindestens einer Ausführungsform handelt es sich bei dem vorherigen Rahmen 104 beispielsweise um den letzten vorherigen Rahmen, der von einer Grafikverarbeitungseinheit (GPU), einer Multimedia-Einheit, einer Spielkonsole, einer Videoerfassungsvorrichtung, einer Kamera eines autonomen Fahrzeugs, einem Fernsehgerät und/oder einer anderen solchen Vorrichtung gerendert wurde. In mindestens einer Ausführungsform ist der vorherige Rahmen 104 der letzte vorherige Rahmen (z. B. vor dem aktuellen Rahmen), der mit einer Grafikmaschine, einer Spielmaschine, einer Multimediamaschine und/oder einer anderen Renderingmaschine verwendet wurde. In mindestens einer Ausführungsform ist der vorherige Rahmen 104 der jüngste vorherige Rahmen, der von einem neuronalen Netzwerk und/oder einem anderen auf künstlicher Intelligenz und/oder Deep-Learning basierenden System simuliert wird. In mindestens einer Ausführungsform ist der vorherige Rahmen 104 nicht der jüngste vorherige Rahmen, sondern ein älterer Rahmen. In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, schließt der vorherige Rahmen 104 eine Vielzahl von vorherigen Rahmen ein. In mindestens einer Ausführungsform wurde der vorherige Rahmen 104 auf einer Anzeigevorrichtung, wie sie hierin beschrieben ist, angezeigt oder gerendert (z. B. auf einem Bildschirm oder Monitor einer Rechenvorrichtung). In mindestens einer Ausführungsform wurde der vorherige Rahmen 104 nicht auf einer Anzeigevorrichtung, wie sie hierin beschrieben ist, angezeigt oder wiedergegeben. In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, schließt der vorherige Rahmen 104 eine Kombination aus einem oder mehreren Typen von Daten ein, einschließlich, aber nicht beschränkt auf visuelle Daten (z. B. Pixel), nicht-visuelle Daten (z. B. Geräusche), physikalische Daten (z. B. Bewegungen und/oder Kräfte von Objekten des aktuellen Rahmens 104), haptische Daten (z. B. Kraftrückmeldungen von Objekten des physischen Rahmens 104) und/oder andere solche Daten. In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, wird der vorherige Rahmen 104 von einem oder mehreren neuronalen Netzwerken erstellt, die sich vom neuronalen Netzwerk 110 unterscheiden.
  • In mindestens einer Ausführungsform ist der aktuelle Rahmen 106 ein aktueller Rahmen eines Satzes von Rahmen von Video- und/oder Bilddaten. In mindestens einer Ausführungsform handelt es sich bei dem aktuellen Rahmen 106 beispielsweise um den letzten aktuellen Rahmen, der von einer Grafikverarbeitungseinheit (GPU), einer Multimedia-Einheit, einer Spielkonsole, einer Videoerfassungsvorrichtung, einer Kamera eines autonomen Vehikels, einem Fernsehgerät und/oder einem anderen derartigen Gerät gerendert wurde. In mindestens einer Ausführungsform werden der vorherige Rahmen 104 und der aktuelle Rahmen 106 nacheinander von einem System (z. B. einer Spielmaschine) gerendert, wie unten beschrieben. In mindestens einer Ausführungsform ist der aktuelle Rahmen 106 der letzte aktuelle Rahmen, der mit einer Grafikmaschine, einer Spielmaschine, einer Multimediamaschine und/oder einer anderen Renderingmaschine verwendet wurde. In mindestens einer Ausführungsform ist der aktuelle Rahmen 106 ein aktueller Rahmen, der von einem neuronalen Netzwerk und/oder einem anderen auf künstlicher Intelligenz und/oder Deep Learning basierenden System erstellt oder simuliert wird. In mindestens einer Ausführungsform ist der aktuelle Rahmen 106 nicht der jüngste aktuelle Rahmen, sondern ein älterer Rahmen. In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, schließt der aktuelle Rahmen 106 eine Vielzahl von aktuellen Rahmen ein. In mindestens einer Ausführungsform wurde der aktuelle Rahmen 106 auf einer Anzeigevorrichtung, wie sie hierin beschrieben ist, angezeigt oder gerendert (z. B. auf einem Bildschirm oder Monitor einer Rechenvorrichtung). In mindestens einer Ausführungsform wurde der aktuelle Rahmen 106 nicht auf einer Anzeigevorrichtung, wie sie hierin beschrieben ist, angezeigt oder wiedergegeben. In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, schließt der aktuelle Rahmen 106 eine Kombination aus einem oder mehreren Typen von Daten ein, einschließlich, aber nicht beschränkt auf visuelle Daten (z. B. Pixel), nicht-visuelle Daten (z. B. Geräusche), physikalische Daten (z. B. Bewegungen und/oder Kräfte von Objekten des aktuellen Rahmens 106), haptische Daten (z. B. Kraftrückmeldungen von Objekten des aktuellen Rahmens 106) und/oder andere solche Daten. In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, wird der aktuelle Rahmen 106 von einem oder mehreren neuronalen Netzwerken erstellt, die sich vom neuronalen Netzwerk 110 unterscheiden.
  • In mindestens einer Ausführungsform stammt der vorherige Rahmen 104 aus einer Zeit (z. B. in einem Videostream), die vor dem aktuellen Rahmen 106 liegt (z. B. aus einer früheren Zeit). In mindestens einer Ausführungsform stammt der vorherige Rahmen 104 aus einer Zeit (z. B. in einem Videostream), die nach dem aktuellen Rahmen 106 liegt (z. B. aus einer späteren Zeit). In mindestens einer Ausführungsform stammt der vorherige Rahmen 104 aus einer Zeit (z. B. in einem Videostream), die mit dem aktuellen Rahmen 106 identisch ist. In mindestens einer Ausführungsform stammen der vorherige Rahmen 104 und der aktuelle Rahmen von einer einzigen gemeinsamen Vorrichtung, wie sie hierin beschrieben ist. In mindestens einer Ausführungsform stammt der vorherige Rahmen 104 von einer ersten Vorrichtung, wie sie hierin beschrieben ist, und der aktuelle Rahmen 106 von einer zweiten Vorrichtung, wie sie hierin beschrieben ist. In mindestens einer Ausführungsform schließen der vorherige Rahmen 104 und der aktuelle Rahmen 106 identische Typen von Inhalten ein (z. B. stammen beide von einer Spielmaschine). In mindestens einer Ausführungsform schließen der vorherige Rahmen 104 und der aktuelle Rahmen 106 einen oder mehrere unterschiedliche Typen von Inhalten ein (z. B. der vorherige Rahmen 104 stammt von einer Spielmaschine und der aktuelle Rahmen 106 von einem autonomen Fahrzeug). Wie hierin verwendet, wird der vorherige Rahmen 104 auch als erster Rahmen und der aktuelle Rahmen 106 auch als zweiter Rahmen bezeichnet.
  • In mindestens einer Ausführungsform handelt es sich bei den zusätzlichen Rahmeninformationen 108 um zusätzliche Daten, die dem vorherigen Rahmen 104 und/oder dem aktuellen Rahmen 106 zugeordnet sind. In mindestens einer Ausführungsform schließen zusätzliche Rahmeninformationen 108 Farbdaten (z. B. Farbe von Objekten und/oder Pixeln eines Rahmens), Tiefendaten (z. B. Tiefe von Objekten und/oder Pixeln eines Rahmens), Bewegungsdaten (z. B. Bewegung von Objekten und/oder Pixeln eines Rahmens), Schattenbewegungsdaten (z. B. Bewegung von Schatten von Objekten und/oder Pixeln eines Rahmens), Kameradaten (z. B. Position und/oder Orientierung einer oder mehrerer Kameras, die zum Erstellen eines Rahmens verwendet werden), Normaldaten (z. B. Position und/oder Orientierung von Oberflächennormalen von Objekten und/oder Pixeln eines Rahmens), Beleuchtungsdaten (z. B. Position, Orientierung und/oder Farbe einer oder mehrerer Beleuchtungsquellen eines Rahmens), Reflexionsdaten (z. B. Beleuchtungsreflexionen von einer Oberfläche eines Objekts eines Rahmens), Kaustikdaten (z. B. Beleuchtungsreflexionen von einer diffusen Oberfläche eines Objekts eines Rahmens), Albedodaten (z. B. die zugrunde liegende Farbe von Objekten und/oder Pixeln eines Rahmens) und/oder andere derartige Informationen ein. In mindestens einer Ausführungsform sind ein oder mehrere Elemente der zusätzlichen Rahmeninformationen 108 als Teil des vorherigen Rahmens 104 und/oder des vorherigen Rahmens 106 eingeschlossen.
  • In mindestens einer Ausführungsform empfängt der Prozessor 102 den vorherigen Rahmen 104, den aktuellen Rahmen 106 und/oder zusätzliche Rahmeninformationen 108. In mindestens einer Ausführungsform werden der vorherige Rahmen 104 und/oder der aktuelle Rahmen 106 durch räumliches Upsampling erstellt (z. B. durch räumliches Super-Sampling wie z. B. DLSS, XeSS (oder XeSS) von Intel®, FidelityFX™ Super Resolution von AMD@, usw.). In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, speichert der Prozessor den vorherigen Rahmen 104 und/oder einige oder alle zusätzlichen Rahmeninformationen 108 aus einer oder mehreren früheren Iterationen von Systemen und Verfahren wie den hierin beschriebenen, um ein neuronales Netzwerk wie das neuronale Netzwerk 110 zu verwenden, um Überblendungsfaktoren der Rahmenbewegung zu erstellen, die in der Rahmeninterpolation verwendet werden, wie hierin mindestens in Verbindung mit 2 und 3 beschrieben. In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, speichert der Prozessor den vorherigen Rahmen 104 und/oder einige oder alle zusätzlichen Rahmeninformationen 108 aus einer oder mehreren früheren Iterationen von Systemen und Verfahren wie den hierin beschriebenen, um ein neuronales Netzwerk wie das neuronale Netzwerk 110 zu verwenden, um Überblendungsfaktoren für Rahmenbewegungen zu erstellen, die in DLFG verwendet werden, wie hierin mindestens in Verbindung mit 4 bis 10 beschrieben. In mindestens einer Ausführungsform werden der vorherige Rahmen 104 und/oder der aktuelle Rahmen 106 von einem neuronalen Netzwerk mit Deep-Learning-Supersampling empfangen, wie sie hierin mindestens in Verbindung mit 65 bis 69 beschrieben sind. In mindestens einer Ausführungsform findet das räumliche Upsampling vor DLFG statt (z. B. verwendet DLFG die hochgesampelten Rahmen). In mindestens einer Ausführungsform erfolgt das räumliche Upsampling nach DLFG (z. B. verwendet das Upsampling interpolierte Rahmen von DLFG). In mindestens einer Ausführungsform finden räumliches Upsampling und DLFG teilweise und/oder vollständig gleichzeitig statt. In mindestens einer Ausführungsform basiert die Bestimmung, ob das räumliche Upsampling vor DLFG oder nach DLFG erfolgt, mindestens teilweise auf dem Inhalt des vorherigen Rahmens 104 und/oder des aktuellen Rahmens 106.
  • In mindestens einer Ausführungsform verarbeitet der Prozessor 102 die Rahmen 126 vor, um einen oder mehrere vorverarbeitete Rahmen zu erstellen (z. B. führt er eine Konvertierung und ein Downsampling aus und verwendet nur einen Luma-Kanal des YUV-Farbraums, um niedriger aufgelöste (LR) bewegungsverzerrte Rahmen zu erstellen), wie oben beschrieben. In mindestens einer Ausführungsform werden vorverarbeitete Rahmen 128 (z. B. konvertierte und heruntergerechnete Rahmen) als Eingabe für das neuronale Netzwerk 110 bereitgestellt, und das neuronale Netzwerk verwendet die vorverarbeiteten Rahmen, um Überblendungsfaktoren 112 zu erstellen, um Zwischenrahmen 116 zu überblenden , wie hierin beschrieben. In mindestens einer Ausführungsform verwendet das neuronale Netzwerk 110 vorverarbeitete Rahmen 128, um einen oder mehrere Überblendungsfaktoren 112 zu erstellen, indem es Techniken, Systeme und Verfahren verwendet, wie sie hierin beschrieben sind.
  • In mindestens einer Ausführungsform gibt das neuronale Netzwerk 110 Überblendungsfaktoren 114 aus, die zumindest teilweise auf einem oder mehreren Überblendungsmodellen basieren, wie hierin beschrieben. In mindestens einer Ausführungsform gibt das neuronale Netzwerk 110 Überblendungsfaktoren 114 basierend auf einem Überblendungsmodell aus. In mindestens einer Ausführungsform gibt das neuronale Netzwerk 110 einen oder mehrere Überblendungsfaktoren 114 für jedes entsprechende Pixel des vorherigen Rahmens 104 und/oder des aktuellen Rahmens 106 aus. In mindestens einer Ausführungsform gibt das neuronale Netzwerk 110 einen oder mehrere Überblendungsfaktoren 114 für jedes entsprechende Pixel eines oder mehrerer vorverarbeiteter Rahmen 128 aus (z. B. die Eingaben in das neuronale Netzwerk 110). In mindestens einer Ausführungsform gibt das neuronale Netzwerk 110 zum Beispiel sechs Überblendungsfaktoren 114 für jedes entsprechende Pixel der vorverarbeiteten Rahmen 128 aus. In mindestens einer Ausführungsform gibt das neuronale Netzwerk 110 beispielsweise zwei Sätze von drei Überblendungsfaktoren 114 für jedes entsprechende Pixel der vorverarbeiteten Rahmen 128 aus, wie hierin beschrieben.
  • In mindestens einer Ausführungsform erstellt das neuronale Netzwerk 110 einen oder mehrere Überblendungsfaktoren 112, um Zwischenrahmen 116 mindestens teilweise auf dem vorhergehenden Rahmen 104 und dem aktuellen Rahmen 106 zu überblenden, indem es Systeme und Verfahren verwendet, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform, zum Beispiel, wenn der vorherige Rahmen 104 bei einer 10,0-Sekunden-Marke und der aktuelle Rahmen 106 bei einer 10,1-Sekunden-Marke liegt, erstellt das neuronale Netzwerk 110 einen oder mehrere Überblendungsfaktoren 112, um Zwischenrahmen 116 zu überblenden, die verwendet werden, um einen oder mehrere Zwischenrahmen bei einer 10,05-Sekunden-Marke (z. B. auf halbem Weg zwischen dem vorherigen Rahmen 104 und dem aktuellen Rahmen 106) zu erstellen. In mindestens einer Ausführungsform und wie hierin beschrieben, erstellt das neuronale Netzwerk 110 einen oder mehrere Überblendungsfaktoren 112, um Zwischenrahmen 116 zu überblenden, die verwendet werden, um einen oder mehrere Zwischenrahmen zu einer Vielzahl von Zeiten zwischen dem vorherigen Rahmen 104 und dem aktuellen Rahmen 106 (z. B. zu 10,01 Sekunden, zu 10,02 Sekunden usw.) zu erzeugen. In mindestens einer Ausführungsform veranlasst das neuronale Netzwerk 110 die Erstellung eines oder mehrerer Zwischenrahmen und/oder erzeugt einen oder mehrere Überblendungsfaktoren 112, indem es Elemente des aktuellen Rahmens 106 auf einen oder mehrere Zwischenrahmen projiziert (z. B. Bewegung, Tiefe, Farbe und/oder andere Elemente, wie die hierin beschriebenen), indem es Elemente des vorherigen Rahmens 104 auf einen oder mehrere Zwischenrahmen projiziert (z. B. Bewegung, Tiefe, Farbe und/oder andere Elemente, wie die hierin beschriebenen) und indem es diese Elemente unter Verwendung von Systemen und Verfahren, wie den hierin beschriebenen, überblendet.
  • In mindestens einer Ausführungsform erstellt das neuronale Netzwerk 110 einen oder mehrere Überblendungsfaktoren 112, die mindestens teilweise auf einem oder mehreren Bewegungstypen basieren, wie sie hierin beschrieben sind (z. B. aufgrund von Bewegungsvektoren, aufgrund von optischem Strömen, aufgrund von Kamerabewegungen, statischen Bewegungen usw.). In mindestens einer Ausführungsform erstellt das neuronale Netzwerk 110 einen oder mehrere Überblendungsfaktoren 112 basierend, mindestens teilweise, auf Bewegungsinformationen von Pixeln und/oder Objekten des vorherigen Rahmens 104 und/oder des aktuellen Rahmens 106. In mindestens einer Ausführungsform erstellt das neuronale Netzwerk 110 beispielsweise einen oder mehrere Überblendungsfaktoren 112 basierend mindestens teilweise auf einem Satz von Bewegungsvektoren, die den Pixeln des vorherigen Rahmens 104, des aktuellen Rahmens 106 und/oder einer Kombination aus dem vorherigen Rahmen 104 und dem aktuellen Rahmen 106 entsprechen. In mindestens einer Ausführungsform erstellt das neuronale Netzwerk 110 einen oder mehrere Überblendungsfaktoren 112 unter Verwendung von Systemen und Verfahren, wie sie hierin mindestens in Verbindung mit 2 und 3 beschrieben sind. In mindestens einer Ausführungsform erstellt das neuronale Netzwerk 110 einen oder mehrere Überblendungsfaktoren 112 unter Verwendung von Systemen und Verfahren, wie sie hierin zumindest in Verbindung mit 4 bis 22 beschrieben sind. In mindestens einer in 1 nicht veranschaulichten Ausführungsform kann ein neuronales Netzwerk, das einen oder mehrere Überblendungsfaktoren 112 erstellt, von dem neuronalen Netzwerk 110 verschieden sein, sodass das neuronale Netzwerk 110 beispielsweise einen oder mehrere Überblendungsfaktoren empfängt, die von einem oder mehreren anderen, in 1 nicht veranschaulichten neuronalen Netzwerken erstellt wurden.
  • In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, schließen zusätzliche Rahmeninformationen 108 Konfidenzinformationen der Daten im vorherigen Rahmen 104, im aktuellen Rahmen 106 und/oder zusätzliche Rahmeninformationen 108 ein. In mindestens einer Ausführungsform schließen die zusätzlichen Rahmeninformationen 108 beispielsweise eine oder mehrere Metriken für die Bewegung von Objekten im aktuellen Rahmen 106 ein, sodass beispielsweise die für den aktuellen Rahmen 106 empfangenen Bewegungsvektoren als vollkommen zuverlässig (z. B. mit höchster Konfidenz), als sehr zuverlässig (z. B. mit hoher Konfidenz), als weniger zuverlässig (z. B. mit geringerer Konfidenz) oder als unbrauchbar (z. B. mit keiner Konfidenz) eingestuft werden.
  • In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, bewirkt das neuronale Netzwerk 110, dass Vertrauensinformationen erstellt werden, wenn das neuronale Netzwerk 110 einen oder mehrere Überblendungsfaktoren 112 erstellt. In mindestens einer Ausführungsform basieren die vom neuronalen Netzwerk 110 erstellten Vertrauensinformationen mindestens teilweise auf den Vertrauensinformationen, die in den zusätzlichen Rahmeninformationen 108 eingeschlossen sind, wie hierin beschrieben. In mindestens einer Ausführungsform ändert das neuronale Netzwerk 110 die in den zusätzlichen Rahmeninformationen 108 eingeschlossenen Vertrauensinformationen, basierend mindestens teilweise auf der Erstellung eines oder mehrerer Überblendungsfaktoren 112. In mindestens einer Ausführungsform sorgt das neuronale Netzwerk 110 dafür, dass Vertrauensinformationen erstellt werden, indem es Systeme und Verfahren verwendet, wie sie hierin mindestens in Verbindung mit 2 und 3 beschrieben sind. In mindestens einer Ausführungsform sorgt das neuronale Netzwerk 110 dafür, dass Vertrauensinformationen erstellt werden, indem es Systeme und Verfahren verwendet, wie sie hierin beschrieben sind.
  • In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, sorgt das neuronale Netzwerk 110 dafür, dass ein oder mehrere zusätzliche Rahmen erstellt werden, indem es Systeme und Verfahren verwendet, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform werden ein oder mehrere zusätzliche Rahmen erstellt, die mindestens zum Teil auf zusätzlichen Rahmeninformationen 108 basieren, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform schließen ein oder mehrere zusätzliche Rahmen beispielsweise Farbdaten, Tiefendaten, Bewegungsdaten, Schattenbewegungsdaten, normale Daten, Beleuchtungsdaten, Reflexionsdaten, Kaustikdaten, Albedodaten und/oder andere derartige Daten ein. In mindestens einer Ausführungsform werden neben den zusätzlichen Rahmeninformationen 108 auch ein oder mehrere zusätzliche Rahmen verwendet. In mindestens einer Ausführungsform werden ein oder mehrere zusätzliche Rahmen als Ersatz für die zusätzlichen Rahmeninformationen 108 verwendet. In mindestens einer Ausführungsform können ein oder mehrere zusätzliche Rahmen zusätzliche Rahmeninformationen 108 verbessern (z. B. durch Bereitstellen von Filtern, Überblendungsfaktoren, Skalaren und/oder zusätzlichen Rahmeninformationen).
  • In mindestens einer Ausführungsform erstellt das neuronale Netzwerk 110 einen oder mehrere zusätzliche Rahmen, um einen oder mehrere Zwischenrahmen zu verbessern. In mindestens einer Ausführungsform sind ein oder mehrere zusätzliche Rahmen zur Verbesserung eines oder mehrerer Zwischenrahmen Restrahmen. In mindestens einer Ausführungsform schließt ein zusätzlicher Rahmen beispielsweise ein oder mehrere Pixel ein, die das Ergebnis der Überblendung verbessern (z. B. entweder Bewegungsüberblendung, visuelle Überblendung oder eine Kombination dieser und/oder anderer Typen, wie die hierin beschriebenen). In einem solchen Beispiel können die Pixel eines zusätzlichen Rahmens weiß sein (z. B. um ein visuelles Überblendungsergebnis aufzuhellen), sie können schwarz sein (z. B. um ein visuelles Überblendungsergebnis abzudunkeln), sie können grau sein (z. B. um ein Überblendungsergebnis zu normalisieren), sie können Filter einschließen (z. B. einen Kantenverbesserungsfilter und/oder einen anderen solchen Filter) oder sie können andere solche Informationen einschließen. In einem solchen Beispiel schließen die Pixel eines zusätzlichen Rahmens auch skalare Werte ein, um ein oder mehrere Bewegungsergebnisse zu verbessern, zu entschärfen, zu normalisieren und/oder zu filtern, wie hierin beschrieben. In mindestens einer Ausführungsform schließen ein oder mehrere zusätzliche Rahmen Daten ein, die einige oder alle Daten von einem oder mehreren Zwischenrahmen ersetzen. In mindestens einer Ausführungsform schließen beispielsweise einige oder alle von einem oder mehreren Zwischenrahmen beschädigte Daten ein, und in einem solchen Beispiel kann einer von einem oder mehreren zusätzlichen Rahmen vollständige und/oder teilweise Ersatzdaten einschließen, die vom neuronalen Netzwerk 110 als Ergebnis der Feststellung solcher beschädigten Daten erstellt wurden. In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, unterscheidet sich ein neuronales Netzwerk, das einen oder mehrere zusätzliche Rahmen verursacht, von dem neuronalen Netzwerk 110, sodass das neuronale Netzwerk 110 beispielsweise einen oder mehrere zusätzliche Rahmen empfängt, die von einem oder mehreren anderen neuronalen Netzwerken erstellt wurden.
  • In mindestens einer Ausführungsform bewirkt das neuronale Netzwerk 110, dass ein oder mehrere Überblendungsfaktoren 112 bestimmt werden, die zur Überblendung von Rahmen verwendet werden, und zwar unter Verwendung von Systemen und Verfahren, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform werden Überblendungsfaktoren verwendet, um zwei oder mehr Zwischenrahmen zu erstellen (z. B. einen Rahmen aus dem vorherigen Rahmen 104 und einen Rahmen aus dem aktuellen Rahmen 106). In mindestens einer Ausführungsform mischt der Prozessor die Zwischenrahmen 116, wie oben beschrieben. In mindestens einer Ausführungsform verwendet das neuronale Netzwerk 110 Überblendungsfaktoren, um Zwischenrahmen 116 zu überblenden. In mindestens einer Ausführungsform verwendet der Prozessor 102 Überblendungsfaktoren, um Zwischenrahmen 116 zu überblenden, wobei er Techniken, Systeme und Verfahren verwendet, wie sie hierin beschrieben sind.
  • In mindestens einer Ausführungsform umfasst ein Zwischenrahmen Daten, die für jedes Pixel in einem Rahmen (z. B. dem aktuellen Rahmen oder dem vorherigen Rahmen) die Bewegung von diesem Rahmen zu einem zu erzeugenden interpolierten Rahmen angeben, wobei die Bewegung nach einer dem Zwischenrahmen entsprechenden Art und Weise bestimmt wird und jeder von mehreren Zwischenrahmen diese Informationen für jedes Pixel nach einer anderen Art und Weise der Bestimmung der Bewegung aufweist. In mindestens einer Ausführungsform verfügt ein Zwischenrahmen nicht über ausreichende Informationen, um als Bild wiedergegeben zu werden, obwohl in einigen Ausführungsformen auch Zwischenrahmen Bilder sein können. In mindestens einer Ausführungsform umfasst ein Zwischenrahmen Informationen, die für jedes Pixel des Zwischenrahmens eine Bewegung von einem vorherigen Rahmen zu einer Stelle in der Zeit auf halbem Weg zwischen dem vorherigen Rahmen und einem aktuellen Rahmen anzeigen. In mindestens einer Ausführungsform umfassen die verschiedenen Möglichkeiten zur Bestimmung der Bewegung: die Verwendung von Bewegungsvektoren aus einer Spielmaschine oder einer anderen Quelle (die die Bewegung einiger Pixel, aber nicht die Bewegung anderer Pixel anzeigen können); die Verwendung einer Bewegung, die unter Verwendung geometrischer Standardtechniken basierend auf einer Änderung der Kameraposition von einem vorhergehenden Rahmen zu einem aktuellen Rahmen berechnet wird, wobei auch die Pixeltiefe verwendet werden kann, die von der Spielmaschine oder einer anderen Quelle bereitgestellt werden kann; eine Bewegung, die auf einer optischen Flussanalyse basiert, und/oder eine Bewegung, die auf andere Weise berechnet wird. In mindestens einer Ausführungsform gibt ein Überblendungsfaktor eine gewichtete Summe von Bewegungen eines Pixels an, wobei die zu summierenden Bewegungen von jedem der mehreren Typen von Bewegungen aus mehreren jeweiligen Zwischenrahmen stammen.
  • In mindestens einer Ausführungsform umfassen die Zwischenrahmen einen ersten Satz von einem oder mehreren Rahmen, die basierend auf der Bewegung von einem vorherigen Rahmen zu einem aktuellen Rahmen (Vorwärtsbewegung) erstellt wurden, und einen zweiten Satz von einem oder mehreren Rahmen, die basierend auf der Bewegung von einem aktuellen Rahmen zu einem vorherigen Rahmen (Rückwärtsbewegung) erstellt wurden. In mindestens einer Ausführungsform wird ein zeitlicher Abstand zwischen einem interpolierten Rahmen und einem vorherigen Rahmen oder einem aktuellen Rahmen verwendet, um die Bewegung für jeden Zwischenrahmen zu berechnen. In mindestens einer Ausführungsform und als Beispiel, wenn es einen interpolierten Rahmen zwischen einem vorherigen Rahmen und einem aktuellen Rahmen geben soll, ist die Bewegung eines Zwischenrahmens die Hälfte der Bewegung, die zwischen dem aktuellen Rahmen und dem vorherigen Rahmen berechnet wurde (ob vorwärts oder rückwärts, hängt von dem erstellten Zwischenrahmen ab). In mindestens einer Ausführungsform und als Beispiel, wenn es zwei interpolierte Rahmen zwischen einem vorherigen Rahmen und einem aktuellen Rahmen geben soll, kann ein erster interpolierter Rahmen eines Typs der Bewegung basierend auf einem Drittel eines zeitlichen Abstands von dem vorherigen Rahmen zu dem aktuellen Rahmen erstellt werden und ein weiterer interpolierter Rahmen kann basierend auf zwei Dritteln eines zeitlichen Abstands von dem vorherigen Rahmen zu dem aktuellen Rahmen erstellt werden. Wenn zwischen einem vorherigen Rahmen und einem aktuellen Rahmen eine Anzahl von N (einer positiven ganzen Zahl) interpolierter Rahmen liegen soll, können Zwischenrahmen für zeitliche Stellen mit 1/(N+1) des zeitlichen Abstands zwischen einem vorherigen Rahmen und einem aktuellen Rahmen, 2/(N+1) des zeitlichen Abstands, 3/(N+1) des zeitlichen Abstands, ..., N/(N+1) des zeitlichen Abstands erstellt werden.
  • In mindestens einer Ausführungsform schließt zum Beispiel ein erster Zwischenrahmen die Bewegung von Objekten vom vorherigen Rahmen 104 zu einem Zwischenrahmen ein (z. B. auf halbem Weg entlang der Bewegungsvektoren eines dynamischen Objekts, das sich vom vorherigen Rahmen 104 zum aktuellen Rahmen 106 bewegt), wobei diese Bewegung aus Bewegungsvektoren stammen kann, die von einer Spielmaschine oder einer anderen Quelle bereitgestellt werden. In mindestens einer Ausführungsform schließt ein zweiter Zwischenrahmen die Bewegung statischer Objekte ein (z. B. Objekte, die sich nicht aufgrund von Bewegungsvektoren bewegen, sondern sich vom vorherigen Rahmen 104 zum aktuellen Rahmen 106 bewegen, zum Beispiel aufgrund von Kamerabewegungen), wobei eine solche Bewegung (die als optische Bewegung bezeichnet werden kann) unter Verwendung der Tiefe und der Kamerastellen berechnet werden kann. In mindestens einer Ausführungsform schließt ein dritter Zwischenrahmen die Bewegung von statischen Objekten ein (z. B. Objekte, die sich überhaupt nicht bewegen, wie beispielsweise einige Elemente der Benutzerschnittstelle). In mindestens einer Ausführungsform schließt ein vierter Zwischenrahmen Daten aus einem oder mehreren zusätzlichen Rahmen ein, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform und in einem solchen Beispiel verwendet das neuronale Netzwerk 110 einen oder mehrere Überblendungsfaktoren 112, um Rahmen zu überblenden, indem es z. B. 25 % der Bewegung aus einem ersten Zwischenrahmen, 25 % der Bewegung aus einem zweiten Zwischenrahmen, 25 % der Bewegung aus einem dritten Zwischenrahmen und 25 % der Bewegung aus einem vierten Zwischenrahmen überblendet. In mindestens einer Ausführungsform begünstigt der Überblendungsfaktor eines Pixels stärker einen Typ von Bewegung, wie beispielsweise die Bewegung aus einem von einer Spielmaschine erzeugten Bewegungsvektor. In mindestens einer Ausführungsform weisen verschiedene Pixel unterschiedliche Überblendungsfaktoren auf, was darauf zurückzuführen ist, dass die Bewegung eines Pixels von Rahmen zu Rahmen von vielen verschiedenen Faktoren abhängen kann, beispielsweise von der seitlichen Bewegung von Objekten innerhalb einer Szene eines Videos, der Rotationsbewegung von Objekten innerhalb einer Szene eines Videos, der Kamerabewegung einer virtuellen Kamera und dergleichen.
  • In mindestens einer Ausführungsform und in einem solchen Beispiel kann das neuronale Netzwerk 110 auch einen oder mehrere Überblendungsfaktoren 112 verwenden, um Rahmen zu überblenden, indem es zum Beispiel 100 % der Bewegung aus einem ersten Zwischenrahmen, 0 % der Bewegung aus einem zweiten Zwischenrahmen, 0 % der Bewegung aus einem dritten Zwischenrahmen und 0 % der Bewegung aus einem vierten Zwischenrahmen überblendet. In mindestens einer Ausführungsform verwendet das neuronale Netzwerk 110 einen oder mehrere Überblendungsfaktoren 112, um Rahmen zu überblenden, indem es die Überblendung von einem oder mehreren dazwischen liegenden Rahmen abschwächt, zum Beispiel durch die Verwendung eines oder mehrerer negativer Überblendungsfaktoren 112. In mindestens einer Ausführungsform verwendet das neuronale Netzwerk 110 einen oder mehrere Überblendungsfaktoren 112, um Rahmen zu überblenden, die einen oder mehrere zusätzliche Rahmen einschließen, wie beispielsweise einen oder mehrere zusätzlich zu erstellende Rahmen 114.
  • In mindestens einer Ausführungsform verwendet das neuronale Netzwerk 110 beispielsweise einen oder mehrere Überblendungsfaktoren 112, um Rahmen zu überblenden, indem es zunächst einen oder mehrere Zwischenrahmen erstellt, die die Bewegung von Objekten aus dem aktuellen Rahmen 106 (z. B. rückwärts in der Zeit) darstellen, und dann einen oder mehrere Zwischenrahmen überblendet, die die Bewegung von Objekten aus dem aktuellen Rahmen 106 darstellen, wobei ein oder mehrere Überblendungsfaktoren 112 verwendet werden. In mindestens einer Ausführungsform schließt beispielsweise ein erster Zwischenrahmen die Bewegung von Objekten vom aktuellen Rahmen 106 zu einem Zwischenrahmen ein (z. B. auf halbem Weg entlang von Bewegungsvektoren eines dynamischen Objekts, das sich vom aktuellen Rahmen 106 zum vorherigen Rahmen 104 bewegt), ein zweiter Zwischenrahmen schließt die optische Bewegung von statischen Objekten ein (z. B. Objekte, die sich nicht aufgrund von Bewegungsvektoren bewegen, sondern sich z. B. aufgrund von Kamerabewegungen vom aktuellen Rahmen 106 zum vorherigen Rahmen 104 bewegen), ein dritter Zwischenrahmen, der statische Objekte einschließt (z. B. Objekte, die sich überhaupt nicht bewegen, wie z. B. Elemente der Benutzerschnittstelle), und ein vierter zusätzlicher Rahmen, wie die hierin beschriebenen. In mindestens einer Ausführungsform und in einem solchen Beispiel verwendet das neuronale Netzwerk 110 einen oder mehrere Überblendungsfaktoren 112, um Rahmen zu überblenden, wie oben in Verbindung mit der Bewegung vom vorherigen Rahmen 104 zu einem Zwischenrahmen beschrieben.
  • In mindestens einer Ausführungsform sind ein oder mehrere Überblendungsfaktoren 112 zum Überblenden von Rahmen lineare Kombinationen wie oben beschrieben (z. B. 25 % der Bewegung aus einem ersten Zwischenrahmen, 25 % der Bewegung aus einem zweiten Zwischenrahmen, 25 % der Bewegung aus einem dritten Zwischenrahmen und 25 % der Bewegung aus einem vierten Zwischenrahmen). In mindestens einer Ausführungsform handelt es sich bei einem oder mehreren Überblendungsfaktoren 112 zur Überblendung von Rahmen um nicht-lineare Kombinationen (z. B. 50 % einer Kombination (oder Multiplikation) von Bewegungen aus einem ersten Zwischenrahmen und Bewegungen aus einem zweiten Zwischenrahmen plus 50 % von Bewegungen aus einem dritten Zwischenrahmen).
  • In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, bewirkt das neuronale Netzwerk, dass zusätzlich zu einem oder mehreren Überblendungsfaktoren eine oder mehrere Qualitätsmasken erstellt werden. In mindestens einer Ausführungsform basieren Qualitätsmasken zumindest teilweise auf Konfidenzmetriken, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform werden Qualitätsmasken in die Berechnung der Überblendungsfaktoren 112 eingeschlossen, sodass zum Beispiel ein Überblendungsfaktor, der auf Daten mit geringem Vertrauen basiert, verringert und ein Überblendungsfaktor, der auf Daten mit hohem Vertrauen basiert, erhöht werden kann.
  • In mindestens einer Ausführungsform veranlasst der Prozessor 102, dass ein oder mehrere interpolierte Rahmen 120 erstellt werden, indem er Systeme und Verfahren verwendet, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform empfängt der Prozessor 102 einen oder mehrere überblendete Rahmen (z. B. Rahmen, die durch Überblendung von Daten aus einem oder mehreren Zwischenrahmen und/oder einem oder mehreren zusätzlichen Rahmen 114 unter Verwendung von Überblendungsfaktoren 112 erstellt wurden) vom neuronalen Netzwerk 110. In mindestens einer Ausführungsform veranlasst der Prozessor 102, dass ein oder mehrere interpolierte Rahmen 120 erstellt werden, indem ein erster überlagerter Rahmen, der durch eine Bewegung vom vorherigen Rahmen 104 zu einem oder mehreren Zwischenrahmen erzeugt wurde, mit einem zweiten überlagerten Rahmen, der durch eine Bewegung von einem aktuellen Rahmen 106 zu einem oder mehreren Zwischenrahmen erzeugt wurde, wie hierin beschrieben, überlagert wird. In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, veranlasst der Prozessor 102, dass ein oder mehrere interpolierte Rahmen 120 erstellt werden, indem gemischte Rahmen aus dem neuronalen Netzwerk 110 mit einem oder mehreren anderen Rahmen kombiniert werden, die von einer oder mehreren anderen Quellen empfangen werden, wie sie hierin beschrieben sind (z. B. einem GPU, einer Multimediavorrichtung, einer Spielkonsole, einer Videoaufnahmevorrichtung, einer Kamera eines autonomen Vehikels, einer Fernsehvorrichtung und/oder einer anderen derartigen Vorrichtung und/oder von einer Grafikengine, einer Spielengine, einer Multimediaengine und/oder einer anderen derartigen Renderingengine und/oder von einem neuronalen Netzwerk usw.). In mindestens einer Ausführungsform
  • In mindestens einer Ausführungsform verwendet der Prozessor 102 das neuronale Netzwerk 110, um einen oder mehrere interpolierte Rahmen 120 zu erstellen. In mindestens einer Ausführungsform verwendet der Prozessor 102 ein oder mehrere andere neuronale Netzwerke, die in 1 nicht veranschaulicht sind, um einen oder mehrere interpolierte Rahmen 120 zu erstellen. In mindestens einer Ausführungsform werden interpolierte Rahmen 120 in einem Rahmenpuffer 124 bereitgestellt 122, wie er hierin mindestens in Verbindung mit 36A bis 36D beschrieben ist, um unter Verwendung von Systemen und Verfahren, wie sie hierin beschrieben sind, angezeigt zu werden.
  • In mindestens einer Ausführungsform, die Systeme und Verfahren wie die hierin beschriebenen verwendet, umfasst der Prozessor 102 eine oder mehrere Schaltungen, um einen oder mehrere Bewegungskandidaten zu erstellen. In mindestens einer Ausführungsform, die Systeme und Verfahren wie die hierin beschriebenen verwendet, umfasst der Prozessor 102 eine oder mehrere Schaltungen, um einen oder mehrere Bewegungskandidaten als Zwischenrahmen zu erstellen. In mindestens einem System, das Systeme und Verfahren wie die hierin beschriebenen verwendet, umfasst der Prozessor 102 eine oder mehrere Schaltungen, um einen oder mehrere Bewegungskandidaten aus einem oder mehreren Bewegungstypen (z. B. Objektbewegung, Schattenbewegung, Kamerabewegung, optischer Fluss, statische Objekte usw.) zu erstellen. In mindestens einem System, das Systeme und Verfahren wie die hierin beschriebenen verwendet, umfasst der Prozessor 102 eine oder mehrere Schaltungen, um einen oder mehrere Bewegungskandidaten aus einer Vielzahl von Objekttypen zu erstellen (z. B. Objektbewegung, Schattenbewegung, Kamerabewegung, optischer Fluss, statische Objekte usw.). In mindestens einer Ausführungsform, die Systeme und Verfahren wie die hierin beschriebenen verwendet, umfasst der Prozessor 102 eine oder mehrere Schaltungen, um einen oder mehrere Bewegungskandidaten aus einer Vielzahl von Kamerabewegungstypen zu erstellen. In mindestens einem System, das Systeme und Verfahren wie die hierin beschriebenen verwendet, umfasst der Prozessor 102 eine oder mehrere Schaltungen, um einen oder mehrere Bewegungskandidaten aus einer Vielzahl optischer Typen von Flüssen zu erstellen (z. B. Kamerabewegung, Partikelbewegung, Beleuchtungsbewegung, Schattenbewegung, dynamische Typen von Oberflächen, sich ändernde Ul-Elemente usw.). In mindestens einem System, das Systeme und Verfahren wie die hierin beschriebenen verwendet, umfasst der Prozessor 102 eine oder mehrere Schaltungen, um einen oder mehrere Bewegungskandidaten aus einer Vielzahl von statischen Bewegungstypen zu erstellen (z. B. Änderung von Ul-Elementen, Bewegung von Ul-Elementen, Änderung eines Objekts von dynamisch zu statisch, Änderung eines Objekts von statisch zu dynamisch usw.). In mindestens einem Verfahren, das Systeme und Verfahren wie die hierin beschriebenen verwendet, umfasst der Prozessor 102 eine oder mehrere Schaltungen, um einen oder mehrere Überblendungsfaktoren von Bewegungen zu erstellen. In mindestens einem System, das Systeme und Verfahren wie die hierin beschriebenen verwendet, umfasst der Prozessor 102 eine oder mehrere Schaltungen, um Vertrauensinformationen zu erstellen, die Eingabedaten wie dem vorherigen Rahmen 104, dem aktuellen Rahmen 106 und/oder zusätzlichen Rahmeninformationen 108 zugeordnet sind. In mindestens einem System, das Systeme und Verfahren verwendet, wie sie hierin beschrieben sind, umfasst der Prozessor 102 eine oder mehrere Schaltungen, um Konfidenzinformationen (z. B. Konfidenzmetriken oder Qualitätsmasken) für einen oder mehrere Überblendungsfaktoren zu erstellen. In mindestens einer Ausführungsform, bei der Systeme und Verfahren wie die hierin beschriebenen verwendet werden, umfasst der Prozessor 102 eine oder mehrere Schaltungen, um einen oder mehrere vorherige Rahmen 104, den aktuellen Rahmen 106 und/oder zusätzliche Rahmeninformationen 108 vorzuverarbeiten. In mindestens einem Verfahren, das Systeme und Verfahren wie die hierin beschriebenen verwendet, umfasst der Prozessor 102 eine oder mehrere Schaltungen, um einen oder mehrere Zwischenrahmen, zusätzliche Rahmen, Überblendungsfaktoren, überblendete Rahmen und/oder interpolierte Rahmen nachzubearbeiten.
  • In mindestens einer Ausführungsform umfassen ein oder mehrere Prozessoren (z. B. Prozessor 102 und/oder andere Prozessoren und/oder Beschleuniger wie die hierin beschriebenen) eine oder mehrere Schaltungen, um hierin beschriebene Operationen oder Anweisungen auszuführen, wie z. B. eine oder mehrere Schaltungen, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Unterstützung für die Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen, um eine Rahmeninterpolation durchzuführen. In mindestens einer Ausführungsform umfassen ein oder mehrere Prozessoren eine oder mehrere Schaltungen, um hierin beschriebene Operationen oder Anweisungen auszuführen, wie beispielsweise eine oder mehrere Schaltungen, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Unterstützung für die Rahmeninterpolation anzuzeigen. In mindestens einer Ausführungsform umfassen ein oder mehrere Prozessoren eine oder mehrere Schaltungen, um hierin beschriebene Operationen oder Anweisungen auszuführen, wie beispielsweise eine oder mehrere Schaltungen, um eine oder mehrere Fähigkeiten eines oder mehrerer Prozessoren anzuzeigen, ein neuronales Netzwerk zu verwenden, um Rahmeninterpolation durchzuführen. In mindestens einer Ausführungsform, die in 1 nicht dargestellt ist, ist auf einem maschinenlesbaren Medium ein Satz von Anweisungen gespeichert, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, Operationen durchführen, die hierin mindestens in Verbindung mit 1-22 beschrieben sind, wie beispielsweise Operationen zur Durchführung einer Anwendungsprogrammierschnittstelle (API), um Stützen zur Verwendung eines oder mehrerer neuronaler Netzwerke zur Durchführung von Rahmeninterpolation anzuzeigen.
  • In mindestens einer Ausführungsform umfassen ein oder mehrere Prozessoren (z. B. Prozessor 102 und/oder andere Prozessoren und/oder Beschleuniger wie die hierin beschriebenen) eine oder mehrere Schaltungen, um hierin beschriebene Operationen oder Anweisungen auszuführen, wie beispielsweise eine oder mehrere Schaltungen, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation zu ermöglichen und ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform umfassen ein oder mehrere Prozessoren eine oder mehrere Schaltungen, um hierin beschriebene Operationen oder Anweisungen auszuführen, wie beispielsweise eine oder mehrere Schaltungen, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation zu ermöglichen. In mindestens einer Ausführungsform umfassen ein oder mehrere Prozessoren eine oder mehrere Schaltungen, um hierin beschriebene Operationen oder Anweisungen auszuführen, wie beispielsweise eine oder mehrere Schaltungen, die eine Anwendungsprogrammierschnittstelle (API) ausführen, um einen oder mehrere Prozessoren zu veranlassen, ein oder mehrere neuronale Netzwerke zu verwenden, um eine Rahmeninterpolation auszuführen. In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, weist ein maschinenlesbares Medium einen Satz von Anweisungen auf, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, Operationen durchführen sollen, die hierin mindestens in Verbindung mit 1-22 beschrieben sind, wie beispielsweise Operationen zur Durchführung einer Anwendungsprogrammierschnittstelle (API), um die Rahmeninterpolation zur Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen.
  • In mindestens einer Ausführungsform umfassen ein oder mehrere Prozessoren (z. B. Prozessor 102 und/oder andere Prozessoren und/oder Beschleuniger wie die hierin beschriebenen) eine oder mehrere Schaltungen, um hierin beschriebene Operationen oder Anweisungen auszuführen, wie beispielsweise eine oder mehrere Schaltungen, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation zu deaktivieren und ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform umfassen ein oder mehrere Prozessoren eine oder mehrere Schaltungen, um hierin beschriebene Operationen oder Anweisungen auszuführen, wie beispielsweise eine oder mehrere Schaltungen, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation zu deaktivieren. In mindestens einer Ausführungsform umfassen ein oder mehrere Prozessoren eine oder mehrere Schaltungen, um hierin beschriebene Operationen oder Anweisungen auszuführen, wie beispielsweise eine oder mehrere Schaltungen zur Ausführung einer Anwendungsprogrammierschnittstelle (API), um einen oder mehrere Prozessoren zu veranlassen, einen oder mehrere Videorahmen zu erstellen, ohne ein oder mehrere neuronale Netzwerke zur Rahmeninterpolation zu verwenden. In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, weist ein maschinenlesbares Medium einen Satz von Anweisungen auf, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, Operationen durchführen sollen, die hierin mindestens in Verbindung mit 1-22 beschrieben sind, wie beispielsweise Operationen zur Durchführung einer Anwendungsprogrammierschnittstelle (API), um die Rahmeninterpolation zur Verwendung eines oder mehrerer neuronaler Netzwerke zu deaktivieren.
  • In mindestens einer Ausführungsform umfassen ein oder mehrere Prozessoren (z. B. Prozessor 102 und/oder andere Prozessoren und/oder Beschleuniger wie die hierin beschriebenen) eine oder mehrere Schaltungen, um hierin beschriebene Operationen oder Anweisungen auszuführen, wie beispielsweise eine oder mehrere Schaltungen zur Ausführung einer Anwendungsprogrammierschnittstelle (API) zur Angabe von Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke. In mindestens einer Ausführungsform umfassen ein oder mehrere Prozessoren eine oder mehrere Schaltungen, um hierin beschriebene Operationen oder Anweisungen auszuführen, wie beispielsweise eine oder mehrere Schaltungen, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße anzuzeigen. In mindestens einer Ausführungsform umfassen ein oder mehrere Prozessoren eine oder mehrere Schaltungen, um hierin beschriebene Operationen oder Anweisungen auszuführen, wie beispielsweise eine oder mehrere Schaltungen, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, um eine oder mehrere Einstellungen einzustellen, die verwendet werden, um eine Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, weist ein maschinenlesbares Medium einen Satz von Anweisungen auf, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, Operationen durchführen sollen, die hierin mindestens in Verbindung mit 1-22 beschrieben sind, wie beispielsweise Operationen zum Ausführen einer Anwendungsprogrammierschnittstelle (API), um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen.
  • In mindestens einer Ausführungsform umfassen ein oder mehrere Prozessoren (z. B. Prozessor 102 und/oder andere Prozessoren und/oder Beschleuniger wie die hierin beschriebenen) eine oder mehrere Schaltungen, um hierin beschriebene Operationen oder Anweisungen auszuführen, wie beispielsweise eine oder mehrere Schaltungen, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, damit die Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke durchgeführt wird. In mindestens einer Ausführungsform umfassen ein oder mehrere Prozessoren eine oder mehrere Schaltungen, um hierin beschriebene Operationen oder Anweisungen auszuführen, wie beispielsweise eine oder mehrere Schaltungen, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, um eine Rahmeninterpolation durchzuführen. In mindestens einer Ausführungsform umfassen ein oder mehrere Prozessoren eine oder mehrere Schaltungen, um hierin beschriebene Operationen oder Anweisungen auszuführen, wie beispielsweise eine oder mehrere Schaltungen, die eine Anwendungsprogrammierschnittstelle (API) ausführen, um einen oder mehrere Prozessoren zu veranlassen, eine oder mehrere Einstellungen zu verwenden, um eine Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke durchzuführen. In mindestens einer Ausführungsform, die in 1 nicht veranschaulicht ist, weist ein maschinenlesbares Medium einen Satz von Anweisungen auf, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, Operationen durchführen sollen, die hierin mindestens in Verbindung mit 1-22 beschrieben sind, wie beispielsweise Operationen, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, damit die Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke durchgeführt wird.
  • 2 veranschaulicht ein Beispieldiagramm 200, in dem ein neuronales Netzwerk nach mindestens einer Ausführungsform interpolierte Videorahmen erstellt. In mindestens einer Ausführungsform erstellt ein Prozessor 202 Rahmendaten 204, die unter anderem den vorherigen Rahmen 206 und den aktuellen Rahmen 208 einschließen. In mindestens einer Ausführungsform werden der vorherige Rahmen 206 und/oder der aktuelle Rahmen 208 durch räumliches Upsampling erstellt (z. B. durch räumliches Super-Sampling wie z. B. DLSS, XeSS (oder XeSS) von Intel@, FidelityFX™ Super Resolution von AMD@, usw.). In mindestens einer Ausführungsform ist der Prozessor 202 ein Prozessor wie der Prozessor 102, der hierin mindestens in Verbindung mit 1 beschrieben ist. In mindestens einer Ausführungsform ist der Prozessor 202 ein zusätzlicher Prozessor (z. B. nicht in 1 dargestellt), wie hierin mindestens in Verbindung mit 1 beschrieben. In mindestens einer Ausführungsform ist der vorherige Rahmen 206 ein vorheriger Rahmen wie der vorherige Rahmen 104, wie hierin mindestens in Verbindung mit 1 beschrieben. In mindestens einer Ausführungsform ist der aktuelle Rahmen 208 ein aktueller Rahmen wie der aktuelle Rahmen 106, wie hierin mindestens in Verbindung mit 1 beschrieben. In mindestens einer Ausführungsform, die in 2 nicht veranschaulicht ist, erstellt der Prozessor 202 zusätzliche Rahmeninformationen, wie beispielsweise die zusätzlichen Rahmeninformationen 108, wie hierin zumindest in Verbindung mit 1 beschrieben.
  • In mindestens einer Ausführungsform empfängt ein Prozessor 210 den vorherigen Rahmen 206 und/oder den aktuellen Rahmen 208 und verwendet den vorherigen Rahmen 206 und/oder den aktuellen Rahmen 208 zur Vorverarbeitung der Rahmen 232, um einen oder mehrere Zwischenrahmen zu erstellen, wie oben beschrieben. In mindestens einer Ausführungsform verwendet der Prozessor 210 ein neuronales Netzwerk 212, um einen oder mehrere Überblendungsfaktoren 214 zu erstellen und/oder Rahmen 216 zu verarbeiten, wobei er Systeme und Verfahren verwendet, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform ist der Prozessor 210 ein Prozessor wie der Prozessor 102, wie hierin mindestens in Verbindung mit 1 beschrieben. In mindestens einer Ausführungsform sind der Prozessor 210 und der Prozessor 202 getrennte Prozessoren. In mindestens einer Ausführungsform sind der Prozessor 210 und der Prozessor 202 ein einziger Prozessor. In mindestens einer Ausführungsform ist das neuronale Netzwerk 212 ein neuronales Netzwerk wie das neuronale Netzwerk 110, wie hierin zumindest in Verbindung mit 1 beschrieben. In mindestens einer Ausführungsform erstellt das neuronale Netzwerk 212 einen oder mehrere Überblendungsfaktoren 214 unter Verwendung von Systemen und Verfahren, wie sie hierin mindestens in Verbindung mit 1 beschrieben sind. In mindestens einer Ausführungsform, die in 2 nicht veranschaulicht ist, erstellt das neuronale Netzwerk 212 einen oder mehrere zusätzliche Rahmen unter Verwendung von Systemen und Verfahren, wie sie hierin zumindest in Verbindung mit 1 beschrieben sind.
  • In mindestens einer Ausführungsform ist das neuronale Netzwerk 212 ein neuronales Netzwerk mit Trainings- und Inferenzarchitektur, wie hierin beschrieben. In mindestens einer Ausführungsform trainiert ein Trainings-Framework ein untrainiertes neuronales Netzwerk unter Verwendung von Trainingsdaten, um Ausgabedaten aus Eingabedaten zu synthetisieren, zu kategorisieren, zu identifizieren oder anderweitig abzuleiten. In mindestens einer Ausführungsform schließen die Eingaben in das neuronale Netzwerk 212 Rahmendaten, Bewegungsdaten, Tiefendaten, Kameradaten, Vertrauensmetriken, Qualitätsmasken und andere derartige Daten ein. In mindestens einer Ausführungsform schließen die Ausgabedaten des neuronalen Netzwerks 212 Zwischenrahmen, zusätzliche Rahmen, Restrahmen (z. B. Rahmen mit zusätzlichen Daten, um zum Beispiel Pixel der Ausgaberahmen zu betonen oder zu entschärfen), Überblendungsfaktoren, Metriken zur Vertrauenswürdigkeit, Qualitätsmasken und/oder andere derartige Daten ein.
  • In mindestens einer Ausführungsform werden Trainingsdaten in ein Trainings-Framework eingegeben, um ein untrainiertes neuronales Netzwerk so zu trainieren, dass es aus Eingabedaten wie den hierin beschriebenen Ausgabedaten Ausgabedaten wie die hierin beschriebenen synthetisiert oder anderweitig erstellt. In mindestens einer Ausführungsform handelt es sich bei den Trainingsdaten um Daten, die Informationen umfassen, die zum Trainieren eines untrainierten neuronalen Netzwerks unter Verwendung eines Trainings-Frameworks verwendet werden können. In mindestens einer Ausführungsform schließen die Trainingsdaten die Überwachung oder andere Informationen ein, die zur Erleichterung des Trainings durch ein Trainings-Framework verwendet werden. In mindestens einer Ausführungsform schließen Überwachungs- oder andere Informationen zur Erleichterung des Trainings Daten ein, die Merkmale von Trainingsdaten identifizieren, um das Training eines untrainierten neuronalen Netzwerks durch ein Trainings-Framework zu verbessern.
  • In mindestens einer Ausführungsform wird ein Identifikator für eine Aufgabe in ein Trainings-Framework eingegeben, um das Training eines untrainierten neuronalen Netzwerks zu erleichtern, damit dieses unter Verwendung eines Untersatzes eines Satzes von Neuronen eines neuronalen Netzwerks, wie beispielsweise des neuronalen Netzwerks 212, aus Eingabedaten Ausgabedaten synthetisiert oder anderweitig einstellt. In mindestens einer Ausführungsform ist ein Identifikator für eine Aufgabe ein Vektor. In mindestens einer Ausführungsform handelt es sich bei einem Identifikator für eine Aufgabe um einen Satz von Datenwerten, die verwendet werden können, um einen Untersatz eines Satzes von Neuronen eines untrainierten neuronalen Netzwerks einzustellen, das mit Hilfe eines Trainings-Frameworks trainiert werden soll. In mindestens einer Ausführungsform ist ein Aufgabenidentifikator ein One-Hot-Vektor, der eine Aufgabe identifiziert oder anzeigt, und/oder ein Identifikator, der zur Anzeige einer Aufgabe verwendet werden kann. In mindestens einer Ausführungsform handelt es sich bei einem Aufgabenidentifikator um Daten, die von einem Trainings-Framework verwendet werden, um einen oder mehrere Abschnitte eines untrainierten neuronalen Netzwerks zu bestimmen. In mindestens einer Ausführungsform kann ein Aufgabenidentifikator verwendet werden, um eine oder mehrere Gruppen von Trainingsdaten zu identifizieren oder anzuzeigen.
  • In mindestens einer Ausführungsform besteht ein Trainings-Framework aus Daten und Softwareanweisungen, die, wenn sie ausgeführt werden, Gewichte und andere Werte in einem untrainierten neuronalen Netzwerk aktualisieren, um Inferenzierung auszuführen. In mindestens einer Ausführungsform verwendet ein Trainings-Framework ein generatives adversarisches Netzwerk (GAN), um ein untrainiertes neuronales Netzwerk zu trainieren. In mindestens einer Ausführungsform verwendet ein Trainings-Framework jede andere Trainingsarchitektur oder -technik, um das Training eines untrainierten neuronalen Netzwerks zu erleichtern. In mindestens einer Ausführungsform bestimmt ein Trainings-Framework Verlustwerte, die in einem untrainierten neuronalen Netzwerk backpropagiert werden, um das untrainierte neuronale Netzwerk zu trainieren.
  • In mindestens einer Ausführungsform handelt es sich bei einem untrainierten neuronalen Netzwerk um Datenwerte und/oder Softwareanweisungen, die, wenn sie ausgeführt werden, einen oder mehrere Datenwerte einschließen, die dazu verwendet werden können, Operationen des neuronalen Netzwerks auszuführen, wie beispielsweise Inferencing einschließlich Klassifizierung, Objektidentifikation und/oder andere hierin beschriebene Operationen des neuronalen Netzwerks. In mindestens einer Ausführungsform trainiert ein Trainings-Framework ein untrainiertes neuronales Netzwerk, um eine Funktion hθ(·) auszuführen, die M Eingaben X, { x i } i = 1 M
    Figure DE102023125014A1_0001
    annimmt und N Ausgaben Y, { y i } i = 1 N ,
    Figure DE102023125014A1_0002
    ableitet oder anderweitig berechnet. In mindestens einer Ausführungsform trainiert ein Trainings-Framework ein untrainiertes neuronales Netzwerk, um eine Entscheidung oder Schlussfolgerung über jeden Gegenstand der im Training verwendeten Eingabedaten zu treffen. In mindestens einer Ausführungsform umfasst eine Entscheidung oder Schlussfolgerung das Einstellen eines Satzes von Wahrscheinlichkeiten, dass ein eingegebener Gegenstand eine Eigenschaft oder ein Merkmal aufweist.
  • In mindestens einer Ausführungsform umfasst ein untrainiertes neuronales Netzwerk eine oder mehrere Schichten, um das Training oder die Inferenzierung unter Verwendung von Trainingsdaten und/oder Eingabedaten zu erleichtern. In mindestens einer Ausführungsform umfasst ein untrainiertes neuronales Netzwerk eine oder mehrere Schichten mit Upsampling, um während des Trainings Ausgabedaten zu erstellen, die größer sind als die Trainingsdaten. In mindestens einer Ausführungsform trainiert ein Trainings-Framework eine oder mehrere Schichten in einem untrainierten neuronalen Netzwerk, um die Funktion hθ(·) auszuführen.
  • In mindestens einer Ausführungsform handelt es sich bei einem neuronalen Netzwerk um ein neuronales Kodierungsnetzwerk, das verschiedene untrainierte Schichten umfasst, wie beispielsweise Faltungsschichten, wie hierin beschrieben. In mindestens einer Ausführungsform umfasst ein untrainiertes neuronales Netzwerk ein oder mehrere individuelle neuronale Netzwerke, um unterschiedliche Operationen auszuführen, wie beispielsweise verschiedene hierin beschriebene neuronale Netzwerkoperationen. In mindestens einer Ausführungsform ist ein untrainiertes neuronales Netzwerk ein beliebiger Typ eines neuronalen Netzwerks, das durch ein Trainings-Framework trainiert wird, um einen auf einem Eingabedatensatz basierenden Ausgabedatensatz einzustellen.
  • In mindestens einer Ausführungsform handelt es sich bei dem neuronalen Netzwerk 212 um ein trainiertes neuronales Netzwerk, das Datenwerte und/oder Softwareanweisungen einschließt, die, wenn sie ausgeführt werden, einen Satz von Ausgangswerten aus Eingabedaten ableiten, wobei ein oder mehrere Datenwerte verwendet werden, die während des Trainings des neuronalen Netzwerks berechnet wurden, wie hierin beschrieben. In mindestens einer Ausführungsform führt ein trainiertes neuronales Netzwerk eine Funktion hθ(·) aus, wie oben beschrieben, um aus Eingabedaten Ausgabedaten zu erstellen. In mindestens einer Ausführungsform umfasst ein trainiertes neuronales Netzwerk eine oder mehrere Schichten des neuronalen Netzwerks, um ein Upsampling auszuführen, um die Größe der Daten, wie beispielsweise die Dimensionen, der Ausgabedaten im Vergleich zu den Eingabedaten zu erhöhen. In mindestens einer Ausführungsform handelt es sich bei dem trainierten neuronalen Netzwerk um ein neuronales Codierungsnetzwerk. In mindestens einer Ausführungsform handelt es sich bei einem trainierten neuronalen Netzwerk um ein neuronales Codierungsnetzwerk, das Faltungsschichten umfasst. In mindestens einer Ausführungsform handelt es sich bei dem trainierten neuronalen Netzwerk um ein neuronales Faltungsnetzwerk. In mindestens einer Ausführungsform handelt es sich bei einem trainierten neuronalen Netzwerk um einen beliebigen Typ eines neuronalen Netzwerks, wie er ferner hierin beschrieben ist.
  • In mindestens einer Ausführungsform handelt es sich bei den Eingabedaten um Daten, die eine oder mehrere Datendimensionen umfassen. In mindestens einer Ausführungsform schließen die Eingabedaten ein oder mehrere zweidimensionale Bilder ein, die eine Breite und eine Höhe umfassen (z. B. einen Rahmen wie den vorherigen Rahmen 206 und/oder den aktuellen Rahmen 208). In mindestens einer Ausführungsform sind die Eingabedaten ein dreidimensionales Bild, das eine Breite, eine Höhe und eine Tiefe umfasst (z. B. ein 3D-Rahmen). In mindestens einer Ausführungsform sind die Eingabedaten ein vierdimensionales (oder höherdimensionales) Bild, das eine Breite, eine Höhe, eine Tiefe und eine oder mehrere zusätzliche Schichten umfasst. In mindestens einer Ausführungsform schließen die Eingabedaten zusätzliche Typen von Eingabedaten ein, wie die hierin beschriebenen Typen, die bei der Inferenzierung durch ein trainiertes neuronales Netzwerk verwendet werden. In mindestens einer Ausführungsform umfassen die Eingabedaten die Werte von Pixeldaten. In mindestens einer Ausführungsform umfassen die Eingabedaten die Werte der Pixeltiefe. In mindestens einer Ausführungsform umfassen die Eingabedaten die Werte der Pixelbewegungen. In mindestens einer Ausführungsform umfassen die Eingabedaten die Werte von Objektbewegungen. In mindestens einer Ausführungsform handelt es sich bei den Pixeln um Stellen in den Bilddaten, und die Bilddaten für jedes Pixel umfassen Farbinformationen, die diesem Pixel zugeordnet sind. In mindestens einer Ausführungsform handelt es sich bei den Eingabedaten um Bilddaten, die eine oder mehrere Schichten umfassen, wobei jede Schicht mindestens zweidimensionale Bilddaten enthält.
  • In mindestens einer Ausführungsform handelt es sich bei den hierin beschriebenen Ausgangsdaten um Daten, die eine einzige Dimension oder mindestens zwei Dimensionen von Datenwerten umfassen. In mindestens einer Ausführungsform handelt es sich bei den Ausgabedaten um ein oder mehrere zweidimensionale Bilder, die eine Breite und eine Höhe umfassen. In mindestens einer Ausführungsform handelt es sich bei den Ausgabedaten um ein dreidimensionales Bild, das eine Breite, eine Höhe und eine Tiefe umfasst. In mindestens einer Ausführungsform handelt es sich bei den Ausgabedaten um Bilddaten mit einer Breite (N*Z) und einer Höhe (M*Z), wobei Z ein ganzzahliger Skalierungsfaktor oder numerischer Wert ist, der eine Vergrößerung oder Verkleinerung als Produkt einer ursprünglichen Breitenabmessung N und einer ursprünglichen Höhenabmessung M angibt. In mindestens einer Ausführungsform werden Ausgabedaten basierend auf Eingabedaten durch ein trainiertes neuronales Netzwerk unter Verwendung von hierin weiter beschriebenen Techniken erstellt. In mindestens einer Ausführungsform weisen die Ausgabedaten eine größere Dimension auf als die Eingabedaten. In mindestens einer Ausführungsform umfassen die Ausgabedaten eine oder mehrere zweidimensionale Schichten, die Bilddaten umfassen.
  • In mindestens einer Ausführungsform umfassen die Ausgabedaten eine einzige Dimension. In mindestens einer Ausführungsform umfassen die Ausgangsdaten einen einzelnen Datenwert. In mindestens einer Ausführungsform umfassen die Ausgabedaten einen oder mehrere Typen von Informationen über Eingabedaten. In mindestens einer Ausführungsform schließen die Ausgabedaten einen oder mehrere Zwischenrahmen ein. In mindestens einer Ausführungsform schließen die Ausgabedaten einen oder mehrere Überblendungsfaktoren ein. In mindestens einer Ausführungsform sind ein oder mehrere Typen von Informationen über Eingabedaten Datenwerte, die ein oder mehrere Merkmale der Eingabedaten anzeigen. In mindestens einer Ausführungsform handelt es sich bei einem oder mehreren Typen von Informationen über Eingabedaten um Datenwerte, die eine oder mehrere Klassifizierungen von Eingabedaten anzeigen (z. B. Bewegungsklassifizierungen). In mindestens einer Ausführungsform schließen ein oder mehrere Typen von Informationen über Eingabedaten Bildinformationen wie die Klassifizierung und/oder Merkmale von Eingabedaten ein. In mindestens einer Ausführungsform handelt es sich bei den von einem trainierten neuronalen Netzwerk als Ausgabedaten erstellten Bildinformationen und/oder anderen Informationen um Daten mit mehreren Dimensionen, wie hierin beschrieben. In mindestens einer Ausführungsform handelt es sich bei den von einem trainierten neuronalen Netzwerk als Ausgabedaten erstellten Bildinformationen und/oder anderen Informationen um eindimensionale Daten.
  • In mindestens einer Ausführungsform erstellt ein trainiertes neuronales Netzwerk Ausgangsdaten basierend auf einem Untersatz eines Satzes von Neuronen des trainierten neuronalen Netzwerks. In mindestens einer Ausführungsform wird ein Untersatz eines Satzes von Neuronen eines trainierten neuronalen Netzwerks durch das trainierte neuronale Netzwerk basierend auf Merkmalen von Eingabedaten, wie hierin beschrieben, berechnet. In mindestens einer Ausführungsform wird ein trainiertes neuronales Netzwerk durch ein Trainings-Framework so trainiert, dass es einen Untersatz eines Satzes von Neuronen verwendet, um basierend auf einem oder mehreren Identifikatoren während des Trainings Ausgabedaten zu erschließen oder anderweitig zu erstellen.
  • In mindestens einer Ausführungsform veranlasst das neuronale Netzwerk 212 die Verarbeitung eines oder mehrerer Rahmen 216, indem es Systeme und Verfahren verwendet, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform bewirkt das neuronale Netzwerk 212, dass ein oder mehrere Rahmen 216 verarbeitet werden, indem es Überblendungsfaktoren 214 der Rahmenbewegung erstellt, die in der Rahmeninterpolation verwendet werden, wie hierin mindestens in Verbindung mit 1 beschrieben. In mindestens einer Ausführungsform veranlasst das neuronale Netzwerk 212 die Verarbeitung eines oder mehrerer Rahmen 216 unter Verwendung von Systemen und Verfahren, die hierin zumindest in Verbindung mit 4 bis 22 beschrieben sind. In mindestens einer Ausführungsform werden ein oder mehrere Zwischenrahmen als Ergebnis des neuronalen Netzwerks 212 erstellt, das einen oder mehrere Rahmen zur Verarbeitung 216 veranlasst, wobei Systeme und Verfahren verwendet werden, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform werden ein oder mehrere Überblendungsfaktoren 214 als Ergebnis eines neuronalen Netzwerks 212 erstellt, das die Verarbeitung eines oder mehrerer Rahmen 216 veranlasst, wobei Systeme und Verfahren verwendet werden, wie sie hierin beschrieben sind.
  • In mindestens einer Ausführungsform führt der Prozessor 210 eine oder mehrere Anweisungen aus, um Rahmen 218 nachzubearbeiten (z. B. um zusätzliche Informationen in Rahmen einzublenden, Rahmen aufwärts abzutasten, Rahmen abwärts abzutasten, Rahmenelemente zu filtern, Restdaten zu Rahmen hinzuzufügen usw.), wobei er Systeme und Verfahren wie die hierin beschriebenen verwendet.
  • In mindestens einer Ausführungsform führt der Prozessor 210 eine oder mehrere Anweisungen aus oder führt sie anderweitig aus, um einen oder mehrere interpolierte Rahmen 220 zu erstellen, wie hierin beschrieben. In mindestens einer Ausführungsform führt der Prozessor 210 eine oder mehrere Anweisungen aus oder führt sie anderweitig aus, um einen oder mehrere interpolierte Rahmen 220 zu erstellen, wobei er Systeme und Verfahren verwendet, wie sie hierin mindestens in Verbindung mit 1 beschrieben sind, um einen oder mehrere interpolierte Rahmen 120 zu erzeugen. In mindestens einer Ausführungsform stellt der Prozessor 210 einen oder mehrere interpolierte Rahmen 222 für einen Rahmenpuffer 224 bereit, bei dem es sich um einen Rahmenpuffer wie den Rahmenpuffer 124 handelt, wie hierin mindestens in Verbindung mit 1 beschrieben.
  • In mindestens einer Ausführungsform hat der Rahmenpuffer 224 bereits den vorherigen Rahmen 226 (z. B. den vorherigen Rahmen 206) wiedergegeben. In mindestens einer Ausführungsform, die in 2 nicht veranschaulicht ist, wurde der vorherige Rahmen 226 zuvor unter Verwendung von Systemen und Verfahren wie den hierin beschriebenen verarbeitet, sodass beispielsweise der vorherige Rahmen 226 ein aktueller Rahmen in einer früheren Iteration der Überblendungsfaktoren der Rahmenbewegung war, die bei der Rahmeninterpolation verwendet werden. In mindestens einer Ausführungsform rendert der Bildspeicher 224 den vorherigen Rahmen 226 nicht, bevor der Prozessor 210 einen oder mehrere interpolierte Rahmen 228 für den Bildspeicher 224 bereitstellt 222. In mindestens einer Ausführungsform empfängt der Rahmenpuffer einen oder mehrere interpolierte Rahmen 228 und rendert sie unter Verwendung von Systemen und Verfahren, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform rendert der Rahmenpuffer 224 dann den aktuellen Rahmen 230 (z. B. den aktuellen Rahmen 208), nachdem er einen oder mehrere interpolierte Rahmen 228 gerendert hat. In mindestens einer Ausführungsform rendert der Rahmenpuffer 224 den aktuellen Rahmen 230 nicht, bevor ein nächster Satz von einem oder mehreren interpolierten Rahmen 228 (z. B. interpolierte Rahmen aus einer nachfolgenden Iteration von Überblendungsfaktoren der Rahmenbewegung, die in der Rahmeninterpolation verwendet werden) empfangen wird.
  • 3 veranschaulicht einen beispielhaften Prozess 300 zur Erstellung von interpolierten Videorahmen nach mindestens einer Ausführungsform. In mindestens einer Ausführungsform veranlasst ein Prozessor, wie der hierin zumindest in Verbindung mit 2 beschriebene Prozessor 202, die Ausführung einer oder mehrerer Anweisungen, um den Beispielprozess 300 auszuführen. In mindestens einer Ausführungsform verwendet ein Prozessor, wie der hierin mindestens in Verbindung mit 2 beschriebene Prozessor 210, ein neuronales Netzwerk, wie das hierin mindestens in Verbindung mit 2 beschriebene neuronale Netzwerk 212, um die Ausführung des Beispielprozesses 300 zu veranlassen.
  • In mindestens einer Ausführungsform wird in Schritt 302 des Beispielprozesses 300 ein vorheriger Rahmen empfangen. In mindestens einer Ausführungsform wird in Schritt 302 ein vorheriger Rahmen empfangen, wie beispielsweise der vorherige Rahmen 206, der hierin mindestens in Verbindung mit 2 beschrieben ist. In mindestens einer Ausführungsform wird in Schritt 302 ein vorheriger Rahmen von einem Prozessor wie dem Prozessor 202 empfangen, wie hierin mindestens in Verbindung mit 2 beschrieben. In mindestens einer Ausführungsform ist ein empfangener vorheriger Rahmen ein vorheriger Rahmen, der durch räumliches Upsampling erstellt wurde (z. B. durch räumliches Super-Sampling wie beispielsweise DLSS, XeSS (oder XeSS) von Intel@, FidelityFX™ Super Resolution von AMD@ usw.). In mindestens einer Ausführungsform ist ein vorheriger Rahmen, der in Schritt 302 empfangen wird, ein aktueller Rahmen aus einer vorherigen Iteration des Beispielprozesses 300. In mindestens einer Ausführungsform wird in Schritt 302 kein vorheriger Rahmen empfangen, wenn es sich beispielsweise um eine erste Iteration des Beispielprozesses 300 handelt. In mindestens einer Ausführungsform wird der Beispielprozess 300 nach Schritt 302 mit Schritt 304 fortgesetzt.
  • In mindestens einer Ausführungsform wird in Schritt 304 des Beispielprozesses 300 ein aktueller Rahmen empfangen. In mindestens einer Ausführungsform ist in Schritt 304 ein empfangener aktueller Rahmen ein aktueller Rahmen wie der aktuelle Rahmen 208, der hierin mindestens in Verbindung mit 2 beschrieben ist. In mindestens einer Ausführungsform ist ein empfangener aktueller Rahmen ein aktueller Rahmen, der durch räumliches Upsampling erstellt wurde (z. B. durch räumliches Super-Sampling, wie z. B. DLSS, XeSS (oder XeSS) von Intel®, FidelityFX™ Super Resolution von AMD® usw.). In mindestens einer Ausführungsform wird in Schritt 304 ein aktueller Rahmen von einem Prozessor wie dem Prozessor 202 empfangen, wie hierin mindestens in Verbindung mit 2 beschrieben. In mindestens einer Ausführungsform wird der Prozess 300 nach Schritt 304 in Schritt 306 fortgesetzt. In mindestens einer Ausführungsform sind ein aktueller Rahmen (z. B. empfangen in Schritt 304) und ein vorheriger Rahmen (z. B. empfangen in Schritt 306) Rahmen, die von einer Spielmaschine oder einem anderen System erstellt wurden, wie oben beschrieben. In mindestens einer Ausführungsform werden ein aktueller Rahmen und ein vorheriger Rahmen in der Reihenfolge (z. B. vorheriger Rahmen gefolgt von aktuellem Rahmen), in umgekehrter Reihenfolge (z. B. aktueller Rahmen gefolgt von vorherigem Rahmen), teilweise gleichzeitig (z. B. zu einer sich teilweise überschneidenden Zeit) oder vollständig gleichzeitig empfangen.
  • In mindestens einer Ausführungsform werden in Schritt 306 des Beispielprozesses 300 vorverarbeitete Rahmen einem neuronalen Netzwerk wie dem hierin zumindest in Verbindung mit 2 beschriebenen neuronalen Netzwerk 212 bereitgestellt. In mindestens einer Ausführungsform werden in Schritt 306 vorverarbeitete Rahmen, die einem neuronalen Netzwerk bereitgestellt werden, aus einem vorherigen Rahmen (z. B. empfangen in Schritt 302) und einem aktuellen Rahmen (z. B. empfangen in Schritt 304) erstellt (z. B. vorverarbeitet), wie hierin beschrieben. In mindestens einer Ausführungsform schließen die einem neuronalen Netzwerk bereitgestellten vorverarbeiteten Rahmen in Schritt 306 Rahmen ein, die zumindest teilweise auf einem oder mehreren zusätzlichen Rahmen wie den hierin beschriebenen basieren (z. B. einem oder mehreren Rahmen, die dem vorherigen Rahmen vorausgehen, einschließlich eines Rahmens, der dem vorherigen Rahmen unmittelbar vorausgeht). In mindestens einer Ausführungsform umfassen die einem neuronalen Netzwerk wie dem neuronalen Netzwerk 212 bereitgestellten vorverarbeiteten Rahmen eine Sequenz von N sequentiellen Rahmen (wobei N eine positive ganze Zahl ist), und in mindestens einer Ausführungsform umfasst die Sequenz sequentieller Rahmen einen oder mehrere interpolierte Rahmen und einen oder mehrere nicht interpolierte Rahmen. In mindestens einer Ausführungsform, die in 3 nicht veranschaulicht ist, werden einem neuronalen Netzwerk in Schritt zusätzliche Rahmeninformationen, wie die hierin beschriebenen (z. B. Bewegungsdaten, Tiefendaten, Kameradaten, Vertrauensmetriken und/oder Qualitätsmasken oder andere derartige Informationen), bereitgestellt. In mindestens einer Ausführungsform wird der Beispielprozess 300 nach Schritt 306 mit Schritt 308 fortgesetzt.
  • In mindestens einer Ausführungsform werden in Schritt 308 des Beispielprozesses 300 ein oder mehrere Überblendungsfaktoren (oder Mischgewichte) von einem neuronalen Netzwerk erstellt, das Systeme und Verfahren verwendet, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform werden in Schritt 308 auch ein oder mehrere Zwischenrahmen erstellt. In mindestens einer Ausführungsform werden in Schritt 308 ein oder mehrere Zwischenrahmen erstellt, die zumindest teilweise auf dem einen oder den mehreren Überblendungsfaktoren basieren, wobei Systeme und Verfahren wie die hierin beschriebenen verwendet werden. In mindestens einer Ausführungsform werden in Schritt 308 ein oder mehrere Überblendungsfaktoren erstellt, indem ein neuronales Netzwerk wie das hierin zumindest in Verbindung mit 2 beschriebene neuronale Netzwerk 212 verwendet wird. In mindestens einer Ausführungsform wird der Beispielprozess 300 nach Schritt 308 in Schritt 310 fortgesetzt.
  • In mindestens einem Beispielprozess werden in Schritt 310 des Beispielprozesses 300 ein oder mehrere Zwischenrahmen (z. B. ein oder mehrere in Schritt 308 erstellte Zwischenrahmen) von einem neuronalen Netzwerk unter Verwendung von Systemen und Verfahren, wie sie hierin beschrieben sind, verarbeitet. In mindestens einer Ausführungsform werden in Schritt 310 ein oder mehrere Zwischenrahmen unter Verwendung von Inpainting (z. B. Identifizieren und Schätzen fehlender Daten), Downsampling (z. B. Erzeugen einer Mehrfachauflösungsdarstellung von Daten in dem einen oder den mehreren Zwischenrahmen), Filterung (z. B. zum Verbessern eines oder mehrerer Elemente der Zwischenrahmen) oder anderen Operationen, wie sie hierin beschrieben sind, verarbeitet. In mindestens einer Ausführungsform werden in Schritt 310 ein oder mehrere Zwischenrahmen unter Verwendung eines neuronalen Netzwerks, wie dem hierin zumindest in Verbindung mit 2 beschriebenen neuronalen Netzwerk 212, verarbeitet. In mindestens einer Ausführungsform wird der Beispielprozess 300 nach Schritt 310 mit Schritt 312 fortgesetzt.
  • In mindestens einer Ausführungsform werden in Schritt 312 des Beispielprozesses 300 ein oder mehrere Zwischenrahmen (z. B. ein oder mehrere in Schritt 308 erstellte Zwischenrahmen und/oder ein oder mehrere in Schritt 310 verarbeitete Zwischenrahmen) mit Hilfe von Systemen und Verfahren, wie sie hierin beschrieben sind, nachbearbeitet. In mindestens einer Ausführungsform werden in Schritt 310 ein oder mehrere Zwischenrahmen unter Verwendung von Inpainting (z. B. Identifizieren und Schätzen fehlender Daten), Downsampling (z. B. Erzeugen einer Mehrfachauflösungsdarstellung von Daten in dem einen oder den mehreren Zwischenrahmen), Filterung (z. B. zum Verbessern eines oder mehrerer Elemente der Zwischenrahmen) oder anderen Operationen, wie sie beschrieben sind, verarbeitet. In mindestens einer Ausführungsform werden in Schritt 312 ein oder mehrere Zwischenrahmen unter Verwendung eines neuronalen Netzwerks wie dem hierin zumindest in Verbindung mit 2 beschriebenen neuronalen Netzwerk 212 nachbearbeitet. In mindestens einer Ausführungsform werden in Schritt 312 ein oder mehrere Zwischenrahmen mit Hilfe eines Prozessors, wie dem hierin zumindest in Verbindung mit 2 beschriebenen Prozessor 210, nachbearbeitet. In mindestens einer Ausführungsform werden in Schritt 312 ein oder mehrere Zwischenrahmen als Rahmen bereitgestellt, die überlagert werden (z. B. in Schritt 314, wie unten beschrieben). In mindestens einer Ausführungsform wird der Beispielprozess 300 nach Schritt 312 mit Schritt 314 fortgesetzt.
  • In mindestens einer Ausführungsform werden in Schritt 314 des Beispielprozesses 300 ein oder mehrere Zwischenrahmen gemischt, um einen oder mehrere interpolierte Rahmen zu erstellen, wobei Systeme und Verfahren verwendet werden, wie sie hierin mindestens in Verbindung mit 2 beschrieben sind. In mindestens einer Ausführungsform werden in Schritt 314 ein oder mehrere interpolierte Rahmen erstellt, indem z. B. die Inhalte eines oder mehrerer nachbearbeiteter Rahmen (z. B. die in Schritt 312 nachbearbeiteten Rahmen) gemischt werden. In mindestens einer Ausführungsform, zum Beispiel, wenn in Schritt 312 zwei Rahmen erstellt wurden, wird in Schritt 314 ein interpolierter Rahmen erstellt, indem die Pixel eines in Schritt 312 erstellten ersten Rahmens mit den Pixeln eines in Schritt 312 erstellten zweiten Rahmens kombiniert werden (z. B. werden die Pixel eines interpolierten Rahmens durch Mischen von Farben und/oder anderen Informationen aus in Schritt 312 erstellten Rahmen erstellt). In mindestens einer Ausführungsform, die in 3 nicht dargestellt ist, wird ein interpolierter Rahmen erstellt, der mindestens teilweise auf einer oder mehreren Mischgewichten basiert, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform wird der Beispielprozess 300 nach Schritt 314 mit Schritt 316 fortgesetzt.
  • In mindestens einer Ausführungsform werden in Schritt 316 des Beispielprozesses 300 ein oder mehrere interpolierte Rahmen unter Verwendung von Systemen und Verfahren gerendert, wie sie hierin mindestens in Verbindung mit 2 beschrieben sind. In mindestens einer Ausführungsform werden in Schritt 316 ein oder mehrere interpolierte Rahmen einem Rahmenpuffer wie dem Rahmenpuffer 224 bereitgestellt, der hierin zumindest in Verbindung mit 2 beschrieben ist. In mindestens einer Ausführungsform wird vor Schritt 316 ein vorheriger Rahmen (z. B. ein vorheriger Rahmen, der in Schritt 302 empfangen wurde) gerendert, bevor ein oder mehrere interpolierte Rahmen gerendert werden. In mindestens einer Ausführungsform wird ein vorheriger Rahmen (z. B. ein in Schritt 302 empfangener vorheriger Rahmen) gerendert, nachdem ein oder mehrere interpolierte Rahmen erstellt wurden (z. B. in Schritt 314) und bevor ein oder mehrere interpolierte Rahmen in Schritt 316 gerendert werden. In mindestens einer Ausführungsform wird der Beispielprozess 300 nach Schritt 316 mit Schritt 318 fortgesetzt.
  • In mindestens einer Ausführungsform wird in Schritt 318 des Beispielprozesses 300 ein aktueller Rahmen gerendert (z. B. ein aktueller Rahmen, der in Schritt 304 empfangen wurde), wobei Systeme und Verfahren verwendet werden, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform wird in Schritt 318 ein aktueller Rahmen erst gerendert, wenn in einer nachfolgenden Iteration des Beispielprozesses 300 (z. B. in Schritt 308) ein oder mehrere interpolierte Rahmen erstellt werden. In mindestens einer Ausführungsform wird der Beispielprozess 300 nach Schritt 318 mit Schritt 320 fortgesetzt.
  • In mindestens einer Ausführungsform wird in Schritt 320 des Beispielprozesses 300 ein aktueller Rahmen (z. B. ein in Schritt 304 empfangener aktueller Rahmen) zu einem vorherigen Rahmen, um eine nachfolgende Iteration des Beispielprozesses 300 zuzubereiten. In mindestens einer Ausführungsform wird der Beispielprozess 300 nach Schritt 320 in Schritt 302 fortgesetzt, um weitere Daten des Rahmens zu empfangen und eine nächste Iteration des Beispielprozesses 300 auszuführen. In mindestens einer Ausführungsform wird der Beispielprozess 300 nach Schritt 320 beendet, wenn beispielsweise keine Rahmen mehr zu verarbeiten sind.
  • In mindestens einer Ausführungsform werden die Operationen des Beispielprozesses 300 in einer anderen Reihenfolge ausgeführt, als in 3 veranschaulicht ist. In mindestens einer Ausführungsform werden die Operationen des Beispielprozesses 300 gleichzeitig oder parallel ausgeführt, sodass zum Beispiel der Schritt 302 und der Schritt 304 gleichzeitig ausgeführt werden oder eine Vielzahl von Zwischenrahmen gleichzeitig im Schritt 312 erstellt wird. In mindestens einer Ausführungsform werden die Operationen des Beispielprozesses 300 von einer Vielzahl von Threads ausgeführt, die auf einem oder mehreren Prozessoren, wie den hierin beschriebenen, unter Verwendung von Systemen und Verfahren, wie den hierin beschriebenen, arbeiten.
  • 4 veranschaulicht ein Beispieldiagramm 400, in dem Bewegungsvektoren verwendet werden, um einen interpolierten Rahmen nach mindestens einer Ausführungsform zu erstellen. In mindestens einer Ausführungsform umfasst ein aktueller Rahmen 402 ein dynamisches Objekt 404 und einen Schatten 416 des dynamischen Objekts 404. In mindestens einer Ausführungsform handelt es sich bei Objekten wie dem dynamischen Objekt 404 um dreidimensionale (3D) Objekte, die mit Systemen und Verfahren wie den hierin beschriebenen gerendert werden. In mindestens einer Ausführungsform handelt es sich bei Objekten wie dem dynamischen Objekt 404 um zweidimensionale (2D) Objekte, die mit Systemen und Verfahren wie den hierin beschriebenen gerendert werden. In mindestens einer Ausführungsform umfassen Objekte wie das dynamische Objekt 404 Pixel (z. B. eine 2D-Darstellung) eines 3D-Objekts. In mindestens einer Ausführungsform, die in 4 nicht veranschaulicht ist, sind Objekte wie das dynamische Objekt 404 vierdimensionale (oder höhere) Objekte. In mindestens einer Ausführungsform handelt es sich bei Objekten wie dem dynamischen Objekt 404 um eindimensionale (1D) oder niederdimensionale Objekte. In mindestens einer Ausführungsform werden Objekte wie das dynamische Objekt 404 als 3D-Objekte (z. B. unter Verwendung immersiver Techniken wie Virtual Reality oder erweiterte Realität) oder als höherdimensionale Objekte dargestellt. In mindestens einer Ausführungsform werden Objekte wie das dynamische Objekt 404 als 1 D-Objekte (oder niedriger) gerendert. In mindestens einer Ausführungsform wird der Schatten 416 des dynamischen Objekts 404 von einer oder mehreren Lichtquellen (in 4 nicht veranschaulicht) erstellt und auf ein oder mehrere andere Objekte des aktuellen Rahmens 402 geworfen (z. B. den Hintergrund, andere Objekte usw.). In mindestens einer Ausführungsform wird der aktuelle Rahmen 402 von einem Deep-Learning-Supersampling neuronalen Netzwerk empfangen, wie es hierin mindestens in Verbindung mit 65 bis 69 beschrieben ist.
  • In mindestens einer Ausführungsform werden Objekte wie das dynamische Objekt 404 als vierdimensionale (4D) oder höhere Objekte (z. B. 3D-Video mit Anzeige der Zeit) gerendert. In mindestens einer Ausführungsform werden Systeme, Verfahren und Techniken, wie sie hierin mindestens in Verbindung mit 4 bis 10 beschrieben sind, verwendet, um interpolierte Rahmen von 3D-Videos zu erstellen (z. B. Rahmen, die von einer immersiven 3D-Umgebung wie einem Spiel oder einer Simulation der virtuellen Realität (VR) erzeugt werden und die mit einem VR-Headset oder einer anderen Anzeigevorrichtung angezeigt werden).
  • In mindestens einer Ausführungsform beschreiben ein oder mehrere Bewegungsvektoren 406 des aktuellen Rahmens die Bewegung von Objekten wie dem dynamischen Objekt 404. In mindestens einer Ausführungsform beschreiben die Bewegungsvektoren 406 des aktuellen Rahmens die Vorwärtsbewegung (z. B. die Bewegung von einem vorherigen Rahmen) von dynamischen Objekten wie dem hierin beschriebenen dynamischen Objekt 404. In mindestens einer Ausführungsform beschreiben die Bewegungsvektoren 406 des aktuellen Rahmens beispielsweise die Bewegung von Objekten wie dem dynamischen Objekt 404 aus dem vorherigen Rahmen 502 (z. B. dem dynamischen Objekt 504), wie hierin mindestens in Verbindung mit 5 beschrieben. In mindestens einer Ausführungsform beschreiben die Bewegungsvektoren 406 des aktuellen Rahmens die Rückwärtsbewegung (z. B. die Bewegung zu einem vorherigen Rahmen) von dynamischen Objekten wie dem dynamischen Objekt 404, wie hierin beschrieben. In mindestens einer Ausführungsform werden die Bewegungsvektoren 406 des aktuellen Rahmens von einer Spielmaschine, einer Grafikmaschine oder einer Multimediamaschine, wie sie hierin beschrieben sind, bereitgestellt. In mindestens einer Ausführungsform werden die Bewegungsvektoren 406 des aktuellen Rahmens von einer anderen Quelle bereitgestellt (z. B. erstellt von einem neuronalen Netzwerk wie den hierin beschriebenen). In mindestens einer Ausführungsform ist eine Stelle des dynamischen Objekts 404 im aktuellen Rahmen 402 (z. B. vor der Anwendung der Bewegungsvektoren 406 des aktuellen Rahmens) ein Endpunkt der Bewegung, die dem dynamischen Objekt 404 zugeordnet ist.
  • In mindestens einer Ausführungsform, die in 4 nicht veranschaulicht ist, werden eine oder mehrere Metriken oder Qualitätsmasken der Bewegungsvektoren 406 des aktuellen Rahmens mit Hilfe von Systemen und Verfahren bereitgestellt, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform kann eine Qualitätsmaske beispielsweise einen Hinweis darauf bereitstellen, dass die aktuellen Bewegungsvektoren 406 des Rahmens zuverlässig oder unzuverlässig sind oder andere derartige Eigenschaften aufweisen. In mindestens einer Ausführungsform werden eine oder mehrere Metriken oder Qualitätsmasken für jeden Bewegungsvektor des aktuellen Rahmens der Bewegungsvektoren 406 bereitgestellt. In mindestens einer Ausführungsform werden eine oder mehrere Metriken oder Qualitätsmasken für einen Untersatz von Bewegungsvektoren der Bewegungsvektoren des aktuellen Rahmens 406 bereitgestellt. In mindestens einer Ausführungsform werden eine oder mehrere Metriken oder Qualitätsmasken für Bewegungen bereitgestellt, die einem oder mehreren Pixeln des aktuellen Rahmens 402 zugeordnet sind. In mindestens einer Ausführungsform wird eine einzige Metrik oder Qualitätsmaske für die Bewegungsvektoren des aktuellen Rahmens 406 bereitgestellt.
  • In mindestens einer Ausführungsform werden die Bewegungsvektoren 406 des aktuellen Rahmens in einen mittleren Zwischenrahmen 408 gestreut. In mindestens einer Ausführungsform, zum Beispiel, wenn die Bewegungsvektoren 406 des aktuellen Rahmens die Bewegung eines Objekts aus einem vorherigen Rahmen beschreiben (z. B. von einem vorherigen Rahmen zum aktuellen Rahmen 402), zeigen die Bewegungsvektoren 406 des aktuellen Rahmens von einer Position eines Objekts (z. B. des dynamischen Objekts 404, wie unten beschrieben) zurück zu einer Position des dynamischen Objekts 404 in einem vorherigen Rahmen, wie hierin beschrieben. In mindestens einer Ausführungsform wird z. B. eine Bewegung mit dem Wert (200,0f, 0,0f, 0,0f) (z. B. eine Bewegung von links nach rechts) durch einen Bewegungsvektor des aktuellen Rahmens mit dem Wert (-200,0f, 0,0f, 0,0f) dargestellt (z. B. ein Zurückzeigen zu der Stelle, an der sich ein dynamisches Objekt in einem vorherigen Rahmen befand). In mindestens einer Ausführungsform wird ein Bewegungsvektor des aktuellen Rahmens mit dem Wert (-200,0f, 0,0f, 0,0f) in einen mittleren Zwischenrahmen 408 mit einem gestreuten Bewegungsvektor mit dem Wert (-100,0f, 0,0f, 0,0f) gestreut. In mindestens einer Ausführungsform sind die Bewegungsvektoren 406 des aktuellen Rahmens 3D-Bewegungsvektoren. In mindestens einer Ausführungsform sind die Bewegungsvektoren 406 des aktuellen Rahmens 2D-Bewegungsvektoren (oder Vektoren anderer Dimensionen). In mindestens einer Ausführungsform kann ein 3D-Bewegungsvektor (oder höher) in einen 2D- oder 1 D-Bewegungsvektor umgewandelt werden, indem eine oder mehrere Vektorkomponenten auf Null eingestellt werden. In mindestens einer Ausführungsform kann beispielsweise ein 3D-Bewegungsvektor von (200,0f, 100,0f, -200,0f) in einen 2D-Bewegungsvektor umgewandelt werden, indem eine Komponente auf Null eingestellt wird, was zu (200,0f, 100,0f, 0,0f) oder (200,0f, 100,0f) führt. In mindestens einer Ausführungsform kann beispielsweise ein 3D-Bewegungsvektor von (200,0f, 100,0f, -200,0f) in einen 1 D-Bewegungsvektor umgewandelt werden, indem zwei Komponenten auf Null eingestellt werden, was (200,0f, 0,0f, 0,0f), (200,0f, 0,0f) oder (200,0f) ergibt.
  • In mindestens einer Ausführungsform wird ein gestreuter Bewegungsvektor verwendet, um das dynamische Objekt 404 basierend auf der Bewegungsvektorverzerrung 410 in einen aktuellen bis vorherigen Zwischenrahmen 412 zu bringen. In mindestens einer Ausführungsform transformiert eine Bewegungsvektorverzerrung 410 eines dynamischen Objekts auf einen Zwischenrahmen, wie beispielsweise den aktuellen bis vorherigen Zwischenrahmen 412 basierend auf Bewegung, das dynamische Objekt 404 in eine Position im aktuellen bis vorherigen Zwischenrahmen 412 basierend auf Bewegung, indem ein oder mehrere Bewegungsvektoren auf das dynamische Objekt 404 angewendet werden. In mindestens einer Ausführungsform transformiert eine Bewegungsvektorverzerrung 410 eines dynamischen Objekts auf einen Zwischenrahmen wie den aktuellen bis vorherigen Zwischenrahmen 412 basierend auf Bewegung das dynamische Objekt 404 in eine Position im aktuellen bis vorherigen Zwischenrahmen 412, indem ein skalierter Bewegungsvektor angewendet wird. In mindestens einer Ausführungsform, zum Beispiel, wenn ein Bewegungsvektor der Bewegungsvektoren 406 des aktuellen Rahmens ein Bewegungsvektor von (-200,0f, 0,0f, 0,0f) ist, überträgt eine Bewegungsvektorverzerrung 410 des dynamischen Objekts 404 das dynamische Objekt 404 um die Hälfte des Bewegungsvektors (-200,0f, 0,0f, 0,0f) (z. B. den Vektor (-100,0f, 0,0f, 0,0f)) auf eine Position, die durch das Objekt 414 im aktuellen bis vorherigen Zwischenrahmen 412 dargestellt wird (z. B. auf halbem Weg zwischen einer Position in einem vorherigen Rahmen 502 und einer Position im aktuellen Rahmen 402). In mindestens einer Ausführungsform wird ein Schatten 416 nicht durch die Bewegungsvektoren 406 des aktuellen Rahmens transformiert, da es sich bei dem Schatten 416 nicht um ein dynamisches Objekt handelt und sich der Schatten 416 dementsprechend im aktuellen bis zum vorherigen Zwischenrahmen 412 nicht bewegt (z. B. im Schatten 418). In mindestens einer Ausführungsform, die in 4 nicht veranschaulicht ist, werden Schattenbewegungsvektoren beispielsweise von einer Spielmaschine bereitgestellt, sodass der Schatten 416 als dynamisches Objekt behandelt und mit dem dynamischen Objekt 404 bewegt werden kann. In mindestens einer Ausführungsform werden die durch das Beispieldiagramm 400 veranschaulichten Prozesse in dem hierin mindestens in Verbindung mit 5 beschriebenen Beispieldiagramm 500 fortgesetzt.
  • 5 veranschaulicht ein Beispieldiagramm 500, in dem nach mindestens einer Ausführungsform Vorwärtsbewegungsvektoren berechnet werden. In mindestens einer Ausführungsform umfasst ein vorheriger Rahmen 502 ein dynamisches Objekt 504 und einen Schatten 518 des dynamischen Objekts 504. In mindestens einer Ausführungsform handelt es sich bei Objekten wie dem dynamischen Objekt 504 um Objekte, wie sie hierin mindestens in Verbindung mit 4 beschrieben sind. In mindestens einer Ausführungsform wird der Schatten 518 des dynamischen Objekts 504 von einer oder mehreren Lichtquellen (in 5 nicht veranschaulicht) erstellt und auf ein oder mehrere andere Objekte des vorherigen Rahmens 502 (z. B. den Hintergrund, andere Objekte usw.) geworfen, wie hierin beschrieben. In mindestens einer Ausführungsform wird der vorherige Rahmen 502 von einem neuronalen Netzwerk mit Deep-Learning-Supersampling empfangen, wie es hierin mindestens in Verbindung mit 65 bis 69 beschrieben ist.
  • In mindestens einer Ausführungsform werden die Bewegungsvektoren 506 des aktuellen Rahmens (z. B. die Bewegungsvektoren 406 des aktuellen Rahmens, die hierin mindestens in Verbindung mit 4 beschrieben sind) empfangen. In mindestens einer Ausführungsform werden die Vorwärtsbewegungsvektoren 508 berechnet, wobei Systeme und Verfahren verwendet werden, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform werden die Vorwärtsbewegungsvektoren 508 basierend auf einem oder mehreren Bewegungsvektoren des aktuellen Rahmens 506 berechnet. In mindestens einer Ausführungsform beschreibt ein Bewegungsvektor beispielsweise eine Bewegung (z. B. von einem aktuellen Rahmen wie dem aktuellen Rahmen 402 zurück zum vorherigen Rahmen 502), wie hierin beschrieben. In mindestens einer Ausführungsform werden solche Vektoren invertiert, sodass zum Beispiel ein Bewegungsvektor von (-200,0f, 0,0f, 0,0f) invertiert werden kann, um einen Vorwärtsbewegungsvektor 508 von (200,0f, 0,0f, 0,0f) wie hierin beschrieben zu berechnen. In mindestens einer Ausführungsform wird ein Vorwärtsbewegungsvektor 508 mit dem Wert (200,0f, 0,0f, 0,0f) in einen mittleren Zwischenrahmen 510 mit einem gestreuten Bewegungsvektor mit dem Wert (100,0f, 0,0f, 0,0f) gestreut. In mindestens einer Ausführungsform sind die Vorwärtsbewegungsvektoren 508 3D-Bewegungsvektoren. In mindestens einer Ausführungsform sind die Vorwärtsbewegungsvektoren 508 2D-Bewegungsvektoren (oder andere dimensionale Vektoren). In mindestens einer Ausführungsform kann ein 3D-Bewegungsvektor (oder höher) in einen 2D- oder 1 D-Bewegungsvektor umgewandelt werden, indem eine oder mehrere Vektorkomponenten auf Null eingestellt werden. In mindestens einer Ausführungsform kann beispielsweise ein Bewegungsvektor von (200,0f, 100,0f, -200,0f) in einen 2D-Bewegungsvektor umgewandelt werden, indem eine Komponente auf Null eingestellt wird, was zu (200,0f, 100,0f, 0,0f) oder (200,0f, 100,0f) führt. In mindestens einer Ausführungsform kann beispielsweise ein 3D-Bewegungsvektor von (200,0f, 100,0f, -200,0f) in einen 1 D-Bewegungsvektor umgewandelt werden, indem zwei Komponenten auf Null eingestellt werden, was (200,0f, 0,0f, 0,0f), (200,0f, 0,0f) oder (200,0f) ergibt.
  • In mindestens einer Ausführungsform wird ein gestreuter Vorwärtsbewegungsvektor verwendet, um die Bewegungsvektorverzerrung 512 des dynamischen Objekts 504 auf einen vorherigen bis aktuellen Zwischenrahmen 514 basierend auf der Bewegung. In mindestens einer Ausführungsform transformiert eine Bewegungsvektorverzerrung 512 eines dynamischen Objekts auf einen Zwischenrahmen, wie beispielsweise den vor dem aktuellen Zwischenrahmen 514, basierend auf Bewegung, das dynamische Objekt 504 in eine Position im vor dem aktuellen Zwischenrahmen 514, indem ein oder mehrere Bewegungsvektoren auf das dynamische Objekt 504 angewendet werden. In mindestens einer Ausführungsform transformiert eine Bewegungsvektorverzerrung 512 eines dynamischen Objekts auf einen Zwischenrahmen, wie beispielsweise den vor dem aktuellen Zwischenrahmen 514, basierend auf der Bewegung, das dynamische Objekt 504 in eine Position im vor dem aktuellen Zwischenrahmen 514, indem ein skalierter Bewegungsvektor angewendet wird. In mindestens einer Ausführungsform, zum Beispiel, wenn ein Bewegungsvektor ein Vorwärtsbewegungsvektor von (200,0f, 0,0f, 0,0f) ist, übersetzt eine Bewegungsvektorverzerrung 512 des dynamischen Objekts 504 das dynamische Objekt 504 um die Hälfte des Vorwärtsbewegungsvektors (200,0f, 0,0f, 0,0f) (z. B. Vektor (100,0f, 0,0f, 0,0f)) in eine Position, die durch das Objekt 516 im vorherigen bis zum aktuellen Zwischenrahmen 514 dargestellt wird (z. B. auf halbem Weg zwischen einer Position im vorherigen Rahmen 502 und einer Position im aktuellen Rahmen 402). In mindestens einer Ausführungsform wird der Schatten 518 nicht durch Vorwärtsbewegungsvektoren transformiert, da es sich bei dem Schatten 518 nicht um ein dynamisches Objekt handelt. Dementsprechend bleibt der Schatten 518 vor dem aktuellen Zwischenrahmen 514 unbewegt (er befindet sich z. B. im Schatten 520). In mindestens einer Ausführungsform, die in 5 nicht veranschaulicht ist, werden Schattenbewegungsvektoren beispielsweise von einer Spielmaschine bereitgestellt, sodass der Schatten 518 als dynamisches Objekt behandelt und mit dem dynamischen Objekt 504 bewegt werden kann. In mindestens einer Ausführungsform werden die im Beispieldiagramm 500 veranschaulichten Prozesse im Beispieldiagramm 600 fortgesetzt, das hierin mindestens in Verbindung mit 6 beschrieben ist.
  • 6 veranschaulicht ein Beispieldiagramm 600, in dem die optische Flussanalyse verwendet wird, um Zwischenrahmen zu erstellen, nach mindestens einer Ausführungsform. In mindestens einer Ausführungsform werden ein aktueller Rahmen 602 (bei dem es sich um einen aktuellen Rahmen wie den aktuellen Rahmen 402 handelt, der hierin mindestens in Verbindung mit 4 beschrieben wird) und ein vorheriger Rahmen 606 (bei dem es sich um einen vorherigen Rahmen wie den vorherigen Rahmen 502 handelt, der hierin mindestens in Verbindung mit 5 beschrieben wird) als Eingabe für den optischen Fluss 610 verwendet. In mindestens einer Ausführungsform schließt der aktuelle Rahmen 602 ein dynamisches Objekt 604 (und einen Schatten) ein, wie hierin mindestens in Verbindung mit 4 beschrieben, und der vorherige Rahmen 606 schließt ein dynamisches Objekt 608 (und einen Schatten) ein, wie hierin mindestens in Verbindung mit 5 beschrieben. In mindestens einer Ausführungsform verschiebt der optische Fluss 610 den Inhalt des vorherigen Rahmens 606 basierend auf dem Fluss in den vorherigen bis zum aktuellen Zwischenrahmen 616. In mindestens einer Ausführungsform verschiebt der optische Fluss 610 den Inhalt des aktuellen Rahmens 602 basierend auf dem Fluss in den aktuellen bis vorherigen Zwischenrahmen 624.
  • In mindestens einer Ausführungsform erstellt der optische Fluss 610 Bewegungsvektoren, die die scheinbare Bewegung von Objekten (z. B. dynamische und statische Objekte) in einer Szene darstellen, basierend zumindest teilweise auf der relativen Bewegung zwischen einem Blickpunkt (z. B. einer Kamera) und Objekten in einer Szene. In mindestens einer Ausführungsform, zum Beispiel, wenn sich eine Kamera von links nach rechts bewegt, scheinen sich statische Objekte in einer Szene von rechts nach links zu bewegen, während dynamische Objekte eine Kamerabewegung aufweisen, die zu ihrer dynamischen Bewegung hinzugefügt wird. In mindestens einer Ausführungsform wird der optische Fluss, wie beispielsweise der optische Fluss 610, basierend auf einer oder mehreren Korrespondenzen zwischen Objekten in z.B. einem aktuellen Rahmen und einem vorherigen Rahmen geschätzt. In mindestens einer Ausführungsform schließt der optische Fluss, wie beispielsweise der optische Fluss 610, eine oder mehrere Vertrauensmetriken oder Qualitätsmasken der Bewegungsvektoren des optischen Flusses ein, wie hierin beschrieben.
  • In mindestens einer Ausführungsform, wie im Beispieldiagramm 600 veranschaulicht, verschiebt der optische Fluss 610 den Inhalt des vorherigen Rahmens 606 auf der Basis des Flusses auf den vorherigen bis zum aktuellen Zwischenrahmen 616, sodass sich das dynamische Objekt 608 auf eine durch das Objekt 618 angezeigte Position und ein Schatten des dynamischen Objekts 608 auf eine durch die Schattenobjekte 630 angezeigte Position bewegt. In mindestens einer Ausführungsform, wie in 6 veranschaulicht, hat der optische Fluss 610 einen Schatten des dynamischen Objekts 608 aufgrund von Unsicherheiten im optischen Fluss 610 an eine Vielzahl von Positionen verschoben (z. B. wie durch eine Vielzahl von Objekten der Schattenobjekte 630 angezeigt). In mindestens einer Ausführungsform werden ein oder mehrere Flussvektoren, wie die hierin beschriebenen, verwendet, um 612 Elemente des vorherigen Rahmens 606 zu streuen, und die Flussvektorverzerrung 614 wird verwendet, um den vorherigen bis zum aktuellen Zwischenrahmen 616 basierend auf dem Fluss zu erstellen, unter Verwendung von Techniken, Systemen und Verfahren, wie die hierin beschriebenen.
  • In mindestens einer Ausführungsform, wie im Beispieldiagramm 600 veranschaulicht, verschiebt der optische Fluss 610 den Inhalt des aktuellen Rahmens 602 basierend auf dem Fluss in den aktuellen bis vorherigen Zwischenrahmen 624, sodass sich das dynamische Objekt 604 an eine durch das Objekt 626 angezeigte Position und ein Schatten des dynamischen Objekts 604 an eine durch die Schattenobjekte 628 angezeigte Position bewegt. In mindestens einer Ausführungsform, wie in 6 veranschaulicht, hat der optische Fluss 610 einen Schatten des dynamischen Objekts 604 aufgrund von Unsicherheiten im optischen Fluss 610 an eine Vielzahl von Positionen verschoben (z. B. wie durch eine Vielzahl von Objekten der Schattenobjekte 628 angezeigt). In mindestens einer Ausführungsform werden ein oder mehrere Flussvektoren wie die hierin beschriebenen verwendet, um 620 Elemente des aktuellen Rahmens 602 zu streuen, und die Flussvektorverzerrung 622 wird verwendet, um basierend auf dem Fluss zum vorherigen Zwischenrahmen 624 zu strömen, wobei Techniken, Systeme und Verfahren wie die hierin beschriebenen verwendet werden. In mindestens einer Ausführungsform werden die im Beispieldiagramm 600 veranschaulichten Prozesse im Beispieldiagramm 700 fortgesetzt, das hierin mindestens in Verbindung mit 7 beschrieben ist.
  • 7 veranschaulicht ein Beispieldiagramm 700, in dem nach mindestens einer Ausführungsform Vorwärtsbewegungskandidaten gemischt werden. In mindestens einer Ausführungsform werden ein vorheriger Rahmen 702 (z. B. vorheriger Rahmen 502), ein auf Bewegung basierender vorheriger bis aktueller Zwischenrahmen 704 (z. B. vorheriger bis aktueller Zwischenrahmen 514) und ein auf Fluss basierender vorheriger bis aktueller Zwischenrahmen 706 (z. B. vorheriger bis aktueller Zwischenrahmen 616) unter Verwendung von Mischgewichten 708 gemischt, wobei Systeme und Verfahren verwendet werden, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform werden die Mischgewichte 708 von einem neuronalen Netzwerk 714 erstellt (z. B. dem neuronalen Netzwerk 110 und/oder dem neuronalen Netzwerk 212, wie hierin mindestens in Verbindung mit 1 und 2 beschrieben).
  • In mindestens einer Ausführungsform wird ein gemischter vorheriger bis aktueller Zwischenrahmen 710 als Ergebnis des vorherigen Rahmens 702, des vorherigen bis aktuellen Zwischenrahmens 704 basierend auf der Bewegung und des vorherigen bis aktuellen Zwischenrahmens 704 basierend auf dem Fluss erstellt, wobei Mischgewichte 708 verwendet werden. In mindestens einer Ausführungsform werden, wenn der vorherige Rahmen 702, der auf der Bewegung basierende vorherige bis aktuelle Zwischenrahmen 704 und der auf dem Fluss basierende vorherige bis aktuelle Zwischenrahmen 706 unter Verwendung der Mischgewichte 708 gemischt werden, die Daten des aktuellen Rahmens 716 (z. B. der aktuelle Rahmen 402, der auf der Bewegung basierende vorherige bis aktuelle Zwischenrahmen 412 und der auf dem Fluss basierende vorherige bis aktuelle Zwischenrahmen 624) ebenfalls unter Verwendung der Mischgewichte 708 gemischt, um einen gemischten vorherigen bis aktuellen Zwischenrahmen 710 zu erstellen. In mindestens einer Ausführungsform, wenn der vorherige Rahmen 702, der auf der Bewegung basierende vorherige bis aktuelle Zwischenrahmen 704 und der auf dem Fluss basierende vorherige bis aktuelle Zwischenrahmen 706 unter Verwendung der Mischgewichte 708 gemischt werden, werden auch die Zusatzinformationen 718 unter Verwendung der Mischgewichte 708 gemischt, um einen gemischten vorherigen bis aktuellen Zwischenrahmen 710 zu erstellen. In mindestens einer Ausführungsform schließen die Zusatzinformationen beispielsweise Qualitätsmasken, Hinweise darauf, ob Bewegungsvektoren und/oder Stromvektoren doppelte Objekte erstellen und/oder ob bei der Erstellung einer Mischung aus vorherigem bis aktuellem Zwischenrahmen 710, Tiefen-, Bewegungs-, Okklusionsmasken usw. eine zusätzliche De-Okklusion erfolgt, ein. In mindestens einer Ausführungsform werden die im Beispieldiagramm 700 veranschaulichten Prozesse im Beispieldiagramm 800 fortgesetzt, das hierin mindestens in Verbindung mit 8 beschrieben wird.
  • 8 veranschaulicht ein Beispieldiagramm 800, in dem nach mindestens einer Ausführungsform Rückwärtsbewegungskandidaten gemischt werden. In mindestens einer Ausführungsform werden ein aktueller Rahmen 802 (z. B. aktueller Rahmen 402), ein auf bewegungsbasiertem Strömen basierender vorheriger bis aktueller Zwischenrahmen 804 (z. B. aktueller bis vorheriger Zwischenrahmen 412) und ein auf Fluss basierender vorheriger bis aktueller Zwischenrahmen 806 (z. B. aktueller bis vorheriger Zwischenrahmen 624) unter Verwendung von Mischgewichten 808 gemischt, wobei Systeme und Verfahren wie die hierin beschriebenen verwendet werden. In mindestens einer Ausführungsform werden die Mischgewichte 808 von einem neuronalen Netzwerk 814 erstellt (z. B. dem neuronalen Netzwerk 110 und/oder dem neuronalen Netzwerk 212, wie hierin mindestens in Verbindung mit 1 und 2 beschrieben).
  • In mindestens einer Ausführungsform wird ein gemischter aktueller bis vorheriger Zwischenrahmen 810 erstellt, indem der aktuelle Rahmen 802, der aktuelle bis vorherige Zwischenrahmen 804 basierend auf der Bewegung und der aktuelle bis vorherige Zwischenrahmen 806 basierend auf dem Fluss unter Verwendung der Mischgewichte 808 gemischt werden. In mindestens einer Ausführungsform werden, wenn der aktuelle Rahmen 802, der auf Bewegung basierende vorherige bis aktuelle Zwischenrahmen 804 und der auf Fluss basierende vorherige bis aktuelle Zwischenrahmen 806 unter Verwendung von Mischgewichten 808 gemischt werden, auch die Daten des aktuellen Rahmens 816 (z. B. der auf Bewegung basierende vorherige Rahmen 502, der auf Bewegung basierende vorherige bis aktuelle Zwischenrahmen 514 und der auf Fluss basierende vorherige bis aktuelle Zwischenrahmen 616) unter Verwendung von Mischgewichten 808 gemischt, um eine Mischung des aktuellen bis vorherigen Zwischenrahmens 810 zu erstellen. In mindestens einer Ausführungsform, wenn der aktuelle Rahmen 802, der auf Bewegung basierende vorherige Zwischenrahmen 804 und der auf Fluss basierende vorherige Zwischenrahmen 806 unter Verwendung von Mischgewichten 808 gemischt werden, werden Zusatzinformationen 818, wie die oben beschriebenen, ebenfalls unter Verwendung von Mischgewichten 808 gemischt, um einen gemischten aktuellen bis vorherigen Zwischenrahmen 810 zu erstellen. In mindestens einer Ausführungsform werden die im Beispieldiagramm 800 veranschaulichten Prozesse im Beispieldiagramm 900 fortgesetzt, das hierin mindestens in Verbindung mit 9 beschrieben ist.
  • 9 veranschaulicht ein Beispieldiagramm 900, in dem ein interpolierter Rahmen nach mindestens einer Ausführungsform erstellt wird. In mindestens einer Ausführungsform werden ein überblendeter vorheriger bis aktueller Zwischenrahmen 902 (z. B. überblendeter vorheriger bis aktueller Zwischenrahmen 710) und ein überblendeter aktueller bis vorheriger Zwischenrahmen 904 (z. B. überblendeter aktueller bis vorheriger Zwischenrahmen 810) über die Überblendungsform 906 unter Verwendung von Systemen und Verfahren, wie sie hierin zumindest in Verbindung mit 2 und 3 beschrieben sind, überblendet, um einen oder mehrere interpolierte Rahmen 908 zu erstellen (z. B. um einen oder mehrere interpolierte Rahmen 220 zu erstellen, hierin mindestens in Verbindung mit 2 beschrieben). In mindestens einer Ausführungsform wird durch die Verwendung von Überblendung 906 zur Erstellung eines oder mehrerer interpolierter Rahmen 908 der interpolierte Rahmen 120 erstellt, der hierin mindestens in Verbindung mit 1 beschrieben wird. In mindestens einer Ausführungsform schließt die Verwendung von Überblendung 906 zur Erstellung eines oder mehrerer interpolierter Rahmen 908 die Nachbearbeitung von Rahmen 218 und/oder die Erstellung interpolierter Rahmen 220 ein, die hierin mindestens in Verbindung mit 2 beschrieben sind.
  • 10 veranschaulicht einen Beispielprozess 1000 zur Erstellung eines interpolierten Rahmens unter Verwendung eines neuronalen Netzwerks, nach mindestens einer Ausführungsform. In mindestens einer Ausführungsform veranlasst ein Prozessor, wie der hierin mindestens in Verbindung mit 2 beschriebene Prozessor 202, die Ausführung einer oder mehrerer Anweisungen, um den Beispielprozess 1000 auszuführen. In mindestens einer Ausführungsform verwendet ein Prozessor wie der hierin mindestens in Verbindung mit 2 beschriebene Prozessor 210 ein neuronales Netzwerk wie das hierin mindestens in Verbindung mit 2 beschriebene neuronale Netzwerk 212, um den Beispielprozess 1000 auszuführen. In mindestens einer Ausführungsform veranschaulicht der Beispielprozess 1000 Prozesse, Systeme und Verfahren, die hierin zumindest in Verbindung mit 4 bis 9 beschrieben sind.
  • In mindestens einer Ausführungsform wird in Schritt 1002 des Beispielprozesses 1000 ein aktueller Rahmen (z. B. aktueller Rahmen 208, hierin mindestens in Verbindung mit 2 beschrieben) empfangen. In mindestens einer Ausführungsform, die in 10 nicht veranschaulicht ist, wird in Schritt 1002 auch ein vorheriger Rahmen empfangen (z. B. vorheriger Rahmen 206, hierin zumindest in Verbindung mit 2 beschrieben). In mindestens einer Ausführungsform wird der Beispielprozess 1000 nach Schritt 1002 mit Schritt 1004 fortgesetzt.
  • In mindestens einer Ausführungsform, in Schritt 1004 des Beispielprozesses 1000, wird die aktuelle Bewegung des Rahmens empfangen. In mindestens einer Ausführungsform, in Schritt 1004, schließt die Bewegung des aktuellen Rahmens Bewegungsvektoren von dynamischen Objekten und/oder optische Flussvektoren von statischen Objekten ein, wie hierin beschrieben. In mindestens einer Ausführungsform, die in 10 nicht veranschaulicht ist, werden auch weitere Metriken zur Konfidenz und/oder Qualitätsmasken der empfangenen aktuellen Rahmenbewegungen empfangen. In mindestens einer Ausführungsform wird der Beispielprozess 1000 nach Schritt 1004 mit Schritt 1006 fortgesetzt.
  • In mindestens einer Ausführungsform, in Schritt 1006 des Beispielprozesses 1000, werden andere Bewegungsvektoren aus der aktuellen Rahmenbewegung berechnet, wie hierin beschrieben. In mindestens einer Ausführungsform können in Schritt 1006 beispielsweise Vorwärtsbewegungsvektoren aus Rückwärtsbewegungsvektoren berechnet werden, Rückwärtsbewegungsvektoren können aus Vorwärtsbewegungsvektoren berechnet werden oder optische Flussvektoren können unter Verwendung von Tiefe, Kameraposition und/oder anderen solchen Daten berechnet werden. In mindestens einer Ausführungsform wird der Beispielprozess 1000 nach Schritt 1006 mit Schritt 1008 fortgesetzt.
  • In mindestens einer Ausführungsform werden in Schritt 1008 des Beispielprozesses 1000 ein oder mehrere bewegungsverzogene Zwischenbilder unter Verwendung von Systemen und Verfahren wie den hierin beschriebenen erstellt. In mindestens einer Ausführungsform werden in Schritt 1008 ein oder mehrere bewegungsverzerrte Zwischenbilder erstellt, die beispielsweise auf Vorwärtsbewegungsvektoren, Rückwärtsbewegungsvektoren oder anderen derartigen Bewegungsvektoren basieren. In mindestens einer Ausführungsform wird der Beispielprozess 1000 nach Schritt 1008 mit Schritt 1010 fortgesetzt.
  • In mindestens einer Ausführungsform werden in Schritt 1010 des Beispielprozesses 1000 ein oder mehrere gestörte Flusszwischenbilder mit Hilfe von Systemen und Verfahren erstellt, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform werden in Schritt 1010 ein oder mehrere gestörte Flusszwischenbilder erstellt, die beispielsweise auf optischen Vorwärtsflussvektoren, optischen Rückwärtsflussvektoren oder anderen solchen Flussvektoren basieren. In mindestens einer Ausführungsform wird der Beispielprozess 1000 nach Schritt 1010 mit Schritt 1012 fortgesetzt.
  • In mindestens einer Ausführungsform werden in Schritt 1012 des Beispielprozesses 1000 ein oder mehrere Überblendungsfaktoren erstellt, um Zwischenbilder zu überblenden, wobei Systeme und Verfahren verwendet werden, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform werden in Schritt 1012 ein oder mehrere überblendete Zwischenbilder unter Verwendung von Überblendungsfaktoren (oder Mischgewichten) erstellt, die von einem neuronalen Netzwerk wie dem hierin mindestens in Verbindung mit 2 beschriebenen neuronalen Netzwerk 212 erzeugt werden. In mindestens einer Ausführungsform wird der Beispielprozess 1000 nach Schritt 1012 in Schritt 1014 fortgesetzt.
  • In mindestens einer Ausführungsform werden in Schritt 1014 des Beispielprozesses 1000 ein oder mehrere Zwischenbilder (z. B. unter Verwendung von Überblendungsfaktoren in Schritt 1012 erstellt) miteinander vermischt, um ein Zwischenergebnis zu erstellen, wie beispielsweise das Überblenden des vorherigen bis aktuellen Zwischenrahmens 902 oder das Überblenden des aktuellen bis vorherigen Zwischenrahmens 904, wie hierin zumindest in Verbindung mit 9 beschrieben. In mindestens einer Ausführungsform wird der Beispielprozess 1000 nach Schritt 1014 in Schritt 1016 fortgesetzt.
  • In mindestens einer Ausführungsform werden in Schritt 1016 des Beispielprozesses 1000 ein oder mehrere gemischte Zwischenbilder (z. B. erzeugt in Schritt 1014) gemischt, um einen oder mehrere interpolierte Rahmen zu erzeugen (z. B. wie hierin mindestens in Verbindung mit 2 beschrieben), wobei Systeme und Verfahren wie die hierin beschriebenen verwendet werden. In mindestens einer Ausführungsform wird der Beispielprozess 1000 nach Schritt 1016 in Schritt 1002 fortgesetzt, um einen weiteren aktuellen Rahmen zu empfangen (z. B. in einer nächsten Iteration des Beispielprozesses 1000). In mindestens einer Ausführungsform wird der Beispielprozess 1000 nach Schritt 1016 beendet (z. B. wenn keine Rahmen mehr zu verarbeiten sind).
  • In mindestens einer Ausführungsform werden die Operationen des Beispielprozesses 1000 in einer anderen Reihenfolge ausgeführt, als in 10 veranschaulicht ist. In mindestens einer Ausführungsform werden die Operationen des Beispielprozesses 1000 gleichzeitig oder parallel ausgeführt, sodass zum Beispiel Schritt 1002 und Schritt 1004 gleichzeitig ausgeführt werden oder eine Vielzahl von bewegungsverzogenen Zwischenbildern gleichzeitig in Schritt 1008 erstellt wird. In mindestens einer Ausführungsform werden die Operationen des Beispielprozesses 1000 von einer Vielzahl von Threads ausgeführt, die auf einem oder mehreren Prozessoren, wie den hierin beschriebenen, unter Verwendung von Systemen und Verfahren, wie den hierin beschriebenen, arbeiten.
  • 11 veranschaulicht ein Beispieldiagramm 1100, in dem Bewegungskandidaten gemischt werden, um einen interpolierten Rahmen nach mindestens einer Ausführungsform zu erstellen. In mindestens einer Ausführungsform werden ein aktueller Rahmen 1102 (z. B. aktueller Rahmen 106, hierin mindestens in Verbindung mit 1 beschrieben) und ein vorheriger Rahmen 1104 (z. B. vorheriger Rahmen 104, hierin mindestens in Verbindung mit 1 beschrieben) unter Verwendung von Systemen und Verfahren wie den hierin beschriebenen gemischt, um einen oder mehrere interpolierte Rahmen zu erstellen (z. B. interpolierte Rahmen, die wie hierin mindestens in Verbindung mit 1 beschrieben erstellt wurden). In mindestens einer Ausführungsform werden der aktuelle Rahmen 1102 und der vorherige Rahmen 1104 von einem Prozessor 1106 gemischt, der ein Prozessor wie der hierin mindestens in Verbindung mit 1 beschriebene Prozessor 102 ist. In mindestens einer Ausführungsform werden der aktuelle Rahmen 1102 und der vorherige Rahmen 1104 von einem Prozessor 1106 unter Verwendung eines neuronalen Netzwerks 1108 gemischt, das ein neuronales Netzwerk wie das hierin mindestens in Verbindung mit 1 beschriebene neuronale Netzwerk 110 ist. In mindestens einer Ausführungsform erstellt das neuronale Netzwerk 1108 einen oder mehrere Überblendungsfaktoren (z. B. wie hierin in Verbindung mit 4-10 beschrieben), um einen interpolierten Rahmen 1110 zu erstellen, wie hierin beschrieben.
  • In mindestens einer Ausführungsform, wie in 11 veranschaulicht, werden der aktuelle Rahmen 1102 und der vorherige Rahmen 1104 vom Prozessor 1106 gemischt, um einen interpolierten Rahmen 1110 zu erstellen, der auf halbem Weg zwischen dem aktuellen Rahmen 1102 und dem vorherigen Rahmen 1104 liegt. In mindestens einer Ausführungsform, zum Beispiel, wenn der vorherige Rahmen 1104 bei 10,0 Sekunden liegt (z. B. einen Zeitstempel von) und der aktuelle Rahmen 1102 bei 10,1 Sekunden liegt (z. B. einen Zeitstempel von), dann liegt der interpolierte Rahmen 1110, der auf halbem Weg zwischen dem aktuellen Rahmen 1102 und dem vorherigen Rahmen 1104 liegt, bei 10,05 Sekunden (z. B. einen Zeitstempel von). In mindestens einer Ausführungsform wird der interpolierte Rahmen 1110 zur Hälfte aus dem aktuellen Rahmen 1102 und zur Hälfte aus dem vorherigen Rahmen 1104 interpoliert, wie hierin beschrieben. In mindestens einer Ausführungsform bestimmt das neuronale Netzwerk 1108 Überblendungsfaktoren, die mindestens teilweise auf einem Zeitstempel des aktuellen Rahmens 1102, einem Zeitstempel des vorherigen Rahmens 1104 und einer Anzahl von Rahmen basieren, die zwischen dem aktuellen Rahmen 1102 und dem vorherigen Rahmen 1104 erstellt werden (z. B. ein Rahmen in 11). In mindestens einer Ausführungsform bestimmt das neuronale Netzwerk 1108 einen Zeitstempel des interpolierten Rahmens 1110 basierend zumindest teilweise auf einem Zeitstempel des aktuellen Rahmens 1102, einem Zeitstempel des vorherigen Rahmens 1104 und einer Anzahl von Rahmen, die zwischen dem aktuellen Rahmen 1102 und dem vorherigen Rahmen 1104 zu erstellen sind.
  • 12 veranschaulicht ein Beispieldiagramm 1200, in dem nach mindestens einer Ausführungsform eine Vielzahl von interpolierten Rahmen erstellt wird. In mindestens einer Ausführungsform werden ein aktueller Rahmen 1202 (z. B. aktueller Rahmen 106, hierin mindestens in Verbindung mit 1 beschrieben) und ein vorheriger Rahmen 1204 (z. B. vorheriger Rahmen 104, hierin mindestens in Verbindung mit 1 beschrieben) unter Verwendung von Systemen und Verfahren wie den hierin beschriebenen gemischt, um einen oder mehrere interpolierte Rahmen zu erstellen (z. B. interpolierte Rahmen, die wie hierin mindestens in Verbindung mit 1 beschrieben erstellt wurden). In mindestens einer Ausführungsform werden der aktuelle Rahmen 1202 und der vorherige Rahmen 1204 von einem Prozessor 1206 gemischt, der ein Prozessor wie der hierin mindestens in Verbindung mit 1 beschriebene Prozessor 102 ist. In mindestens einer Ausführungsform werden der aktuelle Rahmen 1202 und der vorherige Rahmen 1204 vom Prozessor 1206 unter Verwendung eines neuronalen Netzwerks 1208 gemischt, bei dem es sich um ein neuronales Netzwerk wie das neuronale Netzwerk 110 handelt, das hierin mindestens in Verbindung mit 1 beschrieben ist. In mindestens einer Ausführungsform erstellt das neuronale Netzwerk 1208 einen oder mehrere Überblendungsfaktoren (z. B. wie hierin in Verbindung mit 1-10 beschrieben), um interpolierte Rahmen zu erstellen, wie hierin beschrieben.
  • In mindestens einer Ausführungsform werden der aktuelle Rahmen 1202 und der vorherige Rahmen 1204 vom Prozessor 1206 gemischt, um einen interpolierten Rahmen 1210 zu erstellen, der 25 % einer Zeitspanne zwischen dem vorherigen Rahmen 1204 und dem aktuellen Rahmen 1202 ausmacht (z. B. 75 % einer Zeitspanne vom aktuellen Rahmen 1202 zurück zum vorherigen Rahmen 1204). In mindestens einer Ausführungsform, wenn z. B. der vorherige Rahmen 1204 einen Zeitstempel von 10,0 Sekunden und der aktuelle Rahmen 1202 einen Zeitstempel von 10,1 Sekunden aufweist, liegt der interpolierte Rahmen 1210 bei 10,025 Sekunden. In mindestens einer Ausführungsform wird der interpolierte Rahmen 1210 zu 75 % aus dem vorherigen Rahmen 1204 und zu 25 % aus dem aktuellen Rahmen 1202 interpoliert, wie hierin beschrieben. In mindestens einer Ausführungsform bestimmt das neuronale Netzwerk 1208 Überblendungsfaktoren, die mindestens teilweise auf einem Zeitstempel des aktuellen Rahmens 1202, einem Zeitstempel des vorherigen Rahmens 1204 und einer Anzahl von Rahmen basieren, die zwischen dem aktuellen Rahmen 1202 und dem vorherigen Rahmen 1204 erstellt werden (z. B. drei Rahmen in 12). In mindestens einer Ausführungsform bestimmt das neuronale Netzwerk 1208 einen Zeitstempel des interpolierten Rahmens 1210 basierend zumindest teilweise auf einem Zeitstempel des aktuellen Rahmens 1202, einem Zeitstempel des vorherigen Rahmens 1204 und einer Anzahl von Rahmen, die zwischen dem aktuellen Rahmen 1202 und dem vorherigen Rahmen 1204 zu erstellen sind.
  • In mindestens einer Ausführungsform werden der aktuelle Rahmen 1202 und der vorherige Rahmen 1204 vom Prozessor 1206 gemischt, um den interpolierten Rahmen 1212 zu erstellen, der zu 50 % zwischen dem vorherigen Rahmen 1204 und dem aktuellen Rahmen 1202 liegt (z. B. zum Zeitstempel des interpolierten Rahmens 1110, wie oben beschrieben). In mindestens einer Ausführungsform, wenn z. B. der vorherige Rahmen 1204 einen Zeitstempel von 10,0 Sekunden und der aktuelle Rahmen 1202 einen Zeitstempel von 10,1 Sekunden aufweist, liegt der interpolierte Rahmen 1212 bei 10,05 Sekunden. In mindestens einer Ausführungsform wird der interpolierte Rahmen 1212 zu 50 % aus dem vorherigen Rahmen 1204 und zu 50 % aus dem aktuellen Rahmen 1202 interpoliert, wie hierin beschrieben. In mindestens einer Ausführungsform bestimmt das neuronale Netzwerk 1208 einen Zeitstempel des interpolierten Rahmens 1212 basierend zumindest teilweise auf einem Zeitstempel des aktuellen Rahmens 1202, einem Zeitstempel des vorherigen Rahmens 1204 und einer Anzahl von Rahmen, die zwischen dem aktuellen Rahmen 1202 und dem vorherigen Rahmen 1204 zu erstellen sind.
  • In mindestens einer Ausführungsform werden der aktuelle Rahmen 1202 und der vorherige Rahmen 1204 vom Prozessor 1206 gemischt, um einen interpolierten Rahmen 1214 zu erstellen, der 75 % einer Zeitspanne zwischen dem vorherigen Rahmen 1204 und dem aktuellen Rahmen 1202 ausmacht (z. B. 25 % einer Zeitspanne vom aktuellen Rahmen 1202 zurück zum vorherigen Rahmen 1204). In mindestens einer Ausführungsform, wenn z. B. der vorherige Rahmen 1204 einen Zeitstempel von 10,0 Sekunden und der aktuelle Rahmen 1202 einen Zeitstempel von 10,1 Sekunden aufweist, liegt der interpolierte Rahmen 1214 bei 10,075 Sekunden. In mindestens einer Ausführungsform wird der interpolierte Rahmen 1214 zu 25 % aus dem vorherigen Rahmen 1204 und zu 75 % aus dem aktuellen Rahmen 1202 interpoliert, wie hierin beschrieben. In mindestens einer Ausführungsform bestimmt das neuronale Netzwerk 1208 einen Zeitstempel des interpolierten Rahmens 1212 basierend zumindest teilweise auf einem Zeitstempel des aktuellen Rahmens 1202, einem Zeitstempel des vorherigen Rahmens 1204 und einer Anzahl von Rahmen, die zwischen dem aktuellen Rahmen 1202 und dem vorherigen Rahmen 1204 zu erstellen sind.
  • In mindestens einer Ausführungsform werden die in 12 veranschaulichten Techniken iterativ ausgeführt, sodass zum Beispiel der interpolierte Rahmen 1210 erstellt wird, dann der interpolierte Rahmen 1212 und dann der interpolierte Rahmen 1214. In mindestens einer Ausführungsform werden die in 13 veranschaulichten Techniken gleichzeitig ausgeführt, sodass zum Beispiel der interpolierte Rahmen 1210, der interpolierte Rahmen 1212 und der interpolierte Rahmen 1214 zumindest teilweise zu überlappenden Zeiten erstellt werden.
  • 13 veranschaulicht ein Beispieldiagramm 1300, in dem nach mindestens einer Ausführungsform eine Vielzahl von interpolierten Rahmen erstellt wird. In mindestens einer Ausführungsform werden ein aktueller Rahmen 1302 (z. B. aktueller Rahmen 106, hierin mindestens in Verbindung mit 1 beschrieben) und ein vorheriger Rahmen 1304 (z. B. vorheriger Rahmen 104, hierin mindestens in Verbindung mit 1) unter Verwendung von Systemen und Verfahren wie den hierin beschriebenen gemischt, um einen oder mehrere interpolierte Rahmen zu erstellen. In mindestens einer Ausführungsform wird ein interpolierter Rahmen 1306 erstellt, wie hierin beschrieben. In mindestens einer Ausführungsform, wenn der vorherige Rahmen 1304 (z. B. einen Zeitstempel von) 10,0 Sekunden und der aktuelle Rahmen 1302 (z. B. einen Zeitstempel von) 10,1 Sekunden aufweist, dann liegt der interpolierte Rahmen 1306 bei 10,05 Sekunden (z. B. einen Zeitstempel von), wie hierin beschrieben. In mindestens einer Ausführungsform werden der aktuelle Rahmen 1302 und der vorherige Rahmen 1304 vom Prozessor 1308 unter Verwendung eines neuronalen Netzwerks 1310 gemischt, das ein neuronales Netzwerk wie das hierin zumindest in Verbindung mit 1 beschriebene neuronale Netzwerk 110 ist. In mindestens einer Ausführungsform erstellt das neuronale Netzwerk 1310 einen oder mehrere Überblendungsfaktoren (z. B. wie hierin in Verbindung mit 4-10 beschrieben), um einen interpolierten Rahmen 1306 zu erstellen, wie hierin beschrieben. In mindestens einer Ausführungsform bestimmt das neuronale Netzwerk 1310 einen Zeitstempel des interpolierten Rahmens 1306 basierend zumindest teilweise auf einem Zeitstempel des aktuellen Rahmens 1302, einem Zeitstempel des vorherigen Rahmens 1304 und einer Anzahl von Rahmen, die zwischen dem aktuellen Rahmen 1302 und dem vorherigen Rahmen 1304 zu erstellen sind.
  • In mindestens einer Ausführungsform werden der vorherige Rahmen 1304 und der interpolierte Rahmen 1306 ferner vom Prozessor 1308 gemischt, um den interpolierten Rahmen 1312 zu erstellen. In mindestens einer Ausführungsform werden der vorherige Rahmen 1304 und der interpolierte Rahmen 1306 vom Prozessor 1308 unter Verwendung von Überblendungsfaktoren, die vom neuronalen Netzwerk 1310 bestimmt werden, überblendet. In mindestens einer Ausführungsform ist der interpolierte Rahmen 1312 ein interpolierter Rahmen, der 50 % der Zeitspanne zwischen dem vorherigen Rahmen 1304 und dem interpolierten Rahmen 1306 oder 25 % der Zeitspanne vom vorherigen Rahmen 1304 zum aktuellen Rahmen 1302 oder 75 % der Zeitspanne vom aktuellen Rahmen 1302 zurück zum vorherigen Rahmen 1304 beträgt. In mindestens einer Ausführungsform, wenn beispielsweise der vorherige Rahmen 1304 einen Zeitstempel von 10,0 Sekunden aufweist und der interpolierte Rahmen 1306 einen Zeitstempel von 10,05 Sekunden aufweist, liegt der interpolierte Rahmen 1312 bei 10,025 Sekunden (z. B. mit einem Zeitstempel von). In mindestens einer Ausführungsform wird der interpolierte Rahmen 1312 als 50 % des vorherigen Rahmens 1304 und 50 % des interpolierten Rahmens 1306 interpoliert, was 75 % des vorherigen Rahmens 1304 und 25 % des aktuellen Rahmens 1302 entspricht, wie hierin beschrieben. In mindestens einer Ausführungsform bestimmt das neuronale Netzwerk 1310 einen Zeitstempel des interpolierten Rahmens 1312 basierend zumindest teilweise auf einem Zeitstempel des aktuellen Rahmens 1302, einem Zeitstempel des vorherigen Rahmens 1304 und einer Anzahl von Rahmen, die zwischen dem aktuellen Rahmen 1302 und dem vorherigen Rahmen 1304 zu erstellen sind.
  • In mindestens einer Ausführungsform, wie in 13 veranschaulicht, werden der interpolierte Rahmen 1306 und der aktuelle Rahmen 1302 ferner vom Prozessor 1308 gemischt, um den interpolierten Rahmen 1314 zu erstellen. In mindestens einer Ausführungsform werden der interpolierte Rahmen 1306 und der aktuelle Rahmen 1302 vom Prozessor 1308 unter Verwendung eines neuronalen Netzwerks 1310 gemischt. In mindestens einer Ausführungsform erstellt das neuronale Netzwerk 1310 einen oder mehrere Überblendungsfaktoren (z. B. wie hierin in Verbindung mit 4-10 beschrieben), um einen interpolierten Rahmen 1314 zu erstellen. In mindestens einer Ausführungsform ist der interpolierte Rahmen 1314 ein interpolierter Rahmen, der 50 % einer Zeitspanne zwischen dem interpolierten Rahmen 1306 und dem aktuellen Rahmen 1302 ausmacht (z. B. 75 % einer Zeitspanne zwischen dem vorherigen Rahmen 1304 und dem aktuellen Rahmen 1302). In mindestens einer Ausführungsform, zum Beispiel, wenn der interpolierte Rahmen 1306 einen Zeitstempel von 10,05 Sekunden und der aktuelle Rahmen 1302 einen Zeitstempel von 10,1 Sekunden aufweist, liegt der interpolierte Rahmen 1314 bei 10,075 Sekunden. In mindestens einer Ausführungsform wird der interpolierte Rahmen 1314 als 50 % des interpolierten Rahmens 1306 und 50 % des aktuellen Rahmens 1302 interpoliert, was 25 % des vorherigen Rahmens 1304 und 75 % des aktuellen Rahmens 1302 entspricht, wie hierin beschrieben. In mindestens einer Ausführungsform bestimmt das neuronale Netzwerk 1310 einen Zeitstempel des interpolierten Rahmens 1314 basierend zumindest teilweise auf einem Zeitstempel des aktuellen Rahmens 1302, einem Zeitstempel des vorherigen Rahmens 1304 und einer Anzahl von Rahmen, die zwischen dem aktuellen Rahmen 1302 und dem vorherigen Rahmen 1304 zu erstellen sind.
  • In mindestens einer Ausführungsform werden die in 13 veranschaulichten Techniken iterativ ausgeführt, so dass zum Beispiel der interpolierte Rahmen 1306 erstellt wird, dann der interpolierte Rahmen 1312 und dann der interpolierte Rahmen 1314. In mindestens einer Ausführungsform werden die in 13 veranschaulichten Techniken mindestens teilweise gleichzeitig ausgeführt, sodass zum Beispiel zuerst der interpolierte Rahmen 1306 erstellt wird und dann der interpolierte Rahmen 1312 und anschließend der interpolierte Rahmen 1314.
  • 14 veranschaulicht ein Beispieldiagramm 1400, in dem eine Anwendungsprogrammierschnittstelle (API) nach mindestens einer Ausführungsform Überblendungsfaktoren für die Rahmeninterpolation erstellen soll. In mindestens einer Ausführungsform soll eine Anwendungsprogrammierschnittstelle 1402 einen Prozessor 1404 dazu veranlassen, Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen. In mindestens einer Ausführungsform veranlasst die Anwendungsprogrammierschnittstelle 1402 den Prozessor 1404, Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen, wobei Techniken verwendet werden, die hierin mindestens in Verbindung mit 1-13 beschrieben sind und die in dem Beispieldiagramm 100, dem Beispieldiagramm 200, dem Beispielprozess 300, dem Beispieldiagramm 400, dem Beispieldiagramm 500, dem Beispieldiagramm 600, dem Beispieldiagramm 700, dem Beispieldiagramm 800, dem Beispieldiagramm 900, dem Beispielprozess 1000, dem Beispieldiagramm 1100, dem Beispieldiagramm 1200 und/oder dem Beispieldiagramm 1300 verwendet werden. In mindestens einer Ausführungsform handelt es sich bei der Anwendungsprogrammierschnittstelle 1402 um eine Anwendungsprogrammierschnittstelle, wie sie hierin mindestens in Verbindung mit 15-22 beschrieben ist und wie sie in dem Beispieldiagramm 1500, dem Beispieldiagramm 1600, dem Beispieldiagramm 1700, dem Beispieldiagramm 1800, dem Beispieldiagramm 1900, dem Beispieldiagramm 2000, dem Beispielprozess 2100 und/oder dem Beispieldiagramm 2200 veranschaulicht ist.
  • In mindestens einer Ausführungsform ist der Prozessor 1404 ein Prozessor wie der Prozessor 102, der hierin mindestens in Verbindung mit 1 beschrieben ist. In mindestens einer Ausführungsform soll die Anwendungsprogrammierschnittstelle 1402 den Prozessor 1404 veranlassen, das neuronale Netzwerk 1406 zu verwenden, um Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen. In mindestens einer Ausführungsform ist das neuronale Netzwerk 1406 ein neuronales Netzwerk wie das neuronale Netzwerk 110, das hierin mindestens in Verbindung mit 1 beschrieben ist.
  • In mindestens einer Ausführungsform ist die Anwendungsprogrammierschnittstelle 1402 eine Anwendungsprogrammierschnittstelle, die es dem Prozessor 1404 ermöglicht, Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen. In mindestens einer Ausführungsform ist beispielsweise eine Anwendungsprogrammierschnittstelle, die den Prozessor 1404 in die Lage versetzt, Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen, eine Anwendungsprogrammierschnittstelle (API), die einen Parameter oder ein Flag, der bzw. das den Prozessor 1404 in die Lage versetzt, Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen, auf den Wert true einstellt.
  • In mindestens einer Ausführungsform ist die Anwendungsprogrammierschnittstelle 1402 eine Anwendungsprogrammierschnittstelle, die es dem Prozessor 1404 ermöglicht, das neuronale Netzwerk 1406 zu verwenden, um Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen. In mindestens einer Ausführungsform ist beispielsweise eine Anwendungsprogrammierschnittstelle, die es dem Prozessor 1404 ermöglicht, das neuronale Netzwerk 1406 zu verwenden, um Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen, eine Anwendungsprogrammierschnittstelle (API), die einen Parameter oder ein Flag, der bzw. das es dem Prozessor 1404 ermöglicht, das neuronale Netzwerk 1406 zu verwenden, um Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen, auf den Wert „true“ einstellt.
  • In mindestens einer Ausführungsform ist die Anwendungsprogrammierschnittstelle 1402 eine Anwendungsprogrammierschnittstelle, die den Prozessor 1404 daran hindert, Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen. In mindestens einer Ausführungsform ist beispielsweise eine Anwendungsprogrammierschnittstelle zum Deaktivieren des Prozessors 1404, der die Erstellung von Überblendungsfaktoren für die Rahmeninterpolation 1408 veranlasst, eine Anwendungsprogrammierschnittstelle (API), die einen Parameter oder ein Flag, der bzw. das es dem Prozessor 1404 ermöglicht, Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen, auf den Wert „false“ einstellt.
  • In mindestens einer Ausführungsform ist die Anwendungsprogrammierschnittstelle 1402 eine Schnittstelle zur Anwendungsprogrammierung, die den Prozessor 1404 daran hindert, das neuronale Netzwerk 1406 zu verwenden, um Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen. In mindestens einer Ausführungsform ist beispielsweise eine Anwendungsprogrammierschnittstelle, die den Prozessor 1404 daran hindert, das neuronale Netzwerk 1406 zu verwenden, um Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen, eine Anwendungsprogrammierschnittstelle (API), die einen Parameter oder ein Flag, der bzw. das den Prozessor 1404 in die Lage versetzt, das neuronale Netzwerk 1406 zu verwenden, um Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen, auf den Wert „false“ einstellt.
  • In mindestens einer Ausführungsform ist die Anwendungsprogrammierschnittstelle 1402 eine Schnittstelle zur Anwendungsprogrammierung, um zu bestimmen, ob ein Prozessor 1404 ein oder mehrere Merkmale unterstützt, die es dem Prozessor 1404 ermöglichen, Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen. In mindestens einer Ausführungsform ist beispielsweise eine Anwendungsprogrammierschnittstelle, die bestimmt, ob ein Prozessor 1404 ein oder mehrere Merkmale unterstützt, die es dem Prozessor 1404 ermöglichen, Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen, eine Anwendungsprogrammierschnittstelle (API), die bestimmt, ob ein Parameter oder ein Flag, der bzw. das es einem Prozessor 1404 ermöglicht, Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen, auf den Wert „true“ eingestellt ist oder auf den Wert „false“ eingestellt ist.
  • In mindestens einer Ausführungsform ist die Anwendungsprogrammierschnittstelle 1402 eine Anwendungsprogrammierschnittstelle, die bestimmt, ob ein Prozessor 1404 ein oder mehrere Merkmale unterstützt, die es dem Prozessor 1404 ermöglichen, ein neuronales Netzwerk 1406 zu verwenden, um Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen. In mindestens einer Ausführungsform ist beispielsweise eine Anwendungsprogrammierschnittstelle, die bestimmt, ob ein Prozessor 1404 ein oder mehrere Merkmale unterstützt, die es dem Prozessor 1404 ermöglichen, ein neuronales Netzwerk 1406 zu verwenden, um Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen, eine Anwendungsprogrammierschnittstelle (API), die bestimmt, ob ein Parameter oder ein Flag, der bzw. das es einem Prozessor 1404 ermöglicht, ein neuronales Netzwerk 1406 zu verwenden, um Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen, auf den Wert „true“ eingestellt ist oder auf den Wert „false“ eingestellt ist.
  • In mindestens einer Ausführungsform ist die Anwendungsprogrammierschnittstelle 1402 eine Anwendungsprogrammierschnittstelle, um einen oder mehrere Sätze oder Parameter einzustellen, die einem Prozessor 1404 zuzuordnen sind, damit dieser Überblendungsfaktoren für die Rahmeninterpolation 1408 erstellt, wie z. B. Sätze oder Parameter, die den Bildgrößen interpolierter Rahmen, wie sie hierin beschrieben sind, zuzuordnen sind, eine Anzahl interpolierter Rahmen, die zwischen einem vorherigen Rahmen und einem aktuellen Rahmen zu erstellen sind, die Angabe, ob beim Rendern interpolierter Rahmen eine dynamische Auflösung verwendet werden soll, Parameter für die dynamische Auflösung und/oder andere derartige Parameter.
  • In mindestens einer Ausführungsform schließt die Anwendungsprogrammierschnittstelle 1402 beispielsweise eines oder mehrere der folgenden Elemente ein:
    Figure DE102023125014A1_0003
    Figure DE102023125014A1_0004
  • In mindestens einer Ausführungsform schließt die Anwendungsprogrammierschnittstelle 1402 eine oder mehrere APIs ein, um Eingabepufferformate einzustellen, wie z. B. Hauptrahmenformate (jedes unterstützte Format), Bewegungsvektorformate, Tiefenpufferformate und/oder Ausgabepufferformate.
  • In mindestens einer Ausführungsform schließt die Anwendungsprogrammierschnittstelle 1402 eine oder mehrere APIs ein, um Ressourcenzustände von Eingabepuffern und/oder Ausgabepuffern einzustellen, wie beispielsweise:
    • Eingabepuffer (z. B. Hudless-Farbe, Bewegungsvektoren und Tiefe) im Pixel-Shader-Ablesezustand sein (auch bekannt als Shader Resource View, HLSL „Textur“ oder in Vulkan als „Sample Image“), sodass diese im Falle von Vulkan mit dem Verwendungsflag „VK_IMAGE_USAGE_SAMPLED_BIT“ erstellt werden müssen.
    • Ausgabepuffer im UAV-Status (auch bekannt als HLSL RWTexture oder in Vulkan als „Storage Image“), die im Falle von D3D12 mit dem Flag „D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS“ und im Falle von Vulkan mit dem Nutzungsflag „VK_IMAGE_USAGE_STORAGE_BIT“ erstellt werden müssen.
  • In mindestens einer Ausführungsform schließt die Anwendungsprogrammierschnittstelle 1402 eine oder mehrere APIs ein, um die Auflösung oder den Maßstab von Bewegungsvektoren, wie sie hierin beschrieben sind, einzustellen.
  • In mindestens einer Ausführungsform schließt die Anwendungsprogrammierschnittstelle 1402 eine oder mehrere APIs ein, um die Protokollierung von Fehlern zu aktivieren oder zu deaktivieren, wenn der Prozessor 1404 veranlasst, Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen.
  • In mindestens einer Ausführungsform schließt die Anwendungsprogrammierschnittstelle 1402 eine oder mehrere APIs ein, um die Protokollierung von Fehlern zu aktivieren oder zu deaktivieren, wenn der Prozessor 1404 das neuronale Netzwerk 1406 verwendet, um Überblendungsfaktoren für die Rahmeninterpolation 1408 zu erstellen.
  • In mindestens einer Ausführungsform schließt die Anwendungsprogrammierschnittstelle 1402 eine oder mehrere APIs ein, um die Verwendung einer Schattenauslagerungskette zu aktivieren oder zu deaktivieren. In mindestens einer Ausführungsform ist eine Schattenauslagerungskette eine zusätzliche Rendering-Pipeline (z. B. wie hierin beschrieben), die verhindert, dass ein oder mehrere interne Puffer, die zum Rendern von Videorahmen verwendet werden, wiederverwendet werden, bis der Prozessor 1404 das Erstellen und Rendern eines interpolierten Rahmens abgeschlossen hat, wie hierin beschrieben.
  • 15 ist ein Blockdiagramm 1500, das ein Softwareprogramm veranschaulicht, das von einem oder mehreren Prozessoren gemäß mindestens einer Ausführungsform ausgeführt wird. In mindestens einer Ausführungsform veranschaulicht das Blockdiagramm 1500 ein Softwareprogramm 1504, das von einem Prozessor, wie einer zentralen Verarbeitungseinheit (CPU) 1502 sowie einer grafischen Verarbeitungseinheit (GPU) 1510 und einem Beschleuniger 1514 innerhalb eines heterogenen Prozessors ausgeführt wird. In mindestens einer Ausführungsform ist die CPU 1502 ein Prozessor wie der Prozessor 102, der hierin mindestens in Verbindung mit 1 beschrieben ist. In mindestens einer Ausführungsform ist die CPU 1502 ein GPU, wie er hierin beschrieben ist. In mindestens einer Ausführungsform ist eine CPU 1502 ein beliebiger Prozessor mit einer hierin ferner beschriebenen Architektur. In mindestens einer Ausführungsform ist eine CPU 1502 ein beliebiger allgemeiner Prozessor mit einer hierin ferner beschriebenen Architektur. In mindestens einer Ausführungsform umfasst ein Prozessor, wie beispielsweise eine CPU 1502, Schaltungen zum Ausführen einer oder mehrerer Operationen. In mindestens einer Ausführungsform umfasst ein Prozessor, wie beispielsweise eine CPU 1502, eine beliebige Konfiguration von Schaltungen, um eine oder mehrere hierin beschriebene Operationen auszuführen.
  • In mindestens einer Ausführungsform führt ein Prozessor, wie beispielsweise eine zentrale Verarbeitungseinheit (CPU) 1502, eine parallele Rechenumgebung 1508 aus. In mindestens einer Ausführungsform ist ein Prozessor, wie beispielsweise eine CPU 1502, ein Prozessor, wie beispielsweise eine CPU, der eine parallele Rechenumgebung 1508 ausführt, wie beispielsweise die Compute Uniform Device Architecture (CUDA), Radeon™ Open Compute Platform (ROCm), OpenCL, SYCL, Intel™ One API. usw. In mindestens einer Ausführungsform schließt die parallele Rechenumgebung 1508 Anweisungen ein, die, wenn sie von einem oder mehreren Prozessoren, wie beispielsweise CPUs 1502, ausgeführt werden, die Ausführung eines oder mehrerer Softwareprogramme durch eine oder mehrere CPUs 1502, eine oder mehrere parallele Verarbeitungseinheiten (PPUs), wie GPUs 1510, und/oder einen oder mehrere Beschleuniger 1514 innerhalb eines heterogenen Prozessors erleichtern.
  • In mindestens einer Ausführungsform sind eine oder mehrere PPUs Prozessoren, die eine oder mehrere Schaltungen umfassen, um parallele Operationen auszuführen, wie beispielsweise die GPUs 1510 und jeder andere hierin beschriebene Parallelprozessor. In mindestens einer Ausführungsform ist eine GPU 1510 eine Hardware, die Schaltungen umfasst, um eine oder mehrere Operationen auszuführen, wie weiter unten in Verbindung mit verschiedenen Ausführungsformen beschrieben. In mindestens einer Ausführungsform umfasst eine GPU 1510 einen oder mehrere Rechenkerne, die jeweils eine oder mehrere rechnerische Operationen ausführen. In mindestens einer Ausführungsform umfasst ein GPU 1510 einen oder mehrere Rechenkerne, um eine oder mehrere parallele Operationen auszuführen. In mindestens einer Ausführungsform ist ein GPU 1510 zusammen mit einer CPU 1502 oder anderen Prozessoren als System-on-chip (SoC) verpackt. In mindestens einer Ausführungsform ist ein GPU 1510 auf einem gemeinsamen Chip oder einem anderen Substrat mit einer CPU 1502 oder anderen Prozessoren als System-on-chip (SoC) untergebracht. In mindestens einer Ausführungsform handelt es sich bei einem oder mehreren Beschleunigern 1514 in heterogenen Prozessoren um Hardware, die eine oder mehrere Schaltungen umfasst, um bestimmte Operationen auszuführen, wie beispielsweise einen Deep-Learning-Beschleuniger (DLA), einen programmierbaren Bildverarbeitungsbeschleuniger (PVA), ein feldprogrammierbares Gatearray (FPGA) oder jeden anderen hierin beschriebenen Beschleuniger. In mindestens einer Ausführungsform ist ein Beschleuniger 1514 innerhalb eines heterogenen Prozessors zusammen mit einer CPU 1502 oder anderen Prozessoren als ein System-on-chip (SoC) verpackt. In mindestens einer Ausführungsform ist ein Beschleuniger 1514 innerhalb eines heterogenen Prozessors auf einem gemeinsamen Chip oder einem anderen Substrat mit einer CPU 1502 oder anderen Prozessoren als System-on-chip (SoC) untergebracht. In mindestens einer Ausführungsform sind eine oder mehrere CPUs 1502, eine oder mehrere GPUs 1510 oder andere PPUs und/oder Beschleuniger 1514 in heterogenen Prozessoren als System-on-chip (SoC) verpackt. In mindestens einer Ausführungsform sind eine oder mehrere CPUs 1502, eine oder mehrere GPUs 1510 oder andere PPUs und/oder Beschleuniger 1514 innerhalb heterogener Prozessoren auf einem gemeinsamen Die oder einem anderen Substrat als System-on-Chip (SoC) untergebracht.
  • In mindestens einer Ausführungsform umfasst die parallele Rechenumgebung 1508, wie beispielsweise CUDA, Bibliotheken und andere Softwareprogramme, um eine oder mehrere Rechenoperationen unter Verwendung einer oder mehrerer PPUs, wie beispielsweise GPUs 1510, und/oder eines oder mehrerer Beschleuniger 1514 innerhalb eines heterogenen Prozessors auszuführen. In mindestens einer Ausführungsform umfasst die parallele Rechenumgebung 1508 Bibliotheken und andere Softwareprogramme, die, wenn sie von einem oder mehreren Prozessoren, wie beispielsweise einer oder mehreren CPUs 1502, ausgeführt werden, eine oder mehrere PPUs, wie beispielsweise GPUs 1510, und/oder einen oder mehrere Beschleuniger 1514 innerhalb eines heterogenen Prozessors veranlassen, eine oder mehrere Operationen auszuführen. In mindestens einer Ausführungsform umfasst die parallele Rechenumgebung 1508 Bibliotheken, die, wenn sie ausgeführt werden, eine oder mehrere PPUs, wie beispielsweise GPUs 1510, und/oder einen oder mehrere Beschleuniger 1514 innerhalb heterogener Prozessoren veranlassen, mathematische Operationen auszuführen. In mindestens einer Ausführungsform umfasst die parallele Rechenumgebung 1508 Bibliotheken, die, wenn sie ausgeführt werden, eine oder mehrere PPUs, wie beispielsweise GPUs 1510, und/oder einen oder mehrere Beschleuniger 1514 innerhalb heterogener Prozessoren dazu veranlassen, jede weitere hierin beschriebene Operation auszuführen.
  • In mindestens einer Ausführungsform führen eine oder mehrere PPUs, wie z.B. GPUs 1510, und/oder ein oder mehrere Beschleuniger 1514 innerhalb heterogener Prozessoren eine oder mehrere rechnerische Operationen als Antwort auf eine oder mehrere Anwendungsprogrammierschnittstellen (APIs) aus. In mindestens einer Ausführungsform ist eine API ein Satz von Softwareanweisungen, die, wenn sie von einem oder mehreren Prozessoren, wie beispielsweise CPUs 1502, eingestellt werden, eine oder mehrere PPUs, wie beispielsweise GPUs 1510 und/oder einen oder mehrere Beschleuniger 1514 innerhalb heterogener Prozessoren veranlassen, eine oder mehrere Operationen auszuführen. In mindestens einer Ausführungsform umfasst die parallele Rechenumgebung 1508 eine oder mehrere APIs 1506, die, wenn sie von einem oder mehreren Prozessoren, wie z.B. CPUs 1502, ausgeführt werden, eine oder mehrere PPUs, wie beispielsweise GPUs 1510 und/oder einen oder mehrere Beschleuniger 1514 innerhalb heterogener Prozessoren veranlassen, eine oder mehrere Operationen auszuführen. In mindestens einer Ausführungsform umfassen eine oder mehrere APIs 1506 eine oder mehrere Funktionen, die, wenn sie ausgeführt werden, einen oder mehrere Prozessoren, wie beispielsweise CPUs 1502, veranlassen, eine oder mehrere Operationen auszuführen, wie beispielsweise Rechenoperationen, Fehlerberichterstattung, Planung anderer Operationen, die von GPUs 1510 und/oder Beschleunigern 1514 innerhalb heterogener Prozessoren ausgeführt werden sollen, oder jede andere hierin beschriebene Operation. In mindestens einer Ausführungsform umfassen eine oder mehrere APIs 1506 eine oder mehrere Funktionen, die, wenn sie ausgeführt werden, eine oder mehrere PPUs, wie beispielsweise GPUs 1510, veranlassen, eine oder mehrere Operationen auszuführen, wie beispielsweise Rechenoperationen, Fehlerberichterstattung oder jede andere hierin beschriebene Operation. In mindestens einer Ausführungsform umfassen eine oder mehrere APIs 1506 eine oder mehrere Funktionen, wie die unten in Verbindung mit 16-20 beschriebenen, die, wenn sie ausgeführt werden, einen oder mehrere Beschleuniger 1514 in heterogenen Prozessoren veranlassen, eine oder mehrere Operationen auszuführen, wie beispielsweise Rechenoperationen, Fehlerberichterstattung oder jede andere hierin beschriebene Operation. In mindestens einer Ausführungsform umfassen eine oder mehrere APIs 1506 eine oder mehrere Funktionen, die eine CPU 1502 veranlassen, eine oder mehrere Operationen als Antwort auf Informationen oder Ereignisse auszuführen, die von einer oder mehreren PPUs, wie beispielsweise GPUs 1510, und/oder einem oder mehreren Beschleunigern 1514 innerhalb heterogener Prozessoren erstellt werden. In mindestens einer Ausführungsform umfassen eine oder mehrere APIs 1506 eine oder mehrere Funktionen, die, wenn sie aufgerufen werden, eine CPU 1502 veranlassen, eine oder mehrere rechnerische Operationen als Antwort auf Informationen oder Ereignisse auszuführen, die von einer oder mehreren PPUs, wie beispielsweise GPUs 1510, und/oder einem oder mehreren Beschleunigern 1514 innerhalb heterogener Prozessoren erstellt werden.
  • In mindestens einer Ausführungsform führt ein Prozessor, wie beispielsweise eine CPU 1502, ein oder mehrere Softwareprogramme 1504 aus. In mindestens einer Ausführungsform handelt es sich bei einem oder mehreren Softwareprogrammen um Sätze von Anweisungen, die, wenn sie ausgeführt werden, einen oder mehrere Prozessoren wie CPUs 1502, PPUs wie GPUs 1510 und/oder Beschleuniger 1514 in heterogenen Prozessoren veranlassen, rechnerische Operationen auszuführen. In mindestens einer Ausführungsform umfassen die Softwareprogramme 1504 Anweisungen und/oder Operationen, die von einer oder mehreren PPUs, wie beispielsweise den GPUs 1510, ausgeführt werden. In mindestens einer Ausführungsform umfassen ein oder mehrere Softwareprogramme 1504 GPU-spezifischen Code 1512 und/oder beschleunigerspezifischen Code 1516. In mindestens einer Ausführungsform sind Anweisungen und/oder Operationen, die von einer oder mehreren PPUs, wie beispielsweise den GPUs 1510, ausgeführt werden, PPU-spezifischer oder GPU-spezifischer Code 1512. In mindestens einer Ausführungsform ist der GPU-spezifische Code 1512 ein Satz von Softwareanweisungen und/oder anderen Operationen, wie hierin ferner beschrieben, die von einer oder mehreren GPUs 1510 auszuführen sind. In mindestens einer Ausführungsform umfassen die Softwareprogramme 1504 Anweisungen und/oder Operationen, die von einem oder mehreren Beschleunigern 1514 in heterogenen Prozessoren ausgeführt werden. In mindestens einer Ausführungsform handelt es sich bei den Anweisungen und/oder Operationen, die von einem oder mehreren Beschleunigern 1514 in heterogenen Prozessoren ausgeführt werden, um beschleunigerspezifischen Code 1516. In mindestens einer Ausführungsform ist der beschleunigerspezifische Code 1516 ein Satz von Softwareanweisungen und/oder anderen Operationen, wie ferner hierin beschrieben, die von einem oder mehreren Beschleunigern 1514 auszuführen sind. In mindestens einer Ausführungsform ist PPU-spezifischer oder GPU-spezifischer Code 1512 und/oder beschleunigerspezifischer Code 1516 als Antwort auf eine oder mehrere APIs 1506 auszuführen, wie unten in Verbindung mit 16-20 beschrieben.
  • 16 ist ein Blockdiagramm 1600, das eine Anwendungsprogrammierschnittstelle (API) veranschaulicht, um gemäß mindestens einer Ausführungsform die Stütze für die Rahmeninterpolation von Videos zu bestimmen. In mindestens einer Ausführungsform führen eine oder mehrere Schaltungen eines Prozessors eine Ausführungsform zur Unterstützung der Rahmeninterpolation (API 1602) aus, um zu bestimmen, ob ein Prozessor, wie die hierin beschriebenen, die Interpolation von Videorahmen unter Verwendung eines oder mehrerer neuronaler Netzwerke unterstützt, indem er Operationen, Techniken, Systeme und/oder Verfahren, wie die hierin beschriebenen, verwendet. In mindestens einer Ausführungsform bestimmt die Bestimmungsrahmeninterpolationsunterstützungs-API 1602, ob ein Prozessor wie die hierin beschriebenen die Videorahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke unterstützt, indem sie einen Treiber eines oder mehrerer Prozessoren (z. B. eines oder mehrerer GPUs) abfragt, um eine oder mehrere Hardwareversionen, Softwareversionen, Hardwarezustände und/oder andere Informationen zu bestimmen, und unter Verwendung der Ergebnisse dieser Abfragen eine Bestimmung darüber erstellt, ob ein Prozessor wie die hierin beschriebenen die Videorahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke unterstützt. In mindestens einer Ausführungsform, zum Beispiel, wenn eine Hardwareversion eines oder mehrerer GPUs oder Prozessoren gleich oder größer als ein Schwellenwert ist und eine Treiberversion der GPUs oder Prozessoren gleich oder größer als ein Schwellenwert ist, gibt die API 1602 zur Bestimmung der Unterstützung der Rahmeninterpolation eine Anzeige zurück, dass die GPUs oder Prozessoren die Stützrahmen-Interpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke, wie hierin beschrieben, unterstützen.
  • In mindestens einer Ausführungsform, die in 16 nicht dargestellt ist, führt eine oder mehrere Schaltungen eines Prozessors, wie die hierin beschriebenen, eine oder mehrere Anweisungen aus, um die Bestimmung der Unterstützung der Rahmeninterpolation auszuführen API 1602, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Unterstützung für die Verwendung eines oder mehrerer neuronaler Netzwerke zur Durchführung der Rahmeninterpolation anzuzeigen. In mindestens einer Ausführungsform, die in 16 nicht dargestellt ist, führt eine oder mehrere Schaltungen eines Prozessors, wie die hierin beschriebenen, eine oder mehrere Anweisungen aus, um die Bestimmung der Rahmeninterpolationsunterstützung API 1602 auszuführen, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, um als Antwort auf den Empfang einer zweiten API, wie die hierin beschriebenen, die Verwendung eines oder mehrerer neuronaler Netzwerke für die Rahmeninterpolation zu unterstützen. In mindestens einer Ausführungsform ist die API 1602 zur Unterstützung der Rahmeninterpolation eine oder mehrere APIs, wie sie oben in Verbindung mit 14 beschrieben wurden.
  • In mindestens einer Ausführungsform empfängt die API 1602 zur Unterstützung der Rahmeninterpolation bei ihrem Aufruf ein oder mehrere Argumente, um Informationen über Operationen anzugeben, die mit Techniken wie den hierin beschriebenen ausgeführt werden sollen. In mindestens einer Ausführungsform empfängt die API 1602 zur Unterstützung der Rahmeninterpolation bei ihrem Aufruf ein oder mehrere Argumente, um Informationen über Anweisungen anzuzeigen, die mit Techniken wie den hierin beschriebenen ausgeführt werden sollen.
  • In mindestens einer Ausführungsform empfängt die API 1602, die die Rahmeninterpolation unterstützt, als Eingabe ein oder mehrere Argumente, die die Merkmal-ID 1604 umfassen. In mindestens einer Ausführungsform ist das Merkmal-ID 1604 ein Datenwert, der Informationen umfasst, die zur Identifizierung, Anzeige oder anderweitigen Spezifizierung eines Rahmeninterpolationsmerkmals verwendet werden können, das von der API 1602 zur Bestimmung der Unterstützung der Rahmeninterpolation verwendet werden kann, um festzustellen, ob ein Prozessor, wie die hierin beschriebenen, die Rahmeninterpolation unter Verwendung von Operationen, Techniken, Systemen und/oder Verfahren, wie den hierin beschriebenen, unterstützt. In mindestens einer Ausführungsform ist ein Merkmal zur Bestimmung, ob ein Prozessor wie die hierin beschriebenen die Rahmeninterpolation unterstützt, identifiziert, angezeigt oder anderweitig spezifiziert durch die Merkmals-ID 1604, einer von mehreren Parametern, die von der API 1602 zur Bestimmung der Unterstützung der Rahmeninterpolation verwendet werden können, um die Unterstützung für die Interpolation von Videorahmen zu bestimmen. In mindestens einer Ausführungsform ist die Merkmals-ID 1604 ein Datenwert zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines Satzes von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie beispielsweise GPUs, und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors, wie hierin beschrieben, auszuführen sind, an eine API, wie beispielsweise die Bestimmung der Stütze für die Rahmeninterpolation API 1602.
  • In mindestens einer Ausführungsform empfängt die API 1602, die die Rahmeninterpolation unterstützt, als Eingabe ein oder mehrere Argumente, die die GPU-ID 1606 umfassen. In mindestens einer Ausführungsform ist die GPU-ID 1606 ein Datenwert, der Informationen umfasst, die zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines Prozessors (z. B. einer CPU, GPU, PPU, GPGPU usw.) verwendet werden können, an den eine Anfrage zur Unterstützung der Rahmeninterpolation unter Verwendung der Bestimmungs-API 1602 zur Unterstützung der Rahmeninterpolation gerichtet wird. In mindestens einer Ausführungsform ist ein Prozessor, der durch die GPU-ID 1606 identifiziert, angegeben oder anderweitig spezifiziert wird, einer von mehreren Parametern, die von der API 1602 zur Unterstützung der Interpolation von Videorahmen bestimmt werden können, um die Unterstützung von Videorahmen zu bestimmen. In mindestens einer Ausführungsform ist die GPU-ID 1606 ein Datenwert zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines Satzes von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie beispielsweise GPUs, und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors, wie hierin beschrieben, auszuführen sind, an eine API, wie beispielsweise die Bestimmung der Stütze für die Rahmeninterpolation API 1602.
  • In mindestens einer Ausführungsform empfängt die API 1602, die die Rahmeninterpolation unterstützt, als Eingabe ein oder mehrere Argumente, die die Stelle des Ergebnisses 1608 umfassen. In mindestens einer Ausführungsform ist die Ergebnisstelle 1608 ein Datenwert, der Daten umfasst, die zur Identifizierung, Angabe oder anderweitigen Spezifizierung einer Stelle zum Speichern eines Ergebnisses verwendet werden können, das unter Verwendung von Unterstützung der Rahmeninterpolation durch die API 1602 ermittelt wurde. In mindestens einer Ausführungsform, die in 16 nicht dargestellt ist, wird die Ergebnisstelle 1608 als Wert von der unten beschriebenen Bestimmung der Unterstützung der Rahmeninterpolation durch die API-Rückgabe 1620 zurückgegeben. In mindestens einer Ausführungsform ist eine Ergebnisstelle, die durch die Ergebnisstelle 1608 identifiziert, angegeben oder anderweitig spezifiziert wird, einer von mehreren Parametern, die von der Unterstützung der Rahmeninterpolation durch die API 1602 von Videorahmen verwendet werden können, um die Unterstützung von Rahmeninterpolation zu bestimmen. In mindestens einer Ausführungsform ist die Ergebnisstelle 1608 ein Datenwert, um einen Satz von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie beispielsweise GPUs, und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors auszuführen sind, wie hierin beschrieben, zu identifizieren, anzuzeigen oder anderweitig gegenüber einer API, wie beispielsweise der Unterstützung der Rahmeninterpolation durch die API 1602, festzulegen.
  • In mindestens einer Ausführungsform empfängt die Unterstützung der Rahmeninterpolation durch die API 1602 als Eingabe ein oder mehrere Argumente, die ein oder mehrere andere Argumente 1610 umfassen. In mindestens einer Ausführungsform handelt es sich bei den anderen Argumenten 1610 um Daten, die Informationen umfassen, um andere Informationen anzuzeigen, die bei der Ausführung der Unterstützung von Rahmeninterpolation durch die API 1602 zur Bestimmung der Unterstützung von Videorahmen-Interpolation verwendet werden können.
  • In mindestens einer Ausführungsform, die in 16 nicht dargestellt ist, führt ein Prozessor eine oder mehrere Anweisungen aus, um eine oder mehrere APIs auszuführen, wie beispielsweise die Bestimmung der Unterstützung für die Rahmeninterpolation durch die API 1602, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Unterstützung für die Verwendung eines oder mehrerer neuronaler Netzwerke anzugeben, um eine Rahmeninterpolation unter Verwendung eines oder mehrerer Argumente auszuführen, einschließlich, aber nicht beschränkt auf die Merkmals-ID 1604, die GPU-ID 1606, die Stelle des Ergebnisses 1608 und/oder andere Argumente 1610.
  • In mindestens einer Ausführungsform bestimmt die Unterstützung der Rahmeninterpolation durch die API 1602, wenn sie aufgerufen wird, dass eine oder mehrere APIs wie eine oder mehrere APIs 1506, die hierin mindestens in Verbindung mit 15 beschrieben sind, eine oder mehrere Operationen oder Anweisungen hinzufügen, einfügen oder anderweitig in einen Stream oder Satz von Anweisungen einschließen, die von einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors ausgeführt werden. In mindestens einer Ausführungsform bestimmt die Unterstützung der Rahmeninterpolation durch die API 1602, wenn sie aufgerufen wird, dass eine oder mehrere APIs, wie eine oder mehrere APIs 1506, in einer parallelen Rechenumgebung, wie der hierin mindestens in Verbindung mit 15 beschriebenen parallelen Rechenumgebung 1508, eine oder mehrere Operationen oder Anweisungen hinzufügen, einfügen oder anderweitig in einen Stream oder Satz von Anweisungen einschließen, die von einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors ausgeführt werden.
  • In mindestens einer Ausführungsform sollen eine oder mehrere APIs 1506, falls ausgeführt, als Antwort auf die Bestimmung der Unterstützung der Rahmeninterpolation durch die API 1602 einen oder mehrere Prozessoren veranlassen, eine Bestimmung der Unterstützung der Rahmeninterpolation durch die API-Rückgabe 1620 auszuführen. In mindestens einer Ausführungsform ist Bestimmen der Unterstützung für Rahmeninterpolation durch die API-Rückgabe 1620 ein Satz von Anweisungen, die, wenn sie ausgeführt werden, einen oder mehrere Datenwerte als Antwort auf Bestimmen der Unterstützung für Rahmeninterpolation durch die API 1602 erstellen und/oder anzeigen. In mindestens einer Ausführungsform bestimmt Unterstützung der Rahmeninterpolation durch die API-Rückgabe 1620 und zeigt einen Erfolgsindikator 1622 an. In mindestens einer Ausführungsform handelt es sich bei dem Erfolgsindikator 1622 um Daten, die einen beliebigen Wert umfassen, um den Erfolg der Unterstützung der Rahmeninterpolation durch die API 1602 zu bestimmen. In mindestens einer Ausführungsform umfasst der Erfolgsindikator 1622 Informationen, die einen oder mehrere spezifische Typen von Erfolgen anzeigen, die als Ergebnis des Ausführens der Unterstützung der Rahmeninterpolation durch die API 1602 erstellt wurden. In mindestens einer Ausführungsform umfasst der Erfolgsindikator 1622 Informationen, die einen oder mehrere andere Datenwerte angeben, die als Ergebnis der Bestimmung der Unterstützung der Rahmeninterpolation durch die API 1602 erstellt wurden.
  • In mindestens einer Ausführungsform bestimmt Unterstützung der Rahmeninterpolation durch die API-Rückgabe 1620 und zeigt einen Fehlerindikator 1624 an. In mindestens einer Ausführungsform handelt es sich bei dem Fehlerindikator 1624 um Daten, die einen beliebigen Wert umfassen, um anzuzeigen, dass die Unterstützung der Rahmeninterpolation durch die API 1602 fehlgeschlagen ist. In mindestens einer Ausführungsform umfasst der Fehlerindikator 1624 Informationen, die einen oder mehrere spezifische Typen von Fehlern anzeigen, die als Ergebnis des Ausführens der Unterstützung der Rahmeninterpolation durch die API 1602 erstellt wurden. In mindestens einer Ausführungsform umfasst der Fehlerindikator 1624 Informationen, die einen oder mehrere andere Datenwerte angeben, die als Ergebnis der Bestimmung der Unterstützung der Rahmeninterpolation durch die API 1602 erstellt wurden.
  • In mindestens einer Ausführungsform umfasst die parallele Rechenumgebung 1508 eine oder mehrere APIs 1506, einschließlich, aber nicht beschränkt auf die Unterstützung der Rahmeninterpolation durch die API 1602, die verschiedene Operationen unterschiedlicher Typen zu einem Stream hinzufügt, der von einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors ausgeführt wird. In mindestens einer Ausführungsform umfassen Streamoperationen eine Acquire-Semaphore-Operation. In mindestens einer Ausführungsform umfassen die Streamoperationen eine Release-Semaphor-Operation. In mindestens einer Ausführungsform umfassen Streamoperationen eine oder mehrere Operationen zum Leeren und/oder Ungültigmachen von Cache-Speicher, wie L2-Cache-Speicher einer PPU, wie einer GPU, und/oder Cache-Speicher eines oder mehrerer Beschleuniger innerhalb eines heterogenen Prozessors. In mindestens einer Ausführungsform umfassen Streamoperationen eine oder mehrere Operationen, um die Übergabe einer Operation an eine externe Vorrichtung anzuzeigen, wie beispielsweise einen oder mehrere Beschleuniger innerhalb eines heterogenen Prozessors. In mindestens einer Ausführungsform ist der Beispielsoftwarecode, der die Typen der Streamoperationen angibt, wie folgt:
    Figure DE102023125014A1_0005
    Figure DE102023125014A1_0006
  • In mindestens einer Ausführungsform umfasst die parallele Rechenumgebung 1508 eine oder mehrere APIs 1506, einschließlich, aber nicht beschränkt auf die Bestimmung der Rahmeninterpolationsunterstützung API 1602, die eine oder mehrere Funktionssignaturen einschließt, die dazu dienen, eine oder mehrere Rückruffunktionen für Operationen anzugeben, die von einem oder mehreren Beschleunigern in heterogenen Prozessoren ausgeführt werden sollen. In mindestens einer Ausführungsform werden durch eine oder mehrere Operationen eine oder mehrere Rückruffunktionen ausgeführt. In mindestens einer Ausführungsform sieht der Beispielsoftwarecode, der eine Funktionssignatur für eine Rückruffunktion angibt, wie folgt aus:
    Figure DE102023125014A1_0007
  • In mindestens einer Ausführungsform, um einen oder mehrere Beschleuniger in heterogenen Prozessoren zu spezifizieren, um eine oder mehrere Operationen auszuführen, die von der Unterstützung der Rahmeninterpolation durch die API 1602 an eine oder mehrere APIs 1506 angegeben werden, können eine oder mehrere Datenstrukturen einer oder mehrerer APIs 1506 verwendet werden, um eine oder mehrere externe Vorrichtungen zu spezifizieren, für die die eine oder mehrere APIs 1506 die eine oder mehrere Operationen übermitteln sollen. In mindestens einer Ausführungsform sieht der Beispielsoftwarecode, der eine Datenstruktur angibt, die einen Vorrichtungsknoten für einen oder mehrere Beschleuniger in heterogenen Prozessoren darstellt, wie folgt aus:
      /**

       * Struktur, die den externen Vorrichtungsknoten darstellt, der die Informationen
       aufnimmt
       * über eine bestimmte Aufgabe für eine externe Vorrichtung einreichen. 





       */

      typedef struct

       {

      void *submitArgs;
             cuSocketExternalDeviceSubmitCallback Aufruf;
      } cuSocketExternalDeviceNodeParams;
  • In mindestens einer Ausführungsform werden zur Angabe von Typ und Daten einer oder mehrerer Operationen, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren ausgeführt werden sollen, eine oder mehrere Strukturen einer oder mehrerer APIs 1506 verwendet. In mindestens einer Ausführungsform sieht der Beispielsoftwarecode zur Angabe einer Datenstruktur zur Spezifizierung des Typs und der Daten einer oder mehrerer Operationen, die von einem oder mehreren Beschleunigern in heterogenen Prozessoren ausgeführt werden sollen, wie folgt aus:
  •       /**
    
           * Strukturelle Verfolgung des Typs und der Daten für Streamoperationen. Die
           Daten von \p werden aufgefüllt
           * mit Semaphoradresse und Nutzlast für Typen
           * ::CUSOCKET_STREAM_OP_SEMA_ACQ und
           * ::CUSOCKET_STREAM_OP_SEMA_REL
           */
    
          typedef struct
    
           {
                 /**
                 * Typ der Stromoperation
                 */
                 cuSocketStreamOpType Typ;
                 union {
                        /**
                        * Parameter für Semaphore
                        */
                        struct {
                              /**
                              * Adresse der Semaphore, die erworben oder freigegeben 
    
    
    
    
    
                        werden soll.
                              */
                              void *semaAddr;
                              /**
                              * Nutzlast-Wert der Semaphore.
                              */
                        unsigned int payload;
                 } sema;
                       /**
    
                        * Die spezielle Aufgabe, die an die externe Vorrichtung übermittelt
                 werden muss.
                        */
                        cuSocketExternalDeviceNodeParams Aufgabe;
                 } data;
          } cuSocketStreamOp;
  • In mindestens einer Ausführungsform umfassen eine oder mehrere APIs 1506 Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine oder mehrere Operationen oder Anweisungen zu einem Stream oder einem anderen Satz von Anweisungen hinzugefügt werden, die von einem oder mehreren Beschleunigern in heterogenen Prozessoren ausgeführt werden. In mindestens einer Ausführungsform sind Anweisungen auszuführen, die bewirken, dass eine oder mehrere Operationen oder Anweisungen zu einem Stream oder einem anderen Satz von Anweisungen hinzugefügt werden, als Antwort auf die Bestimmung der Unterstützung der Rahmeninterpolation durch die API 1602, wie oben beschrieben. In mindestens einer Ausführungsform sieht der Beispielsoftwarecode, der einen API-Aufruf für eine Streamoperation in der parallelen Rechenumgebung 1508, wie beispielsweise CUDA, anzeigt, wie folgt aus:
  •       /**
    
           * Übergeben einer Liste von Operationen an einen CUDA-Stream.
           *
           * - param[in] usrStream - Der Stream, in den die Operationen übertragen werden.
           *
           * - param[in] streamOp - Die Liste der zu übermittelnden Operationen.
           * 
    
    
    
    
    
           * - param[in] count - Die Anzahl der zu übermittelnden Operationen.
           *
           * - Gibt bei Erfolg CUDA_SUCCESS zurück, andernfalls wird ein entsprechender
           Fehler ausgegeben.
           */
           CUresult cuSocketStreamOps(
                 CUstream usrStream,
                 cuSocketStreamOp *streamOp,
                 unsigned int count,
                 unsigned int flags
           );
  • In mindestens einer Ausführungsform umfassen eine oder mehrere APIs 1506 Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine oder mehrere Operationen oder Anweisungen, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren auszuführen sind, zu einem oder mehreren ausführbaren Graphen hinzugefügt werden, ähnlich wie eine oder mehrere Operationen oder Anweisungen, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren auszuführen sind, zu einem oder mehreren Streams oder Sätzen von Anweisungen als Antwort auf die Bestimmung der Unterstützung der Rahmeninterpolation durch die API 1602 hinzugefügt werden sollen. In mindestens einer Ausführungsform sieht der Beispielsoftwarecode, der das Hinzufügen von einer oder mehreren Operationen oder Anweisungen zu einem oder mehreren ausführbaren Graphen durch eine oder mehrere APIs 1506 der parallelen Rechenumgebung 1508 anzeigt, wie folgt aus:
  •       /**
    
           * Übermitteln einer Aufgabe für eine externe Vorrichtung an einen CUDA-Stream.
           *
           * - param[in] graphNode - Der neu erstellte Knoten.
           *
           * - param[in] graph - Der Graph, zu dem dieser Knoten hinzugefügt werden soll.
           *
           * - param[in] dependencies - Die Abhängigkeiten, die erfüllt sein müssen, damit
           dieser Knoten
           * ausgeführt werden kann. 
    
    
    
    
    
           * - param[in] numDependencies - Die Anzahl der Abhängigkeiten.
           * - param[in] nodeParams - Die Ausführungsparameter des Knotens.
           *
           * - Gibt bei Erfolg CUDA_SUCCESS zurück, andernfalls wird ein entsprechender
           Fehler ausgegeben.
           */
           CUresult cuSocketAddExternalDeviceNode (
                 CUgraphNode* graphNode,
                 CUgraph Graph,
                 CUgraphNode* Abhängigkeiten,
                 unsigned int numDependencies,
                 cuSocketExternalDeviceNodeParams* nodeParams
           );
  • 17 ist ein Blockdiagramm 1700, das eine Anwendungsprogrammierschnittstelle (API) veranschaulicht, um die Interpolation von Videorahmen gemäß mindestens einer Ausführungsform zu ermöglichen. In mindestens einer Ausführungsform führen eine oder mehrere Schaltungen eines Prozessors eine API 1702 für die Interpolation von Videorahmen aus, um einem Prozessor wie den hierin beschriebenen anzuzeigen, dass der Prozessor die Interpolation von Videorahmen unter Verwendung eines oder mehrerer neuronaler Netzwerke durchführen soll, wobei Operationen, Techniken, Systeme und/oder Verfahren wie die hierin beschriebenen verwendet werden. In mindestens einer Ausführungsform, die in 17 nicht dargestellt ist, führen eine oder mehrere Schaltungen eines Prozessors, wie die hierin beschriebenen, eine oder mehrere Anweisungen aus, um eine Anwendungsprogrammierschnittstelle (API) zum Aktivieren der Rahmeninterpolation auszuführen API 1702, um die Rahmeninterpolation zu ermöglichen, ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform stellt die API 1702 zum Aktivieren der Rahmeninterpolation in einem Treiber eines Prozessors (z. B. einer GPU) einen Satz oder ein Flag ein, um die Interpolation von Videorahmen unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen, wie hierin beschrieben. In mindestens einer Ausführungsform setzt zum Beispiel die API 1702 zum Aktivieren der Rahmeninterpolation einen Satz in einem Prozessortreiber auf wahr, um die Überblendung von Videorahmen unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform stellt die API 1702 für die Interpolation von Videorahmen einen Satz in einem Zustand eines Prozessors ein, der eine echte Überblendung von Videorahmen unter Verwendung eines oder mehrerer neuronaler Netzwerke ermöglicht. In mindestens einer Ausführungsform schaltet API 1702 die Interpolation von Videorahmen unter Verwendung eines oder mehrerer neuronaler Netzwerke mit Hilfe eines Signals, eines Ereignisses, eines Semaphors oder eines anderen Verfahrens ein oder aktiviert sie auf andere Weise.
  • In mindestens einer Ausführungsform, die in 17 nicht dargestellt ist, führt eine oder mehrere Schaltungen eines Prozessors, wie die hierin beschriebenen, eine oder mehrere Anweisungen aus, um die Rahmeninterpolation auszuführen API 1702, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation zu ermöglichen, um ein oder mehrere neuronale Netzwerke zu verwenden. als Antwort auf den Empfang einer zweiten API, wie die hierin beschriebenen. In mindestens einer Ausführungsform ist die API 1702 zur Aktivierung der Rahmeninterpolation eine oder mehrere APIs, wie sie oben in Verbindung mit 14 beschrieben wurden.
  • In mindestens einer Ausführungsform empfängt die API 1702 zur Aktivierung der Rahmeninterpolation bei ihrem Aufruf ein oder mehrere Argumente, um Informationen über Operationen anzuzeigen, die mit Techniken wie den hierin beschriebenen ausgeführt werden sollen. In mindestens einer Ausführungsform empfängt die API 1702 zur Aktivierung der Rahmeninterpolation bei ihrem Aufruf ein oder mehrere Argumente, um Informationen über Anweisungen anzuzeigen, die mit Techniken wie den hierin beschriebenen ausgeführt werden sollen.
  • In mindestens einer Ausführungsform empfängt die API 1702 zur Aktivierung der Rahmeninterpolation als Eingabe ein oder mehrere Argumente, die die Merkmals-ID 1704 umfassen. In mindestens einer Ausführungsform ist die Merkmals-ID 1704 ein Datenwert, der Informationen umfasst, die zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines Rahmeninterpolationsmerkmals dienen, das von der API 1702 zur Aktivierung der Rahmeninterpolation verwendet werden kann, wie hierin beschrieben. In mindestens einer Ausführungsform ist die Merkmals-ID 1704 eine Merkmals-ID wie die Merkmals-ID 1604, die hierin mindestens in Verbindung mit 16 beschrieben ist. In mindestens einer Ausführungsform ist ein Merkmal, das durch die Merkmals-ID 1704 identifiziert, angezeigt oder anderweitig spezifiziert wird, einer von mehreren Parametern, die von der API 1702 zur Aktivierung der Interpolation von Videorahmen verwendet werden können. In mindestens einer Ausführungsform ist die Merkmals-ID 1704 ein Datenwert zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines Satzes von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie beispielsweise GPUs, und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors, wie hierin beschrieben, auszuführen sind, gegenüber einer API, wie beispielsweise der API 1702 zur Aktivierung der Rahmeninterpolation.
  • In mindestens einer Ausführungsform empfängt die API 1702 zur Aktivierung der Rahmeninterpolation als Eingabe ein oder mehrere Argumente, die die GPU-ID 1706 umfassen. In mindestens einer Ausführungsform ist die GPU-ID 1706 ein Datenwert, der Informationen umfasst, die zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines Prozessors (z. B. einer CPU, GPU, PPU, GPGPU usw.) verwendet werden können, dem mit der API 1702 zur Aktivierung der Rahmeninterpolation ein Hinweis bereitgestellt wird. In mindestens einer Ausführungsform ist die GPU-ID 1706 eine GPU-ID wie die GPU-ID 1606, die hierin mindestens in Verbindung mit 16 beschrieben ist. In mindestens einer Ausführungsform ist ein Prozessor, der durch die GPU-ID 1706 identifiziert, angezeigt oder anderweitig spezifiziert wird, einer von mehreren Parametern, die von der API 1702 zur Aktivierung der Interpolation von Videorahmen verwendet werden können. In mindestens einer Ausführungsform ist die GPU-ID 1706 ein Datenwert zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines Satzes von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie beispielsweise GPUs, und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors, wie hierin beschrieben, auszuführen sind, gegenüber einer API, wie beispielsweise der API 1702 zur Aktivierung der Rahmeninterpolation.
  • In mindestens einer Ausführungsform empfängt die API 1702 zur Aktivierung der Rahmeninterpolation als Eingabe ein oder mehrere Argumente, die ein oder mehrere andere Argumente 1708 umfassen. In mindestens einer Ausführungsform handelt es sich bei den anderen Argumenten 1708 um Daten, die Informationen umfassen, um andere Informationen anzuzeigen, die bei der Ausführung der API 1702 zur Aktivierung der Interpolation von Videorahmen verwendet werden können.
  • In mindestens einer Ausführungsform, die in 17 nicht dargestellt ist, führt ein Prozessor eine oder mehrere Anweisungen aus, um eine oder mehrere APIs auszuführen, wie beispielsweise die Aktivierung der Rahmeninterpolation durch die API 1702, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation zu ermöglichen, um ein oder mehrere neuronale Netzwerke zu verwenden. unter Verwendung eines oder mehrerer Argumente, einschließlich, aber nicht beschränkt auf, Merkmals-ID 1704, GPU-ID 1706 und/oder andere Argumente 1708.
  • In mindestens einer Ausführungsform veranlasst die API 1702 zur Aktivierung der Rahmeninterpolation, wenn sie aufgerufen wird, eine oder mehrere APIs wie eine oder mehrere APIs 1506, die hierin mindestens in Verbindung mit 15 beschrieben sind, eine oder mehrere Operationen oder Anweisungen hinzuzufügen, einzufügen oder anderweitig in einen Stream oder Satz von Anweisungen einzuschließen, die von einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors auszuführen sind. In mindestens einer Ausführungsform veranlasst die API 1702 zur Aktivierung der Rahmeninterpolation, wenn sie aufgerufen wird, eine oder mehrere APIs, wie beispielsweise eine oder mehrere APIs 1506, in einer parallelen Rechenumgebung, wie beispielsweise der parallelen Rechenumgebung 1508, die hierin mindestens in Verbindung mit 15 beschrieben ist, eine oder mehrere Operationen oder Anweisungen hinzufügen, einfügen oder anderweitig in einen Stream oder Satz von Anweisungen einschließen, die von einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors ausgeführt werden.
  • In mindestens einer Ausführungsform veranlassen eine oder mehrere APIs 1506 als Antwort auf die Aktivierung der Rahmeninterpolation API 1702 einen oder mehrere Prozessoren dazu, eine Aktivierung der Rahmeninterpolation durch die API-Rückgabe 1720 auszuführen, falls diese ausgeführt wird. In mindestens einer Ausführungsform ist die Aktivierung der Rahmeninterpolation durch die API-Rückgabe 1720 ein Satz von Anweisungen, die, wenn sie ausgeführt werden, einen oder mehrere Datenwerte als Antwort auf die Aktivierung der Rahmeninterpolation durch die API 1702 erstellen und/oder anzeigen. In mindestens einer Ausführungsform zeigt die Aktivierung der Rahmeninterpolation durch die API-Rückgabe 1720 eine Erfolgsanzeige 1722 an. In mindestens einer Ausführungsform handelt es sich bei dem Erfolgsindikator 1722 um Daten, die einen beliebigen Wert umfassen, um den Erfolg der Aktivierung der Rahmeninterpolation durch die API 1702 anzuzeigen. In mindestens einer Ausführungsform umfasst der Erfolgsindikator 1722 Informationen, die einen oder mehrere spezifische Typen von Erfolgen anzeigen, die als Ergebnis der Ausführung der Rahmeninterpolation durch die API 1702 erstellt wurden. In mindestens einer Ausführungsform umfasst die Erfolgsanzeige 1722 Informationen über einen oder mehrere andere Datenwerte, die als Ergebnis der Aktivierung der Rahmeninterpolation durch die API 1702 erstellt wurden.
  • In mindestens einer Ausführungsform zeigt die Aktivierung der Rahmeninterpolation durch die API-Rückgabe 1720 eine Fehleranzeige 1724 an. In mindestens einer Ausführungsform handelt es sich bei dem Fehlerindikator 1724 um Daten, die einen beliebigen Wert umfassen, um ein Scheitern der Aktivierung der Rahmeninterpolation durch die API 1702 anzuzeigen. In mindestens einer Ausführungsform umfasst der Fehlerindikator 1724 Informationen, die einen oder mehrere spezifische Typen von Fehlern anzeigen, die als Ergebnis der Ausführung der aktivierten Rahmeninterpolation durch die API 1702 erstellt wurden. In mindestens einer Ausführungsform umfasst die Fehleranzeige 1724 Informationen über einen oder mehrere andere Datenwerte, die als Ergebnis der Aktivierung der Rahmeninterpolation durch die API 1702 erstellt wurden.
  • In mindestens einer Ausführungsform umfasst die parallele Rechenumgebung 1508 eine oder mehrere APIs 1506, einschließlich, aber nicht beschränkt auf die Aktivierung der Rahmeninterpolation durch die API 1702, die verschiedene Operationen unterschiedlicher Typen zu einem Stream hinzufügt, der von einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors ausgeführt wird. In mindestens einer Ausführungsform umfassen Streamoperationen eine Acquire-Semaphore-Operation. In mindestens einer Ausführungsform umfassen die Streamoperationen eine Release-Semaphor-Operation. In mindestens einer Ausführungsform umfassen Streamoperationen eine oder mehrere Operationen zum Leeren und/oder Ungültigmachen von Cache-Speicher, wie L2-Cache-Speicher einer PPU, wie einer GPU, und/oder Cache-Speicher eines oder mehrerer Beschleuniger innerhalb eines heterogenen Prozessors. In mindestens einer Ausführungsform umfassen Streamoperationen eine oder mehrere Operationen, um die Übergabe einer Operation an eine externe Vorrichtung anzuzeigen, wie beispielsweise einen oder mehrere Beschleuniger innerhalb eines heterogenen Prozessors. In mindestens einer Ausführungsform verwenden eine oder mehrere Operationen, die die Übermittlung einer Operation an eine externe Vorrichtung anzeigen, einen Softwarecode wie den Beispielsoftwarecode, der Streamoperationen anzeigt, wie hierin zumindest in Verbindung mit 16 beschrieben.
  • In mindestens einer Ausführungsform umfasst die parallele Rechenumgebung 1508 eine oder mehrere APIs 1506, einschließlich, aber nicht beschränkt auf die Aktivierung der Rahmeninterpolation durch die API 1702, eine oder mehrere Funktionssignaturen, die verwendet werden können, um eine oder mehrere Rückruffunktionen für Operationen anzugeben, die von einem oder mehreren Beschleunigern in heterogenen Prozessoren auszuführen sind. In mindestens einer Ausführungsform werden durch eine oder mehrere Operationen eine oder mehrere Rückruffunktionen ausgeführt. In mindestens einer Ausführungsform verwenden eine oder mehrere Operationen, die dazu führen, dass eine oder mehrere Rückruffunktionen ausgeführt werden, einen Softwarecode, wie beispielsweise einen Beispielsoftwarecode, der eine Funktionssignatur für eine Rückruffunktion angibt, wie hierin mindestens in Verbindung mit 16 beschrieben.
  • In mindestens einer Ausführungsform, um einen oder mehrere Beschleuniger in heterogenen Prozessoren zu spezifizieren, um eine oder mehrere Operationen auszuführen, die durch die Aktivierung der Rahmeninterpolation durch die API 1702 für eine oder mehrere APIs 1506 angezeigt werden, können eine oder mehrere Datenstrukturen einer oder mehrerer APIs 1506 verwendet werden, um eine oder mehrere externe Vorrichtungen zu spezifizieren, für die die eine oder mehreren APIs 1506 die eine oder mehrere Operationen durchführen sollen. In mindestens einer Ausführungsform verwenden eine oder mehrere Datenstrukturen einer oder mehrerer APIs 1506, die zur Spezifizierung einer oder mehrerer externer Vorrichtungen verwendet werden können, für die die eine oder mehreren APIs 1506 die eine oder mehreren Operationen durchführen sollen, einen Softwarecode, wie beispielsweise einen Beispielsoftwarecode, der eine Datenstruktur angibt, die einen Vorrichtungsknoten für einen oder mehrere Beschleuniger in heterogenen Prozessoren darstellt, wie hierin zumindest in Verbindung mit 16 beschrieben.
  • In mindestens einer Ausführungsform werden zur Angabe von Typ und Daten einer oder mehrerer Operationen, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren ausgeführt werden sollen, eine oder mehrere Strukturen einer oder mehrerer APIs 1506 verwendet. In mindestens einer Ausführungsform verwenden eine oder mehrere Datenstrukturen einer oder mehrerer APIs 1506, die verwendet werden, um Typ und Daten einer oder mehrerer Operationen zu spezifizieren, die durch eine oder mehrere Operationen angegeben werden, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren ausgeführt werden sollen, einen Softwarecode, wie beispielsweise einen Beispielsoftwarecode, der eine Datenstruktur angibt, um Typ und Daten einer oder mehrerer Operationen zu spezifizieren, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren ausgeführt werden sollen, wie hierin mindestens in Verbindung mit 16 beschrieben.
  • In mindestens einer Ausführungsform umfassen eine oder mehrere APIs 1506 Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine oder mehrere Operationen oder Anweisungen zu einem Stream oder einem anderen Satz von Anweisungen hinzugefügt werden, die von einem oder mehreren Beschleunigern in heterogenen Prozessoren ausgeführt werden. In mindestens einer Ausführungsform sind als Antwort auf die Aktivierung der Rahmeninterpolation durch die API 1702, wie oben beschrieben, Anweisungen auszuführen, die bewirken, dass eine oder mehrere Operationen oder Anweisungen zu einem Stream oder einem anderen Satz von Anweisungen hinzugefügt werden. In mindestens einer Ausführungsform verwenden Anweisungen, die das Hinzufügen einer oder mehrerer Operationen oder Anweisungen zu einem Stream oder einem anderen Satz von Anweisungen als Antwort auf die Aktivierung der Rahmeninterpolation API 1702 veranlassen, einen Softwarecode wie den Beispielsoftwarecode, der einen Aufruf der Streamoperation API in der parallelen Rechenumgebung 1508 anzeigt, wie hierin mindestens in Verbindung mit 16 beschrieben.
  • In mindestens einer Ausführungsform umfassen eine oder mehrere APIs 1506 Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine oder mehrere Operationen oder Anweisungen, die von einem oder mehreren Beschleunigern in heterogenen Prozessoren ausgeführt werden, zu einem oder mehreren ausführbaren Graphen hinzugefügt werden. In mindestens einer Ausführungsform sind Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine oder mehrere Operationen oder Anweisungen, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren auszuführen sind, zu einem oder mehreren ausführbaren Graphen hinzugefügt werden, vergleichbar mit der Art und Weise, wie eine oder mehrere Operationen oder Anweisungen, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren auszuführen sind, zu einem oder mehreren Streams oder Sätzen von Anweisungen als Antwort auf die Aktivierung der Rahmeninterpolation durch die API 1702, wie hierin beschrieben, hinzugefügt werden. In mindestens einer Ausführungsform verwenden Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine oder mehrere Operationen oder Anweisungen, die von einem oder mehreren Beschleunigern in heterogenen Prozessoren auszuführen sind, zu einem oder mehreren ausführbaren Graphen hinzugefügt werden, Softwarecode wie Beispielsoftwarecode, der das Hinzufügen einer oder mehrerer Operationen oder Anweisungen zu einem oder mehreren ausführbaren Graphen durch eine oder mehrere APIs 1506 der parallelen Rechenumgebung 1508 anzeigt, wie hierin mindestens in Verbindung mit 16 beschrieben.
  • 18 ist ein Blockdiagramm 1800, das eine Anwendungsprogrammierschnittstelle (API) veranschaulicht, um die Interpolation von Videorahmen gemäß mindestens einer Ausführungsform zu deaktivieren. In mindestens einer Ausführungsform führen eine oder mehrere Schaltungen eines Prozessors eine Deaktivierung der Rahmeninterpolation durch die API 1802 aus, um einem Prozessor wie den hierin beschriebenen anzuzeigen, dass der Prozessor keine Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke durchführen soll, wobei Operationen, Techniken, Systeme und/oder Verfahren wie die hierin beschriebenen verwendet werden. In mindestens einer Ausführungsform, die in 18 nicht dargestellt ist, führt eine oder mehrere Schaltungen eines Prozessors, wie sie hierin beschrieben sind, eine oder mehrere Anweisungen aus, um die Deaktivierung der Rahmeninterpolation auszuführen API 1802, um eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation auszuführen, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform stellt die API 1802 zum Deaktivieren der Rahmeninterpolation in einem Treiber eines Prozessors (z. B. einer GPU) einen Satz oder ein Flag ein, um die Interpolation von Videorahmen unter Verwendung eines oder mehrerer neuronaler Netzwerke zu deaktivieren, wie hierin beschrieben. In mindestens einer Ausführungsform setzt beispielsweise die Deaktivierung der Rahmeninterpolation durch die API 1802 einen Satz in einem Prozessortreiber auf Falsch, um die Überblendung von Videorahmen unter Verwendung eines oder mehrerer neuronaler Netzwerke zu deaktivieren. In mindestens einer Ausführungsform stellt die API 1802 zum Deaktivieren der Interpolation von Videorahmen einen Satz im Status eines Prozessors auf „false“ ein, um die Überblendung von Videorahmen unter Verwendung eines oder mehrerer neuronaler Netzwerke zu deaktivieren. In mindestens einer Ausführungsform schaltet die API 1802 die Interpolation von Videorahmen unter Verwendung eines oder mehrerer neuronaler Netzwerke mit Hilfe eines Signals, eines Ereignisses, eines Semaphors oder eines anderen solchen Verfahrens aus oder deaktiviert sie auf andere Weise.
  • In mindestens einer Ausführungsform, die in 18 nicht dargestellt ist, führt eine oder mehrere Schaltungen eines Prozessors, wie die hierin beschriebenen, eine oder mehrere Anweisungen aus, um die Deaktivierung der Rahmeninterpolation durch die API 1802 auszuführen, um eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zur Verwendung eines oder mehrerer neuronaler Netzwerke als Antwort auf den Empfang einer zweiten API, wie die hierin beschriebenen, auszuführen. In mindestens einer Ausführungsform handelt es sich bei der deaktivierten Rahmeninterpolation durch die API 1802 um eine oder mehrere APIs, wie sie oben in Verbindung mit 14 beschrieben wurden.
  • In mindestens einer Ausführungsform empfängt die API 1802 zur Deaktivierung der Rahmeninterpolation bei ihrem Aufruf ein oder mehrere Argumente, um Informationen über Operationen anzuzeigen, die mit Techniken wie den hierin beschriebenen ausgeführt werden sollen. In mindestens einer Ausführungsform empfängt die API 1802 zur Deaktivierung der Rahmeninterpolation bei ihrem Aufruf ein oder mehrere Argumente, um Informationen über Anweisungen anzuzeigen, die mit Techniken wie den hierin beschriebenen ausgeführt werden sollen.
  • In mindestens einer Ausführungsform empfängt die API 1802 zur Deaktivierung der Rahmeninterpolation als Eingabe ein oder mehrere Argumente, die die Merkmals-ID 1804 umfassen. In mindestens einer Ausführungsform ist die Merkmals-ID 1804 ein Datenwert, der Informationen umfasst, die dazu verwendet werden können, ein Rahmeninterpolationsmerkmal zu identifizieren, anzuzeigen oder anderweitig zu spezifizieren, indem die Deaktivierung der Rahmeninterpolation durch die API 1802, wie hierin beschrieben, erfolgt. In mindestens einer Ausführungsform ist die Merkmals-ID 1804 eine Merkmals-ID wie die Merkmals-ID 1604, wie hierin mindestens in Verbindung mit 16 beschrieben. In mindestens einer Ausführungsform ist ein durch die Merkmals-ID 1804 identifiziertes, angezeigtes oder anderweitig spezifiziertes Merkmal einer von mehreren Parametern, die von der Deaktivierung der Rahmeninterpolation durch die API 1802 verwendet werden können, um die Interpolation von Videorahmen zu deaktivieren. In mindestens einer Ausführungsform ist die Merkmals-ID 1804 ein Datenwert zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines Satzes von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie beispielsweise GPUs, und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors, wie hierin beschrieben, auszuführen sind, gegenüber einer API, wie beispielsweise der API 1802 zur Deaktivierung der Rahmeninterpolation.
  • In mindestens einer Ausführungsform empfängt die API 1802 zur Deaktivierung der Rahmeninterpolation als Eingabe ein oder mehrere Argumente, die die GPU-ID 1806 umfassen. In mindestens einer Ausführungsform ist die GPU-ID 1806 ein Datenwert, der Informationen umfasst, die zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines Prozessors (z. B. einer CPU, GPU, PPU, GPGPU usw.) verwendet werden können, dem mit Hilfe der Deaktivierung der Rahmeninterpolation durch die API 1802 ein Hinweis zum Deaktivieren der Rahmeninterpolation bereitgestellt wird. In mindestens einer Ausführungsform ist die GPU-ID 1806 eine GPU-ID wie die GPU-ID 1606, die hierin mindestens in Verbindung mit 16 beschrieben ist. In mindestens einer Ausführungsform ist ein Prozessor, der durch die GPU-ID 1806 identifiziert, angezeigt oder anderweitig spezifiziert wird, einer von mehreren Parametern, die von der API 1802 zum Deaktivieren der Interpolation von Videorahmen verwendet werden können. In mindestens einer Ausführungsform ist die GPU-ID 1806 ein Datenwert zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines Satzes von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie beispielsweise GPUs, und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors, wie hierin beschrieben, auszuführen sind, gegenüber einer API, wie beispielsweise der API 1802 zur Deaktivierung der Rahmeninterpolation.
  • In mindestens einer Ausführungsform empfängt die API 1802 zur Deaktivierung der Rahmeninterpolation als Eingabe ein oder mehrere Argumente Deaktivieren ein oder mehrere andere Argumente 1808 umfassen. In mindestens einer Ausführungsform handelt es sich bei den anderen Argumenten 1808 um Daten, die Informationen umfassen, um alle anderen Informationen anzuzeigen, die bei der Ausführung der Deaktivierung der Rahmeninterpolation durch die API 1802 zur Deaktivierung der Interpolation von Videorahmen verwendet werden können.
  • In mindestens einer Ausführungsform, die in 18 nicht dargestellt ist, führt ein Prozessor eine oder mehrere Anweisungen aus, um eine oder mehrere APIs auszuführen, wie beispielsweise die Deaktivierung der Rahmeninterpolation durch die API 1802, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation zu deaktivieren, um ein oder mehrere neuronale Netzwerke unter Verwendung eines oder mehrerer Argumente, einschließlich, aber nicht beschränkt auf, Merkmals-ID 1804, GPU-ID 1806 und/oder andere Argumente 1808, zu verwenden.
  • In mindestens einer Ausführungsform veranlasst die API 1802 zur Deaktivierung der Rahmeninterpolation, wenn sie aufgerufen wird, eine oder mehrere APIs wie eine oder mehrere APIs 1506, die hierin mindestens in Verbindung mit 15 beschrieben sind, eine oder mehrere Operationen oder Anweisungen hinzuzufügen, einzufügen oder anderweitig in einen Stream oder Satz von Anweisungen einzuschließen, die von einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors auszuführen sind. In mindestens einer Ausführungsform veranlasst die API 1802 zur Deaktivierung der Rahmeninterpolation, wenn sie aufgerufen wird, eine oder mehrere APIs, wie beispielsweise eine oder mehrere APIs 1506, in einer parallelen Rechenumgebung, wie beispielsweise der parallelen Rechenumgebung 1508, die hierin mindestens in Verbindung mit 15 beschrieben ist, eine oder mehrere Operationen oder Anweisungen hinzufügen, einfügen oder anderweitig in einen Stream oder Satz von Anweisungen einschließen, die von einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors ausgeführt werden.
  • In mindestens einer Ausführungsform veranlassen eine oder mehrere APIs 1506 als Antwort auf die Deaktivierung der Rahmeninterpolation API 1802 einen oder mehrere Prozessoren dazu, eine Aktivierung der Rahmeninterpolation durch die API-Rückgabe 1820 auszuführen, falls diese ausgeführt wird. In mindestens einer Ausführungsform ist die Deaktivierung der Rahmeninterpolation durch die API-Rückgabe 1820 ein Satz von Anweisungen, die, wenn sie ausgeführt werden, einen oder mehrere Datenwerte als Antwort auf die Deaktivierung der Rahmeninterpolation durch die API 1802 erstellen und/oder anzeigen. In mindestens einer Ausführungsform zeigt die Deaktivierung der Rahmeninterpolation durch die API-Rückgabe 1820 eine Erfolgsanzeige 1822 an. In mindestens einer Ausführungsform handelt es sich bei dem Erfolgsindikator 1822 um Daten, die einen beliebigen Wert umfassen, um den Erfolg der Deaktivierung der Rahmeninterpolation durch die API 1802 anzuzeigen. In mindestens einer Ausführungsform umfasst der Erfolgsindikator 1822 Informationen, die einen oder mehrere spezifische Typen von Erfolgen anzeigen, die als Ergebnis der Ausführung der Deaktivierung der Rahmeninterpolation durch die API 1802 erstellt wurden. In mindestens einer Ausführungsform umfasst die Erfolgsanzeige 1822 Informationen über einen oder mehrere andere Datenwerte, die als Ergebnis der Deaktivierung der Rahmeninterpolation durch die API 1802 erstellt wurden.
  • In mindestens einer Ausführungsform zeigt die Deaktivierung der Rahmeninterpolation durch die API-Rückgabe 1820 eine Fehleranzeige 1824 an. In mindestens einer Ausführungsform handelt es sich bei dem Fehlerindikator 1824 um Daten, die einen beliebigen Wert umfassen, um ein Scheitern der Deaktivierung der Rahmeninterpolation durch die API 1802 anzuzeigen. In mindestens einer Ausführungsform umfasst der Fehlerindikator 1824 Informationen, die einen oder mehrere spezifische Typen von Fehlern anzeigen, die als Ergebnis der Ausführung der deaktivierten Rahmeninterpolation durch die API 1802 erstellt wurden. In mindestens einer Ausführungsform umfasst die Fehleranzeige 1824 Informationen über einen oder mehrere andere Datenwerte, die als Ergebnis der Deaktivierung der Rahmeninterpolation durch die API 1802 erstellt wurden.
  • In mindestens einer Ausführungsform umfasst die parallele Rechenumgebung 1508 eine oder mehrere APIs 1506, einschließlich, aber nicht beschränkt auf die Deaktivierung der Rahmeninterpolation durch die API 1802, die verschiedene Operationen unterschiedlicher Typen zu einem Stream hinzufügt, der von einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors ausgeführt wird. In mindestens einer Ausführungsform umfassen Streamoperationen eine Acquire-Semaphore-Operation. In mindestens einer Ausführungsform umfassen die Streamoperationen eine Release-Semaphor-Operation. In mindestens einer Ausführungsform umfassen Streamoperationen eine oder mehrere Operationen zum Leeren und/oder Ungültigmachen von Cache-Speicher, wie L2-Cache-Speicher einer PPU, wie einer GPU, und/oder Cache-Speicher eines oder mehrerer Beschleuniger innerhalb eines heterogenen Prozessors. In mindestens einer Ausführungsform umfassen Streamoperationen eine oder mehrere Operationen, um die Übergabe einer Operation an eine externe Vorrichtung anzuzeigen, wie beispielsweise einen oder mehrere Beschleuniger innerhalb eines heterogenen Prozessors. In mindestens einer Ausführungsform verwenden eine oder mehrere Operationen, die die Übermittlung einer Operation an eine externe Vorrichtung anzeigen, einen Softwarecode wie den Beispielsoftwarecode, der Streamoperationen anzeigt, wie hierin zumindest in Verbindung mit 16 beschrieben.
  • In mindestens einer Ausführungsform umfasst die parallele Rechenumgebung 1508 eine oder mehrere APIs 1506, einschließlich, aber nicht beschränkt auf die Deaktivierung der Rahmeninterpolation durch die API 1802, eine oder mehrere Funktionssignaturen, die verwendet werden können, um eine oder mehrere Rückruffunktionen für Operationen anzugeben, die von einem oder mehreren Beschleunigern in heterogenen Prozessoren auszuführen sind. In mindestens einer Ausführungsform werden durch eine oder mehrere Operationen eine oder mehrere Rückruffunktionen ausgeführt. In mindestens einer Ausführungsform verwenden eine oder mehrere Operationen, die dazu führen, dass eine oder mehrere Rückruffunktionen ausgeführt werden, einen Softwarecode, wie beispielsweise einen Beispielsoftwarecode, der eine Funktionssignatur für eine Rückruffunktion angibt, wie hierin mindestens in Verbindung mit 16 beschrieben.
  • In mindestens einer Ausführungsform, um einen oder mehrere Beschleuniger in heterogenen Prozessoren zu spezifizieren, um eine oder mehrere Operationen auszuführen, die von der Deaktivierung der Rahmeninterpolation durch die API 1802 an eine oder mehrere APIs 1506 angezeigt werden, können eine oder mehrere Datenstrukturen einer oder mehrerer APIs 1506 verwendet werden, um eine oder mehrere externe Vorrichtungen zu spezifizieren, für die die eine oder mehreren APIs 1506 die eine oder mehrere Operationen durchführen sollen. In mindestens einer Ausführungsform verwenden eine oder mehrere Datenstrukturen einer oder mehrerer APIs 1506, die zur Spezifizierung einer oder mehrerer externer Vorrichtungen verwendet werden können, für die die eine oder mehreren APIs 1506 die eine oder mehreren Operationen durchführen sollen, einen Softwarecode, wie beispielsweise einen Beispielsoftwarecode, der eine Datenstruktur angibt, die einen Vorrichtungsknoten für einen oder mehrere Beschleuniger in heterogenen Prozessoren darstellt, wie hierin zumindest in Verbindung mit 16 beschrieben ist.
  • In mindestens einer Ausführungsform werden zur Angabe von Typ und Daten einer oder mehrerer Operationen, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren ausgeführt werden sollen, eine oder mehrere Strukturen einer oder mehrerer APIs 1506 verwendet. In mindestens einer Ausführungsform verwenden eine oder mehrere Datenstrukturen einer oder mehrerer APIs 1506, die verwendet werden, um Typ und Daten einer oder mehrerer Operationen zu spezifizieren, die durch eine oder mehrere Operationen angegeben werden, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren ausgeführt werden sollen, einen Softwarecode, wie beispielsweise einen Beispielsoftwarecode, der eine Datenstruktur angibt, um Typ und Daten einer oder mehrerer Operationen zu spezifizieren, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren ausgeführt werden sollen, wie hierin mindestens in Verbindung mit 16 beschrieben.
  • In mindestens einer Ausführungsform umfassen eine oder mehrere APIs 1506 Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine oder mehrere Operationen oder Anweisungen zu einem Stream oder einem anderen Satz von Anweisungen hinzugefügt werden, die von einem oder mehreren Beschleunigern in heterogenen Prozessoren ausgeführt werden. In mindestens einer Ausführungsform sind als Antwort auf die Deaktivierung der Rahmeninterpolation durch die API 1802, wie oben beschrieben, Anweisungen auszuführen, die bewirken, dass eine oder mehrere Operationen oder Anweisungen zu einem Stream oder einem anderen Satz von Anweisungen hinzugefügt werden. In mindestens einer Ausführungsform verwenden Anweisungen, die das Hinzufügen einer oder mehrerer Operationen oder Anweisungen zu einem Stream oder einem anderen Satz von Anweisungen als Antwort auf die Deaktivierung der Rahmeninterpolation API 1802 veranlassen, einen Softwarecode wie den Beispielsoftwarecode, der einen Aufruf der Stromoperation API in der parallelen Rechenumgebung 1508 anzeigt, wie hierin mindestens in Verbindung mit 16 beschrieben ist.
  • In mindestens einer Ausführungsform umfassen eine oder mehrere APIs 1506 Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine oder mehrere Operationen oder Anweisungen, die von einem oder mehreren Beschleunigern in heterogenen Prozessoren ausgeführt werden, zu einem oder mehreren ausführbaren Graphen hinzugefügt werden. In mindestens einer Ausführungsform sind Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine oder mehrere Operationen oder Anweisungen, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren auszuführen sind, zu einem oder mehreren ausführbaren Graphen hinzugefügt werden, vergleichbar mit der Art und Weise, wie eine oder mehrere Operationen oder Anweisungen, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren auszuführen sind, zu einem oder mehreren Streams oder Sätzen von Anweisungen als Antwort auf die Deaktivierung der Rahmeninterpolation durch die API 1802, wie hierin beschrieben, hinzugefügt werden. In mindestens einer Ausführungsform verwenden Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine oder mehrere Operationen oder Anweisungen, die von einem oder mehreren Beschleunigern in heterogenen Prozessoren auszuführen sind, zu einem oder mehreren ausführbaren Graphen hinzugefügt werden, Softwarecode wie Beispielsoftwarecode, der das Hinzufügen einer oder mehrerer Operationen oder Anweisungen zu einem oder mehreren ausführbaren Graphen durch eine oder mehrere APIs 1506 der parallelen Rechenumgebung 1508 anzeigt, wie hierin mindestens in Verbindung mit 16 beschrieben.
  • 19 ist ein Blockdiagramm 1900, das eine Anwendungsprogrammierschnittstelle (API) veranschaulicht, um Parameter für die Interpolation von Videorahmen gemäß mindestens einer Ausführungsform zu ermitteln. In mindestens einer Ausführungsform führen eine oder mehrere Schaltungen eines Prozessors eine API 1902 zum Abrufen von Rahmeninterpolationsparametern aus, um einen oder mehrere Parameter zu ermitteln, die von einem Prozessor wie den hierin beschriebenen verwendet werden können, um eine Interpolation von Videorahmen unter Verwendung eines oder mehrerer neuronaler Netzwerke durchzuführen, wobei Operationen, Techniken, Systeme und/oder Verfahren wie die hierin beschriebenen verwendet werden. In mindestens einer Ausführungsform, die in 19 nicht dargestellt ist, führt eine oder mehrere Schaltungen eines Prozessors, wie die hierin beschriebenen, eine oder mehrere Anweisungen aus, um eine Anwendungsprogrammierschnittstelle (API) zum API 1902 zum Abrufen von Rahmeninterpolationsparametern auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform, die in 19 nicht dargestellt ist, führt eine oder mehrere Schaltungen eines Prozessors, wie die hierin beschriebenen, eine oder mehrere Anweisungen aus, um die API 1902 zum Abrufen von Rahmeninterpolationsparametern auszuführen, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke als Antwort auf den Empfang einer zweiten API, wie die hierin beschriebenen, anzuzeigen. In mindestens einer Ausführungsform handelt es sich bei der API 1902 zum Abrufen von Rahmeninterpolationsparametern um eine oder mehrere APIs, wie sie oben in Verbindung mit 14 beschrieben wurden.
  • In mindestens einer Ausführungsform empfängt die API 1902 zum Abrufen von Rahmeninterpolationsparametern bei ihrem Aufruf ein oder mehrere Argumente, um Informationen über Operationen anzuzeigen, die mit Techniken wie den hierin beschriebenen ausgeführt werden sollen. In mindestens einer Ausführungsform empfängt die API 1902 zum Abrufen von Rahmeninterpolationsparametern bei ihrem Aufruf ein oder mehrere Argumente, die Informationen über Anweisungen enthalten, die mit Techniken wie den hierin beschriebenen ausgeführt werden sollen.
  • In mindestens einer Ausführungsform empfängt die API 1902 zum Abrufen von Rahmeninterpolationsparametern als Eingabe ein oder mehrere Argumente, die die GPU-ID 1904 umfassen. In mindestens einer Ausführungsform ist die GPU-ID 1904 ein Datenwert, der Informationen umfasst, die zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines Prozessors (z. B. einer CPU, GPU, PPU, GPGPU usw.) verwendet werden können, dem eine Anforderung für die Rahmeninterpolation über die API 1902 zum Abrufen von Rahmeninterpolationsparametern bereitgestellt wird. In mindestens einer Ausführungsform ist die GPU-ID 1904 eine GPU-ID wie die GPU-ID 1606, die hierin mindestens in Verbindung mit 16 beschrieben ist. In mindestens einer Ausführungsform ist ein Prozessor, der durch die GPU-ID 1904 identifiziert, angezeigt oder anderweitig spezifiziert wird, einer von mehreren Parametern, die von der API 1902 zum Abrufen von Rahmeninterpolationsparametern ermittelt werden können. In mindestens einer Ausführungsform ist die GPU-ID 1904 ein Datenwert zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines Satzes von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie beispielsweise GPUs, und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors, wie hierin beschrieben, ausgeführt werden sollen, gegenüber einer API, wie beispielsweise der API 1902 zum Abrufen von Rahmeninterpolationsparametern.
  • In mindestens einer Ausführungsform empfängt API 1902 zum Abrufen von Rahmeninterpolationsparametern als Eingabe ein oder mehrere Argumente, die GPU-Parameter 1906 umfassen. In mindestens einer Ausführungsform ist GPU-Parameter 1906 ein Datenwert, der Informationen umfasst, die zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines oder mehrerer Rendering-Parameter verwendet werden können, die zur Bestimmung der Parameter für die Rahmeninterpolation unter Verwendung der API 1902 zum Abrufen von Rahmeninterpolationsparametern verwendet werden können. In mindestens einer Ausführungsform spezifiziert GPU-Parameter 1906 eine Vielzahl von Parametern in einer Datenstruktur für Rendering-Parameter. In mindestens einer Ausführungsform ist einer oder mehrere Rendering-Parameter, die von GPU-Parameter 1906 identifiziert, angezeigt oder anderweitig spezifiziert werden, einer von mehreren Parametern, die von API 1902 zum Abrufen von Rahmeninterpolationsparametern zum Ermitteln von Parametern für die Interpolation von Videorahmen verwendet werden können. In mindestens einer Ausführungsform sind die GPU-Parameter 1906 ein Datenwert zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines Satzes von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie beispielsweise GPUs, und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors, wie hierin beschrieben, ausgeführt werden sollen, gegenüber einer API, wie beispielsweise der API 1902 zum Abrufen von Rahmeninterpolationsparametern.
  • In mindestens einer Ausführungsform empfängt die API 1902 zum Abrufen von Rahmeninterpolationsparametern ein oder mehrere Argumente als Eingabe, die die Ziel-Rendergröße 1908 umfassen. In mindestens einer Ausführungsform ist die Ziel-Rendergröße 1908 ein Datenwert, der Daten umfasst, die zur Identifizierung, Angabe oder anderweitigen Spezifizierung einer Ziel-Rendergröße (z. B. einer endgültigen Rendergröße) verwendet werden können, die von API 1902 zum Abrufen von Rahmeninterpolationsparametern (z. B. optimale Rendergröße, maximale Rendergröße, minimale Rendergröße, Schärfe usw.) verwendet werden kann, wie hierin beschrieben. In mindestens einer Ausführungsform wird die Ziel-Rendergröße der 1908 zum Abrufen von Rahmeninterpolationsparametern API 1902 als ein Wertepaar bereitgestellt, das die Breite und Höhe eines Zielrahmens angibt. In mindestens einer Ausführungsform wird die Ziel-Rendergröße 1908 der API 1902 zum Abrufen von Rahmeninterpolationsparametern als ein Trio von Werten bereitgestellt, die die Breite, Höhe und Tiefe eines Zielrahmens angeben. In mindestens einer Ausführungsform wird die Ziel-Rendergröße 1908 der API 1902 zum Abrufen von Rahmeninterpolationsparametern als Datenstruktur bereitgestellt, die die Breite, Höhe und/oder Tiefe eines Zielrahmens angibt. In mindestens einer Ausführungsform ist eine Ziel-Rendergröße, die durch die Ziel-Rendergröße 1908 identifiziert, angegeben oder anderweitig spezifiziert wird, einer von mehreren Parametern, die von API 1902 zum Abrufen von Rahmeninterpolationsparametern verwendet werden können, um Parameter für die Interpolation von Videorahmen zu ermitteln. In mindestens einer Ausführungsform ist die Ziel-Rendergröße 1908 ein Datenwert zum Identifizieren, Anzeigen oder anderweitigen Spezifizieren eines Satzes von Operationen oder Anweisungen für eine API wie beispielsweise die API 1902, eines Satzes von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie z. B. GPUs, zum Abrufen von Rahmeninterpolationsparametern und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors, wie hierin beschrieben.
  • In mindestens einer Ausführungsform empfängt API 1902 zum Abrufen von Rahmeninterpolationsparametern ein oder mehrere Argumente als Eingabe, die die Renderqualität 1910 umfassen. In mindestens einer Ausführungsform ist die Renderqualität 1910 ein Datenwert, der Informationen umfasst, die zur Identifizierung, Angabe oder anderweitigen Spezifizierung einer Ziel-Renderqualität verwendet werden können, um die API 1902 zum Abrufen von Rahmeninterpolationsparametern (z. B. optimale Rendergröße, maximale Rendergröße, minimale Rendergröße, Schärfe usw.) bereitzustellen, wie hierin beschrieben. In mindestens einer Ausführungsform ist die Renderqualität 1910 ein Aufzählungswert, der beispielsweise angibt, dass die maximale Leistung bevorzugt werden soll, dass die maximale Qualität bevorzugt werden soll, dass Leistung und Qualität ausgewogen sein sollen usw. In mindestens einer Ausführungsform ist eine durch Renderqualität 1910 identifizierte, angegebene oder anderweitig spezifizierte Ziel-Renderqualität einer von mehreren Parametern, die von der API 1902 zum Abrufen von Rahmeninterpolationsparametern verwendet werden können, um Parameter für die Interpolation von Videorahmen zu ermitteln. In mindestens einer Ausführungsform ist Renderqualität 1910 ein Datenwert zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines Satzes von Operationen oder Anweisungen an eine API wie beispielsweise die API 1902, eines Satzes von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie z. B. GPUs, zum Abrufen von Rahmeninterpolationsparametern und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors, wie hierin beschrieben.
  • In mindestens einer Ausführungsform empfängt die API 1902 zum Abrufen von Rahmeninterpolationsparametern ein oder mehrere Argumente als Eingabe, die die optimale Rendergröße 1912 umfassen. In mindestens einer Ausführungsform ist die optimale Rendergröße 1912 ein Datenwert, der Informationen umfasst, die dazu verwendet werden können, eine Lagerungsstelle zu identifizieren, anzugeben oder anderweitig zu spezifizieren, an der ein oder mehrere Parameter unter Verwendung der API 1902 zum Abrufen von Rahmeninterpolationsparametern angezeigt werden sollen. In mindestens einer Ausführungsform wird die optimale Rendergröße 1912 basierend auf zumindest einem Teil der GPU-ID 1904, den GPU-Parametern 1906, der Ziel-Rendergröße 1908, der Renderqualität 1910 und/oder anderen Argumenten 1926 (wie unten beschrieben) bestimmt. In mindestens einer Ausführungsform wird die optimale Rendergröße 1912 durch die API 1902 zum Abrufen von Rahmeninterpolationsparametern als ein Wertepaar angegeben, das die optimale Breite und Höhe eines interpolierten Rahmens angibt. In mindestens einer Ausführungsform wird die optimale Rendergröße 1912 durch die API 1902 zum Abrufen von Rahmeninterpolationsparametern als ein Trio von Werten angezeigt, die die optimale Breite, Höhe und Tiefe eines interpolierten Rahmens angeben. In mindestens einer Ausführungsform wird die optimale Rendergröße 1912 durch die API 1902 zum Abrufen von Rahmeninterpolationsparametern als Datenstruktur angegeben, die die optimale Breite, Höhe und/oder Tiefe eines interpolierten Rahmens angibt. In mindestens einer Ausführungsform ist eine Zielrahmengröße, die durch die optimale Rendergröße 1912 identifiziert, angegeben oder anderweitig spezifiziert wird, einer von mehreren Parametern, die von API 1902 zum Abrufen von Rahmeninterpolationsparametern für die Interpolation von Videorahmen ermittelt werden können. In mindestens einer Ausführungsform ist die optimale Rendergröße 1912 ein Datenwert zum Identifizieren, Anzeigen oder anderweitigen Spezifizieren eines Satzes von Operationen oder Anweisungen für eine API wie beispielsweise die API 1902, eines Satzes von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie z. B. GPUs, zum Abrufen von Rahmeninterpolationsparametern und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors, wie hierin beschrieben.
  • In mindestens einer Ausführungsform empfängt die API 1902 zum Abrufen von Rahmeninterpolationsparametern ein oder mehrere Argumente als Eingabe, die die maximale Rendergröße 1914 umfassen. In mindestens einer Ausführungsform ist die maximale Rendergröße 1914 ein Datenwert, der Informationen umfasst, die dazu verwendet werden können, eine Lagerungsstelle zu identifizieren, anzugeben oder anderweitig zu spezifizieren, an der ein oder mehrere Parameter unter Verwendung der API 1902 zum Abrufen von Rahmeninterpolationsparametern angezeigt werden sollen. In mindestens einer Ausführungsform wird die maximale Rendergröße 1914 basierend auf zumindest einem Teil der GPU-ID 1904, den GPU-Parametern 1906, der Ziel-Rendergröße 1908, der Renderqualität 1910 und/oder anderen Argumenten 1926 (wie unten beschrieben) bestimmt. In mindestens einer Ausführungsform wird die maximale Rendergröße 1914 durch die API 1902 zum Abrufen von Rahmeninterpolationsparametern als Wertepaar angegeben, das eine maximale Breite und Höhe eines interpolierten Rahmens angibt. In mindestens einer Ausführungsform wird die maximale Rendergröße 1914 von der API 1902 zum Abrufen von Rahmeninterpolationsparametern als ein Trio von Werten angegeben, die eine maximale Breite, Höhe und Tiefe eines interpolierten Rahmens angeben. In mindestens einer Ausführungsform wird die maximale Rendergröße 1914 durch die API 1902 zum Abrufen von Rahmeninterpolationsparametern als Datenstruktur angegeben, die eine maximale Breite, Höhe und/oder Tiefe eines interpolierten Rahmens angibt. In mindestens einer Ausführungsform ist eine maximale Rahmengröße, die durch die maximale Rendergröße 1914 identifiziert, angegeben oder anderweitig spezifiziert wird, einer von mehreren Parametern, die von der API 1902 zum Abrufen von Rahmeninterpolationsparametern verwendet werden können, um Parameter für die Interpolation von Videorahmen zu ermitteln. In mindestens einer Ausführungsform ist die maximaler Rendergröße 1914 ein Datenwert zum Identifizieren, Anzeigen oder anderweitigen Spezifizieren eines Satzes von Operationen oder Anweisungen für eine API wie beispielsweise die API 1902, eines Satzes von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie z. B. GPUs, zum Abrufen von Rahmeninterpolationsparametern und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors, wie hierin beschrieben.
  • In mindestens einer Ausführungsform empfängt die API 1902 zum Abrufen von Rahmeninterpolationsparametern ein oder mehrere Argumente als Eingabe, die die minimale Rendergröße 1916 umfassen. In mindestens einer Ausführungsform ist die minimale Rendergröße 1916 ein Datenwert, der Informationen umfasst, die dazu verwendet werden können, eine Lagerungsstelle zu identifizieren, anzugeben oder anderweitig zu spezifizieren, an der ein oder mehrere Parameter unter Verwendung der API 1902 zum Abrufen von Rahmeninterpolationsparametern angezeigt werden sollen. In mindestens einer Ausführungsform wird die minimale Rendergröße 1916 basierend auf zumindest einem Teil der GPU-ID 1904, den GPU-Parametern 1906, der Ziel-Rendergröße 1908, der Renderqualität 1910 und/oder anderen Argumenten 1926 (wie unten beschrieben) bestimmt. In mindestens einer Ausführungsform wird die minimale Rendergröße 1916 von API 1902 zum Abrufen von Rahmeninterpolationsparametern als ein Wertepaar angegeben, das eine minimale Breite und Höhe eines interpolierten Rahmens angibt. In mindestens einer Ausführungsform wird die minimale Rendergröße 1916 von der API 1902 zum Abrufen von Rahmeninterpolationsparametern als ein Trio von Werten angegeben, die eine minimale Breite, Höhe und Tiefe eines interpolierten Rahmens angeben. In mindestens einer Ausführungsform wird die minimale Rendergröße 1916 von der API 1902 zum Abrufen von Rahmeninterpolationsparametern als Datenstruktur angegeben, die eine minimale Breite, Höhe und/oder Tiefe eines interpolierten Rahmens angibt. In mindestens einer Ausführungsform ist eine minimale Rahmengröße, die durch die minimale Rendergröße 1916 identifiziert, angegeben oder anderweitig spezifiziert wird, einer von mehreren Parametern, die von der API 1902 zum Abrufen von Rahmeninterpolationsparametern verwendet werden können, um Parameter für die Interpolation von Videorahmen zu ermitteln. In mindestens einer Ausführungsform ist die minimale Rendergröße 1916 ein Datenwert zum Identifizieren, Anzeigen oder anderweitigen Spezifizieren eines Satzes von Operationen oder Anweisungen für eine API wie beispielsweise die API 1902, eines Satzes von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie z. B. GPUs, zum Abrufen von Rahmeninterpolationsparametern und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors, wie hierin beschrieben.
  • In mindestens einer Ausführungsform empfängt API 1902 zum Abrufen von Rahmeninterpolationsparametern ein oder mehrere Argumente, die die Schärfe 1918 umfassen, als Eingabe. In mindestens einer Ausführungsform ist Schärfe 1918 ein Datenwert, der Informationen umfasst, die zur Identifizierung, Angabe oder anderweitigen Spezifizierung einer Lagerung einer Menge von Schärfe, die während der Rahmeninterpolation angewendet werden kann, unter Verwendung von der API 1902 zum Abrufen von Rahmeninterpolationsparametern verwendet werden können. In mindestens einer Ausführungsform wird Schärfe 1918 als ein Wert zwischen 0 und 1 zurückgegeben. In mindestens einer Ausführungsform ist eine Menge an Schärfe, die durch Schärfe 1918 identifiziert, angezeigt oder anderweitig spezifiziert wird, einer von mehreren Parametern, die von der API 1902 zum Abrufen von Rahmeninterpolationsparametern verwendet werden, um Parameter für die Interpolation von Videorahmen zu ermitteln. In mindestens einer Ausführungsform ist Schärfe 1918 ein Datenwert zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines Satzes von Operationen oder Anweisungen an eine API wie beispielsweise die API 1902, eines Satzes von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie z. B. GPUs, zum Abrufen von Rahmeninterpolationsparametern und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors, wie hierin beschrieben.
  • In mindestens einer Ausführungsform empfängt die API 1902 zum Abrufen von Rahmeninterpolationsparametern ein oder mehrere Argumente als Eingabe, die ein oder mehrere andere Argumente 1926 umfassen. In mindestens einer Ausführungsform handelt es sich bei den anderen Argumenten 1926 um Daten, die Informationen umfassen, um andere Informationen anzuzeigen, die beim Ausführen von der API 1902 zum Abrufen von Rahmeninterpolationsparametern zum Ermitteln von Parametern für die Interpolation von Videorahmen verwendet werden können.
  • In mindestens einer Ausführungsform, die in 19 nicht dargestellt ist, führt ein Prozessor eine oder mehrere Anweisungen aus, um eine oder mehrere APIs auszuführen, wie z.B. get frame interpolation parameters API 1902, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke mit einem oder mehreren Argumenten anzugeben, einschließlich, aber nicht beschränkt auf, GPU-ID 1904, GPU-Parameter 1906, Ziel-Rendergröße 1908, Renderqualität 1910, optimale Rendergröße 1912, maximale Rendergröße 1914, minimale Rendergröße 1916, Schärfe 1918 und/oder andere Argumente 1926.
  • In mindestens einer Ausführungsform veranlasst die API 1902 zum Abrufen von Rahmeninterpolationsparametern eine oder mehrere APIs, wie beispielsweise eine oder mehrere APIs 1506, die hierin mindestens in Verbindung mit 15 beschrieben sind, eine oder mehrere Operationen oder Anweisungen hinzuzufügen, einzufügen oder anderweitig in einen Stream oder Satz von Anweisungen einzuschließen, die von einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors auszuführen sind. In mindestens einer Ausführungsform veranlasst die API 1902 zum Abrufen von Rahmeninterpolationsparametern, wenn sie aufgerufen wird, eine oder mehrere APIs, wie beispielsweise eine oder mehrere APIs 1506, in einer parallelen Rechenumgebung, wie beispielsweise der hierin mindestens in Verbindung mit 15 beschriebenen parallelen Rechenumgebung 1508, eine oder mehrere Operationen oder Anweisungen hinzufügen, einfügen oder anderweitig in einen Stream oder Satz von Anweisungen einschließen, die von einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors ausgeführt werden.
  • In mindestens einer Ausführungsform sollen eine oder mehrere APIs 1506, wenn sie ausgeführt werden, als Antwort auf die API 1902 zum Abrufen von Rahmeninterpolationsparametern einen API-Rückgabewert 1920 für die Rahmeninterpolationsparameter ausführen. In mindestens einer Ausführungsform ist der API-Rückgabewert 1920 für die Rahmeninterpolationsparameter ein Satz von Anweisungen, die, wenn sie ausgeführt werden, einen oder mehrere Datenwerte als Antwort auf den API 1902 zum Abrufen von Rahmeninterpolationsparametern erstellen und/oder anzeigen. In mindestens einer Ausführungsform zeigt der API-Rückgabewert 1920 für die Rahmeninterpolationsparameter eine Erfolgsanzeige 1922 an. In mindestens einer Ausführungsform handelt es sich bei dem Erfolgsindikator 1922 um Daten, die einen beliebigen Wert umfassen, der den Erfolg der API 1902 zum Abrufen von Rahmeninterpolationsparametern anzeigt. In mindestens einer Ausführungsform umfasst der Erfolgsindikator 1922 Informationen, die einen oder mehrere spezifische Typen von Erfolgen anzeigen, die als Ergebnis des Ausführens der API 1902 zum Abrufen von Rahmeninterpolationsparametern erstellt wurden. In mindestens einer Ausführungsform umfasst der Erfolgsindikator 1922 Informationen, die einen oder mehrere andere Datenwerte angeben, die als Ergebnis der API 1902 zum Abrufen von Rahmeninterpolationsparametern erstellt wurden.
  • In mindestens einer Ausführungsform zeigt der API-Rückgabewert 1920 für die Rahmeninterpolationsparameter eine Fehleranzeige 1924 an. In mindestens einer Ausführungsform handelt es sich bei dem Fehlerindikator 1924 um Daten, die einen beliebigen Wert umfassen, der einen Fehler der API 1902 zum Abrufen von Rahmeninterpolationsparametern anzeigt. In mindestens einer Ausführungsform umfasst der Fehlerindikator 1924 Informationen, die einen oder mehrere spezifische Typen von Fehlern anzeigen, die als Ergebnis von API 1902 zum Abrufen von Rahmeninterpolationsparametern erstellt wurden. In mindestens einer Ausführungsform umfasst der Fehlerindikator 1924 Informationen, die einen oder mehrere andere Datenwerte angeben, die als Ergebnis der API 1902 zum Abrufen von Rahmeninterpolationsparametern erstellt wurden.
  • In mindestens einer Ausführungsform schließt die parallele Rechenumgebung 1508 eine oder mehrere APIs 1506 ein, einschließlich, aber nicht beschränkt auf, die API 1902 zum Abrufen von Rahmeninterpolationsparametern, die verschiedene Operationen verschiedener Typen zu einem Stream hinzufügt, der von einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors ausgeführt wird. In mindestens einer Ausführungsform umfassen Streamoperationen eine Acquire-Semaphore-Operation. In mindestens einer Ausführungsform umfassen die Streamoperationen eine Release-Semaphor-Operation. In mindestens einer Ausführungsform umfassen Streamoperationen eine oder mehrere Operationen zum Leeren und/oder Ungültigmachen von Cache-Speicher, wie L2-Cache-Speicher einer PPU, wie einer GPU, und/oder Cache-Speicher eines oder mehrerer Beschleuniger innerhalb eines heterogenen Prozessors. In mindestens einer Ausführungsform umfassen Streamoperationen eine oder mehrere Operationen, um die Übergabe einer Operation an eine externe Vorrichtung anzuzeigen, wie beispielsweise einen oder mehrere Beschleuniger innerhalb eines heterogenen Prozessors. In mindestens einer Ausführungsform verwenden eine oder mehrere Operationen, die die Übermittlung einer Operation an eine externe Vorrichtung anzeigen, einen Softwarecode wie den Beispielsoftwarecode, der Streamoperationen anzeigt, wie hierin zumindest in Verbindung mit 16 beschrieben.
  • In mindestens einer Ausführungsform umfasst die parallele Rechenumgebung 1508 eine oder mehrere APIs 1506, einschließlich, aber nicht beschränkt auf die API 1902 zum Abrufen von Rahmeninterpolationsparametern, eine oder mehrere Funktionssignaturen, die zum Anzeigen einer oder mehrerer Rückruffunktionen für Operationen verwendet werden können, die von einem oder mehreren Beschleunigern in heterogenen Prozessoren ausgeführt werden sollen. In mindestens einer Ausführungsform werden durch eine oder mehrere Operationen eine oder mehrere Rückruffunktionen ausgeführt. In mindestens einer Ausführungsform verwenden eine oder mehrere Operationen, die dazu führen, dass eine oder mehrere Rückruffunktionen ausgeführt werden, einen Softwarecode, wie beispielsweise einen Beispielsoftwarecode, der eine Funktionssignatur für eine Rückruffunktion angibt, wie hierin mindestens in Verbindung mit 16 beschrieben.
  • In mindestens einer Ausführungsform, um einen oder mehrere Beschleuniger innerhalb heterogener Prozessoren zu spezifizieren, um eine oder mehrere Operationen auszuführen, die durch die API 1902 zum Abrufen von Rahmeninterpolationsparametern an eine oder mehrere APIs 1506 angezeigt werden, können eine oder mehrere Datenstrukturen einer oder mehrerer APIs 1506 verwendet werden, um eine oder mehrere externe Vorrichtungen zu spezifizieren, für die die eine oder mehrere APIs 1506 die eine oder mehrere Operationen übermitteln sollen. In mindestens einer Ausführungsform verwenden eine oder mehrere Datenstrukturen einer oder mehrerer APIs 1506, die zur Spezifizierung einer oder mehrerer externer Vorrichtungen verwendet werden können, für die die eine oder mehreren APIs 1506 die eine oder mehreren Operationen durchführen sollen, einen Softwarecode, wie beispielsweise einen Beispielsoftwarecode, der eine Datenstruktur angibt, die einen Vorrichtungsknoten für einen oder mehrere Beschleuniger in heterogenen Prozessoren darstellt, wie hierin zumindest in Verbindung mit 16 beschrieben ist.
  • In mindestens einer Ausführungsform werden zur Angabe von Typ und Daten einer oder mehrerer Operationen, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren ausgeführt werden sollen, eine oder mehrere Strukturen einer oder mehrerer APIs 1506 verwendet. In mindestens einer Ausführungsform verwenden eine oder mehrere Datenstrukturen einer oder mehrerer APIs 1506, die verwendet werden, um Typ und Daten einer oder mehrerer Operationen zu spezifizieren, die durch eine oder mehrere Operationen angegeben werden, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren ausgeführt werden sollen, einen Softwarecode, wie beispielsweise einen Beispielsoftwarecode, der eine Datenstruktur angibt, um Typ und Daten einer oder mehrerer Operationen zu spezifizieren, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren ausgeführt werden sollen, wie hierin mindestens in Verbindung mit 16 beschrieben.
  • In mindestens einer Ausführungsform umfassen eine oder mehrere APIs 1506 Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine oder mehrere Operationen oder Anweisungen zu einem Stream oder einem anderen Satz von Anweisungen hinzugefügt werden, die von einem oder mehreren Beschleunigern in heterogenen Prozessoren ausgeführt werden. In mindestens einer Ausführungsform sind als Antwort auf die oben beschriebene API 1902 zum Abrufen von Rahmeninterpolationsparametern Anweisungen auszuführen, die bewirken, dass eine oder mehrere Operationen oder Anweisungen zu einem Stream oder einem anderen Satz von Anweisungen hinzugefügt werden. In mindestens einer Ausführungsform verwenden Anweisungen zum Hinzufügen einer oder mehrerer Operationen oder Anweisungen zu einem Stream oder einem anderen Satz von Anweisungen als Antwort auf den Aufruf von Parametern der Rahmeninterpolation durch die API 1902 einen Softwarecode wie den Beispielsoftwarecode, der einen Aufruf der Stromoperation API in der parallelen Rechenumgebung 1508 anzeigt, wie hierin mindestens in Verbindung mit 16 beschrieben ist.
  • In mindestens einer Ausführungsform umfassen eine oder mehrere APIs 1506 Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine oder mehrere Operationen oder Anweisungen, die von einem oder mehreren Beschleunigern in heterogenen Prozessoren ausgeführt werden, zu einem oder mehreren ausführbaren Graphen hinzugefügt werden. In mindestens einer Ausführungsform sind Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine oder mehrere Operationen oder Anweisungen, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren auszuführen sind, zu einem oder mehreren ausführbaren Graphen hinzugefügt werden, vergleichbar mit der Art und Weise, wie eine oder mehrere Operationen oder Anweisungen, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren auszuführen sind, als Antwort auf das hierin beschriebene API 1902 zum Abrufen von Rahmeninterpolationsparametern zu einem oder mehreren Streams oder Sätzen von Anweisungen hinzugefügt werden sollen. In mindestens einer Ausführungsform verwenden Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine oder mehrere Operationen oder Anweisungen, die von einem oder mehreren Beschleunigern in heterogenen Prozessoren auszuführen sind, zu einem oder mehreren ausführbaren Graphen hinzugefügt werden, Softwarecode wie Beispielsoftwarecode, der das Hinzufügen einer oder mehrerer Operationen oder Anweisungen zu einem oder mehreren ausführbaren Graphen durch eine oder mehrere APIs 1506 der parallelen Rechenumgebung 1508 anzeigt, wie hierin mindestens in Verbindung mit 16 beschrieben.
  • 20 ist ein Blockdiagramm 2000, das eine Anwendungsprogrammierschnittstelle (API) veranschaulicht, um Parameter für die Interpolation von Videorahmen gemäß mindestens einer Ausführungsform festzulegen. In mindestens einer Ausführungsform führen eine oder mehrere Schaltungen eines Prozessors eine API 2002 zum Einstellen von Rahmeninterpolationsparametern aus, um einen oder mehrere Parameter für einen Prozessor, wie die hierin beschriebenen, zu spezifizieren, die von dem Prozessor verwendet werden können, um eine Video-Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke durchzuführen, wobei Operationen, Techniken, Systeme und/oder Verfahren, wie die hierin beschriebenen, verwendet werden. In mindestens einer Ausführungsform, die in 20 nicht dargestellt ist, führt eine oder mehrere Schaltungen eines Prozessors wie die hierin beschriebenen eine oder mehrere Anweisungen durch, um eine API 2002 zum Einstellen von Rahmeninterpolationsparametern (API) auszuführen, um die Durchführung der Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu veranlassen. In mindestens einer Ausführungsform, die in 20 nicht dargestellt ist, führt eine oder mehrere Schaltungen eines Prozessors, wie hierin beschrieben, eine oder mehrere Anweisungen aus, um API 2002 zum Einstellen von Rahmeninterpolationsparametern (API) auszuführen, um als Antwort auf den Empfang einer zweiten API, wie hierin beschrieben, eine Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu veranlassen. In mindestens einer Ausführungsform handelt es sich bei der API 2002 zum Einstellen von Rahmeninterpolationsparametern um eine oder mehrere APIs, wie sie oben in Verbindung mit 14 beschrieben wurden.
  • In mindestens einer Ausführungsform empfängt die API 2002 zum Einstellen von Rahmeninterpolationsparametern bei ihrem Aufruf ein oder mehrere Argumente, um Informationen über Operationen anzuzeigen, die mit Techniken wie den hierin beschriebenen ausgeführt werden sollen. In mindestens einer Ausführungsform empfängt die API 2002 zum Einstellen von Rahmeninterpolationsparametern bei ihrem Aufruf ein oder mehrere Argumente, die Informationen über Anweisungen enthalten, die mit Techniken wie den hierin beschriebenen ausgeführt werden sollen.
  • In mindestens einer Ausführungsform empfängt die API 2002 zum Einstellen von Rahmeninterpolationsparametern als Eingabe ein oder mehrere Argumente, die die GPU-ID 2004 umfassen. In mindestens einer Ausführungsform ist GPU-ID 2004 ein Datenwert, der Informationen umfasst, die zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines Prozessors (z. B. einer CPU, GPU, PPU, GPGPU usw.) verwendet werden können, für den Rahmeninterpolationsparameter der API 2002 zum Einstellen von Rahmeninterpolationsparametern bereitgestellt werden. In mindestens einer Ausführungsform ist die GPU-ID 2004 eine GPU-ID wie die GPU-ID 1606, die hierin mindestens in Verbindung mit 16 beschrieben ist. In mindestens einer Ausführungsform ist ein Prozessor, der durch die GPU-ID 2004 identifiziert, angezeigt oder anderweitig spezifiziert wird, einer von mehreren Parametern, die von API 2002 zum Einstellen von Rahmeninterpolationsparametern für die Interpolation von Videorahmen verwendet werden können. In mindestens einer Ausführungsform ist die GPU-ID 2004 ein Datenwert zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines Satzes von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie beispielsweise GPUs, und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors, wie hierin beschrieben, ausgeführt werden sollen, gegenüber einer API, wie beispielsweise der API 2002 zum Einstellen von Rahmeninterpolationsparametern.
  • In mindestens einer Ausführungsform empfängt die API 2002 zum Einstellen von Rahmeninterpolationsparametern ein oder mehrere Argumente als Eingabe, die die optimale Rendergröße 2006 umfassen. In mindestens einer Ausführungsform ist die optimale Rendergröße 2006 ein Datenwert, der Informationen umfasst, die zum Identifizieren, Anzeigen oder anderweitigen Spezifizieren einer optimalen Größe für einen interpolierten Rahmen unter Verwendung der API 2002 zum Einstellen von Rahmeninterpolationsparametern verwendet werden können. In mindestens einer Ausführungsform ist die optimale Rendergröße 2006 die optimale Rendergröße 1912 (z. B. Breite, Höhe und/oder Tiefe), die mit Hilfe von API 1902 zum Abrufen von Rahmeninterpolationsparametern bestimmt wird, wie hierin mindestens in Verbindung mit 19 beschrieben. In mindestens einer Ausführungsform ist eine optimale Rendergröße, die durch optimale Rendergröße 2006 identifiziert, angezeigt oder anderweitig spezifiziert wird, einer von mehreren Parametern, die von API 2002 zum Einstellen von Rahmeninterpolationsparametern für die Interpolation von Videorahmen verwendet werden können. In mindestens einer Ausführungsform ist die optimale Rendergröße 2006 ein Datenwert zum Identifizieren, Anzeigen oder anderweitigen Spezifizieren eines Satzes von Operationen oder Anweisungen für eine API wie beispielsweise die API 2002, eines Satzes von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie z. B. GPUs, zum Einstellen von Rahmeninterpolationsparametern und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors, wie hierin beschrieben.
  • In mindestens einer Ausführungsform empfängt die API 2002 zum Einstellen von Rahmeninterpolationsparametern ein oder mehrere Argumente als Eingabe, die die Ziel-Rendergröße 2008 umfassen. In mindestens einer Ausführungsform ist die Ziel-Rendergröße 2008 ein Datenwert, der Informationen umfasst, die zur Identifizierung, Angabe oder anderweitigen Spezifizierung einer Ziel-Rendergröße (z. B. einer endgültigen Rendergröße) verwendet werden können, die durch die API 2002 zum Einstellen von Rahmeninterpolationsparametern verwendet werden kann. In mindestens einer Ausführungsform entspricht die Ziel-Rendergröße 2008 der Ziel-Rendergröße 1908, wie hierin mindestens in Verbindung mit 19 beschrieben. In mindestens einer Ausführungsform ist eine Ziel-Rendergröße, die durch die Ziel-Rendergröße 2008 identifiziert, angegeben oder anderweitig spezifiziert wird, einer von mehreren Parametern, die von API 2002 zum Einstellen von Rahmeninterpolationsparametern für die Interpolation von Videorahmen verwendet werden können. In mindestens einer Ausführungsform ist die Ziel-Rendergröße 2008 ein Datenwert zum Identifizieren, Anzeigen oder anderweitigen Spezifizieren eines Satzes von Operationen oder Anweisungen für eine API wie beispielsweise die API 2002, eines Satzes von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie z. B. GPUs, zum Einstellen von Rahmeninterpolationsparametern und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors, wie hierin beschrieben.
  • In mindestens einer Ausführungsform empfängt API 2002 zum Einstellen von Rahmeninterpolationsparametern ein oder mehrere Argumente als Eingabe, die die Renderqualität 2010 umfassen. In mindestens einer Ausführungsform ist die Renderqualität 2010 ein Datenwert, der Informationen umfasst, die zur Identifizierung, Angabe oder anderweitigen Spezifizierung einer Ziel-Renderqualität verwendet werden können, die API 2002 zum Einstellen von Rahmeninterpolationsparametern bereitzustellen ist. In mindestens einer Ausführungsform ist die Renderqualität 2010 die Renderqualität 1910, wie hierin mindestens in Verbindung mit 19 beschrieben. In mindestens einer Ausführungsform ist eine Renderqualität, die durch Renderqualität 2010 identifiziert, angezeigt oder anderweitig spezifiziert wird, einer von mehreren Parametern, die von API 2002 zum Einstellen von Rahmeninterpolationsparametern für die Interpolation von Videorahmen verwendet werden können. In mindestens einer Ausführungsform ist Renderqualität 2010 ein Datenwert zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines Satzes von Operationen oder Anweisungen an eine API wie beispielsweise die API 2002, eines Satzes von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie z. B. GPUs, zum Einstellen von Rahmeninterpolationsparametern und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors, wie hierin beschrieben.
  • In mindestens einer Ausführungsform empfängt API 2002 zum Einstellen von Rahmeninterpolationsparametern als Eingabe ein oder mehrere Argumente, die Merkmalsflags 2012 umfassen. In mindestens einer Ausführungsform sind Merkmalsflags 2012 ein Datenwert, der Informationen umfasst, die zur Identifizierung, Anzeige oder anderweitigen Spezifizierung eines oder mehrerer zusätzlicher Merkmalsparameter geeignet sind, die API 2002 zum Einstellen von Rahmeninterpolationsparametern verwenden. In mindestens einer Ausführungsform schließen die Merkmale 2012 u.a. ein, ob die Rahmen eine hohe Dynamik (HDR) aufweisen, eine niedrige Auflösung haben, gejittert sind, eine invertierte Tiefe haben, ob eine Schärfung durchgeführt werden soll, ob die Belichtungswerte automatisch korrigiert werden sollen usw. In mindestens einer Ausführungsform schließt das Merkmalsflag 2012 die Angabe einer Anzahl von Rahmen ein, die interpoliert werden sollen (z. B. eine Anzahl von Rahmen zwischen einem vorherigen Rahmen und einem zu erstellenden aktuellen Rahmen), wie hierin beschrieben. In mindestens einer Ausführungsform, wenn beispielsweise ein vorheriger Rahmen zur Zeit 0,1 Sekunden und ein aktueller Rahmen zur Zeit 0,2 Sekunden ist, kann das Einstellen der Merkmalsflags 2012 zur Interpolation eines Zwischenrahmens einen interpolierten Rahmen zur Zeit 0,15 Sekunden erstellen, das Einstellen der Merkmalsflags 2012 zur Interpolation von zwei Zwischenrahmen kann einen ersten interpolierten Rahmen zur Zeit 0,133 Sekunden und einen zweiten interpolierten Rahmen zur Zeit 0,166 Sekunden erstellen usw. In mindestens einer Ausführungsform sind Merkmalsflags, die durch Merkmalsflags 2012 identifiziert, angezeigt oder anderweitig spezifiziert werden, einer von mehreren Parametern, die von API 2002 zum Einstellen von Rahmeninterpolationsparametern für die Interpolation von Videorahmen verwendet werden können. In mindestens einer Ausführungsform ist Merkmalsflag 2012 ein Datenwert zur Identifizierung, Angabe oder anderweitigen Spezifizierung eines Satzes von Operationen oder Anweisungen an eine API wie beispielsweise die API 2002, eines Satzes von Operationen oder Anweisungen, die von einer oder mehreren PPUs, wie z. B. GPUs, zum Einstellen von Rahmeninterpolationsparametern und/oder einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors, wie hierin beschrieben.
  • In mindestens einer Ausführungsform empfängt die API 2002 zum Einstellen von Rahmeninterpolationsparametern ein oder mehrere Argumente als Eingabe, die ein oder mehrere andere Argumente 2014 umfassen. In mindestens einer Ausführungsform handelt es sich bei den anderen Argumenten 2014 um Daten, die Informationen umfassen, um alle anderen Informationen anzuzeigen, die beim Ausführen von API 2002 zum Einstellen von Rahmeninterpolationsparametern verwendet werden können, um Parameter für die Interpolation von Videorahmen anzugeben.
  • In mindestens einer Ausführungsform, die in 20 nicht dargestellt ist, führt ein Prozessor eine oder mehrere Anweisungen aus, um eine oder mehrere APIs auszuführen, wie beispielsweise API 2002 zum Einstellen von Rahmeninterpolationsparametern, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, um zu veranlassen, dass die Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke durchgeführt wird, wobei ein oder mehrere Argumente verwendet werden, einschließlich, aber nicht beschränkt auf, GPU-ID 2004, optimale Rendergröße 2006, Ziel-Rendergröße 2008, Renderqualität 2010, Merkmalsflags 2012 und/oder andere Argumente 2014.
  • In mindestens einer Ausführungsform veranlasst die API 2002 zum Einstellen von Rahmeninterpolationsparametern eine oder mehrere APIs, wie beispielsweise eine oder mehrere APIs 1506, die hierin mindestens in Verbindung mit 15 beschrieben sind, eine oder mehrere Operationen oder Anweisungen hinzuzufügen, einzufügen oder anderweitig in einen Stream oder Satz von Anweisungen einzuschließen, die von einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors auszuführen sind. In mindestens einer Ausführungsform veranlasst die API 2002 zum Einstellen von Rahmeninterpolationsparametern, wenn sie aufgerufen wird, eine oder mehrere APIs, wie beispielsweise eine oder mehrere APIs 1506, in einer parallelen Rechenumgebung, wie beispielsweise der hierin mindestens in Verbindung mit 15 beschriebenen parallelen Rechenumgebung 1508, eine oder mehrere Operationen oder Anweisungen hinzufügen, einfügen oder anderweitig in einen Stream oder Satz von Anweisungen einschließen, die von einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors ausgeführt werden.
  • In mindestens einer Ausführungsform sollen eine oder mehrere APIs 1506, wenn sie ausgeführt werden, als Antwort auf die API 2002 zum Einstellen von Rahmeninterpolationsparametern einen API-Rückgabewert 2020 für die Rahmeninterpolationsparameter ausführen. In mindestens einer Ausführungsform ist der API-Rückgabewert 2020 zum Einstellen Rahmeninterpolationsparameter ein Satz von Anweisungen, die, wenn sie ausgeführt werden, einen oder mehrere Datenwerte als Antwort auf den API 2002 zum Einstellen von Rahmeninterpolationsparametern erstellen und/oder anzeigen. In mindestens einer Ausführungsform zeigt der API-Rückgabewert 2020 zum Einstellen der Rahmeninterpolationsparameter eine Erfolgsanzeige 2022 an. In mindestens einer Ausführungsform handelt es sich bei dem Erfolgsindikator 2022 um Daten, die einen beliebigen Wert umfassen, der den Erfolg der API 2002 zum Einstellen von Rahmeninterpolationsparametern anzeigt. In mindestens einer Ausführungsform umfasst der Erfolgsindikator 2022 Informationen, die einen oder mehrere spezifische Typen von Erfolgen anzeigen, die als Ergebnis des Ausführens der API 2002 zum Einstellen von Rahmeninterpolationsparametern erstellt wurden. In mindestens einer Ausführungsform umfasst der Erfolgsindikator 2022 Informationen, die einen oder mehrere andere Datenwerte angeben, die als Ergebnis der API 2002 zum Einstellen von Rahmeninterpolationsparametern erstellt wurden.
  • In mindestens einer Ausführungsform zeigt der API-Rückgabewert 2020 zum Einstellen der Rahmeninterpolationsparameter eine Fehleranzeige 2024 an. In mindestens einer Ausführungsform handelt es sich bei dem Fehlerindikator 2024 um Daten, die einen beliebigen Wert umfassen, der einen Fehler der API 2002 zum Einstellen von Rahmeninterpolationsparametern anzeigt. In mindestens einer Ausführungsform umfasst der Fehlerindikator 2024 Informationen, die einen oder mehrere spezifische Typen von Fehlern anzeigen, die als Ergebnis von API 2002 zum Einstellen von Rahmeninterpolationsparametern erstellt wurden. In mindestens einer Ausführungsform umfasst der Fehlerindikator 2024 Informationen, die einen oder mehrere andere Datenwerte angeben, die als Ergebnis der API 2002 zum Einstellen von Rahmeninterpolationsparametern erstellt wurden.
  • In mindestens einer Ausführungsform schließt die parallele Rechenumgebung 1508 eine oder mehrere APIs 1506 ein, einschließlich, aber nicht beschränkt auf, die API 2002 zum Einstellen von Rahmeninterpolationsparametern, die verschiedene Operationen verschiedener Typen zu einem Stream hinzufügt, der von einem oder mehreren Beschleunigern innerhalb eines heterogenen Prozessors ausgeführt wird. In mindestens einer Ausführungsform umfassen Streamoperationen eine Acquire-Semaphore-Operation. In mindestens einer Ausführungsform umfassen die Streamoperationen eine Release-Semaphor-Operation. In mindestens einer Ausführungsform umfassen Streamoperationen eine oder mehrere Operationen zum Leeren und/oder Ungültigmachen von Cache-Speicher, wie L2-Cache-Speicher einer PPU, wie einer GPU, und/oder Cache-Speicher eines oder mehrerer Beschleuniger innerhalb eines heterogenen Prozessors. In mindestens einer Ausführungsform umfassen Streamoperationen eine oder mehrere Operationen, um die Übergabe einer Operation an eine externe Vorrichtung anzuzeigen, wie beispielsweise einen oder mehrere Beschleuniger innerhalb eines heterogenen Prozessors. In mindestens einer Ausführungsform verwenden eine oder mehrere Operationen, die die Übermittlung einer Operation an eine externe Vorrichtung anzeigen, einen Softwarecode wie den Beispielsoftwarecode, der Streamoperationen anzeigt, wie hierin zumindest in Verbindung mit 16 beschrieben.
  • In mindestens einer Ausführungsform umfasst die parallele Rechenumgebung 1508 eine oder mehrere APIs 1506, einschließlich, aber nicht beschränkt auf die API 2002 zum Einstellen von Rahmeninterpolationsparametern, eine oder mehrere Funktionssignaturen, die zum Anzeigen einer oder mehrerer Rückruffunktionen für Operationen verwendet werden können, die von einem oder mehreren Beschleunigern in heterogenen Prozessoren ausgeführt werden sollen. In mindestens einer Ausführungsform werden durch eine oder mehrere Operationen eine oder mehrere Rückruffunktionen ausgeführt. In mindestens einer Ausführungsform verwenden eine oder mehrere Operationen, die dazu führen, dass eine oder mehrere Rückruffunktionen ausgeführt werden, einen Softwarecode, wie beispielsweise einen Beispielsoftwarecode, der eine Funktionssignatur für eine Rückruffunktion angibt, wie hierin mindestens in Verbindung mit 16 beschrieben.
  • In mindestens einer Ausführungsform, um einen oder mehrere Beschleuniger innerhalb heterogener Prozessoren zu spezifizieren, um eine oder mehrere Operationen auszuführen, die durch die API 2002 zum Einstellen von Rahmeninterpolationsparametern an eine oder mehrere APIs 1506 angezeigt werden, können eine oder mehrere Datenstrukturen einer oder mehrerer APIs 1506 verwendet werden, um eine oder mehrere externe Vorrichtungen zu spezifizieren, für die die eine oder mehrere APIs 1506 die eine oder mehrere Operationen übermitteln sollen. In mindestens einer Ausführungsform verwenden eine oder mehrere Datenstrukturen einer oder mehrerer APIs 1506, die zur Spezifizierung einer oder mehrerer externer Vorrichtungen verwendet werden können, für die die eine oder mehreren APIs 1506 die eine oder mehreren Operationen durchführen sollen, einen Softwarecode, wie beispielsweise einen Beispielsoftwarecode, der eine Datenstruktur angibt, die einen Vorrichtungsknoten für einen oder mehrere Beschleuniger in heterogenen Prozessoren darstellt, wie hierin zumindest in Verbindung mit 16 beschrieben ist.
  • In mindestens einer Ausführungsform werden zur Angabe von Typ und Daten einer oder mehrerer Operationen, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren ausgeführt werden sollen, eine oder mehrere Strukturen einer oder mehrerer APIs 1506 verwendet. In mindestens einer Ausführungsform verwenden eine oder mehrere Datenstrukturen einer oder mehrerer APIs 1506, die verwendet werden, um Typ und Daten einer oder mehrerer Operationen zu spezifizieren, die durch eine oder mehrere Operationen angegeben werden, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren ausgeführt werden sollen, einen Softwarecode, wie beispielsweise einen Beispielsoftwarecode, der eine Datenstruktur angibt, um Typ und Daten einer oder mehrerer Operationen zu spezifizieren, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren ausgeführt werden sollen, wie hierin mindestens in Verbindung mit 16 beschrieben.
  • In mindestens einer Ausführungsform umfassen eine oder mehrere APIs 1506 Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine oder mehrere Operationen oder Anweisungen zu einem Stream oder einem anderen Satz von Anweisungen hinzugefügt werden, die von einem oder mehreren Beschleunigern in heterogenen Prozessoren ausgeführt werden. In mindestens einer Ausführungsform sind als Antwort auf die oben beschriebene API 2002 zum Einstellen von Rahmeninterpolationsparametern Anweisungen auszuführen, die bewirken, dass eine oder mehrere Operationen oder Anweisungen zu einem Stream oder einem anderen Satz von Anweisungen hinzugefügt werden. In mindestens einer Ausführungsform verwenden Anweisungen zum Hinzufügen einer oder mehrerer Operationen oder Anweisungen zu einem Stream oder einem anderen Satz von Anweisungen als Antwort auf das Einstellen von Rahmeninterpolationsparametern API 2002 einen Softwarecode wie den Beispielsoftwarecode, der einen Stream-Operations-API-Aufruf in der parallelen Rechenumgebung 1508 anzeigt, wie hierin zumindest in Verbindung mit 16 beschrieben ist.
  • In mindestens einer Ausführungsform umfassen eine oder mehrere APIs 1506 Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine oder mehrere Operationen oder Anweisungen, die von einem oder mehreren Beschleunigern in heterogenen Prozessoren ausgeführt werden, zu einem oder mehreren ausführbaren Graphen hinzugefügt werden. In mindestens einer Ausführungsform sind Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine oder mehrere Operationen oder Anweisungen, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren auszuführen sind, zu einem oder mehreren ausführbaren Graphen hinzugefügt werden, vergleichbar mit der Art und Weise, wie eine oder mehrere Operationen oder Anweisungen, die von einem oder mehreren Beschleunigern innerhalb heterogener Prozessoren auszuführen sind, als Antwort auf das hierin beschriebene API 2002 zum Einstellen von Rahmeninterpolationsparametern zu einem oder mehreren Streams oder Sätzen von Anweisungen hinzugefügt werden sollen. In mindestens einer Ausführungsform verwenden Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine oder mehrere Operationen oder Anweisungen, die von einem oder mehreren Beschleunigern in heterogenen Prozessoren auszuführen sind, zu einem oder mehreren ausführbaren Graphen hinzugefügt werden, Softwarecode wie Beispielsoftwarecode, der das Hinzufügen einer oder mehrerer Operationen oder Anweisungen zu einem oder mehreren ausführbaren Graphen durch eine oder mehrere APIs 1506 der parallelen Rechenumgebung 1508 anzeigt, wie hierin mindestens in Verbindung mit 16 beschrieben.
  • 21 veranschaulicht einen Prozess 2100 zum Ausführen einer oder mehrerer Anwendungsprogrammierschnittstellen (APIs), gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der Prozess 2100 ein Prozess zum Ausführen einer oder mehrerer APIs für einen oder mehrere Beschleuniger innerhalb eines heterogenen Prozessors durch eine parallele Rechenumgebung, wie die parallele Rechenumgebung 1508, wie hierin mindestens in Verbindung mit 15 beschrieben. In mindestens einer Ausführungsform beginnt der Prozess 2100 in 2102 mit Schritt 2104, wobei ein oder mehrere Prozessoren ein Softwareprogramm ausführen sollen, das eine oder mehrere Anweisungen umfasst, die, wenn sie ausgeführt werden, den einen oder die mehreren Prozessoren und/oder einen oder mehrere andere Prozessoren, wie beispielsweise grafische Verarbeitungseinheiten (GPUs) und/oder einen oder mehrere Beschleuniger innerhalb eines heterogenen Prozessors oder heterogener Prozessoren, veranlassen, eine oder mehrere rechnerische Operationen durchzuführen. In mindestens einer Ausführungsform umfasst ein von einem oder mehreren Prozessoren auszuführendes Softwareprogramm in Schritt 2104 eine oder mehrere Anweisungen, die, wenn sie ausgeführt werden, die Ausführung einer oder mehrerer APIs 1506 einer parallelen Rechenumgebung 1508 bewirken, wie oben beschrieben. In mindestens einer Ausführungsform wird der Prozess 2100 nach Schritt 2104 in Schritt 2106 fortgesetzt.
  • In mindestens einer Ausführungsform bestimmt ein Prozessor, der den Prozess 2100 ausführt, in Schritt 2106, ob die Ausführung einer API, wie sie hierin mindestens in Verbindung mit 16-20 beschrieben ist (z. B. Bestimmen der Unterstützung von Rahmeninterpolation durch die API 1602, Aktivieren von Rahmeninterpolation durch die API 1702, Deaktivieren von Rahmeninterpolationsparametern durch die API 1802, Abrufen von Rahmeninterpolationsparametern durch die API 1902 und/oder Einstellen von Rahmeninterpolationsparametern durch die API 2002), durchgeführt werden soll. In mindestens einer Ausführungsform wird der Prozess 2100 in Schritt 2106 mit Schritt 2116 fortgesetzt, wenn bestimmt wird, dass ein API nicht ausgeführt werden soll („NEIN“-Zweig). In mindestens einer Ausführungsform wird der Prozess 2100 in Schritt 2106 mit Schritt 2108 fortgesetzt, wenn bestimmt wurde, dass eine API ausgeführt werden soll („JA“-Zweig).
  • In mindestens einer Ausführungsform führt ein Prozessor, der den Prozess 2100 ausführt, in Schritt 2108 eine API aus, wie sie hierin zumindest in Verbindung mit 16-20 beschrieben ist. In mindestens einer Ausführungsform werden in Schritt 2108 von einem oder mehreren Prozessoren eine oder mehrere Anweisungen ausgeführt, um einen oder mehrere API-Aufrufe zu veranlassen, wie sie hierin zumindest in Verbindung mit 16-20 beschrieben sind (z. B. Bestimmen der Unterstützung von Rahmeninterpolation durch die API 1602, Aktivieren der Rahmeninterpolation durch die API 1702, Deaktivieren der Rahmeninterpolation durch die API 1802, Abrufen der Rahmeninterpolationsparameter durch die API 1902 und/oder Einstellen von Rahmeninterpolationsparametern durch die API 2002), die von dem einen oder mehreren Prozessoren und/oder einem oder mehreren anderen Prozessoren, wie GPUs und/oder Beschleunigern innerhalb eines heterogenen Prozessors, wie oben beschrieben, ausgeführt werden sollen. In mindestens einer Ausführungsform wird der Prozess 2100 nach Schritt 2108 in Schritt 2110 fortgesetzt.
  • In mindestens einer Ausführungsform bestimmt ein Prozessor, der den Prozess 2100 durchführt, in Schritt 2110, ob ein Rückgabewert als Ergebnis der Ausführung einer oder mehrerer Anweisungen zurückgegeben werden soll, um einen oder mehrere API-Aufrufe zu veranlassen, wie sie hierin mindestens in Verbindung mit 16-20 beschrieben sind (z. B. Bestimmen der Unterstützung von Rahmeninterpolation durch die API 1602, Aktivieren von Rahmeninterpolation durch die API 1702, Deaktivieren von Rahmeninterpolation durch die API 1802, Abrufen von Rahmeninterpolationsparametern durch die API 1902, und/oder Einstellen von Rahmeninterpolationsparametern durch die API 2002), die von dem einen oder mehreren Prozessoren und/oder einem oder mehreren anderen Prozessoren, wie GPUs und/oder Beschleunigern innerhalb eines heterogenen Prozessors, wie oben beschrieben, ausgeführt werden sollen. In mindestens einer Ausführungsform bestimmt ein Prozessor, der den Prozess 2100 durchführt, in Schritt 2110, ob ein Rückgabewert unter Verwendung eines API-Rückgabewertes, wie er hierin mindestens in Verbindung mit 16-20 beschrieben ist, zurückgegeben werden soll (z. B. Bestimmen der Unterstützung des API-Rückgabewerts 1620 für die Rahmeninterpolation, Aktivieren des API-Rückgabewerts 1720 für die Rahmeninterpolation, Deaktivieren des API-Rückgabewerts 1820 für die Rahmeninterpolationsparameter, Abrufen des API-Rückgabewerts 1920 für die Rahmeninterpolationsparameter und/oder Festlegen des API-Rückgabewerts 2020 für die Rahmeninterpolationsparameter). In mindestens einer Ausführungsform wird der Prozess 2100 in Schritt 2110 mit Schritt 2112 fortgesetzt, wenn bestimmt wird, dass ein Rückgabewert zurückgegeben werden soll („JA“-Zweig). In mindestens einer Ausführungsform wird der Prozess 2100 in Schritt 2110 mit Schritt 2114 fortgesetzt, wenn bestimmt wird, dass ein Rückgabewert nicht zurückgegeben werden soll („NEIN“-Zweig).
  • In mindestens einer Ausführungsform wird in Schritt 2112 ein Rückgabewert eingestellt. In mindestens einer Ausführungsform wird in Schritt 2112 ein Rückgabewert bestimmt, indem der Rückgabewert an einer Stelle des Speichers gespeichert wird, die von einer API, wie sie hierin mindestens in Verbindung mit 16-20 beschrieben ist, angegeben wird (z. B. Bestimmen der Unterstützung von Rahmeninterpolation durch die API 1602, Aktivieren der Rahmeninterpolation durch die API 1702, Deaktivieren der Rahmeninterpolation durch die API 1802, Abrufen von Rahmeninterpolationsparametern durch die API 1902 und/oder Einstellen der Rahmeninterpolationsparameter durch die API 2002). In mindestens einer Ausführungsform wird in Schritt 2112 ein Rückgabewert eingestellt, indem der Rückgabewert in einer Speicherstelle gespeichert wird, die in eine API-Rückgabe eingeschlossen ist, wie sie hierin zumindest in Verbindung mit 16-20 beschrieben ist (z. B. Bestimmen der Unterstützung des API-Rückgabewerts für die Rahmeninterpolation 1620, Aktivieren der Rahmeninterpolation API-Rückgabewert 1720, Deaktivieren der Rahmeninterpolation API-Rückgabewert 1820, Abrufen der Rahmeninterpolationsparameter API-Rückgabewert 1920 und/oder Einstellen der Rahmeninterpolationsparameter API-Rückgabewert 2020). In mindestens einer Ausführungsform wird der Prozess 2100 nach Schritt 2112 in Schritt 2114 fortgesetzt.
  • In mindestens einer Ausführungsform wird in Schritt 2114der Erfolg oder Fehler (z. B. ein Fehler) unter Verwendung einer API-Rückgabe zurückgegeben, wie sie hierin zumindest in Verbindung mit 16-20 beschrieben ist (z. B. Bestimmen der Unterstützung des API-Rückgabewerts für die Rahmeninterpolation 1620, Aktivieren der Rahmeninterpolation API-Rückgabewert 1720, Deaktivieren der Rahmeninterpolation API-Rückgabewert 1820, Abrufen der Rahmeninterpolationsparameter API-Rückgabewert 1920 und/oder Einstellen der Rahmeninterpolationsparameter API-Rückgabewert 2020). In mindestens einer Ausführungsform wird der Prozess 2100 nach Schritt 2114 in Schritt 2116 fortgesetzt.
  • In mindestens einer Ausführungsform bestimmt ein Prozessor, der den Prozess 2100 ausführt, in Schritt 2116, ob die Ausführung des Softwareprogramms 2104 abgeschlossen ist. In mindestens einer Ausführungsform bestimmt ein Prozessor, der den Prozess 2100 ausführt, in Schritt 2116, dass die Ausführung des Softwareprogramms 2104 abgeschlossen ist, mindestens teilweise basierend darauf, ob ein oder mehrere Prozessoren Anweisungen des Softwareprogramms 2104 ausführen. In mindestens einer Ausführungsform endet der Prozess 2100 in Schritt 2116, wenn bestimmt wird, dass die Ausführung des Softwareprogramms 2104 abgeschlossen ist, in 2118. In mindestens einer Ausführungsform wird der Prozess 2100 in Schritt 2116, wenn bestimmt wird, dass die Ausführung des Softwareprogramms 2104 nicht abgeschlossen ist, mit Schritt 2104 fortgesetzt, um eine oder mehrere Anweisungen eines Softwareprogramms 2104 weiter auszuführen.
  • In mindestens einer Ausführungsform werden die Operationen des Prozesses 2100 in einer anderen Reihenfolge ausgeführt als in 21 veranschaulicht. In mindestens einer Ausführungsform werden die Operationen des Prozesses 2100 gleichzeitig oder parallel ausgeführt. In mindestens einer Ausführungsform werden zum Beispiel Operationen, die nicht voneinander abhängen (z. B. unabhängig von der Reihenfolge), gleichzeitig oder parallel ausgeführt. In mindestens einer Ausführungsform werden die Operationen des Prozesses 2100 von einer Vielzahl von Threads ausgeführt, die auf einem Prozessor, wie er hierin beschrieben ist, laufen.
  • 22 ist ein Blockdiagramm 2200, das einen beispielhaften Software-Stack veranschaulicht, in dem Anwendungsprogrammierschnittstellen (API) gemäß mindestens einer Ausführungsform verarbeitet werden. In mindestens einer Ausführungsform wird eine API, wie beispielsweise die hierin zumindest in Verbindung mit 16 beschriebene Bestimmungs-API 1602 zur Unterstützung der Rahmeninterpolation, unter Verwendung des Software-Stacks 2200 verarbeitet, um eine Anwendungsprogrammierschnittstelle (API) zu bestimmen, die die Unterstützung der Verwendung eines oder mehrerer neuronaler Netzwerke zur Durchführung der Rahmeninterpolation anzeigt. In mindestens einer Ausführungsform wird eine API wie die hierin zumindest in Verbindung mit 17 beschriebene API 1702 zur Aktivierung der Rahmeninterpolation unter Verwendung des Software-Stacks 2200 ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) zur Aktivierung der Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke auszuführen. In mindestens einer Ausführungsform wird eine API wie die hierin mindestens in Verbindung mit 18 beschriebene Deaktivierung der Rahmeninterpolation durch die API 1802 unter Verwendung des Software-Stacks 2200 ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation auszuführen, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird eine API, wie beispielsweise die API 1902 zum Abrufen von Rahmeninterpolationsparametern, wie hierin mindestens in Verbindung mit 20 beschrieben, unter Verwendung des Software-Stacks 2200 ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) zur Angabe von Rahmengrößeninformationen unter Verwendung eines oder mehrerer neuronaler Netzwerke auszuführen. In mindestens einer Ausführungsform wird eine API, wie beispielsweise API 2002 zum Einstellen von Rahmeninterpolationsparametern, wie hierin mindestens in Verbindung mit 20 beschrieben, unter Verwendung des Software-Stacks 2200 verarbeitet, um eine Anwendungsprogrammierschnittstelle (API) auszuführen, damit die Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke durchgeführt wird. In mindestens einer Ausführungsform ist der Beispiel-Software-Stack 2200 mindestens ein Teil eines Software-Stacks, wie er hierin mindestens in Verbindung mit 42-45 beschrieben ist. In mindestens einer Ausführungsform führt eine Anwendung 2202 einen Befehl aus, um zu bestimmen, ob ein Merkmal 2204 unterstützt wird. In mindestens einer Ausführungsform führt eine Anwendung 2202 einen Befehl aus, um zu bestimmen, ob das Merkmal 2204 zum Ausführen einer API, wie sie hierin beschrieben ist, unterstützt wird.
  • In mindestens einer Ausführungsform verwendet die Anwendung 2202 2206 eine oder mehrere Laufzeit-APIs 2208, um zu bestimmen, ob das Merkmal 2204 unterstützt wird. In mindestens einer Ausführungsform verwenden die Laufzeit-APIs 2208 2210 eine oder mehrere Treiber-APIs 2212, um zu bestimmen, ob das Merkmal 2204 unterstützt wird. In mindestens einer Ausführungsform, die in 22 nicht dargestellt ist, verwendet die Anwendung 2202 eine oder mehrere Treiber-APIs 2212, um zu bestimmen, ob das Merkmal 2204 unterstützt wird. In mindestens einer Ausführungsform fragen die Treiber-APIs 2212 die Computerhardware 2214 des Computersystems 2216 ab, um zu bestimmen, ob das Merkmal 2204 unterstützt wird.
  • In mindestens einer Ausführungsform bestimmt die Computerhardware 2216, ob das Merkmal 2204 von einem Prozessor 2234 unterstützt wird, indem sie einen Satz von Fähigkeiten abfragt, der dem Prozessor 2234 zugeordnet ist. In mindestens einer Ausführungsform ist der Prozessor 2234 ein Prozessor wie der Prozessor 102, der hierin mindestens in Verbindung mit 1 beschrieben ist. In mindestens einer Ausführungsform bestimmt die Computerhardware 2216, ob ein Merkmal 2204 vom Prozessor 2234 unterstützt wird, indem sie ein Betriebssystem des Prozessors 2234 verwendet. In mindestens einer Ausführungsform bestimmt die Computerhardware 2216, ob ein Merkmal von einem GPU 2236 unterstützt wird, indem sie einen Satz von Fähigkeiten abfragt, der dem GPU 2236 zugeordnet ist. In mindestens einer Ausführungsform ist der GPU 2236 ein GPU, wie er hierin beschrieben ist. In mindestens einer Ausführungsform bestimmt die Computerhardware 2216, ob das Merkmal 2204 vom GPU 2236 unter Verwendung eines Betriebssystems des Prozessors 2234 unterstützt wird. In mindestens einer Ausführungsform bestimmt die Computerhardware 2216, ob das Merkmal 2204 vom GPU 2236 unterstützt wird, wobei ein Betriebssystem des GPUs 2236 verwendet wird.
  • In mindestens einer Ausführungsform, nachdem die Computersystemhardware 2216 bestimmt hat, ob das Merkmal 2204 unterstützt wird, gibt die Computersystemhardware 2216 ein Bestimmungsergebnis 2218 unter Verwendung von Treiber-APIs 2212 zurück, die ein Bestimmungsergebnis 2220 unter Verwendung von Laufzeit-APIs 2208 zurückgeben können, die ein Bestimmungsergebnis 2222 an die Anwendung 2202 zurückgeben können. In mindestens einer Ausführungsform, wenn die Anwendung 2202 ein Bestimmungsergebnis empfängt, das anzeigt, dass das Merkmal 2204 unterstützt wird 2224, führt die Anwendung 2202 ein Merkmal 2226 aus, indem sie eine oder mehrere APIs, wie die hierin beschriebenen, verwendet. In mindestens einer Ausführungsform führt die Anwendung 2202 das Merkmal 2226 unter Verwendung von Systemen und Verfahren aus, wie sie hierin beschrieben sind. In mindestens einer Ausführungsform führt die Anwendung 2202 das Merkmal 2226 unter Verwendung von 2228 Laufzeit-APIs 2208 aus, einschließlich, aber nicht beschränkt auf, Laufzeitversionen von APIs, wie sie hierin zumindest in Verbindung mit 6-10 beschrieben sind.
  • In mindestens einer Ausführungsform führen Laufzeit-APIs 2208 das Merkmal 2226 unter Verwendung von 2230 Treiber-APIs 2212 aus, einschließlich, aber nicht beschränkt auf, Treiberversionen von APIs wie den hierin beschriebenen. In mindestens einer in 22 nicht dargestellten Ausführungsform führt die Anwendung 2202 das Merkmal 2226 unter Verwendung der 2230 Treiber-APIs 2212 aus. In mindestens einer Ausführungsform führen die Treiber-APIs 2212 das Merkmal 2226 unter Verwendung der Computerhardware 2232 des Computersystems 2216 aus.
  • In der folgenden Beschreibung sind zahlreiche spezifische Details aufgeführt, um ein umfassenderes Verständnis von mindestens einer Ausführungsform bereitzustellen. Dem Fachmann ist jedoch ersichtlich, dass die erfinderischen Konzepte ohne eines oder mehrerer dieser spezifischen Details praktisch umgesetzt werden können.
  • INFERENZ- UND TRAININGSLOGIK
  • 23A veranschaulicht Inferenz- und/oder Trainingslogik 2315, die verwendet wird, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden nachstehend in Verbindung mit 23A und/oder 23B bereitgestellt.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 2315 ohne Einschränkung einen Code- und/oder Datenspeicher 2301 beinhalten, um Vorwärts- und/oder Ausgabegewichtungs- und/oder Eingabe-/Ausgabedaten und/oder andere Parameter zu speichern, um Neuronen oder Schichten eines neuronalen Netzes zu konfigurieren, das in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder zum Inferenzieren verwendet wird. In mindestens einer Ausführungsform kann die Trainingslogik 2315 einen Code- und/oder Datenspeicher 2301 beinhalten oder an diesen gekoppelt sein, um Graphencode oder andere Software zu speichern, um die Zeitsteuerung und/oder die Reihenfolge zu steuern, in der Gewichtungs- und/oder andere Parameterinformationen geladen werden sollen, um Logik zu konfigurieren, die Ganzzahl- und/oder Gleitkommaeinheiten (zusammen arithmetisch-logische Einheiten (ALU)) beinhalten. In mindestens einer Ausführungsform lädt ein Code, wie beispielsweise ein Graphencode, basierend auf einer Architektur eines neuronalen Netzwerks, dem dieser Code entspricht, Informationen über Gewichte oder andere Parameter in die ALUs des Prozessors. In mindestens einer Ausführungsform speichert der Code- und/oder Datenspeicher 2301 Gewichtungsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzwerkes, das trainiert oder in Verbindung mit einer oder mehreren Ausführungsformen während der Vorwärtspropagation von Eingabe-/Ausgabedaten und/oder Gewichtsparametern während des Trainings und/oder dem Ableiten unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen verwendet wird. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 2301 in einem anderen chipinternen oder chipexternen Datenspeicher, einschließlich des L1-, L2- oder L3-Caches oder Systemspeichers eines Prozessors, beinhaltet sein.
  • In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 2301 innerhalb oder außerhalb eines oder mehrerer Prozessoren oder anderer Hardware-Logikvorrichtungen oder -Schaltungen vorliegen. In mindestens einer Ausführungsform kann der Code und/oder Code- und/oder Datenspeicher 2301 ein Cache-Speicher, ein dynamischer zufällig adressierbarer Speicher (DRAM), ein statischer zufällig adressierbarer Speicher (SRAM), ein nicht flüchtiger Speicher (z. B. Flash-Speicher) oder ein anderer Speicher sein. In mindestens einer Ausführungsform kann eine Wahl, ob der Code und/oder Code- und/oder Datenspeicher 2301 zu einem Prozessor, der z. B. DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, intern oder extern ist, von dem verfügbaren Speicher auf dem Chip oder außerhalb des Chips, den Latenzanforderungen der durchzuführenden Trainings- und/oder Ableitungsfunktionen, der Batch-Größe der Daten, die bei der Ableitung und/oder dem Training eines neuronalen Netzwerks verwendet werden, oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 2315 ohne Einschränkung einen Code- und/oder Datenspeicher 2305 beinhalten, um Rückwärts- und/oder Ausgabegewichtungs- und/oder Eingabe-/Ausgabedaten zu speichern, die Neuronen oder Schichten eines neuronalen Netzwerks entsprechen, das in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder zum Inferenzieren verwendet wird. In mindestens einer Ausführungsform speichert der Code- und/oder Datenspeicher 2305 Gewichtungsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzes, die in Verbindung mit einer oder mehreren Ausführungsformen trainiert oder verwendet wird, während der Rückwärtspropagierung von Eingabe-/Ausgabedaten und/oder Gewichtungsparametern während des Trainierens und/oder Inferenzierens unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen. In mindestens einer Ausführungsform kann die Trainingslogik 2315 einen Code- und/oder Datenspeicher 2305 beinhalten oder an diesen gekoppelt sein, um Graphencode oder andere Software zu speichern, um die Zeitsteuerung und/oder die Reihenfolge zu steuern, in der Gewichtungs- und/oder andere Parameterinformationen geladen werden sollen, um Logik zu konfigurieren, die Ganzzahl- und/oder Gleitkommaeinheiten (zusammen arithmetische Logikeinheiten (ALU)) beinhalten.
  • In mindestens einer Ausführungsform bewirkt Code, wie etwa Kurvendiagrammencode, das Laden von den Gewichtungs- oder anderen Parameterinformationen in Prozessor-ALUs auf Grundlage einer Architektur eines neuronalen Netzes, dem dieser Code entspricht. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 2305 in einem anderen chipinternen oder chipexternen Datenspeicher, einschließlich des L1-, L2- oder L3-Caches oder Systemspeichers eines Prozessors, beinhaltet sein. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 2305 innerhalb oder außerhalb eines oder mehrerer Prozessoren oder anderer Hardware-Logikvorrichtungen oder -Schaltungen vorliegen. In mindestens einer Ausführungsform kann der Code- und/oder Datenspeicher 2305 ein Cache-Speicher, ein DRAM, ein SRAM, ein nicht flüchtiger Speicher (z. B. Flash-Speicher) oder ein anderer Speicher sein. Bei mindestens einer Ausführungsform kann die Wahl, ob der Code- und/oder Datenspeicher 2305 intern oder extern zu einem Prozessor ist, oder ob er beispielsweise DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, von dem verfügbaren Speicher auf dem Chip oder außerhalb des Chips, von den Anforderungen an die Latenzzeit der ausgeführten Trainings- und/oder Inferenzfunktionen, von der Stack-Größe der beim Inferenzieren und/oder Trainieren eines neuronalen Netzwerks verwendeten Daten oder von einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 2301 und der Code- und/oder Datenspeicher 2305 separate Speicherstrukturen sein. In mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 2301 und der Code- und/oder Datenspeicher 2305 eine kombinierte Speicherstruktur sein. In mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 2301 und der Code- und/oder Datenspeicher 2305 teilweise kombiniert und teilweise separat sein. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 2301 und des Code- und/oder Datenspeichers 2305 in einem anderen chipinternen oder chipexternen Datenspeicher, einschließlich des L1-, L2- oder L3-Caches oder Systemspeichers eines Prozessors, enthalten sein.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 2315 ohne Einschränkung eine oder mehrere arithmetisch-logische Einheit(en) („ALU(s)“) 2310 beinhalten, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten, um logische und/oder mathematische Operationen durchzuführen, die mindestens zum Teil auf Trainings- und/oder Inferenzcode (z. B. Diagrammcode) basieren oder dadurch angegeben werden, wobei ein Ergebnis davon Aktivierungen (z. B. Ausgabewerte von Schichten oder Neuronen innerhalb eines neuronalen Netzwerks) produzieren kann, die in einem Aktivierungsspeicher 2320 gespeichert sind und die Funktionen von Eingabe/Ausgabe- und/oder Gewichtungsparameterdaten sind, die in dem Code- und/oder Datenspeicher 2301 und/oder dem Code- und/oder Datenspeicher 2305 gespeichert sind. In mindestens einer Ausführungsform werden in einem Aktivierungsspeicher 2320 gespeicherte Aktivierungen gemäß linearer algebraischer und/oder matrixbasierter Mathematik generiert, die von ALU(s) 2310 als Reaktion auf Ausführungsbefehle oder anderen Code ausgeführt wird, wobei in Code- und/oder Datenspeicher 2305 und/oder Datenspeicher 2301 gespeicherte Gewichtungswerte als Operanden zusammen mit anderen Werten verwendet werden, wie beispielsweise Vorgabewerten, Gradienteninformationen, Impulswerten oder anderen Parametern oder Hyperparametern, von denen beliebige oder alle in Code- und/oder Datenspeicher 2305 oder Code- und/oder Datenspeicher 2301 oder einem anderen Speicher auf oder außerhalb des Chips gespeichert sein können.
  • In mindestens einer Ausführungsform sind die ALU(s) 2310 in einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder -schaltungen beinhaltet, wohingegen in einer weiteren Ausführungsform die ALU(s) 2310 außerhalb eines Prozessors oder einer anderen Hardware-Logikvorrichtung oder -schaltung liegen können, die sie verwendet (z. B. ein Co-Prozessor). In mindestens einer Ausführungsform können die ALUs 2310 in Ausführungseinheiten eines Prozessors oder anderweitig in einer Bank von ALUs enthalten sein, auf die die Ausführungseinheiten eines Prozessors zugreifen können, entweder innerhalb des gleichen Prozessors oder verteilt auf unterschiedliche Prozessoren unterschiedlichen Typs (z. B. zentrale Verarbeitungseinheiten, Grafikverarbeitungseinheiten, Festfunktionseinheiten usw.). In mindestens einer Ausführungsform können sich der Code- und/oder Datenspeicher 2301, der Code- und/oder Datenspeicher 2305 und der Aktivierungsspeicher 2320 einen Prozessor oder eine andere Hardware-Logikvorrichtung oder -schaltung teilen, während sie sich in einer anderen Ausführungsform in unterschiedlichen Prozessoren oder anderen Hardware-Logikvorrichtungen oder -Schaltungen oder in einer Kombination aus gleichen und unterschiedlichen Prozessoren oder anderen Hardware-Logikvorrichtungen oder -Schaltungen befinden können. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Aktivierungsspeichers 2320 in einem anderen chipinternen oder chipexternen Datenspeicher beinhaltet sein, einschließlich in einem L1-, L2- oder L3-Cache oder einem Systemspeicher eines Prozessors. Darüber hinaus kann der Inferenz- und/oder Trainingscode zusammen mit anderem Code gespeichert werden, auf den ein Prozessor oder eine andere Hardware-Logik oder -Schaltung zugreifen kann und der mit Hilfe der Abruf-, Decodierungs-, Planungs-, Ausführungs-, Ausscheidungs- und/oder anderen logischen Schaltungen eines Prozessors abgerufen und/oder verarbeitet wird.
  • In mindestens einer Ausführungsform kann der Aktivierungsspeicher 2320 ein Cache-Speicher, ein DRAM, ein SRAM, ein nicht flüchtiger Speicher (z. B. Flash-Speicher) oder ein anderer Speicher sein. Bei mindestens einer Ausführungsform kann sich der Aktivierungsspeicher 2320 vollständig oder teilweise innerhalb oder außerhalb eines oder mehrerer Prozessoren oder anderer logischer Schaltungen befinden. In mindestens einer Ausführungsform kann die Entscheidung, ob der Aktivierungsspeicher 2320 beispielsweise innerhalb oder außerhalb eines Prozessors liegt oder DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, von dem verfügbaren Speicher auf dem Chip oder außerhalb des Chips, den Anforderungen an die Latenzzeit der ausgeführten Trainings- und/oder Inferenzierungsfunktionen, der Stack-Größe der beim Inferenzieren und/oder Trainieren eines neuronalen Netzwerks verwendeten Daten oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform kann die in 23A veranschaulichte Inferenz- und/oder Trainingslogik 2315 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung (ASIC) verwendet werden, wie etwa einer TensorFlow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem Prozessor vom Typ Nervana® (z. B. „Lake Crest“) der Intel Corp. In mindestens einer Ausführungsform kann die Inferenz-und/oder Trainingslogik 2315, die in 23A veranschaulicht ist, in Verbindung mit Hardware einer Zentraleinheit („CPU“), Hardware einer Grafikverarbeitungseinheit („GPU“) oder anderer Hardware, wie etwa feldprogrammierbaren Gatearrays („FPGA“) verwendet werden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 23A gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen zu durchzuführen, die in Verbindung mit den 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine in 23A gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzugeben, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine in 23A gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine in 23A gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine in 23A gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine in 23A gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 23A verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist. In mindestens einer Ausführungsform wird die Inferenz- und/oder Trainingslogik 2315 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben wird.
  • 23B veranschaulicht die Inferenz- und/oder Trainingslogik 2315 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 2315 ohne Einschränkung eine Hardware-Logik beinhalten, in der Rechenressourcen dediziert oder anderweitig ausschließlich in Verbindung mit Gewichtungswerten oder anderen Informationen verwendet werden, die einer oder mehreren Schichten von Neuronen innerhalb eines neuronalen Netzwerks entsprechen. Bei mindestens einer Ausführungsform kann die in 23B veranschaulichte Inferenz- und/oder Trainingslogik 2315 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung (ASIC) verwendet werden, wie z. B. der TensorFlow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem Nervana®-Prozessor (z. B. „Lake Crest“) von Intel Corp. In mindestens einer Ausführungsform kann die Inferenz-und/oder Trainingslogik 2315, die in 23B veranschaulicht ist, in Verbindung mit Hardware einer Zentraleinheit (CPU), Hardware einer Grafikverarbeitungseinheit (GPU) oder anderer Hardware, wie etwa feldprogrammierbaren Gatearrays (FPGA) verwendet werden. In mindestens einer Ausführungsform beinhaltet die Inferenz- und/oder Trainingslogik 2315, ohne Einschränkung, den Code- und/oder Datenspeicher 2301 und den Code- und/oder Datenspeicher 2305, die zum Speichern von Code (z. B. Graphencode), Gewichtungswerten und/oder anderen Informationen, einschließlich Bias-Werten, Gradienteninformationen, Impulswerten und/oder anderen Parameter- oder Hyperparameterinformationen, verwendet werden können. In mindestens einer Ausführungsform, die in 23B veranschaulicht ist, ist jeder des Code- und/oder Datenspeichers 2301 und des Code- und/oder Datenspeichers 2305 mit einer dedizierten Rechenressource, wie etwa der Rechenhardware 2302 bzw. der Rechenhardware 2306, assoziiert. In mindestens einer Ausführungsform umfasst jede der Rechenhardware 2302 und der Rechenhardware 2306 eine oder mehrere ALUs, die mathematische Funktionen, wie etwa lineare algebraische Funktionen, nur an Informationen durchführen, die in dem Code- und/oder Datenspeicher 2301 bzw. dem Code- und/oder Datenspeicher 2305 gespeichert sind, wobei das Ergebnis davon in dem Aktivierungsspeicher 2320 gespeichert wird.
  • In mindestens einer Ausführungsform entspricht jeder der Code- und/oder Datenspeicher 2301 und 2305 und die entsprechende Rechen-Hardware 2302 bzw. 2306 verschiedenen Schichten eines neuronalen Netzwerks, sodass die resultierende Aktivierung von einem Speicher-/Rechenpaar 2301/2302 des Code- und/oder Datenspeichers 2301 und der Rechenhardware 2302 als Eingabe für ein nächstes Speicher-/Rechenpaar 2305/2306 des Code- und/oder Datenspeichers 2305 und der Rechen-Hardware 2306 bereitgestellt wird, um eine konzeptionelle Organisation eines neuronalen Netzwerks zu spiegeln. In mindestens einer Ausführungsform kann jedes der Speicher/Rechenpaare 2301/2302 und 2305/2306 mehr als einer Schicht eines neuronalen Netzwerks entsprechen. In mindestens einer Ausführungsform können zusätzliche Speicher/Berechnungspaare (nicht gezeigt) nach oder parallel zu den Speicher/Berechnungspaaren 2301/2302 und 2305/2306 in der Inferenz- und/oder Trainingslogik 2315 beinhaltet sein.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 23B gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen zu durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine in 23B gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine in 23B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine in 23B gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine in 23B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine in 23B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 23B verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • TRAINING UND EINSATZ NEURONALER NETZWERKE
  • 24 veranschaulicht das Training und den Einsatz eines tiefen neuronalen Netzwerks, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird das untrainierte neuronale Netzwerk 2406 unter Verwenden eines Trainingsdatensatzes 2402 trainiert. In mindestens einer Ausführungsform ist das Trainings-Framework 2404 ein PyTorch-Framework, während in anderen Ausführungsformen das Trainings-Framework 2404 ein TensorFlow-, Boost-, Caffe-, Microsoft Cognitive Toolkit/CNTK-, MXNet-, Chainer-, Keras-, Deeplearning4j- oder ein anderes Trainings-Framework ist. In mindestens einer Ausführungsform trainiert der Trainingsrahmen 2404 ein untrainiertes neuronales Netzwerk 2406 und ermöglicht, dass es unter Verwendung der hierin beschriebenen Verarbeitungsressourcen trainiert wird, um ein trainiertes neuronales Netzwerk 2408 zu erzeugen. In mindestens einer Ausführungsform können die Gewichtungen zufällig oder durch Vorabtraining unter Verwendung eines Deep-Belief-Netzwerks gewählt werden. In mindestens einer Ausführungsform kann das Training entweder auf überwachte, teilweise überwachte oder nicht überwachte Weise durchgeführt werden.
  • In mindestens einer Ausführungsform wird das untrainierte neuronale Netzwerk 2406 unter Verwendung von überwachtem Lernen trainiert, wobei der Trainingsdatensatz 2402 eine Eingabe beinhaltet, die mit einer gewünschten Ausgabe für eine Eingabe gepaart ist, oder wobei der Trainingsdatensatz 2402 eine Eingabe mit einer bekannten Ausgabe beinhaltet und eine Ausgabe des neuronalen Netzwerks 2406 manuell bewertet wird. In mindestens einer Ausführungsform wird das untrainierte neuronale Netzwerk 2406 auf überwachte Weise trainiert und verarbeitet Eingaben aus dem Trainingsdatensatz 2402 und vergleicht die resultierenden Ausgaben mit einem Satz von erwarteten oder gewünschten Ausgaben. In mindestens einer Ausführungsform werden Fehler dann durch das untrainierte neuronale Netzwerk 2406 rückpropagiert. In mindestens einer Ausführungsform stellt der Trainingsrahmen 2404 Gewichtungen ein, die das untrainierte neuronale Netzwerk 2406 steuern. In mindestens einer Ausführungsform beinhaltet der Trainingsrahmen 2404 Werkzeuge, um zu überwachen, wie gut das untrainierte neuronale Netzwerk 2406 zu einem Modell konvergiert, wie etwa dem trainierten neuronalen Netzwerk 2408, das dazu geeignet ist, korrekte Antworten zu erzeugen, wie etwa in Ergebnis 2414, die auf Eingabedaten wie etwa einem neuen Datensatz 2412 basieren. In mindestens einer Ausführungsform trainiert der Trainingsrahmen 2404 das untrainierte neuronale Netzwerk 2406 wiederholt, während Gewichtungen eingestellt werden, um eine Ausgabe des untrainierten neuronalen Netzwerks 2406 unter Verwendung einer Verlustfunktion und eines Einstellungsalgorithmus, wie etwa des stochastischen Gradientenabstiegs, zu verfeinern. In mindestens einer Ausführungsform trainiert der Trainingsrahmen 2404 das untrainierte neuronale Netzwerk 2406, bis das untrainierte neuronale Netzwerk 2406 eine gewünschte Genauigkeit erreicht. In mindestens einer Ausführungsform kann das trainierte neuronale Netzwerk 2408 dann zur Implementierung einer beliebigen Anzahl von Vorgängen des maschinellen Lernens eingesetzt werden.
  • Mindestens in einer Ausführungsform wird das untrainierte neuronale Netzwerk 2406 unter Verwendung von unbeaufsichtigtem Lernen trainiert, wobei das untrainierte neuronale Netzwerk 2406 versucht, sich selbst unter Verwendung ungekennzeichneter Daten zu trainieren. In mindestens einer Ausführungsform beinhaltet der Trainingsdatensatz 2402 für nicht überwachtes Lernen Eingabedaten ohne beliebige zugehörige Ausgabedaten oder „Ground-Truth“-Daten. In mindestens einer Ausführungsform kann das untrainierte neuronale Netz 2406 Gruppierungen innerhalb des Trainingsdatensatzes 2402 erlernen und bestimmen, wie einzelne Eingaben mit dem Trainingsdatensatz 2402 in Beziehung stehen. In mindestens einer Ausführungsform kann nicht überwachtes Training verwendet werden, um eine selbstorganisierende Karte in dem trainierten neuronalen Netzwerk 2408 zu erzeugen, die dazu in der Lage ist, Operationen durchzuführen, die beim Reduzieren der Dimensionalität des neuen Datensatzes 2412 nützlich sind. In mindestens einer Ausführungsform kann nicht überwachtes Training auch verwendet werden, um Anomaliedetektion durchzuführen, was die Identifizierung von Datenpunkten in dem neuen Datensatz 2412 ermöglicht, die von normalen Mustern des neuen Datensatzes 2412 abweichen.
  • In mindestens einer Ausführungsform kann halbüberwachtes Lernen verwendet werden, wobei es sich um eine Technik handelt, bei der der Trainingsdatensatz 2402 eine Mischung aus markierten und nicht markierten Daten beinhaltet. In mindestens einer Ausführungsform kann der Trainingsrahmen 2404 verwendet werden, um inkrementelles Lernen auszuführen, z. B. durch übertragene Lerntechniken. In mindestens einer Ausführungsform ermöglicht es das inkrementelle Lernen dem trainierten neuronalen Netzwerk 2408, sich an den neuen Datensatz 2412 anzupassen, ohne das Wissen zu vergessen, das dem trainierten neuronalen Netzwerk 2408 während des anfänglichen Trainings beigebracht wurde.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 24 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 24 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 24 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 24 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 24 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 24 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 24 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • RECHENZENTRUM
  • 25 veranschaulicht ein beispielhaftes Rechenzentrum 2500, in dem mindestens eine Ausführungsform verwendet werden kann. In mindestens einer Ausführungsform beinhaltet das Rechenzentrum 2500 eine Rechenzentruminfrastrukturschicht 2510, eine Frameworkschicht 2520, eine Softwareschicht 2530 und eine Anwendungsschicht 2540.
  • In mindestens einer Ausführungsform, wie in 25 gezeigt, kann die Rechenzentrumsinfrastrukturschicht 2510 einen Ressourcenorchestrator 2512, gruppierte Rechenressourcen 2514 und Knoten-Rechenressourcen („Knoten-C.R.s“) 2516(1)-2516(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 2516(1)-2516(N) eine beliebige Anzahl von Zentraleinheiten („CPUs“) oder anderen Prozessoren (einschließlich Beschleunigern, Field Programmable Gate Arrays (FPGAs), GPUen usw.), Speichereinrichtungen 2518(1)-2518(N) (z. B. dynamischer Festwertspeicher), Festkörper- oder Festplattenlaufwerke, Netzwerk-Eingabe-/Ausgabeeinrichtungen („NW E/A“), Netzwerk-Switches, virtuelle Maschinen („VMs“), Stromversorgungsmodule und Kühlmodule, usw. einschließen. In mindestens einer Ausführungsform kann es sich bei einem oder mehreren Knoten-C.R.s unter den Knoten-C.R.s 2516(1)-2516(N) um einen Server handeln, der über eine oder mehrere der oben erwähnten Rechenressourcen verfügt.
  • In mindestens einer Ausführungsform können die gruppierten Rechenressourcen 2514 getrennte Gruppierungen von Knoten-C.R.s beinhalten, die in einem oder mehreren Racks (nicht gezeigt) untergebracht sind, oder viele Racks, die in Datenzentren an verschiedenen geografischen Standorten untergebracht sind (ebenfalls nicht gezeigt). Separate Gruppierungen von Knoten-C.R.s innerhalb der gruppierten Rechenressourcen 2514 können in mindestens einer Ausführungsform gruppierte Rechen-, Netzwerk-, Arbeitsspeicher- oder Datenspeicherressourcen beinhalten, die zur Unterstützung einer oder mehrerer Arbeitslasten konfiguriert oder zugewiesen sein können. In mindestens einer Ausführungsform können mehrere Knoten-C.R.s, die CPUs oder Prozessoren beinhalten, innerhalb eines oder mehrerer Racks gruppiert sein, um Rechenressourcen zum Unterstützen einer oder mehrerer Arbeitslasten bereitzustellen. In mindestens einer Ausführungsform können in einem oder mehreren Racks auch eine beliebige Anzahl von Leistungsmodulen, Kühlmodulen und Netzwerkschaltern in beliebiger Kombination eingeschlossen sein.
  • In mindestens einer Ausführungsform kann der Ressourcenorchestrator 2512 eine oder mehrere Knoten-C.R.s 2516(1)-2516(N) und/oder gruppierte Rechenressourcen 2514 konfigurieren oder anderweitig steuern. In mindestens einer Ausführungsform kann der Ressourcenorchestrator 2512 eine Verwaltungseinheit einer Software-Design-Infrastruktur („SDI“) für das Rechenzentrum 2500 beinhalten. Bei mindestens einer Ausführungsform kann der Ressourcenorchestrator 2312 Hardware, Software oder eine Kombination davon beinhalten.
  • In mindestens einer Ausführungsform, wie in 25 gezeigt, die Frameworkschicht 2520 einen Aufgaben-Scheduler 2522, einen Konfigurationsverwalter 2524, einen Ressourcenverwalter 2526 und ein verteiltes Dateisystem 2528. In mindestens einer Ausführungsform kann die Frameworkschicht 2520 ein Framework beinhalten, um Software 2532 der Softwareschicht 2530 und/oder eine oder mehrere Anwendung(en) 2542 der Anwendungsschicht 2540 zu unterstützen. In mindestens einer Ausführungsform kann die Software 2532 bzw. die Anwendung 2542 webbasierte Dienstsoftware oder Anwendungen beinhalten, wie sie beispielsweise von Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt werden. In mindestens einer Ausführungsform kann es sich bei der Frameworkschicht 2520 um eine Art freien und quelloffenen Software-Webanwendungsrahmen wie etwa Apache Spark™ (im Folgenden „Spark“) handeln, der das verteilte Dateisystem 2528 für die Verarbeitung großer Datenmengen (z. B. „Big Data“) verwenden kann, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform kann der Aufgaben-Scheduler 2522 einen Spark-Treiber beinhalten, um die Planung von Arbeitslasten zu erleichtern, die durch verschiedene Schichten des Rechenzentrums 2500 unterstützt werden. In mindestens einer Ausführungsform kann der Konfigurationsmanager 2524 in der Lage sein, unterschiedliche Schichten zu konfigurieren, wie etwa die Softwareschicht 2530 und die Frameworkschicht 2520, was Spark und das verteilte Dateisystem 2528 zum Unterstützen einer umfangreichen Datenverarbeitung beinhaltet. In mindestens einer Ausführungsform kann der Ressourcenmanager 2526 in der Lage sein, geclusterte oder gruppierte Rechenressourcen zu verwalten, die in dem verteilten Dateisystem 2528 und dem Aufgaben-Scheduler 2522 abgebildet sind oder diesen zur Unterstützung zugewiesen sind. In mindestens einer Ausführungsform können geclusterte oder gruppierte Rechenressourcen die gruppierte Rechenressource 2514 auf der Rechenzentrums-Infrastrukturschicht 2510 beinhalten. In mindestens einer Ausführungsform kann sich der Ressourcenverwalter 2526 mit dem Ressourcenorchestrator 2512 koordinieren, um diese abgebildeten oder zugewiesenen Rechenressourcen zu verwalten.
  • In mindestens einer Ausführungsform kann Software 2532, die in der SoftwareSchicht 2530 beinhaltet ist, Software beinhalten, die mindestens von Teilen von Knoten-C.R.s 2516(1)-2516(N), gruppierten Rechenressourcen 2514 und/oder dem verteilten Dateisystem 2528 der Frameworkschicht 2520 verwendet wird. In mindestens einer Ausführungsform können eine oder mehrere Arten von Software wie z. B. Internet-Suchsoftware, Software zum Scannen von E-Mail-Viren, Datenbanksoftware und Software für das Streaming von Videoinhalten beinhalten, sind aber nicht darauf beschränkt.
  • In mindestens einer Ausführungsform können die in der Anwendungsschicht 2540 enthaltenen Anwendung(en) 2542 eine oder mehrere Arten von Anwendungen beinhalten, die zumindest von Abschnitten der Knoten-C.R.s 2516(1)-2516(N), den gruppierten Rechenressourcen 2514 und/oder dem verteilten Dateisystem 2528 der Frameworkschicht 2520 verwendet werden. In mindestens einer Ausführungsform können eine oder mehrere Arten von Anwendungen eine beliebige Anzahl von Genomanwendungen, eine kognitive Rechenanwendung und eine maschinelle Lernanwendung, einschließlich Trainings- oder Inferenzsoftware, maschinelle Lernsoftware (z. B. PyTorch, TensorFlow, Caffe usw.) oder andere maschinelle Lernanwendungen, die in Verbindung mit einer oder mehreren Ausführungsformen verwendet werden, beinhalten, sind aber nicht darauf beschränkt.
  • In mindestens einer Ausführungsform können der Konfigurationsverwalter 2524, der Ressourcenverwalter 2526 und der Ressourcenorchestrator 2512 eine beliebige Anzahl und Art von selbstmodifizierenden Aktionen basierend auf einer beliebigen Menge und Art von Daten implementieren, die auf jede technisch machbare Weise erfasst werden. In mindestens einer Ausführungsform können selbstmodifizierende Handlungen einen Rechenzentrumsbetreiber des Rechenzentrums 2500 dahingehend entlasten, möglicherweise schlechte Konfigurationsentscheidungen zu treffen und möglicherweise nicht ausgelastete und/oder schlecht funktionierende Abschnitte eines Rechenzentrums zu vermeiden.
  • Bei mindestens einer Ausführungsform kann das Datenzentrum 2500 Tools, Dienste, Software oder andere Ressourcen umfassen, um ein oder mehrere maschinelle Lernmodelle zu trainieren, oder um Informationen unter Verwendung eines oder mehrerer maschineller Lernmodelle gemäß einer oder mehrerer hier beschriebener Ausführungsformen vorherzusagen oder abzuleiten. Zum Beispiel kann in mindestens einer Ausführungsform ein Modell für maschinelles Lernen trainiert werden, indem Gewichtungsparameter gemäß einer Architektur eines neuronalen Netzes unter Verwendung von Software- und Rechenressourcen berechnet werden, die vorstehend in Bezug auf das Rechenzentrum 2500 beschrieben sind. In mindestens einer Ausführungsform können trainierte Modelle für maschinelles Lernen, die einem oder mehreren neuronalen Netzwerken entsprechen, verwendet werden, um Informationen unter Verwendung der vorstehend in Bezug auf das Rechenzentrum 2500 beschriebenen Ressourcen abzuleiten oder vorherzusagen, indem Gewichtungsparameter verwendet werden, die durch eine oder mehrere hierin beschriebene Trainingstechniken berechnet werden.
  • Bei mindestens einer Ausführungsform kann das Datenzentrum CPUs, anwendungsspezifische integrierte Schaltkreise (ASICs), GPUs, FPGAs oder andere Hardware verwenden, um das Trainieren und/oder Inferieren unter Verwendung der zuvor beschriebenen Ressourcen vorzunehmen. 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 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 2315 im System von 25 für Inferenz- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netze, neuronalen Netzfunktionen und/oder -architekturen oder hier beschriebenen Anwendungsfällen für neuronale Netze berechnet werden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 25 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 25 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 25 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 25 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 25 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 25 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 25 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • SUPERCOMPUTER
  • Die folgenden Figuren legen ohne Einschränkung beispielhafte supercomputerbasierte Systeme dar, die verwendet werden können, um mindestens eine Ausführungsform zu implementieren.
  • In mindestens einer Ausführungsform kann sich ein Supercomputer auf ein Hardwaresystem beziehen, das im Wesentlichen Parallelität aufweist und mindestens einen Chip umfasst, wobei Chips in einem System durch ein Netzwerk miteinander verbunden und in hierarchisch organisierten Gehäusen platziert sind. In mindestens einer Ausführungsform ist ein großes Hardwaresystem, das einen Maschinenraum mit mehreren Racks füllt, von denen jedes mehrere Platinen/Rack-Module enthält, von denen jedes mehrere Chips enthält, die alle durch ein skalierbares Netzwerk miteinander verbunden sind, ein bestimmtes Beispiel eines Supercomputers. In mindestens einer Ausführungsform ist ein einzelnes Rack eines solchen großen Hardwaresystems ein anderes Beispiel eines Supercomputers. In mindestens einer Ausführungsform kann ein einzelner Chip, der eine beträchtliche Parallelität aufweist und mehrere Hardwarekomponenten enthält, gleichermaßen als Supercomputer angesehen werden, da mit abnehmenden Merkmalsgrößen auch eine Menge an Hardware, die in einen einzelnen Chip integriert werden kann, zunehmen kann.
  • 26A veranschaulicht einen Supercomputer auf Chipebene gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird innerhalb eines FPGA- oder ASIC-Chips der Hauptrechenaufwand in endlichen Zustandsmaschinen (SM) (2604) durchgeführt, die als Thread-Einheiten bezeichnet werden. In mindestens einer Ausführungsform verbinden Aufgaben- und Synchronisationsnetzwerke (2602) endliche Zustandsmaschinen und werden verwendet, um Threads abzuschicken und Vorgänge in der richtigen Reihenfolge auszuführen. In mindestens einer Ausführungsform wird unter Verwendung von Speichernetzwerken (2606, 2610) auf eine partitionierte Mehrebenen-Cache-Hierarchie (2608, 2612) auf einem Chip zugegriffen. In mindestens einer Ausführungsform wird auf einen chipexternen Speicher unter Verwendung von Speichersteuerungen (2616) und einem chipexternen Speichernetzwerk (2614) zugegriffen. In mindestens einer Ausführungsform wird eine E/A-Steuerung (2618) für die chipübergreifende Kommunikation verwendet, wenn ein Design nicht in einen einzelnen Logikchip passt.
  • 26B veranschaulicht einen Supercomputer auf Rock-Modulebene gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform gibt es innerhalb eines Rack-Moduls mehrere FPGA- oder ASIC-Chips (2620), die mit einer oder mehreren DRAM-Einheiten (2622) verbunden sind, die einen Hauptbeschleunigerspeicher bilden. In mindestens einer Ausführungsform ist jeder FPGA/ASIC-Chip mit seinem benachbarten FPGA/ASIC-Chip unter Verwendung von breiten Bussen auf einer Platine mit differentieller Hochgeschwindigkeitssignalisierung (2624) verbunden. In mindestens einer Ausführungsform ist jeder FPGA/ASIC-Chip auch mit mindestens einem seriellen Hochgeschwindigkeitskommunikationskabel verbunden.
  • 26C veranschaulicht einen Supercomputer auf Rack-Ebene gemäß mindestens einer Ausführungsform. 26D veranschaulicht einen Supercomputer auf Gesamtsystemebene gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform werden unter Bezugnahme auf 26C und 26D zwischen Rack-Modulen in einem Rack und über Racks hinweg durch ein gesamtes System serielle optische Hochgeschwindigkeits- oder Kupferkabel (2626, 2628) verwendet, um ein skalierbares, möglicherweise unvollständiges Hypercube-Netzwerk zu realisieren. In mindestens einer Ausführungsform ist einer der FPGA/ASIC-Chips eines Beschleunigers über eine PCI-Express-Verbindung (2630) mit einem Host-System verbunden. In mindestens einer Ausführungsform umfasst das Host-System einen Host-Mikroprozessor (2634), auf dem ein Softwareteil einer Anwendung läuft, und einen Speicher, der aus einer oder mehreren Host-Speicher-DRAM-Einheiten (2632) besteht und mit dem Speicher auf einem Beschleuniger kohärent gehalten wird. In mindestens einer Ausführungsform kann das Host-System ein separates Modul auf einem der Racks sein oder kann in eines der Module eines Supercomputers integriert sein. In mindestens einer Ausführungsform stellt eine Cube-verbundene Zyklen-Topologie Kommunikationsverbindungen bereit, um ein Hypercube-Netzwerk für einen großen Supercomputer zu schaffen. In mindestens einer Ausführungsform kann eine kleine Gruppe von FPGA/ASIC-Chips auf einem Rack-Modul als ein einzelner Hypercube-Knoten fungieren, sodass eine Gesamtzahl von externen Verbindungen jeder Gruppe im Vergleich zu einem einzelnen Chip erhöht ist. In mindestens einer Ausführungsform enthält eine Gruppe die Chips A, B, C und D auf einem Rack-Modul mit internen breiten differentiellen Bussen, die A, B, C und D in einer Torus-Organisation verbinden. In mindestens einer Ausführungsform gibt es 12 serielle Kommunikationskabel, die ein Rack-Modul mit der Außenwelt verbinden. In mindestens einer Ausführungsform ist Chip A auf einem Rack-Modul mit den seriellen Kommunikationskabeln 0, 1, 2 verbunden. In mindestens einer Ausführungsform ist Chip B mit den Kabeln 3, 4, 5 verbunden. In mindestens einer Ausführungsform ist Chip C mit 6, 7, 8 verbunden. In mindestens einer Ausführungsform ist Chip D mit 9, 10, 11 verbunden. In mindestens einer Ausführungsform kann eine gesamte Gruppe {A, B, C, D}, die ein Rack-Modul bildet, einen Hypercube-Knoten innerhalb eines Supercomputersystems mit bis zu 212 = 4096 Rack-Modulen (16384 FPGA/ASIC-Chips) bilden. In mindestens einer Ausführungsform muss, damit Chip A eine Nachricht auf Verbindung 4 der Gruppe {A, B, C, D} nach außen senden kann, zuerst eine Nachricht mit einer integrierten differentiellen breiten Busverbindung an Chip B geroutet werden. In mindestens einer Ausführungsform muss eine Nachricht, die in einer Gruppe {A, B, C, D} auf Verbindung 4 ankommt (d. h. bei B ankommt), die für Chip A bestimmt ist, auch zuerst an einen korrekten Zielchip (A) innerhalb einer Gruppe {A, B, C, D} intern geroutet werden. In mindestens einer Ausführungsform können auch parallele Supercomputersysteme anderer Größen implementiert sein.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 26A-26D gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine in 26A-26D gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Unterstützung für die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine in 26A-26D gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine in 26A-26D gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine in 26A-26D gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine in 26A-26D gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine in 26A-26D verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • COMPUTERSYSTEME
  • 27 ist ein Blockdiagramm, das ein beispielhaftes Computersystem veranschaulicht, das ein System mit miteinander verbundenen Vorrichtungen und Komponenten, ein System-on-a-Chip (SOC) oder eine Kombination davon sein kann, das gemäß mindestens einer Ausführungsform einen Prozessor aufweist, der Ausführungseinheiten zur Ausführung einer Anweisung beinhaltet. In mindestens einer Ausführungsform kann das Computersystem 2700 ohne Einschränkung eine Komponente, wie etwa einen Prozessor 2702, beinhalten, um Ausführungseinheiten einschließlich Logik zur Durchführung von Algorithmen zur Verarbeitung von Daten gemäß der vorliegenden Offenbarung einzusetzen, wie etwa bei der hier beschriebenen Ausführungsform. In mindestens einer Ausführungsform kann das Computersystem 2700 Prozessoren beinhalten, wie z. B. die PENTIUM®-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 2700 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 Vorrichtungen wie Handheld-Vorrichtungen und eingebetteten Anwendungen verwendet werden. Einige Beispiele für tragbare Vorrichtungen sind Mobiltelefone, Internetprotokoll-Vorrichtungen, Digitalkameras, persönliche digitale Assistenten („PDAs“) und tragbare PCs. In mindestens einer Ausführungsform können eingebettete Anwendungen einen Mikrocontroller, einen digitalen Signalprozessor („DSP“), ein System auf einem Chip, Netzwerkcomputer („NetPCs“), Set-Top-Boxen, Netzwerk-Hubs, 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 2700 ohne Einschränkung einen Prozessor 2702 beinhalten, der ohne Einschränkung eine oder mehrere Ausführungseinheiten 2708 beinhalten kann, um Trainieren und/oder Inferenzieren eines maschinellen Lernmodells gemäß den in dieser Schrift beschriebenen Techniken durchzuführen. In mindestens einer Ausführungsform ist das Computersystem 2700 ein Einzelprozessor-Desktop- oder -Serversystem, aber in einer anderen Ausführungsform kann das Computersystem 2700 ein Multiprozessorsystem sein. In mindestens einer Ausführungsform kann der Prozessor 2702 ohne Einschränkung einen CISC-Mikroprozessor (Complex Instruction Set Computer), einen RISC-Mikroprozessor (Reduced Instruction Set Computing), einen VLIW-Mikroprozessor (Very Long Instruction Word), einen Prozessor, der eine Kombination von Anweisungssätzen implementiert, oder eine beliebige andere Vorrichtung, wie z. B. einen digitalen Signalprozessor, beinhalten. In mindestens einer Ausführungsform kann der Prozessor 2702 an einen Prozessorbus 2710 gekoppelt sein, der Datensignale zwischen dem Prozessor 2702 und anderen Komponenten im Computersystem 2700 übertragen kann.
  • In mindestens einer Ausführungsform kann der Prozessor 2702 ohne Einschränkung einen internen Level 1 („L1“) Cache-Speicher („Cache“) 2704 aufweisen. In mindestens einer Ausführungsform kann der Prozessor 2702 einen einzelnen internen Cache oder mehrere Ebenen von internem Cache aufweisen. In mindestens einer Ausführungsform kann sich der Cache-Speicher extern zu dem Prozessor 2702 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 2706 verschiedene Datentypen in verschiedenen Registern speichern, einschließlich, ohne Einschränkung, Ganzzahlregister, Gleitkommaregister, Statusregister und Anweisungszeigerregister.
  • In mindestens einer Ausführungsform befindet sich die Ausführungseinheit 2708, die ohne Einschränkung eine Logik zum Durchführen von Ganzzahl- und Gleitkommaoperationen beinhaltet, ebenfalls im Prozessor 2702. In mindestens einer Ausführungsform kann der Prozessor 2702 auch Festwertspeicher (read only memory - „ROM“) für Mikrocode („ucode“) beinhalten, der Mikrocode für bestimmte Makrobefehle speichert. In mindestens einer Ausführungsform kann die Ausführungseinheit 2708 Logik zum Handhaben eines gepackten Anweisungssatzes 2709 beinhalten. In mindestens einer Ausführungsform können durch das Vorweisen eines gepackten Anweisungssatzes 2709 in einem Anweisungssatz eines Mehrzweckprozessors zusammen mit einer zugehörigen Schaltung zur Ausführung von Anweisungen die von vielen Multimedia-Anwendungen verwendeten Operationen unter Verwendung gepackter Daten in einem Mehrzweckprozessor 2702 durchgeführt werden. In mindestens einer Ausführungsform können viele Multimedia-Anwendungen beschleunigt und effizienter ausgeführt werden, indem eine volle Breite des Datenbusses eines Prozessors 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 2708 auch in Mikrocontrollern, eingebetteten Prozessoren, Grafikvorrichtungen, DSPs und anderen Arten von Logikschaltungen verwendet werden. In mindestens einer Ausführungsform kann das Computersystem 2700 ohne Einschränkung einen Speicher 2720 beinhalten. In mindestens einer Ausführungsform kann der Speicher 2720 eine dynamische Random-Access-Memory- („DRAM“) Einrichtung, statische Random-Access-Memory-(„SRAM“) Vorrichtung, Flash-Speichereinrichtung oder eine andere Speichereinrichtung sein. In mindestens einer Ausführungsform kann der Speicher 2720 Anweisung(en) 2719 und/oder Daten 2721 speichern, die durch den Prozessor 2702 ausgeführt werden können.
  • In mindestens einer Ausführungsform kann ein Systemlogikchip an den Prozessorbus 2710 und den Speicher 2720 gekoppelt sein. In mindestens einer Ausführungsform kann ein Systemlogikchip ohne Einschränkung einen Speichersteuerungs-Hub („MCH“) 2716 beinhalten und kann der Prozessor 2702 mit dem MCH 2716 über den Prozessorbus 2710 kommunizieren. In mindestens einer Ausführungsform kann der MCH 2716 dem Speicher 2720 einen Speicherpfad 2718 mit hoher Bandbreite für die Anweisungs- und Datenspeicherung sowie für die Speicherung von Grafikbefehlen, Daten und Texturen bereitstellen. In mindestens einer Ausführungsform kann der MCH 2716 Datensignale zwischen dem Prozessor 2702, dem Speicher 2720 und anderen Komponenten im Computersystem 2700 leiten und Datensignale zwischen dem Prozessorbus 2710, dem Speicher 2720 und einer System-E/A-Schnittstelle 2722 überbrücken. In mindestens einer Ausführungsform kann ein Systemlogikchip einen Grafikanschluss zum Koppeln an eine Grafiksteuerung bereitstellen. In mindestens einer Ausführungsform kann der MCH 2716 über einen Speicherweg 2718 mit hoher Bandbreite an den Speicher 2720 gekoppelt sein und kann eine Grafik-/Videokarte 2712 über eine Zusammenschaltung eines beschleunigten Grafikanschlusses (Accelerated Graphics Port - „AGP“) 2714 an den MCH 2716 gekoppelt sein.
  • In mindestens einer Ausführungsform kann das Computersystem 2700 die System-E/A-Schnittstelle 2722 als einen proprietären Hub-Schnittstellenbus verwenden, um den MCH 2716 mit dem E/A-Steuerungs-Hub (I/O controller hub - „ICH“) 2730 zu koppeln. In mindestens einer Ausführungsform kann der ICH 2730 direkte Verbindungen zu einigen E/A-Vorrichtungen über einen lokalen E/A-Bus bereitstellen. In mindestens einer Ausführungsform kann ein lokaler E/A-Bus ohne Einschränkung einen Hochgeschwindigkeits-E/A-Bus zum Verbinden von Peripheriegeräten mit dem Speicher 2720, einem Chipsatz und dem Prozessor 2702 beinhalten. Beispiele können ohne Einschränkung eine Audiosteuerung 2729, einen Firmware-Hub („Flash-BIOS“) 2728, einen drahtlosen Sendeempfänger 2726, einen Datenspeicher 2724, eine ältere E/A-Steuerung 2723, die Benutzereingabe- und Tastaturschnittstellen 2725 enthält, einen seriellen Erweiterungsanschluss 2727, wie etwa einen Universal-Serial-Bus(„USB“)-Anschluss, und eine Netzwerksteuerung 2734 beinhalten. In mindestens einer Ausführungsform kann der Datenspeicher 2724 ein Festplattenlaufwerk, ein Diskettenlaufwerk, eine CD-ROM-Vorrichtung, eine Flash-Speichervorrichtung oder eine andere Massenspeichervorrichtung umfassen.
  • In mindestens einer Ausführungsform veranschaulicht 27 ein System, das miteinander verbundene Hardware-Vorrichtungen oder „Chips“ beinhaltet, während in anderen Ausführungsformen 27 ein beispielhaftes SoC veranschaulichen kann. In mindestens einer Ausführungsform können die in 27 veranschaulichten Vorrichtungen mit proprietären Zusammenschaltungen, standardisierten Zusammenschaltungen (z. B. PCIe) oder einer Kombination davon verbunden sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten des Computersystems 2700 unter Verwendung von Compute-Express-Link (CXL)-Zusammenschaltungen verbunden.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 2315 im System von 27 für Inferenz- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, neuronalen Netzwerkfunktionen und/oder -architekturen oder hier beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet werden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 27 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 27 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 27 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 27 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 27 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 27 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 27 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 28 ist ein Blockdiagramm, das eine elektronische Vorrichtung 2800 zur Nutzung eines Prozessors 2810 gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform kann die elektronische Vorrichtung 2800 beispielsweise und ohne Einschränkung ein Notebook, ein Tower-Server, ein Rack-Server, ein Blade-Server, ein Laptop, ein Desktop-Computer, ein Tablet, eine mobile Vorrichtung, ein Telefon, ein eingebetteter Computer oder eine beliebige andere geeignete elektronische Vorrichtung sein.
  • In mindestens einer Ausführungsform kann die elektronische Vorrichtung 2800 ohne Einschränkung den Prozessor 2810 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 2810 unter Verwendung eines Busses oder einer Schnittstelle gekoppelt, wie etwa eines I2C-Busses, eines Systemverwaltungsbusses („SMBus“), eines Low-Pin-Count-(LPC-)Busses, einer seriellen Peripherieschnittstelle („SPI“), eines High-Definition-Audio-(„HDA“-)Busses, eines Serial-Advance-Technology-Attachment-(„SATA“-)Busses, eines Universal Serial Bus („USB“) (Version 1, 2, 3 usw.) oder eines Universal-Asynchronous-Receiver/Transmitter-(„UART“-)Busses. In mindestens einer Ausführungsform veranschaulicht 28 ein System, das miteinander verbundene Hardware-Vorrichtungen oder „Chips“ beinhaltet, während in anderen Ausführungsformen 28 ein beispielhaftes SoC veranschaulichen kann. In mindestens einer Ausführungsform können die in 28 veranschaulichten Vorrichtungen mit proprietären Verschaltungen, standardisierten Verschaltungen (z. B. PCIe) oder einer Kombination davon verbunden sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten aus 28 unter Verwendung von Compute-Express-Link(CXL)-Zusammenschaltungen verbunden.
  • In mindestens einer Ausführungsform kann 28 beinhalten: eine Anzeige 2824, einen Berührungsbildschirm 2825, ein Touchpad 2830, eine Nahfeldkommunikationseinheit („NFC“) 2845, einen Sensor-Hub 2840, einen Wärmesensor 2846, einen Express-Chipsatz („EC“) 2835, ein Trusted-Platform-Modul („TPM“) 2838, BIOS-/Firmware-/Flash-Speicher („BIOS, FW Flash“) 2822, einen DSP 2860, ein Treiber 2820, wie etwa ein Festkörperlaufwerk (Solid State Disk - „SSD“) oder ein Festplattenlaufwerk (Hard Disk Drive -„HDD“), eine drahtlose lokale Netzwerkeinheit (Wireless Local Area Network - „WLAN“) 2850, eine Bluetooth-Einheit 2852, eine drahtlose Weitbereichsnetzwerkeinheit (Wireless Wide Area Network - „WWAN“) 2856, eine globales Positionsbestimmungssystem(GPS)-Einheit 2855, eine Kamera („USB 3.0-Kamera“) 2854, wie etwa eine USB 3.0-Kamera, und/oder eine Speichereinheit mit doppelter Datenrate bei niedriger Leistung (Low Power Double Data Rate - „LPDDR“) („LPDDR3“) 2815, die z. B. im LPDDR3-Standard implementiert ist. Diese Komponenten können jeweils auf eine beliebige geeignete Weise implementiert sein.
  • In mindestens einer Ausführungsform können andere Komponenten durch hierin beschriebene Komponenten kommunikativ an den Prozessor 2810 gekoppelt sein. In mindestens einer Ausführungsform können ein Beschleunigungsmesser 2841, ein Umgebungslichtsensor (ambient light sensor - „ALS“) 2842, ein Kompass 2843 und ein Gyroskop 2844 kommunikativ an den Sensor-Hub 2840 gekoppelt sein. In mindestens einer Ausführungsform können ein Wärmesensor 2839, ein Lüfter 2837, eine Tastatur 2836 und ein Touchpad 2830 kommunikativ an den EC 2835 gekoppelt sein. In mindestens einer Ausführungsform können ein Lautsprecher 2863, Kopfhörer 2864 und ein Mikrofon („Mikro“) 2865 kommunikativ an eine Audioeinheit („Audiocodec und Klasse-D-Verst.“) 2862 gekoppelt sein, die wiederum kommunikativ an den DSP 2860 gekoppelt sein kann. In mindestens einer Ausführungsform kann die Audioeinheit 2862 beispielsweise und ohne Einschränkung einen Audiocodierer/-decoder („Codec“) und einen Verstärker der Klasse D beinhalten. In mindestens einer Ausführungsform kann eine SIM-Karte („SIM“) 2857 kommunikativ an die WWAN-Einheit 2856 gekoppelt sein. In mindestens einer Ausführungsform können Komponenten, wie etwa die WLAN-Einheit 2850 und die Bluetooth-Einheit 2852 sowie die WWAN-Einheit 2856, in einem Next-Generation-Form-Factor („NGFF“) implementiert sein.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 2315 im System von 28 für Inferenz- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, neuronalen Netzwerkfunktionen und/oder -architekturen oder hier beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet werden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 28 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 28 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 28 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 28 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 28 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 28 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 28 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 29 veranschaulicht ein Computersystem 2900 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist das Computersystem 2900 dazu konfiguriert, verschiedene Prozesse und Verfahren zu implementieren, die in dieser Offenbarung beschrieben sind.
  • In mindestens einer Ausführungsform umfasst das Computersystem 2900, ohne Einschränkung, mindestens eine zentrale Verarbeitungseinheit („CPU“) 2902, die mit einem Kommunikationsbus 2910 verbunden ist, der unter Verwendung eines beliebigen geeigneten Protokolls implementiert ist, wie z. B. PCI („Peripheral Component Interconnect“), Peripheral Component Interconnect Express („PCI-Express“), AGP („Accelerated Graphics Port“), HyperTransport oder ein beliebiges anderes/beliebige andere Bus- oder Punkt-zu-Punkt-Kommunikationsprotokoll(e). In mindestens einer Ausführungsform beinhaltet das Computersystem 2900 ohne Einschränkung einen Hauptspeicher 2904 und Steuerlogik (z. B. implementiert als Hardware, Software oder eine Kombination davon) und Daten werden in dem Hauptspeicher 2904 gespeichert, der die Form eines Direktzugriffsspeichers („RAM“) annehmen kann. In mindestens einer Ausführungsform stellt ein Netzschnittstellen-Teilsystem („Netzschnittstelle“) 2922 eine Schnittstelle zu anderen Rechenvorrichtungen und Netzen bereit, um Daten von anderen Systemen mit dem Computersystem 2900 zu empfangen und an diese zu übertragen.
  • In mindestens einer Ausführungsform weist das Computersystem 2900 ohne Einschränkung Eingabeeinrichtungen 2908, ein Parallelverarbeitungssystem 2912 und Anzeigeeinrichtungen 2906 auf, die unter Verwendung einer herkömmlichen Kathodenstrahlröhre („CRT“), einer Flüssigkristallanzeige („LCD“), einer lichtemittierenden Diode („LED“), einer Plasmaanzeige oder anderer geeigneter Anzeigetechnologien implementiert sein können. In mindestens einer Ausführungsform werden Benutzereingaben von Eingabeeinrichtungen 2908, 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 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 2315 im System von 29 für Inferenz- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, neuronalen Netzwerkfunktionen und/oder -architekturen oder hier beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet werden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 29 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 29 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 29 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 29 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 29 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 29 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 29 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 30 veranschaulicht ein Computersystem 3000 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform weist das Computersystem 3000, ohne Einschränkung, einen Computer 3010 und einen USB-Stick 3020 auf. In mindestens einer Ausführungsform kann der Computer 3010 ohne Einschränkung eine beliebige Anzahl und eine beliebige Art von Prozessor(en) (nicht gezeigt) und einen Speicher (nicht gezeigt) beinhalten. Bei mindestens einer Ausführungsform beinhaltet der Computer 3010, ohne Einschränkung, einen Server, eine Cloud-Instanz, einen Laptop und einen Desktop-Computer.
  • In mindestens einer Ausführungsform beinhaltet der USB-Stick 3020 ohne Einschränkung eine Verarbeitungseinheit 3030, eine USB-Schnittstelle 3040 und eine USB-Schnittstellenlogik 3050. In mindestens einer Ausführungsform kann die Verarbeitungseinheit 3030 ein(e) beliebige(s) Anweisungsausführungssystem, -einrichtung oder -vorrichtung sein, das/die in der Lage ist, Anweisungen auszuführen. In mindestens einer Ausführungsform kann die Verarbeitungseinheit 3030 ohne Einschränkung eine beliebige Anzahl und eine beliebige Art von Verarbeitungskernen (nicht gezeigt) beinhalten. In mindestens einer Ausführungsform umfasst die Verarbeitungseinheit 3030 eine anwendungsspezifische integrierte Schaltung („ASIC“), die für die Ausführung beliebiger Mengen und Arten von Vorgängen im Zusammenhang mit maschinellem Lernen optimiert ist. Zum Beispiel ist in mindestens einer Ausführungsform die Verarbeitungseinheit 3030 eine Tensor-Verarbeitungseinheit („TPC“), die zum Durchführen von Inferenzoperationen des maschinellen Lernens optimiert ist. In mindestens einer Ausführungsform ist die Verarbeitungseinheit 3030 eine Sichtverarbeitungseinheit („VPU“), die für die Ausführung von Ableitungsvorgängen des maschinellen Sehens und des maschinellen Lernens optimiert ist.
  • In mindestens einer Ausführungsform kann die USB-Schnittstelle 3040 eine beliebige Art von USB-Stecker oder USB-Buchse sein. In mindestens einer Ausführungsform ist die USB-Schnittstelle 3040 beispielsweise eine USB 3.0-Typ-C-Buchse für Daten und Strom. In mindestens einer Ausführungsform ist die USB-Schnittstelle 3040 ein USB-3.0-Typ-A-Stecker. In mindestens einer Ausführungsform kann die USB-Schnittstellenlogik 3050 eine beliebige Menge und Art von Logik aufweisen, die es der Verarbeitungseinheit 3030 ermöglicht, sich über den USB-Anschluss 3040 mit einer Einrichtung (z. B. einem Computer 3010) zu verbinden.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 2315 im System von 30 für Inferenz- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, neuronalen Netzwerkfunktionen und/oder -architekturen oder hier beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet werden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 30 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 30 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 30 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 30 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 30 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 30 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 30 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 31A veranschaulicht eine beispielhafte Architektur, in der eine Vielzahl von GPUs 3110(1)-3110(N) über Hochgeschwindigkeitsverknüpfungen 3140(1)-3140(N) (z. B. Busse, Punkt-zu-Punkt-Verbindungen usw.) kommunikativ an eine Vielzahl von Mehrkernprozessoren 3105(1)-3105(M) gekoppelt ist. In mindestens einer Ausführungsform unterstützen die Hochgeschwindigkeitsverbindungen 3140(1)-3140(N) einen Kommunikationsdurchsatz von 4 GB/s, 30 GB/s, 80 GB/s oder mehr. In mindestens einer Ausführungsform können verschiedene Zusammenschaltungsprotokolle verwendet werden, einschließlich, aber nicht beschränkt auf, PCIe 4.0 oder 5.0 und NVLink 2.0. In verschiedenen Figuren stellen „N“ und „M“ positive ganze Zahlen dar, deren Werte von Figur zu Figur unterschiedlich sein können.
  • Zusätzlich und in mindestens einer Ausführungsform sind zwei oder mehr der GPUs 3110 über Hochgeschwindigkeitsverknüpfungen 3129(1)-3129(2) miteinander verbunden, die unter Verwendung ähnlicher oder anderer Protokolle/Verknüpfungen implementiert sein können als denjenigen, die für die Hochgeschwindigkeitsverknüpfungen 3140(1)-3140(N) verwendet werden. In ähnlicher Weise können zwei oder mehr Mehrkern-Prozessoren 3105 über eine Hochgeschwindigkeitsverbindung 3128 verbunden sein, bei der es sich um symmetrische Multiprozessorbusse (SMP) handeln kann, die mit 20 GB/s, 30 GB/s, 120 GB/s oder mehr arbeiten. Alternativ kann die gesamte Kommunikation zwischen den verschiedenen in 31A gezeigten Systemkomponenten unter Verwendung von ähnlichen Protokollen/Verknüpfungen erzielt werden (z. B. über eine gemeinsame Zusammenschaltungsstruktur).
  • In mindestens einer Ausführungsform ist jeder Mehrkernprozessor 3105 jeweils über Speicherzusammenschaltungen 3101(1)-3101(M) kommunikativ an einen Prozessorspeicher 3126(1)-3126(M) gekoppelt und jede GPU 3110(1)-3110(N) jeweils über GPU-Speicherzusammenschaltungen 3120(1)-3120(N) kommunikativ an den GPU-Speicher 3150(1)-3150(N) gekoppelt. In mindestens einer Ausführungsform können die Speicherverbindungen 3126 und 3150 ähnliche oder unterschiedliche Speicherzugriffstechnologien verwenden. Beispielsweise können die Prozessorspeicher 3101(1)-3101 (M) und die GPU-Speicher 3120 flüchtige Speicher wie dynamische Direktzugriffsspeicher (DRAMs) (einschließlich gestapelter DRAMs), Grafik-DDR-SDRAM (GDDR) (z. B. GDDR5, GDDR6) oder High Bandwidth Memory (HBM) aufweisen und/oder nichtflüchtige Speicher wie 3D XPoint oder Nano-Ram sein. In mindestens einer Ausführungsform kann ein Abschnitt der Prozessorspeicher 3101 ein flüchtiger Speicher und ein anderer Abschnitt ein nichtflüchtiger Speicher sein (z. B. unter Verwendung einer zweistufigen Speicherhierarchie (2LM)).
  • Wie hierin beschrieben, können verschiedene Mehrkernprozessoren 3105 und GPUs 3110 zwar physisch an einen konkreten Speicher 3101 bzw. 3120 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. Beispielsweise können die Prozessorspeicher 3101(1)-3101 (M) jeweils 64 GB Systemadressraum umfassen, und die GPU-Speicher 3120(1)-3120(N) können jeweils 32 GB Systemadressraum umfassen, was in diesem Beispiel zu einem adressierbaren Gesamtspeicher von 256 GB führt, wenn M=2 und N=4. Andere Werte für N und M sind möglich.
  • 31B veranschaulicht zusätzliche Details für eine Zusammenschaltung zwischen einem Mehrkernprozessor 3107 und einem Grafikbeschleunigungsmodul 3146 gemäß einer beispielhaften Ausführungsform. In mindestens einer Ausführungsform kann das Grafikbeschleunigungsmodul 3146 einen oder mehrere GPU-Chips aufweisen, die auf einer Linecard integriert sind, die über eine Hochgeschwindigkeitsverbindung 3140 (z. B. einen PCle-Bus, NVLink, usw.) mit dem Prozessor 3107 verbunden ist. In mindestens einer Ausführungsform kann alternativ das Grafikbeschleunigungsmodul 3146 auf einem Gehäuse oder Chip mit dem Prozessor 3107 integriert sein.
  • In mindestens einer Ausführungsform weist der Prozessor 3107 eine Vielzahl von Kernen 3160A-3160D auf, jeder mit einem Translations-Lookaside-Puffer („TLB“) 3161A-3161D und einem oder mehreren Caches 3162A-3162D. In mindestens einer Ausführungsform können die Kerne 3160A-3160D verschiedene andere Komponenten zur Ausführung von Befehlen und Verarbeitung von Daten aufweisen, die nicht dargestellt sind. In mindestens einer Ausführungsform können die Caches 3162A-3162D Level-1- (L1) und Level-2- (L2) Caches umfassen. Zusätzlich können ein oder mehrere gemeinsam genutzte Caches 3156 in den Caches 3162A-3162D vorhanden sein, die von Gruppen von Kernen 3160A-3160D gemeinsam genutzt werden. Eine Ausführungsform des Prozessors 3107 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 3107 und das Grafikbeschleunigungsmodul 3146 mit dem Systemspeicher 3114 verbunden, der die Prozessorspeicher 3101(1)-3101(M) aus 31A beinhalten kann.
  • In mindestens einer Ausführungsform wird die Kohärenz von Daten und Befehlen, die in verschiedenen Caches 3162A-3162D, 3156 und im Systemspeicher 3114 gespeichert sind, wird durch Kommunikation zwischen den Kernen über einen Kohärenzbus 3164 aufrechterhalten. Beispielsweise kann in mindestens einer Ausführungsform jeder Cache eine Cache-Kohärenzlogik/-schaltung aufweisen, die mit ihm verbunden ist, um als Reaktion auf erkannte Lese- oder Schreibvorgänge in bestimmten Cache-Zeilen über den Kohärenzbus 3164 zu kommunizieren. In mindestens einer Ausführungsform wird ein Cache-Snooping-Protokoll über den Kohärenzbus 3164 implementiert, um Cache-Zugriffe zu kontrollieren.
  • In mindestens einer Ausführungsform koppelt eine Proxy-Schaltung 3125 das Grafikbeschleunigungsmodul 3146 kommunikativ an den Kohärenzbus 3164, so dass das Grafikbeschleunigungsmodul 3146 an einem Cache-Kohärenzprotokoll als Peer der Kerne 3160A-3160D teilnehmen kann. In mindestens einer Ausführungsform sorgt insbesondere eine Schnittstelle 3135 für die Konnektivität mit der Proxy-Schaltung 3125 über die Hochgeschwindigkeitsverbindung 3140, und eine Schnittstelle 3137 verbindet das Grafikbeschleunigungsmodul 3146 mit der Hochgeschwindigkeitsverbindung 3140.
  • In mindestens einer Ausführungsform stellt eine Beschleuniger-Integrationsschaltung 3136 Cache-Verwaltungs-, Speicherzugriffs-, Kontextverwaltungs- und Unterbrechungsverwaltungsdienste im Auftrag einer Vielzahl von Grafikverarbeitungsmaschinen 3131(1)-3131(N) des Grafikbeschleunigungsmoduls 3146 bereit. In mindestens einer Ausführungsform können die Grafikverarbeitungsmaschinen 3131(1)-3131(N) können jeweils eine separate Grafikverarbeitungseinheit (GPU) umfassen. In mindestens einer Ausführungsform können die Grafikverarbeitungsmaschinen 3131(1)-3131(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 3146 eine GPU mit einer Vielzahl von Grafikverarbeitungsmaschinen 3131(1)-3131(N) sein, oder die Grafikverarbeitungsmaschinen 3131(1)-3131(N) können einzelne GPUs sein, die in einem gemeinsamen Gehäuse, einer Linecard oder einem Chip integriert sind.
  • In mindestens einer Ausführungsform beinhaltet die Beschleuniger-Integrationsschaltung 3136 eine Speicherverwaltungseinheit (MMU) 3139 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 3114. Bei mindestens einer Ausführungsform kann die MMU 3139 auch einen Translations-Lookaside-Buffer (TLB) (nicht gezeigt) aufweisen, um Übersetzungen von virtuellen/effektiven in physische/reale Adressen zwischenzuspeichern. In mindestens einer Ausführungsform können in einem Cache 3138 Befehle und Daten für den effizienten Zugriff durch die Grafikverabeitungsmaschinen 3131(1)-3131(N) gespeichert werden. In mindestens einer Ausführungsform werden die im Cache 3138 und in den Grafikspeichern 3133(1)-3133(M) gespeicherten Daten mit den Kern-Caches 3162A-3162D, 3156 und dem Systemspeicher 3114 kohärent gehalten, wobei möglicherweise eine Abrufeinheit 3144 eingesetzt wird. Wie bereits erwähnt, kann dies über eine Proxy-Schaltung 3125 im Namen des Caches 3138 und der Speicher 3133(1)-3133(M) erfolgen (z. B. Senden von Aktualisierungen an den Cache 3138 im Zusammenhang mit Änderungen/Zugriffen auf Cache-Zeilen in den Prozessor-Caches 3162A-3162D, 3156 und Empfangen von Aktualisierungen vom Cache 3138).
  • In mindestens einer Ausführungsform speichert ein Satz von Registern 3145 Kontextdaten für Threads, die durch die Grafikverarbeitungsmaschinen 3131(1)-3131(N) ausgeführt werden, und eine Kontextverwaltungsschaltung 3148 verwaltet Thread-Kontexte. Zum Beispiel kann die Kontextverwaltungsschaltung 3148 Sicherungs- und Wiederherstellungsoperationen durchführen, um Kontexte verschiedener Threads während Kontextumschaltungen zu sichern und wiederherzustellen (z. B., wenn ein erster Thread gesichert und ein zweiter Thread gespeichert wird, damit ein zweiter Thread durch eine Grafikverarbeitungsmaschine ausgeführt werden kann). Zum Beispiel kann die Kontextverwaltungsschaltung 3148 bei einer Kontextumschaltung derzeitige Registerwerte in einer bezeichneten Region in dem Speicher speichern (z. B. identifiziert durch einen Kontextzeiger). Sie kann dann die Registerwerte wiederherstellen, wenn sie zu einem Kontext zurückkehrt. Bei mindestens einer Ausführungsform empfängt und verarbeitet eine Unterbrechungsverwaltungsschaltung 3147 Unterbrechungen, die von Systemvorrichtungen empfangen werden.
  • In mindestens einer Ausführungsform werden virtuelle/effektive Adressen von einer Grafikverarbeitungsmaschine 3131 durch die MMU 3139 in reale/physische Adressen im Systemspeicher 3114 übersetzt. In mindestens einer Ausführungsform unterstützt der Beschleuniger-Integrationsschaltung 3136 mehrere (z. B. 4, 8, 16) Grafikbeschleunigermodule 3146 und/oder andere Beschleunigervorrichtungen. In mindestens einer Ausführungsform kann das Grafikbeschleunigermodul 3146 für eine einzelne Anwendung bestimmt sein, die auf dem Prozessor 3107 ausgeführt wird, oder es kann von mehreren Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform wird eine virtualisierte Grafikausführungsumgebung vorgestellt, in der die Ressourcen der GPUen 3131(1)-3131(N) von 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 dient die Beschleunigerintegrationsschaltung 3136 als eine Brücke zu einem System für das Grafikbeschleunigungsmodul 3146 und stellt Adressenübersetzungs- und Systemspeicher-Zwischenspeicherdienste bereit. Darüber hinaus kann in mindestens einer Ausführungsform die Beschleuniger-Integrationsschaltung 3136 Virtualisierungsfunktionen für einen Host-Prozessor bereitstellen, um die Virtualisierung der Grafikverarbeitungsmaschinen 3131(1)-3131(N), Interrupts und die Speicherverwaltung zu verwalten.
  • Da in mindestens einer Ausführungsform die Hardware-Ressourcen der Grafikverarbeitungsmaschinen 3131(1)-3131(N) explizit auf einen realen Adressraum abgebildet sind, den der Host-Prozessor 3107 sieht, kann ein beliebiger Host-Prozessor diese Ressourcen direkt unter Verwendung eines effektiven Adresswerts adressieren. Eine Funktion der Beschleuniger-Integrationsschaltung 3136 ist in mindestens einer Ausführungsform die physische Trennung der Grafikverarbeitungsmaschinen 3131(1)-3131(N), so dass sie für ein System als unabhängige Einheiten erscheinen.
  • In mindestens einer Ausführungsform sind ein oder mehrere Grafikspeicher 3133(1)-3133(M) jeweils an jede der Grafikverarbeitungsmaschinen 3131(1)-3131(N) gekoppelt und es gilt N=M. In mindestens einer Ausführungsform speichern die Grafikspeicher 3133(1)-3133(M) Anweisungen und Daten, die von jeder der Grafikverarbeitungsmaschinen 3131(1)-3131(N) verarbeitet werden. In mindestens einer Ausführungsform können die Grafikspeicher 3133(1)-3133(M) flüchtige Speicher wie DRAMs (einschließlich gestapelter DRAMs), GDDR-Speicher (z. B. GDDR5, GDDR6) oder HBM aufweisen und/oder können nichtflüchtige Speicher wie 3D XPoint oder Nano-Ram sein.
  • In mindestens einer Ausführungsform können zur Verringerung des Datenverkehrs über die Hochgeschwindigkeitsverbindung 3140 Zuordnungs-Verfahren bzw. Biasing-Verfahren verwendet werden, um sicherzustellen, dass die in den Grafikspeichern 3133(1)-3133(M) gespeicherten Daten Daten sind, die am häufigsten von den Grafikverarbeitungsmaschinen 3131(1)-3131(N) verwendet werden und vorzugsweise nicht von den Kernen 3160A-3160D (zumindest nicht häufig) verwendet werden. In ähnlicher Weise versucht in mindestens einer Ausführungsform ein Zuordnungs-Mechanismus bzw. Biasing-Mechanismus, Daten, die von Kernen (und vorzugsweise nicht von den Grafikverarbeitungsmaschinen 3131(1)-3131(N)) benötigt werden, in den Caches 3162A-3162D, 3156 und im Systemspeicher 3114 zu halten.
  • 31C veranschaulicht eine weitere beispielhafte Ausführungsform, in der die Beschleunigerintegrationsschaltung 3136 in den Prozessor 3107 integriert ist. In dieser Ausführungsform kommunizieren die GPUen 3131(1)-3131(N) direkt über die Hochgeschwindigkeitsverbindung 3140 mit der Beschleuniger-Integrationsschaltung 3136 über die Schnittstelle 3137 und die Schnittstelle 3135 (die wiederum jede Form von Bus oder Schnittstellenprotokoll verwenden kann). In mindestens einer Ausführungsform kann die Beschleuniger-Integrationsschaltung 3136 ähnliche Operationen wie in 31B beschrieben durchführen, jedoch möglicherweise mit einem höheren Durchsatz, da sie sich in unmittelbarer Nähe zum Kohärenzbus 3164 und den Caches 3162A-3162D, 3156 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 3136 gesteuert werden, und Programmiermodelle, die vom Grafikbeschleunigungsmodul 3146 gesteuert werden.
  • In mindestens einer Ausführungsform sind die Grafikverarbeitungsmaschinen 3131(1)-3131(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 Grafikverarbeitungsmaschinen 3131(1)-3131(N) weiterleiten, wodurch eine Virtualisierung innerhalb einer VM/Partition ermöglicht wird.
  • In mindestens einer Ausführungsform können die Grafikverarbeitungsmaschinen 3131(1)-3131(N) von mehreren VM-/Anwendungspartitionen gemeinsam genutzt werden. In mindestens einer Ausführungsform können gemeinsam genutzte Modelle einen Systemhypervisor verwenden, um die Grafikverarbeitungsmaschinen 3131(1)-3131(N) zu virtualisieren und den Zugriff durch jedes Betriebssystem zu ermöglichen. Bei Systemen mit einer einzigen Partition ohne Hypervisor gehören die Grafikverarbeitungsmaschinen 3131(1)-3131(N) zu einem Betriebssystem. In mindestens einer Ausführungsform kann ein Betriebssystem die Grafikverarbeitungsmaschinen 3131(1)-3131(N) virtualisieren, um jedem Prozess oder jeder Anwendung Zugriff zu gewähren.
  • In mindestens einer Ausführungsform wählt das Grafikbeschleunigungsmodul 3146 oder eine einzelne Grafikverarbeitungsmaschine 3131(1)-3131(N) ein Prozesselement unter Verwendung eines Prozessidentifikators aus. In mindestens einer Ausführungsform sind die Prozesselemente im Systemspeicher 3114 gespeichert und können unter Verwendung der hierin beschriebenen Technik zur Übersetzung von effektiven Adressen in reale Adressen adressiert werden. In mindestens einer Ausführungsform kann ein Prozesshandle ein implementierungsspezifischer Wert sein, der einem Host-Prozess zur Verfügung gestellt wird, wenn er seinen Kontext bei der Grafikverarbeitungsmaschine 3131(1)-3131(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 Versatz eines Prozesselements innerhalb einer verknüpften Prozesselementliste sein.
  • 31D veranschaulicht eine beispielhafte Beschleunigerintegrations-Slice 3190. In mindestens einer Ausführungsform umfasst ein „Slice“ einen spezifizierten Abschnitt der Verarbeitungsressourcen der Beschleuniger-Integrationsschaltung 3136. In mindestens einer Ausführungsform ist eine Anwendung ein effektiver Adressraum 3182 innerhalb des Systemspeichers 3114, der Prozesselemente 3183 speichert. In mindestens einer Ausführungsform werden Prozesselemente 3183 als Reaktion auf GPU-Aufrufe 3181 von Anwendungen 3180, die auf dem Prozessor 3107 ausgeführt werden, gespeichert. In mindestens einer Ausführungsform enthält ein Prozesselement 3183 den Prozessstatus für die entsprechende Anwendung 3180. In mindestens einer Ausführungsform kann ein in dem Prozesselement 3183 enthaltener Arbeitsdeskriptor (WD) 3184 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 3184 ein Zeiger auf eine Aufgabenanforderungswarteschlange im effektiven Adressraum 3182 einer Anwendung. In mindestens einer Ausführungsform wird die Beschleunigerintegrations-Slice 3190 auch als „Render-Slice“ bezeichnet, wobei die Render-Slice einen oder mehrere Kerne oder „Verarbeitungskerne“ umfasst, um Upsampling- oder Upscaling-Operationen auszuführen (z. B. Upsampling eines Bildes oder Rahmens mit niedrigerer Auflösung zu einem Bild oder Rahmen mit hoher Auflösung oder höherer Auflösung). In mindestens einer Ausführungsform umfasst die Beschleunigerintegrations-Slice 3190 eine oder mehrere Raytracing-Einheiten, L1-Caches, L2-Caches. In mindestens einer Ausführungsform umfasst die Beschleunigerintegrations-Slice 3190 einen oder mehrere Kerne, wobei jeder dieser Kerne eine oder mehrere Vektormaschinen umfasst, die im Rahmen der Ausführung von Operationen Vektorwerte berechnen.
  • In mindestens einer Ausführungsform können das Grafikbeschleunigungsmodul 3146 und/oder die einzelnen Grafikverarbeitungsmaschinen 3131(1)-3131(N) von allen oder einer Teilmenge der Prozesse in einem System gemeinsam genutzt werden. In mindestens einer Ausführungsform kann eine Infrastruktur zum Einrichten der Prozessstatus und zum Senden des WD 3184 an das Grafikbeschleunigungsmodul 3146 zum Starten einer Aufgabe in einer virtualisierten Umgebung beinhaltet sein.
  • Bei mindestens einer Ausführungsform ist ein Programmiermodell für dedizierte Prozesse umsetzungsspezifisch. In mindestens einer Ausführungsform besitzt in diesem Modell ein einzelner Prozess das Grafikbeschleunigungsmodul 3146 oder eine einzelne Grafikverarbeitungsmaschine 3131. Wenn das Grafikbeschleunigungsmodul 3146 in mindestens einer Ausführungsform einem einzelnen Prozess gehört, initialisiert ein Hypervisor die Beschleuniger-Integrationsschaltung 3136 für eine besitzende Partition, und ein Betriebssystem initialisiert die Beschleuniger-Integrationsschaltung 3136 für einen besitzenden Prozess, wenn das Grafikbeschleunigungsmodul 3146 zugewiesen wird.
  • In mindestens einer Ausführungsform ruft im Betrieb eine WD-Abrufeinheit 3191 in der Beschleunigerintegrations-Slice 3190 den nächsten WD 3184 ab, der eine Angabe der Arbeit beinhaltet, die durch eine oder mehrere Grafikverarbeitungsmaschine des Grafikbeschleunigungsmoduls 3146 zu erledigen ist. In mindestens einer Ausführungsform können die Daten aus dem WD 3184 in Registern 3145 gespeichert und von der MMU 3139, der Unterbrechungsverwaltungsschaltung 3147 und/oder der Kontextverwaltungsschaltung 3148 verwendet werden, wie es veranschaulicht ist. Eine Ausführungsform der MMU 3139 beinhaltet beispielsweise eine Segment-/Seitenlaufschaltung für den Zugriff auf Segment-/Seitentabellen 3186 innerhalb des virtuellen Adressraums 3185 des Betriebssystems. Die Unterbrechungsverwaltungsschaltung 3147 kann in mindestens einer Ausführungsform vom Grafikbeschleunigungsmodul 3146 empfangene Unterbrechungsereignisse 3192 verarbeiten. Bei der Durchführung von Grafikoperationen wird in mindestens einer Ausführungsform eine effektive Adresse 3193, die von einer Grafikverarbeitungsmaschine 3131(1)-3131(N) erzeugt wird, von der MMU 3139 in eine reale Adresse übersetzt.
  • In mindestens einer Ausführungsform werden Register 3145 für jede Grafikverarbeitungsmaschine 3131(1)-3131(N) und/oder Grafikbeschleunigungsmodul 3146 dupliziert und können durch einen Hypervisor oder ein Betriebssystem initialisiert werden. In mindestens einer Ausführungsform kann jedes dieser duplizierten Register in einem Beschleunigerintegrations-Slice 3190 beinhaltet sein. Beispielhafte Register, die durch einen Hypervisor initialisiert werden können, sind in Tabelle 1 gezeigt. Tabelle 1 - Durch Hypervisor initialisierte Register
    Register Nr. Beschreibung
    1 Slice-Steuerregister
    2 Reale Adresse (RA) Geplante Prozesse Bereich Zeiger
    3 Autoritätsmasken-Überschreibungsregister
    4 Versatz der Unterbrechungsvektor-Tabelle
    5 Einschränkung der Unterbrechungsvektor-Tabelle
    6 Zustandsregister
    7 ID der logischen Partition
    8 Reale Adresse (RA) des Hypervisor Beschleuniger Auslastungs-Datensatz-Zeiger
    9 Speicherbeschreibungsregister
  • Beispiele für Register, die von einem Betriebssystem initialisiert werden können, sind in Tabelle 2 aufgeführt. Tabelle 2 - Durch Betriebssystem initialisierte Register
    Register Nr. Beschreibung
    1 Prozess- und Thread-Identifizierung
    2 Effektive Adresse (EA) Kontext Speichern/Wiederherstellen Zeiger
    3 Virtuelle Adresse (VA) Beschleuniger-Nutzungssatz-Zeiger
    4 Virtuelle Adresse (VA) Zeiger auf Speichersegmenttabelle
    5 Autoritätsmaske
    6 Arbeitsdeskriptor
  • In mindestens einer Ausführungsform ist jeder WD 3184 spezifisch für ein bestimmtes Grafikbeschleunigungsmodul 3146 und/oder die Grafikverarbeitungsmaschinen 3131(1)-3131(N). Er enthält in mindestens einer Ausführungsform alle Informationen, die von einer Grafikverarbeitungsmaschine 3131(1)-3131(N) benötigt werden, um Arbeit zu verrichten, oder er kann ein Zeiger auf einen Speicherplatz sein, an dem eine Anwendung eine Befehlswarteschlange von zu verrichtender Arbeit eingerichtet hat.
  • 31E veranschaulicht zusätzliche Details für eine beispielhafte Ausführungsform eines gemeinsamen Modells. Diese Ausführungsform beinhaltet einen realen Hypervisor-Adressraum 3198, in dem eine Prozesselementliste 3199 gespeichert ist. Auf den realen Hypervisor-Adressraum 3198 kann in mindestens einer Ausführungsform über einen Hypervisor 3196 zugegriffen werden, der Grafikbeschleunigungsmodulmaschinen für das Betriebssystem 3195 virtualisiert.
  • Bei mindestens einer Ausführungsform erlauben gemeinsame Programmiermodelle allen oder einer Teilmenge von Prozessen aus allen oder einer Teilmenge von Partitionen in einem System, ein Grafikbeschleunigungsmodul 3146 zu verwenden. In mindestens einer Ausführungsform gibt es zwei Programmiermodelle, bei denen das Grafikbeschleunigungsmodul 3146 von mehreren Prozessen und Partitionen gemeinsam genutzt wird, nämlich über Zeitscheiben gemeinsam genutzt und über gerichtete Grafik gemeinsam genutzt.
  • In mindestens einer Ausführungsform besitzt in diesem Modell der System-Hypervisor 3196 das Grafikbeschleunigungsmodul 3146 und er stellt seine Funktion allen Betriebssystemen 3195 zur Verfügung. Damit ein Grafikbeschleunigungsmodul 3146 die Virtualisierung durch den System-Hypervisor 3196 unterstützen kann, kann in mindestens einer Ausführungsform das Grafikbeschleunigungsmodul 3146 bestimmte Bedingungen erfüllen, wie z. B.: 1) Eine Auftragsanforderung einer Anwendung muss autonom sein (d. h. der Zustand muss zwischen den Aufträgen nicht aufrechterhalten werden), oder das Grafikbeschleunigungsmodul 3146 muss einen Mechanismus zur Kontextsicherung und -wiederherstellung bereitstellen. 2) Ein Grafikbeschleunigungsmodul 3146 garantiert, dass die Auftragsanforderung einer Anwendung in einer bestimmten Zeitspanne abgeschlossen wird, einschließlich etwaiger Übersetzungsfehler, oder das Grafikbeschleunigungsmodul 3146 bietet die Möglichkeit, die Verarbeitung eines Auftrags zu unterbrechen, und 3) dem Grafikbeschleunigungsmodul 3146 muss Fairness zwischen den Prozessen garantiert werden, wenn es in einem gerichteten gemeinsamen Programmiermodell arbeitet.
  • In mindestens einer Ausführungsform ist es erforderlich, dass die Anwendung 3180 einen Systemaufruf des Betriebssystems 3195 mit einem Grafikbeschleunigungsmodultyp, einem Arbeitsdeskriptor (WD), einem Wert des Autoritätsmaskenregisters (AMR) und einem Kontext-Sicherungs-/-Wiederherstellungsbereichszeiger (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 3146 formatiert und kann in Form eines Befehls des Grafikbeschleunigungsmoduls 3146, eines effektiven Adresszeigers auf eine benutzerdefinierte Struktur, eines effektiven Adresszeigers auf eine Befehlswarteschlange oder einer anderen Datenstruktur vorliegen, die die vom Grafikbeschleunigungsmodul 3146 zu verrichtende Arbeit beschreibt.
  • Bei mindestens einer Ausführungsform ist ein AMR-Wert ein AMR-Zustand, der für einen derzeitigen Prozess verwendet werden soll. In mindestens einer Ausführungsform ähnelt ein an ein Betriebssystem übergebener Wert einer Anwendung, die einen AMR einstellt. Wenn die Implementierungen der Beschleuniger-Integrationsschaltung 3136 und des Grafikbeschleunigungsmoduls 3146 in mindestens einer Ausführungsform kein Benutzer-Autoritätsmasken-Überschreibungsregister (UAMOR) unterstützen, kann ein Betriebssystem einen aktuellen UAMOR-Wert auf einen AMR-Wert anwenden, bevor ein AMR in einem Hypervisor-Aufruf übergeben wird. Der Hypervisor 3196 kann in mindestens einer Ausführungsform optional einen aktuellen Wert des Autoritätsmasken-Überschreibungsregisters (AMOR) anwenden, bevor ein AMR in einem Prozesselement 3183 angeordnet wird. In mindestens einer Ausführungsform ist CSRP eines der Register 3145, die eine effektive Adresse eines Bereichs im effektiven Adressraum 3182 einer Anwendung für das Grafikbeschleunigungsmodul 3146 zur Speicherung und Wiederherstellung 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 Empfangen eines Systemaufrufs kann das Betriebssystem 3195 verifizieren, ob die Anwendung 3180 registriert ist und die Autorität zum Verwenden des Grafikbeschleunigungsmoduls 3146 bekommen hat. Das Betriebssystem 3195 ruft in mindestens einer Ausführungsform dann den Hypervisor 3196 mit den in Tabelle 3 dargestellten Informationen auf. Tabelle 3 - OS-zu-Hypervisor-Aufrufparameter
    Parameter Nr. Beschreibung
    1 Ein Arbeitsdeskriptor (WD)
    2 Ein Autoritätsmasken-Register (AMR) Wert (möglicherweise maskiert)
    3 Ein Kontext-Sicherungs-/-Wiederherstellungsbereichszeiger (CSRP) mit effektiver Adresse (EA)
    4 Eine Prozess-ID (PID) und optionale Thread-ID (TID)
    5 Beschleunigernutzungsaufzeichnungszeiger (AURP) mit virtueller Adresse (VA)
    6 Speicherungssegmenttabellenzeiger (SSTP) mit virtueller Adresse (VA)
    7 Eine logische Unterbrechungsdienstnummer (logical interrupt service number - LISN)
  • In mindestens einer Ausführungsform verifiziert der Hypervisor 3196 beim Empfangen eines Hypervisor-Aufrufs, dass das Betriebssystem 3195 registriert ist und die Autorität zur Verwendung des Grafikbeschleunigungsmoduls 3146 bekommen hat. Der Hypervisor 3196 setzt in mindestens einer Ausführungsform dann das Prozesselement 3183 in eine verknüpfte Prozesselementliste für einen entsprechenden Grafikbeschleunigungsmodultyp 3146. 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ätsmasken-Register (AMR) Wert (möglicherweise maskiert).
    3 Ein Kontext-Sicherungs-/-Wiederherstellungsbereichszeiger (CSRP) mit effektiver Adresse (EA)
    4 Eine Prozess-ID (PID) und optionale Thread-ID (TID)
    5 Beschleunigernutzungsaufzeichnungszeiger (AURP) mit virtueller Adresse (VA)
    6 Speicherungssegmenttabellenzeiger (SSTP) mit virtueller Adresse (VA)
    7 Eine logische Unterbrechungsdienstnummer (logical interrupt service number - LISN)
    8 Unterbrechungsvektortabelle, abgeleitet von Hypervisor-Aufrufparametern
    9 Ein Statusregister-Wert (SR)
    10 Eine logische Partitions-ID (LPID)
    11 Ein Zeiger auf eine reale Adresse (RA) des Hypervisor-Beschleunigers für die Auslastung
    12 Speicherdeskriptorregister (SDR)
  • In mindestens einer Ausführungsform initialisiert der Hypervisor eine Vielzahl von Registern 3145 der Beschleunigerintegrations-Slice 3190.
  • Wie in 31F 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 3101 (1)-3101 (N) und die GPU-Speicher 3120(1)-3120(N) verwendet wird. In dieser Implementation nutzen Operationen, die auf den GPUs 3110(1)-3110(N) ausgeführt werden, einen gleichen virtuellen/effektiven Speicheradressraum für den Zugriff auf die Prozessorspeicher 3101(1)-3101(M) und umgekehrt, was die Programmierbarkeit vereinfacht. In mindestens einer Ausführungsform wird ein erster Abschnitt eines virtuellen/effektiven Adressraums dem Prozessorspeicher 3101(1) zugewiesen, ein zweiter Abschnitt dem zweiten Prozessorspeicher 3101(N), ein dritter Abschnitt dem GPU-Speicher 3120(1) usw. In mindestens einer Ausführungsform wird dadurch ein gesamter virtueller/effektiver Speicherraum (manchmal auch als effektiver Adressraum bezeichnet) über jeden der Prozessorspeicher 3101 und GPU-Speicher 3120 verteilt, wodurch jeder Prozessor oder jede GPU auf jeden physischen Speicher mit einer diesem Speicher zugeordneten virtuellen Adresse zugreifen kann.
  • In mindestens einer Ausführungsform stellt die Bias/Kohärenz-Management-Schaltung 3194A-3194E innerhalb einer oder mehrerer MMUs 3139A-3139E die Cache-Kohärenz zwischen den Caches eines oder mehrerer Host-Prozessoren (z. B. 3105) und GPUs 3110 sicher und implementiert Biasing-Verfahren, die angeben, in welchen physischen Speichern bestimmte Datentypen gespeichert werden sollen. Während in mindestens einer Ausführungsform mehrere Instanzen der Bias/Kohärenz-Management-Schaltung 3194A-3194E in 31F dargestellt sind, kann die Bias-/Kohärenz-Schaltung innerhalb einer MMU eines oder mehrerer Host-Prozessoren 3105 und/oder innerhalb der Beschleuniger-Integrationsschaltung 3136 implementiert sein.
  • Eine Ausführungsform ermöglicht es, dass GPU-Speicher 3120 als Teil des Systemspeichers abgebildet wird, und dass darauf unter Verwendung der SVM-Technologie (Shared Virtual Memory) zugegriffen wird, ohne jedoch Leistungsnachteile zu erleiden, die mit einer vollständigen System-Cache-Kohärenz assoziiert sind. In mindestens einer Ausführungsform bietet eine Fähigkeit für GPU-Speicher 3120, auf die als Systemspeicher ohne lästigen Cache-Kohärenz-Overhead zugegriffen wird, eine vorteilhafte Betriebsumgebung für GPU-Offload. In mindestens einer Ausführungsform ermöglicht diese Anordnung es der Software des Host-Prozessors 3105, Operanden einzurichten und auf Berechnungsergebnisse zuzugreifen, und zwar ohne den Overhead der traditionellen E/A-DMA-Datenkopien. In mindestens einer Ausführungsform sind an derartigen traditionellen Kopien Treiberaufrufe, Unterbrechungen und auf Speicher abgebildete E/A-Zugriffe (MMIO-Zugriffe) beteiligt, die alle in Bezug auf einfache Speicherzugriffe ineffizient sind. In mindestens einer Ausführungsform kann eine Fähigkeit, ohne Cache-Kohärenz-Overheads auf GPU-Speicher 3120 zuzugreifen, für die Ausführungszeit einer ausgelagerten Berechnung entscheidend sein. In Fällen mit erheblichem Streaming-Schreibspeicherverkehr kann beispielsweise der Cache-Kohärenz-Overhead die effektive Schreibbandbreite, die von einer GPU 3110 gesehen wird, in mindestens einer Ausführungsform erheblich reduzieren. In mindestens einer Ausführungsform können die Effizienz der Operandeneinrichtung, die Effizienz des Ergebniszugriffs und die Effizienz der GPU-Berechnung eine Rolle 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 GPU-gebundener Speicherseite beinhaltet. In mindestens einer Ausführungsform kann eine Bias-Tabelle in einem gestohlenen Speicherbereich eines oder mehrerer GPU- Speicher 3120 implementiert sein, mit oder ohne Bias-Cache in einer GPU 3110 (z. B. um häufig/kürzlich verwendete Einträge einer Bias-Tabelle zu cachen). Alternativ kann in mindestens einer Ausführungsform eine gesamte Verzerrungstabelle innerhalb einer GPU aufbewahrt werden.
  • In mindestens einer Ausführungsform wird vor dem tatsächlichen Zugriff auf einen GPU-Speicher auf einen Verzerrungstabelleneintrag zugegriffen, der mit jedem Zugriff auf den GPU-Speicher 3120 assoziiert ist, wodurch die folgenden Operationen verursacht werden. Zunächst werden in mindestens einer Ausführungsform lokale Anfragen von GPU 3110, die ihre Seite im GPU-Bias finden, direkt an einen entsprechenden GPU-Speicher 3120 weitergeleitet. In mindestens einer Ausführungsform werden lokale Anforderungen von einer GPU, die ihre Seite in der Host-Verzerrung finden, an den Prozessor 3105 weitergeleitet (z. B. über eine Hochgeschwindigkeitsverknüpfung, wie hierin beschrieben). Bei mindestens einer Ausführungsform schließen Anforderungen von dem Prozessor 3105, die eine angeforderte Seite in dem Host-Prozessor-Bias finden, wie ein normaler Speicherlesezugriff ab. Alternativ können Anforderungen, die an eine GPU-Neigungsseite gerichtet sind, an eine GPU 3110 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 Neigungsstatus verwendet in mindestens einer Ausführungsform einen API-Aufruf (z. B. OpenCL), der wiederum den Vorrichtungstreiber einer GPU aufruft, der wiederum eine Nachricht an eine GPU sendet (oder einen Befehlsdeskriptor in die Warteschlange stellt), die sie anweist, einen Neigungsstatus zu ändern und, bei einigen Übergängen, einen Cache-Leerungsvorgang in einem Host durchzuführen. Bei mindestens einer Ausführungsform wird die Cache-Flushing-Operation für einen Übergang von dem Bias des Host-Prozessors 3105 zum Bias der GPU verwendet, aber nicht für einen entgegengesetzten Übergang.
  • Bei mindestens einer Ausführungsform wird die Cache-Kohärenz aufrechterhalten, indem GPU-gebundene Seiten vorübergehend gerendert werden, die vom Host-Prozessor 3105 nicht gecacht werden können. Um auf diese Seiten zuzugreifen, kann in mindestens einer Ausführungsform der Prozessor 3105 Zugriff von der GPU 3110 anfordern, die den Zugriff sofort gewähren kann oder auch nicht. Um die Kommunikation zwischen dem Prozessor 3105 und der GPU 3110 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 3105, benötigt werden und umgekehrt.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 31A-31F gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine in 31A-31F gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Unterstützung für die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine in 31A-31F gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine in 31A-31F gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine in 31A-31F gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine in 31A-31F gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine in 31A-31F gezeigte oder beschriebene Komponente dazu verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 32 veranschaulicht beispielhafte integrierte Schaltungen und damit assoziierte GPUen, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden können, gemäß verschiedenen hierin beschriebenen Ausführungsformen. Zusätzlich zu den veranschaulichten Schaltungen können in mindestens einer Ausführungsform weitere Logik und Schaltungen beinhaltet sein, einschließlich zusätzlicher GPUen/-kerne, Steuerung für periphere Schnittstellen oder Allzweckprozessorkerne.
  • 32 ist ein Blockdiagramm, das eine beispielhafte integrierte Schaltung 3200 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 3200 einen oder mehrere Anwendungsprozessor(en) 3205 (z. B. CPUs), mindestens einen GPU 3210 auf und kann zusätzlich einen Bildprozessor 3215 und/oder einen Videoprozessor 3220 aufweisen, von denen jeder ein modularer IP-Kern sein kann. In mindestens einer Ausführungsform beinhaltet die integrierte Schaltung 3200 Peripherie- oder Buslogik, die eine USB-Steuerung 3225, eine UART-Steuerung 3230, eine SPI/SDIO-Steuerung 3235 und eine I22S/I22C-Steuerung 3240 beinhaltet. In mindestens einer Ausführungsform kann die integrierte Schaltung 3200 eine Anzeigevorrichtung 3245 beinhalten, die an eine oder mehrere von einer High-Definition-Multimedia-Interface(HDMI)-Steuerung 3250 und einer Mobile-Industry-Processor-Interface(MIPI)-Anzeigeschnittstelle 3255 gekoppelt ist. In mindestens einer Ausführungsform kann die Speicherung durch ein Flash-Speicherteilsystem 3260 bereitgestellt sein, das einen Flash-Speicher und eine Flash-Speichersteuerung beinhaltet. Bei mindestens einer Ausführungsform kann die Speicherschnittstelle über eine Speichersteuerung 3265 für den Zugriff auf SDRAM- oder SRAM-Speichervorrichtungen bereitgestellt sein. In mindestens einer Ausführungsform beinhalten einige integrierte Schaltungen zusätzlich eine eingebettete Sicherheitsmaschine 3270.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 2315 in der integrierten Schaltung 3200 für Inferenz- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, neuronalen Netzwerkfunktionen und/oder -architekturen oder hier beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet werden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 32 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 32 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 32 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 32 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 32 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 32 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 32 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 33A-33B zeigen beispielhafte integrierte Schaltungen und zugehörige GPUen, die unter Verwendung eines oder mehrerer IP-Kerne gemäß verschiedenen Ausführungsformen, wie sie hier beschrieben sind, hergestellt werden können. Zusätzlich zu den veranschaulichten Schaltungen können in mindestens einer Ausführungsform weitere Logik und Schaltungen beinhaltet sein, einschließlich zusätzlicher GPUen/- kerne, Steuerung für periphere Schnittstellen oder Allzweckprozessorkerne.
  • 33A-33B sind Blockdiagramme, die beispielhafte GPUen zur Verwendung in einem SoC gemäß hierin beschriebenen Ausführungsformen veranschaulichen. 33A veranschaulicht einen beispielhaften GPU 3310 einer integrierten Schaltung als System auf einem Chip, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann, gemäß mindestens einer Ausführungsform. 33B zeigt einen weiteren beispielhaften GPU 3340 einer integrierten Schaltung als System auf einem Chip, der unter Verwendung eines oder mehrerer IP-Kerne hergestellt sein kann, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der GPU 3310 aus 33A ein GPUkern mit niedriger Leistung. In mindestens einer Ausführungsform ist der GPU 3340 aus 33B ein GPUkern mit höherer Leistungsfähigkeit. In mindestens einer Ausführungsform kann jeder der GPUen 3310, 3340 eine Variante des GPUs 3210 aus 32 sein.
  • In mindestens einer Ausführungsform beinhaltet der GPU 3310 einen Vertex-Prozessor 3305 und einen oder mehrere Fragmentprozessor(en) 3315A-3315N (z. B. 3315A, 3315B, 3315C, 3315D bis 3315N-1 und 3315N). In mindestens einer Ausführungsform kann der GPU 3310 verschiedene Shader-Programme über eine separate Logik ausführen, so dass der Vertex-Prozessor 3305 für die Ausführung von Operationen für Vertex-Shader-Programme optimiert ist, während ein oder mehrere Fragment-Prozessor(en) 3315A-3315N 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 3305 eine Vertex-Verarbeitungsstufe einer 3D-Grafikpipeline durch und erzeugt Primitive und Vertex-Daten. In mindestens einer Ausführungsform verwenden die Fragmentprozessoren 3315A-3315N die vom Vertex-Prozessor 3305 generierten Primitiv- und Vertex-Daten, um einen Bildpuffer zu erzeugen, der auf einer Anzeigeeinrichtung angezeigt wird. In mindestens einer Ausführungsform sind ein oder mehrere Fragmentprozessor(en) 3315A-3315N optimiert, um Fragment-Shader-Programme auszuführen, wie in einer OpenGL-API bereitgestellt, die verwendet werden können, um ähnliche Operationen wie ein Pixel-Shader-Programm durchzuführen, wie es in einer Direct 3D-API bereitgestellt ist.
  • In mindestens einer Ausführungsform weist der GPU 3310 zusätzlich eine oder mehrere Speicherverwaltungseinheiten (MMUs) 3320A-3320B, einen oder mehrere Cache(s) 3325A-3325B und eine oder mehrere Schaltungsverbindungen 3330A-3330B auf. In mindestens einer Ausführungsform stellen eine oder mehrere MMU 3320A-3320B eine virtuell-physische Adresszuordnung für den GPU 3310 bereit, was für den Vertex-Prozessor 3305 und/oder Fragmentprozessor(en) 3315A-3315N beinhaltet, die sich auf Vertex- oder im Speicher gespeicherte Bild-/Texturdaten zusätzlich zu in einem oder mehreren Cache 3325A-3325B gespeicherten Vertex- oder Bild-/Texturdaten beziehen kann. In mindestens einer Ausführungsform können eine oder mehrere MMU 3320A-3320B mit anderen MMU innerhalb des Systems synchronisiert werden, was beinhaltet, dass eine oder mehrere MMU einem oder mehreren Anwendungsprozessoren 3205, Bildprozessoren 3215 und/oder Videoprozessoren 3220 aus 32 zugeordnet sind, sodass jeder Prozessor 3205-3220 an einem gemeinsam genutzten oder vereinheitlichten virtuellen Speichersystem teilnehmen kann. In mindestens einer Ausführungsform ermöglichen eine oder mehrere Schaltungszusammenschaltung(en) 3330A-3330B dem GPU 3310, mit anderen IP-Kernen innerhalb eines SoC Schnittstellen zu bilden, entweder über einen internen Bus eines SoC oder über eine direkte Verbindung.
  • In mindestens einer Ausführungsform weist der GPU 3340 einen oder mehrere Shader-Kern(e) 3355A-3355N auf (z. B. 3355A, 3355B, 3355C, 3355D, 3355E, 3355F bis 3355N-1 und 3355N), wie es in 33B dargestellt ist, was eine einheitliche Shader-Kern-Architektur ermöglicht, bei der ein einziger Kern oder Typ oder Kern alle Arten von programmierbarem Shader-Code ausführen kann, einschließlich Shader-Programmcode zur Implementierung von Vertex-Shadern, Fragment-Shadern und/oder Compute-Shadern. In mindestens einer Ausführungsform kann eine Anzahl der Shader-Kerne variieren. In mindestens einer Ausführungsform beinhaltet der GPU 3340 eine Aufgabenverwaltung innerhalb des Kerns 3345, die als Thread-Verteiler fungiert, um Ausführungs-Threads an einen oder mehrere Shader-Kerne 3355A-3355N zu verteilen, und eine Kachelungseinheit 3358, um Kachelungsoperationen für kachelbasiertes Rendering zu beschleunigen, bei dem Rendering-Operationen für eine Szene im Bildraum unterteilt werden, um zum Beispiel lokale räumliche Kohärenz innerhalb einer Szene auszunutzen oder um die Nutzung interner Caches zu optimieren.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 2315 in der integrierten Schaltung 33A und/oder 33B für Inferenz- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, neuronalen Netzwerkfunktionen und/oder -architekturen oder hier beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet werden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 33A-33B gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine in 33A-33B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Unterstützung für die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine in 33A-33B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine in 33A-33B gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine in 33A-33B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine in 33A-33B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine in 33A-33B gezeigte oder beschriebene Komponente dazu verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 34A-34B veranschaulichen zusätzliche beispielhafte GPUlogik gemäß hierin beschriebenen Ausführungsformen. 34A zeigt einen Grafikkern 3400, der in mindestens einer Ausführungsform im GPU 3210 aus 32 vorhanden sein kann und in mindestens einer Ausführungsform ein einheitlicher Shader-Kern 3355A-3355N wie in 33B sein kann. 34B veranschaulicht eine hochparallele allgmeine Grafikverarbeitungseinheit („GPGPU“) 3430, 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 3400 einen gemeinsam genutzten Befehlscache 3402, eine Textureinheit 3418 und einen Cache/gemeinsamen Speicher 3420 auf, die den Ausführungsressourcen innerhalb des Grafikkerns 3400 gemeinsam sind. In mindestens einer Ausführungsform kann der Grafikkern 3400 mehrere Slices 3401A-3401N oder eine Partition für jeden Kern beinhalten, und ein GPU kann mehrere Instanzen des Grafikkerns 3400 beinhalten. Die Slices 3401A-3401 N können in mindestens einer Ausführungsform eine Unterstützungslogik aufweisen, die einen lokalen Befehlscache 3404A-3404N, einen Thread-Scheduler 3406A-3406N, einen Thread-Dispatcher 3408A-3408N und einen Satz von Registern 3410A-3410N umfasst. In mindestens einer Ausführungsform können die Slices 3401A-3401N einen Satz zusätzlicher Funktionseinheiten (AFUs 3412A-3412N), Gleitkommaeinheiten (FPUs 3414A-3414N), ganzzahlige arithmetische Logikeinheiten (ALUs 3416A-3416N), Adressberechnungseinheiten (ACUs 3413A-3413N), Gleitkommaeinheiten mit doppelter Genauigkeit (DPFPUs 3415A-3415N) und Matrixverarbeitungseinheiten (MPUs 3417A-3417N) beinhalten.
  • In mindestens einer Ausführungsform können die FPUs 3414A-3414N Gleitkommaoperationen mit einfacher Genauigkeit (32 Bit) und halber Genauigkeit (16 Bit) durchführen, während die DPFPUs 3415A-3415N Gleitkommaoperationen mit doppelter Genauigkeit (64 Bit) durchführen. In mindestens einer Ausführungsform können die ALUs 3416A-3416N Integer-Operationen mit variabler Präzision bei 8-Bit-, 16-Bit- und 32-Bit-Präzision durchführen und für Operationen mit gemischter Präzision ausgestaltet sein. In mindestens einer Ausführungsform können die MPUs 3417A-3417N auch für Matrixoperationen mit gemischter Genauigkeit konfiguriert sein, einschließlich Gleitkomma- und ganzzahligen 8-Bit-Operationen mit halber Genauigkeit. In mindestens einer Ausführungsform können die MPUs 3417-3417N eine Vielfalt von Matrixoperationen durchführen, um Anwendungsrahmen für maschinelles Lernen zu beschleunigen, einschließlich der Ermöglichung der Unterstützung für eine beschleunigte allgemeine Matrix-zu-Matrix-Multiplikation (GEMM). In mindestens einer Ausführungsform können die AFUs 3412A-3412N zusätzliche logische Operationen durchführen, die von Gleitkomma- oder Ganzzahl-Einheiten nicht unterstützt werden, einschließlich trigonometrischer Operationen (z. B. Sinus, Cosinus usw.).
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 2315 in dem Grafikkern 3400 für Inferenz- oder Vorhersageoperationen mindestens teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
  • 34B veranschaulicht in mindestens einer Ausführungsform eine allgemeine Verarbeitungseinheit (GPGPU) 3430, die so konfiguriert sein kann, dass hochparallele Rechenoperationen durch ein Array von Grafikverarbeitungseinheiten durchgeführt werden können. In mindestens einer Ausführungsform kann die GPGPU 3430 direkt mit anderen Instanzen der GPGPU 3430 verknüpft sein, um einen Multi-GPU-Cluster zu erzeugen, um die Trainingsgeschwindigkeit für tiefe neuronale Netzwerke zu verbessern. In mindestens einer Ausführungsform beinhaltet die GPGPU 3430 eine Host-Schnittstelle 3432, um eine Verbindung mit einem Host-Prozessor zu ermöglichen. In mindestens einer Ausführungsform ist die Host-Schnittstelle 3432 eine PCI-Express-Schnittstelle. Bei mindestens einer Ausführungsform kann es sich bei der Host-Schnittstelle 3432 um eine herstellerspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur handeln. In mindestens einer Ausführungsform empfängt die GPGPU 3430 Befehle von einem Host-Prozessor und sie verwendet einen globalen Scheduler 3434, um mit diesen Befehlen assoziierte Ausführungs-Threads an einen Satz von Rechenclustern 3436A-3436H zu verteilen. In mindestens einer Ausführungsform nutzen die Rechencluster 3436A-3436H einen Cache-Speicher 3438 gemeinsam. In mindestens einer Ausführungsform kann der Cache-Speicher 3438 als ein Cache höherer Ebene für Cache-Speicher innerhalb der Rechencluster 3436A-3436H dienen.
  • In mindestens einer Ausführungsform weist die GPGPU 3430 einen Speicher 3444A-3444B auf, der über eine Reihe von Speichersteuerungen 3442A-3442B mit Rechenclustern 3436A-3436H gekoppelt ist. Bei mindestens einer Ausführungsform kann der Speicher 3444A-3444B verschiedene Arten von Speichereinrichtungen aufweisen, einschließlich eines dynamischen Direktzugriffsspeichers (DRAM) oder eines Grafik-Direktzugriffsspeichers, wie eines synchronen Grafik-Direktzugriffsspeichers (SGRAM), einschließlich eines Grafik-Doppeldatenraten-Speichers (GDDR).
  • In mindestens einer Ausführungsform weisen die Rechencluster 3436A-3436H jeweils einen Satz von Grafikkernen auf, wie z. B. den Grafikkern 3400 aus 34A, der mehrere Arten von Ganzzahl- und Gleitkomma-Logikeinheiten aufweisen kann, die Rechenoperationen mit einer Reihe von Genauigkeiten durchführen können, die auch für Berechnungen zum maschinellen Lernen geeignet sind. Zum Beispiel kann in mindestens einer Ausführungsform mindestens eine Teilmenge der Gleitkommaeinheiten in jedem der Rechencluster 3436A-3436H so konfiguriert sein, dass sie 16-Bit- oder 32-Bit-Gleitkommaoperationen durchführt, während eine andere Teilmenge der Gleitkommaeinheiten so konfiguriert sein kann, dass sie 64-Bit-Gleitkommaoperationen durchführt.
  • In mindestens einer Ausführungsform können mehrere Instanzen der GPGPU 3430 konfiguriert sein, um als ein Rechencluster betrieben zu werden. In mindestens einer Ausführungsform variiert die Kommunikation, die durch die Rechencluster 3436A-3436H für die Synchronisation und den Datenaustausch verwendet wird, je nach Ausführungsform. In mindestens einer Ausführungsform kommunizieren mehrere Instanzen der GPGPU 3430 über die Host-Schnittstelle 3432. In mindestens einer Ausführungsform beinhaltet die GPGPU 3430 einen E/A-Hub 3439, der die GPGPU 3430 mit einer GPU-Verbindung 3440 koppelt, die eine direkte Verbindung zu anderen Instanzen der GPGPU 3430 ermöglicht. In mindestens einer Ausführungsform ist die GPU-Verknüpfung 3440 an eine dedizierte GPU-zu-GPU-Brücke gekoppelt, die Kommunikation und Synchronisation zwischen mehreren Instanzen der GPGPU 3430 ermöglicht. Bei mindestens einer Ausführungsform ist der GPU-Link 3440 mit einer HochgeschwindigkeitsVerbindung gekoppelt, um Daten an andere GPGPUs oder Parallelprozessoren zu senden und zu empfangen. In mindestens einer Ausführungsform befinden sich mehrere Instanzen der GPGPU 3430 in separaten Datenverarbeitungssystemen und kommunizieren über eine Netzwerkvorrichtung, auf die über die Host-Schnittstelle 3432 zugegriffen werden kann. In mindestens einer Ausführungsform kann die GPU-Verknüpfung 3440 so konfiguriert sein, dass eine Verbindung zu einem Host-Prozessor zusätzlich zu oder alternativ zu der Host-Schnittstelle 3432 ermöglicht wird.
  • Bei mindestens einer Ausführungsform kann die GPGPU 3430 derart konfiguriert sein, dass sie neuronale Netzwerke trainiert. Bei mindestens einer Ausführungsform kann die GPGPU 3430 innerhalb einer Inferencing-Plattform verwendet werden. In mindestens einer Ausführungsform, in der die GPGPU 3430 zum Inferenzieren verwendet wird, kann die GPGPU 3430 weniger Rechencluster 3436A-3436H beinhalten als in dem Fall, dass die GPGPU 3430 zum Trainieren eines neuronalen Netzes verwendet wird. In mindestens einer Ausführungsform kann sich die dem Speicher 3444A-3444B zugeordnete Speichertechnologie zwischen Inferenz- und Trainingskonfigurationen unterscheiden, wobei den Trainingskonfigurationen Speichertechnologien mit höherer Bandbreite gewidmet sind. Bei mindestens einer Ausführungsform kann die Inferencing-Konfiguration der GPGPU 3430 Inferencing-spezifische Anweisungen unterstützen. In mindestens einer Ausführungsform kann eine Inferenzierungskonfiguration zum Beispiel Unterstützung für eine oder mehrere 8-Bit-Integer-Skalarprodukt-Anweisungen bereitstellen, die während der Inferenzierungsoperationen für eingesetzte neuronale Netzwerke verwendet werden können.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 2315 in der GPGPU 3430 für Inferenz- oder Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, neuronalen Netzwerkfunktionen und/oder -architekturen oder hier beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 34A-34B gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine in 34A-34B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Unterstützung für die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine in 34A-34B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine in 34A-34B gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine in 34A-34B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine in 34A-34B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine in 34A-34B gezeigte oder beschriebene Komponente dazu verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 35 ist ein Blockdiagramm, das ein Rechensystem 3500 gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform beinhaltet das Rechensystem 3500 ein Verarbeitungsteilsystem 3501 mit einem oder mehreren Prozessor(en) 3502 und einem Systemspeicher 3504, die über einen Zusammenschaltungspfad kommunizieren, der einen Speicher-Hub 3505 beinhalten kann. In mindestens einer Ausführungsform kann der Speicher-Hub 3505 eine getrennte Komponente innerhalb einer Chipsatzkomponente sein oder kann in einen oder mehrere Prozessoren 3502 integriert sein. In mindestens einer Ausführungsform ist der Speicher-Hub 3505 über eine Kommunikationsverbindung 3506 mit einem E/A-Teilsystem 3511 gekoppelt. In mindestens einer Ausführungsform beinhaltet das E/A-Teilsystem 3511 einen E/A-Hub 3507, der es dem Rechensystem 3500 ermöglichen kann, Eingaben von einer oder mehreren Eingabevorrichtung(en) 3508 zu empfangen. In mindestens einer Ausführungsform kann der E/A-Hub 3507 es einer Anzeigesteuerung, die in einem oder mehreren Prozessoren) 3502 beinhaltet sein kann, ermöglichen, einer oder mehreren Anzeigevorrichtung(en) 3510A Ausgaben bereitzustellen. In mindestens einer Ausführungsform können eine oder mehrere mit dem E/A-Hub 3507 gekoppelte Anzeigevorrichtung(en) 3510A eine lokale, interne oder eingebettete Anzeigevorrichtung beinhalten.
  • In mindestens einer Ausführungsform weist das Verarbeitungsteilsystem 3501 einen oder mehrere Parallelprozessor(en) 3512 auf, die über einen Bus oder eine andere Kommunikationsverbindung 3513 mit dem Speicher-Hub 3505 verbunden sind. Bei mindestens einer Ausführungsform kann es sich bei der Kommunikationsverbindung 3513 um eine beliebige Anzahl von standardbasierten Kommunikationsverbindungstechnologien oder -protokollen handeln, wie z. B. PCI Express, ohne darauf beschränkt zu sein, oder um eine herstellerspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur. In mindestens einer Ausführungsform bilden einige oder alle der Parallelprozessoren 3512 ein rechnerisch fokussiertes Parallel- oder Vektorverarbeitungssystem, das eine große Anzahl von Verarbeitungskernen und/oder Verarbeitungsclustern beinhalten kann, wie z. B. einen MIC-Prozessor (Many Integrated Core). In mindestens einer Ausführungsform werden Vektorverarbeitungssysteme als „Vektormaschinen“ bezeichnet, und Vektormotoren können eine oder mehrere Operationen ausführen, einschließlich Rasterung, Beleuchtung, Upsampling, Hochskalierung, De-Aliasing oder Nachbearbeitungsoperationen. In mindestens einer Ausführungsform bilden einige oder alle der Parallelprozessor(en) 3512 ein Grafikverarbeitungsteilsystem, das Pixel an eine oder mehrere Anzeigevorrichtung(en) 3510A ausgeben kann, die über den E/A-Hub 3507 gekoppelt sind. In mindestens einer Ausführungsform können die Parallelprozessor(en) 3512 zudem eine Anzeigesteuerung und eine Anzeigeschnittstelle (nicht gezeigt) beinhalten, um eine direkte Verbindung zu einer oder mehreren Anzeigevorrichtung(en) 3510B zu ermöglichen.
  • In mindestens einer Ausführungsform kann eine Systemspeichereinheit 3514 mit dem E/A-Hub 3507 verbunden sein, um einen Speichermechanismus für das Computersystem 3500 bereitzustellen. In mindestens einer Ausführungsform kann ein E/A-Switch 3516 verwendet werden, um einen Schnittstellenmechanismus bereitzustellen, um Verbindungen zwischen dem E/A-Hub 3507 und anderen Komponenten zu ermöglichen, wie etwa einem Netzwerkadapter 3518 und/oder einem drahtlosen Netzwerkadapter 3519, die in eine Plattform integriert sein können, und verschiedenen anderen Vorrichtungen, die über eine oder mehrere Erweiterungsvorrichtung(en) 3520 hinzugefügt werden können. In mindestens einer Ausführungsform kann der Netzwerkadapter 3518 ein Ethernet-Adapter oder ein anderer drahtgebundener Netzwerkadapter sein. In mindestens einer Ausführungsform kann der drahtlose Netzwerkadapter 3519 eine oder mehrere Wi-Fi-, Bluetooth-, Nahfeldkommunikations(NFC)- oder eine andere Netzwerkvorrichtung beinhalten, die ein oder mehrere drahtlose Funkgeräte beinhaltet.
  • In mindestens einer Ausführungsform kann das Rechensystem 3500 andere, nicht explizit gezeigte Komponenten beinhalten, einschließlich USB- oder anderer Portverbindungen, optischer Speicherlaufwerke, Videoaufnahmevorrichtungen und dergleichen, die ebenfalls mit dem E/A-Hub 3507 verbunden sein können. In mindestens einer Ausführungsform können die Kommunikationspfade, die verschiedene Komponenten in 35 miteinander verbinden, unter Verwendung beliebiger geeigneter Protokolle implementiert werden, z. B. auf PCI (Peripheral Component Interconnect) basierende Protokolle (z. B. PCI-Express) oder andere Bus- oder Punkt-zu-Punkt-Kommunikationsschnittstellen und/oder -protokoll(e), z. B. NV-Link High-Speed-Interconnect- oder -Interconnect-Protokolle.
  • Bei mindestens einer Ausführungsform weisen ein oder mehrere Parallelprozessor(en) 3512 eine für die Grafik- und Videoverarbeitung optimierte Schaltungsanordnung auf, die beispielsweise eine Videoausgangsschaltungsanordnung beinhaltet und eine Grafikverarbeitungseinheit (GPU) bildet. In mindestens einer Ausführungsform beinhalten der/die Parallelprozessor(en) 3512 Schaltungen, die für Universalverarbeitung optimiert sind. In mindestens einer Ausführungsform können Komponenten des Computersystems 3500 mit einem oder mehreren anderen Systemelementen auf einem einzigen integrierten Schaltkreis integriert sein. Zum Beispiel können in mindestens einer Ausführungsform der/die Parallelprozessor(en) 3512, der Speicher-Hub 3505, der/die Prozessor(en) 3502 und der E/A-Hub 3507 in eine integrierte Schaltung als System auf einem Chip (SoC) integriert sein. In mindestens einer Ausführungsform können die Komponenten des Rechensystems 3500 in ein einzelnes Gehäuse integriert sein, um eine Konfiguration mit einem System in einem Gehäuse (SIP) zu bilden. In mindestens einer Ausführungsform kann mindestens ein Abschnitt der Komponenten des Rechensystems 3500 in ein Multi-Chip-Modul (MCM) integriert sein, das mit anderen Multi-Chip-Modulen zu einem modularen Rechensystem verbunden sein kann.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 2315 im System von FIG. 3500 für Inferenz- oder Vorhersageoperationen verwendet werden, die mindestens teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, neuronalen Netzwerkfunktionen und/oder -architekturen oder hier beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet werden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 35 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 35 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 35 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 35 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 35 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 35 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 35 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • PROZESSOREN
  • 36A veranschaulicht einen Parallelprozessor 3600 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform können verschiedene Komponenten des Parallelprozessors 3600 unter Verwendung einer oder mehrerer integrierter Schaltungsvorrichtungen, wie etwa programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASICs) oder feldprogrammierbare Gate-Arrays (FPGAs), implementiert werden. In mindestens einer Ausführungsform ist der veranschaulichte Parallelprozessor 3600 eine Variante eines oder mehrerer Parallelprozessor(en) 3512, die in 35 gemäß einer beispielhaften Ausführungsform gezeigt sind.
  • In mindestens einer Ausführungsform beinhaltet der Parallelprozessor 3600 eine Parallelverarbeitungseinheit 3602. In mindestens einer Ausführungsform beinhaltet die Parallelverarbeitungseinheit 3602 eine E/A-Einheit 3604, die Kommunikation mit anderen Vorrichtungen ermöglicht, einschließlich anderer Instanzen der Parallelverarbeitungseinheit 3602. In mindestens einer Ausführungsform kann die E/A-Einheit 3604 direkt mit anderen Vorrichtungen verbunden sein. In mindestens einer Ausführungsform ist die E/A-Einheit 3604 über die Verwendung einer Hub- oder Switch-Schnittstelle, wie etwa eines Speicher-Hubs 3605, mit anderen Vorrichtungen verbunden. In mindestens einer Ausführungsform bilden Verbindungen zwischen dem Speicher-Hub 3605 und der E/A-Einheit 3604 eine Kommunikationsverbindung 3613. In mindestens einer Ausführungsform ist die E/A-Einheit 3604 mit einer Host-Schnittstelle 3606 und einer Speicherkreuzschiene 3616 verbunden, wobei die Host-Schnittstelle 3606 Befehle empfängt, die auf das Durchführen von Verarbeitungsoperationen gerichtet sind, und die Speicherkreuzschiene 3616 Befehle empfängt, die auf das Durchführen von Speicheroperationen gerichtet sind.
  • In mindestens einer Ausführungsform, wenn die Host-Schnittstelle 3606 einen Befehlspuffer über die E/A-Einheit 3604 empfängt, kann die Host-Schnittstelle 3606 Arbeitsoperationen zur Ausführung dieser Befehle an ein Frontend 3608 leiten. In mindestens einer Ausführungsform ist das vordere Ende 3608 mit einem Scheduler 3610 gekoppelt, der so ausgestaltet ist, dass er Befehle oder andere Arbeitselemente an eine Verarbeitungsclusteranordnung 3612 verteilt. In mindestens einer Ausführungsform stellt der Scheduler 3610 sicher, dass das Verarbeitungscluster-Array 3612 ordnungsgemäß konfiguriert ist und sich in einem gültigen Zustand befindet, bevor Aufgaben an einen Cluster des Verarbeitungscluster-Arrays 3612 verteilt werden. In mindestens einer Ausführungsform ist der Planer 3610 über Firmware-Logik implementiert, die auf einem Mikrocontroller ausgeführt wird. In mindestens einer Ausführungsform ist der durch einen Mikrocontroller implementierte Planer 3610 konfigurierbar, um komplexe Planungs- und Arbeitsverteilungsoperationen mit grober und feiner Granularität durchzuführen, was eine schnelle Vorbelegung und Kontextumschaltung von Threads ermöglicht, die auf dem Verarbeitungs-Array 3612 ausgeführt werden. In mindestens einer Ausführungsform kann die Host-Software Arbeitslasten für die Planung auf dem Verarbeitungscluster-Array 3612 über eine von mehreren Grafikverarbeitungspfaden nachweisen. In mindestens einer Ausführungsform können Arbeitslasten dann durch die Logik des Planers 3610 innerhalb eines Mikrocontrollers, der den Planer 3610 beinhaltet, automatisch über den Verarbeitungs-Array-Cluster 3612 verteilt werden.
  • In mindestens einer Ausführungsform kann das Verarbeitungscluster-Array 3612 bis zu „N“ Verarbeitungscluster beinhalten (z. B. Cluster 3614A, Cluster 3614B, bis Cluster 3614N), wobei „N“ eine positive ganze Zahl darstellt (welche eine andere positive ganze Zahl „N“ sein kann als die, die in den anderen Figuren verwendet wird). In mindestens einer Ausführungsform kann jeder Cluster 3614A-3614N des Verarbeitungscluster-Arrays 3612 eine große Anzahl gleichzeitiger Threads ausführen. In mindestens einer Ausführungsform kann der Planer 3610 den Clustern 3614A-3614N des Verarbeitungscluster-Arrays 3612 unter Verwendung verschiedener Planungs- und/oder Arbeitsverteilungsalgorithmen Arbeit zuweisen, die abhängig von der für jede Art von Programm oder Berechnung entstehenden Arbeitslasten variieren können. In mindestens einer Ausführungsform kann die Planung dynamisch durch den Planer 3610 gehandhabt werden oder kann teilweise durch die Compilerlogik während der Kompilierung der Programmlogik unterstützt werden, die für die Ausführung durch das Verarbeitungscluster-Array 3612 konfiguriert ist. In mindestens einer Ausführungsform können unterschiedliche Cluster 3614A-3614N des Verarbeitungscluster-Arrays 3612 zum Verarbeiten unterschiedlicher Arten von Programmen oder zum Durchführen unterschiedlicher Arten von Berechnungen zugewiesen werden.
  • In mindestens einer Ausführungsform kann das Verarbeitungscluster-Array 3612 so konfiguriert sein, dass es verschiedene Typen von Parallelverarbeitungsoperationen durchführt. In mindestens einer Ausführungsform ist das Verarbeitungscluster-Array 3612 so konfiguriert, dass es Universal-Parallelberechnungsoperationen durchführt. Zum Beispiel kann in mindestens einer Ausführungsform das Verarbeitungscluster-Array 3612 eine Logik beinhalten, um Verarbeitungsaufgaben auszuführen, einschließlich der Filterung von Video- und/oder Audiodaten, der Durchführung von Modellierungsoperationen, einschließlich physischer Operationen, und der Durchführung von Datentransformationen.
  • In mindestens einer Ausführungsform ist das Verarbeitungscluster-Array 3612 so konfiguriert, dass es parallele Grafikverarbeitungsoperationen durchführt. In mindestens einer Ausführungsform kann das Verarbeitungscluster-Array 3612 eine zusätzliche Logik beinhalten, 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 das Verarbeitungscluster-Array 3612 so konfiguriert sein, dass es grafikverarbeitungsbezogene Shader-Programme ausführt, wie etwa, aber nicht beschränkt auf, Vertex-Shader, Tesselierungs-Shader, Geometrie-Shader und Pixel-Shader. In mindestens einer Ausführungsform kann die Parallelverarbeitungseinheit 3602 Daten aus dem Systemspeicher über die E/A-Einheit 3604 zur Verarbeitung übermitteln. In mindestens einer Ausführungsform können die übertragenen Daten während der Verarbeitung im chipinternen Speicher (z. B. im Parallelprozessorspeicher 3622) gespeichert und dann in den Systemspeicher zurückgeschrieben werden.
  • In mindestens einer Ausführungsform, wenn die Parallelverarbeitungseinheit 3602 zum Ausführen der Grafikverarbeitung verwendet wird, kann der Planer 3610 so konfiguriert sein, dass er ein Verarbeitungspensum in ungefähr gleich große Aufgaben aufteilt, um eine bessere Verteilung der Grafikverarbeitungsoperationen auf mehrere Cluster 3614A-3614N des Verarbeitungscluster-Arrays 3612 zu ermöglichen. In mindestens einer Ausführungsform können Abschnitte des Verarbeitungscluster-Arrays 3612 so konfiguriert sein, dass sie verschiedene Arten der Verarbeitung ausführen. Zum Beispiel kann in mindestens einer Ausführungsform ein erster Abschnitt so konfiguriert sein, dass er Vertex-Shading und Topologieerzeugung durchführt, ein zweiter Abschnitt kann so konfiguriert sein, dass er Tesselierungs- und Geometrie-Shading durchführt, und ein dritter Abschnitt kann so konfiguriert sein, dass er Pixel-Shading oder andere Bildschirmraumoperationen durchführt, um ein gerendertes Bild zur Anzeige zu produzieren. In mindestens einer Ausführungsform können Zwischendaten, die durch einen oder mehrere der Cluster 3614A-3614N erzeugt werden, in Puffern gespeichert werden, um zu ermöglichen, dass Zwischendaten zwischen den Clustern 3614A-3614N zur weiteren Verarbeitung übertragen werden.
  • In mindestens einer Ausführungsform kann das Verarbeitungscluster-Array 3612 über den Planer 3610, der Befehle zur Definition von Verarbeitungstasks vom Frontend 3608 empfängt, auszuführende Verarbeitungs-Aufgaben 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 Planer 3610 konfiguriert sein, um Indizes abzurufen, die Tasks entsprechen, oder kann Indizes von dem Frontend 3608 empfangen. In mindestens einer Ausführungsform kann das Frontend 3608 konfiguriert sein, um sicherzustellen, dass das Verarbeitungscluster-Array 3612 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 3602 mit einem Parallelprozessorspeicher 3622 gekoppelt sein. In mindestens einer Ausführungsform kann auf den Parallelprozessorspeicher 3622 über die Speicherkreuzschiene 3616 zugegriffen werden, die Speicheranforderungen von dem Verarbeitungscluster-Array 3612 sowie von der E/A-Einheit 3604 empfangen kann. In mindestens einer Ausführungsform kann die Speicherkreuzschiene 3616 über eine Speicherschnittstelle 3618 auf den Parallelprozessorspeicher 3622 zugreifen. In mindestens einer Ausführungsform kann die Speicherschnittstelle 3618 mehrere Partitionseinheiten (z. B. Partitionseinheit 3620A, Partitionseinheit 3620B bis Partitionseinheit 3620N) beinhalten, die jeweils an einen Abschnitt (z. B. Speichereinheit) des Parallelprozessorspeichers 3622 gekoppelt sein können. In mindestens einer Ausführungsform ist eine Anzahl der Partitionseinheiten 3620A-3620N so konfiguriert, dass sie gleich einer Anzahl von Speichereinheiten ist, sodass eine erste Partitionseinheit 3620A eine entsprechende erste Speichereinheit 3624A aufweist, eine zweite Partitionseinheit 3620B eine entsprechende Speichereinheit 3624B aufweist und eine N-te Partitionseinheit 3620N eine entsprechende N-te Speichereinheit 3624N aufweist. In mindestens einer Ausführungsform kann eine Anzahl von Partitionseinheiten 3620A-3620N möglicherweise nicht gleich einer Anzahl von Speichereinheiten sein.
  • In mindestens einer Ausführungsform können die Speichereinheiten 3624A-3624N verschiedene Arten von Speichervorrichtungen beinhalten, einschließlich dynamischer Direktzugriffsspeicher (DRAM) oder Grafik-Direktzugriffsspeicher, wie etwa synchroner Grafik-Direktzugriffsspeicher (SGRAM), einschließlich Grafik-Doppeldatenraten-Speicher (GDDR). In mindestens einer Ausführungsform können die Speichereinheiten 3624A-3624N auch 3D-Stapelspeicher aufweisen, einschließlich, aber nicht beschränkt auf Speicher mit hoher Bandbreite (High Bandwidth Memory (HBM)). In mindestens einer Ausführungsform können Rendering-Ziele, wie etwa Bildspeicher oder Texturkarten, über die Speichereinheiten 3624A-3624N hinweg gespeichert werden, was es den Partitionseinheiten 3620A-3620N ermöglicht, Abschnitte jedes Rendering-Ziels parallel zu schreiben, um die verfügbare Bandbreite des Parallelprozessorspeichers 3622 effizient zu nutzen. In mindestens einer Ausführungsform kann eine lokale Instanz des Parallelprozessorspeichers 3622 zugunsten einer vereinheitlichten Speicherausgestaltung ausgeschlossen werden, die Systemspeicher in Verbindung mit lokalem Cache-Speicher nutzt.
  • In mindestens einer Ausführungsform kann jeder der Cluster 3614A-3614N des Verarbeitungscluster-Arrays 3612 Daten verarbeiten, die in eine der Speichereinheiten 3624A-3624N innerhalb des Parallelprozessorspeichers 3622 geschrieben werden. In mindestens einer Ausführungsform kann die Speicherkreuzschiene 3616 so konfiguriert sein, dass sie eine Ausgabe jedes Clusters 3614A-3614N an eine beliebige Partitionseinheit 3620A-3620N oder an einen anderen Cluster 3614A-3614N übermittelt, der zusätzliche Verarbeitungsoperationen an einer Ausgabe ausführen kann. In mindestens einer Ausführungsform kann jeder Cluster 3614A-3614N durch die Speicherkreuzschiene 3616 mit der Speicherschnittstelle 3618 kommunizieren, um aus verschiedenen externen Speichervorrichtungen zu lesen oder in diese zu schreiben. In mindestens einer Ausführungsform weist die Speicherkreuzschiene 3616 eine Verbindung mit der Speicherschnittstelle 3618 auf, um mit der E/A-Einheit 3604 zu kommunizieren, sowie eine Verbindung mit einer lokalen Instanz des Parallelprozessorspeichers 3622, was es den Verarbeitungseinheiten innerhalb der unterschiedlichen Verarbeitungscluster 3614A-3614N ermöglicht, mit Systemspeicher oder anderem Speicher zu kommunizieren, der nicht lokal zu der Parallelverarbeitungseinheit 3602 ist. In mindestens einer Ausführungsform kann die Speicherkreuzschiene 3616 virtuelle Kanäle verwenden, um Verkehrsströme zwischen Clustern 3614A-3614N und Partitionseinheiten 3620A-3620N zu trennen.
  • In mindestens einer Ausführungsform können mehrere Instanzen der Parallelverarbeitungseinheit 3602 auf einer einzigen Add-in-Karte bereitgestellt sein, oder mehrere Erweiterungskarten können miteinander verbunden sein. In mindestens einer Ausführungsform können verschiedene Instanzen der Parallelverarbeitungseinheit 3602 so konfiguriert 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 3602 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 3602 oder des Parallelprozessors 3600 einbeziehen, in einer Vielfalt von Konfigurationen und Formfaktoren implementiert sein, einschließlich unter anderem Desktop-, Laptop- oder tragbarer Personalcomputer, Server, Arbeitsstationen, Spielekonsolen und/oder eingebetteter Systeme.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36A gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen zu durchzuführen, die in Verbindung mit den 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf FIG. A is36 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Unterstützung für die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36A gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36A gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36A gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36A gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36A verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 36B ist ein Blockdiagramm einer Partitionseinheit 3620 gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform ist die Partitionseinheit 3620 eine Instanz einer der Partitionseinheiten 3620A-3620N von 36A. In mindestens einer Ausführungsform weist die Partitionseinheit 3620 einen L2-Cache 3621, eine Frame-Puffer-Schnittstelle 3625 und eine ROP 3626 (Rasteroperationseinheit) auf. Der L2-Cache 3621 ist in mindestens einer Ausführungsform ein Lese-/Schreib-Cache, der so ausgestaltet ist, dass er von dem Speicherkoppelfeld 3616 und der ROP 3626 empfangene Lade- und Speicheroperationen durchführt. In mindestens einer Ausführungsform werden Lesefehler und dringende Rückschreibanforderungen vom L2-Cache 3621 an die Frame-Puffer-Schnittstelle 3625 zur Verarbeitung ausgegeben. Bei mindestens einer Ausführungsform können Updates auch über die Bildpufferschnittstelle 3625 zur Verarbeitung an einen Bildpuffer gesendet werden. In mindestens einer Ausführungsform ist die Frame-Puffer-Schnittstelle 3625 mit einer der Speichereinheiten im Parallelprozessorspeicher verbunden, wie den Speichereinheiten 3624A-3624N aus 36 (z. B. innerhalb des Parallelprozessorspeichers 3622).
  • In mindestens einer Ausführungsform ist die ROP 3626 eine Verarbeitungseinheit, die Rasteroperationen wie Schablonieren, Z-Test, Überblendung usw. durchführt. In mindestens einer Ausführungsform gibt die ROP 3626 dann verarbeitete Grafikdaten aus, die im Grafikspeicher abgelegt werden. In mindestens einer Ausführungsform beinhaltet die ROP 3626 Komprimierungslogik, um Tiefen- oder Farbdaten, die in den Speicher geschrieben werden, zu komprimieren und Tiefen- oder Farbdaten, die aus dem Speicher gelesen werden, zu dekomprimieren. In mindestens einer Ausführungsform kann die Komprimierungslogik eine verlustfreie Komprimierungslogik sein, die einen oder mehrere von mehreren Komprimierungsalgorithmen verwendet. In mindestens einer Ausführungsform kann die Art der von der ROP 3626 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 3626 in jedem Verarbeitungscluster (z. B. Cluster 3614A-3614N aus 36A) und nicht in der Partitionseinheit 3620 vorhanden. In mindestens einer Ausführungsform werden Lese- und Schreibanforderungen für Pixeldaten über die Speicherkreuzschiene 3616 anstelle von Pixelfragmentdaten übertragen. In mindestens einer Ausführungsform können verarbeitete Grafikdaten auf einer Anzeigevorrichtung angezeigt werden, wie z. B. einer der einen oder der mehreren Anzeigevorrichtung(en) 3510 aus 35, zur weiteren Verarbeitung durch den/die Prozessor(en) 3502 geroutet werden oder zur weiteren Verarbeitung durch eine der Verarbeitungsentitäten innerhalb des Parallelprozessors 3600 aus 36A geroutet werden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36B gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen zu durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36B gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36B gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36B verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 36C ist ein Blockdiagramm eines Verarbeitungsclusters 3614 innerhalb einer Parallelverarbeitungseinheit gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist ein Verarbeitungscluster eine Instanz eines der Verarbeitungscluster 3614A-3614N aus 36A. In mindestens einer Ausführungsform kann der Verarbeitungscluster 3614 so konfiguriert sein, dass er viele Threads parallel ausführt, wobei sich der Begriff „Thread“ auf eine Instanz eines bestimmten Programms bezieht, das auf einem bestimmten Satz von Eingabedaten ausgeführt wird. In mindestens einer Ausführungsform werden Single-Instruction-Multiple-Data-(SIMD-)Anweisungsausgabetechniken (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 die Operation des Verarbeitungsclusters 3614 über einen Pipelinemanager 3632 gesteuert werden, der die Verarbeitungs-Tasks auf die SIMT-Parallelprozessoren verteilt. In mindestens einer Ausführungsform empfängt der Pipelinemanager 3632 Anweisungen von dem Planer 3610 aus 36A und verwaltet die Ausführung dieser Anweisungen über einen Grafikmultiprozessor 3634 und/oder eine Textureinheit 3636. In mindestens einer Ausführungsform ist der Grafikmultiprozessor 3634 eine beispielhafte Instanz eines SIMT-Parallelprozessors. In mindestens einer Ausführungsform können jedoch verschiedene Typen von SIMT-Parallelprozessoren mit unterschiedlichen Architekturen innerhalb des Verarbeitungsclusters 3614 beinhaltet sein. In mindestens einer Ausführungsform können eine oder mehrere Instanzen des Grafikmultiprozessors 3634 innerhalb eines Verarbeitungsclusters 3614 beinhaltet sein. In mindestens einer Ausführungsform kann der Grafikmultiprozessor 3634 Daten verarbeiten und eine Datenkreuzschiene 3640 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 Pipelinemanager 3632 die Verteilung von verarbeiteten Daten erleichtern, indem er Ziele für zu verteilende verarbeitete Daten über die Datenkreuzschiene 3640 vorgibt.
  • In mindestens einer Ausführungsform kann jeder Grafik-Multiprozessor 3634 innerhalb des Verarbeitungsclusters 3614 einen identischen Satz funktionaler Ausführungslogik beinhalten (z. B. arithmetische Logikeinheiten, Lastspeichereinheiten usw.). In mindestens einer Ausführungsform kann die funktionale Ausführungslogik in einer Pipeline dazu konfiguriert sein, dass neue Anweisungen ausgegeben werden können, bevor vorherige Anweisungen abgeschlossen sind. 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 mit Funktionseinheiten genutzt werden, um verschiedene Operationen auszuführen, und es kann jede beliebige Kombination von Funktionseinheiten vorhanden sein.
  • In mindestens einer Ausführungsform bilden die an den Verarbeitungscluster 3614 übertragenen Anweisungen einen Thread. In mindestens einer Ausführungsform ist ein Satz von Threads, der über einen Satz von Parallelverarbeitungs-Engines ausgeführt wird, eine Thread-Gruppe. In mindestens einer Ausführungsform führt eine Thread-Gruppe ein gemeinsames Programm an unterschiedlichen Eingabedaten aus. In mindestens einer Ausführungsform kann jeder Thread innerhalb einer Thread-Gruppe einer anderen Verarbeitungs-Engine innerhalb eines Grafik-Multiprozessors 3634 zugewiesen sein. In mindestens einer Ausführungsform kann eine Thread-Gruppe weniger Threads beinhalten als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafikmultiprozessors 3634. Wenn eine Thread-Gruppe weniger Threads beinhaltet als eine Anzahl von Verarbeitungs-Engines, können in mindestens einer Ausführungsform eine oder mehrere der Verarbeitungs-Engines während der Zyklen, in denen diese Thread-Gruppe verarbeitet wird, inaktiv sein. In mindestens einer Ausführungsform kann eine Thread-Gruppe auch mehr Threads beinhalten als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafikmultiprozessors 3634. In mindestens einer Ausführungsform kann, wenn eine Thread-Gruppe mehr Threads beinhaltet als die Anzahl der Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 3634, die Verarbeitung über aufeinander folgende Taktzyklen erfolgen. In mindestens einer Ausführungsform können mehrere Thread-Gruppen gleichzeitig auf einem Grafik-Multiprozessor 3634 ausgeführt werden.
  • In mindestens einer Ausführungsform beinhaltet der Grafik-Multiprozessor 3634 einen internen Cache-Speicher, um Lade- und Speicheroperationen durchzuführen. In mindestens einer Ausführungsform kann der Grafik-Multiprozessor 3634 auf einen internen Cache verzichten und einen Cache-Speicher (z. B. L1-Cache 3648) innerhalb des Verarbeitungsclusters 3614 verwenden. In mindestens einer Ausführungsform hat jeder Grafikmultiprozessor 3634 auch Zugriff auf L2-Caches innerhalb von Partitionseinheiten (z. B. die Partitionseinheiten 3620A-3620N aus 36A), die von allen Verarbeitungsclustern 3614 gemeinsam genutzt werden, und kann verwendet werden, um Daten zwischen Threads zu übertragen. In mindestens einer Ausführungsform kann der Grafikmultiprozessor 3634 auch auf den chipexternen globalen Speicher zugreifen, der einen oder mehrere von dem lokalen Parallelprozessorspeicher und/oder dem Systemspeicher beinhalten kann. In mindestens einer Ausführungsform kann ein beliebiger Speicher, der zu der Parallelverarbeitungseinheit 3602 extern ist, als globaler Speicher verwendet werden. In mindestens einer Ausführungsform beinhaltet der Verarbeitungscluster 3614 mehrere Instanzen des Grafik-Multiprozessors 3634 und kann gemeinsame Anweisungen und Daten gemeinsam nutzen, die im L1-Cache 3648 gespeichert sein können.
  • In mindestens einer Ausführungsform kann jeder Verarbeitungscluster 3614 eine MMU 3645 (Speicherverwaltungseinheit) beinhalten, die so konfiguriert ist, dass sie virtuelle Adressen physischen Adressen zuordnet. In mindestens einer Ausführungsform können sich eine oder mehrere Instanzen der MMU 3645 innerhalb der Speicherschnittstelle 3618 aus 36A befinden. In mindestens einer Ausführungsform beinhaltet die MMU 3645 einen Satz von Seitentabelleneinträgen (page table entries - PTEs), der dazu verwendet wird, eine virtuelle Adresse einer physischen Adresse einer Kachel zuzuordnen, sowie optional einen Cache-Zeilenindex. In mindestens einer Ausführungsform kann die MMU 3645 Adressübersetzungspuffer (translation lookaside buffers - TLB) oder Caches beinhalten, die sich innerhalb des Grafik-Multiprozessors 3634 oder des L1-Caches 3648 oder des Verarbeitungsclusters 3614 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 3614 so konfiguriert sein, dass jeder Grafikmultiprozessor 3634 mit einer Textureinheit 3636 gekoppelt ist, um Texturzuordnungsoperationen durchzuführen, z. B. Bestimmen von Texturmusterpositionen, 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 3634 gelesen und je nach Bedarf aus einem L2-Cache, dem lokalen Parallelprozessorspeicher oder dem Systemspeicher abgerufen. In mindestens einer Ausführungsform gibt jeder Grafikmultiprozessor 3634 verarbeitete Aufgaben an die Datenkreuzschiene 3640 aus, um verarbeitete Aufgaben einem anderen Verarbeitungscluster 3614 zur weiteren Verarbeitung bereitzustellen oder eine verarbeitete Aufgabe über die Speicherkreuzschiene 3616 in einem L2-Cache, einem lokalen Parallelprozessorspeicher oder einem Systemspeicher zu speichern. In mindestens einer Ausführungsform ist eine Vorrasteroperationseinheit (pre-raster operations unit - „preROP“) 3642 konfiguriert, um Daten von dem Grafikmultiprozessor 3634 zu empfangen und um Daten an ROP-Einheiten zu leiten, die sich bei Partitionseinheiten befinden können, wie hierin beschrieben (z. B. die Partitionseinheiten 3620A-3620N aus 36A). In mindestens einer Ausführungsform kann die preROP-Einheit 3642 Optimierungen für die Farbmischung durchführen, Pixelfarbdaten organisieren und Adressübersetzungen vornehmen.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 2315 in dem Grafikverarbeitungscluster 3614 für Inferenz- oder Vorhersageoperationen mindestens teilweise basierend auf 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 wird mindestens eine Komponente, die in Bezug auf 36C gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36C gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Unterstützung für die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36C gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36C gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36C gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36C gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36C gezeigte oder beschriebene Komponente dazu verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 36D zeigt einen Grafik-Multiprozessor 3634 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der Grafik-Multiprozessor 3634 mit dem Pipeline-Manager 3632 des Verarbeitungsclusters 3614 gekoppelt. In mindestens einer Ausführungsform weist der Grafikmultiprozessor 3634 eine Ausführungspipeline auf, die unter anderem einen Befehlscache 3652, eine Befehlseinheit 3654, eine Adresszuordnungseinheit 3656, eine Registerdatei 3658, einen oder mehrere GPGPU-Kerne 3662 und eine oder mehrere Lade-/Speichereinheiten 3666 aufweist. Die GPGPU-Kerne 3662 und die Lade-/Speichereinheiten 3666 sind in mindestens einer Ausführungsform über eine Speicher- und Cache-Verbindung 3668 mit dem Cache-Speicher 3672 und dem gemeinsamen Speicher 3670 verbunden.
  • In mindestens einer Ausführungsform empfängt der Anweisungscache 3652 einen Strom von auszuführenden Anweisungen vom Pipeline-Manager 3632. In mindestens einer Ausführungsform werden die Anweisungen im Anweisungs-Cache 3652 zwischengespeichert und von einer Anweisungseinheit 3654 zur Ausführung versendet. In mindestens einer Ausführungsform kann die Befehlseinheit 3654 die Befehle als Thread-Gruppen (z. B. Warps) versenden, wobei jeder Thread der Thread-Gruppe einer anderen Ausführungseinheit innerhalb der GPGPU-Kerne 3662 zugewiesen ist. In mindestens einer Ausführungsform kann eine Anweisung auf einen beliebigen von einem lokalen, gemeinsam genutzten oder globalen Adressraum zugreifen, indem sie eine Adresse innerhalb eines einheitlichen Adressraums vorgibt. In mindestens einer Ausführungsform kann die Adresszuordnungseinheit 3656 verwendet werden, um Adressen in einem vereinheitlichten Adressraum in eine eindeutige Speicheradresse zu übersetzen, auf die die Lade-/Speichereinheiten 3666 zugreifen können.
  • In mindestens einer Ausführungsform stellt die Registerbank 3658 einen Satz von Registern für funktionelle Einheiten des Grafikmultiprozessors 3634 bereit. In mindestens einer Ausführungsform stellt die Registerbank 3658 einen temporären Datenspeicher für Operanden bereit, die mit Datenwegen von funktionellen Einheiten (z. B. GPGPU-Kernen 3662, Lade-/Speichereinheiten 3666) des Grafikmultiprozessors 3634 verbunden sind. In mindestens einer Ausführungsform ist die Registerbank 3658 derart zwischen den einzelnen funktionellen Einheiten aufgeteilt, dass jeder funktionellen Einheit ein dedizierter Abschnitt der Registerbank 3658 zugewiesen ist. In mindestens einer Ausführungsform ist die Registerdatei 3658 auf verschiedene Warps aufgeteilt, die vom Grafikmultiprozessor 3634 ausgeführt werden.
  • In mindestens einer Ausführungsform können die GPGPU-Kerne 3662 jeweils Gleitkommaeinheiten (FPUs) und/oder ganzzahlige arithmetische Logikeinheiten (ALUs) beinhalten, die zur Ausführung von Anweisungen des Grafikmultiprozessors 3634 verwendet werden. Die GPGPU-Kerne 3662 können sich in mindestens einer Ausführungsform in ihrer Architektur ähneln oder unterscheiden. In mindestens einer Ausführungsform beinhaltet ein erster Abschnitt der GPGPU-Kerne 3662 eine FPU mit einfacher Genauigkeit und eine Ganzzahl-ALU, während ein zweiter Abschnitt der GPGPU-Kerne eine FPU mit doppelter Genauigkeit beinhaltet. In mindestens einer Ausführungsform können FPUs den Standard IEEE 754-2008 für Gleitkommaarithmetik implementieren oder Gleitkommaarithmetik mit variabler Genauigkeit ermöglichen. In mindestens einer Ausführungsform kann der Grafikmultiprozessor 3634 zusätzlich eine oder mehrere Festfunktions- oder Sonderfunktionseinheiten beinhalten, um spezifische Funktionen wie das Kopieren von Rechtecken oder Pixel-Blending-Operationen durchzuführen. In mindestens einer Ausführungsform kann einer oder können mehrere der GPGPU-Kerne 3662 auch eine feste oder spezielle Funktionslogik beinhalten.
  • In mindestens einer Ausführungsform beinhalten die GPGPU-Kerne 3662 SIMD-Logik, die dazu in der Lage ist, eine einzelne Anweisung an mehreren Datensätzen durchzuführen. In mindestens einer Ausführungsform können die GPGPU-Kerne 3662 SIMD4-, SIMD8- und SIMD16-Anweisungen physisch ausführen und SIMD1-, SIMD2- und SIMD32-Anweisungen logisch ausführen. In mindestens einer Ausführungsform können SIMD-Anweisungen für GPGPU-Kerne zur Kompilierzeit von einem Shader-Compiler 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 durchführen, parallel über eine einzelne SIMD8-Logikeinheit ausgeführt werden.
  • In mindestens einer Ausführungsform ist die Speicher- und Cache-Verbindung 3668 ein Verbindungsnetzwerk, das jede Funktionseinheit des Grafik-Multiprozessors 3634 mit der Registerdatei 3658 und dem gemeinsamen Speicher 3670 verbindet. In mindestens einer Ausführungsform ist die Speicher- und Cache-Verbindung 3668 eine Kreuzschienen-Verbindung, die es der Lade-/Speichereinheit 3666 ermöglicht, Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher 3670 und der Registerbank 3658 zu implementieren. In mindestens einer Ausführungsform kann die Registerbank 3658 mit der gleichen Frequenz wie die GPGPU-Kerne 3662 arbeiten, sodass die Datenübertragung zwischen den GPGPU-Kernen 3662 und der Registerbank 3658 eine sehr geringe Latenz aufweisen kann. In mindestens einer Ausführungsform kann der gemeinsam genutzte Speicher 3670 verwendet werden, um die Kommunikation zwischen Threads zu ermöglichen, die auf funktionellen Einheiten innerhalb des Grafikmultiprozessors 3634 ausgeführt werden. In mindestens einer Ausführungsform kann der Cache-Speicher 3672 beispielsweise als Daten-Cache verwendet werden, um Texturdaten, die zwischen Funktionseinheiten und der Textureinheit 3636 übertragen werden, zwischenzuspeichern. In mindestens einer Ausführungsform kann der gemeinsam genutzte Speicher 3670 auch als programmverwalteter Cache verwendet werden. In mindestens einer Ausführungsform können Threads, die auf den GPGPU-Kernen 3662 ausgeführt werden, zusätzlich zu den automatisch zwischengespeicherten Daten, die innerhalb des Cache-Speichers 3672 gespeichert sind, programmatisch Daten innerhalb des gemeinsam genutzten Speichers speichern.
  • In mindestens einer Ausführungsform ist ein Parallelprozessor oder eine GPGPU, wie hierin beschrieben, kommunikativ mit Host-/Prozessorkernen gekoppelt, um Grafikoperationen, Operationen des maschinellen Lernens, Musteranalyseoperationen und verschiedene Universal-GPU(GPGPU)-Funktionen 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 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 2315 in dem Grafikmultiprozessor 3634 für Inferenz- oder Vorhersageoperationen mindestens teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36D gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36D gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Unterstützung für die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36D gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36D gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36D gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36D gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 36D gezeigte oder beschriebene Komponente dazu verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 37 veranschaulicht ein Mehrfach-GPU-Rechensystem 3700 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das Multi-GPU-Rechnersystem 3700 einen Prozessor 3702 aufweisen, der über einen Host-Schnittstellen-Switch 3704 mit mehreren Universal-Grafikverarbeitungseinheiten (GPGPUs) 3706A-D verbunden ist. In mindestens einer Ausführungsform ist der Host-Schnittstellen-Switch 3704 eine PCI-Express-Switch-Einrichtung, die den Prozessor 3702 mit einem PCI-Express-Bus verbindet, über den der Prozessor 3702 mit den GPGPUs 3706A-D kommunizieren kann. Die GPGPUs 3706A-D können in mindestens einer Ausführungsform über eine Reihe von Hochgeschwindigkeits-Punkt-zu-Punkt-GPU-zu-GPU-Verbindungen 3716 miteinander verbunden sein. In mindestens einer Ausführungsform sind die GPU-zu-GPU-Verbindungen 3716 mit jeder der GPGPUs 3706A-D über eine eigene GPU-Verbindung verbunden. In mindestens einer Ausführungsform ermöglichen die P2P-GPU-Verbindungen 3716 direkte Kommunikation zwischen jeder der GPGPUs 3706A-D, ohne dass Kommunikation über den Host-Schnittstellenbus 3704 erforderlich ist, mit dem der Prozessor 3702 verbunden ist. In mindestens einer Ausführungsform, bei der GPU-zu-GPU-Verkehr zu den P2P-GPU-Verbindungen 3716 geleitet wird, bleibt der Host-Schnittstellenbus 3704 für den Systemspeicherzugriff oder zum Kommunizieren mit anderen Instanzen des Mehr-GPU-Rechensystems 3700 verfügbar, zum Beispiel über eine oder mehrere Netzvorrichtungen. Während in mindestens einer Ausführungsform die GPGPUs 3706A-D mit dem Prozessor 3702 über den Host-Schnittstellen-Switch 3704 verbunden sind, weist der Prozessor 3702 in mindestens einer Ausführungsform eine direkte Unterstützung für P2P-GPU-Verbindungen 3716 auf und kann direkt mit den GPGPUs 3706A-D verbunden sein.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 2315 in dem Mehrfach-GPU-Rechensystem 3700 für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 37 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 37 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 37 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 37 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 37 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 37 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 37 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 38 ist ein Blockdiagramm eines GPUs 3800 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet der GPU 3800 eine Ringzusammenschaltung 3802, ein Pipeline-Frontend 3804, eine Medienmaschine 3837 und Grafikkerne 3880A-3880N. In mindestens einer Ausführungsform verbindet die Ringverbindung 3802 den GPU 3800 mit anderen Verarbeitungseinheiten, beinhaltend andere GPUen oder einen oder mehrere Allzweckprozessorkerne. Bei mindestens einer Ausführungsform ist der GPU 3800 einer von vielen Prozessoren, die in ein Mehrkern-Verarbeitungssystem integriert sind.
  • In mindestens einer Ausführungsform empfängt der GPU 3800 Batches von Befehlen über die Ringzusammenschaltung 3802. In mindestens einer Ausführungsform werden die eingehenden Befehle von einem Command-Streamer 3803 im Pipeline-Frontend 3804 interpretiert. In mindestens einer Ausführungsform weist der GPU 3800 eine skalierbare Ausführungslogik auf, um die 3D-Geometrieverarbeitung und die Medienverarbeitung über den/die Grafikkern(e) 3880A-3880N durchzuführen. In mindestens einer Ausführungsform liefert der Command-Streamer 3803 für 3D-Geometrieverarbeitungsbefehle Befehle an die Geometriepipeline 3836. In mindestens einer Ausführungsform liefert der Befehls-Streamer 3803 für mindestens einige Medienverarbeitungsbefehle Befehle an ein Video-Frontend 3834, das mit einer Medienmaschine 3837 gekoppelt ist. In mindestens einer Ausführungsform weist die Medien-Maschine 3837 eine Video-Qualitäts-Maschine (VQE) 3830 für die Video- und Bildnachbearbeitung und eine Multi-Format-Encoder/Decoder-Maschine (MFX) 3833 auf, um eine hardwarebeschleunigte Codierung und Decodierung von Mediendaten zu ermöglichen. In mindestens einer Ausführungsform generieren die Geometriepipeline 3836 und die Medienmaschine 3837 jeweils Ausführungs-Threads für Thread-Ausführungsressourcen, die von mindestens einem Grafikkern 3880 bereitgestellt werden.
  • In mindestens einer Ausführungsform weist der GPU 3800 skalierbare Thread-Ausführungsressourcen auf, die Grafikkerne 3880A-3880N aufweisen (welche modular sein können und manchmal als Kern-Slices bezeichnet werden), von denen jeder mehrere Sub-Kerne 3850A-3850N, 3860A-3860N (manchmal als Kern-Sub-Slices bezeichnet) hat. In mindestens einer Ausführungsform kann der GPU 3800 eine beliebige Anzahl von Grafikkernen 3880A aufweisen. In mindestens einer Ausführungsform beinhaltet der GPU 3800 einen Grafikkern 3880A mit mindestens einem ersten Teilkern 3850A und einem zweiten Teilkern 3860A. In mindestens einer Ausführungsform ist der GPU 3800 ein Prozessor mit niedriger Leistung mit einem einzelnen Teilkern (z. B. 3850A). In mindestens einer Ausführungsform beinhaltet der GPU 3800 mehrere Grafikkerne 3880A-3880N, von denen jeder einen Satz von ersten Teilkernen 3850A-3850N und einen Satz von zweiten Teilkernen 3860A-3860N beinhaltet. In mindestens einer Ausführungsform weist jeder Sub-Kern in den ersten Sub-Kernen 3850A-3850N mindestens einen ersten Satz von Ausführungseinheiten 3852A-3852N und Medien-/Textur-Sampler 3854A-3854N auf. In mindestens einer Ausführungsform beinhaltet jeder Teilkern in den zweiten Teilkernen 3860A-3860N mindestens einen zweiten Satz von Ausführungseinheiten 3862A-3862N und Samplern 3864A-3864N. In mindestens einer Ausführungsform teilt sich jeder Teilkern 3850A-3850N, 3860A-3860N einen Satz gemeinsam genutzter Ressourcen 3870A-3870N. In mindestens einer Ausführungsform beinhalten die gemeinsam genutzten Ressourcen einen gemeinsamen Cache-Speicher und eine Pixel-Operationslogik.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 2315 in dem GPU 3800 für Inferenz- oder Vorhersageoperationen mindestens teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen von neuronalen Netzwerken oder hierin beschriebenen Anwendungsfällen für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 38 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 38 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 38 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 38 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 38 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 38 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 38 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 39 ist ein Blockdiagramm, das die Mikroarchitektur für einen Prozessor 3900, der Logikschaltungen zum Durchführen von Anweisungen beinhalten kann, gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform kann der Prozessor 3900 Befehle ausführen, die x86-Befehle, ARM-Befehle, spezielle Befehle für anwendungsspezifische integrierte Schaltungen (ASICs) usw. aufweisen. In mindestens einer Ausführungsform kann der Prozessor 3900 Register zum Speichern gepackter Daten aufweisen, wie z. B. 64 Bit breite MMX™-Register in Mikroprozessoren, die mit der MMX-Technologie der Intel Corporation aus Santa Clara, Kalifornien, ausgestattet sind. In mindestens einer Ausführungsform können MMX-Register, die sowohl als Ganzzahl- als auch als Gleitkommaregister verfügbar sind, mit gepackten Datenelementen betreibbar sein, die Single Instruction, Multiple Data („SIMD“) und Streaming SIMD Extensions („SSE“) Anweisungen begleiten. In mindestens einer Ausführungsform können 128 Bit breite XMM-Register, die sich auf die SSE2-, SSE3-, SSE4-, AVX- oder darüber hinausgehende Technologien beziehen (allgemein als „SSEx“ bezeichnet), solche gepackten Datenoperanden halten. In mindestens einer Ausführungsform kann der Prozessor 3900 Anweisungen zum Beschleunigen von Algorithmen für maschinelles Lernen oder Deep Learning, Training oder Inferenzieren durchführen.
  • In mindestens einer Ausführungsform weist der Prozessor 3900 ein In-Order-Front-End („Front-End“) 3901 auf, um auszuführende Befehle abzurufen und Befehle vorzubereiten, die später in der Prozessor-Pipeline verwendet werden sollen. In mindestens einer Ausführungsform kann das Frontend 3901 mehrere Einheiten beinhalten. In mindestens einer Ausführungsform holt ein Anweisungsvorabrufer 3926 Anweisungen aus dem Speicher und leitet sie an einen Anweisungsdecoder 3928 weiter, der wiederum Anweisungen dekodiert oder interpretiert. Zum Beispiel decodiert in mindestens einer Ausführungsform der Anweisungsdecodierer 3928 eine empfangene Anweisung in einen oder mehrere Vorgänge, die als „Mikroanweisungen“ oder „Mikrovorgänge“ bezeichnet werden (auch als „Mikro-Ops“ oder „Uops“ bezeichnet) und von der Maschine ausgeführt werden können. In mindestens einer Ausführungsform parst der Anweisungsdecodierer 3928 eine Anweisung in einen Opcode und entsprechende Daten- und Steuerfelder, die von der Mikroarchitektur verwendet werden können, um Vorgänge gemäß mindestens einer Ausführungsform auszuführen. In mindestens einer Ausführungsform kann ein Ablaufverfolgungscache 3930 decodierte µops in programmgeordnete Sequenzen oder Ablaufverfolgungen in einer µop-Warteschlange 3934 zur Ausführung zusammenstellen. Wenn der Ablaufverfolgungscache 3930 auf eine komplexe Anweisung stößt, stellt in mindestens einer Ausführungsform ein Mikrocode-ROM 3932 die für den Abschluss einer Operation notwendigen µops bereit.
  • In mindestens einer Ausführungsform können einige Anweisungen in eine einzelne Mikro-Op konvertiert werden, während andere mehrere Mikro-Ops benötigen, um eine vollständige Operation abzuschließen. In mindestens einer Ausführungsform kann, falls mehr als vier Mikro-Ops benötigt werden, um eine Anweisung abzuschließen, der Anweisungsdecodierer 3928 auf den Mikrocode-ROM 3932 zugreifen, um diese Anweisung durchzuführen. Bei mindestens einer Ausführungsform kann ein Befehl in eine kleine Anzahl von Mikro-Ops zur Verarbeitung im Befehlsdecoder 3928 dekodiert werden. Bei mindestens einer Ausführungsform kann eine Anweisung innerhalb des Mikrocode-ROM 3932 gespeichert werden, wenn eine Reihe von Mikro-Ops zum Erzielen einer derartigen Operation benötigt werden sollte. In mindestens einer Ausführungsform bezieht sich der Trace-Cache 3930 auf ein programmierbare Logik-Anordnung („PLA“) als Einstiegspunkt, um einen korrekten Mikrobefehlszeiger für das Lesen von Mikrocode-Sequenzen zur Vervollständigung eines oder mehrerer Befehle aus dem Mikrocode-ROM 3932 zu bestimmen. In mindestens einer Ausführungsform kann das Front-end 3901 der Maschine, nachdem der Mikrocode-ROM 3932 die Sequenzierung von Mikro-Ops für eine Anweisung beendet hat, das Abrufen von Mikro-Ops aus dem Ablaufverfolgungszwischenspeicher 3930 wieder aufnehmen.
  • In mindestens einer Ausführungsform kann die Out-of-Order-Ausführungsmaschine („Out-of-Order-Engine“) 3903 Anweisungen zur Ausführung vorbereiten. In mindestens einer Ausführungsform verfügt die Out-of-Order-Ausführungslogik über eine Reihe von Puffern, um den Fluss der Anweisungen zu glätten und neu zu ordnen, um die Rechenleistung zu optimieren, während sie eine Pipeline durchlaufen und zur Ausführung eingeplant werden. In mindestens einer Ausführungsform beinhaltet die Maschine 3903 zur Out-of-Order-Ausführung ohne Einschränkung einen Zuteiler/Registerumbenenner 3940, eine Speicher-µop-Warteschlange 3942, eine Ganzzahl-/Gleitkomma-µop-Warteschlange 3944, einen Speicherplaner 3946, einen schnellen Planer 3902, einen langsamen/allgemeinen Gleitkomma-Planer („langsamer/allgemeiner FP-Planer“) 3904 und einen einfachen Gleitkomma-Planer („einfacher FP-Planer“) 3906. In mindestens einer Ausführungsform werden der schnelle Scheduler 3902, der langsame/allgemeine Gleitkomma-Scheduler 3904 und der einfache Gleitkomma-Scheduler 3906 in dieser Schrift auch gemeinsam als „µop-Scheduler 3902, 3904, 3906“ bezeichnet. In mindestens einer Ausführungsform weist der Zuweiser/Registerumbenenner 3940 Maschinenpuffer und Ressourcen zu, die jede uop für die Ausführung benötigt. In mindestens einer Ausführungsform benennt der Zuteiler/Registerumbenenner 3940 logische Register in Einträge in einer Registerdatei um. In mindestens einer Ausführungsform weist der Zuordner/Registerumbenenner 3940 auch einen Eintrag für jede µop in einer von zwei µop-Warteschlangen, der Speicher-µop-Warteschlange 3942 für Speicheroperationen und der Ganzzahl-/Fließkomma-µop-Warteschlange 3944 für Nicht-Speicheroperationen vor dem Speicher-Scheduler 3946 und den µop-Schedulern 3902, 3904, 3906 zu. In mindestens einer Ausführungsform bestimmen die µop-Scheduler 3902, 3904, 3906 auf Grundlage der Bereitschaft ihrer abhängigen Eingaberegister-Operandenquellen und der Verfügbarkeit der Ausführungsressourcen, die µops benötigen, um ihre Operation abzuschließen, wann eine µop zur Ausführung bereit ist. In mindestens einer Ausführungsform kann der schnelle Scheduler 3902 auf jeder Hälfte des Haupttaktzyklus planen, während der langsame/allgemeine Gleitkomma-Scheduler 3904 und der einfache Gleitkomma-Scheduler 3906 einmal pro Hauptprozessortaktzyklus planen können. In mindestens einer Ausführungsform vermitteln die µop-Scheduler-Planer 3902, 3904, 3906 für Versandports, um µops für die Ausführung zu planen.
  • In mindestens einer Ausführungsform beinhaltet der Ausführungsblock 3911 ohne Einschränkung eine Integerregisterbank/ein Umgehungsnetz 3908, eine Gleitkommaregisterbank/ein Umgehungsnetz („FP-Registerbank/Umgehungsnetz“) 3910, Adresserzeugungseinheiten („AGUs“) 3912 und 3914, schnelle arithmetisch-logische Einheiten (ALUs) („schnelle ALUs“) 3916 und 3918, eine langsame arithmetisch-logische Einheit („langsame ALU“) 3920, eine Gleitkomma-ALU („FP“) 3922 und eine Gleitkomma-Bewegungseinheit („FP-Bewegung“) 3924. In mindestens einer Ausführungsform werden die Ganzzahlregisterdatei/das Umgehungsnetz 3908 und Gleitkommaregisterdatei/Umgehungsnetz 3910 in dieser Schrift auch als „Registerdateien 3908, 3910“ bezeichnet. In mindestens einer Ausführungsform werden AGUSs 3912 und 3914, schnelle ALUs 3916 und 3918, die langsame ALU 3920, die Gleitkomma-ALU 3922 und die Gleitkommabewegungseinheit 3924 in dieser Schrift auch als „Ausführungseinheiten 3912, 3914, 3916, 3918, 3920, 3922 und 3924“ bezeichnet. In mindestens einer Ausführungsform kann der Ausführungsblock 3911 ohne Einschränkung eine beliebige Anzahl (einschließlich null) und Art von Registerdateien, Umgehungsnetzwerken, Adresserzeugungseinheiten und Ausführungseinheiten in beliebiger Kombination beinhalten.
  • In mindestens einer Ausführungsform können die Registernetzwerke 3908, 3910 zwischen den Uop-Schedulern 3902, 3904, 3906 und den Ausführungseinheiten 3912, 3914, 3916, 3918, 3920, 3922 und 3924 angeordnet sein. Bei mindestens einer Ausführungsform führt das Integer-Registerdatei-/Bypass-Netzwerk 3908 Integer-Operationen durch. In mindestens einer Ausführungsform führt die Fließkommaregisterdatei/das Umgehungsnetzwerk 3910 Fließkommavorgänge aus. In mindestens einer Ausführungsform kann jedes der Registernetzwerke 3908, 3910 ohne Einschränkung ein Umgehungsnetzwerk beinhalten, das gerade abgeschlossene Ergebnisse, die noch nicht in eine Registerbank geschrieben wurden, umgehen oder zu neuen abhängigen µops weiterleiten kann. In mindestens einer Ausführungsform können die Registernetzwerke 3908, 3910 miteinander Daten austauschen. In mindestens einer Ausführungsform kann die Integerregisterdatei/das Umgehungsnetzwerk 3908 ohne Einschränkung zwei separate Registerdateien beinhalten, eine Registerdatei für Daten niederer Ordnung mit zweiunddreißig Bit und eine zweite Registerdatei für Daten hoher Ordnung mit zweiunddreißig Bit. In mindestens einer Ausführungsform kann das Gleitkomma-Registerdatei/Umgehungs-Netzwerk 3910 ohne Einschränkung 128 Bit breite Einträge beinhalten, da Gleitkomma-Anweisungen typischerweise Operanden mit einer Breite von 64 bis 128 Bit aufweisen.
  • In mindestens einer Ausführungsform können die Ausführungseinheiten 3912, 3914, 3916, 3918, 3920, 3922, 3924 Anweisungen ausführen. In In mindestens einer Ausführungsform speichern die Registernetze 3908, 3910 Integer- und Gleitkommadaten-Operandenwerte, die Mikroanweisungen benötigen, um ausgeführt zu werden. In mindestens einer Ausführungsform kann der Prozessor 3900 ohne Einschränkung eine beliebige Anzahl und Kombination der Ausführungseinheiten 3912, 3914, 3916, 3918, 3920, 3922, 3924 beinhalten. In mindestens einer Ausführungsform können die Gleitkomma-ALU 3922 und die Gleitkomma-Bewegungseinheit 3924 Gleitkomma-, MMX-, SIMD-, AVX- und SSE-Operationen oder andere Operationen ausführen, was spezialisierte Anweisungen zum maschinellen Lernen beinhaltet. In mindestens einer Ausführungsform kann die Gleitkomma-ALU 3922 ohne Einschränkung einen 64 Bit mal 64 Bit großen Gleitkommadividierer zum Ausführen von Divisions-, Quadratwurzel- und Rest-Mikro-Ops beinhalten. In mindestens einer Ausführungsform können Anweisungen, die einen Gleitkommawert beinhalten, mit Gleitkomma-Hardware verarbeitet werden. In mindestens einer Ausführungsform können ALU-Operationen an schnelle ALUs 3916, 3918 weitergegeben werden. In mindestens einer Ausführungsform können die schnelten ALUS 3916, 3918 schnelle Operationen mit einer effektiven Latenz von einem halben Taktzyklus ausführen. In mindestens einer Ausführungsform gehen die meisten komplexen Ganzzahloperationen zur langsamen ALU 3920, da die langsame ALU 3920 ohne Einschränkung Ganzzahlausführungshardware für Operationen mit langer Latenzzeit beinhalten kann, wie etwa eine Multiplikation, Verschiebungen, Kennzeichenlogik und Verzweigungsverarbeitung. In mindestens einer Ausführungsform können Speicherlade-/-speicheroperationen von AGUs 3912, 3914 ausgeführt werden. In mindestens einer Ausführungsform können die schnelle ALU 3916, die schnelle ALU 3918 und die langsame ALU 3920 Ganzzahloperationen an 64-Bit-Datenoperanden ausführen. In mindestens einer Ausführungsform können die schnelle ALU 3916, die schnelle ALU 3918 und die langsame ALU 3920 so implementiert sein, dass sie eine Vielfalt von Datenbitgrößen unterstützen, darunter sechzehn, zweiunddreißig, 128, 256 usw. In mindestens einer Ausführungsform können die Gleitkomma-ALU 3922 und die Gleitkommabewegungseinheit 3924 so implementiert sein, dass sie einen Bereich von Operanden unterstützen, der Bits mit verschiedenen Breiten aufweist, wie etwa 128 Bit breite Operanden mit gepackten Daten in Verbindung mit SIMD- und Multimedia-Anweisungen. In mindestens einer Ausführungsform umfasst der Prozessor 3900 eine oder mehrere Arithmetikeinheiten (ALUs), um ein Training und/oder eine Inferenzierung unter Verwendung von neuronalen Netzwerken auszuführen, um ein Bild mit niedriger Auflösung oder geringerer Auflösung zu einem hochauflösenden Bild hochzuskalieren, das auch als superauflösendes Bild bezeichnet werden kann.
  • In mindestens einer Ausführungsform teilen die µop-Scheduler 3902, 3904, 3906 abhängige Operationen zu, bevor die Ausführung einer übergeordneten Last beendet ist. In mindestens einer Ausführungsform kann der Prozessor 3900, da µops spekulativ geplant und im Prozessor 3900 ausgeführt werden können, auch eine Logik beinhalten, um Speicherfehler zu handhaben. In mindestens einer Ausführungsform können, falls eine Datenlast in einem Daten-Cache einen Fehler verursacht, abhängige Operationen in einer Pipeline im Gange sein, die einen Scheduler mit temporär inkorrekten Daten verlassen haben. In mindestens einer Ausführungsform verfolgt ein Wiedergabemechanismus Anweisungen, die falsche Daten verwenden, und führt sie erneut aus. In mindestens einer Ausführungsform müssen abhängige Operationen möglicherweise wiederholt werden und es unabhängige wird möglicherweise ermöglicht, dass sie abgeschlossen werden. In mindestens einer Ausführungsform können Scheduler und ein Wiederholungsmechanismus von mindestens einer Ausführungsform eines Prozessors auch so ausgelegt sein, dass sie Befehlssequenzen für Textstring-Vergleichsoperationen abfangen.
  • In mindestens einer Ausführungsform können sich „Register“ auf bordeigene Prozessorspeicherorte beziehen, die als Teil von Anweisungen zum Identifizieren von Operanden verwendet werden können. In mindestens einer Ausführungsform kann es sich bei den Registern um solche handeln, die von außerhalb des Prozessors (aus der Sicht eines Programmierers) verwendet werden können. In mindestens einer Ausführungsform sind Register möglicherweise nicht auf eine bestimmte Schaltungsart beschränkt. Vielmehr kann ein Register in mindestens einer Ausführungsform Daten speichern, Daten bereitstellen und die hierin beschriebenen Funktionen durchführen. In mindestens einer Ausführungsform können die hierin beschriebenen Register durch Schaltungen innerhalb eines Prozessors unter Verwendung einer beliebigen Anzahl unterschiedlicher Techniken implementiert werden, wie etwa dedizierter physischer Register, dynamisch zugewiesener physischer Register unter Verwendung von Registerumbenennung, Kombinationen aus dedizierten und dynamisch zugewiesenen physischen Registern usw. In mindestens einer Ausführungsform speichern Integerregister 32-Bit-Integerdaten. Eine Registerdatei von mindestens einer Ausführungsform enthält außerdem acht Multimedia-SIMD-Register für gepackte Daten.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 2315 in den Ausführungsblock 3911 und andere gezeigte oder nicht gezeigte Speicher oder Register einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die in dieser Schrift beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in dem Ausführungsblock 3911 veranschaulichten ALUs verwenden. Darüber hinaus können Gewichtungsparameter im chipinternen oder chipexternen Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Ausführungsblocks 3911 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken auszuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 39 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 39 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 39 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 39 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 39 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 39 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 39 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 40 veranschaulicht einen Deep-Learning-Anwendungsprozessor 4000 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform verwendet der Deep-Learning-Anwendungsprozessor 4000 Anweisungen, die, wenn sie vom Deep-Learning-Anwendungsprozessor 4000 ausgeführt werden, bewirken, dass der Deep-Learning-Anwendungsprozessor 4000 einige oder alle der in dieser Offenbarung beschriebenen Prozesse und Verfahren ausführt. Bei mindestens einer Ausführungsform handelt es sich bei dem Deep-Learning-Anwendungsprozessor 4000 um eine anwendungsspezifische integrierte Schaltung (ASIC). In mindestens einer Ausführungsform führt der Anwendungsprozessor 4000 Matrixmultiplikationsvorgänge entweder „fest verdrahtet“ in der Hardware als Ergebnis der Ausführung einer oder mehrerer Anweisungen oder beides durch. In mindestens einer Ausführungsform umfasst der Deep-Learning-Anwendungsprozessor 4000 ohne Einschränkung Verarbeitungscluster 4010(1)-4010(12), Inter-Chip-Verbindungen („ICLs“) 4020(1)- 4020(12), Inter-Chip-Steuerungen („ICCs“) 4030(1)- 4030(2), Speicher mit hoher Bandbreite der zweiten Generation („HBM2“) 40240(1)- 4040(4), Speichersteuerungen („Mem Ctrlrs“) 4042(1)-4042(4), eine physikalische Schicht für Speicher mit hoher Bandbreite („HBM PHY“) 4044(1)- 4044(4), eine Management-Controller-Zentraleinheit („Management-Controller-CPU“) 4050, einen Block für serielle periphere Schnittstellen, integrierte Schaltungen und allgemeine Eingaben/Ausgaben („SPI, I2C, GPIO“) 4060, eine Express-Steuerung für periphere Komponentenverbindungen und einen Block für direkten Speicherzugriff („PCIe-Steuerung und DMA“) 4070 und einen Express-Anschluss für periphere Komponentenverbindungen mit sechzehn Bahnen („PCI Express x 16“) 4080.
  • In mindestens einer Ausführungsform können die Verarbeitungscluster 4010 Deep-Learning-Operationen durchführen, einschließlich Inferenz- oder Vorhersageoperationen auf Grundlage von Gewichtungsparametern, die mit einer oder mehreren Trainingstechniken, einschließlich der in dieser Schrift beschriebenen, berechnet wurden. In mindestens einer Ausführungsform kann jedes Verarbeitungscluster 4010 ohne Einschränkung eine beliebige Anzahl und einen beliebigen Typ von Prozessoren beinhalten. In mindestens einer Ausführungsform kann der Deep-Learning-Anwendungsprozessor 4000 eine beliebige Anzahl und Art von Verarbeitungsclustern 4010 beinhalten. In mindestens einer Ausführungsform sind die Inter-Chip-Verknüpfungen 4020 bidirektional. In mindestens einer Ausführungsform ermöglichen Inter-Chip Verknüpfungen 4020 und Inter-Chip Controller 4030 mehreren Deep-Learning-Anwendungsprozessoren 4000 den Austausch von Informationen, einschließlich Aktivierungsinformationen, die sich aus der Ausführung eines oder mehrerer maschineller Lernalgorithmen ergeben, die in einem oder mehreren neuronalen Netzwerken verkörpert sind. In mindestens einer Ausführungsform kann der Deep-Learning-Anwendungsprozessor 4000 eine beliebige Anzahl (einschließlich Null) und Art von ICLs 4020 und ICCs 4030 beinhalten.
  • In mindestens einer Ausführungsform stellen HBM2s 4040 insgesamt 32 Gigabyte (GB) Speicher bereit. HBM2 4040(i) ist in mindestens einer Ausführungsform sowohl der Speichersteuerung 4042(i) als auch der HBM PHY 4044(i) zugeordnet, wobei „i“ eine beliebige ganze Zahl ist. In mindestens einer Ausführungsform kann eine beliebige Anzahl von HBM2 4040 einen beliebigen Typ und eine beliebige Gesamtmenge von Speicher mit hoher Bandbreite bereitstellen und mit einer beliebigen Anzahl (einschließlich Null) und einem beliebigen Typ von Speichercontrollern 4042 und HBM PHYs 4044 verbunden sein. In mindestens einer Ausführungsform können SPI, I2C, GPIO 4060, PCIe-Steuerung und DMA 4070 und/oder PCIe 4080 durch eine beliebige Anzahl und Art von Blöcken ersetzt werden, die eine beliebige Anzahl und Art von Kommunikationsstandards in einer technisch geeigneten Weise ermöglichen.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. Bei mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie etwa ein neuronales Netzwerk, zu trainieren, um dem Deep-Learning-Anwendungsprozessor 4000 bereitgestellte Informationen vorherzusagen oder zu inferenzieren. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor 4000 verwendet, um Informationen basierend auf einem trainierten Modell zum maschinellen Lernen (z. B. einem neuronalen Netzwerk), das von einem anderen Prozessor oder System oder vom Deep Learning-Anwendungsprozessor 4000 trainiert wurde, abzuleiten oder vorherzusagen. In mindestens einer Ausführungsform kann der Prozessor 4000 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netzwerke auszuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 40 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 40 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 40 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 40 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 40 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 40 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 40 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 41 ist ein Blockdiagramm eines neuromorphen Prozessors 4100 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der neuromorphe Prozessor 4100 eine oder mehrere Eingaben von Quellen außerhalb des neuromorphen Prozessors 4100 empfangen. In mindestens einer Ausführungsform können diese Eingaben an ein oder mehrere Neuronen 4102 innerhalb des neuromorphen Prozessors 4100 übertragen werden. In mindestens einer Ausführungsform können die Neuronen 4102 und Komponenten davon unter Verwendung von Schaltungen oder Logik implementiert sein, einschließlich einer oder mehrerer arithmetisch-logischer Einheiten (ALUs). In mindestens einer Ausführungsform kann der neuromorphe Prozessor 4100 ohne Einschränkung Tausende oder Millionen von Instanzen von Neuronen 4102 umfassen, aber jede geeignete Anzahl von Neuronen 4102 kann verwendet werden. In mindestens einer Ausführungsform kann jede Instanz des Neurons 4102 eine neuronale Eingabe 4104 und eine neuronale Ausgabe 4106 einschließen. In mindestens einer Ausführungsform können die Neuronen 4102 Ausgaben generieren, die an Eingänge anderer Instanzen von Neuronen 4102 übertragen werden können. Zum Beispiel können in mindestens einer Ausführungsform die neuronale Eingabe 4104 und die neuronale Ausgabe 4106 über Synapsen 4108 zusammengeschaltet sein.
  • In mindestens einer Ausführungsform können die Neuronen 4102 und die Synapsen 4108 derartig miteinander verbunden sein, dass der neuromorphe Prozessor 4100 betrieben wird, um von dem neuromorphen Prozessor 4100 empfangene Informationen zu verarbeiten oder zu analysieren. In mindestens einer Ausführungsform können die Neuronen 4102 einen Ausgabeimpuls (oder „Feuer“ oder „Spitze“) senden, wenn die über die neuronale Eingabe 4104 empfangenen Eingaben einen Schwellenwert überschreiten. In mindestens einer Ausführungsform können die Neuronen 4102 die an den neuronalen Eingaben 4104 empfangenen Signale summieren oder integrieren. In mindestens einer Ausführungsform können die Neuronen 4102 beispielsweise als Integrate-and-Fire- Neuronen mit Leckstrom (leaky integrate-and-fire neuron) implementiert sein, wobei das Neuron 4102 eine Ausgabe unter Verwendung einer Übertragungsfunktion wie einer Sigmoid- oder Schwellenfunktion generieren („feuern“) kann, wenn eine Summe (als „Membranpotential“ bezeichnet) einen Schwellenwert überschreitet. In mindestens einer Ausführungsform kann ein „lntegrate-and-Fire“-Neuron mit Leckstrom die an den Eingängen 4104 des Neurons empfangenen Signale zu einem Membranpotential summieren und auch einen Abklingfaktor (oder ein Leckstrom) anwenden, um das Membranpotential zu reduzieren. In mindestens einer Ausführungsform kann ein „lntegrate-and-Fire“-Neuron mit Leckstrom feuern, wenn mehrere Eingabesignale an den Neuroneneingängen 4104 schnell genug empfangen werden, um einen Schwellenwert zu überschreiten (d. h. bevor ein Membranpotenzial zu niedrig abklingt, um zu feuern). In mindestens einer Ausführungsform können die Neuronen 4102 mit Hilfe von Schaltungen oder Logik implementiert werden, die Eingaben empfangen, Eingaben in ein Membranpotential integrieren und ein Membranpotential abbauen. In mindestens einer Ausführungsform können die Eingaben gemittelt werden, oder es kann jede andere geeignete Übertragungsfunktion verwendet werden. Darüber hinaus können die Neuronen 4102 in mindestens einer Ausführungsform ohne Einschränkung Vergleichsschaltungen oder Logik einschließen, die eine Spitze an der neuronalen Eingabe 4106 erstellen, wenn das Ergebnis der Anwendung einer Übertragungsfunktion auf die neuronale Eingabe 4104 einen Schwellenwert überschreitet. In mindestens einer Ausführungsform kann das Neuron 4102, sobald es feuert, zuvor erhaltene Eingaben verwerfen, indem es beispielsweise ein Membranpotenzial auf 0 oder einen anderen geeigneten Standardwert zurücksetzt. In mindestens einer Ausführungsform kann das Neuron 4102, sobald das Membranpotenzial auf 0 zurückgesetzt ist, nach einer geeigneten Zeitspanne (oder Refraktärzeit) den normalen Betrieb wieder aufnehmen.
  • In mindestens einer Ausführungsform können die Neuronen 4102 durch Synapsen 4108 miteinander verbunden sein. In mindestens einer Ausführungsform können Synapsen 4108 arbeiten, um Signale von einem Ausgang eines ersten Neurons 4102 zu einem Eingang eines zweiten Neurons 4102 zu übertragen. In mindestens einer Ausführungsform können die Neuronen 4102 Informationen über mehr als eine Instanz der Synapse 4108 übertragen. In mindestens einer Ausführungsform können eine oder mehrere Instanzen der neuronalen Ausgabe 4106 über eine Instanz der Synapse 4108 mit einer Instanz der neuronalen Eingabe 4104 im selben Neuron 4102 verbunden sein. In mindestens einer Ausführungsform kann eine Instanz eines Neurons 4102, die eine über eine Instanz einer Synapse 4108 zu übertragende Ausgabe generiert, als „präsynaptisches Neuron“ in Bezug auf diese Instanz einer Synapse 4108 bezeichnet werden. In mindestens einer Ausführungsform kann eine Instanz eines Neurons 4102, die eine über eine Instanz einer Synapse 4108 übertragene Eingabe empfängt, als „postsynaptisches Neuron“ in Bezug auf diese Instanz einer Synapse 4108 bezeichnet werden. Da eine Instanz eines Neurons 4102 Eingaben von einer oder mehreren Instanzen einer Synapse 4108 empfangen und auch Ausgaben über eine oder mehrere Instanzen einer Synapse 4108 übertragen kann, kann eine einzelne Instanz eines Neurons 4102 in mindestens einer Ausführungsform sowohl ein „präsynaptisches Neuron“ als auch ein „postsynaptisches Neuron“ in Bezug auf verschiedene Instanzen von Synapsen 4108 sein.
  • In mindestens einer Ausführungsform können die Neuronen 4102 in eine oder mehrere Schichten organisiert sein. In mindestens einer Ausführungsform kann jede Instanz des Neurons 4102 eine neuronale Ausgabe 4106 aufweisen, die sich über eine oder mehrere Synapsen 4108 auf eine oder mehrere neuronale Eingaben 4104 auffächern kann. In mindestens einer Ausführungsform können die neuronalen Ausgaben 4106 der Neuronen 4102 in einer ersten Schicht 4110 mit den neuronalen Eingaben 4104 der Neuronen 4102 in einer zweiten Schicht 4112 verbunden werden. Bei mindestens einer Ausführungsform kann die Schicht 4110 als „vorwärtsgekoppelte Schicht“ bezeichnet werden. In mindestens einer Ausführungsform kann sich jede Instanz des Neurons 4102 in einer Instanz der ersten Schicht 4110 zu jeder Instanz des Neurons 4102 in der zweiten Schicht 4112 auffächern. Bei mindestens einer Ausführungsform kann die erste Schicht 4110 als „vollständig vernetzte Feed-Forward-Schicht“ bezeichnet werden. In mindestens einer Ausführungsform kann jede Instanz eines Neurons 4102 in einer Instanz einer zweiten Schicht 4112 zu weniger als allen Instanzen eines Neurons 4102 in einer dritten Schicht 4114 auffächern. In mindestens einer Ausführungsform kann die zweite Schicht 4112 als „spärlich verbundene vorwärtsgekoppelte Schicht“ bezeichnet werden. In mindestens einer Ausführungsform können sich Neuronen 4102 in der zweiten Schicht 4112 zu Neuronen 4102 in mehreren anderen Schichten auffächern, einschließlich zu Neuronen 4102 in (derselben) zweiten Schicht 4112. Bei mindestens einer Ausführungsform kann die zweite Schicht 4112 als eine „rekurrente Schicht“ bezeichnet werden. In mindestens einer Ausführungsform kann der neuromorphe Prozessor 4100 ohne Einschränkung eine beliebige geeignete Kombination von rekurrenten Schichten und vorwärtsgekoppelten Schichten beinhalten, einschließlich ohne Einschränkung sowohl spärlich verbundener vorwärtsgekoppelter Schichten als auch vollständig verbundener vorwärtsgekoppelter Schichten.
  • In mindestens einer Ausführungsform kann der neuromorphe Prozessor 4100 ohne Einschränkung eine rekonfigurierbare Zusammenschaltungsarchitektur oder dedizierte fest verdrahtete Zusammenschaltungen beinhalten, um die Synapse 4108 mit den Neuronen 4102 zu verbinden. In mindestens einer Ausführungsform kann der neuromorphe Prozessor 4100 ohne Einschränkung eine Schaltungsanordnung oder Logik umfassen, die es ermöglicht, dass Synapsen je nach Bedarf basierend auf der Topologie eines neuronalen Netzwerks und dem Fan-in/-out von Neuronen verschiedenen Neuronen 4102 zugewiesen werden können. Beispielsweise können in mindestens einer Ausführungsform Synapsen 4108 unter Verwendung einer Verbindungsstruktur, wie z. B. einem Netzwerk auf einem Chip, oder mit dedizierten Verbindungen mit Neuronen 4102 verbunden werden. In mindestens einer Ausführungsform können die Synapsenverbindungen und ihre Komponenten durch Schaltkreise oder Logik implementiert werden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 41 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 41 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 41 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 41 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 41 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 41 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 41 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 42 ist ein Blockdiagramm eines Verarbeitungssystems gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform weist das System 4200 einen oder mehrere Prozessoren 4202 und einen oder mehrere GPUen 4208 auf und kann ein Einzelprozessor-Desktop-System, ein Multiprozessor-Workstation-System oder ein Server-System mit einer großen Anzahl von Prozessoren 4202 oder Prozessorkernen 4207 sein. In mindestens einer Ausführungsform ist das System 4200 eine Verarbeitungsplattform, die in eine integrierte Schaltung als System auf einem Chip (SoC) zur Verwendung in mobilen, tragbaren oder eingebetteten Vorrichtungen integriert ist.
  • Bei mindestens einer Ausführungsform kann das System 4200 eine serverbasierte Spieleplattform, eine Spielekonsole, einschließlich einer Spiele- und Medienkonsole, eine mobile Spielekonsole, eine tragbare Spielekonsole oder eine Online-Spielekonsole beinhalten oder in diese integriert sein. In mindestens einer Ausführungsform ist das System 4200 ein Mobiltelefon, ein Smartphone, eine Tablet-Rechenvorrichtung oder eine mobile Internet-Vorrichtung. Bei mindestens einer Ausführungsform kann das Verarbeitungssystem 4200 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 4200 eine Fernseh- oder Set-Top-Box-Vorrichtung mit einem oder mehreren Prozessoren 4202 und einer grafischen Schnittstelle, die durch einen oder mehrere GPUen 4208 erzeugt wird.
  • In mindestens einer Ausführungsform beinhalten ein oder mehrere Prozessoren 4202 jeweils einen oder mehrere Prozessorkerne 4207, um Anweisungen zu verarbeiten, 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 4207 so ausgestaltet, dass er eine bestimmte Befehlsfolge 4209 verarbeitet. Bei mindestens einer Ausführungsform kann die Befehlsfolge 4209 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 4207 jeweils eine andere Befehlsfolge 4209 verarbeiten, die Befehle aufweisen kann, um die Emulation anderer Befehlsfolgen zu erleichtern. In mindestens einer Ausführungsform kann der Prozessorkern 4207 auch andere Verarbeitungsvorrichtungen beinhalten, z. B. einen digitalen Signalprozessor (DSP).
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 4202 einen Cache-Speicher 4204. In mindestens einer Ausführungsform kann der Prozessor 4202 einen einzelnen internen Cache oder mehrere Ebenen von internem Cache aufweisen. Bei mindestens einer Ausführungsform wird der Cache-Speicher von verschiedenen Komponenten des Prozessors 4202 gemeinsam genutzt. In mindestens einer Ausführungsform verwendet der Prozessor 4202 auch einen externen Cache (z. B. einen Level-3 (L3) Cache oder Last Level Cache (LLC)) (nicht dargestellt), der unter Verwendung bekannter Cache-Kohärenztechniken von den Prozessorkernen 4207 gemeinsam genutzt werden kann. In mindestens einer Ausführungsform ist zusätzlich eine Registerdatei 4206 im Prozessor 4202 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 4206 Vielzweckregister oder andere Register beinhalten.
  • In mindestens einer Ausführungsform sind ein oder mehrere Prozessoren) 4202 mit einem oder mehreren Schnittstellenbus(sen) 4210 gekoppelt, um Kommunikationssignale, wie etwa Adress-, Daten- oder Steuersignale, zwischen dem Prozessor 4202 und anderen Komponenten in dem System 4200 zu übertragen. Bei mindestens einer Ausführungsform kann der Schnittstellenbus 4210 ein Prozessorbus sein, beispielsweise eine Version eines Direct Media Interface-Busses (DMI-Busses). In mindestens einer Ausführungsform ist der Schnittstellenbus 4210 nicht auf einen DMI-Bus beschränkt, sondern kann einen oder mehrere Peripheral-Component-Interconnect-Busse (z. B. PCI, PCI Express), Speicherbusse oder andere Arten von Schnittstellenbussen beinhalten. In mindestens einer Ausführungsform schließen Prozessor(en) 4202 eine integrierte Speichersteuerung 4216 und einen Plattformsteuerungs-Hub 4230 ein. In mindestens einer Ausführungsform erleichtert die Speichersteuerung 4216 die Kommunikation zwischen einer Speichereinrichtung und anderen Komponenten des Systems 4200, während der Plattformsteuerungs-Hub (PCH) 4230 Verbindungen zu E/A-Vorrichtungen über einen lokalen E/A-Bus bereitstellt.
  • Bei mindestens einer Ausführungsform kann die Speichervorrichtung 4220 eine dynamische Direktzugriffsspeichervorrichtung (DRAM), eine statische Direktzugriffsspeichervorrichtung (SRAM), eine Flash-Speichervorrichtung, eine Phasenwechsel-Speichervorrichtung oder eine andere Speichervorrichtung mit geeigneter Leistung sein, um als Prozessspeicher zu dienen. In mindestens einer Ausführungsform kann die Speichervorrichtung 4220 als Systemspeicher für das System 4200 arbeiten, um Daten 4222 und Anweisungen 4221 zur Verwendung zu speichern, wenn ein oder mehrere Prozessoren 4202 eine Anwendung oder einen Prozess ausführen. In mindestens einer Ausführungsform ist die Speichersteuerung 4216 auch mit einem optionalen externen GPU 4212 gekoppelt, der mit einem oder mehreren GPUen 4208 in den Prozessoren 4202 kommunizieren kann, um Grafik- und Medienoperationen durchzuführen. In mindestens einer Ausführungsform kann eine Anzeigevorrichtung 4211 an den/die Prozessor(en) 4202 angeschlossen werden. Bei mindestens einer Ausführungsform kann die Anzeigevorrichtung 4211 eine oder mehrere interne Anzeigevorrichtungen, wie z. B. in einer mobilen elektronischen Vorrichtung oder einem Laptop, oder eine externe Anzeigevorrichtung, die über eine Anzeigeschnittstelle (z. B. DisplayPort usw.) angeschlossen ist, beinhalten. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 4211 eine am Kopf befestigte Anzeige (HMD) beinhalten, wie etwa eine stereoskopische Anzeigevorrichtung zur Verwendung bei Virtual-Reality-(VR-)Anwendungen oder Augmented-Reality-(AR-)Anwendungen.
  • In mindestens einer Ausführungsform ermöglicht der Plattformsteuerungs-Hub 4230 den Anschluss von Peripheriegeräten an die Speichervorrichtung 4220 und den Prozessor 4202 über einen Hochgeschwindigkeits-E/A-Bus. In mindestens einer Ausführungsform weisen die E/A-Peripheriegeräte unter anderem eine Audio-Steuerung 4246, eine Netzwerk-Steuerung 4234, eine Firmware-Schnittstelle 4228, einen drahtlosen Transceiver 4226, Berührungssensoren 4225 und eine Einrichtung zur Datenspeicherung 4224 (z. B. Festplattenlaufwerk, Flash-Speicher usw.) auf. In mindestens einer Ausführungsform kann die Datenspeichervorrichtung 4224 über eine Speicherschnittstelle (z. B. SATA) oder über einen Peripheriebus, wie zum Beispiel einen Peripheral-Component-Interconnect-Bus (z. B. PCI, PCI Express), verbunden sein. Bei mindestens einer Ausführungsform können die Berührungssensoren 4225 Touchscreen-Sensoren, Drucksensoren oder Fingerabdrucksensoren beinhalten. In mindestens einer Ausführungsform kann der drahtlose Transceiver 4226 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 4228 die Kommunikation mit der System-Firmware und kann zum Beispiel eine Unified Extensible Firmware Interface (UEFI) sein. In mindestens einer Ausführungsform kann die Netzwerksteuerung 4234 eine Netzwerkverbindung zu einem drahtgebundenen Netzwerk ermöglichen. In mindestens einer Ausführungsform ist eine Hochleistungsnetzwerksteuerung (nicht gezeigt) mit dem Schnittstellenbus 4210 gekoppelt. In mindestens einer Ausführungsform ist der Audiosteuerung 4246 ein Mehrkanal-High-Definition-Audiosteuerung. In mindestens einer Ausführungsform beinhaltet das System 4200 eine optionale ältere E/A-Steuerung 4240 zum Koppeln von älteren Vorrichtungen (z. B. Personal System 2 (PS/2)) an das System 4200. In mindestens einer Ausführungsform kann der Plattformsteuerungs-Hub 4230 auch mit einem oder mehreren Universal Serial Bus (USB)-Controllern 4242 verbunden werden, die Eingabevorrichtungen wie Tastatur- und Mauskombinationen 4243, eine Kamera 4244 oder andere USB-Eingabevorrichtungen anschließen.
  • In mindestens einer Ausführungsform kann eine Instanz der Speichersteuerung 4216 und des Plattformsteuerungs-Hubs 4230 in einen diskreten externen GPU, wie etwa den externen GPU 4212, integriert sein. In mindestens einer Ausführungsform kann der Plattformsteuerungs-Hub 4230 und/oder die Speichersteuerung 4216 extern bezüglich eines oder mehrerer Prozessor(en) 4202 sein. Zum Beispiel kann das System 4200 in mindestens einer Ausführungsform eine externe Speichersteuerung 4216 und einen Plattformsteuerungs-Hub 4230 aufweisen, der als Speichersteuerungs-Hub und Peripherie-Steuerungs-Hub innerhalb eines System-Chipsatzes ausgestaltet sein kann, der mit dem (den) Prozessor(en) 4202 in Verbindung steht.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 2315 in den GPU (en) 4208 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in einer 3D-Pipeline verkörperten ALUs verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 23A oder 23B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des GPUs (en) 4208 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 42 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 42 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 42 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 42 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 42 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 42 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 42 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 43 ist ein Blockdiagramm eines Prozessors 4300, der einen oder mehrere Prozessorkerne 4302A-4302N, eine integrierte Speichersteuerung 4314 und einen integrierten GPU 4308 aufweist, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozessor 4300 zusätzliche Kerne bis einschließlich des zusätzlichen Kerns 4302N beinhalten, die durch Kästen mit gestrichelten Linien dargestellt sind. In mindestens einer Ausführungsform weist jeder der Prozessorkerne 4302A-4302N eine oder mehrere interne Cache-Einheiten 4304A-4304N auf. In mindestens einer Ausführungsform weist jeder Prozessorkern auch Zugriff auf eine oder mehrere gemeinsamen Cache-Einheiten 4306 auf.
  • In mindestens einer Ausführungsform stellen die internen Cache-Einheiten 4304A-4304N und die gemeinsam genutzten Cache-Einheiten 4306 eine Cache-Speicherhierarchie innerhalb des Prozessors 4300 dar. In mindestens einer Ausführungsform können die Cache-Speicher-Einheiten 4304A-4304N mindestens ein Level von Anweisungs- und Daten-Cache innerhalb jedes Prozessorkerns und ein oder mehrere Levels von gemeinsam genutztem Cache mittleren Levels, wie z. B. ein Level 2 (L2), Level 3 (L3), Level 4 (L4) oder anderes Cache-Level, beinhalten, wobei ein höchstes Cache-Level vor dem externen Speicher als LLC klassifiziert ist. In mindestens einer Ausführungsform hält die Cache-Kohärenzlogik die Kohärenz zwischen verschiedenen Cache-Einheiten 4306 und 4304A-4304N aufrecht.
  • In mindestens einer Ausführungsform kann der Prozessor 4300 auch einen Satz von einer oder mehreren Bussteuerungseinheiten 4316 und einen Systemagentenkern 4310 aufweisen. In mindestens einer Ausführungsform verwalten Bussteuereinheiten 4316 einen Satz von peripheren Bussen, wie zum Beispiel einen oder mehrere PCI- oder PCI-Express-Busse. In mindestens einer Ausführungsform stellt der Systemagentenkern 4310 Verwaltungsfunktionen für verschiedene Prozessorkomponenten bereit. In mindestens einer Ausführungsform beinhaltet der Systemagentenkern 4310 eine oder mehrere integrierte Speichersteuerungen 4314, um den Zugriff auf diverse externe Speichervorrichtungen (nicht gezeigt) zu verwalten.
  • In mindestens einer Ausführungsform weist einer oder weisen mehrere der Prozessorkerne 4302A-4302N Unterstützung für gleichzeitiges Multithreading auf. In mindestens einer Ausführungsform weist der Systemagentenkern 4310 Komponenten zur Koordinierung und zum Betrieb der Kerne 4302A-4302N während der Multithreading-Verarbeitung auf. In mindestens einer Ausführungsform kann der Systemagentenkern 4310 zusätzlich eine Leistungssteuerungseinheit (PCU) aufweisen, die Logik und Komponenten zur Regelung eines oder mehrerer Leistungszustände der Prozessorkerne 4302A-4302N und des GPUs 4308 aufweist.
  • In mindestens einer Ausführungsform weist der Prozessor 4300 zusätzlich einen GPU 4308 zur Ausführung von Grafikverarbeitungsoperationen auf. In mindestens einer Ausführungsform ist der GPU 4308 mit gemeinsam genutzten Cache-Einheiten 4306 und dem Systemagentenkern 4310 gekoppelt, der eine oder mehrere integrierte Speichersteuerung 4314 beinhaltet. In mindestens einer Ausführungsform beinhaltet der Systemagentenkern 4310 zudem eine Anzeigesteuerung 4311, um die GPUausgabe an eine oder mehrere gekoppelte Anzeigen anzusteuern. In mindestens einer Ausführungsform kann die Anzeigesteuerung 4311 auch ein separates Modul sein, das mit dem GPU 4308 über mindestens eine Zusammenschaltung gekoppelt ist, oder kann innerhalb des GPUs 4308 integriert sein.
  • In mindestens einer Ausführungsform wird eine ringbasierte Verbindungseinheit 4312 verwendet, um interne Komponenten des Prozessors 4300 zu verbinden. In mindestens einer Ausführungsform kann eine alternative Zusammenschaltungseinheit verwendet werden, wie etwa eine Punkt-zu-Punkt-Zusammenschaltung, eine geschaltete Zusammenschaltung oder andere Techniken. In mindestens einer Ausführungsform ist der GPU 4308 mit der Ringzusammenschaltung 4312 über eine E/A-Verbindung 4313 gekoppelt.
  • In mindestens einer Ausführungsform stellt die E/A-Verbindung 4313 mindestens eine von mehreren Arten von E/A-Zusammenschaltungen dar, beinhaltend eine On-Package-E/A-Zusammenschaltung beinhaltet, welche die Kommunikation zwischen verschiedenen Prozessorkomponenten und einem eingebetteten Hochleistungsspeichermodul 4318 erleichtert, wie etwa als eDRAM-Modul. In mindestens einer Ausführungsform verwenden jeder der Prozessorkerne 4302A-4302N und der GPU 4308 das eingebettete Speichermodul 4318 als gemeinsamen Last Level Cache.
  • In mindestens einer Ausführungsform sind die Prozessorkerne 4302A-4302N homogene Kerne, die eine gemeinsame Befehlssatzarchitektur ausführen. In mindestens einer Ausführungsform sind die Prozessorkerne 4302A-4302N in Bezug auf die Anweisungssatzarchitektur (ISA) heterogen, wobei einer oder mehrere der Prozessorkerne 4302A-4302N einen gemeinsamen Anweisungssatz ausführt, während ein oder mehrere andere Kerne der Prozessorkerne 4302A-4302N einen Teilsatz eines gemeinsamen Anweisungssatzes oder einen anderen Anweisungssatz ausführen. In mindestens einer Ausführungsform sind die Prozessorkerne 4302A-4302N in Bezug auf die Mikroarchitektur heterogen, wobei ein oder mehrere Kerne mit einem relativ höheren Energieverbrauch mit einem oder mehreren Kernen mit einem niedrigeren Energieverbrauch gekoppelt sind. In mindestens einer Ausführungsform kann der Prozessor 4300 auf einem oder mehreren Chips oder als integrierte Schaltung (SoC) implementiert sein (z. B. ist der Prozessor 4300 elektronisch mit einem Beschleuniger oder einer oder mehreren GPUs gekoppelt, um ein SoC zu bilden).
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte oder die gesamte Inferenz- und/oder Trainingslogik 2315 in den Prozessor 4300 integriert sein. Zum Beispiel können in mindestens einer Ausführungsform die hier beschriebenen Trainings- und/oder Inferenzierungs-Verfahren eine oder mehrere ALUs verwenden, die in einer 3D-Pipeline, (einem) Grafikkern(en) 4302, einer gemeinsamen Funktionslogik oder einer anderen Logik in 43 enthalten sind. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 23A oder 23B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Prozessors 4300 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 43 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 43 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 43 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 43 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 43 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 43 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 43 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 44 ist ein Blockdiagramm eines GPUs 4400, bei dem es sich um eine diskrete Grafikverarbeitungseinheit oder um einen mit einer Vielzahl von Verarbeitungskernen integrierten GPU handeln kann. In mindestens einer Ausführungsform kommuniziert der GPU 4400 über eine einem Speicher zugeordnete E/A-Schnittstelle mit Registern auf dem GPU 4400 und mit Befehlen, die im Speicher abgelegt sind. In mindestens einer Ausführungsform weist der GPU 4400 eine Speicherschnittstelle 4414 für den Zugriff auf den Speicher auf. Bei mindestens einer Ausführungsform ist die Speicherschnittstelle 4414 eine Schnittstelle zum lokalen Speicher, einem oder mehreren internen Caches, einem oder mehreren gemeinsam genutzten externen Caches und/oder zum Systemspeicher.
  • In mindestens einer Ausführungsform beinhaltet der GPU 4400 zudem eine Anzeigesteuerung 4402, um Anzeigeausgabedaten zu einer Anzeigevorrichtung 4420 zu treiben. In mindestens einer Ausführungsform weist die Anzeigesteuerung 4402 Hardware für eine oder mehrere Überlagerungsebenen für die Anzeigeeinrichtung 4420 und die Zusammensetzung mehrerer Schichten von Video- oder Benutzerschnittstellenelementen auf. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 4420 eine interne oder externe Anzeigevorrichtung sein. Bei mindestens einer Ausführungsform handelt es sich bei der Anzeigevorrichtung 4420 um eine am Kopf getragene Anzeigevorrichtung, wie z. B. eine Virtual-Reality- (VR-) Anzeigevorrichtung oder eine Augmented-Reality- (AR-) Anzeigevorrichtung. In mindestens einer Ausführungsform weist der GPU 4400 eine Videocodec-Maschine 4406 auf, um Medien in, aus oder zwischen einem oder mehreren Mediencodierformaten zu codieren, zu decodieren oder zu transcodieren, einschließlich, aber nicht beschränkt auf Moving Picture Experts Group (MPEG)-Formate wie MPEG-2, Advanced Video Coding (AVC)-Formate wie H.264 /MPEG-4 AVC, sowie die Society of Motion Picture & Television Engineers (SMPTE) 421 M/VC-1 und Joint Photographic Experts Group (JPEG) Formate wie JPEG und Motion JPEG (MJPEG) Formate.
  • In mindestens einer Ausführungsform beinhaltet der GPU 4400 eine Block-Image-Transfer-(BLIT-)Maschine 4404, um zweidimensionale (2D) Rastereroperationen durchzuführen, einschließlich zum Beispiel Bit-Boundary Block Transfers. In mindestens einer Ausführungsform werden 2D-Grafikoperationen jedoch mit einer oder mehreren Komponenten der Grafikverarbeitungsmaschine (GPE) 4410 durchgeführt. In mindestens einer Ausführungsform ist die GPE 4410 eine Rechenmaschine zur Durchführung von Grafikoperationen, die dreidimensionale (3D) Grafikoperationen und Medienoperationen einschließen.
  • In mindestens einer Ausführungsform beinhaltet die GPE 4410 eine 3D-Pipeline 4412 zum Durchführen von 3D-Operationen, wie etwa Rendern dreidimensionaler Bilder und Szenen unter Verwendung von Verarbeitungsfunktionen, die an 3D-Primitivformen (z. B. Rechteck, Dreieck usw.) wirken. Die 3D-Pipeline 4412 weist in mindestens einer Ausführungsform programmierbare und feste Funktionselemente auf, die verschiedene Aufgaben ausführen und/oder Ausführungs-Threads zu einem 3D/Media-Subsystem 4415 erstellen. Während die 3D-Pipeline 4412 zur Durchführung von Medienoperationen verwendet werden kann, weist die GPE 4410 in mindestens einer Ausführungsform auch eine Medien-Pipeline 4416 auf, die zur Durchführung von Medienoperationen, wie Videonachbearbeitung und Bildverbesserung, verwendet wird.
  • In mindestens einer Ausführungsform beinhaltet die Medien-Pipeline 4416 Festfunktions- oder programmierbare Logikeinheiten, um eine oder mehrere spezialisierte Medienoperationen durchzuführen, wie etwa Beschleunigung von Videodecodierung, Videoentschachtelung und Beschleunigung von Videocodierung anstelle oder im Auftrag der Videocodec-Maschine 4406. In mindestens einer Ausführungsform weist die Medien-Pipeline 4416 zusätzlich eine Thread-Spawning-Einheit auf, um Threads zur Ausführung im 3D/Media-Subsystem 4415 zu erstellen. In mindestens einer Ausführungsform führen die erstellten Threads Berechnungen für Medienoperationen auf einer oder mehreren Grafikausführungseinheiten durch, die im 3D/Media-Subsystem 4415 vorhanden sind.
  • In mindestens einer Ausführungsform beinhaltet das 3D-/Medienteilsystem 4415 Logik zum Ausführen von Threads, die durch die 3D-Pipeline 4412 und die Medien-Pipeline 4416 erzeugt werden. In mindestens einer Ausführungsform senden die 3D-Pipeline 4412 und die Medien-Pipeline 4416 Thread-Ausführungsanforderungen an das 3D/Media-Teilsystem 4415, das eine Thread-Verteilungslogik aufweist, um verschiedene Anforderungen an verfügbare Thread-Ausführungsressourcen zu vermitteln und zu verteilen. In mindestens einer Ausführungsform beinhalten die Ausführungsressourcen ein Array von Grafikausführungseinheiten zum Verarbeiten von 3D- und Medien-Threads. In mindestens einer Ausführungsform weist das 3D/Media-Teilsystem 4415 einen oder mehrere interne Caches für Thread-Anweisungen und -Daten auf. In mindestens einer Ausführungsform beinhaltet das Teilsystem 4415 auch einen gemeinsam genutzten Speicher, einschließlich Registern und adressierbaren Speichers, um Daten zwischen Threads gemeinsam zu nutzen und Ausgabedaten zu speichern.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 2315 in den GPU 4400 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hier beschriebenen Trainings- und/oder Inferenzierungs-Verfahren eine oder mehrere ALUs in einer 3D-Pipeline 4412 verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 23A oder 23B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des GPUs 4400 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 44 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 44 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 44 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 44 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 44 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 44 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 44 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 45 ist ein Blockdiagramm einer Grafikverarbeitungsmaschine 4510 eines GPUs gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist die Grafikverarbeitungsmaschine (GPE) 4510 eine Version der in 44 gezeigten GPE 4410. In mindestens einer Ausführungsform ist die Medien-Pipeline 4516 optional und darf nicht ausdrücklich in der GPE 4510 vorhanden sein. Bei mindestens einer Ausführungsform ist ein separater Medien- und/oder Bildprozessor mit der GPE 4510 verbunden.
  • In mindestens einer Ausführungsform ist die GPE 4510 an einen Befehls-Streamer 4503 gekoppelt oder sie beinhaltet einen solchen, der einer 3D-Pipeline 4512 und/oder der Medien-Pipeline 4516 einen Befehlsstream bereitstellt. Bei mindestens einer Ausführungsform ist der Befehlsstreamer 4503 mit einem Speicher gekoppelt, bei dem es sich um einen Systemspeicher oder um einen oder mehrere interne Cache-Speicher und gemeinsam genutzte Cache-Speicher handeln kann. In mindestens einer Ausführungsform empfängt der Befehlsstreamer 4503 Befehle vom Speicher und sendet Befehle an die 3D-Pipeline 4512 und/oder die Medien-Pipeline 4516. In mindestens einer Ausführungsform handelt es sich bei den Befehlen um Anweisungen, Primitive oder Mikrooperationen, die aus einem Ringpuffer abgerufen werden, der Befehle für die 3D-Pipeline 4512 und die Medien-Pipeline 4516 speichert. In mindestens einer Ausführungsform kann ein Ringpuffer zusätzlich Batch-Befehlspuffer beinhalten, die Batches von mehreren Befehlen speichern. In mindestens einer Ausführungsform können die Befehle für die 3D-Pipeline 4512 auch Verweise auf im Speicher gespeicherte Daten aufweisen, wie z. B. Vertex- und Geometriedaten für die 3D-Pipeline 4512 und/oder Bilddaten und Speicherobjekte für die Medien-Pipeline 4516. In mindestens einer Ausführungsform verarbeiten die 3D-Pipeline 4512 und die Medien-Pipeline 4516 Befehle und Daten, indem sie Operationen durchführen oder einen oder mehrere Ausführungsthreads an eine Grafikkernanordnung 4514 weiterleiten. In mindestens einer Ausführungsform weist die Grafikkernanordnung 4514 einen oder mehrere Blöcke von Grafikkernen auf (z. B. Grafikkern(e) 4515A, Grafikkern(e) 4515B), wobei jeder Block einen oder mehrere Grafikkerne aufweist. In mindestens einer Ausführungsform beinhaltet jeder Grafikkern einen Satz von Grafikausführungsressourcen, der eine Universal- und eine grafikspezifische Ausführungslogik zum Durchführen von Grafik- und Rechenoperationen sowie Logik zur Texturverarbeitung mit fester Funktion und/oder zur Beschleunigung des maschinellen Lernens und der künstlichen Intelligenz, einschließlich der Inferenz- und/oder Trainingslogik 2315 in 23A und 23B, beinhaltet.
  • In mindestens einer Ausführungsform beinhaltet die 3D-Pipeline 4512 Festfunktionslogik und programmierbare Logik, um ein oder mehrere Shader-Programme, wie etwa Vertex-Shader, Geometrie-Shader, Pixel-Shader, Fragment-Shader, RechenShader oder andere Shader-Programme, zu verarbeiten, indem Anweisungen verarbeitet und Ausführungs-Threads dem Grafikkernarray 4514 zugeteilt werden. In mindestens einer Ausführungsform stellt die Grafikkernanordnung 4514 einen einheitlichen Block von Ausführungsressourcen zur Verwendung bei der Verarbeitung von Shader-Programmen bereit. In mindestens einer Ausführungsform weist die Mehrzweck-Ausführungslogik (z. B. Ausführungseinheiten) in den Grafikkernen 4515A-4515B der Grafikkernanordnung 4514 Unterstützung für verschiedene 3D-API-Shader-Sprachen auf und kann mehrere gleichzeitige Ausführungs-Threads ausführen, die mehreren Shadern zugeordnet sind.
  • In mindestens einer Ausführungsform beinhaltet die Grafikkernanordnung 4514 auch Ausführungslogik zur Ausführung von Medienfunktionen, wie z. B. Video- und/oder Bildverarbeitung. In mindestens einer Ausführungsform beinhalten die Ausführungseinheiten zusätzlich Universallogik, die so programmiert werden kann, dass sie zusätzlich zu Grafikverarbeitungsoperationen parallele Universalrechenoperationen durchführt.
  • In mindestens einer Ausführungsform können Ausgabedaten, die durch Threads erzeugt werden, die auf dem Grafikkernarray 4514 ausgeführt werden, Daten in einem einheitlichen Rückgabepuffer (URB) 4518 an Speicher ausgeben. Der URB 4518 kann bei mindestens einer Ausführungsform Daten für mehrere Threads speichern. In mindestens einer Ausführungsform kann der URB 4518 verwendet werden, um Daten zwischen verschiedenen Threads zu senden, die auf der Grafikkernanordnung 4514 ausgeführt werden. In mindestens einer Ausführungsform kann der URB 4518 zusätzlich zur Synchronisation zwischen Threads auf der Grafikkernanordnung 4514 und der Festfunktionslogik innerhalb der gemeinsam genutzten Funktionslogik 4520 verwendet werden.
  • In mindestens einer Ausführungsform ist das Grafikkernarray 4514 skalierbar, sodass das Grafikkernarray 4514 eine variable Anzahl von Grafikkernen beinhaltet, die jeweils eine variable Anzahl von Ausführungseinheiten auf Grundlage eines angestrebten Leistungs- und Rechenleistungslevels der GPE 4510 aufweisen. In mindestens einer Ausführungsform sind die Ausführungsressourcen dynamisch skalierbar, sodass die Ausführungsressourcen nach Bedarf aktiviert oder deaktiviert werden können.
  • In mindestens einer Ausführungsform ist das Grafikkernarray 4514 an die gemeinsam genutzte Funktionslogik 4520 gekoppelt, die mehrere Ressourcen beinhaltet, die von den Grafikkernen in dem Grafikkernarray 4514 gemeinsam genutzt werden. In mindestens einer Ausführungsform sind die gemeinsam genutzten Funktionen, die von der gemeinsam genutzten Funktionslogik 4520 ausgeführt werden, in Hardware-Logikeinheiten verkörpert, die der Grafikkernanordnung 4514 eine spezielle Zusatzfunktionalität bieten. In mindestens einer Ausführungsform weist die gemeinsam genutzte Funktionslogik 4520 unter anderem eine Sampler-Einheit 4521, eine Mathematik-Einheit 4522 und eine Inter-Thread-Kommunikations- (ITC-) 4523 Logik auf. In mindestens einer Ausführungsform sind ein oder mehrere Cache(s) 4525 in der gemeinsam genutzten Funktionslogik 4520 vorhanden oder mit ihr gekoppelt.
  • In mindestens einer Ausführungsform wird eine gemeinsam genutzte Funktion verwendet, wenn die Nachfrage nach einer spezialisierten Funktion für die Aufnahme in die Grafikkernanordnung 4514 nicht ausreicht. In mindestens einer Ausführungsform wird eine einzelne Instanziierung einer spezialisierten Funktion in der gemeinsam genutzten Funktionslogik 4520 verwendet und von anderen Ausführungsressourcen innerhalb der Grafikkernanordnung 4514 gemeinsam genutzt. In mindestens einer Ausführungsform können bestimmte gemeinsam genutzte Funktionen innerhalb der gemeinsam genutzten Funktionslogik 4520, die vom der Grafikkernanordnung 4514 intensiv genutzt werden, in der gemeinsam genutzten Funktionslogik 4526 innerhalb der Grafikkernanordnung 4514 vorhanden sein. In mindestens einer Ausführungsform kann die gemeinsam genutzte Funktionslogik 4526 innerhalb des Grafikkernarrays 4514 einen Teil der oder die gesamte Logik innerhalb der gemeinsam genutzten Funktionslogik 4520 beinhalten. In mindestens einer Ausführungsform können alle Logikelemente innerhalb der gemeinsam genutzten Funktionslogik 4520 innerhalb der gemeinsam genutzten Funktionslogik 4526 der Grafikkernanordnung 4514 dupliziert sein. In mindestens einer Ausführungsform ist die gemeinsam genutzte Funktionslogik 4520 zugunsten der gemeinsam genutzten Funktionslogik 4526 innerhalb der Grafikkernanordnung 4514 ausgeschlossen.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 2315 in den GPU 4510 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in der 3D-Pipeline 4512 verkörperten ALUs, Grafikkern(e) 4515, gemeinsam genutzte Logik 4526, gemeinsam genutzte Logik 4520 oder andere Logik in 45 verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 23A oder 23B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des GPUs 4510 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 45 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 45 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 45 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 45 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 45 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 45 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 45 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 46 ist ein Blockdiagramm von Hardware-Logik eines GPUkerns 4600 gemäß mindestens einer hierin beschriebenen Ausführungsform. In mindestens einer Ausführungsform ist der GPUkern 4600 in einer Grafikkernanordnung enthalten. Bei mindestens einer Ausführungsform kann der GPUkern 4600, der manchmal auch als Kern-Slice bezeichnet wird, ein oder mehrere Grafikkerne innerhalb eines modularen GPUs sein. In mindestens einer Ausführungsform ist der GPUkern 4600 beispielhaft für eine Grafikkern-Slice und ein GPU, wie hierin beschrieben, kann auf Grundlage der angestrebten Leistungs- und Rechenleistungshüllkurven mehrere Grafikkern-Slicen beinhalten. In mindestens einer Ausführungsform kann jeder Grafikkern 4600 einen festen Funktionsblock 4630 beinhalten, der mit mehreren Teilkernen 4601A-4601F gekoppelt ist, die auch als Slice bezeichnet werden und modulare Blöcke von Mehrzweck- und Festfunktionslogik beinhalten.
  • In mindestens einer Ausführungsform beinhaltet der Festfunktionsblock 4630 eine Geometrie- und Festfunktionspipeline 4636, die von allen Teilkernen in dem GPU 4600 gemeinsam genutzt werden kann, zum Beispiel in Implementationen mit GPUen mit niedrigerer Rechenleistung und/oder niedrigerer Leistung. In mindestens einer Ausführungsform weist die Geometrie/Festfunktionspipeline 4636 eine 3D-Festfunktionspipeline, eine Video-Frontend-Einheit, einen Thread-Spawner und Thread-Dispatcher sowie einen Unified-Return-Puffer-Manager auf, der Unified-Return-Puffer verwaltet.
  • In mindestens einer Ausführungsform beinhaltet der Festfunktionsblock 4630 auch eine Grafik-SoC-Schnittstelle 4637, einen Grafik-Mikrocontroller 4638 und eine Medien-Pipeline 4639. Die Grafik-SoC-Schnittstelle 4637 stellt in mindestens einer Ausführungsform eine Schnittstelle zwischen dem Grafikkern 4600 und anderen Prozessorkernen innerhalb einer integrierten System-on-Chip-Schaltung bereit. In mindestens einer Ausführungsform ist der Grafik-Mikrocontroller 4638 ein programmierbarer Unterprozessor, der dazu konfiguriert werden kann, verschiedene Funktionen des GPUs 4600 zu verwalten, einschließlich Thread-Versand, Zeitplanung und Preemption. Bei mindestens einer Ausführungsform weist die Medien-Pipeline 4639 eine Logik auf, die die Dekodierung, Kodierung, Vorverarbeitung und/oder Nachbearbeitung von Multimediadaten, einschließlich Bild- und Videodaten, erleichtert. In mindestens einer Ausführungsform implementiert die Medien-Pipeline 4639 Medienoperationen über Anforderungen an die Rechen- oder Sample-Logik innerhalb der Teilkerne 4601A-4601 F.
  • In mindestens einer Ausführungsform ermöglicht die SoC-Schnittstelle 4637 dem Grafikkern 4600 die Kommunikation mit Universal-Anwendungsprozessorkernen (z. B. CPUs) und/oder anderen Komponenten innerhalb eines SoCs, einschließlich Speicherhierarchieelementen, wie zum Beispiel einem gemeinsam genutzten Last-Level-Cache-Speicher, System-RAM und/oder eingebettetem chipinternen oder gehäuseinternen DRAM. In mindestens einer Ausführungsform kann die SoC-Schnittstelle 4637 auch die Kommunikation mit Vorrichtungen mit fester Funktion innerhalb eines SoC ermöglichen, wie etwa Kamera-Bildgebungspipelines, und sie ermöglicht die Nutzung und/oder Implementierung globaler Speicher-Atome, die von Grafikkern 4600 und CPUs innerhalb eines SoC gemeinsam genutzt werden können. In mindestens einer Ausführungsform kann die Grafik-SoC-Schnittstelle 4637 auch Energieverwaltungssteuerungen für den GPUkern 4600 implementieren und eine Schnittstelle zwischen einer Taktdomäne des GPUkerns 4600 und anderen Taktdomänen innerhalb eines SoCs ermöglichen. Bei mindestens einer Ausführungsform ermöglicht die SoC-Schnittstelle 4637 den Empfang von Befehlspuffern von einem Befehlsstreamer und einem globalen Thread-Dispatcher, die so ausgestaltet sind, dass sie Befehle und Anweisungen für jeden von einem oder mehreren Grafikkernen innerhalb eines GPUs bereitstellen. In mindestens einer Ausführungsform können Befehle und Anweisungen an die Medien-Pipeline 4639 gesendet werden, wenn Medienoperationen durchgeführt werden sollen, oder an eine Geometrie- und Festfunktionspipeline (z. B. Geometrie- und Festfunktionspipeline 4636 und/oder Geometrie- und Festfunktionspipeline 4614) gesendet werden, wenn Grafikverarbeitungsoperationen durchgeführt werden sollen.
  • In mindestens einer Ausführungsform kann der Grafik-Mikrocontroller 4638 so konfiguriert sein, dass er verschiedene Planungs- und Verwaltungsaufgaben für den Grafikkern 4600 durchführt. In mindestens einer Ausführungsform kann der Grafik-Mikrocontroller 4638 die Planung von Grafik- und/oder Rechenaufgaben auf verschiedenen parallelen Grafikengines innerhalb von Anordnungen 4602A-4602F, 4604A-4604F von Ausführungseinheiten (EU) innerhalb der Teilkerne 4601A-4601 F durchführen. Bei mindestens einer Ausführungsform kann eine Host-Software, die auf einem CPU-Kern eines SoC ausgeführt wird, der den Grafikkern 4600 aufweist, Arbeitslasten an einen von mehreren GPU-Pfaden übermitteln, die einen Planungsvorgang auf einer geeigneten Grafikmaschine aufruft. In mindestens einer Ausführungsform beinhalten die Planungsoperationen das Bestimmen der als nächstes auszuführenden Arbeitslast, das Übermitteln einer Arbeitslast an einen Befehlsstreamer, das Vorziehen bestehender Arbeitslasten, die auf einer Maschine laufen, das Überwachen des Fortschritts einer Arbeitslast und das Benachrichtigen der Host-Software, wenn eine Arbeitslast abgeschlossen ist. In mindestens einer Ausführungsform kann der Grafik-Mikrocontroller 4638 auch stromsparende Zustände oder Leerlaufzustände für den Grafikkern 4600 erleichtern, indem er dem Grafikkern 4600 die Möglichkeit bietet, Register innerhalb des Grafikkerns 4600 über stromsparende Zustandsübergänge unabhängig von einem Betriebssystem und/oder einer Grafiktreibersoftware auf einem System zu speichern und wiederherzustellen.
  • In mindestens einer Ausführungsform kann der Grafikkern 4600 mehr oder weniger als die veranschaulichten Teilkerne 4601A-4601 F aufweisen, bis zu N modulare Teilkerne. In mindestens einer Ausführungsform kann der Grafikkern 4600 für jeden Satz von N Unterkernen auch eine gemeinsam genutzte Funktionslogik 4610, einen gemeinsam genutzten und/oder Cache-Speicher 4612, eine Geometrie-/Festfunktionspipeline 4614 sowie eine zusätzliche Festfunktionslogik 4616 aufweisen, um verschiedene Grafik- und Rechenverarbeitungsvorgänge zu beschleunigen. In mindestens einer Ausführungsform kann die gemeinsam genutzte Funktionslogik 4610 logische Einheiten beinhalten (z. B. Sampler, Mathematik und/oder Inter-Thread-Kommunikationslogik), die von jedem der N Teilkerne innerhalb des Grafikkerns 4600 gemeinsam genutzt werden können. Gemeinsamer und/oder Cache-Speicher 4612 kann in mindestens einer Ausführungsform ein Cache der letzten Ebene für N Unterkerne 4601 A-4601 F innerhalb des Grafikkerns 4600 sein und kann auch als gemeinsamer Speicher dienen, auf den mehrere Unterkerne zugreifen können. In mindestens einer Ausführungsform kann die Geometrie-/Festfunktionspipeline 4614 anstelle der Geometrie-/Festfunktionspipeline 4636 innerhalb des Festfunktionsblocks 4630 vorhanden sein und kann gleiche oder ähnliche Logikeinheiten aufweisen.
  • In mindestens einer Ausführungsform beinhaltet der Grafikkern 4600 zusätzliche Festfunktionslogik 4616, die verschiedene Festfunktionsbeschleunigungslogik zur Verwendung durch den Grafikkern 4600 beinhalten kann. Bei mindestens einer Ausführungsform weist die zusätzliche Festfunktionslogik 4616 eine zusätzliche Geometriepipeline zur Verwendung beim positionsgebundenen Shading auf. Bei dem positionsgebundenen Shading gibt es mindestens zwei Geometriepipelines, nämlich eine vollständige Geometriepipeline innerhalb der Geometrie- und Festfunktionspipelines 4614, 4636, und eine Cull-Pipeline, die eine zusätzliche Geometriepipeline ist und in der eine zusätzliche Festfunktionslogik 4616 enthalten sein kann. In mindestens einer Ausführungsform ist eine Culling-Pipeline eine abgespeckte Version einer vollständigen Geometriepipeline. In mindestens einer Ausführungsform können eine vollständige Pipeline und eine Auslesepipeline verschiedene Instanzen einer Anwendung ausführen, wobei jede Instanz einen getrennten Kontext aufweist. In mindestens einer Ausführungsform kann das positionsbezogene Shading lange Cull-Läufe von verworfenen Dreiecken ausblenden, so dass das Shading in einigen Fällen früher abgeschlossen werden kann. Zum Beispiel kann in mindestens einer Ausführungsform die Cull-Pipeline-Logik innerhalb der zusätzlichen Festfunktionslogik 4616 Positions-Shader parallel zu einer Hauptanwendung ausführen und generiert im Allgemeinen kritische Ergebnisse schneller als eine vollständige Pipeline, da die Cull-Pipeline die Positionsattribute von Vertices abruft und schattiert, ohne eine Rasterung und ein Rendering von Pixeln in einen Frame-Puffer durchzuführen. In mindestens einer Ausführungsform kann eine Culling-Pipeline erzeugte kritische Ergebnisse verwenden, um Sichtbarkeitsinformationen für alle Dreiecke zu berechnen, ohne Rücksicht darauf, ob diese Dreiecke Culling unterzogen werden. In mindestens einer Ausführungsform kann eine vollständige Pipeline (die in diesem Fall als Wiederholungspipeline bezeichnet werden kann) Sichtbarkeitsinformationen verbrauchen, um Culling unterzogene Dreiecke zu überspringen, um nur sichtbare Dreiecke zu schattieren, die schließlich an eine Rasterungsphase übergeben werden.
  • In mindestens einer Ausführungsform kann die zusätzliche Festfunktionslogik 4616 auch Logik zur Beschleunigung des maschinellen Lernens wie etwa Festfunktions-Matrixmultiplikationslogik für Implementationen beinhalten, die Optimierungen für das Training oder das Inferenzen des maschinellen Lernens beinhalten.
  • In mindestens einer Ausführungsform beinhaltet jeder Grafikteilkern 4601A-4601 F einen Satz von Ausführungsressourcen, die verwendet werden können, um Grafik-, Medien- und Rechenoperationen als Reaktion auf Anforderungen durch Grafikpipeline-, Medien-Pipeline- oder Shader-Programme durchzuführen. In mindestens einer Ausführungsform weisen die Grafikteilkere 4601A-4601 F mehrere EU-Arrays 4602A-4602F, 4604A-4604F, eine Thread-Dispatch- und Inter-Thread-Kommunikationslogik (TD/IC) 4603A-4603F, einen 3D-Sampler (z. B. Textur) 4605A-4605F, einen Media-Sampler 4606A-4606F, einen Shader-Prozessor 4607A-4607F und einen gemeinsamen lokalen Speicher (SLM) 4608A-4608F auf. Die EU-Anordnungen 4602A-4602F, 4604A-4604F weisen in mindestens einer Ausführungsform jeweils mehrere Ausführungseinheiten auf, bei denen es sich um Allzweck-Grafikverarbeitungseinheiten handelt, die in der Lage sind, Gleitkomma- und Ganzzahl-/Festkomma-Logikoperationen bei einer Grafik-, Medien- oder Rechenoperation, einschließlich Grafik-, Medien- oder Rechenshader-Programmen, durchzuführen. In mindestens einer Ausführungsform führt die TD/IC-Logik 4603A-4603F lokale Thread-Dispatch- und Thread-Steuerungsoperationen für Ausführungseinheiten innerhalb eines Teilkerns durch und erleichtert die Kommunikation zwischen Threads, die auf Ausführungseinheiten eines Unterkerns ausgeführt werden. In mindestens einer Ausführungsform können die 3D-Sampler 4605A-4605F Textur- oder andere 3D-Grafikdaten in den Speicher einlesen. In mindestens einer Ausführungsform können die 3D-Samplers Texturdaten auf Grundlage eines konfigurierten Sample-Zustands und eines Texturformats, das mit einer gegebenen Textur assoziiert ist, unterschiedlich lesen. In mindestens einer Ausführungsform können die Mediensampler 4606A-4606F ähnliche Lesevorgänge auf der Grundlage eines Typs und Formats durchführen, die mit den Mediendaten verbunden sind. In mindestens einer Ausführungsform kann jeder Grafikteilkern 4601A-4601 F abwechselnd einen vereinheitlichten 3D- und Medien-Sampler beinhalten. In mindestens einer Ausführungsform können Threads, die auf Ausführungseinheiten innerhalb jedes der Teilkerne 4601A-4601 F ausgeführt werden, den gemeinsamen lokalen Speicher 4608A-4608F innerhalb jedes Teilkerns nutzen, um Threads, die innerhalb einer Thread-Gruppe ausgeführt werden, die Ausführung unter Verwendung eines gemeinsamen Pools von On-Chip-Speicher zu ermöglichen.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 2315 in den GPU 4600 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hier beschriebenen Trainings- und/oder Inferenzierungs-Verfahren eine oder mehrere ALUs verwenden, die in einer 3D-Pipeline, einem Grafik-Mikrocontroller 4638, einer Geometrie- und Festfunktionspipeline 4614 und 4636 oder einer anderen Logik in 46 enthalten sind. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 23A oder 23B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des GPUs 4600 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 46 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 46 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 46 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 46 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 46 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 46 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 46 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 47A-47B veranschaulichen Thread-Ausführungslogik 4700, die ein Array von Verarbeitungselementen eines GPUkerns beinhaltet, gemäß mindestens einer Ausführungsform. 47A illustriert mindestens eine Ausführungsform, in der die Thread-Ausführungslogik 4700 verwendet wird. 47B illustriert beispielhafte interne Details einer Grafik-Ausführungseinheit 4708 gemäß mindestens einer Ausführungsform.
  • Wie es in 47A dargestellt ist, weist die Thread-Ausführungslogik 4700 in mindestens einer Ausführungsform einen Shader-Prozessor 4702, einen Thread-Dispatcher 4704, einen Befehls-Cache 4706, eine skalierbare Ausführungseinheitenanordnung mit einer Vielzahl von Ausführungseinheiten 4707A-4707N und 4708A-4708N, einen Sampler 4710, einen Daten-Cache 4712 und einen Datenanschluss 4714 auf. In mindestens einer Ausführungsform kann eine skalierbare Ausführungseinheitenanordnung dynamisch skaliert werden, indem eine oder mehrere Ausführungseinheiten (z. B. eine der Ausführungseinheiten 4708A-N oder 4707A-N) auf der Grundlage der Rechenanforderungen einer Arbeitslast aktiviert oder deaktiviert werden. In mindestens einer Ausführungsform sind die skalierbaren Ausführungseinheiten über eine Zusammenschaltungsstruktur zusammengeschaltet, die mit jeder Ausführungseinheit verknüpft ist. In mindestens einer Ausführungsform weist die Thread-Ausführungslogik 4700 eine oder mehrere Verbindungen zum Speicher auf, z. B. zum Systemspeicher oder zum Cache-Speicher, und zwar über einen oder mehrere der folgenden Elemente: Befehlscache 4706, Datenanschluss 4714, Sampler 4710 und Ausführungseinheiten 4707 oder 4708. In mindestens einer Ausführungsform ist jede Ausführungseinheit (z. B. 4707A) eine eigenständige programmierbare Universalrecheneinheit, die dazu in der Lage ist, mehrere simultane Hardware-Threads auszuführen, während mehrere Datenelemente parallel für jeden Thread verarbeitet werden. In mindestens einer Ausführungsform ist die Anordnung der Ausführungseinheiten 4707 und/oder 4708 so skalierbar, dass sie eine beliebige Anzahl einzelner Ausführungseinheiten aufweist.
  • In mindestens einer Ausführungsform werden die Ausführungseinheiten 4707 und/oder 4708 hauptsächlich zum Ausführen von Shader-Programmen verwendet. In mindestens einer Ausführungsform kann der Shader-Prozessor 4702 verschiedene Shader-Programme verarbeiten und den Shader-Programmen zugeordnete Ausführungs-Threads über einen Thread-Zuteiler 4704 zuteilen. In mindestens einer Ausführungsform weist der Thread-Dispatcher 4704 eine Logik auf, um Thread-Initiierungsanforderungen von Grafik- und Medien-Pipelines zu vermitteln und angeforderte Threads auf einer oder mehreren Ausführungseinheiten in den Ausführungseinheiten 4707 und/oder 4708 zu instanziieren. Zum Beispiel kann in mindestens einer Ausführungsform eine Geometriepipeline Vertex-, Tesselierungs- oder Geometrie-Shader der Thread-Ausführungslogik zum Verarbeiten zuteilen. In mindestens einer Ausführungsform kann der Thread-Verteiler 4704 auch Laufzeit-Thread-Spawning-Anforderungen von ausführenden Shader-Programmen verarbeiten.
  • In mindestens einer Ausführungsform unterstützen die Ausführungseinheiten 4707 und/oder 4708 einen Anweisungssatz, der systemeigene Unterstützung für viele Standard-3D-Grafik-Shader-Anweisungen beinhaltet, sodass Shader-Programme aus Grafikbibliotheken (z. B. Direct 3D und OpenGL) mit einer minimalen Übersetzung ausgeführt werden. In mindestens einer Ausführungsform unterstützen die Ausführungseinheiten Vertex- und Geometrieverarbeitung (z. B. Vertexprogramme, Geometrieprogramme und/oder Vertex-Shader), Pixelverarbeitung (z. B. Pixel-Shader, Fragment-Shader) und Universalverarbeitung (z. B. Rechen- und Medien-Shader). In mindestens einer Ausführungsform ist jede der Ausführungseinheiten 4707 und/oder 4708, die eine oder mehrere arithmetische Logikeinheiten (ALUs) aufweisen, zur SIMD-Ausführung (Single Instruction Multiple Data) fähig, und der Multi-Thread-Betrieb ermöglicht trotz höherer Latenzzeiten bei Speicherzugriffen eine effiziente Ausführungsumgebung. In mindestens einer Ausführungsform verfügt jeder Hardware-Thread innerhalb jeder Ausführungseinheit über eine eigene Registerdatei mit hoher Bandbreite und einen zugehörigen unabhängigen Thread-Zustand. In mindestens einer Ausführungsform erfolgt die Ausführung in Pipelines, die Ganzzahl-, Gleitkomma- und Doppelpräzisionsoperationen, SIMD-Verzweigungsfähigkeit, logische Operationen, transzendentale Operationen und andere verschiedene Operationen ausführen können, in mehreren Schritten pro Takt. In mindestens einer Ausführungsform bewirkt die Abhängigkeitslogik in den Ausführungseinheiten 4707 und/oder 4708, dass ein wartender Thread in den Ruhezustand versetzt wird, bis die angeforderten Daten zurückgegeben wurden, während er auf Daten aus dem Speicher oder einer der gemeinsam genutzten Funktionen wartet. In mindestens einer Ausführungsform können, während ein wartender Thread schläft, Hardware-Ressourcen der Verarbeitung anderer Threads gewidmet werden. Zum Beispiel kann in mindestens einer Ausführungsform eine Ausführungseinheit während einer Verzögerung, die mit einer Vertex-Shader-Operation assoziiert ist, Operationen für einen Pixel-Shader, Fragment-Shader oder einen anderen Typ von Shader-Programm, einschließlich eines anderen Vertex-Shaders, durchführen.
  • In mindestens einer Ausführungsform arbeitet jede Ausführungseinheit in den Ausführungseinheiten 4707 und/oder 4708 an Arrays von Datenelementen. In mindestens einer Ausführungsform ist die Anzahl der Datenelemente eine „Ausführungsgröße“ oder die Anzahl der Kanäle für eine Anweisung. In mindestens einer Ausführungsform ist ein Ausführungskanal eine logische Ausführungseinheit für den Datenelementzugriff, die Maskierung und die Ablaufsteuerung innerhalb von Anweisungen. In mindestens einer Ausführungsform kann die Anzahl der Kanäle unabhängig von einer Anzahl der physischen arithmetisch-logischen Einheiten (ALUs) oder Gleitkommaeinheiten (FPUs) für einen konkreten GPU sein. In mindestens einer Ausführungsform unterstützen die Ausführungseinheiten 4707 und/oder 4708 Ganzzahl- und Gleitkomma-Datentypen.
  • In mindestens einer Ausführungsform beinhaltet ein Anweisungssatz einer Ausführungseinheit SIMD-Anweisungen. In mindestens einer Ausführungsform können verschiedene Datenelemente als gepackter Datentyp in einem Register gespeichert werden, und die Ausführungseinheit verarbeitet verschiedene Elemente basierend auf der Datengröße der Elemente. Zum Beispiel werden in mindestens einer Ausführungsform bei der Bearbeitung eines 256 Bit breiten Vektors 256 Bits eines Vektors in einem Register gespeichert, und eine Ausführungseinheit bearbeitet einen Vektor als vier separate gepackte 64-Bit-Datenelemente (Datenelemente der Größe Quad-Word (QW)), als acht separate gepackte 32-Bit-Datenelemente (Datenelemente der Größe Double Word (DW)), als sechzehn separate gepackte 16-Bit-Datenelemente (Datenelemente der Größe Word (W)) oder als zweiunddreißig separate 8-Bit-Datenelemente (Datenelemente der Größe Byte (B)). In mindestens einer Ausführungsform sind jedoch unterschiedliche Vektorbreiten und Registergrößen möglich.
  • In mindestens einer Ausführungsform können eine oder mehrere Ausführungseinheiten zu einer fusionierten Ausführungseinheit 4709A-4709N mit einer Thread-Steuerungslogik (471 1A-471 1 N) kombiniert werden, die den fusionierten EUs gemeinsam ist, wie z. B. eine Ausführungseinheit 4707A, die mit der Ausführungseinheit 4708A in die fusionierte Ausführungseinheit 4709A fusioniert ist. In mindestens einer Ausführungsform können mehrere EUs zu einer EU-Gruppe verschmolzen werden. In mindestens einer Ausführungsform kann jede EU in einer fusionierten EU-Gruppe so ausgestaltet sein, dass sie einen separaten SIMD-Hardware-Thread ausführt, wobei die Anzahl der EUs in einer fusionierten EU-Gruppe je nach Ausführungsform variieren kann. In mindestens einer Ausführungsform können verschiedene SIMD-Breiten pro EU ausgeführt werden, die SIMD8, SIMD16 und SIMD32 beinhalten, aber nicht darauf beschränkt sind. In mindestens einer Ausführungsform beinhaltet jede fusionierte Grafikausführungseinheit 47909A-4709N mindestens zwei Ausführungseinheiten. In mindestens einer Ausführungsform weist die fusionierte Ausführungseinheit 4709A beispielsweise eine erste EU 4707A, eine zweite EU 4708A und eine Thread-Steuerlogik 4711A auf, die der ersten EU 4707A und der zweiten EU 4708A gemeinsam ist. In mindestens einer Ausführungsform steuert die Thread-Steuerlogik 4711A Threads, die auf der fusionierten Grafikausführungseinheit 4709A ausgeführt werden, so dass jede EU innerhalb der fusionierten Ausführungseinheiten 4709A-4709N unter Verwendung eines gemeinsamen Befehlszeigerregisters ausgeführt werden kann.
  • In mindestens einer Ausführungsform sind ein oder mehrere interne Anweisungs-Caches (z. B. 4706) in der Thread-Ausführungslogik 4700 enthalten, um Thread-Anweisungen für Ausführungseinheiten zwischenzuspeichern. In mindestens einer Ausführungsform sind ein oder mehrere Daten-Caches (z. B. 4712) enthalten, um Thread-Daten während der Thread-Ausführung zu cachen. In mindestens einer Ausführungsform ist ein Sampler 4710 vorhanden, um Textur-Sampling für 3D-Operationen und Medien-Sampling für Medien-Operationen bereitzustellen. Bei mindestens einer Ausführungsform beinhaltet der Abtaster 4710 eine spezialisierte Textur- oder Medienabtastfunktionalität, um Textur- oder Mediendaten während eines Abtastprozesses zu verarbeiten, bevor die abgetasteten Daten einer Ausführungseinheit bereitgestellt werden.
  • Bei mindestens einer Ausführungsform senden Grafik- und Medien-Pipelines während der Ausführung Thread-Initiierungsanforderungen an die Thread-Ausführungslogik 4700 über die Thread-Erzeugungs- und Dispatch-Logik. In mindestens einer Ausführungsform wird, sobald eine Gruppe geometrischer Objekte verarbeitet und in Pixeldaten gerastert wurde, die Pixelprozessorlogik (z. B. Pixel-Shader-Logik, Fragment-Shader-Logik usw.) innerhalb des Shader-Prozessors 4702 aufgerufen, um Ausgabeinformationen weiter zu berechnen und zu bewirken, dass die Ergebnisse in Ausgabeflächen (z. B. Farbpuffer, Tiefenpuffer, Stencil-Puffer usw.) geschrieben werden. In mindestens einer Ausführungsform berechnet ein Pixel-Shader oder Fragment-Shader die Werte verschiedener Vertexattribute, die über ein gerastertes Objekt interpoliert werden sollen. Bei mindestens einer Ausführungsform führt die Pixelprozessorlogik innerhalb des Shader-Prozessors 4702 dann ein über eine Anwendungsprogrammierschnittstelle (API) zugeführtes Pixel- oder Fragment-Shader-Programm aus. In mindestens einer Ausführungsform teilt der Shader-Prozessor 4702 zum Ausführen eines Shader-Programms Threads über den Thread-Zuteiler 4704 einer Ausführungseinheit (z. B. 4708A) zu. In mindestens einer Ausführungsform verwendet der Shader-Prozessor 4702 die Textur-Sampling-Logik im Sampler 4710, um auf Texturdaten in den im Speicher abgelegten Textur-Zuordnungen zuzugreifen. In mindestens einer Ausführungsform werden durch arithmetische Operationen an Texturdaten und Eingabegeometriedaten Pixelfarbdaten für jedes geometrische Fragment berechnet oder ein oder mehrere Pixel von der weiteren Verarbeitung ausgeschlossen.
  • In mindestens einer Ausführungsform stellt der Datenport 4714 einen Speicherzugriffsmechanismus für die Thread-Ausführungslogik 4700 bereit, um verarbeitete Daten zur weiteren Verarbeitung an einer GPU-Ausgabepipeline an Speicher auszugeben. In mindestens einer Ausführungsform beinhaltet der Datenport 4714 einen oder mehrere Cache-Speicher (z. B. den Daten-Cache 4712) oder ist an diesen gekoppelt, um Daten für den Speicherzugriff über einen Datenport zwischenzuspeichern.
  • Wie in 47B veranschaulicht, kann eine Grafikausführungseinheit 4708 in mindestens einer Ausführungsform eine Anweisungsabrufeinheit 4737, eine Anordnung von allgemeinen Registerdateien (GRF) 4724, eine Anordnung von architektonischen Registerdateien (ARF) 4726, einen Thread-Vermittler 4722, eine Sendeeinheit 4730, eine Verzweigungseinheit 4732, einen Satz SIMD-Fließkommaeinheiten (FPUs) 4734 und einen Satz dedizierter Integer-SIMD-ALUs 4735 beinhalten. In mindestens einer Ausführungsform beinhalten die GRF 4724 und die ARF 4726 einen Satz allgemeiner Registerdateien und Architekturregisterdateien, die jedem simultanen Hardware-Thread zugeordnet sind, der in der Grafikausführungseinheit 4708 aktiv sein kann. In mindestens einer Ausführungsform wird der architektonische Zustand pro Thread in der ARF 4726 verwaltet, während die während der Thread-Ausführung verwendeten Daten in der GRF 4724 gespeichert werden. In mindestens einer Ausführungsform kann der Ausführungszustand jedes Threads, einschließlich der Anweisungszeiger für jeden Thread, in Thread-spezifischen Registern in der ARF 4726 aufbewahrt werden.
  • In mindestens einer Ausführungsform weist die Grafikausführungseinheit 4708 eine Architektur auf, die eine Kombination aus simultanem Multi-Threading (SMT) und feinkörnigem verschachteltem Multi-Threading (IMT) ist. In mindestens einer Ausführungsform weist die Architektur eine modulare Konfiguration auf, die zur Entwurfszeit basierend auf einer Zielanzahl gleichzeitiger Threads und einer Anzahl von Registern pro Ausführungseinheit fein abgestimmt werden kann, wobei die Ressourcen der Ausführungseinheit auf die Logik aufgeteilt werden, die zur Ausführung mehrerer gleichzeitiger Threads verwendet wird.
  • Bei mindestens einer Ausführungsform kann die Grafikausführungseinheit 4708 mehrere Befehle gemeinsam ausgeben, die jeweils unterschiedliche Befehle sein können. In mindestens einer Ausführungsform kann der Thread-Vermittler 4722 des Grafikausführungseinheits-Threads 4708 Anweisungen einer der Sendeeinheit 4730, der Verzweigungseinheit 4732 oder der SIMD-FPU(s) 4734 zur Ausführung zuteilen. In mindestens einer Ausführungsform kann jeder Thread auf 128 Allzweckregister innerhalb der GRF 4724 zugreifen, wobei jedes Register 32 Byte speichern kann, die als SIMD-8-Element-Vektor von 32-Bit-Datenelementen zugänglich sind. In mindestens einer Ausführungsform hat jeder Thread der Ausführungseinheit Zugriff auf 4 Kilobyte innerhalb der GRF 4724, obwohl die Ausführungsformen nicht so beschränkt sind und bei anderen Ausführungen mehr oder weniger Registerressourcen bereitgestellt werden können. In mindestens einer Ausführungsform können bis zu sieben Threads gleichzeitig ausgeführt werden, wobei die Anzahl der Threads pro Ausführungseinheit je nach Ausführungsform auch variieren kann. Bei mindestens einer Ausführungsform, bei der sieben Threads auf 4 Kilobyte zugreifen können, kann die GRF 4724 insgesamt 28 Kilobyte speichern. In mindestens einer Ausführungsform können durch flexible Adressierungsmodi Register gemeinsam adressiert werden, um effektiv breitere Register zu bilden oder um geschichtete rechteckige Blockdatenstrukturen darzustellen.
  • In mindestens einer Ausführungsform werden Speicheroperationen, Sampler-Operationen und andere Systemkommunikation mit längerer Latenz über „Sende“-Anweisungen zugeteilt, die durch Nachrichtenweitergabe an die Sendeeinheit 4730 ausgeführt werden. In mindestens einer Ausführungsform werden Verzweigungsanweisungen an die Verzweigungseinheit 4732 verteilt, um SIMD-Divergenz und schließlich - Konvergenz zu erleichtern.
  • In mindestens einer Ausführungsform beinhaltet die Grafikausführungseinheit 4708 eine oder mehrere SIMD-Gleitkommaeinheiten (FPU(s)) 4734 zum Durchführen von Gleitkommaoperationen. In mindestens einer Ausführungsform unterstützen die FPU(s) 4734 auch Integerberechnungen. In mindestens einer Ausführungsform können die FPU(s) 4734 bis zu einer Anzahl von M 32-Bit-Gleitkomma- (oder -Integer-) Operationen über SIMD ausführen oder bis zu 2M 16-Bit-Integer- oder 16-Bit-Gleitkommaoperationen über SIMD ausführen. In mindestens einer Ausführungsform stellt mindestens eine FPU erweiterte mathematische Fähigkeiten bereit, um transzendentale mathematische Funktionen mit hohem Durchsatz und 64-Bit-Gleitkomma mit doppelter Genauigkeit zu unterstützen. In mindestens einer Ausführungsform ist auch ein Satz von 8-Bit-Ganzzahl-SIMD-ALUs 4735 vorhanden, die speziell für die Ausführung von Operationen im Zusammenhang mit Berechnungen zum maschinellen Lernen optimiert sein können.
  • In mindestens einer Ausführungsform können Anordnungen von mehreren Instanzen der Grafikausführungseinheit 4708 in einer Grafikteilkern-Gruppierung (z. B. einer Teilscheibe) instanziiert sein. In mindestens einer Ausführungsform kann die Ausführungseinheit 4708 Anweisungen über eine Vielzahl von Ausführungskanälen hinweg ausführen. In mindestens einer Ausführungsform wird jeder Thread, der auf der Grafikausführungseinheit 4708 ausgeführt wird, auf einem anderen Kanal ausgeführt.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte oder die gesamte Inferenz- und/oder Trainingslogik 2315 in die Thread-Ausführungslogik 4700 integriert sein. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 23A oder 23B veranschaulichten Logik durchgeführt werden. Bei mindestens einer Ausführungsform können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder in Registern (dargestellt oder nicht dargestellt) gespeichert werden, die den ALU-Thread der Ausführungslogik 4700 konfigurieren, um einen oder mehrere hier beschriebene Algorithmen zum maschinellen Lernen, Architekturen für neuronale Netze, Anwendungsfälle oder Trainingsverfahren durchzuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 47A-47B gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine in 47A-47B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Unterstützung für die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine in 47A-47B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine in 47A-47B gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine in 47A-47B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine in 47A-47B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine in 47A-47B gezeigte oder beschriebene Komponente dazu verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 48 veranschaulicht eine Parallelverarbeitungseinheit („PPU“) 4800 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist die PPU 4800 mit maschinenlesbarem Code konfiguriert, der bei Ausführung durch die PPU 4800 die PPU 4800 dazu veranlasst, einige oder alle der in dieser Offenbarung beschriebenen Prozesse und Techniken durchzuführen. Bei mindestens einer Ausführungsform ist die PPU 4800 ein Multi-Thread-Prozessor, der auf einer oder mehreren integrierten Einrichtungen implementiert ist und der Multithreading als latenzverbergende Technik verwendet, die dazu ausgelegt ist, computerlesbare Befehle (auch als maschinenlesbare Befehle oder einfach Befehle bezeichnet) auf mehreren Threads parallel zu verarbeiten. In mindestens einer Ausführungsform bezieht sich ein Thread auf einen Ausführungs-Thread und ist eine Instanziierung eines Satzes von Anweisungen, der für die Ausführung durch die PPU 4800 konfiguriert ist. In mindestens einer Ausführungsform ist die PPU 4800 eine Grafikverarbeitungseinheit („GPU“), die dazu konfiguriert ist, eine Grafik-Rendering-Pipeline zum Verarbeiten dreidimensionaler („3D“) Grafikdaten zu implementieren, um zweidimensionale („2D“) Bilddaten zur Anzeige auf einer Anzeigevorrichtung, wie etwa einer Flüssigkristallanzeige-(„LCD“-)Vorrichtung, zu generieren. In mindestens einer Ausführungsform wird die PPU 4800 verwendet, um Berechnungen, wie zum Beispiel lineare Algebravorgänge und Vorgänge des maschinellen Lernens, auszuführen. In mindestens einer Ausführungsform veranschaulicht 48 einen beispielhaften Parallelprozessor, der nur zu veranschaulichenden Zwecken dient und als nicht einschränkendes Beispiel für Prozessorarchitekturen zu verstehen ist, die im Rahmen dieser Offenbarung in Betracht gezogen werden, und dass jeder geeignete Prozessor zur Ergänzung und/oder zum Ersatz desselben verwendet werden kann.
  • In mindestens einer Ausführungsform sind eine oder mehrere PPUs 4800 so konfiguriert, dass sie Berechnungen mit hoher Performance („HPC“) und Anwendungen für ein Rechenzentrum und maschinelles Lernen beschleunigen. In mindestens einer Ausführungsform ist die PPU 4800 dazu konfiguriert, Deep-Learning-Systeme und -Anwendungen zu beschleunigen, einschließlich der folgenden nicht einschränkenden Beispiele: Plattformen für autonome Fahrzeuge, Deep Learning, Sprach-, Bild- und Texterkennungssysteme mit hoher Genauigkeit, intelligente Videoanalytik, Molekularsimulationen, Arzneimittelforschung, Krankheitsdiagnose, Wettervorhersage, Big-Data-Analytik, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotik, Fabrikautomatisierung, Echtzeit-Sprachübersetzung, Online-Suchoptimierungen und personalisierte Benutzerempfehlungen und andere.
  • In mindestens einer Ausführungsform schließt die PPU 4800 ohne Einschränkung eine Eingabe/Ausgabe(E/A)-Einheit 4806, eine Frontend-Einheit 4810, eine Scheduler-Einheit 4812, eine Arbeitsverteilungseinheit 4814, einen Hub 4816, eine Crossbar („XBar“) 4820, einen oder mehrere Universalverarbeitungscluster („GPCs“) 4818 und eine oder mehrere Partitionseinheiten („Speicherpartitionseinheiten“) 4822 ein. In mindestens einer Ausführungsform ist die PPU 4800 mit einem Host-Prozessor oder anderen PPUs 4800 über eine oder mehrere Hochgeschwindigkeits-GPU-Zusammenschaltungen („GPU-Zusammenschaltungen“) 4808 verbunden. In mindestens einer Ausführungsform ist die PPU 4800 mit einem Host-Prozessor oder anderen peripheren Einrichtungen über einen Systembus 4802 verbunden. In mindestens einer Ausführungsform ist die PPU 4800 mit einem lokalen Speicher verbunden, der eine oder mehrere Speichervorrichtungen („Speicher“) 4804 umfasst. In mindestens einer Ausführungsform beinhalten die Speichervorrichtungen 4804 ohne Einschränkung eine oder mehrere Vorrichtungen mit dynamischem Direktzugriffsspeicher („DRAM“). In mindestens einer Ausführungsform sind eine oder mehrere DRAM-Vorrichtungen als HBM-Teilsysteme konfiguriert und/oder konfigurierbar, wobei mehrere DRAM Chips in jeder Vorrichtung gestapelt sind.
  • In mindestens einer Ausführungsform kann sich die Hochgeschwindigkeits-GPU-Zusammenschaltung 4808 auf eine drahtbasierte mehrspurige Kommunikationsverknüpfung beziehen, die durch Systeme zum Skalieren verwendet wird und eine oder mehrere PPUs 4800 in Kombination mit einer oder mehreren zentralen Verarbeitungseinheiten („CPUs“) beinhaltet und die Cache-Kohärenz zwischen PPUs 4800 und CPUs sowie CPU-Mastering unterstützt. In mindestens einer Ausführungsform werden Daten und/oder Befehle durch die Hochgeschwindigkeits-GPU-Zusammenschaltung 4808 über den Hub 4816 zu/von anderen Einheiten der PPU 4800 übertragen, wie etwa einer/einem oder mehreren Kopier-Maschinen, Videocodierern, Videodecodierern, Leistungsverwaltungseinheiten und anderen Komponenten, die in 48.
  • In mindestens einer Ausführungsform ist die E/A-Einheit 4806 so konfiguriert, dass sie Kommunikation (z. B. Befehle, Daten) von einem Host-Prozessor (in 48 nicht veranschaulicht) über den Systembus 4802 überträgt und empfängt. In mindestens einer Ausführungsform kommuniziert die E/A-Einheit 4806 mit dem Hostprozessor direkt über den Systembus 4802 oder über eine oder mehrere zwischengeschaltete Vorrichtungen, wie eine Speicherbrücke. In mindestens einer Ausführungsform kann die E/A-Einheit 4806 über den Systembus 4802 mit einem oder mehreren anderen Prozessoren kommunizieren, wie etwa einer oder mehreren der PPUs 4800. In mindestens einer Ausführungsform implementiert die E/A-Einheit 4806 eine Peripheral-Component-Interconnect-Express-(„PCIe“-)Schnittstelle für die Kommunikation über einen PCle-Bus. In mindestens einer Ausführungsform implementiert die E/A-Einheit 4806 Schnittstellen zum Kommunizieren mit externen Vorrichtungen.
  • In mindestens einer Ausführungsform decodiert die E/A-Einheit 4806 über den Systembus 4802 empfangene Pakete. Bei mindestens einer Ausführungsform repräsentieren mindestens einige Pakete Befehle, die so ausgestaltet sind, dass die PPU 4800 verschiedene Operationen ausführt. In mindestens einer Ausführungsform überträgt die E/A-Einheit 4806 decodierte Befehle an verschiedene andere Einheiten der PPU 4800, wie durch Befehle vorgegeben. In mindestens einer Ausführungsform werden Befehle an die Frontend-Einheit 4810 übertragen und/oder an den Hub 4816 oder andere Einheiten der PPU 4800 übertragen, wie etwa eine oder mehrere Kopier-Maschinen, einen Videocodierer, einen Videodecodierer, eine Leistungsverwaltungseinheit usw. (in 48 nicht explizit veranschaulicht). In mindestens einer Ausführungsform ist die E/A-Einheit 4806 dazu konfiguriert, Kommunikation zwischen und unter verschiedenen logischen Einheiten der PPU 4800 zu leiten.
  • In mindestens einer Ausführungsform codiert ein vom Hostprozessor ausgeführtes Programm einen Befehlsstrom in einem Puffer, welcher der PPU 4800 Workloads zur Verarbeitung bereitstellt. In mindestens einer Ausführungsform umfasst eine Arbeitslast Anweisungen und Daten, die von diesen Anweisungen verarbeitet werden sollen. In mindestens einer Ausführungsform ist der Puffer ein Bereich in einem Speicher, auf den sowohl der Host-Prozessor als auch die PPU 4800 zugreifen können (z. B. Lese-/Schreibzugriff)-eine Host-Schnittstelleneinheit kann so ausgestaltet sein, dass sie auf diesen Puffer in einem mit dem Systembus 4802 verbundenen Systemspeicher über Speicheranforderungen zugreift, die von der E/A-Einheit 4806 über den Systembus 4802 übertragen werden. In mindestens einer Ausführungsform schreibt der Host-Prozessor einen Befehlsstrom in den Puffer und überträgt dann einen Zeiger auf den Beginn des Befehlsstroms an die PPU 4800, so dass die Front-End-Einheit 4810 Zeiger auf einen oder mehrere Befehlsströme empfängt und einen oder mehrere Befehlsströme verwaltet, Befehle aus den Befehlsströmen liest und Befehle an verschiedene Einheiten der PPU 4800 weiterleitet.
  • In mindestens einer Ausführungsform ist die Frontend-Einheit 4810 an die Scheduler-Einheit 4812 gekoppelt, die verschiedene GPCs 4818 zum Verarbeiten von Aufgaben konfiguriert, die durch einen oder mehrere Befehlsströme definiert sind. In mindestens einer Ausführungsform ist die Scheduler-Einheit 4812 dazu konfiguriert, Zustandsinformationen in Bezug auf verschiedene durch die Scheduler-Einheit 4812 verwaltete Aufgaben zu verfolgen, wobei die Zustandsinformationen angeben können, welchem der GPCs 4818 eine Aufgabe zugewiesen ist, ob die Aufgabe aktiv oder inaktiv ist, welche Prioritätsstufe der Aufgabe zugeordnet ist usw. In mindestens einer Ausführungsform verwaltet die Scheduler-Einheit 4812 die Ausführung einer Vielzahl von Aufgaben auf einem oder mehreren GPCs 4818.
  • In mindestens einer Ausführungsform ist die Scheduler-Einheit 4812 an die Arbeitsverteilungseinheit 4814 gekoppelt, die so konfiguriert ist, dass sie Aufgaben zur Ausführung auf den GPCs 4818 zuteilt. In mindestens einer Ausführungsform verfolgt die Arbeitsverteilungseinheit 4814 eine Anzahl geplanter Aufgaben, die sie von der Scheduler-Einheit 4812 erhalten hat, und die Arbeitsverteilungseinheit 4814 verwaltet einen Pool anhängiger Aufgaben und einen Pool aktiver Aufgaben für jeden der GPCs 4818. In mindestens einer Ausführungsform umfasst der Pool ausstehender Aufgaben eine Anzahl von Slots (z. B. 32 Slots), die Aufgaben enthalten, die zur Verarbeitung durch einen bestimmten GPC 4818 zugewiesen sind; der Pool aktiver Aufgaben kann eine Anzahl von Slots (z. B. 4 Slots) für Aufgaben umfassen, die aktiv von den GPCs 4818 verarbeitet werden, so dass, wenn einer der GPCs 4818 die Ausführung einer Aufgabe abschließt, diese Aufgabe aus dem Pool aktiver Aufgaben für den GPC 4818 entfernt wird und eine andere Aufgabe aus einem Pool ausstehender Aufgaben ausgewählt und zur Ausführung auf dem GPC 4818 eingeplant wird. In mindestens einer Ausführungsform wird, wenn eine aktive Aufgabe auf dem GPC 4818 im Leerlauf ist, z. B. während des Wartens auf die Auflösung einer Datenabhängigkeit, die aktive Aufgabe aus dem GPC 4818 entfernt und in den Pool der anstehenden Aufgaben zurückgeführt werden, während eine andere Aufgabe im Pool der anstehenden Aufgaben ausgewählt und für die Ausführung auf dem GPC 4818 eingeplant wird.
  • In mindestens einer Ausführungsform kommuniziert die Arbeitsverteilungseinheit 4814 mit einem oder mehreren GPCs 4818 über die XBar 4820. In mindestens einer Ausführungsform ist die XBar 4820 ein Zusammenschaltungsnetz, das viele Einheiten der PPU 4800 an andere Einheiten der PPU 4800 koppelt und dazu konfiguriert sein kann, die Arbeitsverteilungseinheit 4814 an einen konkreten GPC 4818 zu koppeln. In mindestens einer Ausführungsform können auch eine oder mehrere andere Einheiten der PPU 4800 über den Hub 4816 mit der XBar 4820 verbunden sein.
  • In mindestens einer Ausführungsform werden Aufgaben durch die Scheduler-Einheit 4812 verwaltet und durch die Arbeitsverteilungseinheit 4814 einem der GPCs 4818 zugeteilt. In mindestens einer Ausführungsform ist der GPC 4818 so konfiguriert, dass er die Aufgabe verarbeitet und Ergebnisse erzeugt. In mindestens einer Ausführungsform können die Ergebnisse durch andere Aufgaben innerhalb des GPC 4818 verbraucht, über die XBar 4820 an einen anderen GPC 4818 geleitet oder in dem Speicher 4804 gespeichert werden. In mindestens einer Ausführungsform können die Ergebnisse über die Partitionseinheiten 4822, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in den/aus dem Speicher 4804 implementieren, in den Speicher 4804 geschrieben werden. In mindestens einer Ausführungsform können die Ergebnisse über eine Hochgeschwindigkeits-GPU-Zusammenschaltung 4808 an eine andere PPU 4800 oder CPU gesendet werden. In mindestens einer Ausführungsform weist die PPU 4800 ohne Einschränkung eine Anzahl U von Partitionseinheiten 4822 auf, die einer Anzahl der mit der PPU 4800 verbundenen separaten und unterschiedlichen Speichereinrichtungen 4804 entspricht, was hier in Verbindung mit 50 ausführlicher beschrieben wird.
  • Bei mindestens einer Ausführungsform führt ein Host-Prozessor einen Treiberkern aus, der eine Anwendungsprogrammierschnittstelle („API“) umsetzt, die es einer oder mehreren auf dem Host-Prozessor ausgeführten Anwendungen ermöglicht, Vorgänge zur Ausführung auf der PPU 4800 zu planen. In mindestens einer Ausführungsform werden mehrere Rechenanwendungen simultan durch die PPU 4800 ausgeführt und die PPU 4800 stellt Isolierung, Dienstgüte („QoS“) und unabhängige Adressräume für mehrere Rechenanwendungen bereit. In mindestens einer Ausführungsform generiert eine Anwendung Anweisungen (z. B. in Form von API-Aufrufen), die den Treiberkern veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 4800 zu generieren, und der Treiberkern gibt Aufgaben an einen oder mehrere Streams aus, die von der PPU 4800 verarbeitet werden. In mindestens einer Ausführungsform umfasst jede Aufgabe eine oder mehrere Gruppen von zusammenhängenden Threads, die als Warp bezeichnet werden können. In mindestens einer Ausführungsform umfasst ein Warp eine Vielzahl von zusammenhängenden Threads (z. B. 32 Threads), die parallel ausgeführt werden können. In mindestens einer Ausführungsform können sich kooperierende Threads auf eine Vielzahl von Threads beziehen, die Anweisungen zum Ausführen von Aufgaben beinhalten und Daten über einen gemeinsamen Speicher austauschen. In mindestens einer Ausführungsform werden Threads und kooperierende Threads in Verbindung mit 50 detaillierter beschrieben.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie z. B. ein neuronales Netzwerk, zu trainieren, um der PPU 4800 bereitgestellte Informationen vorherzusagen oder abzuleiten. In mindestens einer Ausführungsform wird die PPU 4800 verwendet, um Informationen auf der Grundlage eines trainierten Models des maschinellen Lernens (z. B. eines neuronalen Netzes) abzuleiten oder vorherzusagen, das von einem anderen Prozessor oder System oder von der PPU 4800 trainiert wurde. In mindestens einer Ausführungsform kann die PPU 4800 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netzwerke auszuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 48 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 48 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 48 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 48 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 48 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 48 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 48 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 49 veranschaulicht einen Universalverarbeitungscluster („GPC“) 4900 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform handelt es sich bei dem GPC 4900 um den GPC 4818 aus 48. In mindestens einer Ausführungsform beinhaltet jeder GPC 4900 ohne Einschränkung eine Anzahl von Hardware-Einheiten zum Verarbeiten von Aufgaben und beinhaltet jeder GPC 4900 ohne Einschränkung einen Pipeline-Manager 4902, eine Vor-Rasteroperationeneinheit („preROP“) 4904, eine Raster-Maschine 4908, eine Arbeitsverteilungskreuzschiene („WDX“) 4916, eine Speicherverwaltungseinheit („MMU“) 4918, ein oder mehrere Datenverarbeitungscluster („DPCs“) 4906 und eine beliebige geeignete Kombination von Teilen.
  • In mindestens einer Ausführungsform wird der Betrieb des GPC 4900 durch den Pipeline-Manager 4902 gesteuert. In mindestens einer Ausführungsform verwaltet der Pipeline-Manager 4902 die Konfiguration eines oder mehrerer DPCs 4906 für die Verarbeitung von Tasks, die dem GPC 4900 zugewiesen sind. In mindestens einer Ausführungsform konfiguriert der Pipeline-Manager 4902 mindestens einen von einem oder mehreren DPCs 4906 dazu, mindestens einen Teil einer Grafik-Rendering-Pipeline zu implementieren. In mindestens einer Ausführungsform ist der DPC 4906 dazu konfiguriert, ein Scheitelpunkt-Shader-Programm auf einem programmierbaren Streaming-Multiprozessor („SM“) 4914 auszuführen. In mindestens einer Ausführungsform ist der Pipelineverwalter 4902 dazu konfiguriert, die von einer Arbeitsverteilungseinheit empfangenen Pakete an geeignete logische Einheiten innerhalb des GPC 4900 routet, und in mindestens einer Ausführungsform können einige Pakete an Festfunktions-Hardwareeinheiten in dem preROP 4904 und/oder der Raster-Maschine 4908 geroutet werden, während andere Pakete zum Verarbeiten durch eine Primitiv-Maschine 4912 oder den SM 4914 an die DPCs 4906 geroutet werden können. In mindestens einer Ausführungsform konfiguriert der Pipeline-Manager 4902 mindestens einen der DPCs 4906 zur Implementierung eines Modells eines neuronalen Netzwerks und/oder einer Rechenpipeline.
  • In mindestens einer Ausführungsform ist die preROP-Einheit 4904 so konfiguriert, dass sie in mindestens einer Ausführungsform die durch die Raster-Maschine 4908 und die DPCs 4906 erzeugten Daten an eine Einheit für Rasteroperationen („ROP“) in der Partitionseinheit 4822 routet, die vorstehend in Verbindung mit 48 detaillierter beschrieben ist. Bei mindestens einer Ausführungsform ist die preROP-Einheit 4904 derart konfiguriert, dass sie Optimierungen für die Farbmischung ausführt, Pixeldaten organisiert, Adressübersetzungen vornimmt und vieles mehr. In mindestens einer Ausführungsform beinhaltet die Rasterengine 4908 ohne Einschränkung eine Anzahl von Hardwareeinheiten mit fester Funktion, die dazu konfiguriert sind, verschiedene Operationen auszuführen, und die Raster-Maschine 4908 beinhaltet ohne Einschränkung eine Setup-Maschine, eine Grobraster-Maschine, eine Culling-Maschine, eine Clipping-Maschine, eine Feinraster-Maschine, eine Tile-Coalescing-Maschine und jede geeignete Kombination davon. In mindestens einer Ausführungsform empfängt die Setup-Maschine transformierte Vertices und sie erzeugt Ebenengleichungen, die mit dem durch die Vertices definierten geometrischen Primitiv assoziiert sind; die Ebenengleichungen werden an eine Grobraster-Maschine übertragen, um Abdeckungsinformationen (z. B. eine x-, y-Abdeckungsmaske für eine Kachel) für das Primitiv zu erzeugen; die Ausgabe einer Grobraster-Maschine wird an eine CullingMaschine übertragen, in der Fragmente, die mit einem Primitiv assoziiert sind und einen z-Test nicht bestehen, Culling unterzogen werden und an eine Clipping-Maschine ü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-Maschine übergeben, um Attribute für Pixelfragmente auf Grundlage von Ebenengleichungen zu erzeugen, die durch eine Setup-Maschine erzeugt werden. In mindestens einer Ausführungsform umfasst eine Ausgabe der Raster-Maschine 4908 Fragmente, die durch eine beliebige geeignete Entität, wie etwa durch einen innerhalb des DPC 4906 implementierten Fragment-Shader, verarbeitet werden sollen.
  • In mindestens einer Ausführungsform umfasst jeder DPC 4906, der in der GPC 4900 enthalten ist, ohne Einschränkung eine M-Pipe-Steuerung („MPC“) 4910, eine Primitiv-Maschine 4912, einen oder mehrere SMs 4914 und eine beliebige geeignete Kombination davon auf. In mindestens einer Ausführungsform steuert die MPC 4910 den Betrieb des DPC 4906 und routet von dem Pipeline-Manager 4902 empfangene Pakete an die entsprechenden Einheiten in dem DPC 4906. In mindestens einer Ausführungsform werden Pakete, die einem Vertex zugeordnet sind, an die Primitiv-Maschine 4912 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 4914 übertragen werden.
  • In mindestens einer Ausführungsform umfasst der SM 4914 ohne Einschränkung einen programmierbaren Streaming-Prozessor, der dazu konfiguriert ist, Aufgaben zu verarbeiten, die durch eine Anzahl von Threads dargestellt sind. In mindestens einer Ausführungsform weist der SM 4914 mehrere Threads auf und ist dazu konfiguriert, eine Vielzahl von Threads (z. B. 32 Threads) aus einer konkreten Gruppe von Threads nebenläufig ausführt und eine Single-lnstruction-Multiple-Data(„SIMD“)-Architektur implementiert, bei der jeder Thread in einer Gruppe von Threads (z. B. ein Warp) dazu konfiguriert ist, einen anderen Datensatz auf Grundlage des gleichen Anweisungssatzes zu verarbeiten. In mindestens einer Ausführungsform führen alle Threads in einer Gruppe von Threads einen gemeinsamen Satz von Anweisungen aus. In mindestens einer Ausführungsform implementiert der SM 4914 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 Aufrufstapel und ein Ausführungszustand für jeden Warp beibehalten, wodurch Nebenläufigkeit zwischen Warps und serielle Ausführung innerhalb von Warps ermöglicht werden, wenn Threads innerhalb eines Warps divergieren. In einer anderen Ausführungsform werden ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden einzelnen Thread beibehalten, wodurch gleichwertige Nebenläufigkeit zwischen allen Threads, innerhalb und zwischen Warps ermöglicht wird. In mindestens einer Ausführungsform wird der Ausführungszustand für jeden einzelnen Thread beibehalten und Threads, die gemeinsame Anweisungen ausführen, können zur besseren Effizienz konvergiert und parallel ausgeführt werden. Mindestens eine Ausführungsform des SM 4914 wird nachstehend detaillierter beschrieben.
  • In mindestens einer Ausführungsform stellt die MMU 4918 eine Schnittstelle zwischen dem GPC 4900 und einer Speicherpartitionseinheit (z. B. der Partitionseinheit 4822 aus 48) bereit und stellt die MMU 4918 Übersetzung virtueller Adressen in physische Adressen, Speicherschutz und Vermittlung von Speicheranforderungen bereit. Bei mindestens einer Ausführungsform stellt die MMU 4918 einen oder mehrere Übersetzungs-Lookaside-Puffer („TLBs“) bereit, um die Übersetzung von virtuellen Adressen in physische Adressen im Speicher durchzuführen.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie z. B. ein neuronales Netzwerk, zu trainieren, um der GPC 4900 bereitgestellte Informationen vorherzusagen oder abzuleiten. In mindestens einer Ausführungsform wird die GPC 4900 verwendet, um Informationen auf der Grundlage eines trainierten Models des maschinellen Lernens (z. B. eines neuronalen Netzes) abzuleiten oder vorherzusagen, das von einem anderen Prozessor oder System oder von der GPC 4900 trainiert wurde. In mindestens einer Ausführungsform kann die GPC 4900 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netzwerke auszuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 49 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 49 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 49 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 49 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 49 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 49 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 49 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 50 veranschaulicht eine Speicherpartitionseinheit 5000 einer Parallelverarbeitungseinheit („PPU“) gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform weist die Speicherpartitionierungseinheit 5000 ohne Einschränkung eine Raster Operations („ROP“)-Einheit 5002, einen Level Two („L2“)-Cache 5004, eine Speicherschnittstelle 5006 und jede geeignete Kombination davon auf. In mindestens einer Ausführungsform ist die Speicherschnittstelle 5006 an Speicher gekoppelt. In mindestens einer Ausführungsform kann die Speicherschnittstelle 5006 32-, 64-, 128-, 1024-Bit-Datenbusse oder ähnliches für die Hochgeschwindigkeitsdatenübertragung implementieren. In mindestens einer Ausführungsform umfasst die PPU U Speicherschnittstellen 5006, wobei U eine positive ganze Zahl ist, mit einer Speicherschnittstelle 5006 pro Paar von Partitionseinheiten 5000, wobei jedes Paar von Partitionseinheiten 5000 mit einer entsprechenden Speichereinrichtung verbunden ist. In mindestens einer Ausführungsform kann die PPU zum Beispiel mit bis zu Y Speichervorrichtungen verbunden sein, wie etwa mit Speicherstapeln mit hoher Bandbreite oder mit einem synchronen dynamischen Direktzugriffsspeicher mit Graphics-Double-Data-Rate-Version 5 („GDDR5-SDRAM“).
  • In mindestens einer Ausführungsform implementiert die Speicherschnittstelle 5006 eine Speicherschnittstelle der zweiten Generation mit hoher Bandbreite („HBM2“), und Y ist gleich der Hälfte von U. In mindestens einer Ausführungsform befinden sich die HBM2-Speicherstacks auf einem physischen Gehäuse mit der PPU, was im Vergleich zu herkömmlichen GDDR5-SDRAM-Systemen erhebliche Energie- und Flächeneinsparungen ermöglicht. In mindestens einer Ausführungsform beinhaltet jeder HBM2-Stapel ohne Einschränkung vier Speicher-Dies mit Y=4, wobei jeder HBM2-Stapel zwei 128-Bit-Kanäle pro Die für insgesamt 8 Kanäle und eine Datenbusbreite von 1024 Bit beinhaltet. In mindestens einer Ausführungsform unterstützt der Speicher den Single-Error Correcting Double-Error Detecting („SECDED“) Error Correction Code („ECC“) zum Schutz der Daten. ECC bietet in mindestens einer Ausführungsform eine höhere Zuverlässigkeit für Datenverarbeitungsanwendungen, die empfindlich auf Datenverfälschung reagieren.
  • In mindestens einer Ausführungsform implementiert die PPU eine Speicherhierarchie mit mehreren Ebenen. In mindestens einer Ausführungsform unterstützt die Speicherpartitionierungseinheit 5000 einen einheitlichen Speicher, um einen einzigen einheitlichen virtuellen Adressraum für die Zentraleinheit („CPU“) und den PPU-Speicher bereitzustellen, was die gemeinsame Nutzung von Daten zwischen virtuellen Speichersystemen ermöglicht. In mindestens einer Ausführungsform wird die Häufigkeit von Zugriffen durch eine PPU auf einen Speicher, der sich auf anderen Prozessoren befindet, verfolgt, um sicherzustellen, dass Speicherseiten in den physischen Speicher der PPU verschoben werden, die häufiger auf Seiten zugreift. In mindestens einer Ausführungsform unterstützt die Hochgeschwindigkeits-GPU-Verbindung 4808 Adressübersetzungsdienste, die es der PPU ermöglichen, direkt auf die Seitentabellen der CPU zuzugreifen und der PPU vollen Zugriff auf den CPU-Speicher zu ermöglichen.
  • In mindestens einer Ausführungsform übertragenen Kopier-Maschine Daten zwischen mehreren PPUs oder zwischen PPUs und CPUs. In mindestens einer Ausführungsform können Kopiermodule Seitenfehler für Adressen generieren, die nicht in Seitentabellen abgebildet sind, und die Speicherpartitionierungseinheit 5000 bearbeitet dann die Seitenfehler, indem sie die Adressen in die Seitentabelle abbildet, woraufhin das Kopiermodul die Übertragung durchführt. In mindestens einer Ausführungsform ist der Speicher für mehrere Kopier-Maschine-Operationen zwischen mehreren Prozessoren gepinnt (d. h. nicht auslagerbar), was den verfügbaren Speicher erheblich reduziert. In mindestens einer Ausführungsform können bei Hardware-Seitenfehlern Adressen an Kopier-Maschinen übergeben werden, ohne Rücksicht darauf, ob Speicherseiten speicherresident sind und ein Kopierprozess transparent ist.
  • Daten aus dem Speicher 4804 aus 48 oder einem anderen Systemspeicher werden von der Speicherpartitionseinheit 5000 abgerufen und im L2-Cache 5004 gespeichert, der sich auf dem Chip befindet und von verschiedenen GPCs gemeinsam genutzt wird, gemäß mindestens einer Ausführungsform. Jede Speicherpartitionseinheit 5000 weist in mindestens einer Ausführungsform ohne Einschränkung mindestens einen Abschnitt des L2-Cache auf, der einer entsprechenden Einrichtung zugeordnet ist. In mindestens einer Ausführungsform sind Caches der unteren Ebene in verschiedenen Einheiten innerhalb der GPCs implementiert. In mindestens einer Ausführungsform kann jeder der SMs 4914 in 49 einen Level 1 Cache („L1“) implementieren, wobei der L1-Cache ein privater Speicher ist, der einem bestimmten SM 4914 zugeordnet ist, und Daten aus dem L2-Cache 5004 abgerufen und in jedem der L1-Caches zur Verarbeitung in Funktionseinheiten der SMs 4914 gespeichert werden. In mindestens einer Ausführungsform ist der L2-Cache 5004 mit der Speicherschnittstelle 5006 und der XBar 4820 verbunden, wie es in 48 dargestellt ist.
  • Die ROP-Einheit 5002 führt bei mindestens einer Ausführungsform Grafikrasteroperationen durch, die sich auf die Pixelfarbe beziehen, wie z. B. Farbkomprimierung, Pixelüberblendung und mehr. In mindestens einer Ausführungsform implementiert die ROP-Einheit 5002 eine Tiefenprüfung in Verbindung mit der Raster-Maschine 4908, wobei sie eine Tiefe für eine Abtastposition, die mit einem Pixelfragment verbunden ist, von der Culling-Maschine der Raster-Maschine 4908 erhält. In mindestens einer Ausführungsform wird die Tiefe gegen eine entsprechende Tiefe in einem Tiefenpuffer für eine mit einem Fragment assoziierte Sampler-Stelle geprüft. In mindestens einer Ausführungsform aktualisiert die ROP-Einheit 5002 den Tiefenpuffer und überträgt das Ergebnis des Tiefentests an die Raster-Maschine 4908, wenn das Fragment den Tiefentest für den Probenort besteht. Es versteht sich, dass sich eine Anzahl der Partitionseinheiten 5000 von einer Anzahl der GPCs unterscheiden kann, und daher kann jede ROP-Einheit 5002 in mindestens einer Ausführungsform mit jedem GPC gekoppelt sein. In mindestens einer Ausführungsform verfolgt die ROP-Einheit 5002 die von verschiedenen GPCs empfangenen Pakete und bestimmt, ob ein von der ROP-Einheit 5002 generiertes Ergebnis über das XBar 4820 weiterzuleiten ist.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 50 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 50 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 50 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 50 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 50 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 50 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 50 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 51 veranschaulicht einen Streaming-Multiprozessor („SM“) 5100 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der SM 5100 der SM aus 49. In mindestens einer Ausführungsform beinhaltet der SM 5100 ohne Einschränkung einen Anweisungs-Cache 5102, eine oder mehrere Scheduler-Einheiten 5104, eine Registerbank 5108, einen oder mehrere Verarbeitungskerne („Kerne“) 5110, eine oder mehrere Spezialfunktionseinheiten („SFUs“) 5112, eine oder mehrere Lade-/Speichereinheiten („LSUs“) 5114, ein Zusammenschaltungsnetz 5116, einen gemeinsam genutzten Speicher/Level-Eins-(„L1“-)Cache 5118 und/oder eine beliebige geeignete Kombination davon.
  • In mindestens einer Ausführungsform setzt eine Arbeitsverteilungseinheit Aufgaben zur Ausführung auf Universalverarbeitungsclustern („GPCs“) von Parallelverarbeitungseinheiten („PPUs“) ein, und jede Aufgabe wird einem bestimmten Datenverarbeitungscluster („DPC“) innerhalb eines GPCs zugeordnet, und wenn eine Aufgabe einem Shader-Programm zugeordnet ist, wird diese Aufgabe einem der SMs 5100 zugeordnet. In mindestens einer Ausführungsform empfängt die Scheduler-Einheit 5104 Aufgaben von der Arbeitsverteilungseinheit und verwaltet die Befehlsplanung für einen oder mehrere Thread-Blöcke, die dem SM 5100 zugewiesen sind. In mindestens einer Ausführungsform plant die SchedulerPlaner-Einheit 5104 Thread-Blöcke für die Ausführung als Warps von parallelen Threads, wobei jedem Thread-Block mindestens ein Warp zugeordnet ist. In mindestens einer Ausführungsform führt jeder Warp Threads aus. In mindestens einer Ausführungsform verwaltet die Scheduler-Einheit 5104 eine Vielzahl verschiedener Thread-Blöcke, indem sie den verschiedenen Thread-Blöcken Warps zuweist und dann während jedes Taktzyklus Anweisungen aus einer Vielzahl verschiedener kooperativer Gruppen an verschiedene Funktionseinheiten (z. B. Verarbeitungskerne 5110, SFUs 5112 und LSUs 5114) verteilt.
  • In mindestens einer Ausführungsform können sich kooperative Gruppen auf ein Programmiermodell zum Organisieren von Gruppen kommunizierender Threads beziehen, dass es Entwicklern erlaubt, die Granularität auszudrücken, mit der Threads kommunizieren, und so den Ausdruck satterer, effizienterer paralleler Dekompositionen ermöglicht. In mindestens einer Ausführungsform unterstützen kooperative Start-APIs die Synchronisation zwischen Thread-Blöcken zur Ausführung paralleler Algorithmen. In mindestens einer Ausführungsform 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 5106 so konfiguriert, dass sie Anweisungen an eine oder mehrere funktionelle Einheiten überträgt, und die Scheduler-Einheit 5104 beinhaltet ohne Einschränkung zwei Zuteilungseinheiten 5106, die es ermöglichen, dass zwei unterschiedliche Anweisungen aus einem gemeinsamen Warp während jedes Taktzyklus zugeteilt werden. In mindestens einer Ausführungsform weist jede Scheduler-Einheit 5104 eine einzelne Dispatcher-Einheit 5106 oder zusätzliche Dispatcher-Einheiten 5106 auf.
  • In mindestens einer Ausführungsform beinhaltet jeder SM 5100 in mindestens einer Ausführungsform ohne Einschränkung die Registerbank 5108, die einen Satz von Registern für funktionelle Einheiten des SM 5100 bereitstellt. In mindestens einer Ausführungsform ist die Registerdatei 5108 auf jede funktionelle Einheit aufgeteilt, sodass jeder funktionellen Einheit ein dedizierter Abschnitt der Registerdatei 5108 zugewiesen ist. In mindestens einer Ausführungsform ist die Registerdatei 5108 zwischen verschiedenen Warps aufgeteilt, die von dem SM 5100 ausgeführt werden, und die Registerdatei 5108 stellt einen temporären Speicher für Operanden bereit, die mit Datenpfaden von Funktionseinheiten verbunden sind. In mindestens einer Ausführungsform umfasst jeder SM 5100 ohne Einschränkung eine Vielzahl von L Verarbeitungskernen 5110, wobei L eine positive ganze Zahl ist. In mindestens einer Ausführungsform weist der SM 5100 ohne Einschränkung eine große Anzahl (z. B. 128 oder mehr) unterschiedlicher Verarbeitungskerne 5110 auf. In mindestens einer Ausführungsform beinhaltet jeder Verarbeitungskern 5110 ohne Einschränkung eine Vollpipelineverarbeitungseinheit mit einfacher Genauigkeit, doppelter Genauigkeit und/oder gemischter Genauigkeit, die ohne Einschränkung eine arithmetische Fließkommalogikeinheit und eine arithmetische Integerlogikeinheit beinhaltet. In mindestens einer Ausführungsform implementieren die Gleitkomma-Arithmetik-Logikeinheiten den IEEE 754-2008-Standard für Gleitkomma-Arithmetik. In mindestens einer Ausführungsform weisen die Verarbeitungskerne 5110 ohne Einschränkung 64 Gleitkomma-Kerne mit einfacher Genauigkeit (32 Bit), 64 Ganzzahl-Kerne, 32 Gleitkomma-Kerne mit doppelter Genauigkeit (64 Bit) und 8 TensorKerne auf.
  • Tensorkerne sind gemäß mindestens einer Ausführungsform zum Ausführen von Matrixoperationen konfiguriert. In mindestens einer Ausführungsform sind ein oder mehrere Tensorkerne in den Verarbeitungskernen 5110 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-Gleitkommamatrizen und die Akkumulationsmatrizen C und D 16-Bit-Gleitkomma- oder 32-Bit-Gleitkommamatrizen. In mindestens einer Ausführungsform arbeiten die Tensorkerne an 16-Bit-Gleitkommaeingabedaten mit 32-Bit-Gleitkommaakkumulation. In mindestens einer Ausführungsform verwendet die 16-Bit-Gleitkommamultiplikation 64 Operationen und ergibt ein Produkt mit voller Genauigkeit, das dann unter Verwendung von 32-Bit-Gleitkommaaddition mit anderen Zwischenprodukten für eine 4x4x4-Matrixmultiplikation akkumuliert wird. In mindestens einer Ausführungsform werden Tensorkerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen, die aus diesen kleineren Elementen aufgebaut sind. In mindestens einer Ausführungsform legt eine API, wie etwa die CUDA 9 C++-API, spezielle Matrixlade-, Matrixmultiplizier- und -akkumulations- und Matrixspeicheroperationen offen, um Tensorkerne aus einem CUDA-C++-Programm effizient zu verwenden. In mindestens einer Ausführungsform wird auf einem CUDA-Level auf einer Warp-Level-Schnittstelle von Matrizen der Größe 16x16 ausgegangen, die sich über alle 32 Threads des Warp erstrecken.
  • In mindestens einer Ausführungsform umfasst jeder SM 5100 ohne Einschränkung M SFUs 5112, die Spezialfunktionen durchführen (z. B. Attributbewertung, reziproke Quadratwurzel und dergleichen). In mindestens einer Ausführungsform beinhalten die SFUs 5112 ohne Einschränkung eine Baumtraversierungseinheit, die dazu konfiguriert ist, eine hierarchische Baumdatenstruktur zu traversieren. In mindestens einer Ausführungsform beinhalten die SFUs 5112 ohne Einschränkung eine Textureinheit, die so konfiguriert ist, dass sie Filteroperationen für die Texturabbildung durchführt. In mindestens einer Ausführungsform sind die Textureinheiten dazu konfiguriert, Texturabbildungen (z. B. eine 2D-Anordnung von Texeln) aus dem Speicher zu laden und Texturabbildungen abzutasten, um abgetastete Texturwerte zur Verwendung in von dem SM 5100 ausgeführten Shader-Programmen zu erzeugen. In mindestens einer Ausführungsform werden die Texturzuordnungen im gemeinsamen Speicher/L1-Cache 5118 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 beinhaltet jeder SM 5100 ohne Einschränkung zwei Textureinheiten.
  • Jeder SM 5100 umfasst in mindestens einer Ausführungsform ohne Einschränkung N LSUs 5114, die Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher/L1-Cache 5118 und der Registerbank 5108 implementieren. Das Verbindungsnetzwerk 5116 verbindet in mindestens einer Ausführungsform jede Funktionseinheit mit der Registerdatei 5108 und die LSU 5114 mit der Registerdatei 5108 und dem gemeinsamen Speicher/L1-Cache 5118. In mindestens einer Ausführungsform ist das Verbindungsnetzwerk 5116 ein Koppelfeld, das so ausgestaltet sein kann, dass es jede der Funktionseinheiten mit jedem der Register in der Registerdatei 5108 verbindet und die LSUs 5114 mit der Registerdatei 5108 und den Speicherplätzen im gemeinsamen Speicher/L1-Cache 5118 verbindet.
  • In mindestens einer Ausführungsform ist der gemeinsam genutzte Speicher/L1-Cache 5118 ein Array von chipinternem Speicher, das in mindestens einer Ausführungsform die Datenspeicherung und die Kommunikation zwischen dem SM 5100 und der Primitiv-Maschine sowie zwischen Threads in dem SM 5100 ermöglicht. In mindestens einer Ausführungsform umfasst der gemeinsam genutzte Speicher/L1-Cache 5118 ohne Einschränkung eine Speicherkapazität von 128 KB und befindet sich im Pfad vom SM 5100 zur Partitionseinheit. In mindestens einer Ausführungsform wird der gemeinsame Speicher/L1-Cache 5118 zum Zwischenspeichern von Lese- und Schreibvorgängen verwendet. In mindestens einer Ausführungsform sind einer oder mehrere von gemeinsamem Speicher/L1-Cache 5118, L2-Cache und Arbeitsspeicher Zusatzspeicher (Backing-Stores).
  • Das Kombinieren der Funktionalität des Daten-Cache und des gemeinsam genutzten Speichers in einem einzelnen Speicherblock stellt in mindestens einer Ausführungsform eine verbesserte Rechenleistung für beide Arten von Speicherzugriffen bereit. In mindestens einer Ausführungsform wird die Kapazität durch Programme, die keinen gemeinsam genutzten Speicher verwenden, als Cache verwendet oder sie kann so verwendet werden, wie etwa, falls der gemeinsam genutzte Speicher so konfiguriert ist, dass er die Hälfte einer Kapazität verwendet, und Textur- und Lade-/Speicheroperationen die verbleibende Kapazität verwenden können. Durch die Integration in den gemeinsam genutzten Speicher/L1-Cache 5118 kann der gemeinsam genutzte Speicher/L1-Cache 5118 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 in der Berechnung verwendet wird, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse generiert, wobei der SM 5100 zur Ausführung des Programms und zur Durchführung von Berechnungen, der gemeinsame Speicher/L1 -Cache 5118 zur Kommunikation zwischen Threads und die LSU 5114 zum Lesen und Schreiben des globalen Speichers über den gemeinsamen Speicher/L1-Cache 5118 und die Speicherpartitionseinheit verwendet werden. In mindestens einer Ausführungsform schreibt der SM 5100, wenn er für allgemeine parallele Berechnungen ausgestaltet ist, Befehle, die die Scheduler-Einheit 5104 verwenden kann, um neue Arbeiten auf DPCs zu starten.
  • In mindestens einer Ausführungsform ist eine PPU in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, Servern, Supercomputern, einem Smartphone (z. B. einer drahtlosen tragbaren Vorrichtung), einem persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, einem Fahrzeug, einer am Kopf befestigten Anzeige, einer elektronischen tragbaren Vorrichtung usw. enthalten oder damit gekoppelt. In mindestens einer Ausführungsform ist die PPU auf einem einzigen Halbleitersubstrat untergebracht. In mindestens einer Ausführungsform ist die PPU in einem Systemon-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 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie z. B. ein neuronales Netzwerk, zu trainieren, um der SM 5100 bereitgestellte Informationen vorherzusagen oder abzuleiten. In mindestens einer Ausführungsform wird die SM 5100 verwendet, um Informationen auf der Grundlage eines trainierten Models des maschinellen Lernens (z. B. eines neuronalen Netzes) abzuleiten oder vorherzusagen, das von einem anderen Prozessor oder System oder von der SM 5100 trainiert wurde. In mindestens einer Ausführungsform kann die SM 5100 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netzwerke auszuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 51 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 51 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 51 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 51 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 51 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 51 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 51 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • RECHENPLATTFORMEN
  • Es werden Ausführungsformen offenbart, die mit einer virtualisierten Rechenplattform für weiterentwickeltes Rechnen in Bezug stehen, wie etwa Bildinferenzierung und Bildverarbeitung in medizinischen Anwendungen. Ohne Einschränkung können Ausführungsformen Radiografie, Magnetresonanztomografie (MRT), Nuklearmedizin, Ultraschall, Sonografie, Elastografie, fotoakustische Bildgebung, Tomografie, Echokardiografie, funktionelle Nahinfrarotspektroskopie und Magnetpartikelbildgebung oder eine Kombination davon beinhalten. In mindestens einer Ausführungsform können eine virtualisierte Rechenplattform und die hierin beschriebenen damit assoziierten Prozesse zusätzlich oder alternativ ohne Einschränkung in der Forensikanalyse, der Detektion und Bildgebung des Untergrunds (z. B. Ölexploration, Archäologie, Paläontologie usw.), der Topografie, der Ozeanografie, der Geologie, der Osteologie, der Meteorologie, der intelligenten Bereichs- oder Objektverfolgung und -überwachung, der Sensordatenverarbeitung (z. B. RADAR, SONAR, LIDAR usw.) und/oder der Genomik und Gensequenzierung verwendet werden.
  • Unter Bezugnahme auf 52 handelt es sich bei 52 um ein beispielhaftes Datenablaufdiagramm für einen Prozess 5200 zur Erzeugung und zum Einsatz einer Bildverarbeitungs- und -ableitungspipeline gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozess 5200 zur Verwendung mit Bildgebungsvorrichtungen, Verarbeitungsvorrichtungen, Genomikvorrichtungen, Gensequenzierungsvorrichtungen, Radiologievorrichtungen und/oder anderen Vorrichtungstypen in einer oder mehreren Einrichtungen 5202 eingesetzt werden, wie etwa in medizinischen Einrichtungen, Krankenhäusern, Gesundheitsinstituten, Kliniken, Forschungs- oder Diagnoselabors usw. In mindestens einer Ausführungsform kann der Prozess 5200 zum Ausführen einer Genomanalyse und -inferenz an Sequenzierungsdaten eingesetzt werden. Beispiele für Genomanalysen, die unter Verwendung der hierin beschriebenen Systeme und Prozesse durchgeführt werden können, beinhalten ohne Einschränkung Varianten-Calling, Mutationsdetektion und Quantifizierung der Genexpression.
  • In mindestens einer Ausführungsform kann der Prozess 5200 innerhalb eines Trainingssystems 5204 und/oder eines Einsatzsystems 5206 ausgeführt werden. In mindestens einer Ausführungsform kann das Trainingssystem 5204 verwendet werden, um das Training, den Einsatz und die Implementation von Modellen des maschinellen Lernens (z. B. neuronale Netzwerke, Objektdetektionsalgorithmen, Algorithmen des maschinellen Sehens usw.) zur Verwendung in dem Einsatzsystem 5206 durchzuführen. In mindestens einer Ausführungsform kann das Einsatzsystem 5206 so konfiguriert sein, dass es Verarbeitungs- und Rechenressourcen in einer verteilten Rechenumgebung ablädt, um die Infrastrukturanforderungen in der Einrichtung 5202 zu reduzieren. Bei mindestens einer Ausführungsform kann das Einsatzsystem 5206 eine optimierte Plattform für die Auswahl, Anpassung und Implementierung virtueller Instrumente zur Verwendung mit bildgebenden Einrichtungen (z. B. MRI, CT-Scan, Röntgen, Ultraschall usw.) oder Sequenzierungseinrichtungen in der Einrichtung 5202 bereitstellen. In mindestens einer Ausführungsform können virtuelle Instrumente softwaredefinierte Anwendungen zum Durchführen einer oder mehrerer Verarbeitungsoperationen in Bezug auf Bildgebungsdaten beinhalten, die durch Bildgebungsvorrichtungen, Sequenzierungsvorrichtungen, Radiologievorrichtungen und/oder andere Vorrichtungstypen erzeugt werden. In mindestens einer Ausführungsform können eine oder mehrere Anwendungen in einer Pipeline Dienste (z. B. Inferenz, Visualisierung, Berechnung, KI usw.) des Einsatzsystems 5206 während der Ausführung von Anwendungen verwenden oder aufrufen.
  • Bei mindestens einer Ausführungsform können einige der Anwendungen, die in fortgeschrittenen Verarbeitungs- und Inferenz-Pipelines verwendet werden, maschinelle Lernmodelle oder andere Kl verwenden, um einen oder mehrere Verarbeitungsschritte auszuführen. In mindestens einer Ausführungsform können Modelle des maschinellen Lernens in der Einrichtung 5202 unter Verwendung von Daten 5208 (wie etwa Bildgebungsdaten) trainiert werden, die in der Einrichtung 5202 generiert wurden (und auf einem oder mehreren Servern eines Bildarchivierungs- und Kommunikationssystems (PACS) in der Einrichtung 5202 gespeichert sind), und sie können unter Verwendung von Bildgebungs- oder Sequenzierungsdaten 5208 aus einer anderen Einrichtung oder anderen Einrichtungen (z. B. einem anderen Krankenhaus, Labor, einer anderen Klinik usw.) oder einer Kombination davon trainiert werden. In mindestens einer Ausführungsform kann das Trainingssystem 5204 verwendet werden, um Anwendungen, Dienste und/oder andere Ressourcen zum Generieren von funktionierenden, einsatzfähigen Modellen des maschinellen Lernens für das Einsatzsystem 5206 bereitzustellen.
  • Bei mindestens einer Ausführungsform kann eine Modellregistrierungsdatenbank 5224 durch Objektspeicher unterstützt werden, der Versionierung und Objekt-Metadaten unterstützen kann. In mindestens einer Ausführungsform kann Objektspeicherung beispielsweise durch eine mit Cloud-Speicherung (z.B. einer Cloud 5326 der 53) kompatible Anwendungsprogrammierschnittstelle (API) von innerhalb einer Cloud-Plattform zugänglich sein. Bei mindestens einer Ausführungsform können die maschinellen Lernmodelle innerhalb des Modellregisters 5224 von Entwicklern oder Partnern eines Systems, das mit einer API interagiert, hochgeladen, aufgeführt, bearbeitet oder gelöscht werden. In mindestens einer Ausführungsform kann eine API Zugriff auf Verfahren bereitstellen, die es Benutzern mit zweckmäßigen Anmeldeinformationen ermöglichen, Modelle mit Anwendungen zu assoziieren, sodass Modelle als Teil der Ausführung von containerisierten Instanziierungen von Anwendungen ausgeführt werden können.
  • In mindestens einer Ausführungsform kann eine Trainingspipeline 5304 ( 53) ein Szenario beinhalten, in dem die Einrichtung 5202 ihr eigenes Modell des maschinellen Lernens trainiert oder ein bestehendes Modell des maschinellen Lernen aufweist, das optimiert oder aktualisiert werden muss. In mindestens einer Ausführungsform können Bildgebungsdaten 5208, die von (einer) Bildgebungsvorrichtung(en), Sequenzierungsvorrichtungen und/oder anderen Vorrichtungsarten erzeugt wurden, empfangen werden. In mindestens einer Ausführungsform kann, sobald Bildgebungsdaten 5208 empfangen werden, die KI-gestützte Annotation 5210 verwendet werden, um beim Generieren von Annotationen zu helfen, die den Bildgebungsdaten 5208 entsprechen, die als Ground-Truth-Daten für ein Modell des maschinellen Lernens verwendet werden sollen. In mindestens einer Ausführungsform kann die KI-gestützte Annotation 5210 ein oder mehrere Modelle des maschinellen Lernens (z. B. faltende neuronal Netze (CNNs)) beinhalten, die darauf trainiert werden können, Annotationen zu generieren, die bestimmten Typen von Bildgebungsdaten 5208 (z. B. von bestimmten Vorrichtungen) und/oder bestimmten Typen von Anomalien in den Bildgebungsdaten 5208 entsprechen. In mindestens einer Ausführungsform können die KI-gestützten Annotationen 5210 dann direkt verwendet oder unter Verwendung eines Annotationswerkzeugs (z. B. von einem Forscher, Kliniker, Arzt, Wissenschaftler usw.) eingestellt oder fein abgestimmt werden, um Ground-Truth-Daten zu erzeugen. In mindestens einer Ausführungsform können in einigen Beispielen beschriftete Klinikdaten 5212 (z. B. Annotationen, die von einem Kliniker, Arzt, Wissenschaftler, Techniker usw. bereitgestellt werden) als Ground-Truth-Daten für das Training eines Modells des maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform können die Kl-gestützten Annotationen 5210, beschrifteten Klinikdaten 5212 oder eine Kombination davon als Ground-Truth-Daten für das Training eines Modells des maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform kann ein trainiertes Modell des maschinellen Lernens als Ausgabemodell 5216 bezeichnet werden und durch das Einsatzsystem 5206 verwendet werden, wie hierin beschrieben.
  • In mindestens einer Ausführungsform kann die Trainingspipeline 5304 ( 53) ein Szenario beinhalten, in dem die Einrichtung 5202 ein Modell des maschinellen Lernens zur Verwendung beim Durchführen eines oder mehrerer Verarbeitungs-Tasks für eine oder mehrere Anwendungen in dem Einsatzsystem 5206 benötigt, die Einrichtung 5202 aber möglicherweise derzeit kein derartiges Modell des maschinellen Lernens aufweist (oder möglicherweise kein Modell aufweist, das für derartige Zwecke optimiert, effizient oder effektiv ist). In mindestens einer Ausführungsform kann ein bestehendes Modell des maschinellen Lernens aus der Modellregistrierungsdatenbank 5224 ausgewählt werden. In mindestens einer Ausführungsform kann die Modellregistrierungsdatenbank 5224 Modelle des maschinellen Lernens beinhalten, die für die Ausführung einer Vielfalt von unterschiedlichen Ableitungsaufgaben an Bildgebungsdaten trainiert wurden. In mindestens einer Ausführungsform können die Modelle des maschinellen Lernens in der Modellregistrierungsdatenbank 5224 an Bildgebungsdaten von anderen Einrichtungen als der Einrichtung 5202 trainiert worden sein (z. B. Einrichtungen, die sich an einem anderen Ort befinden). In mindestens einer Ausführungsform können die Modelle des maschinellen Lernens an Bildgebungsdaten von einem Ort, zwei Orten oder einer beliebigen Anzahl von Orten trainiert worden sein. In mindestens einer Ausführungsform kann das Training beim Trainieren an Bildgebungsdaten von einem spezifischen Ort an diesem Ort oder mindestens auf eine Weise stattfinden, mit der die Vertraulichkeit der Bildgebungsdaten geschützt wird oder die Übermittlung der Bildgebungsdaten außerhalb der Räumlichkeiten eingeschränkt wird (z. B. zur Einhaltung von HIPAA-Vorschriften, Datenschutzvorschriften usw.). Sobald ein Modell an einem Standort trainiert - oder teilweise trainiert - wurde, kann bei mindestens einer Ausführungsform ein maschinelles Lernmodell zu dem Modellregister 5224 hinzugefügt werden. In mindestens einer Ausführungsform kann ein Modell des maschinellen Lernens dann in einer beliebigen Anzahl von anderen Einrichtungen neu trainiert oder aktualisiert werden und ein neu trainiertes oder aktualisiertes Modell kann in der Modellregistrierungsdatenbank 5224 verfügbar gemacht werden. In mindestens einer Ausführungsform kann dann ein Modell des maschinellen Lernens aus der Modellregistrierungsdatenbank 5224 ausgewählt werden - und als Ausgabemodell 5216 bezeichnet werden - und in dem Einsatzsystem 5206 verwendet werden, um einen oder mehrere Verarbeitungs-Tasks für eine oder mehrere Anwendungen eines Einsatzsystems durchzuführen.
  • In mindestens einer Ausführungsform kann die Trainingspipeline 5304 ( 53) in einem Szenario verwendet werden, in dem die Einrichtung 5202 ein Modell des maschinellen Lernens zur Verwendung bei der Ausführung einer oder mehrerer Verarbeitungsaufgaben für eine oder mehrere Anwendungen im Einsatzsystem 5206 erfordert, die Einrichtung 5202 aber möglicherweise derzeit nicht über ein solches Modell des maschinellen Lernens verfügt (oder möglicherweise nicht über ein Modell verfügt, das für solche Zwecke optimiert, effizient oder effektiv ist). In mindestens einer Ausführungsform könnte ein aus der Modellregistrierungsdatenbank 5224 ausgewähltes Modell des maschinellen Lernens aufgrund von Unterschieden bei den Populationen, genetischen Variationen, der Robustheit der zum Trainieren eines Modells des maschinellen Lernens verwendeten Trainingsdaten, der Verschiedenartigkeit der Anomalien der Trainingsdaten und/oder anderer Probleme mit den Trainingsdaten nicht für die in der Einrichtung 5202 generierten Bildgebungsdaten 5208 fein abgestimmt oder optimiert sein. In mindestens einer Ausführungsform kann die KI-gestützte Annotation 5210 verwendet werden, um beim Generieren von Annotationen zu helfen, die den Bildgebungsdaten 5208 entsprechen, die als Ground-Truth-Daten für das erneute Trainieren oder Aktualisieren eines Modells des maschinellen Lernens verwendet werden sollen. In mindestens einer Ausführungsform können beschriftete Klinikdaten 5212 (z. B. Annotationen, die von einem Kliniker, Arzt, Wissenschaftler usw. bereitgestellt werden) als Ground-Truth-Daten für das Training eines Modells des maschinellen Lernens verwendet werden. Bei mindestens einer Ausführungsform kann das erneute Trainieren oder Aktualisieren eines maschinellen Lernmodells als Modelltraining 5214 bezeichnet werden. In mindestens einer Ausführungsform kann das Modelltraining 5214 - z. B. Klgestützte Annotationen 5210, beschriftete Klinikdaten 5212 oder eine Kombination davon - als Ground-Truth-Daten für das erneute Training oder Aktualisieren eines Modells des maschinellen Lernens verwendet werden.
  • In mindestens einer Ausführungsform kann das Bereitstellungssystem 5206 Software 5218, Dienste 5220, Hardware 5222 und/oder andere Komponenten, Merkmale und Funktionalität beinhalten. In mindestens einer Ausführungsform kann das Einsatzsystem 5206 einen Software-„Stapel“ beinhalten, sodass die Software 5218 auf den Diensten 5220 aufgebaut sein kann und die Dienste 5220 verwenden kann, um einige oder alle Verarbeitungsaufgaben durchzuführen, und die Dienste 5220 und die Software 5218 können auf der Hardware 5222 aufgebaut sein und die Hardware 5222 verwenden, um Verarbeitungs-, Speicher- und/oder andere Rechenaufgaben des Einsatzsystems 5206 auszuführen.
  • Bei mindestens einer Ausführungsform kann die Software 5218 beliebige Anzahl von verschiedenen Containern umfassen, wobei jeder Container eine Instanziierung einer Anwendung ausführen kann. In mindestens einer Ausführungsform kann jede Anwendung einen oder mehrere Verarbeitungsaufgaben in einer weiterentwickelten Verarbeitungs- und Inferenzpipeline durchführen (z. B. Inferenz, Objektdetektion, Merkmalsdetektion, Segmentierung, Bildverbesserung, Kalibrierung usw.). Bei mindestens einer Ausführungsform kann es für jede Art von bildgebender Einrichtung (z. B. CT, MRI, Röntgen, Ultraschall, Sonographie, Echokardiographie usw.), Sequenzierungseinrichtung, Radiologieeinrichtung, Genomikeinrichtung usw. eine beliebige Anzahl von Containern geben, die eine Datenverarbeitungsaufgabe in Bezug auf die von einer Einrichtung erzeugten Bilddaten 5208 (oder anderen Datentypen, wie sie hier beschrieben sind) durchführen können. In mindestens einer Ausführungsform kann eine weiterentwickelte Verarbeitungs- und Inferenzpipeline auf Grundlage von Auswahlen unterschiedlicher Container definiert werden, die zum Verarbeiten von Bildgebungsdaten 5208 gewünscht oder erforderlich sind, zusätzlich zu Containern, die Bildgebungsdaten zur Verwendung durch jeden Container und/oder zur Verwendung durch die Einrichtung 5202 nach dem Verarbeiten durch eine Pipeline empfangen und konfigurieren (z. B. zur Rückkonvertierung von Ausgaben in einen verwendbaren Datentyp, wie etwa Daten der digitalen Bildgebung und Kommunikation in der Medizin (DICOM), Daten eines Radiologieinformationssystems (RIS), Daten eines Klinikinformationssystems (CIS), Daten zum Aufruf einer entfernten Prozedur (RPC), Daten, die im Wesentlichen mit einer Schnittstelle zur Darstellungszustandsübermittlung (REST) konform sind, Daten, die im Wesentlichen mit einer dateibasierten Schnittstelle konform sind, und/oder Rohdaten, zur Speicherung und Anzeige in der Einrichtung 5202). In mindestens einer Ausführungsform kann eine Kombination von Containern innerhalb der Software 5218 (die z. B. eine Pipeline bilden) als virtuelles Instrument bezeichnet werden (wie hierin detaillierter beschrieben) und ein virtuelles Instrument kann Dienste 5220 und Hardware 5222 ausnutzen, um einige oder alle Verarbeitungsaufgaben von in Containern instanziierten Anwendungen auszuführen.
  • In mindestens einer Ausführungsform kann eine Datenverarbeitungspipeline Eingabedaten (z. B. Bildgebungsdaten 5208) in einem DICOM-, RIS-, CIS-, REST-konformen, RPC-, Roh- und/oder einem anderen Format als Reaktion auf eine Ableitungsanforderung (z. B. eine Anforderung von einem Benutzer des Einsatzsystems 5206, wie zum Beispiel einem Kliniker, einem Arzt, einem Radiologen usw.) empfangen. In mindestens einer Ausführungsform können die Eingabedaten für ein oder mehrere Bilder, Videos und/oder andere Datendarstellungen repräsentativ sein, die durch eine oder mehrere Bildgebungsvorrichtungen, Sequenzierungsvorrichtungen, Radiologievorrichtungen, Genomikvorrichtungen und/oder andere Vorrichtungstypen erzeugt werden. In mindestens einer Ausführungsform können die Daten als Teil der Datenverarbeitungspipeline einer Vorverarbeitung unterzogen werden, um die Daten für die Verarbeitung durch eine oder mehrere Anwendungen vorzubereiten. In mindestens einer Ausführungsform kann eine Nachbearbeitung an einer Ausgabe einer oder mehrerer Ableitungsaufgaben oder anderer Verarbeitungsaufgaben einer Pipeline durchgeführt werden, um Ausgabedaten für eine nächste Anwendung vorzubereiten und/oder Ausgabedaten für die Übermittlung und/oder Verwendung durch einen Benutzer vorzubereiten (z. B. als eine Antwort auf eine Ableitungsanfrage). In mindestens einer Ausführungsform können Inferenzierungsaufgaben durch ein oder mehrere Modelle des maschinellen Lernens durchgeführt werden, wie etwa trainierte oder eingesetzte neuronale Netze, die Ausgabemodelle 5216 des Trainingssystems 5204 beinhalten können.
  • Bei mindestens einer Ausführungsform können die Tasks der Datenverarbeitungs-Pipeline in einem Container(n) gekapselt sein, die jeweils eine diskrete, voll funktionsfähige Instanziierung einer Anwendung und einer virtualisierten Rechenumgebung darstellen, die dazu in der Lage ist, Modelle des maschinellen Lernens zu referenzieren. In mindestens einer Ausführungsform können Container oder Anwendungen in einem privaten (z. B. zugriffsbeschränkten) Bereich einer Containerregistrierungsdatenbank (hierin detaillierter beschrieben) veröffentlicht werden und trainierte oder eingesetzte Modelle können in der Modellregistrierungsdatenbank 5224 gespeichert und mit einer oder mehreren Anwendungen assoziiert werden. In mindestens einer Ausführungsform können Abbilder von Anwendungen (z. B. Containerabbilder) in einer Containerregistrierungsdatenbank verfügbar sein und sobald es durch einen Benutzer aus einer Containerregistrierungsdatenbank für den Einsatz in einer Pipeline ausgewählt wurde, kann ein Abbild verwendet werden, um einen Container für eine Instanziierung einer Anwendung zur Verwendung durch das System eines Benutzers zu erzeugen.
  • In mindestens einer Ausführungsform können Entwickler (z. B. Softwareentwickler, Ärzte, Mediziner usw.) Anwendungen (z. B. in Form von Behältern) entwickeln, veröffentlichen und speichern, um Prozesse zur Bildverarbeitung und/oder Inferenzierung der versorgten Daten auszuführen. In mindestens einer Ausführungsform kann die Entwicklung, Veröffentlichung und/oder Speicherung unter Verwendung eines Software-Entwicklungskits (SDK) durchgeführt werden, das mit einem System assoziiert ist (um z. B. sicherzustellen, dass eine entwickelte Anwendung und/oder ein entwickelter Container mit einem System konform oder kompatibel ist). In mindestens einer Ausführungsform kann eine Anwendung, die entwickelt wird, lokal (z. B. in einer ersten Einrichtung, an Daten von einer ersten Einrichtung) mit einem SDK geprüft werden, das mindestens einige der Dienste 5220 als System (z. B. System 5300 aus 53) unterstützen kann. Da DICOM-Objekte zwischen einem und Hunderten von Bildern oder anderen Datentypen enthalten können, und aufgrund einer Variation der Daten, kann ein Entwickler in mindestens einer Ausführungsform für das Verwalten (z. B. das Festlegen von Konstrukten für, den Einbau von Vorverarbeitung in eine Anwendung usw.) der Extraktion und Vorbereitung eingehender DICOM-Daten zuständig sein. In mindestens einer Ausführungsform kann eine Anwendung, sobald sie durch das System 5300 validiert wurde (z. B. bezüglich Genauigkeit, Sicherheit, Patientendatenschutz usw.), in einer Containerregistrierungsdatenbank zur Auswahl und/oder Implementation durch einen Benutzer (z. B. ein Krankenhaus, eine Klinik, ein Labor, einen Gesundheitsdienstleister usw.) verfügbar sein, um einen oder mehrere Verarbeitungsaufgaben in Bezug auf Daten in einer Einrichtung (z. B. einer zweiten Einrichtung) eines Benutzers durchzuführen.
  • In mindestens einer Ausführungsform können Entwickler dann Anwendungen oder Container durch ein Netzwerk für den Zugriff und die Verwendung durch Benutzer eines Systems (z. B. des Systems 5300 aus 53) teilen. Bei mindestens einer Ausführungsform können fertiggestellte und freigegebene Anwendungen oder Container in einem Containerregister gespeichert werden, und verknüpfte maschinelle Lernmodelle können in dem Modellregister 5224 gespeichert werden. In mindestens einer Ausführungsform kann eine anfordernde Entität (z. B. ein Benutzer in einer medizinischen Einrichtung) - die eine Inferenz- oder Bildverarbeitungsanforderung bereitstellt - eine Containerregistrierungsdatenbank und/oder Modellregistrierungsdatenbank 5224 nach einer Anwendung, einem Container, einem Datensatz, einem Modell des maschinellen Lernens usw. durchsuchen, eine gewünschte Kombination von Elementen zur Aufnahme in die Datenverarbeitungspipeline auswählen und eine Bildverarbeitungsanforderung absenden. In mindestens einer Ausführungsform kann eine Anforderung Eingabedaten (und in einigen Beispielen damit assoziierte Patientendaten) beinhalten, die zum Durchführen einer Anforderung notwendig sind, und/oder eine Auswahl von Anwendungen) und/oder Modellen des maschinellen Lernens beinhalten, die bei der Verarbeitung einer Anforderung ausgeführt werden sollen. In mindestens einer Ausführungsform kann eine Anforderung dann an eine oder mehrere Komponenten des Einsatzsystems 5206 (z. B. eine Cloud) übergeben werden, um die Verarbeitung der Datenverarbeitungspipeline durchzuführen. In mindestens einer Ausführungsform kann die Verarbeitung durch das Einsatzsystem 5206 die Referenzierung ausgewählter Elemente (z. B. Anwendungen, Container, Modelle usw.) aus einer Containerregistrierungsdatenbank und/oder Modellregistrierungsdatenbank 5224 beinhalten. In mindestens einer Ausführungsform können, sobald Ergebnisse durch eine Pipeline erzeugt wurden, die Ergebnisse als Referenz an einen Benutzer zurückgegeben werden (z. B. zur Ansicht in einer Ansichtanwendungssuite, die auf einer lokalen Arbeitsstation oder einem lokalen Endgerät in den Räumlichkeiten ausgeführt wird). In mindestens einer Ausführungsform kann ein Radiologe Ergebnisse von einer Datenverarbeitungspipeline empfangen, die eine beliebige Anzahl von Anwendungen und/oder Containern beinhaltet, wobei die Ergebnisse Anomaliedetektion in Röntgenbildern, CT-Scans, MRTs usw. beinhalten können.
  • Bei mindestens einer Ausführungsform können zur Beihilfe bei der Verarbeitung oder Ausführung von Anwendungen oder Containern in Pipelines Dienste 5220 genutzt werden. Bei mindestens einer Ausführungsform können die Dienste 5220 Rechendienste, künstliche Intelligenz- (Kl) Dienste, Visualisierungsdienste und/oder andere Dienstarten umfassen. In mindestens einer Ausführungsform können die Dienste 5220 eine Funktionalität bereitstellen, die eine oder mehrere Anwendungen in der Software 5218 gemeinsam haben, sodass die Funktionalität zu einem Dienst abstrahiert werden kann, der durch Anwendungen aufgerufen oder ausgenutzt werden kann. In mindestens einer Ausführungsform kann die durch die Dienste 5220 bereitgestellte Funktionalität dynamisch und effizienter laufen, während sie ebenfalls gut skalierbar ist, indem es Anwendungen erlaubt wird, Daten parallel zu verarbeiten (z. B. unter Verwendung einer Parallelrechenplattform 5330 (53)). Anstatt dass jede Anwendung, die eine gleiche Funktionalität teilt, die durch einen Dienst 5220 angeboten wird, eine entsprechende Instanz des Dienstes 5220 aufweisen muss, kann der Dienst 5220 in mindestens einer Ausführungsform von verschiedenen Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform können die Dienste einen Inferenzserver oder eine Inferenz-Maschine beinhalten, der/die als nicht einschränkende Beispiele zum Ausführen von Detektions- oder Segmentierungs-Aufgaben verwendet werden kann. In mindestens einer Ausführungsform kann ein Modelltrainingsdienst enthalten sein, der die Fähigkeit bereitstellen kann, Modelle des maschinellen Lernens zu trainieren und/oder erneut zu trainieren. In mindestens einer Ausführungsform kann ferner ein Datenerweiterungsdienst enthalten sein, der die Extraktion, Größenänderung, Skalierung und/oder andere Erweiterung von GPU-beschleunigten Daten (z. B. DICOM-Daten, RIS-Daten, CIS-Daten, REST-konformen Daten, RPC-Daten, Rohdaten usw.) bereitstellen kann. In mindestens einer Ausführungsform kann ein Visualisierungsdienst verwendet werden, der Bild-Rendering-Effekte - wie etwa Strahlverfolgung, Rasterung, Entrauschen, Schärfung usw. - hinzufügen kann, um zweidimensionale (2D) und/oder dreidimensionale (3D) Modelle realistischer zu gestalten. In mindestens einer Ausführungsform können Dienste für virtuelle Instrumente enthalten sein, die Strahlformung, Segmentierung, Inferenzieren, Bildgebung und/oder Unterstützung für andere Anwendungen innerhalb von Pipelines virtueller Instrumente bereitstellen.
  • In mindestens einer Ausführungsform, in der ein Dienst 5220 einen KI-Dienst (z. B. einen Inferenzdienst) beinhaltet, können ein oder mehrere Modelle des maschinellen Lernens, die mit einer Anwendung zur Anomaliedetektion (z. B. Tumoren, Wachstumsauffälligkeiten, Narbenbildung usw.) assoziiert sind, ausgeführt werden, indem ein Inferenzdienst (z. B. ein Inferenzserver) aufgerufen wird (z. B. als API-Aufruf), um Modell(e) des maschinellen Lernens oder deren Verarbeitung als Teil der Anwendungsausführung auszuführen. In mindestens einer Ausführungsform, in der eine andere Anwendung ein oder mehrere Modelle des maschinellen Lernens für Segmentierungsaufgaben beinhaltet, kann eine Anwendung einen Inferenzdienst aufrufen, um Modelle des maschinellen Lernens zum Durchführen einer oder mehrerer mit Segmentierungsaufgaben assoziierten Verarbeitungsoperationen auszuführen. In mindestens einer Ausführungsform kann die Software 5218, die eine weiterentwickelte Verarbeitungs- und Ableitungspipeline implementiert, die eine Segmentierungsanwendung und eine Anomalieerkennungsanwendung beinhaltet, optimiert werden, da jede Anwendung denselben Ableitungsdienst zur Ausführung einer oder mehrerer Ableitungsaufgaben aufrufen kann.
  • In mindestens einer Ausführungsform kann die Hardware 5222 GPUs, CPUs, Grafikkarten, ein Kl-/Deep-Learning-System (z. B. einen Kl-Supercomputer wie etwa das DGX-Supercomputersystem von NVIDIA), eine Cloud-Plattform oder eine Kombination davon beinhalten. In mindestens einer Ausführungsform können unterschiedliche Typen von Hardware 5222 verwendet werden, um eine effiziente, speziell entwickelte Unterstützung für Software 5218 und Dienste 5220 in dem Einsatzsystem 5206 bereitzustellen. In mindestens einer Ausführungsform kann die Verwendung von GPU-Verarbeitung für die lokale Verarbeitung (z. B. in der Einrichtung 5202), innerhalb eines Kl/Deep-Learning-Systems, in einem Cloud-System und/oder in anderen Verarbeitungskomponenten des Einsatzsystems 5206 implementiert werden, um die Effizienz, Genauigkeit und Wirksamkeit von Bildverarbeitung, Bildrekonstruktion, Segmentierung, MRT-Untersuchungen, Schlaganfall- oder Herzinfarktdetektion (z. B. in Echtzeit), Bildqualität beim Rendern usw. zu verbessern. In mindestens einer Ausführungsform kann eine Einrichtung Bildgebungsvorrichtungen, Genomikvorrichtungen, Sequenzierungsvorrichtungen und/oder andere Vorrichtungstypen in den Räumlichkeiten beinhalten, die GPUs ausnutzen können, um Bildgebungsdaten zu erzeugen, die für die Anatomie eines Probanden repräsentativ sind.
  • In mindestens einer Ausführungsform können die Software 5218 und/oder Dienste 5220 für die GPU-Verarbeitung in Bezug auf Tieflernen, maschinelles Lernen und/oder Hochleistungsdatenverarbeitung als nicht einschränkende Beispiele optimiert werden. In mindestens einer Ausführungsform kann mindestens ein Teil der Rechenumgebung des Einsatzsystems 5206 und/oder des Trainingssystems 5204 in einem Rechenzentrum auf einem oder mehreren Supercomputern oder Rechensystemen mit hoher Rechenleistung mit GPU-optimierter Software (z. B. Hardware- und Software-Kombination des DGX-Systems von NVIDIA) ausgeführt werden. In mindestens einer Ausführungsform können Rechenzentren mit HIPAA-Bestimmungen konform sein, sodass der Empfang, die Verarbeitung und die Übertragung von Bildgebungsdaten und/oder anderen Patientendaten in Bezug auf den Schutz von Patientendaten sicher gehandhabt werden. In mindestens einer Ausführungsform kann die Hardware 5222 eine beliebige Anzahl von GPUs beinhalten, die zur parallelen Verarbeitung von Daten, wie hierin beschrieben, aufgerufen werden können. In mindestens einer Ausführungsform kann die Cloud-Plattform ferner GPU-Verarbeitung für die GPU-optimierte Ausführung von Deep-Learning-Aufgaben, Aufgaben des maschinellen Lernens oder anderen Rechenaufgaben beinhalten. In mindestens einer Ausführungsform kann die Cloud-Plattform (z. B. NGC von NVIDIA) unter Verwendung von KI-/Deep-Learning-Supercomputer(n) und/oder GPU-optimierter Software (z. B. wie auf DGX-Systemen von NVIDIA bereitgestellt) als Hardware-Abstraktions- und -Skalierungsplattform ausgeführt werden. In mindestens einer Ausführungsform kann die Cloud-Plattform ein Anwendungscontainer-Clustering-System oder Orchestrierungssystem (z. B. KUBERNETES) auf mehreren GPUs integrieren, um eine nahtlose Skalierung und Lastverteilung zu ermöglichen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 52 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 52 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 52 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 52 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 52 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 52 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 52 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 53 ist eine Systemdarstellung für ein beispielhaftes System 5300 zum Erzeugen und Einsetzen einer Bildgebungs-Bereitstellungs-Pipeline gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das System 5300 verwendet werden, um den Prozess 5200 aus 52 und/oder andere Prozesse, einschließlich weiterentwickelter Verarbeitungs- und Inferenzpipelines, zu implementieren. In mindestens einer Ausführungsform kann das System 5300 das Trainingssystem 5204 und das Einsatzsystem 5206 beinhalten. In mindestens einer Ausführungsform können das Trainingssystem 5204 und das Einsatzsystem 5206 unter Verwendung von Software 5218, Diensten 5220 und/oder Hardware 5222, wie hierin beschrieben, implementiert werden.
  • In mindestens einer Ausführungsform kann das System 5300 (z. B. das Trainingssystem 5204 und/oder das Bereitstellungssystem 5206) in einer Cloud-Computerumgebung (z. B. unter Verwendung der Cloud 5326) implementiert werden. In mindestens einer Ausführungsform kann das System 5300 lokal in Bezug auf eine Einrichtung des Gesundheitswesens oder als Kombination aus sowohl Cloud- als auch lokalen Rechenressourcen implementiert werden. In mindestens einer Ausführungsform können in Ausführungsformen, in welchen Cloud Computing implementiert ist, Patientendaten von einer oder mehreren Komponenten des Systems 5300 getrennt oder nicht verarbeitet werden, was die Verarbeitung nicht konform mit HIPAA- und/oder anderen Bestimmungen oder Gesetzen zur Datenhandhabung und zum Datenschutz machen würde. Bei mindestens einer Ausführungsform kann der Zugriff auf APIs in der Cloud 5326 durch verordnete Sicherheitsmaßnahmen oder Protokolle auf berechtigte Benutzer eingeschränkt werden. In mindestens einer Ausführungsform kann ein Sicherheitsprotokoll Web-Token beinhalten, die durch einen Authentifizierungsdienst (z. B. AuthN, AuthZ, Gluecon usw.) signiert sein können und eine zweckmäßige Autorisierung tragen können. Bei mindestens einer Ausführungsform können die APIs von virtuellen Instrumenten (hier beschrieben) oder andere Instanziierungen des Systems 5300 auf eine Menge von öffentlichen IPs eingeschränkt werden, die für die Interaktion überprüft oder berechtigt wurden.
  • Bei mindestens einer Ausführungsform können diverse Komponenten des Systems 5300 unter Verwendung einer von diversen verschiedenen Netzwerkarten, wozu ohne Einschränkung lokale Netzwerke (LANs) und/oder Großraumnetzwerke (WANs) gehören, über drahtgebundene und/oder drahtlose Kommunikationsprotokolle miteinander kommunizieren. In mindestens einer Ausführungsform kann die Kommunikation zwischen Einrichtungen und Komponenten des Systems 5300 (z. B. zum Übertragen von Inferenzanforderungen, zum Empfangen von Ergebnissen von Inferenzanforderungen usw.) über einen Datenbus oder Datenbusse, drahtlose Datenprotokolle (Wi-Fi), drahtgebundene Datenprotokolle (z. B. Ethernet) usw. kommuniziert werden.
  • In mindestens einer Ausführungsform kann das Trainingssystem 5204 Trainingspipelines 5304 ausführen, die denjenigen ähnlich sind, die hierin in Bezug auf 52 beschrieben sind. In mindestens einer Ausführungsform, in der ein oder mehrere Modelle des maschinellen Lernens in Bereitstellungs-Pipelines 5310 durch das Einsatzsystem 5206 verwendet werden sollen, können Trainingspipelines 5304 verwendet werden, um ein oder mehrere (z. B. vorab trainierte) Modelle zu trainieren oder erneut zu trainieren und/oder eines oder mehrere der vorab trainierten Modelle 5306 zu implementieren (z. B. ohne eine Notwendigkeit eines erneuten Trainings oder einer Aktualisierung). In mindestens einer Ausführungsform können als Ergebnis der Trainingspipelines 5304 Ausgabemodell(e) 5216 generiert werden. In mindestens einer Ausführungsform können die Trainingspipelines 5304 eine beliebige Anzahl von Verarbeitungsschritten beinhalten, zum Beispiel, aber nicht beschränkt auf, die Konvertierung oder Anpassung von Bildgebungsdaten (oder anderen Eingabedaten) (z. B. unter Verwendung eines DICOM-Adapters 5302A zum Konvertieren von DICOM-Bildern in ein anderes Format, das für die Verarbeitung durch jeweilige Modelle des maschinellen Lernens geeignet ist, wie etwa das Format der Neuroimaging Informatics Technology Initiative (NlfTI)), KI-gestützte Annotation 5210, Beschriftung oder Annotation von Bildgebungsdaten 5208, um beschriftete Klinikdaten 5212 zu generieren, Modellauswahl aus einer Modellregistrierungsdatenbank, Modelltraining 5214, Training, erneutes Training oder Aktualisieren von Modellen und/oder andere Verarbeitungsschritte. In mindestens einer Ausführungsform können für unterschiedliche Modelle des maschinellen Lernens, die durch das Einsatzsystem 5206 verwendet werden, unterschiedliche Trainingspipelines 5304 verwendet werden. In mindestens einer Ausführungsform kann für ein erstes Modell des maschinellen Lernens eine Trainingspipeline 5304 verwendet werden, die einem ersten Beispiel ähnlich ist, das in Bezug auf 52 beschrieben ist, für ein zweites Modell des maschinellen Lernens eine Trainingspipeline 5304 verwendet werden, die einem zweiten Beispiel ähnlich ist, das in Bezug auf 52 beschrieben ist, und für ein drittes Modell des maschinelles Lernens eine Trainingspipeline 5304 verwendet werden, die einem dritten Beispiel ähnlich ist, das in Bezug auf 52 beschrieben ist. In mindestens einer Ausführungsform kann eine beliebige Kombination von Aufgaben innerhalb des Trainingssystems 5204 verwendet werden, und zwar in Abhängigkeit davon, was für jedes entsprechende Modell des maschinellen Lernens erforderlich ist. In mindestens einer Ausführungsform können eines oder mehrere der Modelle des maschinellen Lernens bereits trainiert und einsatzbereit sein, sodass die Modelle des maschinellen Lernens möglicherweise keiner Verarbeitung durch das Trainingssystem 5204 unterzogen werden und durch das Einsatzsystem 5206 implementiert werden können.
  • In mindestens einer Ausführungsform kann/können (ein) Ausgabemodell(e) 5216 und/oder vortrainierte(s) Modell(e) 5306 beliebige Arten von maschinellen Lernmodellen in Abhängigkeit von der Implementierung oder Ausführungsform beinhalten. In mindestens einer Ausführungsform und ohne Einschränkung können durch das System 5300 verwendete Modelle des maschinellen Lernens (ein) Modell(e) des maschinellen Lernens unter Verwendung von linearer Regression, logistischer Regression, Entscheidungsbäumen, Stützvektormaschinen (SVM), naivem Bayes-Klassifikator, k-nächstem Nachbarn (Knn), K-Means-Clustering, Random Forest, Dimensionsreduktionsalgorithmen, Gradientenverstärkungsalgorithmen, neuronalen Netzwerken (z. B. Autocodierern, faltenden, rekurrenten, Perzeptronen, Lang-/Kurzzeitgedächtnis (LSTM), Hopfield, Boltzmann, Deep Belief, entfaltenden, erzeugenden gegnerischen, Flüssigkeitszustandsmaschine usw.) und/oder andere Arten von Modellen des maschinellen Lernens beinhalten.
  • In mindestens einer Ausführungsform können die Trainingspipelines 5304 Klgestützte Annotation beinhalten, wie hierin in Bezug auf mindestens 56B detaillierter beschrieben. In mindestens einer Ausführungsform können beschriftete Klinikdaten 5212 (z. B. herkömmliche Annotation) durch eine beliebige Anzahl von Techniken erzeugt werden. In mindestens einer Ausführungsform können Beschriftungen oder andere Annotationen innerhalb eines Zeichenprogramms (z. B. eines Annotationsprogramms), eines Programms zur computergestützten Konstruktion (CAD), eines Beschriftungsprogramms, eines anderen Typs von Programm, das zum Erzeugen von Annotationen oder Beschriftungen für Ground Truth geeignet ist, erzeugt werden und/oder in einigen Beispielen von Hand gezeichnet werden. In mindestens einer Ausführungsform können die Ground-Truth-Daten synthetisch produziert (z. B. aus Computermodellen oder Renderings erzeugt), real produziert (z. B. aus Daten der realen Welt ausgestaltet und produziert), maschinell automatisiert (z. B. unter Verwendung von Merkmalsanalyse und Lernen, um Merkmale aus Daten zu extrahieren und dann Beschriftungen zu erzeugen), von Menschen annotiert (z. B. definiert ein Beschrifter oder Annotationsexperte die Stelle von Beschriftungen) und/oder eine Kombination davon sein. In mindestens einer Ausführungsform können für jede Instanz der Bildgebungsdaten 5208 (oder eines anderen Datentyps, der durch Modelle des maschinellen Lernens verwendet wird) entsprechende Ground-Truth-Daten vorhanden sein, die durch das Trainingssystem 5204 generiert werden. In mindestens einer Ausführungsform kann die KI-gestützte Annotation als Teil der Bereitstellungs-Pipelines 5310 durchgeführt werden; entweder zusätzlich zu oder anstelle der KI-gestützten Annotation, die in den Trainingspipelines 5304 enthalten ist. In mindestens einer Ausführungsform kann das System 5300 eine mehrschichtige Plattform beinhalten, die eine Software-Schicht (z. B. Software 5218) von Diagnoseanwendungen (oder anderen Anwendungstypen) beinhalten kann, die eine oder mehrere medizinische Bildgebungs- und Diagnosefunktionen durchführen kann. In mindestens einer Ausführungsform kann das System 5300 kommunikativ mit (z. B. über verschlüsselte Verknüpfungen) PACS-Servernetzwerken einer oder mehrerer Einrichtungen gekoppelt sein. In mindestens einer Ausführungsform kann das System 5300 so konfiguriert sein, dass es auf Daten (z. B. DICOM-Daten, RIS-Daten, Rohdaten, CIS-Daten, REST-konforme Daten, RPC-Daten, Rohdaten usw.) von PACS-Servern zugreift und diese referenziert (z. B. über einen DICOM-Adapter 5302 oder einen Adapter für einen anderen Datentyp, wie etwa RIS, CIS, REST-konform, RPC, Rohdaten usw.), um Operationen durchzuführen, wie etwa Trainieren von Modellen des maschinellen Lernens, Einsetzen von Modellen des maschinellen Lernens, Bildverarbeitung, Inferenzieren und/oder andere Operationen.
  • In mindestens einer Ausführungsform kann eine Software-Schicht als sichere, verschlüsselte und/oder authentifizierte API implementiert sein, durch die Anwendungen oder Container aus einer externen Umgebung(en) (z. B. Einrichtung 5202) ausgewählt (z. B. aufgerufen) werden können. In mindestens einer Ausführungsform können Anwendungen dann einen oder mehrere Dienste 5220 aufrufen oder ausführen, um Rechen-, Kl- oder Visualisierungsaufgaben durchzuführen, die mit jeweiligen Anwendungen assoziiert sind, und die Software 5218 und/oder die Dienste 5220 können die Hardware 5222 ausnutzen, um Verarbeitungsaufgaben auf effektive und effiziente Weise durchzuführen.
  • In mindestens einer Ausführungsform kann das Bereitstellungssystem 5206 Bereitstellungs-Pipelines 5310 ausführen. In mindestens einer Ausführungsform können Bereitstellungs-Pipelines 5310 eine beliebige Anzahl von Anwendungen enthalten, die sequentiell, nicht sequentiell oder auf andere Weise an Bildgebungsdaten (und/oder anderen Datenarten) angewendet werden können, die von Bildgebungsvorrichtungen, Sequenzierungsvorrichtungen, Genomikvorrichtungen usw. erzeugt werden - einschließlich KI-gestützter Annotation, wie vorstehend beschrieben. In mindestens einer Ausführungsform, wie hierin beschrieben, kann eine Bereitstellungs-Pipeline 5310 für eine einzelne Vorrichtung als virtuelles Instrument für eine Vorrichtung bezeichnet werden (z. B. ein virtuelles Ultraschallinstrument, ein virtuelles CT-Scan-Instrument, ein virtuelles Sequenzierungsinstrument usw.). Bei mindestens einer Ausführungsform kann es für eine einzelne Einrichtung mehr als eine Bereitstellungs-Pipeline 5310 geben, je nachdem, welche Informationen aus den von einer Einrichtung erzeugten Daten erwünscht sind. In mindestens einer Ausführungsform, bei der Erkennung von Anomalien aus einer MRI-Maschine erwünscht sind, kann es eine erste Bereitstellungs-Pipeline 5310 geben, und wenn eine Bildverbesserung aus der Ausgabe einer MRI-Maschine erwünscht ist, kann es eine zweite Bereitstellungs-Pipeline 5310 geben.
  • In mindestens einer Ausführungsform können die für die Bereitstellungs-Pipelines 5310 verfügbaren Anwendungen eine beliebige Anwendung beinhalten, die für die Ausführung von Verarbeitungsaufgaben an Bildgebungsdaten oder anderen Daten von Vorrichtungen verwendet werden können. In mindestens einer Ausführungsform können unterschiedliche Anwendungen für die Bildverbesserung, Segmentierung, Rekonstruktion, Anomaliedetektion, Objektdetektion, Merkmalsdetektion, Behandlungsplanung, Dosimetrie, Strahlenplanung (oder andere Strahlenbehandlungsprozeduren) und/oder andere Analyse-, Bildverarbeitungs- oder Inferenzaufgaben zuständig sein. In mindestens einer Ausführungsform kann das Einsatzsystem 5206 Konstrukte für jede der Anwendungen definieren, sodass die Benutzer des Einsatzsystems 5206 (z. B. medizinische Einrichtungen, Labors, Kliniken usw.) die Konstrukte verstehen und die Anwendungen für die Implementation innerhalb ihrer jeweiligen Einrichtung anpassen können. Bei mindestens einer Ausführungsform kann eine Anwendung zur Bildrekonstruktion für die Aufnahme in die Bereitstellungs-Pipeline 5310 ausgewählt werden, doch der durch eine Bildgebungsvorrichtung generierte Datentyp kann sich von einem innerhalb einer Anwendung verwendeten Datentyp unterscheiden. In mindestens einer Ausführungsform kann der DICOM-Adapter 5302B (und/oder ein DICOM-Lesevorrichtung) oder ein Adapter oder eine Lesevorrichtung einer anderen Datenart (z. B. RIS, CIS, REST-kompatibel, RPC, Rohdaten usw.) innerhalb der Bereitstellungs-Pipeline 5310 zum Umwandeln von Daten in eine Form verwendet werden, die von einer Anwendung innerhalb des Einsatzsystems 5206 verwendet werden kann. In mindestens einer Ausführungsform kann der Zugriff auf Bibliotheken mit DICOM-Daten, RIS-Daten, CIS-Daten, REST-konformen Daten, RPC-Daten, Rohdaten und/oder anderen Datentypen akkumuliert und vorverarbeitet werden, einschließlich des Decodierens, Extrahierens und/oder Durchführens von Faltungen, Farbkorrekturen, Schärfe-, Gamma- und/oder anderen Erweiterungen der Daten. In mindestens einer Ausführungsform können DICOM-Daten, RIS-Daten, CIS-Daten, REST-konforme Daten, RPC-Daten und/oder Rohdaten ungeordnet sein und ein Vorlauf kann ausgeführt werden, um gesammelte Daten zu organisieren oder zu sortieren. In mindestens einer Ausführungsform, da sich verschiedene Anwendungen gemeinsame Bildvorgänge teilen können, kann in einigen Ausführungsformen eine Datenerweiterungsbibliothek (z. B. als einer der Dienste 5220) verwendet werden, um diese Vorgänge zu beschleunigen. In mindestens einer Ausführungsform kann zur Vermeidung von Engpässen herkömmlicher Verarbeitungsansätze, die sich auf die CPU-Verarbeitung stützen, die Parallelrechenplattform 5330 zur GPU-Beschleunigung dieser Verarbeitungsaufgaben verwendet werden.
  • Bei mindestens einer Ausführungsform kann eine Bildrekonstruktionsanwendung einen Verarbeitungsaufgaben, der die Verwendung eines Modells des maschinellen Lernens beinhaltet, beinhalten. In mindestens einer Ausführungsform kann ein Benutzer ein eigenes Modell des maschinellen Lernens verwenden wollen oder ein Modell des maschinellen Lernens aus der Modellregistrierungsdatenbank 5224 auswählen wollen. In mindestens einer Ausführungsform kann ein Benutzer ein eigenes Modell des maschinellen Lernens implementieren oder ein Modell des maschinellen Lernens zur Aufnahme in eine Anwendung zum Durchführen eines Verarbeitungsaufgaben auswählen. In mindestens einer Ausführungsform können die Anwendungen auswählbar und individuell anpassbar sein und durch das Definieren von Konstrukten von Anwendungen werden der Einsatz und die Implementation von Anwendungen für einen konkreten Benutzer als nahtlosere Benutzererfahrung dargestellt. In mindestens einer Ausführungsform können Bereitstellungs-Pipelines 5310 durch Ausnutzen anderer Merkmale des Systems 5300 - wie etwa der Dienste 5220 und der Hardware 5222 - noch benutzerfreundlicher sein, eine einfachere Integration bereitstellen und genauere, effizientere und raschere Ergebnisse produzieren.
  • In mindestens einer Ausführungsform kann das Bereitstellungssystem 5206 eine Benutzeroberfläche 5314 (z. B. eine grafische Benutzeroberfläche, eine Web-Schnittstelle usw.) beinhalten, die verwendet werden kann, um Anwendungen zur Einbeziehung in eine oder mehrere Bereitstellungs-Pipelines 5310 auszuwählen, Anwendungen anzuordnen, Anwendungen oder Parameter oder Konstrukte derselben zu bearbeiten oder zu ändern, eine oder mehrere Bereitstellungs-Pipelines 5310 während der Einrichtung und/oder Bereitstellung zu verwenden und damit zu interagieren, und/oder um anderweitig mit dem Bereitstellungssystem 5206 zu interagieren. In mindestens einer Ausführungsform, obwohl nicht in Bezug auf das Trainingssystem 5204 veranschaulicht, kann die Benutzerschnittstelle 5314 (oder eine andere Benutzerschnittstelle) zum Auswählen von Modellen für die Verwendung in dem Einsatzsystem 5206, zum Auswählen von Modellen für das Training oder das erneute Training in dem Trainingssystem 5204 und/oder zum anderweitigen Interagieren mit dem Trainingssystem 5204 verwendet werden.
  • In mindestens einer Ausführungsform kann der Pipeline-Manager 5312 zusätzlich zu einem Anwendungsorchestrierungssystem 5328 verwendet werden, um die Interaktion zwischen Anwendungen oder Containern der Einsatzpipeline(s) 5310 und Diensten 5220 und/oder Hardware 5222 zu verwalten. In mindestens einer Ausführungsform kann der Pipeline-Manager 5312 so konfiguriert sein, dass er Interaktionen von Anwendung zu Anwendung, von Anwendung zu Dienst 5220 und/oder von Anwendung oder Dienst zu Hardware 5222 erleichtert. Obwohl er der Veranschaulichung nach in der Software 5218 enthalten ist, soll dies in mindestens einer Ausführungsform nicht einschränkend sein und in einigen Beispielen (wie z. B. in 54 veranschaulicht) kann der Pipeline-Manager 5312 in den Diensten 5220 enthalten sein. In mindestens einer Ausführungsform kann das Anwendungsorchestrierungssystem 5328 (z. B. Kubernetes, DOCKER usw.) ein Container-Orchestrierungssystem beinhalten, das Anwendungen in Containern als logische Einheiten zur Koordination, Verwaltung, Skalierung und zum Einsatz gruppieren kann. In mindestens einer Ausführungsform kann durch das Assoziieren von Anwendungen aus der/den Bereitstellungs-Pipeline(s) 5310 (z. B. einer Rekonstruktionsanwendung, einer Segmentierungsanwendung usw.) mit einzelnen Containern jede Anwendung in einer in sich geschlossenen Umgebung (z. B. auf Kernel-Level) ausgeführt werden, um die Geschwindigkeit und Effizienz zu erhöhen.
  • Bei mindestens einer Ausführungsform kann jede Anwendung und/oder jeder Container (oder ein Abbild davon) einzeln entwickelt, bearbeitet und bereitgestellt werden (z. B. kann ein erster Benutzer oder Entwickler eine erste Anwendung entwickeln, bearbeiten und bereitstellen, und ein zweiter Benutzer oder Entwickler kann eine zweite Anwendung getrennt von einem ersten Benutzer oder Entwickler entwickeln, bearbeiten und bereitstellen), wodurch es möglich ist, sich auf eine Aufgabe einer einzigen Anwendung und/oder eines oder mehrerer Container zu konzentrieren und diese zu beachten, ohne durch Aufgaben einer oder mehrerer anderer Anwendungen oder Container behindert zu werden. In mindestens einer Ausführungsform kann die Kommunikation und Kooperation zwischen unterschiedlichen Containern oder Anwendungen durch den Pipeline-Manager 5312 und das Anwendungsorchestrierungssystem 5328 unterstützt werden. In mindestens einer Ausführungsform kann, solange eine erwartete Eingabe und/oder Ausgabe jedes Containers oder jeder Anwendung einem System bekannt ist (z. B. auf Grundlage von Konstrukten von Anwendungen oder Containern), das Anwendungsorchestrierungssystem 5328 und/oder der Pipeline-Manager 5312 die Kommunikation unter und zwischen jedem der Anwendungen oder Container sowie die gemeinsame Nutzung von Ressourcen unter und zwischen diesen erleichtern. Da eine oder mehrere Anwendungen oder Container in den Bereitstellungs-Pipeline(s) 5310 gleiche Dienste und Ressourcen gemeinsam nutzen können, kann das Anwendungsorchestrierungssystem 5328 in mindestens einer Ausführungsform die gemeinsame Nutzung von Diensten oder Ressourcen zwischen und unter verschiedenen Anwendungen oder Containern orchestrieren, deren Last verteilen und bestimmen. In mindestens einer Ausführungsform kann ein Scheduler verwendet werden, um den Ressourcenbedarf von Anwendungen oder Containern, die derzeitige Nutzung oder geplante Nutzung dieser Ressourcen und die Ressourcenverfügbarkeit zu verfolgen. In mindestens einer Ausführungsform kann ein scheduler somit Ressourcen unterschiedlichen Anwendungen zuweisen und Ressourcen zwischen und unter Anwendungen im Hinblick auf Bedarf und Verfügbarkeit eines Systems verteilen. In einigen Beispielen kann ein scheduler (und/oder eine andere Komponente des Anwendungsorchestrierungssystems 5328) die Ressourcenverfügbarkeit und -verteilung basierend auf Beschränkungen bestimmen, die einem System auferlegt werden (z. B. Benutzerbeschränkungen), wie z. B. Dienstgüte (QoS), Dringlichkeit des Bedarfs an Datenausgaben (um z. B. zu bestimmen, ob Echtzeitverarbeitung oder verzögerte Verarbeitung ausgeführt werden soll) usw.
  • In mindestens einer Ausführungsform können Dienste 5220, die von Anwendungen oder Containern in dem Bereitstellungssystem 5206 genutzt und geteilt werden, Rechendienste 5316, KI-Dienste 5318, Visualisierungsdienste 5320 und/oder andere Dienstarten beinhalten. Bei mindestens einer Ausführungsform können Anwendungen einen oder mehrere der Dienste 5220 abrufen (z. B. ausführen), um Verarbeitungsoperationen für eine Anwendung auszuführen. Bei mindestens einer Ausführungsform können Rechendienste 5316 durch Anwendungen genutzt werden, um Superdatenverarbeitungs- oder andere Hochleistungsdatenverarbeitungs- (HPC) Aufgaben auszuführen. In mindestens einer Ausführungsform können die Rechendienst(e) 5316 ausgenutzt werden, um Parallelverarbeitung (z. B. unter Verwendung einer Parallelrechenplattform 5330) zum Verarbeiten von Daten durch eine oder mehrere Anwendungen und/oder einen oder mehrere Aufgaben einer einzelnen Anwendung im Wesentlichen simultan durchzuführen. In mindestens einer Ausführungsform kann die parallele Rechenplattform 5330 (z. B. CUDA von NVIDIA) Allzweckberechnungen auf GPUs (GPGPU) (z. B. GPUs 5322) ermöglichen. Bei mindestens einer Ausführungsform kann eine Software-Schicht einer parallelen Computerplattform 5330 Zugriff auf virtuelle Befehlssätze und parallele Rechenelemente von GPUs zur Ausführung von Rechen-Kernels geben. Bei mindestens einer Ausführungsform kann die parallele Computerplattform 5330 Speicher umfassen, und bei einigen Ausführungsformen kann ein Speicher von mehreren Containern und/oder unter verschiedenen Verarbeitungsaufgaben innerhalb eines einzigen Containers gemeinsam genutzt werden. In mindestens einer Ausführungsform können Zwischenprozesskommunikations (IPC)-Aufrufe für mehrere Container und/oder für mehrere Prozesse innerhalb eines Containers erzeugt werden, um dieselben Daten aus einem gemeinsam genutzten Speichersegment der Parallelrechenplattform 5330 zu verwenden (z. B., wenn mehrere unterschiedliche Stufen einer Anwendung oder mehrere Anwendungen dieselben Informationen verarbeiten). In mindestens einer Ausführungsform können gleiche Daten an einem gleichem Speicherort für eine beliebige Anzahl von Verarbeitungsaufgaben verwendet werden (z. B. zur gleichen Zeit, zu unterschiedlichen Zeiten usw.), anstatt eine Kopie der Daten zu erstellen und die Daten an unterschiedliche Orte in dem Speicher zu verschieben (z. B. eine Lese-/Schreiboperation). In mindestens einer Ausführungsform können, da Daten verwendet werden, um neue Daten als Ergebnis der Verarbeitung zu erzeugen, diese Informationen über einen neuen Ort von Daten gespeichert und von verschiedenen Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform können ein Ort von Daten und ein Ort von aktualisierten oder modifizierten Daten Teil einer Definition sein, wie Nutzdaten innerhalb von Containern zu verstehen sind.
  • Bei mindestens einer Ausführungsform können die KI-Dienste 5318 ausgenutzt werden, um Inferenzdienste zum Ausführen von Modell(en) des maschinellen Lernens auszuführen, die mit Anwendungen assoziiert sind (z. B. mit dem Ausführen eines oder mehrerer Verarbeitungsaufgaben einer Anwendung beauftragt). In mindestens einer Ausführungsform können die KI-Dienste 5318 das KI-System 5324 ausnutzen, um Modell(e) des maschinellen Lernens (z. B. neuronale Netzwerke wie etwa CNNs) für Segmentierung, Rekonstruktion, Objektdetektion, Merkmalsdetektion, Klassifizierung und/oder andere Inferenzierungsaufgaben auszuführen. In mindestens einer Ausführungsform können die Anwendungen der Bereitstellungs-Pipeline(s) 5310 eines oder mehrere der Ausgabemodelle 5216 aus dem Trainingssystem 5204 und/oder andere Modelle der Anwendungen verwenden, um Inferenz an Bildgebungsdaten (z. B. DICOM-Daten, RIS-Daten, CIS-Daten, REST-konformen Daten, RPC-Daten, Rohdaten usw.) durchzuführen. Bei mindestens einer Ausführungsform können zwei oder mehr Beispiele für ein Inferencing unter Verwendung des Anwendungsorchestrierungssystems 5328 (z. B. ein Scheduler) verfügbar sein. In mindestens einer Ausführungsform kann eine erste Kategorie einen Pfad mit hoher Priorität/geringer Latenz beinhalten, der höhere Service Level Agreements erreichen kann, wie etwa zum Durchführen von Inferenz an dringenden Anforderungen während eines Notfalls oder für einen Radiologen während der Diagnose. In mindestens einer Ausführungsform kann eine zweite Kategorie einen Pfad mit Standardpriorität beinhalten, der für Anforderungen verwendet werden kann, die nicht dringend sind oder bei denen die Analyse zu einem späteren Zeitpunkt durchgeführt werden kann. In mindestens einer Ausführungsform kann das Anwendungsorchestrierungssystem 5328 Ressourcen (z. B. Dienste 5220 und/oder Hardware 5222) auf Grundlage von Prioritätspfaden für unterschiedliche Inferenzierungsaufgaben der KI-Dienste 5318 verteilen.
  • In mindestens einer Ausführungsform kann ein gemeinsam genutzter Speicher für die KI-Dienste 5318 in dem System 5300 installiert sein. In mindestens einer Ausführungsform kann der gemeinsam genutzte Datenspeicher als Cache (oder anderer Speichervorrichtungstyp) arbeiten und zum Verarbeiten von Inferenzanforderungen von Anwendungen verwendet werden. In mindestens einer Ausführungsform kann, wenn eine Inferenzanforderung abgesendet wird, eine Anforderung durch einen Satz von API-Instanzen des Einsatzsystems 5206 empfangen werden und eine oder mehrere Instanzen können ausgewählt werden (z. B. für beste Anpassung, für Lastverteilung usw.), um eine Anforderung zu verarbeiten. In mindestens einer Ausführungsform kann zum Verarbeiten einer Anforderung eine Anforderung in eine Datenbank eingegeben werden, ein Modell des maschinellen Lernens kann aus der Modellregistrierungsdatenbank 5224 lokalisiert werden, falls es sich nicht bereits in einem Cache befindet, ein Validierungsschritt kann sicherstellen, dass ein zweckmäßiges Modell des maschinellen Lernens in einen Cache (z. B. einen gemeinsam genutzten Datenspeicher) geladen wird, und/oder eine Kopie eines Modells kann in einem Cache gesichert werden. In mindestens einer Ausführungsform kann ein Scheduler (z. B. des Pipelineverwalters 5312) verwendet werden, um eine Anwendung zu starten, auf die in einer Anforderung verwiesen wird, wenn eine Anwendung nicht bereits läuft oder wenn nicht genügend Instanzen einer Anwendung vorhanden sind. In mindestens einer Ausführungsform kann ein Inferenzserver gestartet werden, falls ein Inferenzserver zum Ausführen eines Modells nicht bereits gestartet ist. In mindestens einer Ausführungsform kann pro Modell eine beliebige Anzahl von Inferenzservern gestartet werden. In mindestens einer Ausführungsform können in einem Pull-Modell, in dem Inferenzserver geclustert sind, Modelle zwischengespeichert werden, wann immer eine Lastverteilung vorteilhaft ist. In mindestens einer Ausführungsform können Inferenzserver statisch in entsprechende, verteilte Server geladen werden.
  • In mindestens einer Ausführungsform kann das Inferenzieren unter Verwendung eines Inferenzservers ausgeführt werden, der in einem Behälter läuft. In mindestens einer Ausführungsform kann eine Instanz eines Inferenzservers mit einem Modell (und optional einer Vielzahl von Versionen eines Modells) assoziiert sein. In mindestens einer Ausführungsform kann, falls eine Instanz eines Inferenzservers nicht existiert, wenn eine Anforderung zum Durchführen einer Inferenz an einem Modell empfangen wird, eine neue Instanz geladen werden. In mindestens einer Ausführungsform kann beim Starten eines Inferenzservers ein Modell an einen Inferenzserver übergeben werden, sodass der gleiche Container zum Bedienen unterschiedlicher Modelle verwendet werden kann, solange der Inferenzserver als andere Instanz läuft.
  • In mindestens einer Ausführungsform kann während der Ausführung einer Anwendung eine Inferenzanforderung für eine bestimmte Anwendung empfangen und ein Container (der z. B. eine Instanz eines Inferenzservers beherbergt) geladen werden (falls noch nicht geschehen), und ein Startverfahren kann aufgerufen werden. In mindestens einer Ausführungsform kann Vorverarbeitungslogik in einem Container eingehende Daten laden, decodieren und/oder beliebige zusätzliche Vorverarbeitung an diesen durchführen (z. B. unter Verwendung von CPU(s) und/oder GPU(s)). In mindestens einer Ausführungsform kann ein Container, sobald die Daten für die Inferenz vorbereitet sind, die Inferenz nach Bedarf an den Daten durchführen. In mindestens einer Ausführungsform kann dies einen einzelnen Inferenzaufruf an einem Bild (z. B. einem Handröntgenbild) beinhalten oder Inferenz an Hunderten von Bildern (z. B. einem Brust-CT) erfordern. In mindestens einer Ausführungsform kann eine Anwendung Ergebnisse vor dem Abschluss zusammenfassen, was ohne Einschränkung eine einzelne Konfidenzbewertung, eine Segmentierung auf Pixellevel, eine Segmentierung auf Voxellevel, das Generieren einer Visualisierung oder das Generieren von Text zum Zusammenfassen von Befunden beinhalten kann. In mindestens einer Ausführungsform können unterschiedlichen Modellen oder Anwendungen unterschiedliche Prioritäten zugeordnet werden. Zum Beispiel können einige Modelle eine Echtzeitpriorität (TAT weniger als eine Minute) aufweisen, während andere eine niedrigere Priorität aufweisen können (z. B. TAT weniger als 10 Minuten). In mindestens einer Ausführungsform können die Modellausführungszeiten von der anfordernden Institution oder Entität gemessen werden und die Zeit für die Traversierung des Partnernetzes sowie die Ausführung auf einem Inferenzdienst beinhalten.
  • In mindestens einer Ausführungsform kann die Übermittlung von Anforderungen zwischen den Diensten 5220 und den Inferenzanwendungen hinter einem Software-Entwicklungskit (SDK) verborgen sein und der robuste Transport durch eine Warteschlange bereitgestellt sein. In mindestens einer Ausführungsform wird eine Anforderung über eine API für eine einzelne Anwendungs-/Tenant-ID-Kombination in einer Warteschlange platziert und ein SDK entnimmt eine Anforderung aus einer Warteschlange und gibt eine Anforderung einer Anwendung. In mindestens einer Ausführungsform kann ein Name einer Warteschlange in einer Umgebung bereitgestellt sein, aus der ein SDK diesen aufnimmt. In mindestens einer Ausführungsform kann eine asynchrone Kommunikation über eine Warteschlange nützlich sein, da sie es jeder Instanz einer Anwendung ermöglichen kann, Arbeit aufzunehmen, sobald sie verfügbar wird. In mindestens einer Ausführungsform können die Ergebnisse durch eine Warteschlange zurück übermittelt werden, um sicherzustellen, dass keine Daten verloren gehen. In mindestens einer Ausführungsform können Warteschlangen auch eine Fähigkeit bereitstellen, Arbeit zu segmentieren, da Arbeit mit höchster Priorität an eine Warteschlange gehen kann, mit der die meisten Instanzen einer Anwendung verbunden sind, während Arbeit mit niedrigster Priorität an eine Warteschlange gehen kann, mit der nur eine einzelne Instanz verbunden ist, die Aufgaben in einer Reihenfolge verarbeitet, in der sie empfangen werden. In mindestens einer Ausführungsform kann eine Anwendung auf einer GPU-beschleunigten Instanz laufen, die in der Cloud 5326 erzeugt wurde, und kann ein Ableitungsdienst die Ableitung auf einer GPU ausführen.
  • In mindestens einer Ausführungsform können die Visualisierungsdienste 5320 genutzt werden, um Visualisierungen zur Ansicht von Ausgaben von Anwendungen und/oder Bereitstellungs-Pipeline(s) 5310 zu erzeugen. In mindestens einer Ausführungsform können die GPUs 5322 durch die Visualisierungsdienste 5320 ausgenutzt werden, um Visualisierungen zu generieren. In mindestens einer Ausführungsform können Rendering-Effekte, wie z. B. Strahlverfolgung, von den Visualisierungsdiensten 5320 implementiert werden, um Visualisierungen mit höherer Qualität zu erzeugen. In mindestens einer Ausführungsform können Visualisierungen ohne Einschränkung 2D-Bild-Renderings, 3D-Volumen-Renderings, 3D-Volumenrekonstruktionen, 2D-Tomografieschnitte, Virtual-Reality-Anzeigen, Augmented-Reality-Anzeigen usw. beinhalten. In mindestens einer Ausführungsform können virtualisierte Umgebungen verwendet werden, um eine virtuelle interaktive Anzeige oder Umgebung (z. B. eine virtuelle Umgebung) für die Interaktion durch Benutzer eines Systems (z. B. Ärzte, Pfleger, Radiologen usw.) zu erzeugen. In mindestens einer Ausführungsform können die Visualisierungsdienste 5320 einen internen Visualizer, Kinematik und/oder andere Rendering- oder Bildverarbeitungsfähigkeiten oder -funktionen (z. B. Strahlverfolgung, Rasterung, interne Optik usw.) beinhalten.
  • In mindestens einer Ausführungsform kann die Hardware 5222 GPUs 5322, ein KI-System 5324, eine Cloud 5326 und/oder beliebige andere Hardware, die zum Ausführen eines Trainingssystems 5204 und/oder eines Bereitstellungssystems 5206 verwendet wird, beinhalten. In mindestens einer Ausführungsform können GPUs 5322 (z. B. TESLA- und/oder QUADRO-GPUs von NVIDIA) eine beliebige Anzahl von GPUs beinhalten, die zum Ausführen von Verarbeitungsaufgaben von Rechendiensten 5316, KI-Diensten 5318, Visualisierungsdiensten 5320, anderen Diensten und /oder eines der Merkmale oder Funktionen der Software 5218 verwendet werden können. In Bezug auf die KI-Dienste 5318 können die GPUs 5322 zum Beispiel zum Durchführen von Vorverarbeitung an Bildgebungsdaten (oder anderen Datentypen, die durch Modelle des maschinellen Lernens verwendet werden), Nachverarbeitung an Ausgaben der Modelle des maschinellen Lernens und/oder zum Durchführen von Inferenzieren (z. B. zum Ausführen von Modellen des maschinellen Lernens) verwendet werden. In mindestens einer Ausführungsform können die Cloud 5326, das KI-System 5324 und/oder andere Komponenten des Systems 5300 die GPUs 5322 verwenden. Bei mindestens einer Ausführungsform kann die Cloud 5326 eine GPU-optimierte Plattform für Deep-Learning-Aufgaben umfassen. In mindestens einer Ausführungsform kann das KI-System 5324 GPUs verwenden und die Cloud 5326 - oder mindestens ein Abschnitt, der mit Deep Learning oder Inferenzieren beauftragt ist - kann unter Verwendung eines oder mehrerer KI-Systeme 5324 ausgeführt werden. Obwohl es sich bei der Hardware 5222 der Veranschaulichung nach um diskrete Komponenten handelt, soll dies demnach nicht einschränkend sein und beliebige Komponenten der Hardware 5222 können mit beliebigen anderen Komponenten der Hardware 5222 kombiniert oder durch diese ausgenutzt werden.
  • Bei mindestens einer Ausführungsform kann das KI-System 5324 ein speziell gefertigtes Computersystem (z. B. einen Supercomputer oder einen HPC) umfassen, das zum Inferieren, Tieflernen, maschinellen Lernen und/oder für andere Aufgaben künstlicher Intelligenz konfiguriert ist. In mindestens einer Ausführungsform kann das KI-System 5324 (z. B. DGX von NVIDIA) GPU-optimierte Software (z. B. einen Software-Stack) beinhalten, die unter Verwendung einer Vielzahl von GPUs 5322 zusätzlich zu CPUs, RAM, Speicher und/oder andere Komponenten, Merkmale oder Funktionen ausgeführt werden kann. In mindestens einer Ausführungsform können ein oder mehrere KI-Systeme 5324 in der Cloud 5326 (z. B. in einem Rechenzentrum) implementiert sein, um einige oder alle der Kl-basierten Verarbeitungs-Aufgaben des Systems 5300 durchzuführen.
  • In mindestens einer Ausführungsform kann die Cloud 5326 eine GPU-beschleunigte Infrastruktur (z. B. NGC von NVIDIA) beinhalten, die eine GPU-optimierte Plattform zum Ausführen von Verarbeitungsaufgaben des Systems 5300 bereitstellen kann. In mindestens einer Ausführungsform kann die Cloud 5326 ein KI-System(e) 5324 zum Durchführen eines oder mehrerer KI-basierter Tasks des Systems 5300 beinhalten (z. B. als Hardware-Abstraktions- und -Skalierungsplattform). In mindestens einer Ausführungsform kann die Cloud 5326 in das Anwendungsorchestrierungssystem 5328 integriert sein, das mehrere GPUs ausnutzt, um eine nahtlose Skalierung und Lastverteilung zwischen und unter den Anwendungen und Diensten 5220 zu ermöglichen. In mindestens einer Ausführungsform kann die Cloud 5326 die Aufgabe haben, mindestens einige der Dienste 5220 des Systems 5300 auszuführen, was Rechendienste 5316, Kl-Dienste 5318 und/oder Visualisierungsdienste 5320 beinhaltet, wie in dieser Schrift beschrieben. In mindestens einer Ausführungsform kann die Cloud 5326 Inferenz mit kleinen und großen Batches durchführen (z. B. unter Ausführung von TENSOR RT von NVIDIA), eine beschleunigte Parallelrechen-API und -Plattform 5330 bereitstellen (z. B. CUDA von NVIDIA), ein Anwendungsorchestrierungssystem 5328 ausführen (z. B. KU-BERNETES), eine Grafik-Rendering-API und -Plattform bereitstellen (z. B. für Strahlverfolgung, 2D-Grafik, 3D-Grafik und/oder andere Rendering-Techniken, um Kinematik mit höherer Qualität zu erzeugen) und/oder sie kann andere Funktionen für das System 5300 bereitstellen.
  • Bei mindestens einer Ausführungsform kann die Cloud 5326 in dem Bestreben, die Vertraulichkeit von Patientendaten zu wahren (z. B., wenn Patientendaten oder - akten außerhalb der Räumlichkeiten verwendet werden sollen), eine Registrierungsdatenbank, wie etwa eine Deep-Learning-Containerregistrierungsdatenbank, beinhalten. In mindestens einer Ausführungsform kann eine Registrierungsdatenbank Container für Instanziierungen von Anwendungen speichern, die Vorverarbeitungs-, Nachverarbeitungs- oder andere Verarbeitungsaufgaben an Patientendaten durchführen können. In mindestens einer Ausführungsform kann die Cloud 5326 Daten empfangen, die Patientendaten sowie Sensordaten in Containern beinhalten, die angeforderte Verarbeitung nur für die Sensordaten in diesen Containern durchführen und dann eine resultierende Ausgabe und/oder Visualisierungen an zweckmäßige Parteien und/oder Vorrichtungen weiterleiten (z. B. medizinische Vorrichtungen in den Räumlichkeiten, die zur Visualisierung oder Diagnose verwendet werden), ohne dass Patientendaten extrahiert oder gespeichert müssen oder anderweitig darauf zugegriffen werden muss. In mindestens einer Ausführungsform wird die Vertraulichkeit der Patientendaten in Übereinstimmung mit HIPAA- und/oder anderen Datenvorschriften gewahrt.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 53 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 53 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 53 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 53 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 53 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 53 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 53 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 54 beinhaltet eine beispielhafte Veranschaulichung einer Bereitstellungs-Pipeline 5310A für das Verarbeiten von Bildgebungsdaten gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das System 5300 - und insbesondere das Einsatzsystem 5206 - verwendet werden, um die Bereitstellungs-Pipeline(s) 5310A individuell anzupassen, zu aktualisieren und/oder in eine oder mehrere Produktionsumgebungen zu integrieren. In mindestens einer Ausführungsform beinhaltet die Bereitstellungs-Pipeline 5310A aus 53 ein nicht einschränkendes Beispiel für eine Einsatzpipeline 531 0A, die durch einen konkreten Benutzer (oder ein Team von Benutzern) in einer Einrichtung (z. B. in einem Krankenhaus, einer Klinik, einem Labor, einer Forschungsumgebung usw.) individuell definiert sein kann. In mindestens einer Ausführungsform kann ein Benutzer zum Definieren von Bereitstellungs-Pipelines 5310A für einen CT-Scanner 5402 - zum Beispiel aus einer Containerregistrierungsdatenbank - eine oder mehrere Anwendungen auswählen, die spezifische Funktionen oder Tasks in Bezug auf die durch den CT-Scanner 5402 generierten Bildgebungsdaten durchführen. In mindestens einer Ausführungsform können Anwendungen auf die Bereitstellungs-Pipeline 5310A als Container angewendet werden, die die Dienste 5220 und/oder Hardware 5222 des Systems 5300 ausnutzen können. Darüber hinaus kann die Bereitstellungs-Pipeline 5310A zusätzliche Verarbeitungsaufgaben oder Anwendungen beinhalten, die implementiert werden können, um Daten für die Verwendung durch Anwendungen vorzubereiten (z. B. können der DICOM-Adapter 5302B und ein DICOM-Lesegerät 5406 in der Bereitstellungs-Pipeline 5310A verwendet werden, um Daten für die Verwendung durch eine CT-Rekonstruktion 5408, eine Organsegmentierung 5410 usw. vorzubereiten). In mindestens einer Ausführungsform kann die Bereitstellungs-Pipeline 531 0A für einen konsistenten Einsatz, eine einmalige Verwendung oder für eine andere Häufigkeit oder ein anderes Intervall individuell angepasst oder ausgewählt werden. In mindestens einer Ausführungsform kann ein Benutzer die CT-Rekonstruktion 5408 und die Organsegmentierung 5410 für mehrere Probanden über ein spezifisches Intervall wünschen und daher die Pipeline 5310A für diesen Zeitraum einsetzen. In mindestens einer Ausführungsform kann ein Benutzer für jede Anforderung vom System 5300 die Anwendungen auswählen, die ein Benutzer möchte, um die Verarbeitung an diesen Daten für diese Anforderung auszuführen. In mindestens einer Ausführungsform kann die Bereitstellungs-Pipeline 5310A in einem beliebigen Intervall eingestellt werden und aufgrund der Anpassungsfähigkeit und Skalierbarkeit einer Container-Struktur innerhalb des Systems 5300 kann dies ein nahtloser Prozess sein.
  • In mindestens einer Ausführungsform kann die Bereitstellungs-Pipeline 5310A aus 53 einen CT-Scanner 5402 beinhalten, der Bildgebungsdaten eines Patienten oder Probanden erzeugt. In mindestens einer Ausführungsform können die Bildgebungsdaten von dem CT-Scanner 5402 auf einem PACS-Server(n) 5404 gespeichert werden, die mit einer Einrichtung assoziiert sind, in der sich der CT-Scanner 5402 befindet. In mindestens einer Ausführungsform kann der/können die PACS-Server 5404 Software- und/oder Hardware-Komponenten beinhalten, die mit den Bildgebungsmodalitäten (z. B. dem CT-Scanner 5402) in einer Einrichtung eine direkte Schnittstelle bilden können. Bei mindestens einer Ausführungsform kann der DICOM-Adapter 5302B das Senden und Empfangen von DICOM-Objekten unter Verwendung von DICOM-Protokollen ermöglichen. In mindestens einer Ausführungsform kann der DICOM-Adapter 5302B bei der Vorbereitung oder Konfiguration von DICOM-Daten von PACS-Server(n) 5404 für die Verwendung durch die Bereitstellungs-Pipeline 5310A helfen. In mindestens einer Ausführungsform kann der Pipeline-Manager 5312 Daten an die Einsatzpipeline 5310A durchrouten, sobald DICOM-Daten durch den DICOM-Adapter 5302B verarbeitet sind. In mindestens einer Ausführungsform kann das DICOM-Lesegerät 5406 Bilddateien und etwaige damit assoziierte Metadaten aus DICOM-Daten extrahieren (z. B. Sinogramm-Rohdaten, wie in der Visualisierung 5416A veranschaulicht). Bei mindestens einer Ausführungsform können Arbeitsdateien, die extrahiert werden, in einem Cache gespeichert werden, um eine schnellere Verarbeitung durch andere Anwendungen in der Bereitstellungs-Pipeline 5310A zu ermöglichen. In mindestens einer Ausführungsform kann, sobald das DICOM-Lesegerät 5406 das Extrahieren und/oder Speichern von Daten beendet hat, ein Abschlusssignal an den Pipeline-Manager 5312 kommuniziert werden. In mindestens einer Ausführungsform kann der Pipeline-Manager 5312 dann eine oder mehrere andere Anwendungen oder Container in der Einsatzpipeline 5310A initiieren oder aufrufen.
  • In mindestens einer Ausführungsform kann die Anwendung und/oder der Container für die CT-Rekonstruktion 5408 ausgeführt werden, sobald Daten (z. B. Sinogramm-Rohdaten) für die Verarbeitung durch die Anwendung CT-Rekonstruktion 5408 verfügbar sind. In mindestens einer Ausführungsform kann die CT-Rekonstruktion 5408 Sinogramm-Rohdaten aus einem Cache lesen, eine Bilddatei aus den Sinogramm-Rohdaten rekonstruieren (wie z. B. in der Visualisierung 5416B veranschaulicht) und die resultierende Bilddatei in einem Cache speichern. Bei mindestens einer Ausführungsform kann bei Abschluss der Rekonstruktion dem Pipeline-Manager 5312 signalisiert werden, dass der Rekonstruktionsaufgabe abgeschlossen ist. In mindestens einer Ausführungsform kann, sobald die Rekonstruktion abgeschlossen ist und eine rekonstruierte Bilddatei in einem Cache (oder einer anderen Speichervorrichtung) gespeichert werden kann, die Anwendung und/oder der Container für die Organsegmentierung 5410 durch den Pipeline-Manager 5312 ausgelöst werden. In mindestens einer Ausführungsform kann die Anwendung und/oder der Container für die Organsegmentierung 5410 eine Bilddatei aus einem Cache lesen, eine Bilddatei normalisieren oder in ein für die Inferenz geeignetes Format konvertieren (z. B. eine Bilddatei in eine Eingabeauflösung eines Modells des maschinellen Lernens konvertieren) und die Inferenz gegen ein normalisiertes Bild ausführen. Um Inferenz an einem normalisierten Bild auszuführen, kann sich die Anwendung und/oder der Container für die Organsegmentierung 5410 in mindestens einer Ausführungsform auf die Dienste 5220 stützen und der Pipeline-Manager 5312 und/oder das Anwendungsorchestrierungssystem 5328 können die Verwendung der Dienste 5220 durch die Anwendung und/oder den Container für die Organsegmentierung 5410 erleichtern. Zum Beispiel kann in mindestens einer Ausführungsform die Anwendung und/oder der Container für die Organsegmentierung 5410 die KI-Dienste 5318 ausnutzen, um Inferenz an einem normalisierten Bild durchzuführen, und die Kl-Dienste 5318 können die Hardware 5222 (z. B. das KI-System 5324) ausnutzen, um die KI-Dienste 5318 auszuführen. In mindestens einer Ausführungsform kann ein Ergebnis einer Inferenz eine Maskendatei sein (wie z. B. in der Visualisierung 5416C veranschaulicht), die in einem Cache (oder einer anderen Speichervorrichtung) gespeichert werden kann.
  • In mindestens einer Ausführungsform kann, sobald Anwendungen, die DICOM-Daten und/oder aus DICOM-Daten extrahierte Daten verarbeiten, die Verarbeitung abgeschlossen haben, ein Signal für den Pipeline-Manager 5312 erzeugt werden. In mindestens einer Ausführungsform kann der Pipeline-Manager 5312 dann ein DICOM-Schreibgerät 5412 ausführen, um Ergebnisse aus einem Cache (oder einer anderen Speichervorrichtung) zu lesen und Ergebnisse in ein DICOM-Format (z. B. als DICOM-Ausgabe 5414) zur Verwendung durch Benutzer in einer Einrichtung, die eine Anforderung generierten, zu verpacken. In mindestens einer Ausführungsform kann die DICOM-Ausgabe 5414 dann an den DICOM-Adapter 5302B übertragen werden, um die DICOM-Ausgabe 5414 für die Speicherung auf den PACS-Server(n) 5404 vorzubereiten (z. B. zum Ansehen durch ein DICOM-Betrachtungsgerät in einer Einrichtung). In mindestens einer Ausführungsform können als Reaktion auf eine Anforderung zur Rekonstruktion und Segmentierung Visualisierungen 5416B und 5416C generiert werden und einem Benutzer für Diagnose-, Forschungs- und/oder andere Zwecke zur Verfügung gestellt werden.
  • Obwohl als konsekutive Anwendung in der Bereitstellungs-Pipeline 5310A veranschaulicht, können die Anwendungen für die CT-Rekonstruktion 5408 und die Organsegmentierung 5410 in mindestens einer Ausführungsform parallel verarbeitet werden. Bei mindestens einer Ausführungsform, in der die Anwendungen keine Abhängigkeiten voneinander aufweisen und Daten für jede Anwendung verfügbar sind (z. B., nachdem das DICOM-Lesegerät 5406 Daten extrahiert hat), können Anwendungen gleichzeitig, im Wesentlichen gleichzeitig oder mit einer gewissen Überlappung ausgeführt werden. In mindestens einer Ausführungsform, in der zwei oder mehr Anwendungen ähnliche Dienste 5220 erfordern, kann ein Scheduler des Systems 5300 zur Lastverteilung und zum Verteilen von Rechen- oder Verarbeitungsressourcen zwischen und unter verschiedenen Anwendungen verwendet werden. In mindestens einer Ausführungsform kann die Parallelrechenplattform 5330 zum Durchführen von Parallelverarbeitung für Anwendungen verwendet werden, um die Laufzeit der Bereitstellungs-Pipeline 5310A zu verkürzen, um Ergebnisse in Echtzeit bereitzustellen.
  • In mindestens einer Ausführungsform und unter Bezugnahme auf 55A-55B kann das Einsatzsystem 5206 als ein oder mehrere virtuelle Instrumente implementiert werden, um unterschiedliche Funktionalitäten - wie etwa Bildverarbeitung, Segmentierung, Verbesserung, Kl, Visualisierung und Inferenzieren - mit Bildgebungsvorrichtungen (z. B. CT-Scannern, Röntgenmaschinen, MRT-Maschinen usw.), Sequenzierungsvorrichtungen, Genomikvorrichtungen und/oder anderen Vorrichtungstypen durchzuführen. In mindestens einer Ausführungsform kann das System 5300 die Erstellung und Bereitstellung von virtuellen Instrumenten ermöglichen, die eine softwaredefinierte Bereitstellungs-Pipeline 5310 beinhalten können, die durch eine Vorrichtung(en) generierte rohe/unverarbeitete Eingabedaten empfangen und verarbeitete/rekonstruierte Daten ausgeben kann. In mindestens einer Ausführungsform können Bereitstellungs-Pipelines 5310 (z. B. 5310A und 5310B), die virtuelle Instrumente darstellen, Intelligenz in einer Pipeline implementieren, wie etwa durch Ausnutzen von Modellen des maschinellen Lernens, um einem System containerisierte Inferenzunterstützung bereitzustellen. In mindestens einer Ausführungsform können virtuelle Instrumente eine beliebige Anzahl von Containern ausführen, die jeweils Instanziierungen von Anwendungen beinhalten. In mindestens einer Ausführungsform, wie etwa, wenn Echtzeitverarbeitung gewünscht ist, können Bereitstellungs-Pipelines 5310, die virtuelle Instrumente darstellen, statisch sein (z. B. können Container und/oder Anwendungen festgelegt sein), während in anderen Beispielen Container und/oder Anwendungen für virtuelle Instrumente aus einem Pool von Anwendungen oder Ressourcen (z. B. innerhalb einer Containerregistrierungsdatenbank) ausgewählt werden können (z. B. pro Anforderung).
  • In mindestens einer Ausführungsform kann das System 5300 als ein oder mehrere virtuelle Instrumente vor Ort in einer Einrichtung instanziiert oder ausgeführt werden, z. B. in einem Rechensystem, das neben einer Radiologievorrichtung, einer Bildgebungsvorrichtung und/oder einer anderen Vorrichtungsart in einer Einrichtung oder anderweitig in Kommunikation damit eingesetzt wird. In mindestens einer Ausführungsform kann jedoch eine Installation in den Räumlichkeiten innerhalb eines Rechensystems einer Vorrichtung selbst (z. B. eines Rechensystems, das einstückig zu einer Bildgebungsvorrichtung ist), in einem lokalen Rechenzentrum (z. B. einem Rechenzentrum in den Räumlichkeiten) und/oder in einer Cloud-Umgebung (z. B. in der Cloud 5326) instanziiert oder ausgeführt werden. In mindestens einer Ausführungsform kann das Einsatzsystem 5206, das als virtuelles Instrument arbeitet, in einigen Beispielen von einem Supercomputer oder einem anderen HPC-System instanziiert werden. In mindestens einer Ausführungsform kann die Installation in den Räumlichkeiten Verwendungen mit hoher Bandbreite (zum Beispiel über lokale Kommunikationsschnittstellen mit höherem Durchsatz, wie etwa HF über Ethernet) für die Echtzeitverarbeitung ermöglichen. In mindestens einer Ausführungsform kann Verarbeitung in Echtzeit oder nahezu in Echtzeit besonders nützlich sein, wenn ein virtuelles Instrument eine Ultraschallvorrichtung oder eine andere Bildgebungsmodalität unterstützt, bei der sofortige Visualisierungen erwartet oder für genaue Diagnosen und Analysen erforderlich sind. In mindestens einer Ausführungsform kann eine Cloud-Computing-Architektur zu dynamischem Bursting zu einem Cloud-Computing-Dienstleister oder einem anderen Rechencluster in der Lage sein, wenn die lokale Nachfrage die Kapazität oder Fähigkeit vor Ort übersteigt. In mindestens einer Ausführungsform kann eine Cloud-Architektur, wenn sie implementiert ist, für das Training neuronaler Netze oder anderer Modelle des maschinellen Lernens abgestimmt werden, wie hierin in Bezug auf das Trainingssystem 5204 beschrieben. In mindestens einer Ausführungsform können Modelle des maschinellen Lernens mit vorhandenen Trainingspipelines kontinuierlich lernen und sich verbessern, wenn sie zusätzliche Daten von Vorrichtungen verarbeiten, die sie unterstützen. In mindestens einer Ausführungsform können virtuelle Instrumente unter Verwendung von zusätzlichen Daten, neuen Daten, existierenden Modellen des maschinellen Lernens und/oder aktualisierten Modellen des maschinellen Lernens kontinuierlich verbessert werden.
  • In mindestens einer Ausführungsform kann ein Rechensystem einen Teil oder die gesamte hier beschriebene Hardware 5222 aufweisen, und die Hardware 5222 kann auf eine beliebige Anzahl von Arten verteilt sein, einschließlich innerhalb einer Vorrichtung, als Teil einer Rechenvorrichtung, die mit einer Einrichtung gekoppelt ist und sich in deren Nähe befindet, in einem lokalen Rechenzentrum in einer Einrichtung und/oder in der Cloud 5326. Bei mindestens einer Ausführungsform können, da das Einsatzsystem 5206 und die zugehörigen Anwendungen oder Container in Software (z. B. als diskrete Container-basierte Instanziierungen von Anwendungen) erstellt ist, das Verhalten, der Betrieb und die Konfiguration von virtuellen Instrumenten sowie die von virtuellen Instrumenten erzeugten Ausgaben nach Wunsch modifiziert oder angepasst werden, ohne dass die Rohausgabe einer Vorrichtung, die ein virtuelles Instrument unterstützt, geändert oder angepasst werden muss.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 54 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 54 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 54 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 54 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 54 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 54 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 54 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 55A beinhaltet ein beispielhaftes Datenflussdiagramm eines virtuellen Messgerätes, das eine Ultraschallvorrichtung trägt, gemäß mindestens einer Ausführungsform In mindestens einer Ausführungsform kann die Bereitstellungs-Pipeline 5310B einen oder mehrere der Dienste 5220 des Systems 5300 ausnutzen. In mindestens einer Ausführungsform können die Bereitstellungs-Pipeline 531 OB und die Dienste 5220 die Hardware 5222 eines Systems entweder lokal oder in der Cloud 5326 ausnutzen. Obwohl nicht veranschaulicht, kann in mindestens einer Ausführungsform, der Prozess 5500 von dem Pipeline-Manager 5312, dem Anwendungsorchestrierungssystem 5328 und/oder der Parallelrechenplattform 5330 erleichtert werden.
  • In mindestens einer Ausführungsform kann der Prozess 5500 den Empfang von Bildgebungsdaten von einer Ultraschallvorrichtung 5502 beinhalten. In mindestens einer Ausführungsform können die Bildgebungsdaten auf den PACS-Server(n) in einem DICOM-Format (oder einem anderen Format, wie etwa RIS, CIS, REST-konform, RPC, Rohdaten usw.) gespeichert sein und durch das System 5300 zur Verarbeitung durch die Bereitstellungs-Pipeline 5310 empfangen werden, die als virtuelles Instrument (z. B. ein virtueller Ultraschall) für die Ultraschallvorrichtung 5502 ausgewählt oder individuell angepasst wurde. In mindestens einer Ausführungsform können die Bildgebungsdaten direkt von einer Bildgebungsvorrichtung (z. B. Ultraschallvorrichtung 5502) empfangen und durch ein virtuelles Instrument verarbeitet werden. In mindestens einer Ausführungsform kann ein Wandler oder ein anderer Signalkonverter, der kommunikativ zwischen einer Bildgebungsvorrichtung und einem virtuellen Instrument gekoppelt ist, die durch eine Bildgebungsvorrichtung erzeugten Signaldaten in Bilddaten umwandeln, die durch ein virtuelles Instrument verarbeitet werden können. In mindestens einer Ausführungsform können Rohdaten und/oder Bilddaten auf das DICOM-Lesegerät 5406 angewendet werden, um Daten zur Verwendung durch Anwendungen oder Container der Bereitstellungs-Pipeline 5310B zu extrahieren. In mindestens einer Ausführungsform kann das DICOM-Lesegerät 5406 die Datenerweiterungsbibliothek 5514 (z. B. DALI von NVIDIA) als Dienst 5220 (z. B. als einen der Rechendienste(s) 5316) nutzen, um Daten zu extrahieren, deren Größe zu ändern, sie neu zu skalieren und/oder anderweitig für die Verwendung durch Anwendungen oder Container vorzubereiten.
  • In mindestens einer Ausführungsform kann, sobald die Daten vorbereitet sind, eine Anwendung und/oder ein Container für die Rekonstruktion 5506 ausgeführt werden, um die Daten von der Ultraschallvorrichtung 5502 in eine Bilddatei zu rekonstruieren. In mindestens einer Ausführungsform kann nach der Rekonstruktion 5506 oder gleichzeitig mit der Rekonstruktion 5506 eine Anwendung und/oder ein Container für die Detektion 5508 zur Anomaliedetektion, zur Objektdetektion, zur Merkmalsdetektion und/oder zu anderen Detektionsaufgaben in Bezug auf die Daten ausgeführt werden. In mindestens einer Ausführungsform kann eine während der Rekonstruktion 5506 generierte Bilddatei während der Detektion 5508 verwendet werden, um Anomalien, Objekte, Merkmale usw. zu identifizieren. In mindestens einer Ausführungsform kann die Anwendung für die Detektion 5508 eine Inferenz-Maschine 5516 (z. B. als einen der Kl-Dienste(s) 5318) ausnutzen, um Inferenz an Daten durchzuführen, um Detektionen zu generieren. In mindestens einer Ausführungsform können ein oder mehrere Modelle des maschinellen Lernens (z. B. aus dem Trainingssystem 5204) durch die Anwendung für die Detektion 5508 ausgeführt oder aufgerufen werden.
  • In mindestens einer Ausführungsform können nach Abschluss der Rekonstruktion 5506 und/oder der Erkennung 5508 die von diesen Anwendungen und/oder Containern ausgegebenen Daten verwendet werden, um Visualisierungen 5510 zu erzeugen, wie z. B. eine Visualisierung 5512 (z. B. eine Graustufenausgabe), die auf einer Arbeitsstation oder einem Anzeigeendgerät angezeigt wird. In mindestens einer Ausführungsform kann die Visualisierung es einem Techniker oder einem anderen Benutzer ermöglichen, die Ergebnisse der Bereitstellungs-Pipeline 5310B in Bezug auf die Ultraschallvorrichtung 5502 zu visualisieren. In mindestens einer Ausführungsform kann die Visualisierung 5510 durch Ausnutzen einer Rendering-Komponente 5518 des Systems 5300 (z. B. eines der Visualisierungsdienste(s) 5320) ausgeführt werden. In mindestens einer Ausführungsform kann die Rendering-Komponente 5518 einen 2D-, OpenGL- oder Strahlverfolgungsdienst ausführen, um die Visualisierung 5512 zu erzeugen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 55A gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen zu durchzuführen, die in Verbindung mit den 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 55A gezeigt wird, verwendet, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 55A gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 55A gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 55A gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 55A gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 55A verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 55B beinhaltet ein beispielhaftes Datenflussdiagramm eines virtuellen Messgerätes, das einen CT-Scanner trägt, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die Bereitstellungs-Pipeline 5310C einen oder mehrere der Dienste 5220 des Systems 5300 ausnutzen. In mindestens einer Ausführungsform können die Bereitstellungs-Pipeline 5310C und die Dienste 5220 die Hardware 5222 eines Systems entweder lokal oder in der Cloud 5326 nutzen. Obwohl nicht veranschaulicht, kann in mindestens einer Ausführungsform, der Prozess 5520 von dem Pipeline-Manager 5312, dem Anwendungsorchestrierungssystem 5328 und/oder der Parallelrechenplattform 5330 erleichtert werden.
  • In mindestens einer Ausführungsform kann der Prozess 5520 beinhalten, dass der CT-Scanner 5522 Rohdaten erzeugt, die durch das DICOM-Lesegerät 5406 empfangen werden können (z. B. direkt, über einen PACS-Server 5404, nach der Verarbeitung usw.). In mindestens einer Ausführungsform kann ein virtuelles CT (durch die Bereitstellungs-Pipeline 5310C instanziiert) eine erste Echtzeitpipeline zum Überwachen eines Patienten (z. B. Patientenbewegungsdetektions-KI 5526) und/oder zum Einstellen oder Optimieren der Belichtung des CT-Scanners 5522 (z. B. unter Verwendung der Belichtungssteuer-KI 5524) beinhalten. In mindestens einer Ausführungsform können eine oder mehrere der Anwendungen (z. B. 5524 und 5526) einen Dienst 5220 ausnutzen, wie etwa die KI-Dienst(e) 5318. In mindestens einer Ausführungsform können die Ausgaben der Anwendung (oder des Containers) für die Belichtungssteuer-Kl 5524 und/oder der Anwendung (oder des Containers) für die Patientenbewegungsdetektions-Kl 5526 als Rückmeldung an den CT-Scanner 5522 und/oder einen Techniker verwendet werden, um die Belichtung (oder andere Einstellungen des CT-Scanners 5522) einzustellen und/oder einen Patienten zu informieren, sich weniger zu bewegen.
  • In mindestens einer Ausführungsform kann die Bereitstellungs-Pipeline 5310C eine Nicht-Echtzeitpipeline zur Analyse der vom CT-Scanner 5522 erzeugten Daten beinhalten. In mindestens einer Ausführungsform kann eine zweite Pipeline die Anwendung und/oder den Container für die CT-Rekonstruktion 5408, eine Anwendung und/oder einen Container für eine Grobdetektions-KI 5528, eine Anwendung und/oder einen Container für eine Feindetektions-KI 5532 (wenn z. B. bestimmte Ergebnisse durch die Grobdetektions-KI 5528 detektiert werden), eine Anwendung und/oder einen Container für eine Visualisierung 5530 und eine Anwendung und/oder einen Container für das DICOM-Schreibgerät 5412 (und/oder ein Schreibgerät für einen anderen Datentyp, wie etwa RIS, CIS, REST-konform, RPC, Rohdaten usw.) beinhalten. In mindestens einer Ausführungsform können die durch den CT-Scanner 5522 generierten Rohdaten durch Pipelines der Bereitstellungs-Pipeline 5310C (als virtuelles CT-Instrument instanziiert) gegeben werden, um Ergebnisse zu generieren. In mindestens einer Ausführungsform können die Ergebnisse des DICOM-Schreibers 5412 zur Anzeige übertragen und/oder auf dem/den PACS-Server(n) 5404 zum/zur späteren Abruf, Analyse oder Anzeige durch einen Techniker, eine Fachkraft oder anderen Benutzer gespeichert werden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 55B gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen zu durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 55B gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 55B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 55B gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 55B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 55B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 55B verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 56A veranschaulicht ein Datenablaufdiagramm für einen Prozess 5600 zum Trainieren, erneuten Trainieren oder Aktualisieren eines Modells des maschinellen Lernens gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozess 5600 als nicht einschränkendes Beispiel unter Verwendung des Systems 5300 aus 53 ausgeführt werden. In mindestens einer Ausführungsform kann der Prozess 5600 die Dienste 5220 und/oder die Hardware 5222 des Systems 5300 ausnutzen, wie hierin beschrieben. In mindestens einer Ausführungsform können verfeinerte Modelle 5612, die durch den Prozess 5600 generiert wurden, durch das Einsatzsystem 5206 für eine oder mehrere containerisierte Anwendungen in Bereitstellungs-Pipelines 5310 ausgeführt werden.
  • In mindestens einer Ausführungsform kann das Modelltraining 5214 das erneute Trainieren oder Aktualisieren eines anfänglichen Modells 5604 (z. B. eines vortrainierten Modells) unter Verwendung neuer Trainingsdaten (z. B. neuer Eingabedaten, wie etwa eines Kundendatensatzes 5606 und/oder neuer grundlegender Referenzdaten, die den Eingabedaten zugeordnet sind) beinhalten. In mindestens einer Ausführungsform können zum erneuten Trainieren oder Aktualisieren des anfänglichen Modells 5604 die Ausgabe- oder Verlustschicht(en) des anfänglichen Modells 5604 zurückgesetzt oder gelöscht und/oder durch aktualisierte oder neue Ausgabe- oder Verlustschichten) ersetzt werden. In mindestens einer Ausführungsform kann das anfängliche Modell 5604 bereits fein abgestimmte Parameter (z. B. Gewichtungen und/oder Verzerrungen) aufweisen, die aus einem früheren Training übriggeblieben sind, sodass das Training oder das erneute Training 5214 nicht so lange dauern oder so viel Verarbeitung erfordern kann wie das Training eines Modells von Grund auf. In mindestens einer Ausführungsform können während des Modelltrainings 5214 durch Zurücksetzen oder Ersetzen der Ausgabe- oder Verlustschicht(en) des anfänglichen Modells 5604 die Parameter aktualisiert und für einen neuen Datensatz auf Grundlage von Verlustberechnungen neu abgestimmt werden, die mit der Genauigkeit der Ausgabe- oder Verlustschichten) beim Generieren von Vorhersagen an einem neuen Kundendatensatz 5606 (z. B. Bilddaten 5208 aus 52) assoziiert sind.
  • In mindestens einer Ausführungsform können die vorab trainierten Modelle 5306 in einem Datenspeicher oder einer Registrierungsdatenbank (z. B. der Modellregistrierungsdatenbank 5224 aus 52) gespeichert sein. In mindestens einer Ausführungsform können die vorab trainierten Modelle 5306 zumindest teilweise in einer oder mehreren anderen Einrichtungen als der Einrichtung, die den Prozess 5600 ausführt, trainiert worden sein. In mindestens einer Ausführungsform können zum Schutz der Privatsphäre und der Rechte von Patienten, Subjekten oder Klienten unterschiedlicher Einrichtungen vortrainierte Modelle 5306 vor Ort unter Verwendung von vor Ort erzeugten Kunden- oder Patientendaten trainiert worden sein. In mindestens einer Ausführungsform können die vorab trainierten Modelle 5306 unter Verwendung der Cloud 5326 und/oder anderer Hardware 5222 trainiert werden, aber vertrauliche, datenschutzrechtlich geschützte Patientendaten dürfen nicht an beliebige Komponenten der Cloud 5326 (oder anderer Hardware außerhalb der eigenen Räumlichkeiten) übermittelt werden, durch diese verwendet werden oder für diese zugänglich sein. In mindestens einer Ausführungsform, in der ein vorab trainiertes Modell 5306 unter Verwendung von Patientendaten von mehr als einer Einrichtung trainiert wird, kann das vorab trainierte Modell 5306 einzeln für jede Einrichtung trainiert worden sein, bevor es an Patienten- oder Kundendaten einer anderen Einrichtung trainiert wird. In mindestens einer Ausführungsform, wie etwa, wenn Kunden- oder Patientendaten von Datenschutzbedenken ausgenommen wurden (z. B. durch eine Verzichtserklärung, für die experimentelle Verwendung usw.) oder wenn Kunden- oder Patientendaten in einem öffentlichen Datensatz enthalten sind, können Kunden- oder Patientendaten von einer beliebigen Anzahl von Einrichtungen verwendet werden, um das vorab trainierte Modell 5306 innerhalb und/oder außerhalb der eigenen Räumlichkeiten zu trainieren, wie etwa in einem Rechenzentrum oder einer anderen Cloud-Computing-Infrastruktur.
  • Bei mindestens einer Ausführungsform, wenn Anwendungen zur Verwendung in Bereitstellungs-Pipelines 5310 ausgewählt werden, kann ein Benutzer auch maschinelle Lernmodelle auswählen, die für spezifische Anwendungen zu verwenden sind. In mindestens einer Ausführungsform kann ein Benutzer über kein Modell zur Verwendung verfügen, sodass ein Benutzer ein vorab trainiertes Modell 5306 zur Verwendung mit einer Anwendung auswählen kann. In mindestens einer Ausführungsform ist das vortrainierte Modell 5306 möglicherweise nicht für das Erzeugen genauer Ergebnisse des Kundendatensatzes 5606 einer Einrichtung eines Benutzers optimiert (z. B. auf Grundlage von Patientendiversität, Demografie, Arten von verwendeten medizinischen Bildgebungsvorrichtungen usw.). In mindestens einer Ausführungsform kann das vorab trainierte Modell 5306 vor dem Einsetzen des vorab trainierten Modells 5306 in der Bereitstellungs-Pipeline 5310 zur Verwendung mit einer Anwendung(en) für die Verwendung in einer jeweiligen Einrichtung aktualisiert, erneut trainiert und/oder fein abgestimmt werden.
  • In mindestens einer Ausführungsform kann ein Benutzer das vortrainierte Modell 5306 auswählen, das aktualisiert, neu trainiert und/oder fein abgestimmt werden soll, und das vortrainierte Modell 5306 kann als anfängliches Modell 5604 für das Trainingssystem 5204 innerhalb des Prozesses 5600 bezeichnet werden. In mindestens einer Ausführungsform kann der Kundendatensatz 5606 (z. B. Bildgebungsdaten, Genomikdaten, Sequenzierungsdaten oder andere Datentypen, die durch Vorrichtungen in einer Einrichtung generiert werden) verwendet werden, um das Modelltraining 5214 (das ohne Einschränkung Transferlernen beinhalten kann) an dem anfänglichen Modell 5604 durchzuführen, um das verfeinerte Modell 5612 zu generieren. In mindestens einer Ausführungsform können die Ground-Truth-Daten, die dem Kundendatensatz 5606 entsprechen, durch das Trainingssystem 5204 generiert werden. In mindestens einer Ausführungsform können Ground-Truth-Daten zumindest teilweise von Klinikern, Wissenschaftlern, Ärzten, Fachkräften in einer Einrichtung generiert werden (z. B. als beschriftete Klinikdaten 5212 aus 52).
  • Bei mindestens einer Ausführungsform kann eine Kl-gestützte Annotation 5210 bei einigen Beispielen verwendet werden, um grundlegende Referenzdaten zu generieren. In mindestens einer Ausführungsform kann die KI-unterstützte Anmerkung 5210 (z. B. umgesetzt unter Verwendung eines KI-unterstützten Anmerkungs-SDK) Modelle des maschinellen Lernens (z. B. neuronale Netzwerke) nutzen, um vorgeschlagene oder vorhergesagte Ground-Truth-Daten für einen Kundendatensatz zu erzeugen. In mindestens einer Ausführungsform kann der Benutzer 5610 Annotationswerkzeuge innerhalb einer Benutzerschnittstelle (einer grafischen Benutzerschnittstelle (GUI)) auf der Rechenvorrichtung 5608 verwenden.
  • In mindestens einer Ausführungsform kann der Benutzer 5610 über die Rechenvorrichtung 5608 mit einer GUI interagieren, um Annotationen oder Autoannotationen zu bearbeiten oder fein abzustimmen. In mindestens einer Ausführungsform kann ein Polygonbearbeitungsmerkmal verwendet werden, um Vertices eines Polygons an genauere oder feiner abgestimmte Stellen zu verschieben.
  • In mindestens einer Ausführungsform können, sobald Ground-Truth-Daten mit dem Kundendatensatz 5606 assoziiert sind, die Ground-Truth-Daten (z. B. aus Kl-gestützter Annotation, manueller Beschriftung usw.) während des Modelltrainings 5214 durch verwendet werden, um das verfeinerte Modell 5612 zu erzeugen. In mindestens einer Ausführungsform kann der Kundendatensatz 5606 beliebig oft auf das anfängliche Modell 5604 angewendet werden und die Ground-Truth-Daten können verwendet werden, um die Parameter des anfänglichen Modells 5604 zu aktualisieren, bis ein akzeptables Genauigkeitslevel für das verfeinerte Modell 5612 erreicht ist. In mindestens einer Ausführungsform kann das verfeinerte Modell 5612, sobald das verfeinerte Modell 5612 generiert ist, innerhalb einer oder mehrerer Bereitstellungs-Pipelines 5310 in einer Einrichtung zum Durchführen eines oder mehrerer Verarbeitungsaufgaben in Bezug auf medizinische Bildgebungsdaten eingesetzt werden.
  • In mindestens einer Ausführungsform kann das verfeinerte Modell 5612 in vortrainierte Modelle 5306 in dem Modellregister 5224 hochgeladen werden, um von einer anderen Einrichtung ausgewählt zu werden. Bei mindestens einer Ausführungsform kann dieses Verfahren in einer beliebigen Anzahl von Einrichtungen durchgeführt werden, so dass das verfeinerte Modell 5612 auf neuen Datensätzen beliebig oft darüber hinaus verfeinert werden kann, um ein universelleres Modell zu erzeugen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 56A gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen zu durchzuführen, die in Verbindung mit den 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 56A gezeigt wird, verwendet, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 56A gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 56A gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 56A gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 56A gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 56A verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 56B ist eine beispielhafte Veranschaulichung einer Client-Server-Architektur 5632 zum Erweitern von Annotationswerkzeugen mit vorab trainierten Annotationsmodellen gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform können die Kl-gestützten Annotationswerkzeuge 5636 auf Grundlage einer Client-Server-Architektur 5632 instanziiert werden. In mindestens einer Ausführungsform können die Annotationswerkzeuge 5636 in Bildgebungsanwendungen beispielsweise Radiologen bei der Identifizierung von Organen und Anomalien unterstützen. In mindestens einer Ausführungsform können Bildgebungsanwendungen Software-Werkzeuge beinhalten, die dem Benutzer 5610 dabei helfen, als nicht einschränkendes Beispiel einige Extrempunkte an einem konkreten Organ von Interesse auf Rohbildern 5634 (z. B. auf einem 3D-MRT- oder CT-Scan) zu identifizieren und automatisch annotierte Ergebnisse für alle 2D-Scheiben eines konkreten Organs zu empfangen. Bei mindestens einer Ausführungsform können die Ergebnisse in einem Datenarchiv als Trainingsdaten 5638 gespeichert werden und (beispielhaft und nicht einschränkend) als grundlegende Referenzdaten zum Training verwendet werden. In mindestens einer Ausführungsform kann, wenn die Rechenvorrichtung 5608 Extrempunkte für die KI-gestützte Annotation 5210 sendet, ein Deep-Learning-Modell diese Daten zum Beispiel als Eingabe empfangen und Inferenzergebnisse eines segmentierten Organs oder einer Auffälligkeit zurückgeben. In mindestens einer Ausführungsform können vorab instanziierte Annotationswerkzeuge, wie etwa das Kl-gestützte Annotationswerkzeug 5636B in 56B, durch Vornehmen von API-Aufrufen (z. B. API-Aufruf 5644) an einen Server, wie etwa einen Annotationsassistenzserver 5640, erweitert werden, der einen Satz von vorab trainierten Modellen 5642 beinhalten kann, der zum Beispiel in einer Annotationsmodellregistrierungsdatenbank gespeichert ist. In mindestens einer Ausführungsform kann eine Annotationsmodellregistrierungsdatenbank vorab trainierte Modelle 5642 (z. B. Modelle des maschinellen Lernens, wie z. B. Deep-Learning-Modelle) speichern, die vorab trainiert sind, um eine KI-gestützte Annotation an einem konkreten Organ oder einer Auffälligkeit auszuführen. In mindestens einer Ausführungsform können diese Modelle unter Verwendung von Trainingspipelines 5304 weiter aktualisiert werden. In mindestens einer Ausführungsform können die vorinstallierten Annotationswerkzeuge im Laufe der Zeit verbessert werden, wenn neue gelabelte Klinikdaten 5212 hinzugefügt werden.
  • Die Inferenz- und/oder Trainingslogik 2315 wird verwendet, um Inferenz- und/oder Trainingsoperationen auszuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 2315 werden hierin in Verbindung mit 23A und/oder 23B bereitgestellt.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 56B gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen zu durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 56B gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 56B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 56B gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 56B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 56B gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 56B verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • SOFTWARESYSTEME
  • 57 veranschaulicht einen Software-Stack einer Programmierplattform gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist eine Programmierplattform eine Plattform zum Einsetzen von Hardware auf einem Rechensystem, um Berechnungsaufgaben zu beschleunigen. In mindestens einer Ausführungsform kann eine Programmierplattform für Softwareentwickler durch Bibliotheken, Compilerdirektiven und/oder Erweiterungen von Programmiersprachen zugänglich sein. In mindestens einer Ausführungsform kann eine Programmierplattform CUDA, Radeon Open Compute Platform („ROCm“), OpenCL (OpenCL™ wird von der Khronos-Gruppe entwickelt), SYCL oder Intel One API sein, ist aber nicht darauf beschränkt.
  • In mindestens einer Ausführungsform bietet ein Software-Stack 5700 einer Programmierplattform eine Ausführungsumgebung für eine Anwendung 5701. In mindestens einer Ausführungsform kann die Anwendung 5701 jede Computersoftware beinhalten, die auf dem Software-Stack 5700 gestartet werden kann. In mindestens einer Ausführungsform kann die Anwendung 5701 eine Anwendung für künstliche Intelligenz („KI“)/Maschinenlernen („ML“), eine Hochleistungsrechenanwendung („HPC“), eine virtuelle Desktop-Infrastruktur („VDI“) oder eine Rechenzentrumsarbeitslast beinhalten, ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform laufen die Anwendung 5701 und der Software-Stack 5700 auf der Hardware 5707. Die Hardware 5707 kann in mindestens einer Ausführungsform eine oder mehrere GPU, CPU, FPGA, Kl-Maschinen und/oder andere Arten von Rechenvorrichtungen beinhalten, die eine Programmierplattform unterstützen. In mindestens einer Ausführungsform, wie etwa bei CUDA, kann der Software-Stack 5700 herstellerspezifisch und nur mit Vorrichtungen von konkreten Herstellern kompatibel sein. In mindestens einer Ausführungsform, z. B. bei OpenCL, kann der Software-Stack 5700 mit Vorrichtungen verschiedener Hersteller verwendet werden. In mindestens einer Ausführungsform beinhaltet die Hardware 5707 einen Host, der mit mehreren Vorrichtungen verbunden ist, auf die zur Durchführung von Rechenaufgaben über API-Aufrufe (Application Programming Interface) zugegriffen werden kann. Eine Vorrichtung innerhalb der Hardware 5707 kann, ohne darauf beschränkt zu sein, eine GPU, ein FPGA, eine KI-Maschine oder eine andere Rechenvorrichtung und ihren Speicher beinhalten (kann aber auch eine CPU beinhalten), im Gegensatz zu einem Host innerhalb der Hardware 5707, der in mindestens einer Ausführungsform eine CPU und seinen Speicher beinhalten kann (aber auch eine Rechenvorrichtung beinhalten kann), ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform beinhaltet der Software-Stack 5700 einer Programmierplattform ohne Einschränkung eine Reihe von Bibliotheken 5703, eine Laufzeit 5705 und einen Vorrichtungskerneltreiber 5706. Jede der Bibliotheken 5703 kann in mindestens einer Ausführungsform Daten und Programmiercode beinhalten, die von Computerprogrammen verwendet und während der Softwareentwicklung genutzt werden können. In mindestens einer Ausführungsform können die Bibliotheken 5703 vorgefertigten Code und Unterroutinen, Klassen, Werte, Typspezifikationen, Konfigurationsdaten, Dokumentation, Hilfedaten und/oder Nachrichtenvorlagen beinhalten, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform beinhalten die Bibliotheken 5703 Funktionen, die für die Ausführung auf einem oder mehreren Vorrichtungstypen optimiert sind. In mindestens einer Ausführungsform können die Bibliotheken 5703 unter anderem Funktionen zur Durchführung von mathematischen, Deep-Learning- und/oder anderen Arten von Operationen auf Vorrichtungen beinhalten. In mindestens einer Ausführungsform sind die Bibliotheken 5703 mit entsprechenden APIs 5702 verknüpft, die ein oder mehrere APIs beinhalten können, die die in den Bibliotheken 5703 implementierten Funktionen offenlegen.
  • In mindestens einer Ausführungsform ist die Anwendung 5701 als Quellcode geschrieben, der in ausführbaren Code kompiliert wird, wie nachstehend in Verbindung mit 62 ausführlicher erörtert wird. Der ausführbare Code der Anwendung 5701 kann mindestens teilweise auf einer Ausführungsumgebung laufen, die in mindestens einer Ausführungsform vom Software-Stack 5700 bereitgestellt wird. In mindestens einer Ausführungsform kann während der Ausführung der Anwendung 5701 ein Code erreicht werden, der auf einer Vorrichtung und nicht auf einem Host ausgeführt werden muss. In einem solchen Fall kann die Laufzeit 5705 in mindestens einer Ausführungsform aufgerufen werden, um erforderlichen Code auf eine Vorrichtung zu laden und zu starten. In mindestens einer Ausführungsform kann die Laufzeit 5705 jedes technisch mögliche Laufzeitsystem umfassen, das die Ausführung der Anwendung S01 unterstützen kann.
  • In mindestens einer Ausführungsform ist die Laufzeit 5705 als eine oder mehrere Laufzeitbibliotheken implementiert, die entsprechenden APIs zugeordnet sind, die als API(s) 5704 dargestellt sind. Eine oder mehrere solcher Laufzeitbibliotheken können in mindestens einer Ausführungsform ohne Einschränkung unter anderem Funktionen für die Speicherverwaltung, die Ausführungssteuerung, die Vorrichtungsverwaltung, die Fehlerbehandlung und/oder die Synchronisation beinhalten. In mindestens einer Ausführungsform können die Speicherverwaltungsfunktionen Funktionen zum Zuweisen, Freigeben und Kopieren von Vorrichtungsspeicher sowie zum Übertragen von Daten zwischen Host-Speicher und Vorrichtungsspeicher beinhalten, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform können die Ausführungssteuerungsfunktionen unter anderem Funktionen zum Starten einer Funktion (manchmal als „Kernel“ bezeichnet, wenn eine Funktion eine globale Funktion ist, die von einem Host aus aufgerufen werden kann) auf einer Vorrichtung und zum Festlegen von Attributwerten in einem Puffer beinhalten, der von einer Laufzeitbibliothek für eine bestimmte, auf einer Vorrichtung auszuführende Funktion verwaltet wird.
  • Laufzeitbibliotheken und entsprechende API(s) 5704 können in mindestens einer Ausführungsform auf eine beliebige technisch machbare Weise implementiert sein. In mindestens einer Ausführungsform kann eine (oder eine beliebige Anzahl von) API einen Satz von Funktionen auf niedriger Ebene für die feinkörnige Steuerung einer Vorrichtung bereitstellen, während eine andere (oder eine beliebige Anzahl von) API einen Satz solcher Funktionen auf höherer Ebene bereitstellen kann. In mindestens einer Ausführungsform kann eine Laufzeit-API einer hohen Ebene auf einer API einer niedrigen Ebene aufgebaut sein. In mindestens einer Ausführungsform können eine oder mehrere Laufzeit-API sprachspezifische API sein, die auf einer sprachunabhängigen Laufzeit-API aufgesetzt sind.
  • In mindestens einer Ausführungsform ist der Vorrichtungskerneltreiber 5706 konfiguriert, um die Kommunikation mit einer zugrundeliegenden Vorrichtung zu ermöglichen. In mindestens einer Ausführungsform kann der Vorrichtungskerneltreiber 5706 Funktionalitäten einer niedrigen Ebene bereitstellen, auf die API, wie etwa die API 5704 und/oder andere Software, zurückgreifen. In mindestens einer Ausführungsform kann der Vorrichtungskerneltreiber 5706 konfiguriert sein, um Zwischendarstellungs („IR“)-Code zur Laufzeit in Binärcode zu kompilieren. Für CUDA kann der Vorrichtungskerntreiber 5706 den IR-Code, der nicht hardwarespezifisch ist, für die parallele Thread-Ausführung („PTX“) zur Laufzeit in Binärcode für ein bestimmtes Zielgerät kompilieren (mit Zwischenspeicherung des kompilierten Binärcodes), was in mindestens einer Ausführungsform auch als „Finalisierungscode“ bezeichnet wird. Auf diese Weise kann in mindestens einer Ausführungsform finalisierter Code auf einer Zielvorrichtung ausgeführt werden, die möglicherweise noch nicht existierte, als der Quellcode ursprünglich in PTX-Code kompiliert wurde. Alternativ kann in mindestens einer Ausführungsform der Vorrichtungsquellcode offline in Binärcode kompiliert werden, ohne dass es erforderlich ist, dass der Vorrichtungskerneltreiber 5706 den IR-Code während der Laufzeit kompiliert.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 57 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 57 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 57 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 57 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 57 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 57 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 57 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 58 veranschaulicht eine CUDA-Implementierung des Software-Stacks 5700 der 57 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet ein CUDA-Software-Stack 5800, auf dem eine Anwendung 5801 gestartet werden kann, CUDA-Bibliotheken 5803, eine CUDA-Laufzeit 5805, einen CUDA-Treiber 5807 und einen Vorrichtungskerneltreiber 5808. In mindestens einer Ausführungsform wird der CUDA-Software-Stack 5800 auf der Hardware 5809 ausgeführt, die eine GPU beinhalten kann, die CUDA unterstützt und von der NVIDIA Corporation in Santa Clara, CA, entwickelt wurde.
  • In mindestens einer Ausführungsform können die Anwendung 5801, die CUDA-Laufzeit 5805 und der Vorrichtungskerneltreiber 5808 ähnliche Funktionen ausführen wie die Anwendung 5701, die Laufzeit 5705 bzw. der Vorrichtungskerneltreiber 5706, die vorstehend in Verbindung mit 57 beschrieben sind. In mindestens einer Ausführungsform beinhaltet der CUDA-Treiber 5807 eine Bibliothek (libcuda.so), die eine CUDA-Treiber-API 5806 implementiert. Ähnlich wie eine CUDA-Laufzeit-API 5804, die von einer CUDA-Laufzeitbibliothek (cudart) implementiert wird, kann die CUDA-Treiber-API 5806 in mindestens einer Ausführungsform unter anderem Funktionen für die Speicherverwaltung, die Ausführungssteuerung, die Vorrichtungsverwaltung, die Fehlerbehandlung, die Synchronisierung und/oder die grafische Interoperabilität bereitstellen. In mindestens einer Ausführungsform unterscheidet sich die CUDA-Treiber-API 5806 von der CUDA-Laufzeit-API 5804 dadurch, dass die CUDA-Laufzeit-API 5804 die Vorrichtungscode-Verwaltung vereinfacht, indem sie implizite Initialisierung, Kontextverwaltung (analog zu einem Prozess) und Modulverwaltung (analog zu dynamisch geladenen Bibliotheken) bereitstellt. Im Gegensatz zur CUDA-Laufzeit-API 5804 auf hoher Ebene ist die CUDA-Treiber-API 5806 eine API auf niedriger Ebene, die in mindestens einer Ausführungsform eine feinkörnigere Steuerung einer Vorrichtung bereitstellt, insbesondere in Bezug auf Kontexte und Modulladen. In mindestens einer Ausführungsform kann die CUDA-Treiber-API 5806 Funktionen für die Kontextverwaltung bereitstellen, die von der CUDA-Laufzeit-API 5804 nicht offengelegt werden. In mindestens einer Ausführungsform ist die CUDA-Treiber-API 5806 auch sprachunabhängig und unterstützt z. B. OpenCL zusätzlich zur CUDA-Laufzeit-API 5804. Ferner können in mindestens einer Ausführungsform Entwicklungsbibliotheken, einschließlich der CUDA-Laufzeit 5805, als von Treiberkomponenten getrennt betrachtet werden, einschließlich des Benutzermodus-CUDA-Treibers 5807 und des Kernelmodus-Vorrichtungstreibers 5808 (manchmal auch als „Anzeige“-Treiber bezeichnet).
  • In mindestens einer Ausführungsform können die CUDA-Bibliotheken 5803 mathematische Bibliotheken, Deep-Learning-Bibliotheken, parallele Algorithmusbibliotheken und/oder Signal-/Bild-/Videoverarbeitungsbibliotheken beinhalten, die parallele Rechenanwendungen wie die Anwendung 5801 nutzen können, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform können die CUDA-Bibliotheken 5803 mathematische Bibliotheken beinhalten, wie etwa unter anderem eine cuBLAS-Bibliothek, die eine Implementierung von Basic Linear Algebra Subprograms („BLAS“) zum Durchführen linearer Algebra-Operationen ist, eine cuFFT-Bibliothek zum Berechnen schneller Fourier-Transformationen („FFT“) und eine cuRAND-Bibliothek zur Generierung von Zufallszahlen. In mindestens einer Ausführungsform können die CUDA-Bibliotheken 5803 Deep-Learning-Bibliotheken beinhalten, wie etwa unter anderem eine cuDNN-Bibliothek von Primitiven für tiefe neuronale Netzwerke und eine TensorRT-Plattform für Hochleistungs-Deep-Learning-Inferenz.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 58 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 58 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 58 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 58 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 58 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 58 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 58 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 59 veranschaulicht eine ROCm-lmplementierung des Software-Stacks 5700 der 57 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet ein ROCm-Software-Stack 5900, auf dem eine Anwendung 5901 gestartet werden kann, eine Sprachlaufzeit 5903, eine Systemlaufzeit 5905, einen Thunk 5907, einen ROCm-Kerneltreiber 5908 und einen Vorrichtungskerneltreiber 5909. In mindestens einer Ausführungsform wird der ROCm-Software-Stack 5900 auf der Hardware 5910 ausgeführt, die eine GPU beinhalten kann, die ROCm unterstützt und von der AMD Corporation in Santa Clara, CA, entwickelt wurde.
  • In mindestens einer Ausführungsform kann die Anwendung 5901 ähnliche Funktionen ausführen wie die oben in Verbindung mit 57 beschriebene Anwendung 5701. Darüber hinaus können die Sprachlaufzeit 5903 und die Systemlaufzeit 5905 in mindestens einer Ausführungsform ähnliche Funktionen wie die oben in Verbindung mit 57 beschriebene Laufzeit 5705 durchführen. In mindestens einer Ausführungsform unterscheiden sich die Sprachlaufzeit 5903 und die Systemlaufzeit 5905 dadurch, dass die Systemlaufzeit 5905 eine sprachunabhängige Laufzeit ist, die eine ROCr-Systemlaufzeit-API 5904 implementiert und eine Heterogeneous System Architecture („HAS“) Runtime API verwendet. Die HAS-Laufzeit-API ist in mindestens einer Ausführungsform eine schlanke Benutzermodus-API, die Schnittstellen für den Zugriff auf und die Interaktion mit einer AMD-GPU offenlegt, die unter anderem Funktionen für die Speicherverwaltung, die Ausführungssteuerung über den architekturdefinierten Versand von Kerneln, die Fehlerbehandlung, System- und Agenteninformationen sowie die Initialisierung und das Herunterfahren der Laufzeit beinhaltet. Im Gegensatz zur Systemlaufzeit 5905 ist die Sprachlaufzeit 5903 in mindestens einer Ausführungsform eine Implementierung einer sprachspezifischen Laufzeit-API 5902, die über der ROCr-Systemlaufzeit-API 5904 liegt. In mindestens einer Ausführungsform kann die Sprach-Laufzeit-API unter anderem eine Heterogeneous Compute Interface for Portability („HIP“)-Sprach-Laufzeit-API, eine Heterogeneous Compute Compiler („HCC“)-Sprach-Laufzeit-API oder eine OpenCL-API beinhalten, ist aber nicht darauf beschränkt. Die HIP-Sprache ist insbesondere eine Erweiterung der Programmiersprache C++ mit funktional ähnlichen Versionen von CUDA-Mechanismen, und in mindestens einer Ausführungsform beinhaltet eine HIP-Sprachen-Laufzeit-API Funktionen, die denen der CUDA-Laufzeit-API 5804 ähneln, die vorstehend in Verbindung mit 58 erörtert wurde, wie etwa unter anderem Funktionen zur Speicherverwaltung, Ausführungssteuerung, Vorrichtungsverwaltung, Fehlerbehandlung und Synchronisation.
  • In mindestens einer Ausführungsform ist der Thunk (ROCt) 5907 eine Schnittstelle, die verwendet werden kann, um mit dem darunterliegenden ROCm-Treiber 5908 zu interagieren. In mindestens einer Ausführungsform ist der ROCm-Treiber 5908 ein ROCk-Treiber, der eine Kombination aus einem AMDGPU-Treiber und einem HAS-Kernel-Treiber (amdkfd) ist. In mindestens einer Ausführungsform ist der AMDGPU-Treiber ein von AMD entwickelter Vorrichtungskerneltreiber für GPU, der ähnliche Funktionen wie der Vorrichtungskerneltreiber 5706 durchführt, der vorstehend in Verbindung mit 57 erörtert wurde. In mindestens einer Ausführungsform ist der HAS-KernelTreiber ein Treiber, der es unterschiedlichen Arten von Prozessoren erlaubt, Systemressourcen effektiver über Hardware-Merkmale gemeinsam zu nutzen.
  • In mindestens einer Ausführungsform können verschiedene Bibliotheken (nicht gezeigt) in den ROCm-Software-Stack 5900 oberhalb der Sprachlaufzeit 5903 aufgenommen werden und bieten eine ähnliche Funktionalität wie die CUDA-Bibliotheken 5803, die vorstehend in Verbindung mit 58 beschrieben wurden. In mindestens einer Ausführungsform können verschiedene Bibliotheken mathematische, Deep-Learning- und/oder andere Bibliotheken beinhalten, wie z. B. eine hipBLAS-Bibliothek, die ähnliche Funktionen wie CUDA cuBLAS implementiert, eine rocFFT-Bibliothek zur Berechnung von FFTs, die u. a. CUDA cuFFT ähnelt, ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 59 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 59 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 59 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 59 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 59 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 59 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 59 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 60 veranschaulicht eine OpenCL-Implementierung des Software-Stacks 5700 aus 57 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet ein OpenCL-Software-Stack 6000, auf dem eine Anwendung 6001 gestartet werden kann, ein OpenCL-Framework 6005, eine OpenCL-Laufzeit 6006 und einen Treiber 6007. In mindestens einer Ausführungsform wird der OpenCL-Software-Stack 6000 auf Hardware 5809 ausgeführt, die nicht herstellerspezifisch ist. Da OpenCL von Vorrichtungen unterstützt wird, die von verschiedenen Anbietern entwickelt wurden, können in mindestens einer Ausführungsform spezifische OpenCL-Treiber erforderlich sein, um mit der Hardware solcher Anbieter zusammenzuarbeiten.
  • In mindestens einer Ausführungsform können die Anwendung 6001, die OpenCL-Laufzeit 6006, der Vorrichtungskerneltreiber 6007 und die Hardware 6008 ähnliche Funktionalitäten wie die Anwendung 5701, die Laufzeit 5705, der Vorrichtungskerneltreiber 5706 bzw. die Hardware 5707 durchführen, die vorstehend in Verbindung mit 57 beschrieben wurden. In mindestens einer Ausführungsform beinhaltet die Anwendung 6001 außerdem einen OpenCL-Kernel 6002 mit Code, der auf einer Vorrichtung ausgeführt werden soll.
  • In mindestens einer Ausführungsform definiert OpenCL eine „Plattform“, die es einem Host erlaubt, mit einem Host verbundene Vorrichtungen zu steuern. In mindestens einer Ausführungsform stellt ein OpenCL-Framework eine Plattformschicht-API und eine Laufzeit-API bereit, die als Plattform-API 6003 und Laufzeit-API 6009 gezeigt sind. In mindestens einer Ausführungsform verwendet die Laufzeit-API 6009 Kontexte zur Verwaltung der Ausführung von Kerneln auf Vorrichtungen. In mindestens einer Ausführungsform kann jede identifizierte Vorrichtung einem jeweiligen Kontext zugeordnet sein, den die Laufzeit-API 6009 zur Verwaltung von Befehlswarteschlangen, Programmobjekten und Kernelobjekten, zur gemeinsamen Nutzung von Speicherobjekten usw. für diese Vorrichtung verwenden kann. In mindestens einer Ausführungsform legt die Plattform-API 6003 Funktionen offen, die es ermöglichen, Vorrichtungskontexte zu verwenden, um Vorrichtungen auszuwählen und zu initialisieren, Arbeit über Befehlswarteschlangen an Vorrichtungen zu übermitteln und die Datenübertragung zu und von Vorrichtungen zu ermöglichen, um nur einige Beispiele zu nennen. Darüber hinaus stellt das OpenCL-Framework in mindestens einer Ausführungsform verschiedene integrierte Funktionen (nicht dargestellt) bereit, einschließlich unter anderem mathematischer Funktionen, relationaler Funktionen und Bildverarbeitungsfunktionen.
  • In mindestens einer Ausführungsform ist im OpenCL-Framework 6005 auch ein Compiler 6004 beinhalten. Der Quellcode kann in mindestens einer Ausführungsform offline vor der Ausführung einer Anwendung oder online während der Ausführung einer Anwendung kompiliert werden. Im Gegensatz zu CUDA und ROCm können OpenCL-Anwendungen in mindestens einer Ausführungsform online durch den Compiler 6004 kompiliert werden, der beinhaltet ist, um repräsentativ für eine beliebige Anzahl von Compilern zu sein, die verwendet werden kann, um Quellcode und/oder IR-Code, wie etwa Portable Intermediate Representation („SPIR-V“)-Code, in Binärcode zu kompilieren. Alternativ dazu können in mindestens einer Ausführungsform OpenCL-Anwendungen vor der Ausführung solcher Anwendungen offline kompiliert werden.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 60 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 60 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 60 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 60 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 60 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 60 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 60 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 61 veranschaulicht Software, die durch eine Programmierplattform unterstützt wird, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist eine Programmierplattform 6104 so konfiguriert, dass sie verschiedene Programmiermodelle 6103, Middlewares und/oder Bibliotheken 6102 und Frameworks 6101 unterstützt, auf die sich eine Anwendung 6100 stützen kann. In mindestens einer Ausführungsform kann die Anwendung 6100 eine KI/ML-Anwendung sein, die beispielsweise unter Verwendung eines Deep-Learning-Frameworks wie MXNet, PyTorch oder TensorFlow implementiert ist, das sich auf Bibliotheken wie cuDNN, NVIDIA Collective Communications Library („NCCL“) und/oder NVIDA Developer Data Loading Library („DALI“) CUDA-Bibliotheken stützen kann, um eine beschleunigte Datenverarbeitung auf der zugrunde liegenden Hardware bereitzustellen.
  • In mindestens einer Ausführungsform kann die Programmierplattform 6104 eine der oben in Verbindung mit 58, 59 bzw. 60 beschriebenen CUDA-, ROCm- oder OpenCL-Plattformen sein. In mindestens einer Ausführungsform unterstützt die Programmierplattform 6104 mehrere Programmiermodelle 6103, bei denen es sich um Abstraktionen eines zugrundeliegenden Rechensystems handelt, die Ausdrücke von Algorithmen und Datenstrukturen ermöglichen. In mindestens einer Ausführungsform können die Programmiermodelle 6103 Merkmale der zugrunde liegenden Hardware offenlegen, um die Leistung zu verbessern. In mindestens einer Ausführungsform können die Programmiermodelle 6103 CUDA, HIP, OpenCL, C++ Accelerated Massive Parallelism („C++AMP“), Open Multi -Processing („OpenMP“), Open Accelerators („OpenACC“) und/oder Vulcan Compute beinhalten, sind aber nicht darauf beschränkt.
  • In mindestens einer Ausführungsform bieten Bibliotheken und/oder Middlewares 6102 Implementierungen von Abstraktionen von Programmiermodellen 6104. In mindestens einer Ausführungsform beinhalten solche Bibliotheken Daten und Programmiercode, die von Computerprogrammen verwendet und während der Softwareentwicklung genutzt werden können. In mindestens einer Ausführungsform beinhalten solche Middlewares Software, die Anwendungen Dienste bereitstellen, die über die von der Programmierplattform 6104 verfügbaren hinausgehen. In mindestens einer Ausführungsform können die Bibliotheken und/oder Middlewares 6102 cuBLAS, cuFFT, cuRAND und andere CUDA-Bibliotheken oder rocBLAS, rocFFT, rocRAND und andere ROCm-Bibliotheken beinhalten, sind aber nicht darauf beschränkt. Darüber hinaus können die Bibliotheken und/oder Middlewares 6102 in mindestens einer Ausführungsform NCCL- und ROCm Communication Collectives Library („RCCL“)-Bibliotheken, die Kommunikationsroutinen für GPU bereitstellen, eine MlOpen-Bibliothek für Deep Learning-Beschleunigung und/oder eine Eigen-Bibliothek für lineare Algebra, Matrix- und Vektoroperationen, geometrische Transformationen, numerische Solver und verwandte Algorithmen beinhalten.
  • In mindestens einer Ausführungsform hängen die Anwendungs-Frameworks 6101 von Bibliotheken und/oder Middlewares 6102 ab. In mindestens einer Ausführungsform ist jedes der Anwendungs-Frameworks 6101 ein Software-Framework, das zur Implementierung einer Standardstruktur von Anwendungssoftware verwendet wird. Eine KI/ML-Anwendung kann in mindestens einer Ausführungsform unter Verwendung eines Frameworks, wie etwa ein Caffe-, Caffe2-, TensorFlow-, Keras-, PyTorch- oder MxNet-Deep-Learning-Framework implementiert sein.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 61 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 61 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 61 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 61 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 61 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 61 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 61 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 62 veranschaulicht das Kompilieren von Code zum Ausführen auf einer der Programmierplattformen der 57-60 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform empfängt ein Compiler 6201 Quellcode 6200, der sowohl Host-Code als auch Vorrichtungscode beinhaltet. In mindestens einer Ausführungsform ist der Compiler 6201 so konfiguriert, dass er den Quellcode 6200 in einen vom Host ausführbaren Code 6202 zur Ausführung auf einem Host und einen von der Vorrichtung ausführbaren Code 6203 zur Ausführung auf einer Vorrichtung umwandelt. In mindestens einer Ausführungsform kann der Quellcode 6200 entweder offline vor der Ausführung einer Anwendung oder online während der Ausführung einer Anwendung kompiliert werden.
  • In mindestens einer Ausführungsform kann der Quellcode 6200 Code in einer beliebigen, vom Compiler 6201 unterstützten Programmiersprache beinhalten, z. B. C++, C, Fortran usw. In mindestens einer Ausführungsform kann der Quellcode 6200 in einer einzigen Quelldatei beinhalten sein, die eine Mischung aus Host-Code und Vorrichtungscode beinhaltet, wobei die Stellen des Vorrichtungscodes darin angegeben sind. In mindestens einer Ausführungsform kann eine Einzelquelldatei eine .cu-Datei, die CUDA-Code beinhaltet, oder eine .hip.cpp-Datei, die HIP-Code beinhaltet, sein. Alternativ kann in mindestens einer Ausführungsform der Quellcode 6200 mehrere Quellcodedateien anstelle einer einzigen Quellcodedatei beinhalten, in denen Host-Code und Vorrichtungscode getrennt sind.
  • In mindestens einer Ausführungsform ist der Compiler 6201 konfiguriert, um den Quellcode 6200 in den vom Host ausführbaren Code 6202 zur Ausführung auf einem Host und in den von der Vorrichtung ausführbaren Code 6203 zur Ausführung auf einer Vorrichtung zu kompilieren. In mindestens einer Ausführungsform führt der Compiler 6201 Operationen durch, beinhaltend Parsen von Quellcode 6200 in einen abstrakten Systembaum (AST), Durchführung von Optimierungen und Erzeugung von ausführbarem Code. In mindestens einer Ausführungsform, in der der Quellcode 6200 eine Einzelquelldatei beinhaltet, kann der Compiler 6201 den Vorrichtungscode von dem Host-Code in einer solchen Einzelquelldatei trennen, den Vorrichtungscode und den Host-Code in einen von der Vorrichtung ausführbaren Code 6203 bzw. einen vom Host ausführbaren Code 6202 kompilieren und den von der Vorrichtung ausführbaren Code 6203 und den vom Host ausführbaren Code 6202 miteinander in einer Einzeldatei verlinken
  • In mindestens einer Ausführungsform können der vom Host ausführbare Host 6202 und der von der Vorrichtung ausführbare Code 6203 in jedem geeigneten Format vorliegen, beispielsweise als Binärcode und/oder IR-Code. Im Falle von CUDA kann in mindestens einer Ausführungsform der vom Host ausführbare Code 6202 nativen Objektcode beinhalten und kann der von der Vorrichtung ausführbare Code 6203 Code in einer PTX-Zwischendarstellung beinhalten. Im Falle von ROCm kann sowohl der vom Host ausführbare Code 6202 als auch der von der Vorrichtung ausführbare Code 6203 in mindestens einer Ausführungsform Ziel-Binärcode beinhalten.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 62 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 62 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 62 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 62 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 62 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 62 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 62 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • RECHENVORRICHTUNGEN
  • 63 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird ein Multimediasystem als Spielsystem, Multimediakonsole, Spielkonsole und/oder Variationen davon bezeichnet. In mindestens einer Ausführungsform zeigt 63 veranschaulicht eine Gesamtsystemarchitektur einer Computerspiel-Verarbeitungsvorrichtung.
  • In mindestens einer Ausführungsform umfasst das Multimediasystem 6300 Grafikverarbeitungseinheiten (GPUs) 6302. In mindestens einer Ausführungsform erzeugt/erzeugen die GPU(s) 6302, optional in Verbindung mit der/den CPU(s) 6304, Videobilder und Audio zur Ausgabe über den Audio/Video(A/V)-Ausgang 6308. In mindestens einer Ausführungsform wird Audio in Verbindung mit oder stattdessen durch einen Audioprozessor erzeugt. In mindestens einer Ausführungsform verwenden die GPU(s) 6302 einen Videocodierer/Videocodec (z. B. Codierer/Decoder), um eine Videoverarbeitungspipeline für die Grafikverarbeitung zu bilden. In mindestens einer Ausführungsform werden Daten von GPU(s) 6302 an einen Videocodierer/Videocodec geliefert und an den A/V-Ausgang 6308 zur Übertragung an eine Anzeige ausgegeben. In mindestens einer Ausführungsform ist (sind) die GPU(s) 6302 mit einem oder mehreren Speichercontrollern verbunden, um den Zugriff auf verschiedene Arten von Speicher zu erleichtern, wie z. B. Direktzugriffsspeicher (RAM) 6306.
  • In mindestens einer Ausführungsform ist/sind die GPU(s) 6302 Teil einer Verarbeitungseinheit, die zentrale Verarbeitungseinheiten (CPUs) 6304 umfasst. In mindestens einer Ausführungsform sind die GPU(s) 6302 und die CPU(s) 6304 Teil einer beschleunigten Verarbeitungseinheit (APU). In mindestens einer Ausführungsform umfassen die CPU(s) 6304 mindestens einen Level-1-Cache, einen Level-2-Cache und einen Speicher. In mindestens einer Ausführungsform speichern ein Level-1-Cache und ein Level-2-Cache vorübergehend Daten und reduzieren eine Anzahl von Speicherzugriffszyklen. In mindestens einer Ausführungsform umfassen die CPU(s) 6304 mindestens einen oder mehrere Kerne und einen oder mehrere Level-Caches. In mindestens einer Ausführungsform speichert der Speicher der CPU(s) 6304 ausführbaren Code, der während eines Boot-Prozesses geladen wird, beispielsweise wenn das Multimediasystem 6300 eingeschaltet wird.
  • In mindestens einer Ausführungsform kommunizieren die GPU(s) 6302 und die CPU(s) 6304 mit dem Bus 6312, optional über die Eingabe/Ausgabe (E/A)-Brücke 6310, die eine diskrete Komponente oder ein Teil der GPU(s) 6302 und sein kann CPU(s) 6304. In mindestens einer Ausführungsform sind Datenspeicherkomponenten wie Systemspeicher 6326 und Eingabedaten 6328 mit Bus 6312 verbunden. In mindestens einer Ausführungsform kommuniziert RAM 6306 auch mit Bus 6312. In mindestens einer Ausführungsform sind Hilfsprozessor(en) 6324 mit Bus 6312 verbunden. In mindestens einer Ausführungsform werden Hilfsprozessor(en) 6324 bereitgestellt, um eine oder mehrere Software, Softwareanwendungen, Betriebssysteme und/oder Variationen davon auszuführen oder zu unterstützen, die in Verbindung mit dem Multimediasystem 6300 ausgeführt werden.
  • In mindestens einer Ausführungsform speichert der Systemspeicher 6326 Anwendungsdaten, die während eines Boot-Prozesses geladen werden. In mindestens einer Ausführungsform umfassen die Eingabedaten 6328 ein DVD/CD-Laufwerk, ein Bluray-Laufwerk, eine Festplatte oder ein anderes Wechselmedienlaufwerk. In mindestens einer Ausführungsform sind die Eingabedaten 6328 extern oder intern zum Multimediasystem 6300. In mindestens einer Ausführungsform wird auf Anwendungsdaten über Eingabedaten 6328 zur Ausführung, Wiedergabe und/oder Variationen davon zugegriffen. In mindestens einer Ausführungsform sind die Eingabedaten 6328 über den Bus 6312 mit der E/A-Brücke 6310 verbunden.
  • In mindestens einer Ausführungsform sind eine oder mehrere Komponenten des Multimediasystems 6300 über einen oder mehrere Busse verbunden, einschließlich serieller und paralleler Busse, eines Speicherbusses, eines Peripheriebusses und eines Prozessors oder lokalen Busses unter Verwendung verschiedener Busarchitekturen, wie z. B. Peripherie Components Interconnects (PCI)-Bus, PCI-Express-Bus und/oder Variationen davon. In mindestens einer Ausführungsform kommuniziert das Multimediasystem 6300 gegebenenfalls mit Peripheriegeräten über einen audio/visuellen (A/V) Eingabeport 6314, einen Ethernet-Port 6316, eine drahtlose Bluetooth-Verbindung 6318, eine drahtlose Wi-Fi-Verbindung 6320 oder eine oder mehrere universelle Serieller Bus (USB) Ports 6322. In mindestens einer Ausführungsform werden Audio und Video über die A/V-Ausgang 6308, wie z. B. einen HDMI-Anschluss, ausgegeben.
  • In mindestens einer Ausführungsform werden Video und optional Audio des Multimediasystems 6300 über den A/V-Ausgang 6308 an ein oder mehrere Anzeigegeräte ausgegeben. In mindestens einer Ausführungsform umfassen Anzeigevorrichtungen Vorrichtungen wie etwa einen Fernseher, eine elektronische Anzeige, einen Computermonitor und/oder Variationen davon. In mindestens einer Ausführungsform wird Video in verschiedenen Formen präsentiert, wie etwa stereoskopisch. In mindestens einer Ausführungsform wird Audio über ein oder mehrere Audiogeräte in einem einer Reihe von Formaten wie etwa Stereo, 5.1-Surround-Sound oder 7.1-Surround-Sound präsentiert. In mindestens einer Ausführungsform werden Video und Audio einer am Kopf befestigten Anzeigeeinheit präsentiert, wie z. B. eine Virtual-Reality-Vorrichtung, die von einem Benutzer getragen wird.
  • In mindestens einer Ausführungsform werden beim Booten des Multimediasystems 6300 Anwendungsdaten aus dem Systemspeicher 6326 in einen oder mehrere Speicher und/oder Caches der CPU(s) 6304 geladen und auf der/den CPU(s) 6304 ausgeführt. In mindestens einer Ausführungsform präsentiert eine Anwendung eine grafische Benutzeroberfläche, die eine Benutzererfahrung bereitstellt, wenn sie zu verschiedenen Diensten navigiert, die auf dem Multimediasystem 6300 verfügbar sind. In mindestens einer Ausführungsform werden Anwendungen, Medien und/oder Variationen davon der Eingabedaten 6328 gestartet oder von den Eingabedaten 6328 abgespielt, um dem Multimediasystem 6300 zusätzliche Funktionalitäten, Anwendungen, Medien und/oder Variationen davon bereitzustellen. In mindestens einer Ausführungsform ist das Multimediasystem 6300 dazu konfiguriert, ein ausführbares Programm, das einem Computerspiel zugeordnet ist, gemäß Anwendungsdaten aus dem Systemspeicher 6326 und Eingabedaten 6328 auszuführen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 63 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 63 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 63 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 63 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 63 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 63 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 63 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 64 veranschaulicht ein verteiltes System 6400 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet das verteilte System 6400 eine oder mehrere Client-Rechenvorrichtungen 6402, 6404, 6406 und 6408, die dazu konfiguriert sind, eine Client-Anwendung, wie etwa einen Webbrowser, einen proprietären Client und/oder Variationen davon, über ein oder mehrere Netzwerke 6410 auszuführen und zu betreiben. In mindestens einer Ausführungsform kann der Server 6412 über das Netzwerk 6410 kommunikativ mit entfernten Client-Rechenvorrichtungen 6402, 6404, 6406 und 6408 gekoppelt sein.
  • In mindestens einer Ausführungsform kann der Server 6412 ausgelegt sein, um einen oder mehrere Dienste oder eine oder mehrere Softwareanwendungen auszuführen, wie etwa Dienste und Anwendungen, die Sitzungsaktivitäten des Zugriffs mit einmaliger Anmeldung (SSO) über mehrere Rechenzentren hinweg verwalten können. In mindestens einer Ausführungsform kann der Server 6412 auch andere Dienste bereitstellen oder können Softwareanwendungen nicht virtuelle und virtuelle Umgebungen beinhalten. In mindestens einer Ausführungsform können diese Dienste Benutzern der Client-Rechenvorrichtungen 6402, 6404, 6406 und/oder 6408 als webbasierte oder Cloud-Dienste oder im Rahmen eines Software-as-a-Service (SaaS)-Modells angeboten werden. In mindestens einer Ausführungsform können Benutzer, die Client-Rechenvorrichtungen 6402, 6404, 6406 und/oder 6408 betreiben, wiederum eine oder mehrere Client-Anwendungen nutzen, um mit dem Server 6412 zu interagieren, um durch diese Komponenten bereitgestellte Dienste zu nutzen.
  • In mindestens einer Ausführungsform sind die Softwarekomponenten 6418, 6420 und 6422 des Systems 6400 auf dem Server 6412 implementiert. In mindestens einer Ausführungsform können eine oder mehrere Komponenten des Systems 6400 und/oder durch diese Komponenten bereitgestellte Dienste auch durch eine oder mehrere der Client-Rechenvorrichtungen 6402, 6404, 6406 und/oder 6408 implementiert sein. In mindestens einer Ausführungsform können Benutzer, die Client-Rechenvorrichtungen betreiben, dann eine oder mehrere Client-Anwendungen nutzen, um durch diese Komponenten bereitgestellte Dienste zu verwenden. In mindestens einer Ausführungsform können diese Komponenten in Hardware, Software, Firmware oder Kombinationen davon implementiert sein. Es versteht sich, dass verschiedene unterschiedliche Systemkonfigurationen möglich sind, die sich von dem verteilten System 6400 unterscheiden können. Die in 64 gezeigte Ausführungsform ist somit ein Beispiel eines verteilten Systems zum Implementieren einer Ausführungsform eines Systems und soll nicht einschränkend sein.
  • In mindestens einer Ausführungsform können die Client-Rechenvorrichtungen 6402, 6404, 6406 und/oder 6408 verschiedene Arten von Computersystemen beinhalten. In mindestens einer Ausführungsform kann eine Client-Rechenvorrichtung transportable Vorrichtungen (z. B. ein iPhone®, Mobiltelefon, ein iPad®, ein Computertablet, einen persönlichen digitalen Assistenten (PDA)) oder tragbare Vorrichtungen (z. B. ein Google Glass® mit am Kopf montierter Anzeige) beinhalten, auf denen Software wie Microsoft Windows Mobile® und/oder eine Vielzahl von mobilen Betriebssystemen wie iOS, Windows Phone, Android, BlackBerry 10, Palm OS und/oder Variationen davon ausgeführt wird. In mindestens einer Ausführungsform können Vorrichtungen verschiedene Anwendungen unterstützen, wie etwa verschiedene internetbezogene Anwendungen, E-Mail, Kurznachrichtendienst(SMS)-Anwendungen und können verschiedene andere Kommunikationsprotokolle verwenden. In mindestens einer Ausführungsform können Client-Rechenvorrichtungen auch Allzweck-Personal-Computer beinhalten, einschließlich, mittels eines Beispiels, Personal-Computer und/oder Laptop-Computer, auf denen verschiedene Versionen von Microsoft Windows®, Apple Macintosh® und/oder Linux-Betriebssysteme laufen. In mindestens einer Ausführungsform können Client-Rechenvorrichtungen Workstation-Computer sein, auf denen ein beliebiges von einer Vielzahl von kommerziell erhältlichen UNIX® oder UNIX-ähnlichen Betriebssystemen läuft, einschließlich ohne Einschränkung eine Vielzahl von GNU/Linux-Betriebssystemen, wie beispielsweise Google Chrome OS. In mindestens einer Ausführungsform können Client-Rechenvorrichtungen auch elektronische Vorrichtungen beinhalten, wie etwa einen Thin-Client-Computer, ein internetfähiges Spielsystem (z. B. eine Microsoft Xbox-Spielekonsole mit oder ohne Kinect®-Gesteneingabevorrichtung) und/oder eine persönliche Nachrichtenvorrichtung, die in der Lage ist, über Netzwerk(e) 6410 zu kommunizieren. Auch wenn das verteilte System 6400 in 64 mit vier Client-Rechenvorrichtungen dargestellt ist, kann eine beliebige Anzahl von Client-Rechenvorrichtungen unterstützt werden. Andere Vorrichtungen, wie etwa Vorrichtungen mit Sensoren usw., können mit dem Server 6412 interagieren.
  • In mindestens einer Ausführungsform kann/können das/die Netzwerk(e) 6410 in dem verteilten System 6400 jede Art von Netzwerk sein, das Datenkommunikationen unter Verwendung eines beliebigen einer Vielzahl von verfügbaren Protokollen unterstützen kann, einschließlich ohne Einschränkung TCP/IP (transmission control protocol/Internet protocol - Übertragungssteuerungsprotokoll/Internetprotokoll), SNA (Systemnetzwerkarchitektur), IPX (Internet Packet Exchange), AppleTalk und/oder Variationen davon. In mindestens einer Ausführungsform kann/können das/die Netzwerk(e) 6410 ein lokales Netzwerk (LAN), Netzwerke basierend auf Ethernet, Token-Ring, ein Weitverkehrsnetzwerk, Internet, ein virtuelles Netzwerk, ein virtuelles privates Netzwerk (VPN), ein Intranet, ein Extranet, ein öffentliches Telefonnetz (PSTN), ein Infrarotnetz, ein drahtloses Netzwerk (z. B. ein Netzwerk, das gemäß einem beliebigen von Institute of Electrical and Electronics (IEEE) 802.11 Protokollsuite, Bluetooth® und/oder einem beliebigen anderen drahtlosen Protokoll arbeitet) und/oder eine beliebige Kombination dieser und/oder anderer Netzwerke sein.
  • In mindestens einer Ausführungsform kann der Server 6412 aus einem oder mehreren Allzweckcomputern, spezialisierten Server-Computern (einschließlich mittels eines Beispiels PC(Personal Computer)-Servern, UNIX®-Servern, Midrange-Servern, Mainrahmen, Rack-montierten Servern usw.), Serverfarmen, Serverclustern oder jede andere geeignete Anordnung und/oder Kombination bestehen. In mindestens einer Ausführungsform kann der Server 6412 eine oder mehrere virtuelle Maschinen, auf denen virtuelle Betriebssysteme laufen, oder andere Rechenarchitekturen mit Virtualisierung beinhalten. In mindestens einer Ausführungsform können ein oder mehrere flexible Pools logischer Speichervorrichtungen virtualisiert werden, um virtuelle Speichervorrichtungen für einen Server zu verwalten. In mindestens einer Ausführungsform können virtuelle Netzwerke durch den Server 6412 unter Verwendung von softwaredefinierten Netzwerken gesteuert werden. In mindestens einer Ausführungsform kann der Server 6412 ausgelegt sein, um einen oder mehrere Dienste oder eine oder mehrere Softwareanwendungen auszuführen. In mindestens einer Ausführungsform umfasst der Server 6412 eine oder mehrere Hardware- und/oder Softwarekomponenten, die ein neuronales Netzwerk implementieren, wie es in Verbindung mit 65 - 69 beschrieben wurde. In mindestens einer Ausführungsform umfasst der Server 6412 ein oder mehrere neuronale Netzwerke, die als Deep-Learning-Supersampling-Netzwerke bezeichnet werden, die qualitativ hochwertige Versionen von Eingaberahmen erzeugen (z. B. gerenderte Rahmen eines Computergrafikprogramms, wie z. B. eines Videospiels Programm).
  • In mindestens einer Ausführungsform kann der Server 6412 ein beliebiges Betriebssystem sowie ein beliebiges im Handel erhältliches Server-Betriebssystem ausführen. In mindestens einer Ausführungsform kann der Server 6412 auch eine beliebige einer Vielzahl zusätzlicher Serveranwendungen und/oder Mid-Tier-Anwendungen ausführen, einschließlich HTTP-Server (Hypertext Transport Protocol), FTP-Server (File Transfer Protocol), CGI-Server (Common Gateway Interface), JAVA®-Server, Datenbankserver und/oder Variationen davon. In mindestens einer Ausführungsform beinhalten beispielhafte Datenbankserver ohne Einschränkung diejenigen, die im Handel von Oracle, Microsoft, Sybase, IBM (International Business Machines) erhältlich sind, und/oder Variationen davon.
  • In mindestens einer Ausführungsform kann der Server 6412 eine oder mehrere Anwendungen beinhalten, um Datenfeeds und/oder Ereignisaktualisierungen zu analysieren und zu konsolidieren, die von Benutzern der Client-Rechenvorrichtungen 6402, 6404, 6406 und 6408 empfangen werden. In mindestens einer Ausführungsform können Datenfeeds und/oder Ereignisaktualisierungen Twitter®-Feeds, Facebook®-Aktualisierungen oder Echtzeitaktualisierungen, die von einer oder mehreren Drittanbieter-Informationsquellen empfangen werden, und kontinuierliche Datenströme, die Echtzeitereignisse in Bezug auf Sensordatenanwendungen, Finanzticker, Netzwerkleistungsmesstools (z. B. Netzwerküberwachungs- und Verkehrsverwaltungsanwendungen), Clickstream-Analysetools, Automobilverkehrsüberwachung beinhalten können, und/oder Variationen davon beinhalten, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform kann der Server 6412 auch eine oder mehrere Anwendungen beinhalten, um Datenfeeds und/oder Ereignisaktualisierungen über eine oder mehrere Anzeigevorrichtungen der Client-Rechenvorrichtungen 6402, 6404, 6406 und 6408 anzuzeigen.
  • In mindestens einer Ausführungsform kann das verteilte System 6400 zudem eine oder mehrere Datenbanken 6414 und 6416 beinhalten. In mindestens einer Ausführungsform können Datenbanken einen Mechanismus zum Speichern von Informationen bereitstellen, wie etwa Benutzerinteraktionsinformationen, Nutzungsmusterinformationen, Anpassungsregelinformationen und andere Informationen. In mindestens einer Ausführungsform können sich die Datenbanken 6414 und 6416 an einer Vielzahl von Stellen befinden. In mindestens einer Ausführungsform können sich eine oder mehrere der Datenbanken 6414 und 6416 auf einem nichttransitorischen Speichermedium lokal auf (und/oder in) dem Server 6412 befinden. In mindestens einer Ausführungsform können die Datenbanken 6414 und 6416 vom Server 6412 entfernt sein und mit dem Server 6412 über eine netzwerkbasierte oder dedizierte Verbindung kommunizieren. In mindestens einer Ausführungsform können sich die Datenbanken 6414 und 6416 in einem Speicherbereichsnetzwerk (SAN) befinden. In mindestens einer Ausführungsform können alle erforderlichen Dateien zum Durchführen von Funktionen, die dem Server 6412 zugeschrieben werden, je nach Bedarf lokal auf dem Server 6412 und/oder entfernt gespeichert sein. In mindestens einer Ausführungsform können die Datenbanken 6414 und 6416 relationale Datenbanken beinhalten, wie etwa Datenbanken, die ausgelegt sind, um Daten als Reaktion auf SQL-formatierte Befehle zu speichern, zu aktualisieren und abzurufen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 64 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 64 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 64 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 64 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 64 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 64 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 64 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • NEURONALE SUPERSAMPLING-NETZWERKE
  • 65 veranschaulicht gemäß mindestens einer Ausführungsform ein Supersampling-Neuralnetzwerk. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6506 als neuronales Supersampling-Netzwerk, Deep-Learning-Supersampling(DLSS)-Netzwerk, Supersampling-Netzwerk und/oder Variationen davon bezeichnet. In mindestens einer Ausführungsform werden ein Eingaberahmen 6502 und Bewegungsvektoren 6504 von einem neuronalen Netzwerk 6506 verarbeitet, um einen Ausgaberahmen 6508 zu erzeugen. In mindestens einer Ausführungsform können neuronale Netze wie die in Verbindung mit 65 - 69 sind DLSS-Netzwerke.
  • In mindestens einer Ausführungsform ist ein Eingaberahmen 6502 ein Bild. In mindestens einer Ausführungsform ist ein Eingaberahmen 6502 ein computererzeugtes Bild, das durch ein oder mehrere Computergrafikprogramme oder -software erzeugt wird. In mindestens einer Ausführungsform ist ein Eingaberahmen 6502 ein Bild, das von einem oder mehreren Bilderfassungsgeräten, wie z. B. einer Kamera, erfasst wird. In mindestens einer Ausführungsform ist ein Eingaberahmen 6502 ein Rahmen eines Satzes von Rahmen eines Videos. In mindestens einer Ausführungsform ist ein Eingaberahmen 6502 ein Rahmen eines Videos, das von einer oder mehreren Videoaufnahmevorrichtungen, wie beispielsweise einer Videokamera, aufgenommen wird. In mindestens einer Ausführungsform ist ein Eingaberahmen 6502 ein Rahmen eines computergenerierten Videos, der von einem oder mehreren Computergrafikprogrammen oder -software erzeugt wird.
  • In mindestens einer Ausführungsform ist ein Eingaberahmen 6502 ein Rendering eines zweidimensionalen (2D) Modells. In mindestens einer Ausführungsform ist ein Eingaberahmen 6502 ein Rendering eines dreidimensionalen (3D) Modells. In mindestens einer Ausführungsform wird ein Eingaberahmen 6502 durch ein Render-Computerprogramm generiert, das ein Computerprogramm ist, das ausführbare Anweisungen umfasst, die, wenn sie ausgeführt werden, Bilder basierend zumindest teilweise auf einer Szene generieren. In mindestens einer Ausführungsform bezieht sich eine Szene auf ein 2D- oder 3D-Modell. In mindestens einer Ausführungsform wird eine Szene durch verschiedene Eigenschaften definiert, wie beispielsweise Geometrie, Blickwinkel, Textur, Beleuchtung, Schattierung und/oder Variationen davon. In mindestens einer Ausführungsform erhält ein Computerprogramm eine Szene und erzeugt ein Bild einer Szene durch die Verwendung eines oder mehrerer Rendering-Algorithmen. In mindes-tens einer Ausführungsform ist ein Eingaberahmen 6502 ein Bild, das durch Verwendung einer oder mehrerer Lichttransport-Modellierungstechniken erzeugt wird. In mindestens einer Ausführungsform wird ein Eingaberahmen 6502 durch eine oder mehrere Rasterisierungstechniken erzeugt. In mindestens einer Ausführungsform wird ein Eingaberahmen 6502 durch eine oder mehrere Raycasting-Techniken erzeugt. In mindestens einer Ausführungsform wird ein Eingaberahmen 6502 durch eine oder mehrere Verfolgungstechniken erzeugt.
  • In mindestens einer Ausführungsform ist ein Eingaberahmen 6502 ein Rahmen, der von einem Videospielprogramm erzeugt wird. In mindestens einer Ausführungsform wird ein Videospielprogramm von einem oder mehreren Computergeräten ausgeführt, die Grafikhardware umfassen, die Echtzeit-Computergrafiken erzeugt. In mindestens einer Ausführungsform ist ein Eingaberahmen 6502 ein Rahmen, der in Echtzeit erzeugt wird. In mindestens einer Ausführungsform ist ein Eingaberahmen 6502 ein Rahmen, der vorgerendert wird. In mindestens einer Ausführungsform ist ein Eingaberahmen 6502 ein Rahmen eines Videospiels, das auf einer oder mehreren Computergrafikanzeigehardware angezeigt wird, wie z. B. einem Videoanzeigegerät, einer mobilen Vorrichtung, einem Virtual-Reality-Headset und/oder Variationen davon. In mindestens einer Ausführungsform wird ein Videospielprogramm ausgeführt und erzeugt eine 3D-Szene, in der ein Eingabeframe 6502 ein Rendering einer 3D-Szene ist. In mindestens einer Ausführungsform ist ein Eingaberahmen 6502 ein Rahmen, der von einer Rendervorrichtung mit verschiedenen Hardware- und Softwarebeschränkungen gerendert wird, wie z. B. Grafikhardwarebeschränkungen, Speicherbeschränkungen und/oder Variationen davon.
  • In mindestens einer Ausführungsform ist ein neuronales Netzwerk 6506 ein neuronales Netzwerk, das einen Eingaberahmen erhält und einen Ausgaberahmen erzeugt. In mindestens einer Ausführungsform ist ein neuronales Netzwerk 6506 ein Convolutional Autoencoder-Netzwerk. In mindestens einer Ausführungsform ist ein neuronales Netzwerk 6506 ein neuronales Netzwerk, das eine Version eines Eingaberahmens mit höherer Qualität erzeugt. In mindestens einer Ausführungsform umfassen Qualitäten eines Rahmens Auflösung und Aliasing, wobei ein Rahmen hoher Qualität eine hohe Auflösung und minimales Aliasing aufweist. In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 6506 einen Eingaberahmen und erzeugt einen Ausgaberahmen mit einer höheren Auflösung und einem geringeren Aliasing als ein Eingaberahmen. In mindestens einer Ausführungsform verarbeitet ein neuronales Netzwerk 6506 Rahmen nahezu in Echtzeit. In mindestens einer Ausführungsform bezieht sich die Verarbeitung nahezu in Echtzeit auf eine Verarbeitung, bei der Eingaben innerhalb eines Zeitintervalls verarbeitet werden, aus dem Eingaben generiert werden. In mindestens einer Ausführungsform verarbeitet ein neuronales Netzwerk 6506 Eingaberahmen nahezu in Echtzeit, sodass Eingaberahmen innerhalb eines Zeitintervalls verarbeitet werden, in dem sie erzeugt und/oder gerendert werden. In mindestens einer Ausführungsform verarbeitet ein neuronales Netzwerk 6506 einen Eingaberahmen innerhalb eines Zeitintervalls in einen Ausgaberahmen, sodass Ausgaberahmen von Eingaberahmen mit minimaler Latenz verfügbar sind. In mindestens einer Ausführungsform bezieht sich minimale Latenz auf eine Latenz, die auf oder unter einem definierten Latenzzeitintervallschwellenwert liegt. In mindestens einer Ausführungsform sind Ausgaberahmen, die von Eingaberahmen mit minimaler Latenz verfügbar sind, innerhalb eines definierten Zeitintervalls verfügbar, das jeder geeignete Wert sein kann, wie etwa Sekunden, Bruchteile einer Sekunde und/oder Variationen davon. In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 6506 einen Rahmen eines Videospiels und erzeugt einen Ausgaberahmen mit hoher Auflösung und minimalem Aliasing. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6506 unter Verwendung verschiedener Trainingsmethoden für neuronale Netzwerke trainiert, wie sie in Verbindung mit 66 beschrieben wurden. In mindestens einer Ausführungsform werden Ausgaberahmen mit einer Rate erzeugt, die für einen Menschen als kontinuierliche Bewegung wahrgenommen werden kann, was sich auf Bildfrequenz über einem bestimmten Schwellenwert beziehen kann. In mindestens einer Ausführungsform werden Ausgaberahmen mit einer Zielrate von oder über 20 Rahmen pro Sekunde (fps) erzeugt, einschließlich oder nicht beschränkt auf 23,976 fps, 24 fps, 25 fps, 29,97 fps, 30 fps, 48 fps, 50 fps, 59,94 fps, 60 fps, 90 fps, 120 fps, 240 fps und jede andere angepeilite Bildfrequenz. In mindestens einer Ausführungsform kann es einem Rechnersystem an Rechenressourcen fehlen, um Rahmen mit hoher Qualität kontinuierlich mit einer Zielrahmenrate (z. B. 4k-Auflösung bei 60 fps) zu rendern und stattdessen Rahmen mit niedrigerer Auflösung zu rendern, die unter Verwendung des neuronalen Netzwerks 6506 superabgetastet werden Erreichen des Zielrahmens (z. B. Rendern einer 1080p-Auflösung bei 60 fps und Super-Sample auf 4k-Auflösung).
  • In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 6506 einen Eingaberahmen 6502. In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 6506 einen Eingaberahmen 6502 von einem Videospielprogramm, das auf einem oder mehreren Rechenvorrichtungen ausgeführt wird, wie etwa einer Videospielkonsole, einem Rechner, einer mobilen Vorrichtung und/oder Variationen davon. In mindestens einer Ausführungsform stellt ein Rechnerprogramm, wie etwa ein Videospielprogramm, Computergrafikprogramm, Renderprogramm und/oder Variationen davon, einen Eingaberahmen 6502 an ein neuronales Netzwerk 6506 über eine oder mehrere Schnittstellen bereit, wie etwa durch Übertragung ein oder mehrere Computernetzwerke, die über eine oder mehrere Datenübertragungsschnittstellen und/oder Variationen davon übertragen werden. In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 6506 einen Eingaberahmen 6502, der ein Bild ist, das von einem Videospielprogramm erzeugt wird. In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 6506 einen Eingaberahmen 6502 und zugeordnete Bewegungsvektoren 6504, die angeben, in welche Richtung sich Objekte in einer Szene (z. B. einer in einem Eingaberahmen 6502 abgebildeten Szene) bewegen. In mindestens einer Ausführungsform ist ein Bewegungsvektor ein Vektor, der eine Einheit in einem Rahmen darstellt, basierend auf einer Position einer Einheit in einem vorherigen Rahmen. In mindestens einer Ausführungsform gibt ein Bewegungsvektor eine Bewegung oder Bewegungsrichtung einer Einheit eines Rahmens einer Szene an. In mindestens einer Ausführungsform umfassen Bewegungsvektoren 6504 eine Sammlung von einem oder mehreren Bewegungsvektoren, die Bewegungen oder Bewegungsrichtungen von Entitäten und/oder Objekten eines Eingaberahmens 6502 anzeigen. In mindestens einer Ausführungsform erzeugt ein Programm wie etwa ein Videospielprogramm sowohl den Eingaberahmen 6502 als auch die Bewegungsvektoren 6504.
  • In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 6506 einen Eingaberahmen 6502 und Bewegungsvektoren 6504 und erzeugt einen Ausgaberahmen 6508. In mindestens einer Ausführungsform erzeugt ein neuronales Netzwerk 6506 einen Ausgaberahmen 6508 aus einem Eingaberahmen 6502 und/oder zugehörigen Bewegungsvektoren 6504. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6506 unter Verwendung einer hochqualitativen Version eines Eingaberahmens 6502 trainiert, wobei das trainierte neuronale Netzwerk 6506 einen Ausgaberahmen 6508 generiert, um mit einer hochqualitativen Version des Eingaberahmens 6502 übereinzustimmen. In mindestens einer Ausführungsform ist ein Ausgaberahmen 6508 eine hochskalierte/höher Auflösungsversion eines Eingaberahmens 6502. In mindestens einer Ausführungsform ist ein Ausgaberahmen 6508 eine höher aufgelöste Version eines Eingaberahmen 6502. In mindestens einer Ausführungsform weist ein Ausgaberahmen 6508 einen geringeren Aliasing-Grad als ein Eingaberahmen 6502 auf. In mindestens einer Ausführungsform ist ein Ausgaberahmen 6508 eine qualitativ bessere Darstellung eines Eingaberahmen 6502. In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 6506 ein Eingaberahmen 6502, bei dem es sich um ein Echtzeit-Rendering einer Szene eines Videospiels handelt, und zugehörige Bewegungsvektoren 6504, und erzeugt einen Ausgaberahmen 6508, bei dem es sich um eine qualitativ hochwertige Version eines Eingaberahmens 6502 handelt.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 65 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 65 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 65 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 65 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 65 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 65 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 65 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 66 veranschaulicht eine Architektur eines neuronalen Supersampling-Netzwerks gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6606 als neuronales Supersampling-Netzwerk, DLSS-Netzwerk, Supersampling-Netzwerk und/oder Variationen davon bezeichnet. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6606 trainiert, Ausgaberahmen 6608 aus Eingaberahmen 6602 und Bewegungsvektoren 6604 zu erzeugen. In mindestens einer Ausführungsform werden als Teil des Trainierens eines neuronalen Netzwerks 6606 Ausgaberahmens 6608, die von einem neuronalen Netzwerk 6606 erzeugt werden, mit Referenzrahmen 6610 verglichen, um das neuronale Netzwerk 6606 zu aktualisieren.
  • In mindestens einer Ausführungsform handelt es sich bei den Eingaberahmen 6602 um Eingaberahmen gemäß der Beschreibung in Verbindung mit 65. In mindestens einer Ausführungsform umfassen die Eingaberahmen 6602 ein oder mehrere Bilder, die als Rahmen bezeichnet werden. In mindestens einer Ausführungsform umfassen die Eingaberahmen 6602 ein oder mehrere Bilder, die von einer oder mehreren Bild- und/oder Videoaufnahmevorrichtungen aufgenommen wurden. In mindestens einer Ausführungsform umfassen Eingaberahmen 6602 ein oder mehrere Renderings einer Szene. In mindestens einer Ausführungsform umfassen Eingaberahmen 6602 Rahmen, die von einem Videospielprogramm erzeugt werden. In mindestens einer Ausführungsform wird ein Videospielprogramm von einem oder mehreren Computergeräten ausgeführt, die Grafikhardware umfassen, die Echtzeit-Computergrafiken erzeugt. In mindestens einer Ausführungsform sind die Eingaberahmen 6602 Rahmen, die vorgerendert werden. In mindestens einer Ausführungsform wird ein Videospielprogramm ausgeführt und erzeugt eine 3D-Szene, wobei die Eingaberahmen 6602 Renderings einer 3D-Szene umfassen. In mindestens einer Ausführungsform ist Eingaberahmen 6602 ein Rahmen, der von einer Rendervorrichtung mit verschiedenen Hardware- und Softwarebeschränkungen gerendert wird, wie z. B. Grafikhardwarebeschränkungen, Speicherbeschränkungen und/oder Variationen davon. In mindestens einer Ausführungsform sind Eingaberahmen 6602 Rahmen, die mit minimalen Nachbearbeitungstechniken gerendert werden, wie etwa Anti-Aliasing (z. B. umfassen Eingaberahmen 6602 Rahmen, die mit einem geringen oder keinem Grad an Anti-Aliasing gerendert werden).
  • In mindestens einer Ausführungsform umfassen Nachbearbeitungstechniken für gerenderte Rahmen Techniken und Effekte wie z. B.: Umgebungsverdeckung (z. B. horizontbasierte Umgebungsverdeckung (HBAO), Screen Space Ambient Occlusion (SSAO)), Anti-Aliasing (z. B. Fast Approximate Anti-Aliasing (FXAA), Super-Sample Anti-Aliasing (SSAA), Multi-Sampling Anti-Aliasing (MSAA), Temporal Anti-Aliasing (TXAA)), Bloom, Blur (z. B., Tiefenschärfe, Bewegungsunschärfe), Cel-Shading, chromatische Aberration, Farbkorrektur, Gammakorrektur, Rendering mit hohem Dynamikbereich, Partikeleffekte, Schattierung, Schattenabbildung, Schärfen, Entschärfen, Hochskalierung, Texturfilterung (z. B. punktuell, linear, bilinear, trilinear, anisotrop) und/oder Variationen davon. In mindestens einer Ausführungsform sind Eingaberahmen 6602 Rahmen, die mit wenig bis gar keinen Nachbearbeitungstechniken und/oder -effekten gerendert werden.
  • In mindestens einer Ausführungsform sind Bewegungsvektoren 6604 ein Set aus einem oder mehreren Vektoren, die Bewegungsrichtungen von Objekten von Rahmen von Eingaberahmen 6602 angeben. In mindestens einer Ausführungsform ist ein Bewegungsvektor ein Vektor, der eine Einheit in einem Rahmen darstellt, basierend auf einer Position einer Einheit in einem vorherigen Rahmen. In mindestens einer Ausführungsform gibt ein Bewegungsvektor eine Bewegung oder Bewegungsrichtung einer Einheit eines Rahmens einer Szene an. In mindestens einer Ausführungsform werden Bewegungsvektoren 6604 von einem Programm erzeugt, das Eingaberahmen 6602 gerendert hat und Eingaberahmen 6602 entspricht, in denen ein erster Satz von Bewegungsvektoren von Bewegungsvektoren 6604 einem ersten Rahmen von Eingaberahmen 6602 entspricht und Bewegung anzeigt von Objekten und/oder Einheiten, die in einem ersten Rahmen von Eingaberahmen 6602 dargestellt sind. In mindestens einer Ausführungsform entspricht ein erster Satz von Bewegungsvektoren von Bewegungsvektoren 6604 einem ersten Rahmen von Eingaberahmen 6602 und gibt die Bewegung von Objekten eines ersten Rahmen von Eingaberahmen 6602 an (z. B. Richtungen und/oder Orte, an denen sich Objekte befinden ein erster Rahmen von Eingaberahmen 6602 wird möglicherweise in einem nachfolgenden Rahmen von Eingaberahmen 6602 sein oder sich dorthin bewegen). In mindestens einer Ausführungsform umfassen Bewegungsvektoren 6604 Bewegungsvektoren, die von einem Videospielprogramm erzeugt werden. In mindestens einer Ausführungsform wird ein Videospielprogramm ausgeführt und erzeugt eine 3D-Szene, in der die Bewegungsvektoren 6604 Vektoren umfassen, die die Bewegung von Objekten und/oder Einheiten einer 3D-Szene angeben.
  • In mindestens einer Ausführungsform umfassen die Referenzrahmen 6610 ein oder mehrere Bilder, die als Rahmen bezeichnet werden. In mindestens einer Ausführungsform entsprechen Referenzrahmen 6610 Eingaberahmen 6602 (z. B. entspricht jeder Rahmen von Referenzrahmen 6610 einem Rahmen von Eingaberahmen 6602). In mindestens einer Ausführungsform umfassen Referenzrahmen 6610 ein oder mehrere Renderings einer Szene. In mindestens einer Ausführungsform umfassen Referenzrahmen 6610 Rahmen, die von einem Videospielprogramm erzeugt werden. In mindestens einer Ausführungsform sind Referenzrahmen 6610 Rahmen, die mit verschiedenen Nachbearbeitungstechniken und/oder -effekten gerendert werden. In mindestens einer Ausführungsform sind die Referenzrahmen 6610 höherwertige Versionen der Eingaberahmen 6602. In mindestens einer Ausführungsform wird ein erster Frame von Eingaberahmen 6602 aus einer Szene unter Verwendung von minimalen Nachbearbeitungstechniken und/oder -effekten gerendert, und ein erster Rahmen von Referenzrahmen 6610 wird aus derselben Szene unter Verwendung von Nachbearbeitungstechniken und/oder -effekten gerendert. In mindestens einer Ausführungsform sind Referenzrahmen 6610 Rahmen, die unter Verwendung von 64x Supersampling (64xSS) gerendert werden.
  • In mindestens einer Ausführungsform handelt es sich bei den Referenzrahmen 6610 um Rahmen, die von einem oder mehreren Supercomputern gerendert werden, wie sie in Verbindung mit 26 beschrieben sind. In mindestens einer Ausführungsform sind Eingaberahmen 6602 und Referenzrahmen 6610 Rahmen, die von derselben Computergrafikanwendung oder demselben Computergrafikprogramm (z. B. demselben Videospielprogramm) gerendert werden. In mindestens einer Ausführungsform werden Referenzrahmen 6610 und Bewegungsvektoren von einem oder mehreren Rendervorrichtung(en) erzeugt, in denen Eingaberahmen 6602 und Bewegungsvektoren 6604 aus erzeugten Referenzrahmen 6610 und Bewegungsvektoren durch einen oder mehrere Prozesse, wie z. B. Herunterskalierung, erhalten werden Referenzrahmen 6610 und/oder Bewegungsvektoren, um Eingaberahmen 6602 und Bewegungsvektoren 6604 zu erhalten, Entfernen einer oder mehrerer Nachbearbeitungstechniken und/oder -effekte von erzeugten Referenzrahmen 6610 und/oder Bewegungsvektoren, um Eingaberahmen 6602 und Bewegungsvektoren 6604 zu erhalten, und Variationen davon. In mindestens einer Ausführungsform erzeugen ein oder mehrere Rendervorrichtung(en) Eingaberahmen 6602, Bewegungsvektoren 6604 und/oder Referenzrahmen 6610 aus einer bestimmten Computergrafikanwendung oder einem Programm (z. B. einem Videospielprogramm).
  • In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6606 darauf trainiert, Eingaberahmen 6602 und Bewegungsvektoren 6604 zu verarbeiten und Ausgaberahmen 6608 zu erzeugen, die den entsprechenden Referenzrahmen 6610 sehr nahe kommen oder mit ihnen übereinstimmen. In mindestens einer Ausführungsform erzeugen und speichern eine oder mehrere Rendervorrichtungen über eine oder mehrere Computergrafikanwendungen oder -programme Eingaberahmen 6602, Bewegungsvektoren 6604 und Referenzrahmen 6610, wobei ein oder mehrere Systeme gespeicherte Eingaberahmen 6602, Bewegungsvektoren 6604 und Referenzrahmen 6610 abrufen, um ein neuronales Netzwerk 6606 zu trainieren. In mindestens einer Ausführungsform ist ein neuronales Netzwerk 6606 ein Convolutional Autoencoder-Netzwerk. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6606 unter Verwendung von Rahmen und/oder Bewegungsvektoren aus einer bestimmten Computergrafikanwendung oder einem bestimmten Computergrafikprogramm (z. B. einem Videospielprogramm) trainiert und ist verwendbar, um Rahmen für eine bestimmte Computergrafikanwendung oder ein bestimmtes Computergrafikprogramm zu erzeugen. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6606 darauf trainiert, qualitativ hochwertige Versionen von Eingaberahmen 6602 (z. B. hochskalierte/höher aufgelöste Rahmen, Anti-Aliasing-Rahmen) als Ausgaberahmen 6608 zu erzeugen. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6606 darauf trainiert, Rahmen von Eingaberahmens 6602 als Ausgaberahmens 6608 hochzuskalieren und zu antialiasieren. In mindestens einer Ausführungsform verwendet ein neuronales Netzwerk 6606 Bewegungsvektoren 6604 zum Erzeugen von Ausgaberahmen 6608. In mindestens einer Ausführungsform erzeugt ein neuronales Netzwerk 6606 einen ersten Ausgaberahmen von Ausgaberahmen 6608 aus Eingaberahmen 6602 und Bewegungsvektoren 6604, erzeugt einen zweiten Ausgaberahmen von Ausgaberahmen 6608 aus einem ersten Ausgaberahmen von Ausgaberahmen 6608, Eingaberahmen 6602, und Bewegungsvektoren 6604 und so weiter für nachfolgende Ausgaberahmen der Ausgaberahmen 6608. In mindestens einer Ausführungsform wendet ein neuronales Netzwerk 6606 Sätze von Bewegungsvektoren von Bewegungsvektoren 6604 auf Rahmen von Ausgaberahmen 6608 an, um nachfolgende Rahmen von Ausgaberahmen 6608 zu erzeugen. In mindestens einer Ausführungsform verwendet ein neuronales Netzwerk 6606 Bewegungsvektoren 6604 als Teil eines oder mehrerer zeitlicher Feedback-Prozesse, die Bewegungsvektoren auf Ausgaberahmen anwenden, um nachfolgende Ausgaberahmen zu erzeugen.
  • In mindestens einer Ausführungsform sind Ausgaberahmen 6608 höherwertige Versionen von Eingaberahmen 6602, die sich auf verschiedene Qualitäten beziehen können, wie etwa höhere Auflösung, höhere Grade verschiedener Nachbearbeitungstechniken und/oder Effekte und/oder Variationen davon. In mindestens einer Ausführungsform wird ein Videospielprogramm in Verbindung mit einer oder mehreren Computergrafikhardware ausgeführt, in der ein Rahmen gerendert und in ein neuronales Netzwerk 6606 eingegeben wird, in dem das neuronale Netzwerk 6606 einen entsprechenden Rahmen höherer Qualität (z. B. ein hochskalierter und/oder geglätteter Rahmen). In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6606 trainiert, Rahmen (z. B. Ausgaberahmen 6608) mit verschiedenen Nachbearbeitungstechniken und/oder Effekten aus Rahmen (z. B. Eingaberahmen 6602) mit minimalen Nachbearbeitungstechniken und/oder Effekten auszugeben. In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 6606 einen Rahmen und entsprechende Bewegungsvektoren, wie beispielsweise einen Rahmen und Bewegungsvektoren von Eingaberahmen 6602 bzw. Bewegungsvektoren 6604, und erzeugt einen entsprechenden Ausgaberahmen hoher Qualität, wie beispielsweise einen Rahmen von Ausgaberahmen 6608 (z. B. ein Rahmen mit verschiedenen Nachbearbeitungstechniken und/oder -effekten, wie etwa ein hochskalierter Rahmen, ein Anti-Aliasing-Rahmen, ein hochskalierter und Anti-Aliasing-Rahmen und/oder Variationen davon). In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 6606 einen Eingaberahmen (z. B. einen Rahmen von Eingaberahmen 6602), einen vorherigen Ausgaberahmen (z. B. einen zuvor erzeugten Ausgaberahmen von Ausgaberahmen 6608) und Bewegungsvektoren (z. B. Bewegung Vektoren von Bewegungsvektoren 6604) und erzeugt einen Ausgaberahmen (z. B. einen nachfolgenden Ausgaberahmen von Ausgaberahmen 6608).
  • In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6606 trainiert und/oder aktualisiert, indem generierte Ausgaberahmen 6608 mit Referenzrahmen 6610 verglichen werden. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6606 trainiert und verwendet, wie hierin mindestens in Verbindung mit 65 beschrieben. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6606 von einem oder mehreren Systemen trainiert oder anderweitig aktualisiert, die ein Trainings-Framework wie PyTorch, TensorFlow, Boost, Caffe, Microsoft Cognitive Toolkit/CNTK, MXNet, Chainer, Keras, Deeplearning4j oder ein anderes geeignetes Trainings-Framework verwenden. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6606 trainiert, indem Ausgaberahmens 6608 mit Referenzrahmen 6610 verglichen werden, Unterschiede zwischen Ausgaberahmens 6608 und Referenzrahmen 6610 bestimmt werden und ermittelte Unterschiede verwendet werden, um Gewichtungen und andere Komponenten des neuronalen Netzwerks 6606 zu aktualisieren, sodass Unterschiede zwischen Ausgaberahmen 6608 und Referenzrahmen 6610 minimiert werden.
  • In mindestens einer Ausführungsform wird das Training zumindest auf überwachte, teilweise überwachte und/oder nicht überwachte Weise durchgeführt. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6606 darauf trainiert, Eingaberahmen 6602 mit Referenzrahmen 6610 abzugleichen. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6606 durch ein oder mehrere System(e) trainiert, die das neuronale Netzwerk 6606 veranlassen, einen Ausgaberahmen von Ausgaberahmen 6608 aus einem Rahmen von Eingaberahmen 6602 zu erzeugen und eine Differenz zwischen einem Ausgaberahmen von Ausgaberahmen zu messen 6608 und einem entsprechenden Referenzrahmen 6610. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6606 von einem oder mehreren Systemen trainiert, die bewirken, dass das neuronale Netzwerk 6606 einen Rahmen von Eingaberahmen 6602 ermittelt und eine oder mehrere Operationen zur Bildverarbeitung/Erzeugung/Wiedergabe ausführt (z. B. neue Pixel erstellen, vorhandene Pixel modifizieren), um einen Ausgaberahmen von Ausgaberahmen 6608 zu erstellen, einen Ausgaberahmen von Ausgaberahmen 6608 mit einem entsprechenden Rahmen von Referenzrahmen 6610 zu vergleichen und Gewichte des neuronalen Netzwerks 6606 mindestens teilweise basierend auf einem Vergleich eines Ausgaberahmens von Ausgaberahmen 6608 mit einem entsprechenden Rahmen von Referenzrahmen 6610 anzupassen. In mindestens einer Ausführungsform wird ein Rahmen von Ausgaberahmen 6608 mit einem Rahmen von Referenzrahmen 6610 verglichen, indem Pixel beider Rahmen miteinander verglichen werden. In mindestens einer Ausführungsform werden Rahmen verglichen, indem Pixeleigenschaften von Rahmen verglichen werden (z. B. Pixelintensität, Pixelhelligkeit, Pixelfarbe, Pixelkontrast) und Unterschiede in Pixeleigenschaften gemessen werden (z. B. Unterschiede in Pixelintensität, Pixelhelligkeit, Pixelfarbe, Pixelkontrast zwischen Pixeln von Rahmen). In mindestens einer Ausführungsform wird ein neuronales Netz 6606 mit Hilfe eines oder mehrerer Backpropagation-Verfahren in Verbindung mit einer oder mehreren Verlustfunktionen trainiert. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6606 unter Verwendung verschiedener hierin beschriebener Techniken trainiert, wie z. B. der in Verbindung mit 24 beschriebenen.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 66 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 66 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 66 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 66 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 66 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 66 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 66 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 67 veranschaulicht ein Beispiel für Streaming unter Verwendung eines neuronalen Supersampling-Netzwerks gemäß mindestens einer Ausführungsform; In mindestens einer Ausführungsform verarbeitet ein neuronales Netzwerk 6708 Rahmen 6706, die von Rendervorrichtung(en) 6704 erzeugt wurden, um Ausgaberahmen 6710 zu erzeugen, die über Netzwerk(e) 6712 zu einer streamingfähigen Vorrichtung 6714 gestreamt werden. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6708 als DLSS-Netzwerk, neuronales Supersampling-Netzwerk, Supersampling-Netzwerk und/oder Variationen davon bezeichnet. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6708 mit Techniken trainiert, wie sie in Verbindung mit 66 beschrieben sind.
  • In mindestens einer Ausführungsform ist ein Server 6702 eine Sammlung von einer oder mehreren Computerhardware- und/oder Softwarekomponenten. In mindestens einer Ausführungsform stellt ein Server 6702 anderen Programmen oder Vorrichtungen, die als Clients bezeichnet werden, verschiedene Funktionen zur Verfügung. In mindestens einer Ausführungsform stellt ein Server 6702 Streaming-Dienste bereit. In mindestens einer Ausführungsform beziehen sich Streaming-Dienste auf Dienste, die einem Benutzer Streaming-Medien bereitstellen. In mindestens einer Ausführungsform beziehen sich Streaming-Medien auf Multimedia (z. B. Video, Audio), das ständig von einem Benutzer empfangen und einem Benutzer präsentiert wird, während es von einem Anbieter geliefert wird. In mindestens einer Ausführungsform stellt ein Server 6702 Streaming-Dienste bereit. In mindestens einer Ausführungsform stellt ein Server 6702 Dienste bereit, bei denen Rahmen eines Videospiels ständig von einem Benutzer empfangen und einem Benutzer präsentiert werden, während sie von einem Server 6702 geliefert/erzeugt werden. In mindestens einer Ausführungsform umfasst ein Server 6702 eine oder mehrere Rendervorrichtung(en) 6704. In mindestens einer Ausführungsform umfasst ein Server 6702 eine oder mehrere Hardware- und/oder Softwarekomponenten, die ein neuronales Netzwerk 6708 implementieren. In mindestens einer Ausführungsform umfasst ein Server 6702 eine oder mehrere Datenspeicherkomponenten (z. B. Festplatten), die eine Speicherung und Verarbeitung von Rahmen 6706 und Ausgaberahmen 6710 bereitstellen.
  • In mindestens einer Ausführungsform umfassen die Rendervorrichtung(en) 6704 eine oder mehrere Computergrafik-Rendering-Hardware- und/oder -softwarekomponenten. In mindestens einer Ausführungsform umfassen die Rendervorrichtung(en) 6704 eine oder mehrere Grafikverarbeitungseinheiten. In mindestens einer Ausführungsform umfassen die Rendervorrichtung(en) 6704 eine oder mehrere Rechenvorrichtungen, die Grafiken erzeugen und/oder rendern. In mindestens einer Ausführungsform umfassen die Wiedergabevorrichtung(en) 6704 eine oder mehrere Rechenvorrichtungen, die Wiedergaben von einem Videospiel erzeugen. In mindestens einer Ausführungsform rendern die Rendervorrichtung(en) 6704 Rahmen eines Videospiels oder eines anderen Computergrafikprogramms. In mindestens einer Ausführungsform rendern die Rendervorrichtung(en) 6704 unter Verwendung von Eingabedaten von einem Computergrafikprogramm (z. B. einem Videospielprogramm) den Rahmen bzw. die Rahmen 6706.
  • In mindestens einer Ausführungsform handelt es sich bei den Rahmen 6706 um Rahmen, die durch die Rendervorrichtung(en) 6704 gerendert werden. In mindestens einer Ausführungsform sind Rahmen 6706 Bewegungsvektoren zugeordnet, die Bewegungsrichtungen von Objekten von Rahmen 6706 anzeigen. In mindestens einer Ausführungsform werden Rahmen 6706 und zugeordnete Bewegungsvektoren von Renderivorrichtung(en) 6704 erzeugt. In mindestens einer Ausführungsform umfassen Rahmen 6706 Rahmen, die von einem bestimmten Videospielprogramm erzeugt werden. In mindestens einer Ausführungsform wird ein Videospielprogramm von einer oder mehreren Rechenvorrichtungen ausgeführt, die Grafikhardware (z. B. Rendervorrichtung(en) 6704) umfassen, die Echtzeit-Computergrafiken erstellen. In mindestens einer Ausführungsform wird ein Videospielprogramm ausgeführt, das eine 3D-Szene erzeugt, wobei Rahmen 6706 aus Renderings einer 3D-Szene bestehen. In mindestens einer Ausführungsform ist Eingaberahmen 6706 ein Rahmen, der von einer Rendervorrichtung mit verschiedenen Hardware- und Softwarebeschränkungen gerendert wird, wie z. B. Grafikhardwarebeschränkungen, Speicherbeschränkungen und/oder Variationen davon. In mindestens einer Ausführungsform sind Rahmen 6706 Rahmen, die mit minimalen Nachbearbeitungstechniken gerendert werden, wie etwa Anti-Aliasing (z. B. umfassen Rahmen 6706 Rahmen, die mit einem geringen oder keinem Grad an Anti-Aliasing gerendert werden).
  • In mindestens einer Ausführungsform umfasst ein neuronales Netzwerk 6708 ein oder mehrere neuronale Netzwerke, die Rahmen hoher Qualität aus Eingaberahmen erzeugen. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6708 unter Verwendung von Rahmen aus einer bestimmten Computergrafikanwendung oder einem bestimmten Computergrafikprogramm (z. B. einem Videospielprogramm) trainiert und ist verwendbar, um Rahmen für eine bestimmte Computergrafikanwendung oder ein bestimmtes Computergrafikprogramm zu erzeugen. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6708 so trainiert, dass es qualitativ hochwertige Versionen von Rahmen 6706 (z. B. hochskalierte Bilder/höher aufgelöste Rahmen, entzerrte Rahmen) erzeugt. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6708 darauf trainiert, Rahmen von Rahmen 6706 hochzuskalieren und Anti-Aliasing durchzuführen. In mindestens einer Ausführungsform wird ein Videospielprogramm in Verbindung mit einer oder mehreren Computergrafikhardware ausgeführt, in der ein Rahmen gerendert und in ein neuronales Netzwerk 6708 eingegeben wird (z. B. werden Rahmen 6706 durch Renderivorrichtung(en) gerendert 6704 und Eingabe in das neuronale Netzwerk 6708), in dem das neuronale Netzwerk 6708 einen entsprechenden Rahmen höherer Qualität (z. B. einen hochskalierten und/oder Anti-Aliasing-Rahmen) erzeugt. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6708 so trainiert, dass es Ausgaberahmen mit verschiedenen Nachbearbeitungstechniken und/oder Effekten von Rahmen mit minimalen Nachbearbeitungstechniken und/oder Effekten unterscheidet. In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 6708 einen Rahmen und entsprechende Bewegungsvektoren und erzeugt einen entsprechenden Ausgaberahmen hoher Qualität (z. B. einen Rahmen mit verschiedenen Nachbearbeitungstechniken und/oder -effekten, wie etwa einen hochskalierten Rahmen, einen Anti-Aliasing-Rahmen, ein hochskalierter und geglätteter Rahmen und/oder Variationen davon). In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 6708 Rahmen 6706 und Bewegungsvektoren und erzeugt Ausgaberahmen 6710. In mindestens einer Ausführungsform verwendet ein neuronales Netzwerk 6708 einen oder mehrere zeitliche Feedback-Prozesse, die Ausgaberahmen von Ausgaberahmen 6710 in Verbindung mit Rahmen 6706 und zugehörigen Bewegungsvektoren verarbeiten, um nachfolgende Rahmen von Ausgaberahmen 6710 zu erzeugen.
  • In mindestens einer Ausführungsform entspricht/entsprechen der/die Ausgaberahmen 6710 dem/den Rahmen 6706 (z. B. entspricht jeder Rahmen des/der Ausgaberahmen 6710 einem Rahmen des/der Rahmen 6706). In mindestens einer Ausführungsform sind Ausgaberahmen 6710 Rahmen, die mit verschiedenen Nachbearbeitungstechniken und/oder -effekten erzeugt werden. In mindestens einer Ausführungsform sind der/die Ausgaberahmen 6710 höherwertige Versionen von Rahmen 6706. In mindestens einer Ausführungsform umfassen der/die Ausgaberahmen 6710 hochskalierte (z. B. höhere Auflösung) und/oder geglättete Versionen von Rahmen 6706.
  • In mindestens einer Ausführungsform umfassen das/die Netzwerk(e) 6712 ein beliebiges geeignetes Computerkommunikationsnetzwerk, wie z. B. das Internet. In mindestens einer Ausführungsform sind das/die Netzwerk(e) 6712 kryptografisch geschützt, verschlüsselt oder anderweitig gesichert. In mindestens einer Ausführungsform umfassen das/die Netzwerk(e) 6712 einen oder mehrere Computernetzwerk-Kommunikationskanäle, in denen Daten gesendet und empfangen werden. In mindestens einer Ausführungsform stellen das/die Netzwerk(e) 6712 Verfahren zur Kommunikation zwischen einem Server 6702 und einer streamingfähigen Vorrichtung 6714 bereit. In mindestens einer Ausführungsform werden Ausgaberahmen 6710 von einem Server 6702 über Netzwerk(e) 6712 zu einer streamingfähigen Vorrichtung 6714 übertragen.
  • In mindestens einer Ausführungsform ist eine streamingfähige Vorrichtung 6714 eine Rechenvorrichtung, das in der Lage ist, Multimedia über ein oder mehrere Netzwerke zu empfangen. In mindestens einer Ausführungsform ist eine streamingfähige Vorrichtung 6714 eine Vorrichtung mit eingeschränkten Fähigkeiten zum Rendern von Grafiken, das keine Rahmen wie Ausgaberahmen 6710 rendern kann, aber über Netzwerk(e) 6712 auf einen Server 6702 zugreifen kann, um es zu erhalten Ausgaberahmen 6710. In mindestens einer Ausführungsform ist eine streamingfähige Vorrichtung 6714 eine streamingfähige Rechenvorrichtung, sodass das streamingfähige Vorrichtung 6714 verschiedene Hardware- und/oder Softwarekomponenten umfasst, die ständig Multimedia von einem oder mehreren Netzwerken empfangen und/oder erhalten. In mindestens einer Ausführungsform ist eine streamingfähige Vorrichtung 6714 eine Rechenvorrichtung wie etwa ein Mobiltelefon, ein Laptop, ein Rechner, eine Spielekonsole, ein Tablet und/oder Variationen davon. In mindestens einer Ausführungsform umfasst eine streamingfähige Vorrichtung 6714 eine oder mehrere Computernetzwerkkomponenten, wie z. B. verschiedene Empfänger, Sender und/oder Transceiver, die über ein oder mehrere Netzwerke übertragene Multimediadaten erhalten und verarbeiten. In mindestens einer Ausführungsform ist eine streamingfähige Vorrichtung 6714 von einem oder mehreren Benutzern bedienbar. In mindestens einer Ausführungsform empfängt eine streamingfähige Vorrichtung 6714 Ausgaberahmen 6710 über Netzwerk(e) 6712. In mindestens einer Ausführungsform empfängt eine streamingfähige Vorrichtung 6714 Ausgaberahmen 6710 in Verbindung mit einem oder mehreren Programmen, die auf der streamingfähigen Vorrichtung 6714 ausgeführt werden, die Ausgaberahmen 6710 anzeigen und/oder verarbeiten.
  • In mindestens einer Ausführungsform umfasst eine streamingfähige Vorrichtung 6714 ein oder mehrere Softwareprogramme und/oder Anwendungen, die den/die erhaltenen Ausgaberahmen 6710 verarbeitet/verarbeiten und den/die Ausgaberahmen 6710 bereitstellt/bereitstellen, um von einem oder mehreren Benutzern betrachtet (z. B. über eine elektronische visuelle Anzeige der streamingfähigen Vorrichtung 6714) und/oder mit ihnen interagiert zu werden (z. B. über verschiedene Benutzereingabehardware der streamingfähigen Vorrichtung 6714). In mindestens einer Ausführungsform umfasst ein streamingfähige Vorrichtung 6714 eine oder mehrere elektronische visuelle Anzeigehardware, wie z. B. eine Flüssigkristallanzeige (LCD), eine Leuchtdiodenanzeige (LED) und/oder Variationen davon, und einen oder mehrere Benutzer Eingabehardware, wie Computermaus, Tastatur, Gaming-Controller und/oder Variationen davon, die Benutzer verwenden, um mit einem oder mehreren Softwareprogrammen und/oder Anwendungen zu interagieren, die auf der streamingfähigen Vorrichtung 6714 ausgeführt werden. In mindestens einer Ausführungsform liefert ein streamingfähigen Vorrichtung 6714 Hinweise auf Benutzereingaben an einen Server 6702 über Netzwerke) 6712, in denen Rahmen 6706 von Rendervorrichtung(en) 6704 mindestens teilweise basierend auf dem Benutzer generiert werden Eingang.
  • In mindestens einer Ausführungsform wird ein Videospielprogramm auf einem Server 6702 ausgeführt, wobei Rahmen 6706 Rahmen eines Videospielprogramms sind, wobei Rahmen 6706 von Rendervorrichtung(en) 6704 gerendert und verarbeitet und als Ausgaberahmen 6710 an eine streamingfähige Vorrichtung 6714 übertragen werden, wobei ein Benutzer mit der streamingfähigen Vorrichtung 6714 in Verbindung mit dem/den Ausgaberahmen 6710 interagiert (z. B. Ausgaberahmen 6710 sind Rahmen eines Videospielprogramms, die eine Interaktion erfordern, bei denen ein Benutzer eine Interaktion in die streamingfähige Vorrichtung 6714 eingibt), wobei Benutzerinteraktionen an den Server 6702 zu einem Videospielprogramm übertragen werden, um zu bestimmen, wie nachfolgende Rahmen eines Videospielprogramms durch die Rendervorrichtung(en) 6704 gerendert werden sollen. In mindestens einer Ausführungsform werden Rahmen 6706 zumindest teilweise auf der Grundlage von Eingang eines Benutzers in Verbindung mit einer streamingfähigen Vorrichtung 6714 gerendert und von einem neuronalen Netz 6708 verarbeitet, um Ausgaberahmen 6710 zu erzeugen, wobei die Ausgaberahmen 6710 an die streamingfähige Vorrichtung 6714 übertragen werden, wobei weitere Benutzereingaben von der streamingfähigen Vorrichtung 6714 empfangen und an den Server 6702 übertragen werden, um nachfolgende Rahmen zu erzeugen, die dann vom neuronalen Netz 6708 verarbeitet und an die streamingfähige Vorrichtung 6714 übertragen werden, und so weiter für nachfolgende Rahmen und nachfolgende Benutzereingaben.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 67 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 67 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 67 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 67 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 67 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 67 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 67 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 68 veranschaulicht ein Beispiel für eine Simulation unter Verwendung eines neuronalen Supersampling-Netzwerks gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform verarbeitet ein neuronales Netz 6808 das/die von der/den Rendervorrichtung(en) 6804 erzeugte(n) Bild(er) 6806, um das/die Ausgabebild(er) 6810 zu erzeugen, die an die Simulatoranzeige(n) 6812 ausgegeben werden. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6808 als DLSS-Netzwerk, neuronales Supersampling-Netzwerk, Supersampling-Netzwerk und/oder Variationen davon bezeichnet. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6808 mit Techniken trainiert, wie sie in Verbindung mit 66 beschrieben sind.
  • In mindestens einer Ausführungsform umfasst ein Simulator 6802, der mit einem neuronalen Supersampling-Netzwerk ausgestattet ist, eine Sammlung von einer oder mehreren Computerhardware- und/oder - softwarekomponenten. In mindestens einer Ausführungsform umfasst ein Simulator 6802, der mit einem neuronalen Supersampling-Netzwerk ausgestattet ist, eine oder mehrere Rendervorrichtung(en) 6804. In mindestens einer Ausführungsform umfasst ein Simulator 6802, der mit einem neuronalen Supersampling-Netzwerk ausgestattet ist, eine oder mehrere Hardware- und/oder Softwarekomponenten, die ein neuronales Netzwerk 6808 implementieren. In mindestens einer Ausführungsform umfasst Simulator 6802, der mit einem neuronalen Supersampling-Netzwerk ausgestattet ist, eine oder mehrere Datenspeicherkomponenten (z. B. Festplatten), die eine Speicherung und Verarbeitung von Rahmen 6806 und Ausgaberahmens 6810 bereitstellen.
  • In mindestens einer Ausführungsform ist ein Simulator 6802, der mit einem neuronalen Supersampling-Netzwerk ausgestattet ist, eine Simulatorvorrichtung, wie z. B. ein Flugsimulator, ein Fahrsimulator und/oder Variationen davon, das verschiedene Simulatorprogramme ausführt, wie z. B. Flugsimulatorprogramme, Fahrsimulatorprogramme und/oder Variationen davon. In mindestens einer Ausführungsform ist ein Flugsimulator eine Vorrichtung, das den Flug eines Flugzeugs und eine Umgebung, in der es fliegt, künstlich nachbildet. In mindestens einer Ausführungsform simuliert ein Flugsimulator durch Ausführung eines Flugsimulatorprogramms verschiedene Flugaspekte, wie beispielsweise die Physik, wie Flugzeuge fliegen, wie Flugzeuge auf Anwendungen verschiedener Flugsteuerungen reagieren, Effekte anderer Flugzeugsysteme und Effekte von Faktoren wie Turbulenz, Luftdichte, Windscherung, Bewölkung, Niederschlag, Wetter und/oder Schwankungen davon in Flugzeugen. In mindestens einer Ausführungsform umfasst ein Flugsimulator (z. B. ein Simulator 6802, der mit einem neuronalen Supersampling-Neuralnetzwerk ausgestattet ist) eine oder mehrere Hardwarekomponenten, die ein Flugzeug simulieren, wie z. B. Hardware eines Cockpits eines Flugzeugs, die eine Benutzerinteraktion mit einem Flugsimulator ermöglichen (z. B. umfassen Hardwarekomponenten verschiedene Benutzereingabevorrichtungen, wie z. B. ein Lenkrad, eine Steuerung, einen Joystick, Knöpfe, Schalter, Hebel und/oder Variationen davon). In mindestens einer Ausführungsform umfasst ein Flugsimulator eine oder mehrere Anzeigen (z. B. Simulatoranzeige(n) 6812), mit denen Benutzer in Verbindung mit Hardware eines Flugsimulators interagieren, um verschiedene Flugaspekte zu simulieren. In mindestens einer Ausführungsform ist ein Fahrsimulator eine Vorrichtung, die die Bewegung eines Kraftfahrzeugs und eine Umgebung, in der es sich bewegt, künstlich nachbildet. In mindestens einer Ausführungsform simuliert ein Fahrsimulator durch Ausführen eines Fahrsimulatorprogramms verschiedene Aspekte des Betriebs eines Kraftfahrzeugs, wie beispielsweise die Physik eines Kraftfahrzeugs, wie ein Kraftfahrzeug auf Anwendungen verschiedener Kraftfahrzeugsteuerungen reagiert, Effekte von anderen Kraftfahrzeugsystemen und Auswirkungen von Faktoren wie Umweltveränderungen, Wind, Wetter und/oder Schwankungen davon auf Kraftfahrzeuge. In mindestens einer Ausführungsform umfasst ein Fahrsimulator (z. B. ein Simulator 6802, der mit einem neuronalen Supersampling-Netzwerk ausgestattet ist) eine oder mehrere Hardwarekomponenten, die ein Kraftfahrzeug simulieren, wie z. B. die Hardware eines Fahrersitzes eines Kraftfahrzeugs, die eine Benutzerinteraktion mit einem Fahrsimulator ermöglichen (z. B. umfassen die Hardwarekomponenten verschiedene Benutzereingabegeräte, wie ein Lenkrad, Pedale, einen Controller, einen Joystick, Tasten, Schalter, Hebel und/oder Variationen davon). In mindestens einer Ausführungsform umfasst ein Fahrsimulator eine oder mehrere Anzeigen (z. B. Simulatoranzeige(n) 6812), mit denen Benutzer in Verbindung mit Hardware eines Fahrsimulators interagieren, um verschiedene Aspekte des Fahrens oder eines anderen Kraftfahrzeugbetriebs zu simulieren. In mindestens einer Ausführungsform sind die Simulatoranzeige(n) 6812 Anzeigen eines Simulators 6802, der mit einem neuronalen Supersampling-Netzwerk ausgestattet ist.
  • In mindestens einer Ausführungsform umfassen die Rendervorrichtung(en) 6804 eine oder mehrere Computergrafik-Rendering-Hardware- und/oder -softwarekomponenten. In mindestens einer Ausführungsform umfassen die Rendervorrichtung(en) 6804 eine oder mehrere Grafikverarbeitungseinheiten. In mindestens einer Ausführungsform umfassen die Rendervorrichtung(en) 6804 eine oder mehrere Rechenvorrichtungen, die Grafiken erzeugen und/oder rendern. In mindestens einer Ausführungsform umfassen die Rendervorrichtung(en) 6804 eine oder mehrere Rechenvorrichtungen, die Wiedergaben von einem Computergrafikprogramm erzeugen, wie etwa einem Videospiel, einem Simulationsprogramm, einem Simulationsvideospiel und/oder Variationen davon. In mindestens einer Ausführungsform rendern die Rendervorrichtung(en) 6804 unter Verwendung von Eingabedaten von einem Computergrafikprogramm (z. B. einem Simulationsprogramm) den Rahmen bzw. die Rahmen 6806.
  • In mindestens einer Ausführungsform handelt es sich bei den Rahmen 6806 um Rahmen, die durch die Rendervorrichtung(en) 6804 gerendert werden. In mindestens einer Ausführungsform sind Rahmen 6806 Bewegungsvektoren zugeordnet, die Bewegungsrichtungen von Objekten von Rahmen 6806 anzeigen. In mindestens einer Ausführungsform werden Rahmen 6806 und zugeordnete Bewegungsvektoren von Renderivorrichtung(en) 6804 erzeugt. In mindestens einer Ausführungsform umfassen Rahmen 6806 Rahmen, die durch ein bestimmtes Simulationsprogramm erzeugt werden, wie etwa ein Flugsimulatorprogramm, ein Fahrsimulatorprogramm und/oder Variationen davon. In mindestens einer Ausführungsform wird ein Simulationsprogramm von einer oder mehreren Rechenvorrichtungen ausgeführt, die Grafikhardware umfassen (z.B. die Ausführungsform(en) 6804), die Computergrafiken in Echtzeit erstellt. In mindestens einer Ausführungsform wird ein Simulationsprogramm ausgeführt, das eine 3D-Szene erzeugt, wobei Rahmen 6806 aus Renderings einer 3D-Szene bestehen. In mindestens einer Ausführungsform sind Rahmen 6806 Rahmen, die mit minimalen Nachbearbeitungstechniken gerendert werden, wie etwa Anti-Aliasing (z. B. umfassen Rahmen 6806 Rahmen, die mit einem geringen oder keinem Grad an Anti-Aliasing gerendert werden).
  • In mindestens einer Ausführungsform umfasst ein neuronales Netzwerk 6808 ein oder mehrere neuronale Netzwerke, die Rahmen hoher Qualität aus Eingaberahmen erzeugen. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6808 unter Verwendung von Rahmen aus einer bestimmten Computergrafikanwendung oder einem bestimmten Computergrafikprogramm (z. B. einem Simulationsprogramm) trainiert und ist verwendbar, um Rahmen für eine bestimmte Computergrafikanwendung oder ein bestimmtes Computergrafikprogramm zu erzeugen. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6808 so trainiert, dass es qualitativ hochwertige Versionen von Rahmen 6806 (z. B. hochskalierte Bilder/höher aufgelöste Rahmen, entzerrte Rahmen) erzeugt. In mindestens einer Ausführungsform wird ein Simulationsprogramm in Verbindung mit einer oder mehreren Computergrafikhardware ausgeführt, in der ein Rahmen gerendert und in ein neuronales Netzwerk 6808 eingegeben wird (z. B. werden Rahmen 6806 durch Renderivorrichtung(en) gerendert 6804 und Eingabe in das neuronale Netzwerk 6808), in dem das neuronale Netzwerk 6808 einen entsprechenden Rahmen höherer Qualität (z. B. einen hochskalierten und/oder Anti-Aliasing-Rahmen) erzeugt. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6808 so trainiert, dass es Ausgaberahmen mit verschiedenen Nachbearbeitungstechniken und/oder Effekten von Rahmen mit minimalen Nachbearbeitungstechniken und/oder Effekten unterscheidet. In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 6808 einen Rahmen und entsprechende Bewegungsvektoren und erzeugt einen entsprechenden Ausgaberahmen hoher Qualität (z. B. einen Rahmen mit verschiedenen Nachbearbeitungstechniken und/oder -effekten, wie etwa einen hochskalierten/höher aufgelösten Rahmen, einen Anti-Aliasing-Rahmen, ein hochskalierter und geglätteter Rahmen und/oder Variationen davon). In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 6808 Rahmen 6806 und Bewegungsvektoren und erzeugt Ausgaberahmen 6810. In mindestens einer Ausführungsform verwendet ein neuronales Netzwerk 6808 einen oder mehrere zeitliche Feedback-Prozesse, die Ausgaberahmen von Ausgaberahmen 6810 in Verbindung mit Rahmen 6806 und zugehörigen Bewegungsvektoren verarbeiten, um nachfolgende Rahmen von Ausgaberahmen 6810 zu erzeugen.
  • In mindestens einer Ausführungsform entspricht/entsprechen der/die Ausgaberahmen 6810 dem/den Rahmen 6806 (z. B. entspricht jeder Rahmen des/der Ausgaberahmen(s) 6810 einem Rahmen des/der Rahmen(s) 6806). In mindestens einer Ausführungsform sind Ausgaberahmen 6810 Rahmen, die mit verschiedenen Nachbearbeitungstechniken und/oder -effekten erzeugt werden. In mindestens einer Ausführungsform sind der/die Ausgaberahmen 6810 höherwertige Versionen von Rahmen 6806. In mindestens einer Ausführungsform umfassen Ausgaberahmen 6810 hochskalierte und/oder geglättete Versionen von Rahmen 6806. In mindestens einer Ausführungsform werden die Ausgaberahmen 6810 auf der/den Simulatoranzeige(n) 6812 als Teil des Betriebs eines oder mehrerer Simulatoren angezeigt (z. B. ein Simulator 6802, der mit einem neuronalen Supersampling-Netzwerk ausgestattet ist), wie z. B. ein Flugsimulator, der ein Flugsimulatorprogramm ausführt, ein Fahrsimulator, der ein Fahrsimulatorprogramm ausführt, und/oder Variationen davon. In mindestens einer Ausführungsform bedient ein Benutzer einen Simulator 6802 mit neuronalem Supersampling-Netzwerk und führt eine oder mehrere Aktionen durch eine oder mehrere Benutzereingabevorrichtungen aus, basierend mindestens teilweise auf dem/den Ausgaberahmen 6810, der/die auf der Simulatoranzeige angezeigt wird(n) 6812.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 68 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 68 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 68 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 68 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 68 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 68 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 68 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 680, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • 69 veranschaulicht das Beispiel einer Vorrichtung unter Verwendung eines neuronalen Supersampling-Netzwerks gemäß mindestens einer Ausführungsform; In mindestens einer Ausführungsform verarbeitet ein neuronales Netzwerk 6906 Rahmen 6904, die von einem Multimediasystem 6902 erzeugt wurden, um Ausgaberahmen 6908 zu erzeugen, die an Multimediasystemanzeige(n) 6910 ausgegeben werden. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6906 als DLSS-Netzwerk, neuronales Supersampling-Netzwerk, Supersampling-Netzwerk und/oder Variationen davon bezeichnet. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6906 mit Techniken trainiert, wie sie in Verbindung mit 66 beschrieben sind.
  • In mindestens einer Ausführungsform ist ein Multimediasystem 6902 eine Sammlung von einer oder mehreren Computerhardware- und/oder Softwarekomponenten. In mindestens einer Ausführungsform umfasst ein Multimediasystem 6902 eine oder mehrere Rendervorrichtung(en). In mindestens einer Ausführungsform umfasst ein Multimediasystem 6902 eine oder mehrere Hardware- und/oder Softwarekomponenten, die ein neuronales Netzwerk 6906 implementieren. In mindestens einer Ausführungsform umfasst ein Multimediasystem 6902 eine oder mehrere Datenspeicherkomponenten (z. B. Festplatten), die für die Speicherung und Verarbeitung von Rahmen 6904 und Ausgaberahmen 6908 sorgen. In mindestens einer Ausführungsform handelt es sich bei dem Multimediasystem 6902 um eine Spielkonsole, wie sie in 63 beschrieben ist. In mindestens einer Ausführungsform ist ein Multimediasystem 6902 eine beliebige geeignete Rechenvorrichtung, die Multimedia verarbeitet, wie etwa ein Computer, ein Tablet, ein Spielgerät, eine Spielkonsole, ein mobiles Gerät und/oder Variationen davon. In mindestens einer Ausführungsform sind die Multimediasystemanzeige(n) 6910 eine oder mehrere elektronische visuelle Anzeigehardware, die Daten (z. B. Multimedia, Videospiele) von einem Multimediasystem 6902 anzeigen. In mindestens einer Ausführungsform sind die Multimediasystemanzeige(n) 6910 Anzeigen eines Multimediasystems 6902.
  • In mindestens einer Ausführungsform umfasst ein Multimediasystem 6902 eine oder mehrere Hardware- und/oder Softwarekomponenten zum Rendern von Computergrafiken. In mindestens einer Ausführungsform umfasst ein Multimediasystem 6902 eine oder mehrere Grafikverarbeitungseinheiten. In mindestens einer Ausführungsform umfasst ein Multimediasystem 6902 ein oder mehrere Rechenvorrichtungen, die Grafiken erzeugen und/oder wiedergeben. In mindestens einer Ausführungsform umfasst ein Multimediasystem 6902 einen oder mehrere Prozessoren, die verschiedene Programme ausführen, wie etwa Videospielprogramme, Softwareanwendungen, Softwareprogramme und/oder Variationen davon. In mindestens einer Ausführungsform umfasst ein Multimediasystem 6902 ein oder mehrere Rechenvorrichtungen, die Renderings von einem Computergrafikprogramm, wie z. B. einem Videospiel, erzeugen. In mindestens einer Ausführungsform rendert ein Multimediasystem 6902 unter Verwendung von Eingabedaten aus einem Computergrafikprogramm, das auf dem Multimediasystem 6902 ausgeführt wird (z. B. ein Videospielprogramm), Bild(er) 6904. In mindestens einer Ausführungsform umfasst ein Multimediasystem 6902 eine oder mehrere Hardwarekomponenten, die eine Benutzerinteraktion mit einem Multimediasystem 6902 ermöglichen (z. B. umfassen Hardwarekomponenten verschiedene Benutzereingabegeräte, wie z. B. Steuerungen, Joysticks, Knöpfe, Schalter, Hebel und/oder Variationen davon). In mindestens einer Ausführungsform ist ein Multimediasystem 6902 mit einem oder mehreren Benutzereingabegeräten verbunden, die es Benutzern ermöglichen, mit verschiedenen Programmen zu interagieren, die auf einem Multimediasystem 6902 (z. B. Videospielprogrammen) ausgeführt werden.
  • In mindestens einer Ausführungsform handelt es sich bei dem/den Rahmen 6904 um Bilder, die von einem Multimediasystem 6902 gerendert werden. In mindestens einer Ausführungsform sind Rahmen 6904 Bewegungsvektoren zugeordnet, die Bewegungsrichtungen von Objekten von Rahmen 6904 anzeigen. In mindestens einer Ausführungsform werden Rahmen 6904 und zugehörige Bewegungsvektoren von einem Multimediasystem 6902 generiert. In mindestens einer Ausführungsform umfassen Rahmen 6904 Rahmen, die von einem bestimmten Videospielprogramm erzeugt werden. In mindestens einer Ausführungsform wird ein Videospielprogramm von einer oder mehreren Rechenvorrichtungen ausgeführt, die eine Grafikhardware umfassen (z. B. ein Multimediasystem 6902), die Echtzeit-Computergrafiken erstellt. In mindestens einer Ausführungsform wird ein Videospielprogramm ausgeführt, das eine 3D-Szene erzeugt, wobei Rahmen 6904 aus Renderings einer 3D-Szene bestehen. In mindestens einer Ausführungsform sind Rahmen 6904 Rahmen, die mit minimalen Nachbearbeitungstechniken gerendert werden, wie etwa Anti-Aliasing (z. B. umfassen Rahmen 6904 Rahmen, die mit einem geringen oder keinem Grad an Anti-Aliasing gerendert werden).
  • In mindestens einer Ausführungsform umfasst ein neuronales Netzwerk 6906 ein oder mehrere neuronale Netzwerke, die Rahmen hoher Qualität aus Eingaberahmen erzeugen. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6906 unter Verwendung von Rahmen aus einer bestimmten Computergrafikanwendung oder einem bestimmten Computergrafikprogramm (z. B. einem Videospielprogramm) trainiert und ist verwendbar, um Rahmen für eine bestimmte Computergrafikanwendung oder ein bestimmtes Computergrafikprogramm zu erzeugen. In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6906 so trainiert, dass es qualitativ hochwertige Versionen von Rahmen 6904 (z. B. hochskalierte Bilder/höher aufgelöste Rahmen, entzerrte Rahmen) erzeugt. In mindestens einer Ausführungsform wird ein Videospielprogramm in Verbindung mit einer oder mehreren Computergrafik-Hardware(n) ausgeführt, wobei ein Rahmen gerendert und in ein neuronales Netzwerk 6906 eingegeben wird (z. B. werden Rahmen 6904 von einem Multimediasystem 6902 gerendert und in das neuronale Netzwerk 6906 eingegeben), wobei das neuronale Netzwerk 6906 einen entsprechenden Rahmen höherer Qualität erzeugt (z. B. einen hochskalierten Rahmen mit höherer Auflösung und/oder einen Rahmen mit Anti-Aliasing). In mindestens einer Ausführungsform wird ein neuronales Netzwerk 6906 so trainiert, dass es Ausgaberahmen mit verschiedenen Nachbearbeitungstechniken und/oder Effekten von Rahmen mit minimalen Nachbearbeitungstechniken und/oder Effekten unterscheidet. In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 6906 einen Rahmen und entsprechende Bewegungsvektoren und erzeugt einen entsprechenden Ausgaberahmen hoher Qualität (z. B. einen Rahmen mit verschiedenen Nachbearbeitungstechniken und/oder -effekten, wie etwa einen hochskalierten/höher aufgelösten Rahmen, einen Anti-Aliasing-Rahmen, ein hochskalierter und geglätteter Rahmen und/oder Variationen davon). In mindestens einer Ausführungsform erhält ein neuronales Netzwerk 6906 Rahmen 6904 und Bewegungsvektoren und erzeugt Ausgaberahmen 6908. In mindestens einer Ausführungsform verwendet ein neuronales Netzwerk 6906 einen oder mehrere zeitliche Feedback-Prozesse, die Ausgaberahmen von Ausgaberahmen 6908 in Verbindung mit Rahmen 6904 und zugehörigen Bewegungsvektoren verarbeiten, um nachfolgende Rahmen von Ausgaberahmen 6908 zu erzeugen.
  • In mindestens einer Ausführungsform entspricht/entsprechen der/die Ausgaberahmen 6908 dem/den Rahmen 6904 (z. B. entspricht jeder Rahmen des/der Ausgaberahmen 6908 einem Rahmen des/der Rahmen 6904). In mindestens einer Ausführungsform sind Ausgaberahmen 6908 Rahmen, die mit verschiedenen Nachbearbeitungstechniken und/oder -effekten erzeugt werden. In mindestens einer Ausführungsform sind der/die Ausgaberahmen 6908 höherwertige Versionen von Rahmen 6904. In mindestens einer Ausführungsform umfassen Ausgaberahmen 6908 hochskalierte und/oder geglättete Versionen von Rahmen 6904. In mindestens einer Ausführungsform erzeugt ein neuronales Netzwerk 6906 ständig Ausgaberahmen von Ausgaberahmen 6908, während Rahmen von Rahmen 6904 von einem Multimediasystem 6902 gerendert werden. In mindestens einer Ausführungsform werden Ausgaberahmen 6908 auf Multimediaanzeige(n) 6910 als Teil des Betriebs eines oder mehrerer Videospielprogramme angezeigt. In mindestens einer Ausführungsform bedient ein Benutzer ein Multimediasystem 6902 und führt über eine oder mehrere Benutzereingabevorrichtung(en) eine oder mehrere Aktionen aus, die zumindest teilweise auf (einem) Ausgaberahmen 6908 basieren, die auf (einem) Multimediaanzeigen(s) 6910 angezeigt werden.
  • In mindestens einer Ausführungsform können eine oder mehrere Komponenten der oben offenbarten Systeme und/oder Prozessoren Softwaremodule einschließen, die von einem Prozessor ausgeführt werden, wie beispielsweise ein Upscaler oder Upsampler zum Hochskalieren eines Bildes oder Rahmens, ein Image Blender oder Image Blender zum Überblenden, Mischen oder Hinzufügen von Bildern, ein Sampler zum Abtasten eines Bildes (z. B. als Teil eines DSP). In mindestens einer Ausführungsform schließen eine oder mehrere Komponenten der oben offenbarten Systeme und/oder Prozessoren eine Schaltung eines neuronalen Netzwerks ein, die einen Upscaler ausführt, um ein Bild hochzuskalieren (z. B. von einem Bild mit niedriger Auflösung auf ein Bild mit hoher Auflösung wie 1080p auf 4K).
  • In mindestens einer Ausführungsform können eine oder mehrere Komponenten der oben offenbarten Systeme und/oder Prozessoren mit einer oder mehreren CPUs, Kernen, Prozessorkernen, ASICs, GPUs, FPGAs oder anderer Hardware, Schaltlogik oder integrierten Schaltungskomponenten kommunizieren, um ein neuronales Netzwerk zu verwenden, Operationen eines neuronalen Netzwerks durchzuführen oder ein neuronales Netzwerk zum Hochskalieren eines Bildes mit niedrigerer Auflösung (LR) (z. B. 1080p) auf ein hochauflösendes (HR) Bild (z. B. 4K) hochzuskalieren, das als „Super-Auflösung (SR)“ Bild bezeichnet werden kann, weil es eine höhere Auflösung als das LR-Bild aufweist. In mindestens einer Ausführungsform kann jede der oben genannten Ausführungsformen verwendet werden, um ein Bild oder einen Rahmen von einer niedrigen oder niedrigeren Auflösung auf eine (z. B. gewünschte) Zielauflösung hochzuskalieren, die höher ist als die niedrige oder niedrigere Auflösung des Bildes oder Rahmens. Zum Beispiel kann ein SoC, das eine CPU und einen Beschleuniger (z. B. GPU) einschließt, die Hochskalierung eines Rahmens oder Bildes mit niedrigerer oder geringerer Auflösung ausführen, um ein Bild mit hoher Auflösung zu erstellen, wobei die CPU einige Operationen des neuronalen Netzwerks zur Hochskalierung des Bildes oder Rahmens an einen Beschleuniger (z. B. GPU) auslagern kann. In mindestens einer Ausführungsform können eine oder mehrere Komponenten von Systemen und/oder Prozessoren, die oben offenbart wurden, mit einer oder mehreren CPUs, ASICs, GPUs, FPGAs oder anderen Hardware-, Schaltlogik- oder integrierten Schaltungskomponenten kommunizieren, um ein neuronales Netzwerk zu verwenden oder Operationen eines neuronalen Netzwerks durchzuführen, um Videos von Sequenzen in HR zu rendern.
  • In mindestens einer Ausführungsform können eine oder mehrere Komponenten von Systemen und/oder Prozessoren, die oben offenbart wurden, mit einer oder mehreren CPUs, ASICs, GPUs, FPGAs oder anderen Hardware-, Schaltlogik- oder integrierten Schaltungskomponenten kommunizieren, um zeitliches Anti-Aliasing vor oder während des Upsamplings oder der Hochskalierung eines Bildes oder Rahmens auszuführen, z. B. wenn eine CPU und/oder GPU, die Anti-Aliasing Operationen ausführt, in eine Bildwiedergabe-Pipeline integriert ist. In mindestens einer Ausführungsform führen eine oder mehrere Komponenten der oben offenbarten Systeme und/oder Prozessoren eine API aus, die von VULKAN bereitgestellt und in einem Bildwiedergabeprozess verwendet wird. In mindestens einer Ausführungsform führen eine oder mehrere Komponenten der oben offenbarten Systeme und/oder Prozessoren eine Tonwertabbildung eines Bildes oder Rahmens mit geringerer Auflösung vor der Hochskalierung des Bildes oder Rahmens unter Verwendung eines neuronalen Netzwerks aus.
  • In mindestens einer Ausführungsform schließen eine oder mehrere Komponenten der oben offenbarten Systeme und/oder Prozessoren eine oder mehrere Matrix-Maschinen (z. B. Software, die von einem Prozessor oder Kern ausgeführt wird) ein, um Matrix-Operationen wie die Matrix-Multiplikation als Teil von Operationen des neuronalen Netzwerks zur Hochskalierung oder Hochabtastung eines Bildes zu berechnen oder auszuführen. In mindestens einer Ausführungsform schließen eine oder mehrere Komponenten der oben offenbarten Systeme und/oder Prozessoren eine oder mehrere Vektor-Maschinen ein (z. B. Software, die von einem Prozessor oder Kern ausgeführt wird), um Vektoroperationen wie Vektor-Multiplikation oder Vektor-Addition zu berechnen oder auszuführen. In mindestens einer Ausführungsform können Matrix-Maschinen und Vektor-Maschinen Teil eines Kerns eines Prozessors oder einer Rendering-Scheibe sein, wobei jeder Kern elektronisch mit einem Anweisungs-Cache, einem L1 -Cache und einer Last- und Speichereinheit (auch als „laden/speichern“ bezeichnet) gekoppelt ist.
  • In mindestens einer Ausführungsform führen eine oder mehrere Komponenten der oben offenbarten Systeme und/oder Prozessoren Operationen aus, um einem hochabgetasteten oder hochskalierten Bild Wirkungen hinzuzufügen. In mindestens einer Ausführungsform können die Wirkungen das Einführen von Rauschen, das Reduzieren von Rauschen, das Anwenden von chromatischen Effekten, das Anwenden von Aberrationseffekten, das Anwenden von Schattierungseffekten und/oder das Anwenden von anderen Effekten einschließen, um einen upgesampelten Rahmen oder ein Bild zu verändern.
  • In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 69 gezeigt oder beschrieben ist, verwendet, um Verfahren und/oder Funktionen durchzuführen, die in Verbindung mit 1-22 beschrieben sind. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 69 gezeigte oder beschriebene Komponente ausgeführt, um eine Anwendungsprogrammierschnittstelle (API) anzuzeigen, die die Verwendung eines oder mehrerer neuronaler Netzwerke zur Stützrahmeninterpolation unterstützt. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 69 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu ermöglichen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 69 gezeigte oder beschriebene Komponente dazu ausgeführt, eine Anwendungsprogrammierschnittstelle (API) zur Deaktivierung der Rahmeninterpolation zu verwenden, um ein oder mehrere neuronale Netzwerke zu verwenden. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 69 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 69 gezeigte oder beschriebene Komponente dazu verwendet, eine Anwendungsprogrammierschnittstelle (API) auszuführen, um die Rahmeninterpolation mit einem oder mehreren neuronalen Netzwerken durchzuführen. In mindestens einer Ausführungsform wird mindestens eine Komponente, die in Bezug auf 69 verwendet, um mindestens einen Aspekt auszuführen, der in Bezug auf das Beispieldiagramm 100, das Beispieldiagramm 200, den Beispielprozess 300, das Beispieldiagramm 400, das Beispieldiagramm 500, das Beispieldiagramm 600, das Beispieldiagramm 700, das Beispieldiagramm 800, das Beispieldiagramm 900, den Beispielprozess 1000, das Beispieldiagramm 1100, das Beispieldiagramm 1200, das Beispieldiagramm 1300, das Beispieldiagramm 1400, das Beispieldiagramm 1500, das Beispieldiagramm 1600, das Beispieldiagramm 1700, das Beispieldiagramm 1800, das Beispieldiagramm 1900, das Beispieldiagramm 2000, den Beispielprozess 2100, das Beispieldiagramm 2200 und/oder andere hierin beschriebene Systeme, Verfahren oder Operationen beschrieben ist.
  • Mindestens eine Ausführungsform der Offenbarung kann mit Blick auf die folgenden Klauseln beschrieben werden:
    1. 1. Prozessor, umfassend:
      • eine oder mehrere Schaltungen, die eine Anwendungsprogrammierschnittstelle (API) ausführen, um die Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke durchzuführen.
    2. 2. Prozessor nach Klausel 1, wobei die API einen oder mehrere Eingabewerte empfängt, die eine oder mehrere Grafikverarbeitungseinheiten (GPUs) angeben, von denen die Rahmeninterpolation ausgeführt werden soll.
    3. 3. Prozessor nach Klausel 1 oder 2, wobei die API einen oder mehrere Eingabewerte empfängt, die eine optimale Rendergröße angeben, die zum Ausführen der Rahmeninterpolation verwendet werden kann.
    4. 4. Prozessor nach einer der Klauseln 1 bis 3, wobei die API einen oder mehrere Eingabewerte empfängt, die eine Ziel-Rendergröße angeben, die zum Ausführen der Rahmeninterpolation verwendet werden kann.
    5. 5. Prozessor nach einer der Klauseln 1 bis 4, wobei die API einen oder mehrere Eingabewerte empfängt, die eine Renderqualität angeben, die zum Ausführen der Rahmeninterpolation geeignet ist.
    6. 6. Prozessor nach einer der Klauseln 1 bis 5, wobei die API einen oder mehrere Eingabewerte empfängt, die ein oder mehrere Merkmalsflags angeben, die zur Durchführung der Rahmeninterpolation verwendet werden können.
    7. 7. Prozessor nach einer der Klauseln 1 bis 6, wobei die API nach dem Ausführen einer zweiten API ausgeführt wird, um die Unterstützung für die Rahmeninterpolation anzuzeigen.
    8. 8. Computerimplementiertes Verfahren, umfassend:
      • Ausführen einer Anwendungsprogrammierschnittstelle (API), um zu veranlassen, dass die Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke ausgeführt wird.
    9. 9. Computerimplementiertes Verfahren nach Klausel 8, wobei die API einen oder mehrere Eingabewerte empfängt, die einen oder mehrere Prozessoren angeben, von denen die Rahmeninterpolation ausgeführt werden soll.
    10. 10. Computerimplementiertes Verfahren nach Klausel 8 oder 9, wobei die API einen oder mehrere Eingabewerte empfängt, die eine optimale Rendergröße angeben, die zum Ausführen der Rahmeninterpolation verwendet werden kann.
    11. 11. Computerimplementiertes Verfahren nach einer der Klauseln 8 bis 10, wobei die API einen oder mehrere Eingabewerte empfängt, die eine Ziel-Rendergröße angeben, die zum Ausführen der Rahmeninterpolation verwendet werden kann.
    12. 12. Computerimplementiertes Verfahren nach einer der Klauseln 8 bis 11, wobei die API einen oder mehrere Eingabewerte empfängt, die eine Renderqualität angeben, die zum Ausführen der Rahmeninterpolation geeignet ist.
    13. 13. Computerimplementiertes Verfahren nach einer der Klauseln 8 bis 12, wobei die API einen oder mehrere Eingabewerte empfängt, die ein oder mehrere Merkmalsflags angeben, die zur Durchführung der Rahmeninterpolation verwendet werden können.
    14. 14. Computerimplementiertes Verfahren nach einer der Klauseln 8 bis 13, wobei die API einen oder mehrere Eingabewerte empfängt, die von einer zweiten API ermittelt wurden, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen.
    15. 15. Computersystem, umfassend:
      • einen oder mehrere Prozessoren und einen Speicher, der ausführbare Anweisungen speichert, die, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, eine Anwendungsprogrammierschnittstelle (API) ausführen, um eine Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu veranlassen.
    16. 16. Computersystem nach Klausel 15, wobei die API einen oder mehrere Eingabewerte empfängt, die eine oder mehrere Grafikverarbeitungseinheiten (GPUs) angeben, von denen die Rahmeninterpolation ausgeführt werden soll.
    17. 17. Computersystem nach Klausel 15 oder 16, wobei die API einen oder mehrere Eingabewerte empfängt, die eine optimale Rendergröße angeben, die zum Ausführen der Rahmeninterpolation verwendet werden kann.
    18. 18. Computersystem nach einer der Klauseln 15 bis 17, wobei die API einen oder mehrere Eingabewerte empfängt, wobei die API einen oder mehrere Eingaberahmen empfängt, die eine Ziel-Rendergröße angeben, die zum Ausführen der Rahmeninterpolation verwendet werden kann.
    19. 19. Computersystem nach einer der Klauseln 15 bis 18, wobei die API einen oder mehrere Eingabewerte empfängt, die eine Renderqualität angeben, die zum Ausführen der Rahmeninterpolation geeignet ist.
    20. 20. Computersystem nach einer der Klauseln 15 bis 19, wobei die API einen oder mehrere Eingabewerte empfängt, die ein oder mehrere Merkmalsflags angeben, die zur Durchführung der Rahmeninterpolation verwendet werden können.
  • Bei mindestens einer Ausführungsform kann eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung oder einen derartigen Chip verweisen. 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 29, sind Computerprogramme in Form von maschinenlesbarem ausführbarem Code oder Computersteuerlogik-Algorithmen in dem Hauptspeicher 2904 und/oder Sekundärspeicher gespeichert. Bei Ausführung durch einen oder mehrere Prozessoren ermöglichen es Computerprogramme dem System 2900, verschiedene Funktionen gemäß mindestens einer Ausführungsform durchzuführen. In mindestens einer Ausführungsform sind der Arbeitsspeicher 2904, der Datenspeicher und/oder ein beliebiger anderer Datenspeicher mögliche Beispiele für computerlesbare Medien. In mindestens einer Ausführungsform kann sich der Sekundärspeicher auf ein(e) beliebige(s) geeignete(s) Speichervorrichtung oder -system beziehen, wie etwa ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Compact-Disk-Laufwerk, ein Digital-Versatile-Disk-(„DVD“-)Laufwerk, eine Aufzeichnungsvorrichtung, einen Universal-Serial-Bus-(„USB“-)Flash-Speicher usw. darstellt. In mindestens einer Ausführungsform werden die Architektur und/oder die Funktionalität verschiedener vorheriger Figuren im Kontext der CPU 2902, des Parallelverarbeitungssystems 2912, einer integrierten Schaltung, die mindestens zu einem Teil der Fähigkeiten sowohl der CPU 2902 als auch des Parallelverarbeitungssystems 2912 in der Lage ist, eines Chipsatzes (z. B. einer Gruppe integrierter Schaltungen, die so ausgestaltet ist, dass sie als Einheit zum Durchführen verwandter Funktionen arbeitet und verkauft wird, usw.) und/oder einer beliebigen geeigneten Kombination integrierter Schaltung(en) implementiert.
  • In mindestens einer Ausführungsform werden die Architektur und/oder die Funktionalität verschiedener vorhergehender Figuren im Kontext eines allgemeinen Computersystems, eines Leiterplattensystems, eines für Unterhaltungszwecke dedizierten Spielekonsolensystems, eines anwendungsspezifischen Systems und anderer implementiert. In mindestens einer Ausführungsform kann das Computersystem 2900 die Form eines Desktop-Computers, eines Laptop-Computers, eines Tablet-Computers, von Servern, Supercomputern, eines Smartphones (z. B. einer drahtlosen tragbaren Vorrichtung), eines persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, eines Fahrzeugs, einer am Kopf befestigten Anzeige, einer elektronischen tragbaren Vorrichtung, einer Mobiltelefonvorrichtung, eines Fernsehgeräts, einer Arbeitsstation, von Spielkonsolen, eines eingebetteten Systems und/oder einer beliebigen anderen Art von Logik annehmen.
  • In mindestens einer Ausführungsform beinhaltet das Parallelverarbeitungssystem 2912 ohne Einschränkung eine Vielzahl von Parallelverarbeitungseinheiten („PPUs“) 2914 und zugehörige Speicher 2916. In mindestens einer Ausführungsform sind die PPUs 2914 mit einem Hostprozessor oder anderen peripheren Vorrichtungen über eine Zusammenschaltung 2918 und einen Schalter 2920 oder Multiplexer verbunden. In mindestens einer Ausführungsform verteilt das Parallelverarbeitungssystem 2912 Rechenaufgaben auf PPUs 2914, 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 2914 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 2914 residenten Registern nach sich ziehen kann. In mindestens einer Ausführungsform wird der Betrieb der PPUs 2914 durch Verwendung eines Befehls wie _syncthreads() synchronisiert, wobei alle Threads in einem Block (z. B. über mehrere PPUs 2914 ausgeführt) einen bestimmten Punkt der Codeausführung erreichen müssen, bevor sie fortfahren.
  • Andere Varianten liegen im Geist 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 Begriffs „Satz“ (z. B. „ein Satz von Objekten“) oder „Untersatz“, sofern nicht anders angegeben oder durch den Kontext widerlegt, als eine nicht leere Ansammlung zu verstehen, die ein oder mehrere Mitglieder umfasst. 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 jeder geeigneten Reihenfolge durchgeführt werden, sofern es hier nicht anders angegeben ist oder der Kontext dem anderweitig eindeutig widerspricht. In mindestens einer Ausführungsform wird ein Prozess, wie etwa die hierin beschriebenen Prozesse (oder Variationen und/oder Kombinationen davon), unter der Steuerung von einem oder mehreren Computersystemen durchgeführt, die mit ausführbaren Anweisungen konfiguriert sind, und er ist als Code (z. B. ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen), der zusammen auf einem oder mehreren Prozessoren ausgeführt wird, durch Hardware oder Kombinationen davon implementiert. In mindestens einer Ausführungsform ist Code auf einem computerlesbaren Speichermedium gespeichert, zum Beispiel in Form eines Computerprogramms, das eine Vielzahl von Anweisungen umfasst, die durch einen oder mehrere Prozessoren ausgeführt werden können. In mindestens einer Ausführungsform ist ein computerlesbares Speichermedium ein nichttransitorisches computerlesbares Speichermedium, das transitorische Signale (z. B. eine sich ausbreitende transiente elektrische oder elektromagnetische Übertragung) ausschließt, aber nichttransitorische Datenspeicherschaltungen (z. B. Puffer, Cache und Warteschlangen) innerhalb von Sendeempfängern von transitorischen Signalen einschließt. In mindestens einer Ausführungsform ist der Code (z. B. ausführbarer Code oder Quellcode) auf einem Satz von einem oder mehreren nichttransitorischen computerlesbaren Speichermedien gespeichert, auf denen ausführbare Anweisungen gespeichert sind (oder einem anderen Speicher zum Speichern ausführbarer Anweisungen), die bei Ausführung (d. h. als Ergebnis der Ausführung) durch einen oder mehrere Prozessoren eines Computersystems das Computersystem dazu veranlassen, hierin beschriebene Operationen durchzuführen. Ein Satz von nichttransitorischen computerlesbaren Speichermedien umfasst in mindestens einer Ausführungsform mehrere nichttransitorische computerlesbare Speichermedien und einem oder mehreren der einzelnen nichttransitorischen Speichermedien mehrerer nichttransitorischer computerlesbarer Speichermedien fehlt der gesamte Code, während mehrere nichttransitorische computerlesbare Speichermedien zusammen den gesamten Code speichern. In mindestens einer Ausführungsform werden 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.
  • Dementsprechend sind in mindestens einer Ausführungsform Computersysteme so konfiguriert, dass sie einen oder mehrere Dienste implementieren, die einzeln oder zusammen Operationen der hierin beschriebenen Prozesse durchführen, und derartige Computersysteme sind mit geeigneter Hardware und/oder Software konfiguriert, die eine Durchführung der Operationen ermöglichen. Ferner ist ein Computersystem, das mindestens eine Ausführungsform der vorliegenden Offenbarung implementiert, eine einzelne Vorrichtung und in einer anderen Ausführungsform ein verteiltes Computersystem, das mehrere Vorrichtungen umfasst, die unterschiedlich arbeiten, sodass das verteilte Computersystem die hierin beschriebenen Operationen durchführt und sodass eine einzelne Vorrichtung nicht alle Operationen durchführt.
  • Die Verwendung jeglicher und aller Beispiele oder beispielhafter Wortwahl (z. B. „wie etwa“), die hierin bereitgestellt ist, soll lediglich die Ausführungsformen der Offenbarung besser verdeutlichen und stellt keine Einschränkung des Umfangs der Offenbarung dar, es sei denn, es ist etwas anderes beansprucht. Keinerlei Wortwahl in der Beschreibung sollte so ausgelegt werden, dass sie ein beliebiges nicht beanspruchtes Element als für die Umsetzung der Offenbarung wesentlich angibt.
  • Jegliche Referenzen, einschließlich Veröffentlichungen, Patentanmeldungen und Patenten, die hierin erwähnt werden, sind hiermit durch Bezugnahme in demselben Maße aufgenommen, als wäre jede Referenz einzeln und spezifisch als durch Referenz eingeschlossen angegeben und in ihrer Gesamtheit hierin ausgeführt.
  • In der Beschreibung und den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen verwendet werden. Es versteht sich, dass diese Ausdrücke nicht als Synonyme füreinander beabsichtigt sein können. Vielmehr kann in konkreten Beispielen „verbunden“ oder „gekoppelt“ verwendet werden, um anzugeben, dass zwei oder mehr Elemente in direktem oder indirektem physischem oder elektrischem Kontakt miteinander stehen. Mit „gekoppelt“ kann auch gemeint sein, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, jedoch trotzdem miteinander zusammenwirken oder interagieren.
  • Sofern nicht ausdrücklich anders angegeben, versteht es sich, dass sich Begriffe wie „Verarbeitung“, „Berechnung“, „Berechnen“, „Bestimmen“ oder dergleichen in der gesamten Beschreibung auf Handlungen und/oder Prozesse eines Computers oder Rechensystems oder einer ähnlichen elektronischen Rechenvorrichtung, die Daten, die als physische, z. B. elektronische, Größen in den Registern und/oder Speichern des Rechensystems dargestellt sind, manipulieren und/oder in andere Daten umwandeln, die auf ähnliche Weise als physische Größen in den Speichern, Registern oder anderen derartigen Informationsspeicher-, -übertragungs- oder -anzeigevorrichtungen des Rechensystems dargestellt sind.
  • Auf ähnliche Weise kann sich der Ausdruck „Prozessor“ auf eine beliebige Vorrichtung oder einen beliebigen Abschnitt einer Vorrichtung beziehen, die/der elektronische Daten aus Registern und/oder Speicher verarbeitet und diese elektronischen Daten in andere elektronische Daten umwandelt, die in Registern und/oder Speicher gespeichert werden können. Als nicht einschränkende Beispiele kann der „Prozessor“ eine CPU oder eine GPU sein. Eine „Rechenplattform“ kann einen oder mehrere Prozessoren umfassen. Wie hierin verwendet, können „Software“-Prozesse zum Beispiel Software- und/oder Hardware-Entitäten beinhalten, die im Verlauf der Zeit Arbeit verrichten, wie etwa Tasks, Threads und intelligente Agenten. Außerdem kann sich jeder Prozess auf mehrere Prozesse beziehen, um Anweisungen nacheinander oder parallel, kontinuierlich oder intermittierend auszuführen. In mindestens einer Ausführungsform werden die Ausdrücke „System“ und „Verfahren“ hierin insofern austauschbar verwendet, dass ein System ein oder mehrere Verfahren verkörpern kann und die Verfahren als System betrachtet werden können.
  • Im vorliegenden Dokument kann auf das 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 die Beschreibungen hierin Beispielimplementierungen der beschriebenen Techniken darlegen, können auch andere Architekturen verwendet werden, um die beschriebenen Funktionen zu implementieren, und sind im Rahmen 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 in für Strukturmerkmale und/oder Verfahrenshandlungen spezifischer Sprache beschrieben wurde, versteht es sich ferner, dass der in den beigefügten Ansprüchen beanspruchte Gegenstand nicht unbedingt auf die beschriebenen spezifischen Merkmale oder Handlungen beschränkt ist. Vielmehr werden spezifische Merkmale und Handlungen als beispielhafte Formen zum Implementieren der Ansprüche offenbart.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 63/408469 [0001]
    • US 17/949104 [0001]
    • US 17/949099 [0001]
    • US 17/949124 [0001]
    • US 17/949156 [0001]
    • US 17/949138 [0001]
    • US 17/949125 [0001]
    • US 17/949153 [0001]
    • US 17/949115 [0001]
    • US 17/949166 [0001]
    • US 17/949135 [0001]
    • US 18/106963 [0001]
    • US 18/106964 [0001]
    • US 18106966 [0001]

    Claims (20)

    1. Prozessor, umfassend: eine oder mehrere Schaltungen, die eine Anwendungsprogrammierschnittstelle ausführen, um die Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke auszuführen.
    2. Prozessor nach Anspruch 1, wobei die API einen oder mehrere Eingabewerte empfängt, die eine oder mehrere Grafikverarbeitungseinheiten (GPUs) angeben, von denen die Rahmeninterpolation ausgeführt werden soll.
    3. Prozessor nach Anspruch 1 oder 2, wobei die API einen oder mehrere Eingabewerte empfängt, die eine optimale Rendergröße angeben, die zum Ausführen der Rahmeninterpolation verwendet werden kann.
    4. Prozessor nach einem der vorstehenden Ansprüche, wobei die API einen oder mehrere Eingabewerte empfängt, die eine Ziel-Rendergröße angeben, die zum Ausführen der Rahmeninterpolation verwendet werden kann.
    5. Prozessor nach einem der vorstehenden Ansprüche, wobei die API einen oder mehrere Eingabewerte empfängt, die eine Renderqualität angeben, die zum Ausführen der Rahmeninterpolation geeignet ist.
    6. Prozessor nach einem der vorstehenden Ansprüche, wobei die API einen oder mehrere Eingabewerte empfängt, die ein oder mehrere Merkmalsflags angeben, die zur Ausführung der Rahmeninterpolation verwendet werden können.
    7. Prozessor nach einem der vorstehenden Ansprüche, wobei die API nach dem Ausführen einer zweiten API ausgeführt wird, um die Unterstützung zum Ausführen der Rahmeninterpolation anzuzeigen.
    8. Computerimplementiertes Verfahren, umfassend: Ausführen einer Anwendungsprogrammierschnittstelle, um die Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke auszuführen.
    9. Computerimplementiertes Verfahren nach Anspruch 8, wobei die API einen oder mehrere Eingabewerte empfangen soll, die einen oder mehrere Prozessoren angeben, von denen die Rahmeninterpolation ausgeführt werden soll.
    10. Computerimplementiertes Verfahren nach Anspruch 8 oder 9, wobei die API einen oder mehrere Eingabewerte empfängt, die eine optimale Rendergröße angeben, die zum Ausführen der Rahmeninterpolation verwendet werden kann.
    11. Computerimplementiertes Verfahren nach einem der Ansprüche 8 bis 10, wobei die API einen oder mehrere Eingabewerte empfängt, die eine Ziel-Rendergröße angeben, die zum Ausführen der Rahmeninterpolation verwendet werden kann.
    12. Computerimplementiertes Verfahren nach einem der Ansprüche 8 bis 11, wobei die API einen oder mehrere Eingabewerte empfängt, die eine Renderqualität angeben, die zum Ausführen der Rahmeninterpolation verwendet werden kann.
    13. Computerimplementiertes Verfahren nach einem der Ansprüche 8 bis 12, wobei die API einen oder mehrere Eingabewerte empfängt, die ein oder mehrere Merkmalsflags anzeigen, die zum Ausführen der Rahmeninterpolation verwendet werden können.
    14. Computerimplementiertes Verfahren nach einem der Ansprüche 8 bis 13, wobei die API einen oder mehrere Eingabewerte empfängt, die von einer zweiten API ermittelt wurden, um Informationen zur Rahmengröße unter Verwendung eines oder mehrerer neuronaler Netzwerke anzuzeigen.
    15. Computersystem, umfassend: einen oder mehrere Prozessoren und Speicher, die ausführbare Anweisungen speichern, die, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, eine Anwendungsprogrammierschnittstelle ausführen, um die Rahmeninterpolation unter Verwendung eines oder mehrerer neuronaler Netzwerke zu veranlassen.
    16. Computersystem nach Anspruch 15, wobei die API einen oder mehrere Eingabewerte empfangen soll, die eine oder mehrere grafische Verarbeitungseinheiten (GPUs) angeben, von denen die Rahmeninterpolation ausgeführt werden kann.
    17. Computersystem nach Anspruch 15 oder 16 wobei die API einen oder mehrere Eingabewerte empfängt, die eine optimale Rendergröße angeben, die zum Ausführen der Rahmeninterpolation verwendet werden kann.
    18. Computersystem nach einem der Ansprüche 15 bis 17, wobei die API einen oder mehrere Eingabewerte empfängt, die eine Ziel-Rendergröße angeben, die zum Ausführen der Rahmeninterpolation verwendet werden kann.
    19. Computersystem nach einem der Ansprüche 15 bis 18, wobei die API einen oder mehrere Eingabewerte empfängt, die eine Renderqualität angeben, die zum Ausführen der Rahmeninterpolation verwendet werden kann.
    20. Computersystem nach einem der Ansprüche 15 bis 19, wobei die API einen oder mehrere Eingabewerte empfängt, die ein oder mehrere Merkmalsflags angeben, die zur Ausführung der Rahmeninterpolation verwendet werden können.
    DE102023125014.0A 2022-09-20 2023-09-15 Anwendungsprogrammierschnittstelle zum ausführen der rahmeninterpolation Pending DE102023125014A1 (de)

    Applications Claiming Priority (4)

    Application Number Priority Date Filing Date Title
    US202263408469P 2022-09-20 2022-09-20
    US63/408,469 2022-09-20
    US18/106,974 2023-02-07
    US18/106,974 US20240095097A1 (en) 2022-09-20 2023-02-07 Application programming interface to cause performance of frame interpolation

    Publications (1)

    Publication Number Publication Date
    DE102023125014A1 true DE102023125014A1 (de) 2024-03-21

    Family

    ID=90062358

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE102023125014.0A Pending DE102023125014A1 (de) 2022-09-20 2023-09-15 Anwendungsprogrammierschnittstelle zum ausführen der rahmeninterpolation

    Country Status (2)

    Country Link
    US (1) US20240095097A1 (de)
    DE (1) DE102023125014A1 (de)

    Families Citing this family (1)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US20230154101A1 (en) * 2021-11-16 2023-05-18 Disney Enterprises, Inc. Techniques for multi-view neural object modeling

    Also Published As

    Publication number Publication date
    US20240095097A1 (en) 2024-03-21

    Similar Documents

    Publication Publication Date Title
    DE112021002830T5 (de) Erzeugung von bildern von virtuellen umgebungen unter verwendung eines oder mehrerer neuronaler netzwerke
    DE112021002631T5 (de) Bilderzeugung unter verwendung eines oder mehrerer neuronaler netzwerke
    DE102021119857A1 (de) Erzeugung von ansichten unter verwendung eines oder mehrerer neuronaler netzwerke
    DE112021002772T5 (de) Bilderzeugung unter verwendung eines oder mehrerer neuronaler netzwerke
    DE112022000559T5 (de) Ansichtserzeugung unter verwendung von einem oder mehreren neuronalen netzwerken
    DE102022101555A1 (de) Bildsynthese unter verwendung eines oder mehrerer neuronaler netzwerke
    DE112021002657T5 (de) Bilderzeugung unter verwendung eines oder mehrerer neuronaler netzwerke
    DE112021004543T5 (de) Bilderzeugung unter verwendung eines oder mehrerer neuronaler netzwerke
    DE102021206615A1 (de) Charakterisierung von anomalien unter verwendung eines oder mehrerer neuronaler netzwerke
    DE112022000993T5 (de) Bestimmen eines oder mehrerer neuronaler netze zur objektklassifizierung
    DE102021112107A1 (de) Reaktionsvorhersage unter verwendung eines oder mehrerer neuronaler netzwerke
    DE102021128623A1 (de) Hochskalierung eines bilds unter verwendung eines oder mehrerer neuronaler netzwerke
    DE102022114520A1 (de) Pixel-blending zur bilderzeugung basierend auf neuronalen netzwerken
    DE112022000397T5 (de) Objektklassifizierung unter verwendung eines oder mehrerer neuronaler netze
    DE102022113807A1 (de) Räumlich-zeitliche masken für rauschen und sampling unter verwendung von vektoren für bildverarbeitungs- und lichttransport-simulationssysteme und -anwendungen
    DE102021128962A1 (de) Bildmischung unter verwendung eines oder mehrerer neuronaler netzwerke
    DE112021000174T5 (de) Upsampling eines bildes unter verwendung eines oder mehrerer neuronaler netze
    DE102021122615A1 (de) Bildverbesserung unter verwendung eines oder mehrerer neuronaler netzwerke
    DE112021000999T5 (de) Bilderzeugung unter verwendung eines oder mehrerer neuronaler netzwerke
    DE102023125014A1 (de) Anwendungsprogrammierschnittstelle zum ausführen der rahmeninterpolation
    DE102023125188A1 (de) Überblenden von videorahmen
    DE112021002496T5 (de) Bilderzeugung unter verwendung eines oder mehrerer neuronaler netzwerke
    DE102023102679A1 (de) Berechnung des optischen flusses mittels semiglobalem abgleich
    DE102022131119A1 (de) Zeitliches bildmischen unter verwendung eines oder mehrerer neuronaler netzwerke
    DE112022002881T5 (de) Bedingte Bildgenerierung unter Verwendung eines oder mehrerer neuronaler Netzwerke

    Legal Events

    Date Code Title Description
    R012 Request for examination validly filed
    R082 Change of representative

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