DE102023129956A1 - Ressourcenvorhersage für arbeitslasten - Google Patents

Ressourcenvorhersage für arbeitslasten Download PDF

Info

Publication number
DE102023129956A1
DE102023129956A1 DE102023129956.5A DE102023129956A DE102023129956A1 DE 102023129956 A1 DE102023129956 A1 DE 102023129956A1 DE 102023129956 A DE102023129956 A DE 102023129956A DE 102023129956 A1 DE102023129956 A1 DE 102023129956A1
Authority
DE
Germany
Prior art keywords
resources
workloads
data
network
data center
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
DE102023129956.5A
Other languages
English (en)
Inventor
Rohit Taneja
Siddha Ganju
Kash Krishna
Brian Carpenter
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 DE102023129956A1 publication Critical patent/DE102023129956A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5019Workload prediction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/505Clust

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

Es werden Vorrichtungen, Systeme und Techniken zur Verwendung eines oder mehrerer neuronaler Netze zur Vorhersage einer oder mehrerer Rechenressourcen zum Durchführen einer oder mehrerer Arbeitslasten beschrieben.

Description

  • GEBIET
  • Diese Anwendung betrifft Rechenzentren, insbesondere die effiziente Zuweisung von Rechenzentrumsknoten zu Arbeitslasten.
  • ALLGEMEINER STAND DER TECHNIK
  • Wenn Kunden Ressourcendienste von einem Cloud-Dienstanbieter (cloud service provider - CSP) für eine Arbeitslast erwerben, muss der Kunde manuell auswählen, welche Ressourcen er benötigt und wie viele der Ressourcen er benötigt. Häufig kennen die Kunden jedoch die Ressourcenanforderungen ihrer Arbeitslast nicht und kaufen daher die falsche Art und/oder die falsche Menge an Ressourcen, was zu Ineffizienzen führt.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
    • 1 veranschaulicht ein verteiltes System gemäß mindestens einer Ausführungsform;
    • 2 veranschaulicht ein beispielhaftes Rechenzentrum gemäß mindestens einer Ausführungsform;
    • 3 veranschaulicht ein Client-Server-Netz gemäß mindestens einer Ausführungsform;
    • 4 veranschaulicht ein Computernetznetz gemäß mindestens einer Ausführungsform;
    • 5A veranschaulicht ein vernetztes Computersystem gemäß mindestens einer Ausführungsform;
    • 5B veranschaulicht ein vernetztes Computersystem gemäß mindestens einer Ausführungsform;
    • 5C veranschaulicht ein vernetztes Computersystem gemäß mindestens einer Ausführungsform;
    • 6 veranschaulicht eine oder mehrere Komponenten einer Systemumgebung, in der Dienste als Drittanbieter-Netzdienste angeboten werden können, gemäß mindestens einer Ausführungsform;
    • 7 veranschaulicht eine Cloud-Computing-Umgebung gemäß mindestens einer Ausführungsform;
    • 8 veranschaulicht einen Satz funktionaler Abstraktionsschichten, der durch eine Cloud-Computing-Umgebung bereitgestellt wird, gemäß mindestens einer Ausführungsform;
    • 9 veranschaulicht einen Supercomputer auf Chipebene gemäß mindestens einer Ausführungsform;
    • 10 veranschaulicht einen Supercomputer auf Rackmodulebene gemäß mindestens einer Ausführungsform;
    • 11 veranschaulicht einen Supercomputer auf Rack-Ebene gemäß mindestens einer Ausführungsform;
    • 12 veranschaulicht einen Supercomputer auf Gesamtsystemebene gemäß mindestens einer Ausführungsform;
    • 13 veranschaulicht einen Ressourcenorchestrator in Kommunikation mit einer Client-Vorrichtung und einem Rechenzentrum gemäß mindestens einer Ausführungsform;
    • 14 ist ein Sequenzdiagramm, das die Vorhersage der Ressourcennutzung und die Zuweisung von Ressourcen gemäß mindestens einer Ausführungsform veranschaulicht;
    • 15 veranschaulicht die Vorhersage der Ressourcennutzung und die Zuweisung von Ressourcen für einen oder mehrere Knoten eines Rechenzentrums für eine Arbeitslast gemäß mindestens einer Ausführungsform;
    • 16 ist ein Ablaufdiagramm, das ein Verfahren zur Vorhersage der Ressourcenauslastung einer Arbeitslast und der Zuweisung eines oder mehrerer Knoten eines Rechenzentrums für die Arbeitslast gemäß mindestens einer Ausführungsform veranschaulicht,
    • 17A veranschaulicht Inferenz- und/oder Trainingslogik gemäß mindestens einer Ausführungsform;
    • 17B veranschaulicht Inferenz- und/oder Trainingslogik gemäß mindestens einer Ausführungsform;
    • 18 veranschaulicht das Training und den Einsatz eines neuronalen Netzes gemäß mindestens einer Ausführungsform;
    • 19 ist ein Ablaufdiagramm, das ein Verfahren zum Trainieren eines maschinellen Lernmodells veranschaulicht, um die Ressourcenauslastung einer Arbeitslast vorherzusagen und einen oder mehrere Knoten eines Rechenzentrums für die Arbeitslast zu empfehlen, gemäß mindestens einer Ausführungsform;
    • 20 ist ein Ablaufdiagramm, das ein Verfahren zum Durchführen eines kontinuierlichen Trainings eines maschinellen Lernmodells veranschaulicht, um die Ressourcenauslastung einer Arbeitslast vorherzusagen und einen oder mehrere Knoten eines Rechenzentrums für die Arbeitslast zu empfehlen, gemäß mindestens einer Ausführungsform;
    • 21 veranschaulicht ein Verarbeitungssystem gemäß mindestens einer Ausführungsform;
    • 22 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 23 veranschaulicht ein System gemäß mindestens einer Ausführungsform;
    • 24 veranschaulicht eine beispielhafte integrierte Schaltung gemäß mindestens einer Ausführungsform;
    • 25 veranschaulicht ein Rechensystem gemäß mindestens einer Ausführungsform;
    • 26 veranschaulicht eine APU gemäß mindestens einer Ausführungsform;
    • 27 veranschaulicht eine CPU gemäß mindestens einer Ausführungsform;
    • 28 veranschaulicht ein beispielhaftes Beschleunigerintegrations-Slice gemäß mindestens einer Ausführungsform;
    • 29A - 29B veranschaulichen beispielhafte Grafikprozessoren gemäß mindestens einer Ausführungsform;
    • 30A veranschaulicht einen Grafikkern gemäß mindestens einer Ausführungsform;
    • 30B veranschaulicht eine GPGPU gemäß mindestens einer Ausführungsform;
    • 31A veranschaulicht einen Parallelprozessor gemäß mindestens einer Ausführungsform;
    • 31B veranschaulicht einen Verarbeitungscluster gemäß mindestens einer Ausführungsform;
    • 31C veranschaulicht einen Grafikmultiprozessor gemäß mindestens einer Ausführungsform;
    • 32 veranschaulicht einen Softwarestapel einer Programmierplattform gemäß mindestens einer Ausführungsform;
    • 33 veranschaulicht eine CUDA-Implementierung eines Softwarestapels aus 32 gemäß mindestens einer Ausführungsform;
    • 34 veranschaulicht eine ROCm-Implementierung eines Softwarestapels aus 32 gemäß mindestens einer Ausführungsform;
    • 35 veranschaulicht eine OpenCL-Implementierung eines Softwarestapels aus 32 gemäß mindestens einer Ausführungsform;
    • 36 veranschaulicht Software, die durch eine Programmierplattform unterstützt wird, gemäß mindestens einer Ausführungsform; und
    • 37 veranschaulicht das Kompilieren von Code zum Ausführen auf Programmierplattformen der 32 - 35 gemäß mindestens einer Ausführungsform.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Details bereitgestellt, um ein besseres Verständnis mindestens einer Ausführungsform zu ermöglichen. Einem Fachmann in der Technik wird jedoch klar sein, dass die erfinderischen Konzepte auch ohne eines oder mehrere dieser spezifischen Details umgesetzt werden können.
  • Server und Rechenzentren
  • Die folgenden Figuren legen ohne Einschränkung beispielhafte Netzserver und rechenzentrumbasierte Systeme dar, die verwendet werden können, um mindestens eine Ausführungsform zu implementieren.
  • 1 veranschaulicht ein verteiltes System 100 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet das verteilte System 100 eine oder mehrere Client-Rechenvorrichtungen 102, 104, 106 und 108, die konfiguriert sind, um eine Client-Anwendung, wie etwa einen Webbrowser, einen proprietären Client und/oder Variationen davon, über ein oder mehrere Netz(e) 110 auszuführen und zu betreiben. In mindestens einer Ausführungsform kann der Server 112 über das Netz 110 kommunikativ mit entfernten Client-Rechenvorrichtungen 102, 104, 106 und 108 gekoppelt sein.
  • In mindestens einer Ausführungsform kann der Server 112 ausgelegt sein, um einen oder mehrere Dienste oder eine oder mehrere Softwareanwendungen auszuführen, wie etwa Dienste und Anwendungen, die Sitzungsaktivitäten des Zugriffs mit einmaliger Anmeldung (single sign-on - SSO) über mehrere Rechenzentren hinweg verwalten können. In mindestens einer Ausführungsform kann der Server 112 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 102, 104, 106 und/oder 108 als webbasierte oder Cloud-Dienste oder im Rahmen eines Software-als-Dienst(Software as a Service - SaaS)-Modells angeboten werden. In mindestens einer Ausführungsform können Benutzer, die Client-Rechenvorrichtungen 102, 104, 106 und/oder 108 betreiben, wiederum eine oder mehrere Client-Anwendungen nutzen, um mit dem Server 112 zu interagieren, um durch diese Komponenten bereitgestellte Dienste zu nutzen.
  • In mindestens einer Ausführungsform sind die Softwarekomponenten 118, 120 und 122 des verteilten Systems 100 auf dem Server 112 implementiert. In mindestens einer Ausführungsform können eine oder mehrere Komponenten des verteilten Systems 100 und/oder durch diese Komponenten bereitgestellte Dienste auch durch eine oder mehrere der Client-Rechenvorrichtungen 102, 104, 106 und/oder 108 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 100 unterscheiden können. Die in 1 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 102, 104, 106 und/oder 108 verschiedene Arten von Rechensystemen beinhalten. In mindestens einer Ausführungsform kann eine Client-Berechnungsvorrichtung tragbare Handheld-Vorrichtungen (z. B. ein iPhone®, ein Mobiltelefon, ein iPad®, ein Computer-Tablet, ein persönlicher digitaler Assistent (PDA)) oder tragbare Geräte (z. B. ein am Kopf befestigtes Google Glass®-Display) beinhalten, auf denen Software wie Microsoft Windows Mobiler und/oder eine Vielzahl mobiler Betriebssysteme wie iOS, Windows Phone, Android, BlackBerry 10, Palm OS und/oder Variationen davon laufen. 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 in mindestens einer Ausführungsform auch Allzweck-Personalcomputer beinhalten, z. B. Personalcomputer und/oder Laptops, auf denen verschiedene Versionen von Microsoft Windows®, Apple Macintosh® und/oder Linux Betriebssystemen laufen. In mindestens einer Ausführungsform können Client-Rechenvorrichtungen Workstation-Computer sein, auf denen jegliches einer Vielfalt von im Handel erhältlichen UNIX®- oder UNIX-ähnlichen Betriebssystemen läuft, einschließlich unter anderem eine Vielfalt von GNU/Linux-Betriebssystemen, wie etwa Google Chrome OS. In mindestens einer Ausführungsform können Client-Rechenvorrichtungen auch elektronische Vorrichtung wie z. B. einen Thin-Client-Computer, ein internetfähiges Spielsystem (z. B. eine Microsoft Xbox-Spielkonsole mit oder ohne Kinect®-Gesteneingabe) und/oder ein persönliches Messaging-System beinhalten, die über Netz(e) 110 kommunizieren können. Auch wenn das verteilte System 100 in 1 mit vier Client-Rechenvorrichtungen gezeigt ist, kann eine beliebige Anzahl von Client-Rechenvorrichtungen unterstützt werden. Andere Vorrichtungen, wie etwa Vorrichtungen mit Sensoren usw., können mit dem Server 112 interagieren.
  • In mindestens einer Ausführungsform kann (können) das (die) Netz(e) 110 im Verteilungssystem 100 jede Art von Netz sein, das (die) die Datenübertragung unter Verwendung eines beliebigen einer Vielzahl verfügbarer Protokolle unterstützt (unterstützen), einschließlich und ohne Einschränkung TCP/IP (Transmission Control Protocol/Internet Protocol), SNA (Systems Network Architecture), IPX (Internet Packet Exchange), AppleTalk und/oder Variationen davon. In mindestens einer Ausführungsform kann (können) das (die) Netz(e) 110 ein lokales Netz (LAN), auf Ethernet basierende Netze, Token-Ring, ein Weitverkehrsnetz, das Internet, ein virtuelles Netz, ein virtuelles privates Netz (VPN), ein Intranet, ein Extranet, ein öffentliches Telefonnetz (public switched telephone network - PSTN), ein Infrarotnetz, ein drahtloses Netz (z. B. ein Netz, das unter einem beliebigen der IEEE 802.11-Protokolle, Bluetooth® und/oder einem beliebigen anderen drahtlosen Protokoll arbeitet) und/oder eine beliebige Kombination dieser und/oder anderer Netze.
  • In mindestens einer Ausführungsform kann der Server 112 aus einem oder mehreren Allzweckcomputern, spezialisierten Servercomputern (einschließlich, als Beispiel, PC(Personal Computer)-Servern, UNIX®-Servern, Mid-Range-Servern, Mainframe-Computern, Rack-Mounted-Servern usw.), Serverfarmen, Server-Clustern oder einer beliebigen anderen geeigneten Anordnung und/oder Kombination kombiniert sein. In mindestens einer Ausführungsform ist der Server 112 ein Server für ein Rechenzentrum, das eine Vielzahl von Knoten beinhaltet. In mindestens einer Ausführungsform kann der Server 112 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 Netze durch den Server 112 unter Verwendung von softwaredefinierten Netzen gesteuert werden. In mindestens einer Ausführungsform kann der Server 112 ausgelegt sein, um einen oder mehrere Dienste oder eine oder mehrere Softwareanwendungen auszuführen.
  • In mindestens einer Ausführungsform kann der Server 112 ein beliebiges Betriebssystem sowie ein beliebiges im Handel erhältliches Server-Betriebssystem ausführen. In mindestens einer Ausführungsform kann der Server 112 auch jede beliebige zusätzliche Serveranwendung und/oder Anwendung auf mittlerer Ebene 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 112 eine oder mehrere Anwendungen beinhalten, um Datenfeeds und/oder Ereignisaktualisierungen zu analysieren und zu konsolidieren, die von Benutzern der Client-Rechenvorrichtungen 102, 104, 106 und 108 empfangen werden. In mindestens einer Ausführungsform können Daten-Feeds und/oder Ereignis-Updates unter anderem Twitter®-Feeds, Facebook®-Updates oder Echtzeit-Updates beinhalten, die von einer oder mehreren Informationsquellen Dritter empfangen werden, sowie kontinuierliche Datenströme, die Echtzeit-Ereignisse in Relation zu Sensordatenanwendungen, Finanztickern, Tools zur Messung der Netzleistung (z. B. Anwendungen zur Netzüberwachung und Verwaltung des Datenverkehrs), Tools zur Clickstream-Analyse, zur Überwachung des Autoverkehrs und/oder Variationen davon beinhalten können. In mindestens einer Ausführungsform kann der Server 112 auch eine oder mehrere Anwendungen beinhalten, um Datenfeeds und/oder Ereignisaktualisierungen über eine oder mehrere Anzeigevorrichtungen der Client-Rechenvorrichtungen 102, 104, 106 und 108 anzuzeigen.
  • In mindestens einer Ausführungsform kann das verteilte System 100 auch eine oder mehrere Datenbanken 114 und 116 und/oder Knoten beinhalten, die Speicher-, Rechen-, Netz- und/oder Speicherressourcen bereitstellen. 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 114 und 116 an einer Vielzahl von Stellen befinden. In mindestens einer Ausführungsform können sich eine oder mehrere der Datenbanken 114 und 116 auf einem nicht transitorischen Speichermedium lokal auf (und/oder in) dem Server 112 befinden. In mindestens einer Ausführungsform können die Datenbanken 114 und 116 vom Server 112 entfernt sein und mit dem Server 112 über eine Netzbasierte oder dedizierte Verbindung kommunizieren. In mindestens einer Ausführungsform können sich die Datenbanken 114 und 116 in einem Speicherbereichsnetz (storage-area network - SAN) befinden. In mindestens einer Ausführungsform können alle erforderlichen Dateien zum Durchführen von Funktionen, die dem Server 112 zugeschrieben werden, je nach Bedarf lokal auf dem Server 112 und/oder entfernt gespeichert sein. In mindestens einer Ausführungsform können die Datenbanken 114 und 116 relationale Datenbanken beinhalten, wie etwa Datenbanken, die ausgelegt sind, um Daten als Reaktion auf SQL-formatierte Befehle zu speichern, zu aktualisieren und abzurufen.
  • 2 zeigt ein Beispiel eines Rechenzentrums 200 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet das Rechenzentrum 200, ohne Einschränkung, eine Rechenzentruminfrastrukturschicht 210, eine Frameworkschicht 220, eine Softwareschicht 230 und eine Anwendungsschicht 240.
  • In mindestens einer Ausführungsform, wie in 2 gezeigt, kann die Rechenzentrumsinfrastrukturschicht 210 des einen Ressourcenorchestrator 212, gruppierte Rechenressourcen 214 und Knoten-Rechenressourcen („Knoten-C.R.s“) 216(1)-216(N) und/oder andere Knotenressourcen beinhalten, wobei „N“ eine beliebige ganze, positive Zahl darstellt. In mindestens einer Ausführungsform können die Knoten-C.R.s 216(1)-216(N) eine beliebige Anzahl von Zentraleinheiten („CPUs“) oder anderen Prozessoren (einschließlich Beschleunigern, Field Programmable Gate Arrays (FPGAs), Grafikprozessoren usw.), Speichervorrichtungen (z. B., dynamischer Festwertspeicher), Speichervorrichtungen (z. B. Festkörper- oder Festplattenlaufwerke), Netz-Eingabe-/Ausgabevorrichtungen („NW E/A“), Netz-Switches, virtuelle Maschinen („VMs“), Stromversorgungsmodule und Kühlmodule, usw. einschließen. In mindestens einer Ausführungsform können ein oder mehrere Knoten-C.R.s von den Knoten-C.R.s 216(1)-216(N) ein Server sein, der eine oder mehrere der vorstehend erwähnten Rechenressourcen aufweist.
  • In mindestens einer Ausführungsform können die gruppierten Rechenressourcen 214 getrennte Gruppierungen von Knoten-C.R.s beinhalten, die innerhalb eines oder mehrerer Racks (nicht gezeigt) oder vieler Racks untergebracht sind, die in Rechenzentren an verschiedenen geografischen Standorten untergebracht sind (ebenfalls nicht gezeigt). Separate Gruppierungen können von Knoten-C.R.s innerhalb der gruppierten Rechenressourcen 214 gruppierte Rechen-, Netz-, Speicher- oder Storage-Ressourcen aufweisen, die zur Unterstützung einer oder mehrerer Arbeitslasten ausgestaltet oder zugewiesen werden können. In mindestens einer Ausführungsform können mehrere Knoten-C.R.s, die CPUs oder Prozessoren aufweisen, in einem oder mehreren Racks gruppiert sein, um Rechenressourcen zur Unterstützung einer oder mehrerer Arbeitslasten bereitzustellen. In mindestens einer Ausführungsform können ein oder mehrere Racks auch eine beliebige Anzahl von Leistungsmodulen, Kühlmodulen und Netz-Switches in beliebiger Kombination beinhalten.
  • In mindestens einer Ausführungsform kann der Ressourcenorchestrator 212 einen oder mehrere Knoten-C.R.s 216(1)-216(N) und/oder gruppierte Rechenressourcen 214 konfigurieren oder anderweitig steuern. In mindestens einer Ausführungsform kann der Ressourcenorchestrator 212 eine Softwaredesigninfrastruktur („SDI“)-Managerentität für das Rechenzentrum 200 beinhalten. In mindestens einer Ausführungsform kann der Ressourcenorchestrator 212 Hardware, Software oder eine Kombination davon beinhalten.
  • In mindestens einer Ausführungsform, wie in 2 gezeigt ist, beinhaltet die Frameworkschicht 220, ohne Einschränkung, einen Job Scheduler 232, einen Konfigurationsmanager 234, einen Ressourcenmanager 236 und ein verteiltes Dateisystem 238. In mindestens einer Ausführungsform kann die Framework-Schicht 220 ein Framework beinhalten, um Software 252 der Softwareschicht 230 und/oder eine oder mehrere Anwendung(en) 242 der Anwendungsschicht 240 zu unterstützen. In mindestens einer Ausführungsform kann/können die Software 252 oder die Anwendung(en) 242 jeweils webbasierte Dienstsoftware oder -anwendungen beinhalten, wie etwa diejenigen, die von Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt sind. In mindestens einer Ausführungsform kann die Framework-Schicht 220 eine Art von freiem und Open-Source-Software-Webanwendungs-Framework sein, ohne darauf beschränkt zu sein, wie etwa Apache SparkTM (im Folgenden „Spark“), welches das verteilte Dateisystem 238 für umfangreiche Datenverarbeitungen (z. B. „Big Data“) nutzen kann. In mindestens einer Ausführungsform kann der Aufgabenscheduler 232 einen Spark-Treiber beinhalten, um die Planung von Arbeitslasten zu erleichtern, die durch verschiedene Schichten des Rechenzentrums 200 unterstützt werden. In mindestens einer Ausführungsform kann der Konfigurationsmanager 234 dazu in der Lage sein, unterschiedliche Schichten, wie etwa die Softwareschicht 230 und die Framework-Schicht 220, einschließlich Spark und des verteilten Dateisystems 238, zu konfigurieren, um umfangreiche Datenverarbeitungen zu unterstützen. In mindestens einer Ausführungsform kann der Ressourcenmanager 236 in der Lage sein, geclusterte oder gruppierte Rechenressourcen zu verwalten, die dem verteilten Dateisystem 238 und dem Aufgabenscheduler 232 zur Unterstützung zugeordnet oder zugewiesen sind. In mindestens einer Ausführungsform können geclusterte oder gruppierte Rechenressourcen gruppierte Rechenressourcen 214 auf der Rechenzentrumsinfrastrukturschicht 210 beinhalten. In mindestens einer Ausführungsform kann sich der Ressourcenmanager 236 mit dem Ressourcenorchestrator 212 koordinieren, um diese zugeordneten oder zugewiesenen Rechenressourcen zu verwalten.
  • In mindestens einer Ausführungsform kann die in der Softwareschicht 230 beinhaltete Software 252 Software beinhalten, die durch mindestens Abschnitte der Knoten-C.R.s 216(1)-216(N), gruppierten Rechenressourcen 214 und/oder dem verteilten Dateisystem 238 der Framework-Schicht 220 verwendet werden. Eine oder mehrere Arten von Software können wie z. B. Internet-Suchsoftware, Software zum Scannen von E-Mail-Viren, Datenbanksoftware, maschinelle Lernsoftware, Bildverarbeitungssoftware und Software für das Streaming von Videoinhalten beinhalten, sind aber nicht darauf beschränkt.
  • In mindestens einer Ausführungsform kann die in der Anwendungsschicht 240 enthaltene(n) Anwendung(en) 242 eine oder mehrere Arten von Anwendungen beinhalten, die von mindestens Abschnitten der Knoten C.R.s 216(1)-216(N), der gruppierten Rechenressourcen 214 und/oder des verteilten Dateisystems 238 der Framework-Schicht 220 verwendet werden. Mindestens eine oder mehrere Arten von Anwendungen können ohne Einschränkung CUDA-Anwendungen, 5G-Netz-Anwendungen, Anwendungen der künstlichen Intelligenz, Anwendungen für Rechenzentren und/oder Variationen davon beinhalten.
  • In mindestens einer Ausführungsform können Konfigurationsmanager 234, Ressourcenmanager 236 und Ressourcenorchestrator 212 eine beliebige Anzahl und Art von selbstmodifizierenden Handlungen auf Grundlage einer beliebigen Menge und Art von Daten umsetzen, die auf jede technisch machbare Weise erfasst werden. In mindestens einer Ausführungsform können selbstmodifizierende Handlungen einen Rechenzentrumsbetreiber des Rechenzentrums 200 davon befreien, möglicherweise schlechte Konfigurationsentscheidungen zu treffen, und möglicherweise nicht ausgelastete und/oder leistungsschwache Abschnitte eines Rechenzentrums vermeiden.
  • 3 veranschaulicht ein Client-Server-Netz 304, das durch eine Vielzahl von miteinander verbundenen Netz-Server-Computern 302 gebildet wird, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform speichert jeder Netz-Server-Computer 302 Daten, auf die andere Netz-Server-Computer 302 und Client-Computer 306 und Netze 308 zugreifen können, die in einem Weitverkehrsnetz verbunden sind, das das Client-Server-Netz 304 bildet. In mindestens einer Ausführungsform kann sich die Konfiguration eines Client-Server-Netzes 304 im Laufe der Zeit ändern, wenn sich Client-Computer 306 und ein oder mehrere Netze 308 mit einem Netz 304 verbinden und von ihm trennen und wenn ein oder mehrere Hauptleitungs-Server-Computer 302 zu einem Netz 304 hinzugefügt oder aus ihm entfernt werden. In mindestens einer Ausführungsform, wenn ein Client-Computer 306 und ein Netz 308 mit Netz-Server-Computern 302 verbunden sind, beinhaltet das Client-Server-Netz solche Client-Computer 306 und ein Netz 308. In mindestens einer Ausführungsform beinhaltet der Begriff Computer jede beliebige Vorrichtung oder Maschine, die in der Lage ist, Daten anzunehmen, vorgeschriebene Prozesse auf Daten anzuwenden und Ergebnisse von Prozessen bereitzustellen.
  • In mindestens einer Ausführungsform speichert das Client-Server-Netz 304 Informationen, auf die Netz-Server-Computer 302, entferntes Netz 308 und Client-Computer 306 zugreifen können. In mindestens einer Ausführungsform werden die Netz-Server-Computer 302 durch Mainframe-Computer, Minicomputer und/oder Mikrocomputer mit jeweils einem oder mehreren Prozessoren gebildet. In mindestens einer Ausführungsform sind die Server-Computer 302 durch drahtgebundene und/oder drahtlose Übertragungsmedien miteinander verbunden, wie etwa leitfähige Drähte, Glasfaserkabel und/oder Mikrowellenübertragungsmedien, Satellitenübertragungsmedien oder andere leitfähige, optische oder elektromagnetische Wellenübertragungsmedien. In mindestens einer Ausführungsform greifen Client-Computer 306 oder Rechenvorrichtung auf einen Netz-Server-Computer 302 durch ein ähnliches drahtgebundenes oder ein drahtloses Übertragungsmedium zu. In mindestens einer Ausführungsform kann sich ein Client-Computer 306 oder Rechenvorrichtung mit einem Client-Server-Netz 304 unter Verwendung eines Modems und eines standardmäßigen Telefonkommunikationsnetzes verbinden. In mindestens einer Ausführungsform können auch alternative Trägersysteme wie Kabel- und Satellitenkommunikationssysteme verwendet werden, um sich mit dem Client-Server-Netz 304 zu verbinden. In mindestens einer Ausführungsform können andere nicht öffentliche oder zeitgeteilte Trägersysteme verwendet werden. In mindestens einer Ausführungsform ist das Netz 304 ein globales Informationsnetzes, wie etwa das Internet. In mindestens einer Ausführungsform ist das Netz ein nicht öffentliches Intranet, das ähnliche Protokolle wie das Internet verwendet, jedoch mit zusätzlichen Sicherheitsmaßnahmen und eingeschränkten Zugriffskontrollen. In mindestens einer Ausführungsform ist das Netz 304 ein nicht öffentliches oder halbprivates Netz, das proprietäre Kommunikationsprotokolle verwendet.
  • In mindestens einer Ausführungsform ist der Client-Computer 306 ein beliebiger Endbenutzer-Computer und kann auch ein Mainframe-Computer, ein Minicomputer oder ein Mikrocomputer mit einem oder mehreren Mikroprozessoren sein. In mindestens einer Ausführungsform kann der Server-Computer 302 manchmal als ein Client-Computer fungieren, der auf einen anderen Server-Computer 302 zugreift. In mindestens einer Ausführungsform kann das entfernte Netz 308 ein lokales Netz sein, ein Netz, das durch einen unabhängigen Dienstanbieter (independent service provider - ISP) für das Internet zu einem Weitverkehrsnetz hinzugefügt wird, oder eine andere Gruppe von Computern, die durch drahtgebundene oder drahtlose Übertragungsmedien mit einer Konfiguration, die entweder feststehend ist oder sich im Laufe der Zeit ändert, sein. In mindestens einer Ausführungsform können sich Client-Computer 306 unabhängig oder über ein entferntes Netz 308 mit einem Netz 304 verbinden und darauf zugreifen.
  • 4 zeigt ein Computernetz 408, das gemäß mindestens einer Ausführungsform eine oder mehrere Rechenmaschinen oder -vorrichtungen verbindet. In mindestens einer Ausführungsform kann das Netz 408 jede beliebige Art einer elektronisch verbundenen Gruppe von Computern sein, die beispielsweise die folgenden Netze beinhaltet: Internet, Intranet, Local Area Networks (LAN), Wide Area Networks (WAN) oder eine zusammengeschaltete Kombination dieser Netzarten. In mindestens einer Ausführungsform kann die Konnektivität innerhalb eines Netzes 408 ein entferntes Modem, Ethernet (IEEE 802.3), Token Ring (IEEE 802.5), Fiber Distributed Datalink Interface (FDDI), Asynchronous Transfer Mode (ATM), InfiniBand™, oder ein beliebiges anderes Kommunikationsprotokoll sein. In mindestens einer Ausführungsform können Rechenvorrichtungen, die mit einem Netz verbunden sind, ein Desktop, ein Server, eine transportable Vorrichtung, ein Handgerät, eine Set-Top-Box, ein persönlicher digitaler Assistent (PDA), ein Endgerät oder eine beliebige andere gewünschte Art oder Konfiguration sein. In mindestens einer Ausführungsform können Netzverbundene Vorrichtungen abhängig von ihrer Funktionalität in der Verarbeitungsleistung, dem internen Speicher und anderen Leistungsaspekten stark variieren. In mindestens einer Ausführungsform kann die Kommunikation innerhalb eines Netzes und zu oder von Rechenvorrichtungen, die mit einem Netz verbunden sind, entweder drahtgebunden oder drahtlos sein. In mindestens einer Ausführungsform kann das Netz 408 mindestens teilweise das weltweite öffentliche Internet beinhalten, das im Allgemeinen eine Vielzahl von Benutzern gemäß einem Client-Server-Modell gemäß einer Spezifikation für Übertragungssteuerungsprotokoll/Internetprotokoll (TCP/IP) verbindet. In mindestens einer Ausführungsform ist das Client-Server-Netz ein vorherrschendes Modell für die Kommunikation zwischen zwei Computern. In mindestens einer Ausführungsform gibt ein Client-Computer („Client“) einen oder mehrere Befehle an einen Server-Computer („Server“) aus. In mindestens einer Ausführungsform führt der Server Client-Befehle aus, indem er auf verfügbare Netzressourcen zugreift und Informationen gemäß den Client-Befehlen an einen Client zurückgibt. In mindestens einer Ausführungsform wird Client-Computersystemen und Netzressourcen, die auf Netzservern resident sind, eine Netzadresse zur Identifizierung während der Kommunikation zwischen Elementen eines Netzes zugewiesen. In mindestens einer Ausführungsform beinhalten Kommunikationen von anderen Netzverbundenen Systemen zu Servern eine Netzadresse eines relevanten Servers/einer relevanten Netzressource als Teil der Kommunikation, sodass ein geeignetes Ziel von Daten bzw. einer Anfrage als ein Empfänger identifiziert wird. In mindestens einer Ausführungsform, wenn ein Netz 408 das globale Internet umfasst, ist eine Netzadresse eine IP-Adresse in einem TCP/IP-Format, die Daten mindestens teilweise an ein E-Mail-Konto, eine Website oder ein anderes auf einem Server residentes Internet-Tool routen kann. In mindestens einer Ausführungsform können Informationen und Dienste, die auf Netzservern resident sind, für einen Webbrowser eines Client-Computers über einen Domänennamen (z. B. www.site.com) verfügbar sein, der einer IP-Adresse eines Netz-Servers zugeordnet ist.
  • In mindestens einer Ausführungsform ist eine Vielzahl von Clients 402, 404 und 406 über entsprechende Kommunikationsverbindungen mit einem Netz 408 verbunden. In mindestens einer Ausführungsform kann jeder dieser Clients über eine beliebige gewünschte Kommunikationsform auf ein Netz 408 zugreifen, wie etwa über eine Einwahlmodemverbindung, eine Kabelverbindung, eine digitale Teilnehmerleitung (digital subscriber line - DSL), eine drahtlose oder eine Satellitenverbindung oder eine beliebige andere Form der Kommunikation. In mindestens einer Ausführungsform kann jeder Client unter Verwendung einer beliebigen Maschine oder Rechenvorrichtung kommunizieren, die mit einem Netz 408 kompatibel ist, wie etwa ein Personalcomputer (PC), eine Arbeitsstation, ein dediziertes Endgerät, ein persönlicher Datenassistent (PDA) oder eine andere ähnliche Vorrichtung. In mindestens einer Ausführungsform können sich die Clients 402, 404 und 406 in einem gleichen geografischen Gebiet befinden oder nicht.
  • In mindestens einer Ausführungsform ist eine Vielzahl von Servern 410, 412 und 414 mit einem Netz 408 verbunden, um Clients zu bedienen, die mit einem Netz 408 kommunizieren. In mindestens einer Ausführungsform ist jeder Server typischerweise ein leistungsstarker Computer oder eine leistungsstarke Vorrichtung, die Netzressourcen verwaltet und auf Client-Befehle reagiert. In mindestens einer Ausführungsform beinhalten Server computerlesbare Datenspeichermedien, wie etwa Festplattenlaufwerke und RAM-Speicher, die Programmanweisungen und Daten speichern. In mindestens einer Ausführungsform führen die Server 410, 412, 414 Anwendungsprogramme aus, die auf Client-Befehle reagieren. In mindestens einer Ausführungsform kann der Server 410 eine Webserver-Anwendung zum Reagieren auf Client-Anfragen nach HTML-Seiten ausführen und kann auch eine Mail-ServerAnwendung zum Empfangen und Weiterleiten von elektronischer Post ausführen. In mindestens einer Ausführungsform können auch andere Anwendungsprogramme, wie etwa ein FTP-Server, ein maschinelles Lernsystem, das ein oder mehrere maschinelle Lernmodelle beinhaltet, oder ein Medienserver zum Streamen von Audio-/Videodaten an Clients, auf einem Server 410 ausgeführt werden. In mindestens einer Ausführungsform können unterschiedliche Server dazu bestimmt sein, unterschiedliche Tasks auszuführen. In mindestens einer Ausführungsform kann der Server 410 ein dedizierter Webserver sein, der Ressourcen in Bezug auf Websites für verschiedene Benutzer verwaltet, während ein Server 412 dazu bestimmt sein kann, eine Verwaltung von elektronischer Post (E-Mail) bereitzustellen. In mindestens einer Ausführungsform können andere Server für Medien (Audio, Video usw.), ein Dateiübertragungsprotokoll (file transfer protocol - FTP) oder eine Kombination von beliebigen zwei oder mehr Diensten, die typischerweise verfügbar sind oder über ein Netz bereitgestellt werden, bestimmt sein. In mindestens einer Ausführungsform kann sich jeder Server an einem Standort befinden, der mit dem anderer Server identisch ist oder sich davon unterscheidet. In mindestens einer Ausführungsform kann es mehrere Server geben, die gespiegelte Tasks für Benutzer ausführen, wodurch Datenstaus verringert werden oder Datenverkehr, der zu und von einem einzelnen Server geleitet wird, minimiert wird. In mindestens einer Ausführungsform stehen die Server 410, 412, 414 unter der Steuerung eines Webhosting-Anbieters in einem Unternehmen zur Pflege und Bereitstellung von Drittanbieter-Inhalten Dritter über ein Netz 408.
  • In mindestens einer Ausführungsform liefern Webhosting-Anbieter Dienste an zwei unterschiedliche Arten von Clients. In mindestens einer Ausführungsform fordert ein Typ, der als Browser bezeichnet werden kann, Inhalte von den Servern 410, 412, 414 an, wie beispielsweise Webseiten, E-Mail-Nachrichten, Videoclips usw. In mindestens einer Ausführungsform beauftragt ein zweiter Typ, der als Benutzer bezeichnet werden kann, einen Webhosting-Anbieter, eine Netzressource wie eine Webseite aufrechtzuerhalten und sie den Browsern zur Verfügung zu stellen. In mindestens einer Ausführungsform schließen Benutzer einen Vertrag mit einem Webhosting-Anbieter ab, um Speicherplatz, Prozessorkapazität und Kommunikationsbandbreite für ihre gewünschte Netzressource gemäß einer Menge von Serverressourcen verfügbar zu machen, die ein Benutzer nutzen möchte.
  • In mindestens einer Ausführungsform müssen Anwendungsprogramme, die ein von Servern gehostetes Netz verwalten, richtig konfiguriert sein, damit ein Webhosting-Anbieter Dienste für beide dieser Clients bereitstellen kann. In mindestens einer Ausführungsform beinhaltet der Programmkonfigurationsprozess das Definieren eines Satzes von Parametern, die mindestens teilweise die Reaktion eines Anwendungsprogramms auf Browseranforderungen steuern und die auch mindestens teilweise Serverressourcen definieren, die einem konkreten Benutzer zur Verfügung stehen.
  • In einer Ausführungsform steht ein Intranet-Server 416 über eine Kommunikationsverknüpfung mit einem Netz 408 in Kommunikation. In mindestens einer Ausführungsform steht der Intranet-Server 416 mit einem Servermanager 418 in Kommunikation. In mindestens einer Ausführungsform umfasst der Servermanager 418 eine Datenbank mit Konfigurationsparametern eines Anwendungsprogramms, die in den Servern 410, 412, 414 genutzt werden. In mindestens einer Ausführungsform modifizieren Benutzer eine Datenbank 420 über einen Intranet-Server 416 und interagiert ein Servermanager 418 mit Servern 410, 412, 414, um Anwendungsprogrammparameter so zu modifizieren, dass sie mit einem Inhalt einer Datenbank übereinstimmen. In mindestens einer Ausführungsform meldet sich ein Benutzer bei einem Intranet-Server 416 an, indem er über den Client 402 (z. B. eine Client-Rechenvorrichtung) eine Verbindung zu einem Intranet-Server 416 herstellt und Authentifizierungsinformationen, wie etwa einen Benutzernamen und ein Passwort, eingibt.
  • In mindestens einer Ausführungsform authentifiziert ein Intranet-Server 416 einen Benutzer, wenn sich ein Benutzer für einen neuen Dienst anmelden oder einen bestehenden Dienst modifizieren möchte, und stellt einem Benutzer eine interaktive Bildschirmanzeige/ein Bedienfeld bereit, die bzw. das einem Benutzer den Zugriff auf Konfigurationsparameter für ein konkretes Anwendungsprogramm erlaubt. In mindestens einer Ausführungsform wird einem Benutzer eine Reihe von modifizierbaren Textfeldern präsentiert, die Aspekte einer Konfiguration einer Benutzerwebsite oder einer anderen Netzressource beschreiben. Wenn ein Benutzer in mindestens einer Ausführungsform den auf einem Server für seine Website reservierten Speicherplatz vergrößern möchte, wird einem Benutzer ein Feld bereitgestellt, in dem ein Benutzer einen gewünschten Speicherplatz festlegt. In mindestens einer Ausführungsform aktualisiert ein Intranet-Server 416 als Reaktion auf den Empfang dieser Informationen eine Datenbank 420. In mindestens einer Ausführungsform leitet der Servermanager 418 diese Informationen an einen geeigneten Server weiter, und ein neuer Parameter wird während des Anwendungsprogrammbetriebs verwendet. In mindestens einer Ausführungsform ist ein Intranet-Server 416 konfiguriert, um Benutzern Zugriff auf Konfigurationsparameter von gehosteten Netzressourcen (z. B. Webseiten, E-Mail, FTP-Sites, Mediensites usw.) bereitzustellen, für die ein Benutzer einen Vertrag mit einem Webhosting-Dienstanbieter abgeschlossen hat.
  • 5A veranschaulicht ein vernetztes Computersystem 500A gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform umfasst das vernetzte Computersystem 500A eine Vielzahl von Knoten oder Personalcomputern („PCs“) 502, 518, 520. In mindestens einer Ausführungsform umfasst der Personalcomputer oder Knoten 502 einen Prozessor 514, einen Speicher 516, eine Videokamera 504, ein Mikrofon 506, eine Maus 508, Lautsprecher 510 und einen Monitor 512. In mindestens einer Ausführungsform können die PCs 502, 518, 520 beispielsweise jeweils einen oder mehrere Desktop-Server eines internen Netzes innerhalb einer gegebenen Firma ausführen oder können Server eines allgemeinen Netzes sein, das nicht auf eine spezifische Umgebung beschränkt ist. In mindestens einer Ausführungsform gibt es einen Server pro PC-Knoten eines Netzes, sodass jeder PC-Knoten eines Netzes einen konkreten Netzserver mit einer konkreten Netz-URL-Adresse darstellt. In mindestens einer Ausführungsform verwendet jeder Server standardmäßig eine Standardwebseite für den Benutzer dieses Servers, die selbst eingebettete URLs enthalten kann, die auf weitere Unterseiten dieses Benutzers auf diesem Server oder auf andere Server oder Seiten auf anderen Servern in einem Netz zeigen.
  • In mindestens einer Ausführungsform sind die Knoten 502, 518, 520 und andere Knoten eines Netzes über das Medium 522 zusammengeschaltet. In mindestens einer Ausführungsform kann das Medium 522 ein Kommunikationskanal sein, wie etwa ein Integrated Services Digital Network („ISDN“). In mindestens einer Ausführungsform können verschiedene Knoten eines vernetzten Computersystems durch eine Vielzahl von Kommunikationsmedien verbunden sein, einschließlich lokaler Netze („LAN“), analoger Telefonleitungen (plain-old telephone line - „POTS“), die manchmal als öffentliches Telefonnetz („PSTN“) bezeichnet werden, und/oder Variationen davon. In mindestens einer Ausführungsform können verschiedene Knoten eines Netzes auch Computersystembenutzer darstellen, die über ein Netz, wie etwa das Internet, miteinander verbunden sind. In mindestens einer Ausführungsform weist jeder Server in einem Netz (der von einem konkreten Knoten eines Netzes in einer gegebenen Instanz ausgeführt wird) eine eindeutige Adresse oder Identifikation innerhalb eines Netzes auf, die in Form einer URL spezifiziert werden kann.
  • In mindestens einer Ausführungsform kann somit eine Vielzahl von Mehrpunkt-Konferenzeinheiten („MCUs“) verwendet werden, um Daten zu und von verschiedenen Knoten oder „Endpunkten“ eines Konferenzsystems zu übertragen. In mindestens einer Ausführungsform können Knoten und/oder MCUs zusätzlich zu verschiedenen anderen Kommunikationsmedien, wie etwa Knoten, die durch das Internet verbunden sind, über eine ISDN-Verbindung oder über ein lokales Netz („LAN“) miteinander verbunden sein. In mindestens einer Ausführungsform können Knoten eines Konferenzsystems im Allgemeinen direkt mit einem Kommunikationsmedium, wie etwa einem LAN, oder durch eine MCU verbunden sein und dieses Konferenzsystem kann andere Knoten oder Elemente, wie etwa Router, Server und/oder Variationen davon, umfassen.
  • In mindestens einer Ausführungsform ist der Prozessor 514 ein programmierbarer Allzweckprozessor. In mindestens einer Ausführungsform können Prozessoren der Knoten des vernetzten Computersystems 500A auch Spezial-Videoprozessoren sein. In mindestens einer Ausführungsform können verschiedene Peripheriegeräte und Komponenten eines Knotens, wie etwa die des Knotens 502, von denen anderer Knoten abweichen. In mindestens einer Ausführungsform können der Knoten 518 und der Knoten 520 identisch mit dem Knoten 502 oder unterschiedlich konfiguriert sein. In mindestens einer Ausführungsform kann ein Knoten zusätzlich zu PC-Systemen auf einem beliebigen geeigneten Computersystem implementiert sein.
  • 5B veranschaulicht ein vernetztes Computersystem 500B gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform veranschaulicht das System 500B ein Netz, wie etwa ein LAN 524, das verwendet werden kann, um eine Vielzahl von Knoten miteinander zu verbinden, die miteinander kommunizieren können. In mindestens einer Ausführungsform ist eine Vielzahl von Knoten an das LAN 524 angeschlossen, wie etwa PC-Knoten 526, 528, 530. In mindestens einer Ausführungsform kann ein Knoten auch über einen Netzserver oder andere Mittel mit dem LAN verbunden sein. In mindestens einer Ausführungsform umfasst das System 500B andere Arten von Knoten oder Elementen, zum Beispiel einschließlich Router, Server und Knoten.
  • 5C veranschaulicht ein vernetztes Computersystem 500C gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform veranschaulicht das System 500C ein WWW-System, das Kommunikationen über ein Backbone-Kommunikationsnetz, wie etwa das Internet 532, aufweist, das verwendet werden kann, um eine Vielzahl von Knoten eines Netzes miteinander zu verbinden. In mindestens einer Ausführungsform ist das WWW ein Satz von Protokollen, der auf dem Internet arbeitet, und ermöglicht, dass ein grafisches Schnittstellensystem darauf arbeitet, um auf Informationen über das Internet zuzugreifen. In mindestens einer Ausführungsform ist eine Vielzahl von Knoten an das Internet 532 im WWW angeschlossen, wie etwa PC-Knoten 540, 542, 544. In mindestens einer Ausführungsform bildet ein Knoten über einen WWW-HTTP-Server, wie etwa die Server 534, 536, eine Schnittstelle mit anderen Knoten des WWW. In mindestens einer Ausführungsform kann der PC 544 ein PC sein, der einen Knoten des Internets 532 bildet und selbst seinen Server 536 betreibt, obwohl der PC 544 und der Server 536 in 5C zur Veranschaulichung getrennt veranschaulicht sind.
  • In mindestens einer Ausführungsform ist WWW ein verteilter Anwendungstyp, gekennzeichnet durch WWW HTTP, das WWW-Protokoll, das auf dem Übertragungssteuerungsprotokoll/Internetprotokoll („TCP/IP“) des Internets läuft. In mindestens einer Ausführungsform kann das WWW somit durch einen Satz von Protokollen (d. h. HTTP) gekennzeichnet sein, die im Internet als sein „Backbone“ laufen.
  • In mindestens einer Ausführungsform ist ein Webbrowser eine Anwendung, die auf einem Knoten eines Netzes läuft und in WWW-kompatiblen Netzsystemen den Benutzern eines bestimmten Servers oder Knotens erlaubt, solche Informationen einzusehen und so einem Benutzer die Suche nach grafischen und textbasierten Dateien ermöglicht, die über Hypertext-Links miteinander verknüpft sind, die in Dokumente oder Dateien eingebettet sind, die von Servern in einem Netz verfügbar sind, die HTTP verstehen. In mindestens einer Ausführungsform kann ein abgerufenes Dokument verschiedene darin eingebettete Hypertext-Links und eine lokale Kopie einer Seite aufweisen, die lokal für einen abrufenden Benutzer erstellt wird, wenn eine gegebene Webseite eines ersten Servers, der einem ersten Knoten zugeordnet ist, durch einen Benutzer unter Verwendung eines anderen Servers in einem Netz wie dem Internet abgerufen wird. Wenn ein Benutzer auf einen Hypertext-Link klickt, reichen in mindestens einer Ausführungsform lokal gespeicherte Informationen in Bezug auf einen ausgewählten Hypertext-Link typischerweise aus, um es der Maschine eines Benutzers zu ermöglichen, eine Verbindung über das Internet zu einem Server zu öffnen, der durch einen Hypertext-Link angegeben wird.
  • In mindestens einer Ausführungsform kann mehr als ein Benutzer mit jedem HTTP-Server gekoppelt sein, zum Beispiel, über ein LAN wie LAN 538, wie in Bezug auf den WWW-HTTP-Server 534 veranschaulicht. In mindestens einer Ausführungsform kann das System 500C auch andere Arten von Knoten oder Elementen umfassen. In mindestens einer Ausführungsform ist ein WWW-HTTP-Server eine Anwendung, die auf einem Rechner, wie beispielsweise einem PC, läuft. In mindestens einer Ausführungsform kann man davon ausgehen, dass jeder Benutzer einen eigenen „Server“ aufweist, wie auf PC 544 bezogen veranschaulicht. In mindestens einer Ausführungsform kann ein Server als ein Server betrachtet werden, wie etwa der WWW-HTTP-Server 534, der Zugriff auf ein Netz für ein LAN oder eine Vielzahl von Knoten oder eine Vielzahl von LAN bereitstellt. In mindestens einer Ausführungsform gibt es eine Vielzahl von Benutzern, von der jeder einen Desktop-PC oder Knoten eines Netzes aufweist, wobei jeder Desktop-PC potentiell einen Server für einen Benutzer davon herstellt. In mindestens einer Ausführungsform ist jeder Server einer konkreten Netzadresse oder URL zugeordnet, die, wenn darauf zugegriffen wird, eine Standardwebseite für diesen Benutzer bereitstellt. In mindestens einer Ausführungsform kann eine Webseite weitere Links (eingebettete URL) enthalten, die auf weitere Unterseiten dieses Benutzers auf diesem Server oder auf andere Server in einem Netz oder Seiten auf anderen Servern in einem Netz zeigen.
  • CLOUD-COMPUTING UND DIENSTE
  • Die folgenden Figuren legen ohne Einschränkung cloudbasierte beispielhafte Systeme dar, die verwendet werden können, um mindestens eine Ausführungsform zu implementieren.
  • In mindestens einer Ausführungsform ist Cloud-Computing eine Art der Datenverarbeitung, bei der dynamisch skalierbare und oft virtualisierte Ressourcen als Dienst über das Internet und/oder ein Intranet bereitgestellt werden. In mindestens einer Ausführungsform müssen die Benutzer keine Kenntnisse, kein Fachwissen oder keine Kontrolle über die Technologieinfrastruktur haben, die als „in der Cloud“ bezeichnet werden kann, die sie unterstützt. In mindestens einer Ausführungsform umfasst Cloud-Computing Infrastruktur-als-Dienst (IaaS), Plattform-als-Dienst (PaaS), Software-als-Dienst (SaaS) und andere Variationen, die ein gemeinsames Leitmotiv der Abhängigkeit vom Internet zum Erfüllen von Rechenbedürfnissen von Benutzern aufweisen. In mindestens einer Ausführungsform kann ein typischer Cloud-Einsatz, wie etwa in einer privaten Cloud (z. B. Unternehmensnetz) oder einem Rechenzentrum (data center - DC) in einer öffentlichen Cloud (z. B. Internet) aus Tausenden von Servern (oder alternativ VM), Hunderten von Ethernet-, Fibre-Channel- oder Fibre-Channel-over-Ethernet(FCoE)-Ports, Switching- und Speicherinfrastruktur usw. bestehen. In mindestens einer Ausführungsform kann die Cloud auch aus einer Netzdienstinfrastruktur wie IPsec-VPN-Hubs, Firewalls, Lastausgleichern, Weitverkehrsnetz(WAN)-Optimierern usw. bestehen. In mindestens einer Ausführungsform können entfernte Teilnehmer sicher auf Cloud-Anwendungen und -Dienste zugreifen, indem sie sich über einen VPN-Tunnel, wie etwa einen IPsec-VPN-Tunnel, verbinden.
  • In mindestens einer Ausführungsform ist Cloud-Computing ein Modell zum Ermöglichen eines bequemen On-Demand-Netzzugriffs auf einen gemeinsam genutzten Pool konfigurierbarer Rechenressourcen (z. B. Netze, Server, Speicher, Anwendungen und Dienste), die schnell mit minimalem Verwaltungsaufwand oder Dienstanbieterinteraktion bereitgestellt und freigegeben werden können.
  • In mindestens einer Ausführungsform zeichnet sich Cloud-Computing durch einen bedarfsgesteuerten Self-Service aus, wobei ein Verbraucher Rechenkapazitäten wie Serverzeit und Speicherung im Netz einseitig und automatisch nach Bedarf bereitstellen kann, ohne dass eine menschliche Interaktion mit dem jeweiligen Dienstanbieter erforderlich ist. In mindestens einer Ausführungsform ist Cloud-Computing durch einen breiten Netzzugriff gekennzeichnet, bei dem Fähigkeiten über ein Netz verfügbar sind und auf die über Standardmechanismen zugegriffen wird, welche die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z. B. Mobiltelefone, Laptops und PDA) fördern. In mindestens einer Ausführungsform ist Cloud-Computing gekennzeichnet durch Ressourcen-Pooling, bei dem die Rechenressourcen eines Anbieters gepoolt werden, um mehrere Verbraucher unter Verwendung eines mehrmandantenfähigen Modells zu bedienen, wobei verschiedene physische und virtuelle Ressourcen gemäß Verbrauchernachfrage dynamisch zugewiesen und neu zugewiesen werden. In mindestens einer Ausführungsform besteht ein Gefühl der Standortunabhängigkeit darin, dass ein Kunde im Allgemeinen keine Kontrolle oder Kenntnis über einen genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, den Standort auf einer höheren Abstraktionsebene (z. B. Land, Staat oder Rechenzentrum) festzulegen. In mindestens einer Ausführungsform beinhalten Beispiele von Ressourcen Speicherressourcen, Verarbeitungs- oder Rechenressourcen, Arbeitsspeicherressourcen, Netzbandbreitenressourcen und virtuelle Maschinen. In mindestens einer Ausführungsform ist Cloud-Computing durch eine schnelle Elastizität gekennzeichnet, bei der Fähigkeiten schnell und elastisch, in einigen Fällen automatisch, für ein schnelles Scale-Out bereitgestellt werden können und für ein schnelles Scale-In schnell freigegeben werden. In mindestens einer Ausführungsform erscheinen einem Verbraucher die zur Bereitstellung verfügbaren Fähigkeiten oft als unbegrenzt und können jederzeit in beliebiger Menge erworben werden. In mindestens einer Ausführungsform ist Cloud-Computing durch einen gemessenen Dienst gekennzeichnet, bei dem Cloud-Systeme die Ressourcennutzung automatisch steuern und optimieren, indem sie eine Messfähigkeit auf einer bestimmten Abstraktionsebene nutzen, die für eine Art von Dienst (z. B. Speicherung, Verarbeitung, Bandbreite und aktive Benutzerkonten) geeignet ist. In mindestens einer Ausführungsform kann die Ressourcennutzung überwacht, gesteuert und gemeldet werden, um Transparenz sowohl für einen Anbieter als auch für einen Verbraucher eines genutzten Dienstes bereitzustellen.
  • In mindestens einer Ausführungsform kann Cloud-Computing verschiedenen Diensten zugeordnet sein. In mindestens einer Ausführungsform kann sich Cloud-Software-als-Dienst (SaaS) auf einen Dienst beziehen, bei dem eine einem Verbraucher bereitgestellte Fähigkeit darin besteht, die Anwendungen eines Anbieters zu verwenden, die auf einer Cloud-Infrastruktur laufen. In mindestens einer Ausführungsform sind Anwendungen von verschiedenen Client-Vorrichtungen über eine Thin-Client-Schnittstelle wie etwa einen Webbrowser (z. B. webbasierte E-Mail) zugänglich. In mindestens einer Ausführungsform verwaltet oder steuert ein Verbraucher nicht die zugrunde liegende Cloud-Infrastruktur, einschließlich des Netzes, der Server, der Betriebssysteme, des Speichers oder sogar einzelner Anwendungsfunktionen, mit einer möglichen Ausnahme von begrenzten benutzerspezifischen Anwendungskonfigurationseinstellungen.
  • In mindestens einer Ausführungsform kann sich Cloud Platform as a Service (PaaS) auf einen Dienst beziehen, wobei eine einem Verbraucher bereitgestellte Fähigkeit darin besteht, von Verbrauchern erstellte oder erworbene Anwendungen, die mit von einem Anbieter unterstützten Programmiersprachen und Tools erstellt wurden, auf einer Cloud-Infrastruktur einzusetzen. In mindestens einer Ausführungsform verwaltet oder steuert der Verbraucher nicht die zugrunde liegende Cloud-Infrastruktur, einschließlich der Netze, Server, Betriebssysteme oder des Speichers, sondern hat die Kontrolle über die eingesetzten Anwendungen und möglicherweise die Konfigurationen der Anwendungs-Hosting-Umgebung.
  • In mindestens einer Ausführungsform kann sich Cloud Infrastructure as a Service (IaaS) auf einen Dienst beziehen, bei dem die Bereitstellung von Verarbeitungs-, Speicher-, Netz- und anderen grundlegenden Rechenressourcen für einen Verbraucher darin besteht, dass dieser in der Lage ist, beliebige Software, die Betriebssysteme und Anwendungen beinhalten kann, einzusetzen und auszuführen. In mindestens einer Ausführungsform verwaltet oder kontrolliert der Verbraucher die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise begrenzte Kontrolle über ausgewählte Netzkomponenten (z. B. Host-Firewalls).
  • In mindestens einer Ausführungsform kann Cloud-Computing auf verschiedene Art und Weise eingesetzt werden. In mindestens einer Ausführungsform kann sich eine nicht öffentliche Cloud auf eine Cloud-Infrastruktur beziehen, die ausschließlich für eine Organisation betrieben wird. In mindestens einer Ausführungsform kann eine nicht öffentliche Cloud durch eine Organisation oder einen Drittanbieter verwaltet werden und kann innerhalb oder außerhalb des Betriebsgeländes existieren. In mindestens einer Ausführungsform kann sich eine gemeinschaftliche Cloud auf eine Cloud-Infrastruktur beziehen, die von mehreren Organisationen gemeinsam genutzt wird und eine bestimmte Gemeinschaft unterstützt, die gemeinsame Anliegen hat (z. B. Zielsetzung, Sicherheitsanforderungen, Richtlinien und Compliance-Überlegungen). In mindestens einer Ausführungsform kann eine gemeinschaftliche Cloud durch eine Organisation oder einen Drittanbieter verwaltet werden und kann innerhalb oder außerhalb des Betriebsgeländes existieren. In mindestens einer Ausführungsform kann sich eine öffentliche Cloud auf eine Cloud-Infrastruktur beziehen, die einer breiten Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt wird und sich im Besitz einer Organisation befindet, die Cloud-Dienste bereitstellt. In mindestens einer Ausführungsform kann sich eine Hybrid-Cloud auf eine Cloud-Infrastruktur beziehen, die eine Zusammensetzung aus zwei oder mehr Clouds (nicht öffentlich, gemeinschaftlich oder öffentlich) ist, die eigenständige Einheiten bleiben, aber durch standardisierte oder proprietäre Technologie miteinander verbunden sind, die Daten- und Anwendungsportabilität ermöglicht (z. B. Cloud Bursting für den Lastausgleich zwischen Clouds). In mindestens einer Ausführungsform ist eine Cloud-Computing-Umgebung dienstorientiert mit einem Fokus auf Staatenlosigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität.
  • 6 veranschaulicht eine oder mehrere Komponenten einer Systemumgebung 600, in der Dienste als Drittanbieter-Netzdienste angeboten werden können, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann ein Drittanbieter-Netz als Cloud, Cloud-Netz, Cloud-Computing-Netz und/oder Varianten davon betroffen sein. In mindestens einer Ausführungsform beinhaltet das Drittanbieter-Netzinfrastruktursystem 600 eine oder mehrere Client-Rechenvorrichtungen 604, 606 und 608, die durch Benutzer verwendet werden können, um mit einem Drittanbieter-Netzinfrastruktursystem 602 zu interagieren, das Drittanbieter-Netzdienste bereitstellt, die als Cloud-Computing-Dienste bezeichnet werden können. In mindestens einer Ausführungsform kann das Drittanbieter-Netzinfrastruktursystem 602 einen oder mehrere Computer und/oder Server umfassen.
  • Es versteht sich, dass das in 6 dargestellte Drittanbieter-Netzinfrastruktursystem 602 andere als die dargestellten Komponenten aufweisen kann. Ferner stellt 6 eine Ausführungsform eines Drittanbieter-Netzinfrastruktursystems dar. In mindestens einer Ausführungsform kann das Drittanbieter-Netzinfrastruktursystem 602 mehr oder weniger Komponenten aufweisen als in 6 dargestellt, kann zwei oder mehr Komponenten kombinieren oder kann eine andere Konfiguration oder Anordnung von Komponenten aufweisen.
  • In mindestens einer Ausführungsform können die Client-Rechenvorrichtungen 604, 606 und 608 konfiguriert sein, um eine Client-Anwendung, wie etwa einen Webbrowser, eine proprietäre Client-Anwendung oder eine andere Anwendung, zu betreiben, die durch einen Benutzer einer Client-Rechenvorrichtung verwendet werden kann, um mit dem Drittanbieter-Netzinfrastruktursystem 602 zu interagieren, um Dienste zu nutzen, die durch das Drittanbieter-Netzinfrastruktursystem 602 bereitgestellt werden. Auch wenn die beispielhafte Systemumgebung 600 mit drei Client-Rechenvorrichtungen gezeigt ist, kann eine beliebige Anzahl von Client-Rechenvorrichtungen unterstützt werden. In mindestens einer Ausführungsform können andere Vorrichtungen, wie etwa Vorrichtungen mit Sensoren usw., mit dem Drittanbieter-Netzinfrastruktursystem 602 interagieren. In mindestens einer Ausführungsform können das/die Netz(e) 610 die Kommunikation und den Austausch von Daten zwischen den Client-Rechenvorrichtungen 604, 606 und 608 und dem Drittanbieter-Netzinfrastruktursystem 602 ermöglichen.
  • In mindestens einer Ausführungsform können die vom Drittanbieter-Netzinfrastruktursystem 602 bereitgestellten Dienste eine Vielzahl von Diensten beinhalten, die den Nutzern eines Drittanbieter-Netzinfrastruktursystems auf Anfrage zur Verfügung gestellt werden. In mindestens einer Ausführungsform können auch verschiedene Dienste angeboten werden, einschließlich ohne Einschränkung Online-Datenspeicher- und Sicherungslösungen, webbasierte E-Mail-Dienste, gehostete Office-Suiten und Dienste für die Zusammenarbeit von Dokumenten, Datenbankverwaltung und -verarbeitung, verwaltete technische Supportdienste und/oder Variationen davon. In mindestens einer Ausführungsform können Dienste, die durch ein Drittanbieter-Netzinfrastruktursystem bereitgestellt werden, dynamisch skalieren, um die Bedürfnisse ihrer Benutzer zu erfüllen.
  • In mindestens einer Ausführungsform kann eine spezifische Instanziierung eines vom Drittanbieter-Netzinfrastruktursystem 602 bereitgestellten Dienstes als „Dienstinstanz“ bezeichnet werden. In mindestens einer Ausführungsform wird im Allgemeinen jeder Dienst, der einem Benutzer über ein Kommunikationsnetz, wie etwa das Internet, von einem System eines Drittanbieter-Netzdienstes bereitgestellt wird, als „Drittanbieter-Netzdienst“ bezeichnet. In mindestens einer Ausführungsform unterscheiden sich in einer öffentlichen Drittanbieter-Netzumgebung die Server und Systeme, aus denen das System eines Drittanbieter-Netzdienstes besteht, von den eigenen Servern und Systemen des Kunden vor Ort. In mindestens einer Ausführungsform kann das System eines Drittanbieter-Netzdienstanbieters eine Anwendung hosten, und ein Benutzer kann über ein Kommunikationsnetz wie das Internet auf Anfrage eine Anwendung bestellen und verwenden.
  • In mindestens einer Ausführungsform kann ein Dienst in der Netzinfrastruktur eines Drittanbieter-Computernetzes einen geschützten Computernetzzugriff auf Speicher, eine gehostete Datenbank, einen gehosteten Webserver, eine Softwareanwendung oder anderen Dienst, der von einem Drittanbieter-Netzanbieter einem Benutzer bereitgestellt wird, beinhalten. In mindestens einer Ausführungsform kann ein Dienst einen passwortgeschützten Zugriff auf einen entfernten Speicher in einem Drittanbieter-Netz über das Internet beinhalten. In mindestens einer Ausführungsform kann ein Dienst eine auf einem Webdienst basierende gehostete relationale Datenbank und eine Middleware-Engine in Skriptsprache zur privaten Verwendung durch einen vernetzten Entwickler beinhalten. In mindestens einer Ausführungsform kann ein Dienst Zugriff auf eine E-Mail-Softwareanwendung beinhalten, die auf der Website eines Drittanbieter-Netzherstellers gehostet wird.
  • In mindestens einer Ausführungsform kann das Drittanbieter-Netzinfrastruktursystem 602 eine Reihe von Anwendungen, Middleware und Datenbankdienstangeboten beinhalten, die einem Kunden im Selbstbedienungsmodus, auf Abonnementbasis, elastisch skalierbar, zuverlässig, hoch verfügbar usw. und auf sichere Art und Weise geliefert werden. In mindestens einer Ausführungsform kann das Drittanbieter-Netzinfrastruktursystem 602 auch „Big Data“-bezogene Berechnungs- und Analysedienste bereitstellen. In mindestens einer Ausführungsform wird der Begriff „Big Data“ allgemein verwendet, um sich auf extrem große Datensätze zu beziehen, die von Analysten und Forschern gespeichert und manipuliert werden können, um große Datenmengen zu visualisieren, Trends zu erkennen und/oder anderweitig mit Daten zu interagieren. In mindestens einer Ausführungsform können Big Data und zugehörige Anwendungen durch ein Infrastruktursystem auf vielen Ebenen und in unterschiedlichen Maßstäben gehostet und/oder manipuliert werden. In mindestens einer Ausführungsform können Dutzende, Hunderte oder Tausende parallel verbundener Prozessoren auf solche Daten einwirken, um sie darzustellen oder externe Kräfte auf Daten oder das, was sie darstellen, zu simulieren. In mindestens einer Ausführungsform können diese Datensätze strukturierte Daten, die etwa in einer Datenbank oder anderweitig gemäß einem strukturierten Modell organisiert sind, und/oder unstrukturierte Daten (z. B. E-Mails, Bilder, Daten-Blobs (binäre große Objekte), Web-Seiten, komplexe Ereignisverarbeitung) involvieren. In mindestens einer Ausführungsform kann durch Nutzung der Fähigkeit einer Ausführungsform, relativ schnell mehr (oder weniger) Rechenressourcen auf ein Ziel zu konzentrieren, ein Drittanbieter-Netzinfrastruktursystem besser verfügbar sein, um Tasks an großen Datensätzen basierend auf der Nachfrage von einem Unternehmen, einer Regierungsbehörde, einer Forschungsvorrichtung, einer Privatperson, einer Gruppe gleichgesinnter Personen oder Organisationen oder einer anderen Einheit auszuführen.
  • In mindestens einer Ausführungsform kann das Drittanbieter-Netzinfrastruktursystem 602 in der Lage sein, das Abonnement eines Kunden für die vom Drittanbieter-Netzinfrastruktursystem 602 angebotenen Dienste automatisch bereitzustellen, zu verwalten und zu verfolgen. In mindestens einer Ausführungsform kann das Drittanbieter-Netzinfrastruktursystem 602 über verschiedene Einsatzmodelle Drittanbieter-Netzdienste bereitstellen. In mindestens einer Ausführungsform können Dienste im Rahmen eines öffentlichen Drittanbieter-Netzmodells bereitgestellt werden, bei dem das Drittanbieter-Netzinfrastruktursystem 602 im Besitz einer Organisation ist, die Drittanbieter-Netzdienste verkauft und Dienste einer breiten Öffentlichkeit oder unterschiedlichen Industrieunternehmen zur Verfügung stellt. In mindestens einer Ausführungsform können Dienste im Rahmen eines nicht öffentlichen Drittanbieter-Netzmodells bereitgestellt werden, bei dem das Drittanbieter-Netzinfrastruktursystem 602 ausschließlich für eine einzelne Organisation betrieben wird und Dienste für eine oder mehrere Einheiten innerhalb einer Organisation bereitstellen kann. In mindestens einer Ausführungsform können Drittanbieter-Netzdienste auch im Rahmen eines gemeinschaftlichen Drittanbieter-Netzmodells bereitgestellt werden, bei dem das Drittanbieter-Netzinfrastruktursystem 602 und Dienste, die durch das Drittanbieter-Netzinfrastruktursystem 602 bereitgestellt werden, von mehreren Organisationen in einer zusammenhängenden Gemeinschaft gemeinsam genutzt werden. In mindestens einer Ausführungsform können Drittanbieter-Netzdienste auch im Rahmen eines hybriden Drittanbieter-Netzmodells bereitgestellt werden, das eine Kombination von zwei oder mehr unterschiedlichen Modellen ist.
  • In mindestens einer Ausführungsform können die vom Drittanbieter-Netzinfrastruktursystem 602 bereitgestellten Dienste einen oder mehrere Dienste beinhalten, die unter der Kategorie Software as a Service (SaaS), der Kategorie Platform as a Service (PaaS), der Kategorie Infrastructure as a Service (IaaS) oder anderen Kategorien von Diensten einschließlich hybrider Dienste bereitgestellt werden. In mindestens einer Ausführungsform kann ein Kunde über einen Abonnementauftrag einen oder mehrere Dienste bestellen, die durch das Drittanbieter-Netzinfrastruktursystem 602 bereitgestellt werden. In mindestens einer Ausführungsform führt das Drittanbieter-Netzinfrastruktursystem 602 dann die Verarbeitung durch, um Dienste in einem Abonnementauftrag des Kunden bereitzustellen.
  • In mindestens einer Ausführungsform können die vom Drittanbieter-Netzinfrastruktursystem 602 bereitgestellten Dienste ohne Einschränkung Anwendungsdienste, Plattformdienste und Infrastrukturdienste beinhalten. In mindestens einer Ausführungsform können Anwendungsdienste durch ein Drittanbieter-Netzinfrastruktursystem über eine SaaS-Plattform bereitgestellt werden. In mindestens einer Ausführungsform kann die SaaS-Plattform konfiguriert sein, um Drittanbieter-Netzdienste bereitzustellen, die in eine SaaS-Kategorie fallen. In mindestens einer Ausführungsform kann die SaaS-Plattform Fähigkeiten zum Erstellen und Liefern einer Suite von On-Demand-Anwendungen auf einer integrierten Entwicklungs- und Einsatzplattform bereitstellen. In mindestens einer Ausführungsform kann die SaaS-Plattform die zugrundeliegende Software und Infrastruktur zum Bereitstellen von SaaS-Diensten verwalten und steuern. In mindestens einer Ausführungsform können Kunden durch Nutzung von durch eine SaaS-Plattform bereitgestellten Diensten Anwendungen nutzen, die in einem Drittanbieter-Netzinfrastruktursystem ausgeführt werden. In mindestens einer Ausführungsform können Kunden Anwendungsdienste erwerben, ohne dass Kunden separate Lizenzen und Support erwerben müssen. In mindestens einer Ausführungsform können verschiedene unterschiedliche SaaS-Dienste bereitgestellt werden. In mindestens einer Ausführungsform beinhalten Beispiele, ohne Einschränkung, Dienste, die Lösungen für das Vertriebsleistungsmanagement, die Unternehmensintegration und die Geschäftsflexibilität für große Organisationen bereitstellen.
  • In mindestens einer Ausführungsform können Plattformdienste vom NetzInfrastruktursystem 602 eines Drittanbieters über eine PaaS-Plattform bereitgestellt werden. In mindestens einer Ausführungsform kann eine PaaS-Plattform konfiguriert sein, um Drittanbieter-Netzdienste bereitzustellen, die in eine PaaS-Kategorie fallen. In mindestens einer Ausführungsform können Beispiele von Plattformdiensten ohne Einschränkung Dienste beinhalten, die es Organisationen ermöglichen, vorhandene Anwendungen auf einer geteilten, gemeinsamen Architektur zu konsolidieren, sowie die Fähigkeit, neue Anwendungen zu erstellen, die durch eine Plattform bereitgestellte geteilte Dienste einsetzen. In mindestens einer Ausführungsform kann die PaaS-Plattform die zugrundeliegende Software und Infrastruktur zum Bereitstellen von PaaS-Diensten verwalten und steuern. In mindestens einer Ausführungsform können Kunden PaaS-Dienste, die durch das Drittanbieter-Netzinfrastruktursystem 602 bereitgestellt werden, erwerben, ohne dass Kunden separate Lizenzen und Support erwerben müssen.
  • In mindestens einer Ausführungsform können Kunden durch die Nutzung von Diensten, die von einer PaaS-Plattform bereitgestellt werden, Programmiersprachen und Tools einsetzen, die von einem Drittanbieter-Netzinfrastruktursystem unterstützt werden, und auch die eingesetzten Dienste steuern. In mindestens einer Ausführungsform können Plattformdienste, die durch ein Drittanbieter-Netzinfrastruktursystem bereitgestellt werden, Datenbank-Drittanbieter-Netzdienste, Middleware-Drittanbieter-Netzdienste und Drittanbieter-Netzdienste beinhalten. In mindestens einer Ausführungsform können Datenbank-Drittanbieter-Netzdienste gemeinsame Diensteinsatzmodelle unterstützen, die es Organisationen ermöglichen, Datenbankressourcen zu poolen und Kunden einen Datenbankals-Dienst in Form eines Datenbank-Drittanbieter-Netzes anzubieten. In mindestens einer Ausführungsform können Middleware-Drittanbieter-Netzdienste eine Plattform für Kunden bereitstellen, um verschiedene Geschäftsanwendungen zu entwickeln und bereitzustellen, und die Drittanbieter-Netzdienste können eine Plattform für Kunden bereitstellen, um Anwendungen in einem Drittanbieter-Netzinfrastruktursystem einzusetzen.
  • In mindestens einer Ausführungsform können verschiedene Infrastrukturdienste von einer IaaS-Plattform in einem Drittanbieter-Netzinfrastruktursystem bereitgestellt werden. In mindestens einer Ausführungsform ermöglichen Infrastrukturdienste die Verwaltung und Kontrolle von zugrunde liegenden Rechenressourcen, wie etwa Speicher, Netze und andere grundlegende Rechenressourcen, für Kunden, die Dienste nutzen, die durch eine SaaS-Plattform und eine PaaS-Plattform bereitgestellt werden.
  • In mindestens einer Ausführungsform kann das Drittanbieter-Netzinfrastruktursystem 602 auch Infrastrukturressourcen 630 beinhalten, um Ressourcen bereitzustellen, die für die Bereitstellung verschiedener Dienste für Kunden eines Drittanbieter-Netzinfrastruktursystems verwendet werden. In mindestens einer Ausführungsform können die Infrastrukturressourcen 630 vorintegrierte und optimierte Kombinationen von Hardware, wie etwa Server, Speicher und Netzressourcen, um Dienste auszuführen, die durch eine PaaS-Plattform und eine SaaS-Plattform bereitgestellt werden, und anderen Ressourcen beinhalten.
  • In mindestens einer Ausführungsform können die Ressourcen im Drittanbieter-Netzinfrastruktursystem 602 von mehreren Benutzern gemeinsam genutzt und je nach Bedarf dynamisch neu zugewiesen werden. In mindestens einer Ausführungsform können Benutzern in unterschiedlichen Zeitzonen Ressourcen zugewiesen werden. In mindestens einer Ausführungsform kann das Drittanbieter-Netzinfrastruktursystem 602 einer ersten Gruppe von Benutzern in einer ersten Zeitzone ermöglichen, Ressourcen eines Drittanbieter-Netzinfrastruktursystems für eine festgelegte Anzahl von Stunden zu nutzen, und dann eine Neuzuweisung derselben Ressourcen für eine andere Gruppe von Benutzern, die sich in einer anderen Zeitzone befinden, ermöglichen, wodurch die Nutzung der Ressourcen maximiert wird.
  • In mindestens einer Ausführungsform kann eine Anzahl interner gemeinsam genutzter Dienste 632 bereitgestellt werden, die von verschiedenen Komponenten oder Modulen des Drittanbieter-Netzinfrastruktursystems 602 gemeinsam genutzt werden, um die Bereitstellung von Diensten durch das Drittanbieter-Netzinfrastruktursystem 602 zu ermöglichen. In mindestens einer Ausführungsform können diese internen gemeinsam genutzten Dienste ohne Einschränkung einen Sicherheits- und Identitätsdienst, einen Integrationsdienst, einen Unternehmens-Repository-Dienst, einen Unternehmensmanagerdienst, einen Virenscan- und Whitelist-Dienst, einen Hochverfügbarkeits-, Sicherungs- und Wiederherstellungsdienst, Dienst zum Ermöglichen von Drittanbieter-Netzunterstützung, einen E-Mail-Dienst, einen Benachrichtigungsdienst, einen Dateiübertragungsdienst und/oder Variationen davon beinhalten.
  • In mindestens einer Ausführungsform kann das Drittanbieter-Netzinfrastruktursystem 602 eine umfassende Verwaltung von Drittanbieter-Netzdiensten (z. B. SaaS-, PaaS- und IaaS-Diensten) in einem Drittanbieter-Netzinfrastruktursystem bereitstellen. In mindestens einer Ausführungsform kann die Drittanbieter-Netzmanagementfunktionalität Fähigkeiten zum Bereitstellen, Verwalten und Verfolgen eines durch das Drittanbieter-Netzinfrastruktursystem 602 empfangenen Abonnements eines Kunden und/oder Variationen davon beinhalten.
  • In mindestens einer Ausführungsform kann die Drittanbieter-Netzmanagementfunktionalität wie in 6 dargestellt durch ein oder mehrere Module bereitgestellt werden, wie etwa ein Auftragsmanagementmodul 620, ein Auftragsorchestrierungsmodul 622, ein Auftragsbereitstellungsmodul 624, ein Auftragsmanagement- und -überwachungsmodul 626 und ein Identitätsmanagementmodul 628. In mindestens einer Ausführungsform können diese Module einen oder mehrere Computer und/oder Server beinhalten oder unter Verwendung derselben bereitgestellt werden, die Allzweckcomputer, spezialisierte Server-Computer, Serverfarmen, Servercluster oder eine beliebige andere geeignete Anordnung und/oder Kombination sein können.
  • In mindestens einer Ausführungsform kann bei Schritt 634 ein Kunde, der eine Client-Vorrichtung, wie etwa die Client-Rechenvorrichtungen 604, 606 oder 608, verwendet, mit dem Drittanbieter-Netzinfrastruktursystem 602 interagieren, indem er einen oder mehrere vom Drittanbieter-Netzinfrastruktursystem 602 bereitgestellte Dienste anfordert und einen Auftrag für ein Abonnement für einen oder mehrere vom Drittanbieter-Netzinfrastruktursystem 602 angebotene Dienste erteilt. In mindestens einer Ausführungsform kann ein Kunde auf eine Benutzerschnittstelle (user interface - UI) eines Drittanbieter-Netzes zugreifen, wie etwa eine Drittanbieter-Netz-UI 612, eine Drittanbieter-Netz-UI 614 und/oder eine Drittanbieter-Netz-UI 616, und einen Abonnementauftrag über diese UIs erteilen. In mindestens einer Ausführungsform können Auftragsinformationen, die durch das Drittanbieter-Netzinfrastruktursystem 602 als Reaktion darauf, dass ein Kunde einen Auftrag erteilt, empfangen werden, Informationen beinhalten, die einen Kunden und einen oder mehrere Dienste identifizieren, die durch ein Drittanbieter-Netzinfrastruktursystem 602 angeboten werden, die ein Kunde abonnieren möchte.
  • In mindestens einer Ausführungsform können bei Schritt 636 von einem Kunden empfangene Auftragsinformationen in einer Auftragsdatenbank 618 gespeichert werden. In mindestens einer Ausführungsform kann, wenn es sich um einen neuen Auftrag handelt, ein neuer Datensatz für einen Auftrag erstellt werden. In mindestens einer Ausführungsform kann die Auftragsdatenbank 618 eine von mehreren Datenbanken sein, die durch das Drittanbieter-Netzinfrastruktursystem 602 betrieben und in Verbindung mit anderen Systemelementen betrieben werden.
  • In mindestens einer Ausführungsform kann in Schritt 638 eine Auftragsinformation an ein Auftragsmanagementmodul 620 weitergeleitet werden, das so konfiguriert sein kann, dass es Abrechnungs- und Buchhaltungsfunktionen in Bezug auf einen Auftrag durchführt, wie beispielsweise die Überprüfung eines Auftrags und nach der Überprüfung die Buchung eines Auftrags.
  • In mindestens einer Ausführungsform können bei Schritt 640 Informationen bezüglich eines Auftrags an ein Auftragsorchestrierungsmodul 622 übermittelt werden, das konfiguriert ist, um die Bereitstellung von Diensten und Ressourcen für einen durch einen Kunden erteilten Auftrag zu koordinieren. In mindestens einer Ausführungsform kann das Auftragsorchestrierungsmodul 622 Dienste des Auftragsbereitstellungsmoduls 624 für die Bereitstellung verwenden. In mindestens einer Ausführungsform ermöglicht das Auftragsorchestrierungsmodul 622 die Verwaltung von Geschäftsprozessen, die mit jedem Auftrag assoziiert sind, und wendet Geschäftslogik an, um zu bestimmen, ob ein Auftrag zur Bereitstellung fortfahren sollte.
  • In mindestens einer Ausführungsform sendet das Auftragsorchestrierungsmodul 622 bei Schritt 642 nach Empfang eines Auftrags für ein neues Abonnement eine Anfrage an das Auftragsbereitstellungsmodul 624, um Ressourcen zuzuweisen und Ressourcen zu konfigurieren, die zur Erfüllung eines Abonnementauftrags erforderlich sind. In mindestens einer Ausführungsform ermöglicht das Auftragsbereitstellungsmodul 624 eine Zuweisung von Ressourcen für durch einen Kunden beauftragte Dienste. In mindestens einer Ausführungsform stellt das Auftragsbereitstellungsmodul 624 eine Abstraktionsebene zwischen Drittanbieter-Netzdiensten, die durch das Drittanbieter-Netzinfrastruktursystem 602 bereitgestellt werden, und einer physischen Implementierungsschicht bereit, die verwendet wird, um Ressourcen zum Bereitstellen angeforderter Dienste bereitzustellen. In mindestens einer Ausführungsform ermöglicht dies, das Auftragsorchestrierungsmodul 622 von Implementierungsdetails zu isolieren, beispielsweise ob Dienste und Ressourcen tatsächlich in Echtzeit bereitgestellt oder vorab bereitgestellt und nur auf Anfrage zugewiesen/zugeordnet werden.
  • In mindestens einer Ausführungsform kann bei Schritt 644, sobald die Dienste und Ressourcen bereitgestellt sind, eine Benachrichtigung an die Abonnementkunden gesendet werden, die angibt, dass ein angeforderter Dienst nun zur Nutzung bereit ist. In mindestens einer Ausführungsform können Informationen (z. B. ein Link) an einen Kunden gesendet werden, die es einem Kunden ermöglichen, mit der Verwendung der angeforderten Dienste zu beginnen.
  • In mindestens einer Ausführungsform kann bei Schritt 646 ein Abonnementauftrag eines Kunden durch ein Auftragsmanagement- und -überwachungsmodul 626 verwaltet und verfolgt werden. In mindestens einer Ausführungsform kann das Auftragsmanagement- und - überwachungsmodul 626 konfiguriert sein, um Nutzungsstatistiken bezüglich einer Kundennutzung von abonnierten Diensten zu sammeln. In mindestens einer Ausführungsform können Statistiken für eine verwendete Speichermenge, eine Menge an übertragenen Daten, eine Anzahl von Benutzern und eine Menge an Systembetriebszeit und Systemausfallzeit und/oder Variationen davon gesammelt werden.
  • In mindestens einer Ausführungsform kann das Drittanbieter-Netzinfrastruktursystem 602 ein Identitätsmanagementmodul 628 beinhalten, das so konfiguriert ist, dass es Identitätsdienste wie etwa Zugriffsverwaltung und Autorisierungsdienste im Drittanbieter-Netzinfrastruktursystem 602 bereitstellt. In mindestens einer Ausführungsform kann das Identitätsmanagementmodul 628 Informationen über Kunden steuern, die Dienste nutzen möchten, die durch das Drittanbieter-Netzinfrastruktursystem 602 bereitgestellt werden. In mindestens einer Ausführungsform können solche Informationen beinhalten, die Identitäten solcher Kunden authentifizieren, und Informationen, die beschreiben, zu welchen Handlungen diese Kunden in Bezug auf verschiedene Systemressourcen (z. B. Dateien, Verzeichnisse, Anwendungen, Kommunikationsports, Speichersegmente usw.) autorisiert sind. In mindestens einer Ausführungsform kann das Identitätsmanagementmodul 628 auch die Verwaltung von beschreibenden Informationen über jeden Kunden und darüber, wie und von wem auf diese beschreibenden Informationen zugegriffen und diese modifiziert werden können, beinhalten.
  • 7 veranschaulicht eine Cloud-Computing-Umgebung 702 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform umfasst die Cloud-Computing-Umgebung 702 ein oder mehrere Computersysteme/Server 704, mit denen Rechenvorrichtungen wie ein persönlicher digitaler Assistent (PDA) oder ein Mobiltelefon 706A, ein Desktop-Computer 706B, ein Laptop-Computer 706C und/oder ein Automobilcomputersystem 706N kommunizieren. In mindestens einer Ausführungsform ermöglicht dies, dass Infrastruktur, Plattformen und/oder Software als Dienste von der Cloud-Computing-Umgebung 702 angeboten werden, sodass nicht jeder Client diese Ressourcen separat pflegen muss. Es versteht sich, dass die in 7 gezeigten Arten von Rechenvorrichtungen 706A-N nur veranschaulichend sein sollen und dass die Cloud-Computing-Umgebung 702 mit jeder Art von computergestützter Vorrichtung über jede Art von Netz und/oder Netz-/adressierbare Verbindung (z. B. über einen Webbrowser) kommunizieren kann.
  • In mindestens einer Ausführungsform ist ein Computersystem/Server 704, das bzw. der als ein Cloud-Computing-Knoten bezeichnet werden kann, mit zahlreichen anderen Allzweck- oder Spezialzweck-Rechensystemumgebungen oder -konfigurationen betriebsfähig. In mindestens einer Ausführungsform beinhalten Beispiele von Rechensystemen, - umgebungen und/oder -konfigurationen, die zur Verwendung mit dem Computersystem/Server 704 geeignet sein können, Personalcomputersysteme, Server-Computersysteme, Thin Clients, Thick Clients, Hanggeräte oder Laptop-Vorrichtungen, Multiprozessorsysteme, mikroprozessorbasierte Systeme, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netz-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Cloud-Computing-Umgebungen, die ein beliebiges der oben genannten Systeme oder eine beliebige der oben genannten Vorrichtungen beinhalten, und/oder Variationen davon, ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform kann das Computersystem/Server 704 in einem allgemeinen Kontext von durch das Computersystem ausführbaren Anweisungen, wie etwa Programmmodulen, beschrieben werden, die von einem Computersystem ausgeführt werden. In mindestens einer Ausführungsform beinhalten die Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw., die konkrete Tasks ausführen oder konkrete abstrakte Datenarten implementieren. In mindestens einer Ausführungsform kann das beispielhafte Computersystem/der beispielhafte Server 704 in verteilten Cloud-Computing-Umgebungen in die Praxis umgesetzt sein, in denen Tasks durch entfernte Verarbeitungsvorrichtungen durchgeführt werden, die über ein Kommunikationsnetz miteinander verbunden sind. In mindestens einer Ausführungsform können sich in einer verteilten Cloud-Computing-Umgebung Programmmodule sowohl auf lokalen als auch entfernten Computersystemspeichermedien, einschließlich Speichervorrichtungen, befinden.
  • 8 veranschaulicht einen Satz von funktionalen Abstraktionsschichten, der gemäß mindestens einer Ausführungsform durch die Cloud-Computing-Umgebung 702 ( 7) bereitgestellt wird. Es sollte im Voraus verstanden werden, dass die in 8 gezeigten Komponenten, Schichten und Funktionen nur zur Veranschaulichung gedacht sind und Komponenten, Schichten und Funktionen variieren können.
  • In mindestens einer Ausführungsform beinhaltet die Hardware- und Softwareschicht 802 Hardware- und Softwarekomponenten. In mindestens einer Ausführungsform beinhalten Beispiele von Hardwarekomponenten Mainframes, verschiedene Server, die auf einer RISC-Architektur (Reduced Instruction Set Computer) basieren, verschiedene Rechensysteme, Hochleistungsrechensysteme, Speichervorrichtungen, Netze, Netzkomponenten und/oder Variationen davon. In mindestens einer Ausführungsform beinhalten Beispiele von Softwarekomponenten Netzanwendungsserversoftware, verschiedene Anwendungsserversoftware, verschiedene Datenbanksoftware und/oder Variationen davon.
  • In mindestens einer Ausführungsform stellt die Virtualisierungsschicht 804 eine Abstraktionsschicht bereit, von der die folgenden virtuellen beispielhaften Einheiten bereitgestellt werden können: virtuelle Server, virtueller Speicher, virtuelle Netze, einschließlich virtueller privater Netze, virtuelle Anwendungen, virtuelle Clients und/oder Variationen davon.
  • In mindestens einer Ausführungsform stellt die Verwaltungsschicht 806 verschiedene Funktionen bereit. In mindestens einer Ausführungsform stellt Ressourcenbereitstellung eine dynamische Beschaffung von Rechenressourcen und anderen Ressourcen bereit, die genutzt werden, um Tasks innerhalb einer Cloud-Computing-Umgebung durchzuführen. In mindestens einer Ausführungsform stellt eine Verbrauchserfassung eine Nutzungsverfolgung, wenn Ressourcen innerhalb einer Cloud-Computing-Umgebung genutzt werden, und eine Abrechnung oder Fakturierung für den Verbrauch dieser Ressourcen bereit. In mindestens einer Ausführungsform können Ressourcen Anwendungssoftwarelizenzen umfassen. In mindestens einer Ausführungsform stellt eine Sicherheit eine Identitätsprüfung für Benutzer und Tasks sowie Schutz für Daten und andere Ressourcen bereit. In mindestens einer Ausführungsform stellt die Benutzerschnittstelle sowohl Benutzern als auch Systemadministratoren Zugriff auf eine Cloud-Computing-Umgebung bereit. In mindestens einer Ausführungsform stellt die Dienstebenenverwaltung die Zuweisung und Verwaltung von Cloud-Computing-Ressourcen bereit, sodass die erforderlichen Dienstebenen erfüllt werden. In mindestens einer Ausführungsform stellt die Verwaltung der Dienstleistungsvereinbarung (Service Level Agreement - SLA) eine Vorab-Anordnung für und Beschaffung von Cloud-Computing-Ressourcen bereit, für die gemäß einem SLA eine zukünftige Anforderung erwartet wird.
  • In mindestens einer Ausführungsform stellt die Arbeitslastschicht 808 eine Funktionalität bereit, für die eine Cloud-Computing-Umgebung verwendet wird. In mindestens einer Ausführungsform beinhalten Beispiele von Arbeitslasten und Funktionen, die von dieser Schicht bereitgestellt werden können, Folgendes: Kartierung und Navigation, Softwareentwicklung und -verwaltung, Bildungsdienste, Datenanalyse und -verarbeitung, Transaktionsverarbeitung und Dienstbereitstellung.
  • HOCHLEISTUNGSRECHNEN
  • Die folgenden Figuren legen ohne Einschränkung supercomputerbasierte beispielhafte 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 Netz 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 Netz miteinander verbunden sind, ein bestimmtes Beispiel eines Supercomputers. In mindestens einer Ausführungsform ist ein einzelnes Rack eines solchen großen Hardwaresystems ein weiteres 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.
  • 9 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 (904) durchgeführt, die als Thread-Einheiten bezeichnet werden. In mindestens einer Ausführungsform verbinden Aufgaben- und Synchronisationsnetze (902) 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 Speichernetzen (906, 910) auf eine partitionierte Mehrebenen-Cache-Hierarchie (908, 912) auf einem Chip zugegriffen. In mindestens einer Ausführungsform wird auf einen chipexternen Speicher unter Verwendung von Speichersteuerungen (916) und einem chipexternen Speichernetz (914) zugegriffen. In mindestens einer Ausführungsform wird eine E/A-Steuerung (918) für chipübergreifende Kommunikation verwendet, wenn eine Ausgestaltung nicht in einen einzelnen Logikchip passt.
  • 10 veranschaulicht einen Supercomputer auf Rack-Modulebene gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform gibt es innerhalb eines Rack-Moduls mehrere FPGA- oder ASIC-Chips (1002), die mit einer oder mehreren DRAM-Einheiten (1004) 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 (1006) verbunden. In mindestens einer Ausführungsform ist jeder FPGA/ASIC-Chip auch mit mindestens einem seriellen Hochgeschwindigkeitskommunikationskabel verbunden.
  • 11 veranschaulicht einen Supercomputer auf Rack-Ebene gemäß mindestens einer Ausführungsform. 12 veranschaulicht einen Supercomputer auf Gesamtsystemebene gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform werden unter Bezugnahme auf 11 und 12 zwischen Rack-Modulen in einem Rack und über Racks hinweg durch ein gesamtes System serielle optische Hochgeschwindigkeits- oder Kupferkabel (1102, 1202) verwendet, um ein skalierbares, möglicherweise unvollständiges Hypercube-Netz zu realisieren. In mindestens einer Ausführungsform ist einer der FPGA/ASIC-Chips eines Beschleunigers über eine PCI-Express-Verbindung (1204) mit einem Host-System verbunden. In mindestens einer Ausführungsform umfasst das Host-System einen Host-Mikroprozessor (1208), auf dem ein Softwareteil einer Anwendung läuft, und einen Speicher, der aus einer oder mehreren Host-Speicher-DRAM-Einheiten (1206) 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-Netz 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.
  • RESSOURCENNUTZUNGSVORHERSAGE UND RESSOURCENZUWEISUNG
  • Die folgenden Figuren stellen ohne Einschränkung beispielhafte Systeme und - Verfahren dar, die eine oder mehrere Rechenressourcen (z. B. von einem oder mehreren Knoten eines Rechenzentrums) zum Durchführen einer oder mehrerer Arbeitslasten vorhersagen. In mindestens einer Ausführungsform werden ein oder mehrere neuronale Netze zur Vorhersage der einen oder mehreren Rechenressourcen verwendet, um die eine oder mehreren Arbeitslasten durchzuführen. In mindestens einer Ausführungsform führen das eine oder die mehreren neuronalen Netze eine Vorhersage der Ressourcennutzung für Arbeitslasten durch und empfehlen Ressourcen wie beispielsweise einen oder mehrere Knoten eines Rechenzentrums zur Verwendung beim Ausführen von Arbeitslasten.
  • Infrastructure as a Service (IaaS) ist eine Art von Cloud-Computing-Service, der von einem Cloud-Service-Anbieter (CSP) angeboten wird und Ressourcen wie Rechen-, Arbeitsspeicher-, Speicher-, Netz- und Netzressourcen nach Bedarf auf einer Pay-as-you-go-Basis bereitstellt. Unternehmen und Privatpersonen können eine IaaS-Lösung verwenden, um den Wartungsaufwand für Rechenzentren vor Ort zu verringern, Hardwarekosten zu sparen usw. IaaS-Services stellen die Flexibilität bereit, IT-Ressourcen je nach Bedarf zu erweitern oder zu reduzieren. IaaS-Lösungen ermöglichen es Unternehmen und anderen Einrichtungen außerdem, schnell neue Anwendungen bereitzustellen und die Zuverlässigkeit der zugrunde liegenden Infrastruktur zu erhöhen. Bei IaaS kann jede Ressource und/oder jedes Ressourcenbündel, wie beispielsweise Knoten, die Sätze von Ressourcen enthalten, als eine Servicekomponente angeboten werden.
  • Platform as a Service (PaaS) ist eine komplette Entwicklungs- und Bereitstellungsumgebung, die von einem CSP angeboten wird und über Ressourcen verfügt, mit denen Kunden Anwendungen erstellen und abgeben können. Ähnlich wie IaaS beinhaltet PaaS Infrastrukturdienste wie Server, Arbeitsspeicher, Netze und Speicher. PaaS kann auch Middleware, Systeme zur Verwaltung von Datenbanken, Entwicklungstools, Business Intelligence (BI)-Dienste und so weiter beinhalten.
  • In mindestens einer Ausführungsform wird eine Infrastrukturplattform für ein Rechenzentrum für künstliche Intelligenz (KI) bereitgestellt. Beispiele für eine KI-Infrastrukturplattform für Rechenzentren sind Nvidia® DGX™ SuperPOD™ und DGX™ Foundry. In mindestens einer Ausführungsform stellt eine Infrastrukturplattform für ein Rechenzentrum für künstliche Intelligenz (KI) eine beschleunigte Infrastruktur und/oder eine skalierbare Leistung bereit, die auf KI wie beispielsweise maschinelles Lernen (ML) und andere Lasten des Hochleistungsrechnens (HPC) zugeschnitten ist.
  • Wenn Kunden Ressourcendienste von einem Cloud-Dienstanbieter (CSP) für ein Bedürfnis erwerben, kann der Kunde aufgefordert werden, manuell auszuwählen, welche Ressourcen er benötigt und wie viele dieser Ressourcen er benötigt. Zum Beispiel kann ein Kunde, der Ressourcen aus einem IaaS- oder PaaS-Angebot erwirbt, manuell auswählen, welche und wie viele dieser Ressourcen er benötigt. Beispiele für solche Ressourcen beinhalten Rechenressourcen, Speicherressourcen, Arbeitsspeicherressourcen, Netzressourcen und so weiter. Häufig kennen die Kunden jedoch nicht die Ressourcenanforderungen ihrer Arbeitslast und kaufen daher die falsche Art und/oder die falsche Menge an Ressourcen, was zu Ineffizienzen führt. Zum Beispiel wissen Ingenieure oder Datenwissenschaftler möglicherweise nicht, welche Infrastrukturkapazität oder Infrastrukturleistung für eine bestimmte Arbeitslast geeignet ist. Dies gilt insbesondere für Deep Learning-basierte Arbeitslasten, aber auch für Arbeitslasten, die kein maschinelles Lernen beinhalten.
  • Für den Einzelnen ist es oft schwierig zu wissen, welche Ressourcen für eine bestimmte Aufgabe oder Arbeitslast benötigt werden. Dieses Problem wird bei maschinellen Lernaufgaben wie beispielsweise Deep Learning noch verschärft. In mindestens einer Ausführungsform werden Kostenrechner bereitgestellt, die es Kunden ermöglichen, die Kosten für eine bestimmte Ressourcennutzung zu berechnen. Um solche Kostenrechner zu verwenden, muss ein Kunde wie beispielsweise ein Fachmann für maschinelles Lernen oder ein Ingenieur jedoch wissen, welche Ressourcen er benötigt, damit der Kostenrechner nützlich ist. In der Regel wissen Praktiker im Bereich des maschinellen Lernens nicht, welche Ressourcen zum Ausführen von Arbeitslasten im Bereich des maschinellen Lernens benötigt werden, wie und wann die Ressourcen skaliert werden müssen oder welche Art von grafischer Verarbeitungseinheit (GPU), zentraler Verarbeitungseinheit (CPU) oder anderer Hardware für die Arbeitslasten im Bereich des maschinellen Lernens die beste Wahl ist. Dies gilt auch für Arbeitslasten, die nicht auf maschinellem Lernen beruhen.
  • In mindestens einer Ausführungsform empfängt ein Ressourcenorchestrator Eingaben, die einem oder mehreren Arbeitslasten zuzuordnen sind, die in einem Rechenzentrum ausgeführt werden sollen, wie beispielsweise einem Rechenzentrum, das einem IaaS, einer PaaS, einer KI-Rechenzentrumsinfrastrukturplattform usw. zugeordnet ist, und empfiehlt Ressourcen für die Ausführung der einen oder mehreren Arbeitslasten. Die empfohlenen Ressourcen können empfohlene Mengen und/oder Arten von Ressourcen beinhalten, wie beispielsweise spezifische Hardwareempfehlungen. In mindestens einer Ausführungsform werden ein oder mehrere Knoten empfohlen, die eine oder mehrere vorausgesagte Rechenressourcen zum Durchführen einer Arbeitslast umfassen.
  • In mindestens einer Ausführungsform beinhaltet ein Ressourcenorchestrator einen Ressourcenprädiktor, der Daten und einen auf maschinellem Lernen basierenden Ansatz verwendet, um ein maschinelles Lernmodell zu trainieren, um den Bedarf an Ressourcen für eine oder mehrere Arbeitslasten vorherzusagen und/oder zu empfehlen, welche Ressourcen aus einem Satz verfügbarer Ressourcen dem vorhergesagten Bedarf am besten entsprechen. In mindestens einer Ausführungsform werden eine erste Eingabe zu den Einzelheiten der Arbeitslast und eine zweite Eingabe zu den Einzelheiten des Systems einem trainierten maschinellen Lernmodell bereitgestellt, das eine Vorhersage der Ressourcennutzung der Arbeitslast(en), einer oder mehrerer Rechenressourcen zum Durchführen der Arbeitslast(en) und/oder empfohlener Ressourcen zur Anpassung an die vorhergesagte Ressourcennutzung ausgibt. In mindestens einer Ausführungsform gibt das trainierte maschinelle Lernmodell ferner einen Konfidenzwert der vorhergesagten Ressourcennutzung für die vorhergesagte(n) eine(n) oder mehrere Rechenressource(n) zum Durchführen der einen oder mehreren Arbeitslasten und/oder für die empfohlenen Ressourcen aus. In mindestens einer Ausführungsform kann ein Kunde die Empfehlung akzeptieren, mit der Zuweisung und/oder Planung der Ausführung einer Arbeitslast auf empfohlenen Ressourcen zu beginnen, die einen oder mehrere empfohlene Knoten beinhalten können.
  • 13 veranschaulicht einen Ressourcenorchestrator 1305 in Kommunikation mit einer Client-Vorrichtung 1302 und einem Rechenzentrum 1340 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der Ressourcenorchestrator 1305 einer Schnittstelle und/oder einem Kommandozentrum für das Rechenzentrum 1340 zugeordnet. In mindestens einer Ausführungsform ist der Ressourcenorchestrator 1305 eine Komponente von Nvidia Base Command. In mindestens einer Ausführungsform ist der Ressourcenorchestrator 1305 eine Komponente des Kubrenetes. In mindestens einer Ausführungsform ist der Ressourcenorchestrator 1305 eine Komponente eines Systems zur Verwaltung von Clustern für Rechenzentren 1340. In mindestens einer Ausführungsform automatisiert der Ressourcenorchestrator 1305 die durchgängige Verwaltung der Ressourcen des Rechenzentrums 1340. In mindestens einer Ausführungsform stellt der Ressourcenorchestrator 1305 die Verwaltung der Knoten des Rechenzentrums 1340 bereit. In mindestens einer Ausführungsform ist der Ressourcenorchestrator 1305 eine Komponente einer Lösung zur Steuerung des Rechenzentrums. In mindestens einer Ausführungsform stellt die Rechenzentrums-Befehlslösung die Erstbereitstellung, Betriebssystem- und Firmware-Updates, die Rekonfiguration des Systems auf Abruf, die Überprüfung des Systemzustands, die Echtzeitüberwachung und/oder andere Funktionen bereit. In mindestens einer Ausführungsform ist die Lösung zur Steuerung des Rechenzentrums, einschließlich des Ressourcenorchestrators 1305, für die Entwicklung und den Einsatz von KI und ML optimiert. In mindestens einer Ausführungsform wird der Ressourcenorchestrator 1305 auf einem Knoten wie beispielsweise einem Befehlsknoten des Rechenzentrums 1340 ausgeführt.
  • In mindestens einer Ausführungsform beinhaltet das Rechenzentrum 1340 eine Vielzahl von Rechenressourcen, einschließlich Rechenressourcen, Netzressourcen, Speicherressourcen und/oder Speicherressourcen. In mindestens einer Ausführungsform beinhalten die Rechenressourcen eine oder mehrere Verarbeitungsvorrichtungen wie CPUs, GPUs, Datenverarbeitungseinheiten (DPUs), feldprogrammierbare Gate-Arrays (FPGAs) usw. In mindestens einer Ausführungsform sind einige Rechenressourcen für bestimmte Arten von Arbeitslasten optimiert. Zum Beispiel können einige Rechenressourcen GPUs beinhalten, die für bestimmte Arten von maschinellen Lernaufgaben optimiert sind. In mindestens einer Ausführungsform beinhalten die Speicherressourcen logischen Speicher, der Blockspeicher, Objektspeicher und/oder Dateispeicher beinhalten kann. In mindestens einer Ausführungsform beinhalten die verschiedenen Speicherknoten unterschiedliche Speicherkapazitäten, unterschiedliche Lese- und/oder Schreibgeschwindigkeiten, unterschiedliche Backup-Eigenschaften und so weiter. In mindestens einer Ausführungsform beinhalten die Speicherressourcen einen statischen Speicher und/oder einen flüchtigen Speicher wie beispielsweise einen Direktzugriffsspeicher (RAM). In mindestens einer Ausführungsform beinhalten Netzressourcen Netzvorrichtungen wie beispielsweise Netzeschnittstellenkarten (NICs), Router, Schalter und so weiter. In mindestens einer Ausführungsform können verschiedene Netzressourcen verschiedene Netzbandbreiten, verschiedene Kommunikationsprotokolle unterstützen, verschiedene Level an Sicherheit bereitstellen und so weiter.
  • In mindestens einer Ausführungsform beinhaltet das Rechenzentrum 1340 eine Vielzahl von Knoten, wobei jeder Knoten eine oder mehrere Rechenressourcen enthält, darunter eine oder mehrere Rechenressourcen, Netzressourcen, Speicherressourcen und/oder Speicher. In mindestens einer Ausführungsform beinhaltet das Rechenzentrum 1340 einen heterogenen Satz von Knoten, wobei einige Knoten eine andere Hardware als andere Knoten beinhalten. In mindestens einer Ausführungsform haben einige Knoten erste Leistungsmerkmale, unterstützen erste Funktionen, stellen erste Merkmale bereit, sind ersten Kühlungsmöglichkeiten zugeordnet, stellen erste Arten von Zusammenschaltungen bereit (z. B. InfiniBand, Ethernet usw.) usw. und andere Knoten haben zweite Leistungsmerkmale, unterstützen zweite Funktionen, sind zweiten Kühlungsmöglichkeiten zugeordnet, stellen zweite Arten von Zusammenschaltungen bereit, stellen zweite Merkmale bereit usw. Unterschiedliche Arbeitslasten können von unterschiedlichen Leistungsmerkmalen profitieren, unterschiedliche Funktionen beinhalten, die von bestimmten Knoten bereitgestellt werden können oder nicht, Funktionen erfordern, die von bestimmten Knoten bereitgestellt werden können oder nicht, und so weiter. In mindestens einer Ausführungsform erfordert eine Arbeitslast ein Sicherheitsprotokoll. Einige Netzressourcen können das Sicherheitsprotokoll bereitstellen und andere Netzressourcen können das Sicherheitsprotokoll nicht bereitstellen.
  • In mindestens einer Ausführungsform ist die Client-Vorrichtung 1302 eine Workstation oder Rechenvorrichtung wie beispielsweise eine mobile Rechenvorrichtung oder eine stationäre Rechenvorrichtung eines Benutzers (z. B. eines Forschers). In mindestens einer Ausführungsform ist die Client-Vorrichtung 1302 ein Desktop-Computer, Laptop-Computer, Notebook-Computer, Mobiltelefon, Tablet-Computer oder eine andere Art von Rechenvorrichtung.
  • In mindestens einer Ausführungsform ist der Ressourcenorchestrator 1305 für die Verwaltung der Zuweisung von Ressourcen im Rechenzentrum 1340 zu Arbeitslasten verantwortlich. In mindestens einer Ausführungsform beinhaltet der Ressourcenorchestrator 1305 einen Ressourcenprädiktor 1370, der eine erste Eingabe von Arbeitslastdetails 1310 einer im Rechenzentrum 1340 auszuführenden Arbeitslast und eine zweite Eingabe von Systemdetails 1345 des Rechenzentrums 1340 empfängt.
  • In mindestens einer Ausführungsform beinhalten die Arbeitslast-Details 1310 Datendetails 1315, Modelldetails 1320, Operationsdetails 1325 und/oder die Ziel-Abschlusszeit 1330 für eine Arbeitslast. In mindestens einer Ausführungsform beinhalten die Datendetails 1315 Informationen zu den Daten, die in der zu verarbeitenden Arbeitslast enthalten sind. In mindestens einer Ausführungsform beinhalten die Datendetails 1315 die Datengröße, das Datenformat und/oder den Standort der Daten des Arbeitsaufkommens. In mindestens einer Ausführungsform beinhalten die Datendetails 1315 Informationen, die anzeigen, ob es sich bei den Daten der Arbeitslast um Bilddaten, zweidimensionale (2D) Daten, dreidimensionale (3D) Daten, mehrdimensionale Daten, Audiodaten, Videodaten, Textdaten usw. handelt. In mindestens einer Ausführungsform beinhalten die Datendetails 1315 der Bilddaten ein Bildformat, wie beispielsweise einen Farbraum. Beispiele für Farbräume beinhalten RGB, YUV, und so weiter. In mindestens einer Ausführungsform beinhalten die Datenangaben ein Schema für eine Datenbank, in der die Daten der Arbeitslast gespeichert sind.
  • In mindestens einer Ausführungsform beinhalten die Operationsdetails 1325 Informationen über eine oder mehrere Operationen oder Arten von Operationen, die an den Daten einer zu verarbeitenden Arbeitslast durchzuführen sind. In mindestens einer Ausführungsform zeigen die Operationsdetails 1325 ein Endziel für die Arbeitslast an. In mindestens einer Ausführungsform beinhalten die Operationsdetails 1325 Informationen über eine Pipeline von durchzuführenden Operationen. In mindestens einer Ausführungsform beinhalten Beispiele für Operationsdetails 1325 eine Operation oder einen Satz von Operationen zum Überführen von Lernprozessen, eine Operation oder einen Satz von Operationen zum Abstimmen von Hyperparametern, eine Operation oder einen Satz von Operationen zur Datenvorbereitung, eine Operation oder einen Satz von Operationen zur Datenbereitstellung und eine Operation oder einen Satz von Operationen zur Visualisierung von Experimenten. In mindestens einer Ausführungsform beinhaltet eine Operation des Überführungslernens das Umlernen eines bereits trainierten maschinellen Lernmodells unter Verwendung eines neuen Datensatzes. In mindestens einer Ausführungsform beinhaltet eine Operation zum Abstimmen von Hyperparametern das parallele Trainieren mehrerer Versionen eines maschinellen Lernmodells aus einem anfänglich untrainierten Zustand, wobei eine oder mehrere der Versionen des maschinellen Lernmodells unterschiedliche Hyperparameter aufweisen. In mindestens einer Ausführungsform beinhaltet eine Operation zur Datenvorbereitung eine oder mehrere Operationen, die Daten manipulieren, Daten herstellen und/oder einen Trainingsdatensatz von Daten zum Trainieren eines maschinellen Lernmodells erzeugen. Beispiele für Operationen zur Herstellung von Daten beinhalten Beschneidungsoperationen, Operationen zur Erzeugung synthetischer Daten, Bildverarbeitungsoperationen, Auffüllungsoperationen, Farbmanipulationsoperationen, Operationen zur Beseitigung von Rauschen oder Jitter, Bildmanipulationsoperationen, Bildvergrößerungsoperationen, Labeling-Operationen und so weiter. In mindestens einer Ausführungsform beinhaltet eine Operation zur Visualisierung von Experimenten das Erzeugen grafischer Darstellungen von Eingangs- und/oder Ausgangsdaten der Arbeitslast und das Vorliegen solcher grafischen Darstellungen. In mindestens einer Ausführungsform ist jede Operation oder jeder Operationstyp einer bestimmten Rechenressourcennutzung, Ressourcennutzung, Speicherressourcennutzung und so weiter zugeordnet.
  • In mindestens einer Ausführungsform umfasst eine Arbeitslast eine auf maschinellem Lernen basierende Arbeitslast. In mindestens einer Ausführungsform beinhalten die Modelldetails 1320 Details zum Typ des maschinellen Lernmodells, das für das Training und/oder die Inferenz verwendet werden soll. In mindestens einer Ausführungsform beinhalten die Modelldetails 1320 Informationen über die Größe eines zu verwendenden Modells und/oder Informationen, die einen Typ des zu verwendenden Modells oder Frameworks identifizieren. In mindestens einer Ausführungsform handelt es sich bei der Art des Modells um ein Deep Learning Modell. In mindestens einer Ausführungsform ist das Framework ein Deep Learning Framework. Beispiele für Deep Learning Frameworks beinhalten PyTorch, TensorFlow, PyTorch Geometric, grafische neuronale Netze (GNN), Keras, Theano, Deeplearning4j, Caffe, Chainer, CNTK, Sonnet, MxNet, Glucon, Open Neural Network Exchange (ONXX), H2O, Kaldi und TensorFlowJS, um nur einige zu nennen. In mindestens einer Ausführungsform werden für Arbeitslasten, die nicht auf maschinellem Lernen basieren, die Modelldetails 1320 weggelassen. In mindestens einer Ausführungsform werden bei Arbeitslasten, die nicht auf maschinellem Lernen basieren, die Modelldetails 1320 durch andere Details über durchzuführende Prozesse und/oder Anforderungen an durchzuführende Prozesse ersetzt, wie etwa Aufgabendetails und/oder Anforderungen. In mindestens einer Ausführungsform beinhaltet ein Aufgabendetail eine Sicherheitsprotokollanforderung. In mindestens einer Ausführungsform zeigen die Aufgabendetails und/oder Modelldetails 1320 eine oder mehrere spezifische Aufgaben an, die durchgeführt werden müssen, um ein Endziel der Arbeitslast zu erreichen, das in den Operationsdetails 1325 ausgedrückt ist.
  • In mindestens einer Ausführungsform beinhalten die Angaben zur Arbeitslast 1310 Branchendaten einer Branche, die der Arbeitslast zugeordnet ist. Beispiele für Branchen beinhalten Automobile, Medizin, Bildgebung, Finanzen und so weiter.
  • In mindestens einer Ausführungsform beinhaltet die Zielerledigungszeit 1330 eine Zielzeit für die Erledigung des Arbeitsaufkommens. In mindestens einer Ausführungsform wird das Ziel in Form von Sekunden, Minuten, Stunden und/oder Tagen angegeben.
  • In mindestens einer Ausführungsform leitet der Ressourcenorchestrator 1305 einige Details der Arbeitslast basierend auf anderen bereitgestellten Details der Arbeitslast ab. Zum Beispiel können Datendetails 1315 und Operationsdetails 1325 bereitgestellt werden, und der Ressourcenorchestrator 1305 kann basierend auf den bereitgestellten Datendetails 1315 und Operationsdetails 1325 automatisch empfohlene Modelldetails bestimmen. In mindestens einer Ausführungsform werden Arbeitslasten, die nicht bereitgestellt werden, basierend auf den bereitgestellten Arbeitslasten automatisch geschätzt, indem eine regelbasierte Engine oder ein trainiertes maschinelles Lernmodell verwendet wird. In mindestens einer Ausführungsform werden die bereitgestellten Angaben zur Arbeitslast in ein trainiertes maschinelles Lernmodell eingegeben, das Schätzungen oder Empfehlungen für eine oder mehrere andere Angaben zur Arbeitslast ausgibt, die nicht bereitgestellt wurden.
  • In mindestens einer Ausführungsform erzeugt der Ressourcenorchestrator 1305 ein Job-Profil, das eine oder mehrere Angaben zur Arbeitslast umfasst. Sobald ein Job-Profil erzeugt ist, kann das Job-Profil ausgewählt werden, um einige oder alle Arbeitslast-Details automatisch auszufüllen, ohne dass ein Benutzer diese Arbeitslast-Details manuell eindringen muss.
  • In mindestens einer Ausführungsform stellt der Ressourcenorchestrator 1305 eine Benutzeroberfläche bereit, wie beispielsweise eine grafische Benutzeroberfläche (GUI), die auf der Client-Vorrichtung 1302 vorliegt. Über die Benutzeroberfläche kann ein Benutzer mit dem Ressourcenorchestrator 1305 interagieren. In mindestens einer Ausführungsform gibt ein Benutzer über eine Benutzeroberfläche des Ressourcenorchestrators 1305 eine oder mehrere Angaben zur Arbeitslast 1310 an Ressourcenorchestrator 1305 ein. In mindestens einer Ausführungsform werden dem Ressourcenorchestrator 1305 Arbeitslast-Details 1310 ohne Benutzereingabe bereitgestellt. Zum Beispiel lädt in mindestens einer Ausführungsform die Client-Vorrichtung 1302 automatisch eine Datei mit einer oder mehreren Angaben zur Arbeitslast 1310 zum Ressourcenorchestrator 1305 hoch. In mindestens einer Ausführungsform wählt ein Benutzer über die grafische Benutzeroberfläche ein Job-Profil aus, und ein oder mehrere Details zur Arbeitslast werden aus dem ausgewählten Job-Profil bestimmt.
  • In mindestens einer Ausführungsform beinhalten die Systemdetails 1345 die Verfügbarkeit von Rechenressourcen 1350, die Verfügbarkeit von Speicherressourcen 1355, die Verfügbarkeit von Speicherressourcen 1360 und/oder die Verfügbarkeit von Netzressourcen 1365. In mindestens einer Ausführungsform beinhaltet das Rechenzentrum 1340 mehrere Knoten, von denen einige nicht verfügbar und einige verfügbar sein können. In mindestens einer Ausführungsform sind die verfügbaren Knoten heterogener Natur und können verschiedene Leistungsmerkmale mit Unterschieden bei den Rechenressourcen, Speicherressourcen, Speicherressourcen, Kühlungsmöglichkeiten, Arten von Netzzusammenschaltungen und/oder Netzressourcen beinhalten. In mindestens einer Ausführungsform beinhaltet das Rechenzentrum 1340 heterogene Knoten, wobei einige von ihnen Hochleistungs-GPUs und einige von ihnen weniger leistungsfähige GPUs beinhalten. In mindestens einer Ausführungsform beinhalten einige Knoten des Rechenzentrums 1340 GPUs mit einer größeren Anzahl von codierenden/dekodierenden Schaltungen als andere und/oder einige Knoten des Rechenzentrums 1340 beinhalten GPUs mit Hardware-Beschleunigern, die für die Verarbeitung von optischem Fluss besser geeignet sind als andere. In mindestens einer Ausführungsform beinhalten einige Knoten des Rechenzentrums 1340 eine sichere Vertrauensbasis, während andere Knoten des Rechenzentrums 1340 möglicherweise keine sichere Vertrauensbasis beinhalten. In mindestens einer Ausführungsform haben eine oder mehrere dem Gesundheitswesen zugehörige Arbeitslasten erhöhte Anforderungen an den Datenschutz und erfordern Knoten, die eine sichere Vertrauensbasis (Root of Trust) aufweisen. In mindestens einer Ausführungsform kann eine Arbeitslast, die den Details einer föderierten Lernoperation zugeordnet ist, besondere Anforderungen an die Latenzzeit des Netzes und/oder an die Bandbreite aufweisen. Einige Knoten des Rechenzentrums 1340 können die Anforderungen an die Netzlatenz und/oder die Bandbreite einer Arbeitslast erfüllen, während andere Knoten des Rechenzentrums 1340 die Anforderungen an die Netzlatenz und/oder die Bandbreite der Arbeitslast nicht erfüllen können. In mindestens einer Ausführungsform kann eine Arbeitslast interaktive Workflow-Anforderungen beinhalten. In mindestens einer Ausführungsform können Knoten des Rechenzentrums 1340, die FPGAs beinhalten, nicht in der Lage sein, die Anforderungen des interaktiven Workflows zu erfüllen, während Knoten des Rechenzentrums 1340, die CPUs, GPUs und/oder DPUs beinhalten, in der Lage sein können, die Anforderungen des interaktiven Workflows zu erfüllen.
  • In mindestens einer Ausführungsform werden dem Ressourcenorchestrator 1305 vom Rechenzentrum 1340 basierend auf der aktuellen Nutzung und/oder der aktuellen Verfügbarkeit eines oder mehrerer Knoten des Rechenzentrums 1340 Systemdetails 1345 bereitgestellt.
  • In mindestens einer Ausführungsform ist der Ressourcenprädiktor 1370 für die Vorhersage einer oder mehrerer Rechenressourcen zum Durchführen einer oder mehrerer Arbeitslasten, die Vorhersage der Ressourcennutzung einer Arbeitslast und/oder die Empfehlung einer Ressourcen- und/oder Knotenzuweisung für die Arbeitslast zuständig. In mindestens einer Ausführungsform ist der Ressourcenprädiktor 1370 eine regelbasierte Engine, die so programmiert wurde, dass sie basierend auf der Anwendung von Eingaben auf einen Satz von Regeln Bestimmungen und/oder Vorhersagen macht. In mindestens einer Ausführungsform ist der Ressourcenprädiktor 1370 ein trainiertes maschinelles Lernmodell, das trainiert wurde, um eine oder mehrere Rechenressourcen vorherzusagen, um eine oder mehrere Arbeitslasten durchzuführen, um die Ressourcennutzung für eine Arbeitslast vorherzusagen und/oder um die Zuweisung einer oder mehrerer Ressourcen für die Arbeitslast zu empfehlen. In mindestens einer Ausführungsform ist der Ressourcenprädiktor 1370 so trainiert, dass er eine Empfehlung für einen oder mehrere verfügbare Knoten des Rechenzentrums 1340 für eine Arbeitslast ausgibt, wobei der empfohlene eine oder mehrere verfügbare Knoten die vorhergesagten einen oder mehreren Rechenressourcen zum Durchführen der einen oder mehreren Arbeitslasten beinhalten kann.
  • Es werden hier verschiedene Ausgaben für maschinelles Lernen beschrieben. Es werden bestimmte Zahlen und Anordnungen von maschinellen Lernmodellen beschrieben und gezeigt. Es versteht sich jedoch von selbst, dass die Anzahl und die Art der verwendeten maschinellen Lernmodelle und die Anordnung dieser maschinellen Lernmodelle modifiziert werden können, um die gleichen oder ähnliche Endergebnisse zu erzielen. Dementsprechend sind die beschriebenen und gezeigten Anordnungen von maschinellen Lernmodellen lediglich Beispiele und sollten nicht als einschränkend aufgefasst werden.
  • In mindestens einer Ausführungsform werden ein oder mehrere maschinelle Lernmodelle trainiert, um eine oder mehrere Ressourcennutzungsvorhersagen, Ressourcenzuweisungsvorhersagen und/oder Knotenzuweisungsempfehlungen für eine oder mehrere Arbeitslasten durchzuführen. In mindestens einer Ausführungsform kann jede Aufgabe von einem separaten maschinellen Lernmodell durchgeführt werden. In mindestens einer Ausführungsform kann ein einziges maschinelles Lernmodell (ML) jede der Aufgaben oder eine Teilmenge der Aufgaben durchführen. In mindestens einer Ausführungsform können verschiedene maschinelle Lernmodelle trainiert werden, um verschiedene Kombinationen der Aufgaben durchzuführen. In mindestens einer Ausführungsform können ein oder mehrere maschinelle Lernmodelle trainiert werden, wobei das trainierte ML-Modell ein einzelnes gemeinsames neuronales Netz ist, das mehrere gemeinsame Schichten und mehrere übergeordnete unterschiedliche Ausgabeschichten aufweist, wobei jede der Ausgabeschichten eine andere Vorhersage, Klassifizierung, Identifizierung usw. ausgibt.
  • In mindestens einer Ausführungsform ist eine Art von maschinellem Lernmodell, das für den Ressourcenprädiktor 1370 verwendet wird, ein künstliches neuronales Netz, wie beispielsweise ein Deep neuronales Netz. Künstliche neuronale Netze beinhalten in der Regel eine Komponente zur Merkmalsdarstellung mit einem Klassifikator oder Regressionsschichten, die Merkmale auf einen gewünschten Ausgaberaum abbilden. Ein neuronales Netz (CNN) enthält zum Beispiel mehrere Schichten von Faltungsfiltern. In den unteren Schichten wird ein Pooling durchgeführt und Nichtlinearitäten können in den unteren Schichten bewältigt werden. An diese Schichten wird üblicherweise ein mehrschichtiges Perzeptron angehängt, das die von den Faltungsschichten extrahierten Merkmale der oberen Schicht auf Entscheidungen (z. B. Klassifizierungsausgaben) abbildet. Deep Learning ist eine Klasse von Algorithmen für maschinelles Lernen, die eine Kaskade von mehreren Schichten nichtlinearer Verarbeitungseinheiten für die Extraktion und Transformation von Merkmalen verwenden. Jede aufeinanderfolgende Schicht verwendet die Ausgaben der vorherigen Schicht als Eingabe. Tiefe neuronale Netze können auf überwachte (z. B. Klassifizierung) und/oder nicht überwachte (z. B. Strukturanalyse) Weise lernen. Tiefe neuronale Netze beinhalten eine Hierarchie von Schichten, wobei die verschiedenen Schichten unterschiedliche Level von Repräsentationen lernen, die verschiedenen Abstraktionsebenen entsprechen. Beim Deep Learning lernt jedes Level, seine Eingabedaten in eine etwas abstraktere und zusammengesetzte Darstellung zu transformieren. Zum Beispiel kann in einer Anwendung zur Bilderkennung die rohe Eingabe eine Pixelmatrix sein; die erste Darstellungsschicht kann die Pixel abstrahieren und Kanten kodieren; die zweite Stufe kann Anordnungen von Kanten zusammensetzen und kodieren; die dritte Schicht kann Formen auf höherer Ebene kodieren (z. B. Zähne, Lippen, Zahnfleisch usw.); und die vierte Schicht kann eine Abtastrolle erkennen. Ein Deep Learning Prozess kann selbständig lernen, welche Merkmale er optimal in welchem Level anordnen soll. Das „Deep“ in „Deep Learnin““ betrifft die Anzahl der Schichten, durch die die Daten transformiert werden. Deep Learning Systeme können eine beträchtliche Tiefe des Credit Assignment Path (CAP) aufweisen. Der CAP ist die Kette der Transformationen von der Eingabe zur Ausgabe. CAPs beschreiben potenziell kausale Verbindungen zwischen Eingabe und Ausgabe. Bei einem neuronalen Netz mit Vorwärtskopplung kann die Tiefe der CAPs der des Netzes entsprechen und die Anzahl der versteckten Schichten plus eins sein. Bei rekurrenten neuronalen Netzen, wobei sich ein Signal mehr als einmal durch eine Schicht ausbreiten kann, ist die Tiefe der CAPs potentiell unbegrenzt.
  • In mindestens einer Ausführungsform empfängt der Ressourcenprädiktor 1370 Arbeitslast-Details 1310 und System-Details 1345 als Eingaben. In mindestens einer Ausführungsform verarbeitet der Ressourcenprädiktor 1370 die Eingabe der Arbeitslast-Details 1310 und der Systemdetails 1345 und gibt eine Vorhersage einer oder mehrerer Rechenressourcen zum Durchführen der Arbeitslast, eine Vorhersage der Ressourcennutzung der Arbeitslast und/oder eine empfohlene Ressourcenzuweisung und/oder Knotenzuweisung für einen oder mehrere Knoten des Rechenzentrums 1340 aus. In mindestens einer Ausführungsform gibt der Ressourcenprädiktor 1370 eine empfohlene Knotenzuweisung aus, die einen oder mehrere vorgeschlagene Knoten beinhaltet, die eine oder mehrere Rechenressourcen, Speicherressourcen und/oder Netzressourcen beinhalten, die die vorhergesagten Bedürfnisse der Ressourcennutzung eines auszuführenden Arbeitslasts (z. B. eines Arbeitslasts, der den Arbeitslastdetails 1310 zugeordnet ist) erfüllen. In mindestens einer Ausführungsform gibt der Ressourcenprädiktor 1370 einen Konfidenzwert aus, der der Ausgabe einer oder mehrerer Rechenressourcen, der ausgegebenen empfohlenen Ressource, der ausgegebenen empfohlenen Knotenzuweisung und/oder der vorhergesagten Ressourcennutzung zugeordnet ist. Ein Ausgabenkonfidenzwert kann grob die Genauigkeit einer Ausgabeempfehlung oder -vorhersage anzeigen, wie beispielsweise die Wahrscheinlichkeit, dass eine Ausgabeempfehlung oder -vorhersage die Bedürfnisse einer Arbeitslast erfüllen wird. In mindestens einer Ausführungsform ist ein Ausgabenkonfidenzwert ein Wert zwischen 0 und 1, wobei 1 eine Konfidenz von 100 % und 0 eine Konfidenz von 0 % darstellt. In mindestens einer Ausführungsform zeigt ein Ausgabewert einen bestimmten Konfidenzbereich oder eine Gruppierung an, in die ein bestimmtes Konfidenzniveau fällt. In mindestens einer Ausführungsform beinhaltet der Konfidenzbereich eine niedrige, eine mittlere und eine hohe Konfidenz.
  • In mindestens einer Ausführungsform wird eine Ausgabe der empfohlenen Ressourcenzuweisung und/oder Knotenzuweisung an die Client-Vorrichtung 1302 gesendet. In mindestens einer Ausführungsform wird auch ein Konfidenzwert an die Client-Vorrichtung 1302 gesendet. Die Client-Vorrichtung 1302 kann die Empfehlung akzeptieren oder eine andere Ressourcenzuweisung und/oder Knotenzuweisung anfordern.
  • Sobald eine Ressourcenzuweisung und/oder eine Knotenzuweisung ausgewählt ist, plant das Auftragsverarbeitungsmodul 1375 die Ausführung einer Arbeitslast auf den ausgewählten Ressourcen und/oder Knoten ein.
  • 14 ist ein Sequenzdiagramm 1400, das die Vorhersage der Ressourcennutzung und die Ressourcenzuweisung gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform stellt die Client-Vorrichtung 1302 dem Ressourcenorchestrator 1305 in Operation 1402 Details zur Arbeitslast bereit. In mindestens einer Ausführungsform stellt das Rechenzentrum 1340 in Operation 1405 Systemdetails für den Ressourcenorchestrator 1305 bereit.
  • In Operation 1410 sagt der Ressourcenorchestrator die Ressourcennutzung einer Arbeitslast voraus, die den bereitgestellten Details zur Arbeitslast zugeordnet ist. In Operation 1415 bestimmt der Ressourcenorchestrator eine oder mehrere Ressourcen und/oder einen oder mehrere Knoten, die für die vorausgesagte Ressourcennutzung geeignet sind. In mindestens einer Ausführungsform werden Operation 1410 und Operation 1415 von einem oder mehreren trainierten maschinellen Lernmodellen durchgeführt, wie beispielsweise einem oder mehreren Deep Learning Modellen. In mindestens einer Ausführungsform werden Operation 1410 und Operation 1415 von ein und demselben trainierten maschinellen Lernmodell durchgeführt.
  • In Operation 1420 sendet der Ressourcenorchestrator 1305 eine Empfehlung für einen oder mehrere Knoten, die für die Arbeitslast zugewiesen werden sollen. Bei Operation 1425 sendet die Client-Vorrichtung 1302 eine Annahme oder Ablehnung der Empfehlung zurück an den Ressourcenorchestrator 1305. In Operation 1428 wählt der Ressourcenorchestrator basierend auf der in Operation 1425 empfangenen Antwort einen oder mehrere Knoten für die Arbeitslast aus. Wenn ein Benutzer die bereitgestellte Empfehlung akzeptiert hat, werden in Operation 1428 der oder die empfohlenen Knoten ausgewählt. Wenn der Benutzer eine andere Ressourcenzuweisung als die empfohlene ausgewählt hat, werden in Operation 1428 ein oder mehrere andere Knoten als die empfohlenen ausgewählt. In Operation 1430 plant der Ressourcenorchestrator 1305 die Arbeitslast zur Ausführung auf dem einen oder den mehreren ausgewählten Knoten ein.
  • 15 veranschaulicht die Vorhersage der Ressourcennutzung und die Ressourcenzuweisung eines oder mehrerer Knoten eines Rechenzentrums für eine Arbeitslast gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann ein Unternehmen oder eine andere Einheit wünschen, eine oder mehrere Arten von Arbeitslasten 1505 in einem Rechenzentrum auszuführen. In mindestens einer Ausführungsform können verschiedene Arten von Arbeitslasten ausgeführt werden, wobei jede Art von Arbeitslast unterschiedliche Details beinhalten kann. Beispiele für Arbeitslasten 1505 beinhalten Datenvorbereitungs-Arbeitslasten 1510, Trainings-Arbeitslasten für maschinelles Lernen 1515, Datenanalyse-Arbeitslasten 1520, Arbeitslasten für maschinelles Lernen und Inferenz 1525, Arbeitslasten für Hochleistungsrechnen 1530, Arbeitslasten für das Übertragen von Lernen 1535, Arbeitslasten für die Abstimmung von Hyperparametern 1540, Arbeitslasten für die Visualisierung von Experimenten 1545 und Arbeitslasten für Metaverse-Anwendungen 1550, um nur einige zu nennen. In mindestens einer Ausführungsform ist eine auszuführende Arbeitslast einer bestimmten Branche zugeordnet, und die Branchenidentifikation ist in den Arbeitslastdetails enthalten. Beispiele für Branchen beinhalten Gesundheitswesen, medizinische Bildgebung, Automobil, Fertigung, Informationstechnologien, Klimasimulation und Finanzdienstleistungen. In mindestens einer Ausführungsform werden dem Ressourcenprädiktor 1570 Arbeitslast-Details bereitgestellt, die einer oder mehreren Arbeitslasten 1505 zugeordnet sind.
  • In mindestens einer Ausführungsform werden Informationen über verfügbare Ressourcen 1508 in den Ressourcenprädiktor 1570 eingegeben. In mindestens einer Ausführungsform beinhalten die Informationen über die verfügbaren Ressourcen 1508 Informationen über eine oder mehrere Instanzen eines ersten Knotentyps 1555, Informationen über eine oder mehrere Instanzen eines zweiten Knotentyps 1560, über Informationen über eine oder mehrere Instanzen eines n-ten Knotentyps 1565. In mindestens einer Ausführungsform ist jeder Knotentyp 1555-1565 einem unterschiedlichen Satz von Systemdetails zugeordnet, wie beispielsweise unterschiedlichen Hardwaretypen, unterschiedlicher Rechenkapazität, unterschiedlicher Rechenleistung, unterschiedlicher Speicherkapazität, unterschiedlicher Speicherleistung, unterschiedlichem maximalem Stromverbrauch, unterschiedlicher Kühlkapazität, unterschiedlichen Netzeigenschaften und so weiter. In mindestens einer Ausführungsform weisen die verschiedenen Knotentypen 1555-1565 unterschiedliche Arten und/oder Anzahlen von GPUs und/oder CPUs auf.
  • In mindestens einer Ausführungsform empfängt der Ressourcenprädiktor 1570 Informationen über Arbeitslasten 1505 und über verfügbare Ressourcen 1508 und verarbeitet die empfangenen Informationen, um eine Empfehlung für die Zuweisung eines oder mehrerer Knoten aus den verfügbaren des ersten Knotentyps 1555 bis zum n-ten Knotentyp 1565 auszugeben. In mindestens einer Ausführungsform gibt der Ressourcenprädiktor 1570 eine Vorhersage für eine oder mehrere Rechenressourcen aus, um die Arbeitslasten 1505 durchzuführen. In mindestens einer Ausführungsform beinhaltet eine Ausgabeempfehlung und/oder Vorhersage einen oder mehrere Knotentypen sowie eine empfohlene oder vorhergesagte Menge jedes der einen oder mehreren empfohlenen/vorgesagten Knotentypen für die Arbeitslast 1505.
  • In mindestens einer Ausführungsform stellt der Ressourcenprädiktor 1570 die Empfehlung/Vorhersage dem Auftragsverarbeitungsmodul 1575 bereit, das die Ausführung der Arbeitslast(en) 1505 auf dem empfohlenen/vorgesagten einen oder mehreren Knoten in einem heterogenen Rechenzentrum 1580 einplant.
  • 16 ist ein Ablaufdiagramm, das ein Verfahren 1600 zur Vorhersage der Ressourcennutzung einer Arbeitslast und zur Zuweisung eines oder mehrerer Knoten eines Rechenzentrums für die Arbeitslast gemäß mindestens einer Ausführungsform veranschaulicht. Das Verfahren 1600 kann von einer Verarbeitungslogik durchgeführt werden, die Hardware (z. B. Schaltkreise, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (z. B. Anweisungen, die auf einer Verarbeitungsvorrichtung ausgeführt werden, um eine Hardwaresimulation durchzuführen), Firmware oder eine Kombination davon umfassen kann. In mindestens einer Ausführungsform werden mindestens einige Operationen des Verfahrens 1600 von einer Rechenvorrichtung eines Rechenzentrums durchgeführt.
  • In Block 1602 des Verfahrens 1600 empfängt die Verarbeitungslogik eine erste Eingabe von Details zur Arbeitslast. Die Details der Arbeitslast können jegliches der hier beschriebenen Details der Arbeitslast beinhalten, wie beispielsweise Datendetails, Modelldetails (oder alternativ Aufgabendetails, wenn kein maschinelles Lernmodell verwendet wird), Details der Operation und/oder ein Ziel für die Fertigstellungszeit. Im Block 1605 empfängt die Verarbeitungslogik eine zweite Eingabe von Systemdetails. Die Systemdetails können jegliches der hier beschriebenen Systemdetails beinhalten, wie beispielsweise die Verfügbarkeit von Rechenressourcen, Speicherressourcen, Speicherressourcen, Netzressourcen usw.
  • Im Block 1610 verarbeitet die Verarbeitungslogik die erste und zweite Eingabe, um eine oder mehrere Rechenressourcen zum Durchführen der Arbeitslast vorherzusagen. In mindestens einer Ausführungsform verarbeitet die Verarbeitungslogik die Vorhersage der Ressourcennutzung einer Arbeitslast, die den bereitgestellten Angaben zur Arbeitslast zugeordnet ist. In mindestens einer Ausführungsform bestimmt die Verarbeitungslogik in Block 1615 eine empfohlene Zuweisung von einem oder mehreren Knoten eines Rechenzentrums, um die vorhergesagte Ressourcennutzung der Arbeitslast zu erfüllen. In mindestens einer Ausführungsform bestimmt die Verarbeitungslogik eine empfohlene Zuweisung von einem oder mehreren Knoten, die die vorhergesagte(n) eine(n) oder mehrere Rechenressource(n) umfassen, um die Arbeitslast durchzuführen. In mindestens einer Ausführungsform bestimmt die Verarbeitungslogik in Block 1618 ein Konfidenzniveau der empfohlenen Zuweisung des einen oder der mehreren Knoten und/oder einer oder mehrerer der Vorhersagen.
  • Bei Block 1620 stellt die Verarbeitungslogik die Empfehlung zur Annahme oder Ablehnung bereit. In mindestens einer Ausführungsform stellt die Verarbeitungslogik ferner ein der Empfehlung zugeordnetes Konfidenzniveau bereit. Das Konfidenzniveau kann dem Benutzer Informationen bereitstellen, die er verwenden kann, um zu bestimmen, ob er die Empfehlung annimmt oder nicht. Im Block 1625 empfängt die Verarbeitungslogik die Annahme oder Ablehnung der Empfehlung. In mindestens einer Ausführungsform wird die Annahme der Empfehlung akzeptiert. In mindestens einer Ausführungsform wählt der Benutzer einen oder mehrere andere Knoten aus als die, die ihm empfohlen wurden.
  • Bei Block 1630 weist die Verarbeitungslogik die Arbeitslast zu und/oder plant sie zur Ausführung auf dem einen oder den mehreren Knoten des Rechenzentrums ein. Bei Block 1635 wird die Arbeitslast auf dem/den eingeplanten und/oder zugewiesenen Knoten des Rechenzentrums ausgeführt.
  • In mindestens einer Ausführungsform überwacht die Verarbeitungslogik in Block 1640 die Ausführung der Arbeitslast auf dem einen oder den mehreren Knoten. In mindestens einer Ausführungsform bestimmt die Verarbeitungslogik in Block 1645, ob die zugewiesenen/geplanten Knoten für die Ausführung der Arbeitslast optimal sind. In mindestens einer Ausführungsform kann die Verarbeitungslogik bestimmen, dass ein oder mehrere zugewiesene Knoten ungenutzt oder zu wenig verwendet sind. In einer solchen Situation kann die Verarbeitungslogik bestimmen, dass die zugewiesenen Knoten nicht optimal sind, weil sie nicht ausgelastet sind. In mindestens einer Ausführungsform kann die Verarbeitungslogik bestimmen, dass die zugewiesenen Knoten nicht ausreichen, um die Ausführung der Arbeitslast in einem bestimmten Rahmen abzuschließen. In einer solchen Situation kann die Verarbeitungslogik bestimmen, dass die zugewiesenen Knoten nicht optimal sind. Wenn die zugewiesenen Knoten optimal sind, kehrt das Verfahren zum Block 1640 zurück und die Verarbeitungslogik kann die Ausführung des Workflows weiter überwachen. Wenn bestimmt wird, dass die zugewiesenen Knoten nicht optimal für die Arbeitslast sind, kann das Verfahren zu Block 1650 übergehen.
  • Bei Block 1650 kann die Verarbeitungslogik die Zuweisung eines oder mehrerer Knoten für die Arbeitslast anpassen. In mindestens einer Ausführungsform führt die Verarbeitungslogik eine automatische Skalierung durch, um die Anzahl der Knoten zu erhöhen und/oder die Anzahl der für die Arbeitslast zugewiesenen Knoten zu verringern. In mindestens einer Ausführungsform führt die Verarbeitungslogik eine automatische Neuzuweisung einer Arbeitslast an einen oder mehrere andere Knoten als diejenigen durch, die ursprünglich für die Arbeitslast zugewiesen waren, wie beispielsweise, wenn die Verarbeitungslogik bestimmt, dass ein Knotentyp verfügbar geworden ist, der besser für die Arbeitslast geeignet ist als die bereits für die Arbeitslast zugewiesenen. Nach der Anpassung der für die Arbeitslast zugewiesenen Knoten kann das Verfahren zu Block 1640 zurückkehren und die Verarbeitungslogik kann die Ausführung der Arbeitslast auf den Knoten weiter überwachen.
  • In mindestens einer Ausführungsform kann die Verarbeitungslogik ein maschinelles Lernmodell, das die Operationen der Blöcke 1610, 1615 und/oder 1618 basierend auf der in Block 1645 getroffenen Bestimmung und/oder basierend auf Eingaben des Benutzers, die seine Zufriedenheit mit der empfohlenen Zuweisung von Ressourcen bestimmen, erneut trainieren. In mindestens einer Ausführungsform können die in Block 1602 empfangene erste Eingabe und die in Block 1605 empfangene zweite Eingabe in das maschinelle Lernmodell aufgenommen werden, das eine Ressourcennutzungsvorhersage, eine Empfehlung für einen oder mehrere Knoten und/oder Konfidenz ausgeben kann. Die Ausgabe kann mit den Knoten verglichen werden, die letztlich für die Arbeitslast verwendet wurden, nachdem die Anpassung in Block 1650 durchgeführt wurde, um eine Differenz zwischen ihnen zu bestimmen. Die Differenz kann verwendet werden, um die Gewichte eines oder mehrerer Knoten des trainierten maschinellen Lernmodells zu aktualisieren. Durch die kontinuierliche Aktualisierung des Trainings des maschinellen Lernmodells kann die Genauigkeit des maschinellen Lernmodells mit der Zeit erhöht werden.
  • KÜNSTLICHE INTELLIGENZ
  • Die folgenden Figuren legen ohne Einschränkung beispielhafte Systeme auf Basis künstlicher Intelligenz dar, die verwendet werden können, um mindestens eine Ausführungsform zu implementieren.
  • 17A veranschaulicht Inferenz- und/oder Trainingslogik 1715, 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 1715 werden nachstehend in Verbindung mit 17A und/oder 17B bereitgestellt.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1715 ohne Einschränkung einen Code- und/oder Datenspeicher 1701 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 1715 einen Code- und/oder Datenspeicher 1701 beinhalten oder mit diesem 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 (arithmetic logic units - ALU)) beinhalten. In mindestens einer Ausführungsform lädt Code, wie etwa Graphencode, basierend auf einer Architektur eines neuronalen Netzes, dem der Code entspricht, Gewichtungs- oder andere Parameterinformationen in Prozessor-ALUs. In mindestens einer Ausführungsform speichert der Code- und/oder Datenspeicher 1701 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 Vorwä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 ein beliebiger Abschnitt des Code- und/oder Datenspeichers 1701 einen anderen On-Chip- oder Off-Chip-Datenspeicher aufweisen, z. B. den L1-, L2- oder L3-Cache eines Prozessors oder den Systemspeicher.
  • In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 1701 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder -Schaltungen sein. In mindestens einer Ausführungsform kann der Code und/oder Code- und/oder Datenspeicher 1701 ein Cache-Speicher, ein dynamischer zufällig adressierbarer Speicher („DRAM“), ein statischer zufällig adressierbarer Speicher („SRAM“), ein nichtflüchtiger Speicher (z. B. Flash-Speicher) oder ein anderer Speicher sein. In mindestens einer Ausführungsform kann eine Entscheidung, ob der Code- und/oder Code- und/oder Datenspeicher 1701 intern oder extern zu einem Prozessor ist oder DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, davon abhängen, ob Speicher auf dem Chip oder außerhalb des Chips verfügbar ist, von den Anforderungen an die Latenz der ausgeführten Trainings- und/oder Inferenzierungsfunktionen, von der Größe der beim Inferenzieren und/oder Trainieren eines neuronalen Netzes verwendeten Datenstapel oder von einer Kombination dieser Faktoren.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1715 ohne Einschränkung einen Code- und/oder Datenspeicher 1705 beinhalten, um Rückwärts- und/oder Ausgabegewichtungs- und/oder Eingabe-/Ausgabedaten zu speichern, die Neuronen oder Schichten eines neuronalen Netzes 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 1705 Gewichtungsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzes, das während der Rückwärtspropagierung von Eingabe-/Ausgabedaten und/oder Gewichtungsparametern während des Trainings und/oder Inferenzierens unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen trainiert oder in Verbindung mit einer oder mehrerer Ausführungsformen verwendet wird. In mindestens einer Ausführungsform kann die Trainingslogik 1715 einen Code- und/oder Datenspeicher 1705 aufweisen oder mit diesem gekoppelt sein, um einen Graphencode oder eine andere Software zu speichern, die das Timing und/oder die Reihenfolge steuert, in der Gewichts- und/oder andere Parameterinformationen geladen werden sollen, um die Logik, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten (zusammenfassend: arithmetische Logikeinheiten (ALUs)) zu konfigurieren.
  • In mindestens einer Ausführungsform bewirkt Code, wie etwa Diagrammcode, das Laden von Gewichtungsinformationen oder Informationen zu anderen Parametern in Prozessor-ALUs auf Grundlage einer Architektur eines neuronalen Netzes, dem ein solcher Code entspricht. In mindestens einer Ausführungsform kann jeder Abschnitt des Code- und/oder Datenspeichers 1705 einen anderen On-Chip- oder Off-Chip-Datenspeicher aufweisen, z. B. den L1-, L2- oder L3-Cache eines Prozessors oder den Systemspeicher. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 1705 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder -Schaltungen sein. In mindestens einer Ausführungsform kann der Code- und/oder Datenspeicher 1705 ein Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z. B. Flash-Speicher) oder ein anderer Speicher sein. In mindestens einer Ausführungsform kann die Wahl, ob der Code- und/oder Datenspeicher 1705 intern oder extern zu einem Prozessor ist, oder ob er zum Beispiel 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 Latenz der ausgeführten Trainings- und/oder Inferenzierungsfunktionen, von der Stapelgröße der beim Inferenzieren und/oder Trainieren eines neuronalen Netzes verwendeten Daten oder von einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 1701 und der Code- und/oder Datenspeicher 1705 separate Speicherstrukturen sein. In mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 1701 und der Code- und/oder Datenspeicher 1705 eine kombinierte Speicherstruktur sein. In mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 1701 und der Code- und/oder Datenspeicher 1705 teilweise kombiniert und teilweise getrennt sein. In mindestens einer Ausführungsform kann jeder Abschnitt des Code- und/oder Datenspeichers 1701 und des Code- und/oder Datenspeichers 1705 in einem anderen On-Chip- oder Off-Chip-Datenspeicher, einschließlich des L1-, L2- oder L3-Cache oder Systemspeichers eines Prozessors, enthalten sein.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1715 ohne Einschränkung eine oder mehrere arithmetische Logikeinheit(en) („ALU(s)“) 1710 beinhalten, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten, um logische und/oder mathematische Operationen durchzuführen, die mindestens zum Teil auf Trainings- und/oder Inferenzcode (z. B. Graphencode) basieren oder dadurch angegeben werden, wobei ein Ergebnis davon Aktivierungen (z. B. Ausgabewerte von Schichten oder Neuronen innerhalb eines neuronalen Netzes) produzieren kann, die in einem Aktivierungsspeicher 1720 gespeichert werden und abhängig von Eingabe/Ausgabe- und/oder Gewichtungsparameterdaten sind, die in dem Code- und/oder Datenspeicher 1701 und/oder dem Code- und/oder Datenspeicher 1705 gespeichert sind. In mindestens einer Ausführungsform werden in dem Aktivierungsspeicher 1720 gespeicherte Aktivierungen gemäß linearer algebraischer und/oder matrixbasierter Mathematik generiert, die durch die ALU(s) 1710 als Reaktion auf das Durchführen von Anweisungen oder anderem Code durchgeführt wird, wobei in dem Code- und/oder Datenspeicher 1705 und/oder dem Datenspeicher 1701 gespeicherte Gewichtungswerte als Operanden zusammen mit anderen Werten, wie etwa Verzerrungswerten, Gradienteninformationen, Momentwerten oder anderen Parametern oder Hyperparametern, verwendet werden, von denen beliebige oder alle in dem Code- und/oder Datenspeicher 1705 oder dem Code- und/oder Datenspeicher 1701 oder einem anderen chipinternen oder -externen Speicher gespeichert sein können.
  • In mindestens einer Ausführungsform sind die ALU(s) 1710 in einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder -schaltungen enthalten, während in einer anderen Ausführungsform die ALU(s) 1710 zu einem Prozessor oder einer anderen Hardware-Logikvorrichtung oder -schaltung extern sein können, der/die sie verwendet (z. B. ein Co-Prozessor). In mindestens einer Ausführungsform können die ALUs 1710 innerhalb der Ausführungseinheiten eines Prozessors oder anderweitig innerhalb einer Bank von ALUs, auf die die Ausführungseinheiten eines Prozessors zugreifen können, entweder innerhalb desselben Prozessors oder verteilt auf verschiedene Prozessoren unterschiedlichen Typs (z. B. zentrale Verarbeitungseinheiten, Grafikverarbeitungseinheiten, feste Funktionseinheiten usw.), vorhanden sein. In mindestens einer Ausführungsform können sich der Code- und/oder Datenspeicher 1701, der Code- und/oder Datenspeicher 1705 und der Aktivierungsspeicher 1720 einen Prozessor oder eine andere Hardware-Logikvorrichtung oder -schaltung teilen, während sie sich in einer anderen Ausführungsform in verschiedenen Prozessoren oder anderen Hardware-Logikvorrichtungen oder -schaltungen oder in einer Kombination aus gleichen und verschiedenen Prozessoren oder anderen Hardware-Logikvorrichtungen oder -schaltungen befinden können. In mindestens einer Ausführungsform kann jeder Abschnitt des Aktivierungsspeichers 1720 mit einem anderen On-Chip- oder Off-Chip-Datenspeicher, einschließlich des L1-, L2- oder L3-Caches eines Prozessors oder des Systemspeichers, vorhanden sein. Darüber hinaus kann Inferenz- und/oder Trainingscode mit anderem Code gespeichert werden, auf den ein Prozessor oder eine andere Hardwarelogik oder -schaltung zugreifen kann, und unter Verwendung der Abruf-, Decodier-, Planungs-, Ausführungs-, Stilllegungs- und/oder anderen logischen Schaltungen eines Prozessors abgerufen und/oder verarbeitet werden.
  • In mindestens einer Ausführungsform kann der Aktivierungsspeicher 1720 ein Cache-Speicher, ein DRAM, ein SRAM, ein nicht flüchtiger Speicher (z. B. Flash-Speicher) oder ein anderer Speicher sein. In mindestens einer Ausführungsform kann sich der Aktivierungsspeicher 1720 vollständig oder teilweise innerhalb oder außerhalb von einem oder mehreren Prozessoren oder anderen logischen Schaltungen befinden. In mindestens einer Ausführungsform kann die Wahl, ob der Aktivierungsspeicher 1720 intern oder extern zu einem Prozessor ist, oder ob er zum Beispiel 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 Latenz der ausgeführten Trainings- und/oder Inferenzierungsfunktionen, von der Stapelgröße der beim Inferenzieren und/oder Trainieren eines neuronalen Netzes verwendeten Daten oder von einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1715, die in 17A veranschaulicht ist, in Verbindung mit einer anwendungsspezifischen integrierten Schaltung (application-specific integrated circuit - „ASIC“) verwendet werden, wie etwa einer Tensorflow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (inference processing unit - IPU) von Graphcore™ oder einem Prozessor vom Typ Nervana® (z. B. „Lake Crest“) von Intel Corp. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1715, die in 17A veranschaulicht ist, in Verbindung mit einer CPU-Hardware (Central Processing Unit), einer GPU-Hardware (Graphics Processing Unit) oder anderer Hardware wie z. B. FPGAs (Field Programmable Gate Arrays) verwendet werden.
  • 17B veranschaulicht Inferenz- und/oder Trainingslogik 1715 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1715 ohne Einschränkung Hardwarelogik beinhalten, in der Rechenressourcen in Verbindung mit Gewichtungswerten oder anderen Informationen, die einer oder mehreren Schichten von Neuronen innerhalb eines neuronalen Netzes entsprechen, dediziert oder anderweitig exklusiv verwendet werden. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1715, die in 17B veranschaulicht ist, in Verbindung mit einer anwendungsspezifischen Integrierten Schaltung (ASIC) verwendet werden, wie beispielsweise der TensorFlow® Processing Unit von Google, einer InferenzVerarbeitungseinheit (IPU) von Graphcore™ oder einem Nervana® (z. B. „Lake Crest“) Prozessor von Intel Corp. In mindestens einer Ausführungsform ist die Inferenz- und/oder Trainingslogik 1715, die in 17B 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 1715, ohne Einschränkung, den Code- und/oder Datenspeicher 1701 und den Code- und/oder Datenspeicher 1705, 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 17B veranschaulicht ist, ist jeder von dem Code- und/oder Datenspeicher 1701 und dem Code- und/oder Datenspeicher 1705 einer dedizierten Rechenressource, wie etwa der Rechenhardware 1702 bzw. der Rechenhardware 1706, zugeordnet. In mindestens einer Ausführungsform umfasst jede der Rechenhardware 1702 und der Rechenhardware 1706 eine oder mehrere ALUs, die mathematische Funktionen, wie etwa lineare algebraische Funktionen, nur auf Informationen ausführen, die im Code- und/oder Datenspeicher 1701 bzw. im Code- und/oder Datenspeicher 1705 gespeichert sind, und deren Ergebnis im Aktivierungsspeicher 1720 gespeichert wird.
  • In mindestens einer Ausführungsform entspricht jedes der Code- und/oder Datenspeicher 1701 und 1705 und der entsprechenden Rechen-Hardware 1702 bzw. 1706 unterschiedlichen Schichten eines neuronalen Netzes, sodass die resultierende Aktivierung von einem Speicher-/Rechenpaar 1701/1702 des Code- und/oder Datenspeichers 1701 und der Rechen-Hardware 1702 als Eingabe einem nächsten Speicher-/Rechenpaar 1705/1706 des Code- und/oder Datenspeichers 1705 und der Rechenhardware 1706 bereitgestellt wird, um eine konzeptionelle Organisation eines neuronalen Netzes widerzuspiegeln. In mindestens einer Ausführungsform kann jedes der Speicher-/Rechenpaare 1701/1702 und 1705/1706 mehr als einer Schicht des neuronalen Netzes entsprechen. In mindestens einer Ausführungsform können zusätzliche Speicher-/Rechenpaare (nicht gezeigt) nach oder parallel zu den Speicher-/Rechenpaaren 1701/1702 und 1705/1706 in der Inferenz- und/oder Trainingslogik 1715 beinhaltet sein.
  • 18 veranschaulicht das Training und den Einsatz eines tiefen neuronalen Netzes gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird ein untrainiertes neuronales Netz 1806 unter Verwendung eines Trainingsdatensatzes 1802 trainiert. In mindestens einer Ausführungsform ist das Trainings-Framework 1804 ein PyTorch-Frame, wohingegen das Trainings-Framework 1804 in anderen Ausführungsformen ein TensorFlow-, Boost-, Caffe-, Microsoft-Cognitive-Toolkit/CNTK-, MXNet-, Chainer-, Keras-, Deepleaming4j- oder ein anderes Trainings-Framework ist. In mindestens einer Ausführungsform trainiert das Trainings-Framework 1804 ein untrainiertes neuronales Netz 1806 und ermöglicht es, dieses unter Verwendung der hierin beschriebenen Verarbeitungsressourcen zu trainieren, um ein trainiertes neuronales Netz 1808 zu generieren. In mindestens einer Ausführungsform können die Gewichtungen zufällig oder durch Vortraining unter Verwendung eines Deep-Belief-Netzes gewählt werden. In mindestens einer Ausführungsform kann das Training entweder überwacht, teilweise überwacht oder unüberwacht durchgeführt werden.
  • In mindestens einer Ausführungsform wird das untrainierte neuronale Netz 1806 unter Verwendung von überwachtem Lernen trainiert, wobei der Trainingsdatensatz 1802 eine Eingabe beinhaltet, die mit einer gewünschten Ausgabe für eine Eingabe gepaart ist, oder wobei der Trainingsdatensatz 1802 eine Eingabe beinhaltet, die eine bekannte Ausgabe aufweist, und eine Ausgabe des neuronalen Netzes 1806 manuell bewertet wird. In mindestens einer Ausführungsform wird das untrainierte neuronale Netz 1806 auf überwachte Weise trainiert und verarbeitet Eingaben aus dem Trainingsdatensatz 1802 und vergleicht die resultierenden Ausgaben mit einem Satz von erwarteten oder gewünschten Ausgaben. In mindestens einer Ausführungsform werden die Fehler dann durch das untrainierte neuronale Netz 1806 zurückpropagiert. In mindestens einer Ausführungsform stellt das Trainings-Framework 1804 Gewichtungen ein, die das untrainierte neuronale Netz 1806 steuern. In mindestens einer Ausführungsform beinhaltet das Trainings-Framework 1804 Werkzeuge, um zu überwachen, wie gut das untrainierte neuronale Netz 1806 zu einem Modell konvergiert, wie etwa dem trainierten neuronalen Netz 1808, das dazu geeignet ist, korrekte Antworten zu erzeugen, wie etwa in Ergebnis 1814, die auf Eingabedaten wie etwa einem neuen Datensatz 1812 basieren. In mindestens einer Ausführungsform trainiert das Trainings-Framework 1804 das untrainierte neuronale Netz 1806 wiederholt, während Gewichtungen eingestellt werden, um eine Ausgabe des untrainierten neuronalen Netzes 1806 unter Verwendung einer Verlustfunktion und eines Einstellungsalgorithmus, wie etwa des stochastischen Gradientenabstiegs, zu verfeinern. In mindestens einer Ausführungsform trainiert das Trainings-Framework 1804 das untrainierte neuronale Netz 1806, bis das untrainierte neuronale Netz 1806 eine gewünschte Genauigkeit erreicht. In mindestens einer Ausführungsform kann das trainierte neuronale Netz 1808 dann eingesetzt werden, um eine beliebige Anzahl von Operationen zum maschinellen Lernen zu implementieren.
  • In mindestens einer Ausführungsform wird das untrainierte neuronale Netz 1806 unter Verwendung von nicht überwachtem Lernen trainiert, wobei das untrainierte neuronale Netz 1806 versucht, sich selbst unter Verwendung von nicht markierten Daten zu trainieren. In mindestens einer Ausführungsform umfasst der Trainingsdatensatz 1802 des unbeaufsichtigten Lernens Eingabedaten ohne assoziierte Ausführungsdaten oder „Ground Truth“-Daten. In mindestens einer Ausführungsform kann das untrainierte neuronale Netz 1806 Gruppierungen innerhalb des Trainingsdatensatzes 1802 lernen und bestimmen, wie einzelne Eingaben mit dem untrainierten Datensatz 1802 in Beziehung stehen. In mindestens einer Ausführungsform kann nicht überwachtes Training verwendet werden, um eine selbstorganisierende Karte in dem trainierten neuronalen Netz 1808 zu erzeugen, die dazu in der Lage ist, Operationen durchzuführen, die beim Reduzieren der Dimensionalität des neuen Datensatzes 1812 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 1812 ermöglicht, die von normalen Mustern des neuen Datensatzes 1812 abweichen.
  • In mindestens einer Ausführungsform kann halbüberwachtes Lernen verwendet werden, wobei es sich um eine Technik handelt, bei welcher der Trainingsdatensatz 1802 eine Mischung aus markierten und nicht markierten Daten beinhaltet. In mindestens einer Ausführungsform kann das Trainings-Framework 1804 verwendet werden, um inkrementelles Lernen durchzuführen, beispielsweise durch übertragene Lernverfahren. In mindestens einer Ausführungsform ermöglicht das inkrementelle Lernen es dem trainierten neuronalen Netz 1808, sich an den neuen Datensatz 1812 anzupassen, ohne das Wissen zu vergessen, das dem trainierten neuronalen Netz 1808 während des anfänglichen Trainings beigebracht wurde.
  • 19 ist ein Ablaufdiagramm, das ein Verfahren 1900 zum Trainieren eines maschinellen Lernmodells veranschaulicht, um die Ressourcennutzung eines Arbeitslasts vorherzusagen, eine oder mehrere Rechenressourcen für die Ausführung des Arbeitslasts vorherzusagen und/oder einen oder mehrere Knoten eines Rechenzentrums für den Arbeitslast zu empfehlen, gemäß mindestens einer Ausführungsform. Das Verfahren 1900 kann von einer Verarbeitungslogik durchgeführt werden, die Hardware (z. B. Schaltkreise, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (z. B. Anweisungen, die auf einer Verarbeitungsvorrichtung ausgeführt werden, um eine Hardwaresimulation durchzuführen), Firmware oder eine Kombination davon umfassen kann. In mindestens einer Ausführungsform werden mindestens einige Operationen des Verfahrens 1900 von einer Rechenvorrichtung eines Rechenzentrums durchgeführt.
  • In mindestens einer Ausführungsform wird das Verfahren 1900 durchgeführt, um ein maschinelles Lernmodell zu trainieren, um die Ressourcennutzung einer Arbeitslast vorherzusagen und/oder einen oder mehrere Knoten für die Zuweisung zu der Arbeitslast basierend auf einer ersten Eingabe von Arbeitslast-Details der Arbeitslast und einer zweiten Eingabe von System-Details der verfügbaren Ressourcen eines Rechenzentrums zu empfehlen.
  • Bei Block 1902 des Verfahrens 1900 wird ein untrainiertes maschinelles Lernmodell initialisiert. In mindestens einer Ausführungsform handelt es sich bei dem initialisierten maschinellen Lernmodell um ein Deep Learning Modell wie beispielsweise ein künstliches neuronales Netz. In mindestens einer Ausführungsform beinhaltet die Initialisierung des künstlichen neuronalen Netzes das Auswählen von Startparametern für das neuronale Netz. Die Lösung eines nicht-konvexen Optimierungsalgorithmus hängt zumindest teilweise von den Startparametern ab, so dass die Initialisierungsparameter entsprechend gewählt werden sollten. In mindestens einer Ausführungsform werden die Parameter unter Verwendung von Gaußschen oder gleichmäßigen Verteilungen mit beliebigen Sätzen von Varianzen initialisiert.
  • Bei Block 1905 nimmt das untrainierte maschinelle Lernmodell einen ersten Datenpunkt aus einem Trainingsdatensatz auf. Bei dem ersten Datenpunkt kann es sich beispielsweise um einen Satz aus einer ersten Eingabe von Arbeitslast-Details einer Arbeitslast, einer zweiten Eingabe von System-Details und einem Label von Knoten und/oder Ressourcen, die für die Arbeitslast zugewiesen wurden, und/oder der Angemessenheit der Knoten und/oder Ressourcen für die Arbeitslast handeln. In mindestens einer Ausführungsform beinhaltet das Label einen oder mehrere Knoten, die für die Arbeitslast optimal waren.
  • Bei Block 1920 optimiert die Verarbeitungslogik die Parameter des maschinellen Lernmodells anhand des Datenpunkts. Das maschinelle Lernmodell erzeugt basierend auf den aktuellen Parameterwerten des maschinellen Lernmodells eine Vorhersage oder Anforderungen an die Ressourcennutzung für die Arbeitslast und/oder von einer oder mehreren Rechenressourcen zum Durchführen der Arbeitslast und/oder eine Empfehlung von einem oder mehreren Knoten und/oder Ressourcen für die Arbeitslast. Ein künstliches neuronales Netz beinhaltet eine Eingabeschicht, die aus den Werten eines Datenpunktes besteht. Die nächste Schicht wird als versteckte Schicht bezeichnet, und die Knoten in der versteckten Schicht empfangen jeweils einen oder mehrere Eingabewerte. Jeder Knoten enthält Parameter (z. B. Gewichte), die auf die Eingabewerte anzuwenden sind. Jeder Knoten gibt also im Wesentlichen die Eingabewerte in eine multivariate Funktion (z. B. eine nichtlineare mathematische Transformation) ein, um einen Ausgabewert zu erzeugen. Die nächste Schicht kann eine weitere versteckte Schicht oder eine Ausgabeschicht sein. In jedem Fall empfangen die Knoten der nächsten Schicht die Ausgabewerte von den Knoten der vorherigen Schicht, und jeder Knoten wendet auf diese Werte Gewichtungen an und erzeugt dann seinen eigenen Ausgabewert. Dies kann in jeder Schicht durchgeführt werden. Eine letzte Schicht ist die Ausgabeschicht, die eine endgültige Ausgabe erzeugt.
  • In mindestens einer Ausführungsform vergleicht die Verarbeitungslogik die Vorhersage, Empfehlung und/oder andere Ausgabe des maschinellen Lernmodells mit dem/den bereitgestellten Label(s) oder einem anderen, dem Datenpunkt zugeordneten Ziel, um einen oder mehrere Klassifizierungsfehler zu bestimmen. Ein Fehlerterm oder Delta kann für jeden Knoten im künstlichen neuronalen Netz bestimmt werden. In mindestens einer Ausführungsform passt das künstliche neuronale Netz basierend auf diesem Fehler einen oder mehrere seiner Parameter für einen oder mehrere seiner Knoten an (die Gewichte für einen oder mehrere Eingänge eines Knotens). In mindestens einer Ausführungsform können die Parameter nach dem Prinzip der Rückwärtsfortpflanzung aktualisiert werden, wie beispielsweise die Knoten in der obersten Schicht, gefolgt von den Knoten in der nächsten Schicht und so weiter. Ein künstliches neuronales Netz besteht aus mehreren Schichten von „Neuronen“, wobei jede Schicht Eingabewerte von Neuronen aus einer vorhergehenden Schicht aufnimmt. Die Parameter für jedes Neuron beinhalten Gewichte, die den Werten zugeordnet sind, die von jedem der Neuronen in einer vorherigen Schicht aufgenommen wurden. Dementsprechend kann die Anpassung der Parameter die Anpassung der Gewichte beinhalten, die jedem der Eingänge für ein oder mehrere Neuronen in einer oder mehreren Schichten des künstlichen neuronalen Netzes zugeordnet sind.
  • In mindestens einer Ausführungsform kann nach der Optimierung der Modellparameter in Block 1925 eine Modellvalidierung durchgeführt werden, um zu bestimmen, ob sich das Modell verbessert hat und um eine aktuelle Genauigkeit des Deep Learning-Modells zu bestimmen. In mindestens einer Ausführungsform bestimmt die Verarbeitungslogik in Block 1930, ob ein Abbruchkriterium erfüllt ist. In mindestens einer Ausführungsform kann ein Abbruchkriterium ein Level der Genauigkeit, eine Zielanzahl von verarbeiteten Datenpunkten aus dem Trainingsdatensatz, ein Zielbetrag der Veränderung von Parametern gegenüber einem oder mehreren vorherigen Datenpunkten, eine Kombination davon und/oder andere Kriterien sein. In mindestens einer Ausführungsform ist das Abbruchkriterium erfüllt, wenn mindestens eine Mindestanzahl von Datenpunkten verarbeitet wurde und mindestens eine Schwellengenauigkeit erreicht ist. Der Genauigkeitsschwellenwert kann zum Beispiel 70 %, 80 % oder 90 % betragen. In mindestens einer Ausführungsform ist das Abbruchkriterium erfüllt, wenn sich die Genauigkeit des maschinellen Lernmodells nicht mehr verbessert hat. In mindestens einer Ausführungsform kann das Verfahren, wenn das Abbruchkriterium nicht erfüllt ist, zum Block 1920 zurückkehren, um das Modell basierend auf einem anderen Datenpunkt aus dem Trainingsdatensatz weiter zu optimieren. Alternativ kann das Verfahren in einer Ausführungsform zum Block 1905 zurückkehren. Wenn das Abbruchkriterium erfüllt ist, fährt das Verfahren mit Block 1935 fort und ein maschinelles Lernmodell wird trainiert.
  • 20 ist ein Ablaufdiagramm, das ein Verfahren 2000 zum Durchführen eines kontinuierlichen Trainings eines maschinellen Lernmodells veranschaulicht, um die Ressourcennutzung einer Arbeitslast vorherzusagen und einen oder mehrere Knoten eines Rechenzentrums für die Arbeitslast zu empfehlen, in mindestens einer Ausführungsform. Das Verfahren 2000 kann von einer Verarbeitungslogik durchgeführt werden, die Hardware (z. B. Schaltkreise, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (z. B. Anweisungen, die auf einer Verarbeitungsvorrichtung ausgeführt werden, um eine Hardwaresimulation durchzuführen), Firmware oder eine Kombination davon umfassen kann. In mindestens einer Ausführungsform werden mindestens einige Operationen des Verfahrens 2000 von einer Rechenvorrichtung eines Rechenzentrums durchgeführt.
  • Bei Block 2002 des Verfahrens 2000 wird ein maschinelles Lernmodell trainiert, um die Ressourcennutzung einer Arbeitslast vorherzusagen, um eine oder mehrere Rechenressourcen zum Ausführen einer Arbeitslast vorherzusagen und/oder um einen oder mehrere Knoten eines Rechenzentrums zum Ausführen der Arbeitslast zu empfehlen. In mindestens einer Ausführungsform wird das Verfahren 1900 in Block 2002 durchgeführt. Im Block 2005 plant die Verarbeitungslogik eine Arbeitslast auf einem oder mehreren empfohlenen Knoten eines Rechenzentrums ein. In mindestens einer Ausführungsform werden der eine oder die mehreren Knoten basierend auf der Eingabe einer ersten Eingabe von Arbeitslastdetails und einer zweiten Eingabe von Systemdetails in das trainierte maschinelle Lernmodell empfohlen, das die empfohlenen ein oder mehreren Knoten ausgibt. Im Block 2010 empfängt die Verarbeitungslogik ein Feedback über die Ausführung der Arbeitslast auf dem empfohlenen einen oder mehreren Knoten des Rechenzentrums. In mindestens einer Ausführungsform wird ein positives Feedback bereitgestellt, das anzeigt, dass der empfohlene Knoten oder die empfohlenen Knoten optimal für die Ausführung der Arbeitslast waren. In mindestens einer Ausführungsform wird ein negatives Feedback bereitgestellt, das anzeigt, dass der oder die empfohlenen Knoten für die Ausführung der Arbeitslast suboptimal waren. In mindestens einer Ausführungsform kann ein Benutzer ein Feedback bereitstellen, das anzeigt, dass die Ausführung der Arbeitslast zu langsam war oder dass mehr Knoten zugewiesen wurden, als notwendig waren. In mindestens einer Ausführungsform überwacht die Verarbeitungslogik die Ausführung der Arbeitslast auf dem einen oder den mehreren Knoten und beurteilt automatisch, ob die Zuweisung des einen oder der mehreren Knoten für die Arbeitslast optimal war oder nicht. In mindestens einer Ausführungsform vergleicht die Verarbeitungslogik die tatsächliche Ausführungszeit mit einer Ziel-Ausführungszeit für die Arbeitslast. In mindestens einer Ausführungsform ist die Tatsache, dass die tatsächliche Fertigstellungszeit langsamer war als die Zielfertigstellungszeit, eine Anzeige dafür, dass der eine oder die mehreren Knoten für die Arbeitslast suboptimal waren. Im Block 2015 aktualisiert die Verarbeitungslogik das Training des maschinellen Lernmodells basierend auf der Arbeitslast, der Ausgabe des maschinellen Lernmodells und dem empfangenen Feedback.
  • In mindestens einer Ausführungsform wird das Verfahren 2000 in regelmäßigen Abständen unter Verwendung von Stapeln von Zuweisungen von Knoten zu Arbeitslasten durchgeführt. In mindestens einer Ausführungsform wird das Verfahren 2000 kontinuierlich durchgeführt, wenn neue Daten verfügbar werden.
  • COMPUTERGETSTÜTZTE SYSTEME
  • Die folgenden Figuren legen ohne Einschränkung computerbasierte beispielhafte Systeme dar, die verwendet werden können, um mindestens eine Ausführungsform zu implementieren.
  • 21 veranschaulicht ein Verarbeitungssystem 2100 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet ein System 2100 einen oder mehrere Prozessoren 2102 und einen oder mehrere Grafikprozessoren 2108 und kann ein Einzelprozessor-Desktop-System, ein Mehrprozessor-Workstation-System oder ein ServerSystem sein, dass eine große Anzahl von Prozessoren 2102 oder Prozessorkernen 2107 aufweist. In mindestens einer Ausführungsform ist das System 2100 eine Verarbeitungsplattform, die in einer integrierten Schaltung eines Systems auf einem Chip (SoC) zur Verwendung in mobilen, handgehaltenen oder eingebetteten Vorrichtungen integriert ist.
  • In mindestens einer Ausführungsform kann das Verarbeitungssystem 2100 eine serverbasierte Spieleplattform, eine Spielekonsole, eine Medienkonsole, eine mobile Spielekonsole, eine tragbare Spielekonsole oder eine Online-Spielekonsole beinhalten oder in diese integriert sein. In mindestens einer Ausführungsform ist das Verarbeitungssystem 2100 ein Mobiltelefon, Smartphone, Tablet-Rechenvorrichtung oder mobile Internet-Vorrichtung. In mindestens einer Ausführungsform kann das Verarbeitungssystem 2100 auch eine tragbare Vorrichtung beinhalten, an diese gekoppelt oder in diese integriert sein, wie etwa Smartwatch-Wearable-Vorrichtung, Smart-Eyewear-Vorrichtung, Augmented-Reality-Vorrichtung oder eine Virtual-Reality-Vorrichtung. In mindestens einer Ausführungsform ist das Verarbeitungssystem 2100 eine Fernseh- oder Set-Top-Box-Vorrichtung, die einen oder mehrere Prozessoren 2102 und eine grafische Schnittstelle aufweist, die durch einen oder mehrere Grafikprozessoren 2108 erzeugt wird.
  • In mindestens einer Ausführungsform beinhalten ein oder mehrere Prozessoren 2102 jeweils einen oder mehrere Prozessorkerne 2107 zum Verarbeiten von Anweisungen, die bei ihrer Ausführung Operationen für System- und Benutzer-Software durchführen. In mindestens einer Ausführungsform ist jeder von einem oder mehreren Prozessorkernen 2107 so konfiguriert, dass er einen spezifische Anweisungssatz 2109 verarbeitet. In mindestens einer Ausführungsform kann der Anweisungssatz 2109 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 2107 jeweils eine andere Anweisungssequenz 2109 verarbeiten, die Anweisungen beinhalten kann, um die Emulation anderer Anweisungssequenzen zu erleichtern. In mindestens einer Ausführungsform kann der Prozessorkern 2107 auch andere verarbeitende Vorrichtungen aufweisen, wie etwa einen digitalen Signalprozessor („DSP“).
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 2102 einen Cache-Speicher („Cache“) 2104. In mindestens einer Ausführungsform kann der Prozessor 2102 einen einzelnen internen Cache oder mehrere Levels von internem Cache aufweisen. In mindestens einer Ausführungsform wird der Cache-Speicher von verschiedenen Komponenten des Prozessors 2102 gemeinsam genutzt. In mindestens einer Ausführungsform verwendet der Prozessor 2102 auch einen externen Cache (z. B. einen Level-3(„L3“)-Cache oder Last-Level-Cache („LLC“)) (nicht gezeigt), der unter Verwendung bekannter Cache-Kohärenztechniken von den Prozessorkernen 2107 gemeinsam genutzt werden kann. In mindestens einer Ausführungsform ist in dem Prozessor 2102 zusätzlich eine Registerbank 2106 enthalten, die unterschiedliche Typen von Registern zum Speichern unterschiedlicher Datentypen beinhalten kann (z. B. Ganzzahlregister, Gleitkommaregister, Statusregister und ein Anweisungszeigerregister). In mindestens einer Ausführungsform kann die Registerbank 2106 Universalregister oder andere Register beinhalten.
  • In mindestens einer Ausführungsform sind ein oder mehrere Prozessor(en) 2102 mit einem oder mehreren Schnittstellenbus(sen) 2110 gekoppelt, um Kommunikationssignale, wie etwa Adress-, Daten- oder Steuersignale, zwischen dem Prozessor 2102 und anderen Komponenten in dem Verarbeitungssystem 2100 zu übertragen. In mindestens einer Ausführungsform kann der Schnittstellenbus 2110, in einer Ausführungsform, ein Prozessorbus sein, wie etwa eine Version eines Direct-Media-Interface(„DMI“)-Busses. In mindestens einer Ausführungsform ist der Schnittstellenbus 2110 nicht auf einen DMI-Bus beschränkt und kann einen oder mehrere Peripheral Component Interconnect-Busse (z. B. „PCI“, PCI Express, „PCIe“), Speicherbusse oder andere Arten von Schnittstellenbussen aufweisen. In mindestens einer Ausführungsform beinhalten der/die Prozessor(en) 2102 eine integrierte Speichersteuerung 2116 und einen Plattformsteuerungs-Hub 2130. In mindestens einer Ausführungsform ermöglicht die Speichersteuerung 2116 die Kommunikation zwischen einer Speichervorrichtung und anderen Komponenten des Verarbeiungssystems 2100, während der Plattformsteuerungs-Hub (platform controller hub - „PCH“) 2130 Verbindungen mit Eingabe-/Ausgabe(„E/A“)-Vorrichtungen über einen lokalen E/A-Bus bereitstellt.
  • In mindestens einer Ausführungsform kann die Speichervorrichtung 2120 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 2120 als Systemspeicher für das System 2100 arbeiten, um Daten 2122 und Anweisungen 2121 zur Verwendung zu speichern, wenn ein oder mehrere Prozessoren 2102 eine Anwendung oder einen Prozess ausführen. In mindestens einer Ausführungsform ist die Speichersteuerung 2116 zudem an einen optionalen externen Grafikprozessor 2112 gekoppelt, der mit einem oder mehreren Grafikprozessoren 2108 in den Prozessoren 2102 kommunizieren kann, um Grafik- und Medienoperationen durchzuführen. In mindestens einer Ausführungsform kann eine Anzeigevorrichtung 2111 mit dem/den Prozessor(en) 2102 verbunden sein. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 2111 eine oder mehrere von einer internen Anzeigevorrichtung, wie etwa in einer mobilen elektronischen Vorrichtung oder einer Laptop-Vorrichtung, oder einer externen Anzeigevorrichtung, die über eine Anzeigeschnittstelle (z. B. DisplayPort usw.) angebunden ist, beinhalten. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 2111 eine am Kopf befestigte Anzeige (head mounted display - „HMD“) beinhalten, wie etwa eine stereoskopische Anzeigevorrichtung zur Verwendung bei Virtual-Reality(„VR“)-Anwendungen oder Augmented-Reality(„AR“)-Anwendungen.
  • In mindestens einer Ausführungsform ermöglicht der Plattformsteuerungs-Hub 2130, dass Peripheriegeräte mit der Speichervorrichtung 2120 und dem Prozessor 2102 über einen Hochgeschwindigkeits-E/A-Bus verbunden werden. In mindestens einer Ausführungsform beinhalten die E/A-Peripheriegeräte eine Audiosteuerung 2146, eine Netzsteuerung 2134, eine Firmware-Schnittstelle 2128, einen drahtlosen Transceiver 2126, Berührungssensoren 2125 und eine Datenspeichervorrichtung 2124 (z. B. Festplattenlaufwerk, Flash-Speicher usw.). In mindestens einer Ausführungsform kann die Datenspeichervorrichtung 2124 über eine Speicherschnittstelle (z. B. SATA) oder über einen Peripheriebus, wie zum Beispiel PCI oder PCIe, verbunden sein. In mindestens einer Ausführungsform können die Berührungssensoren 2125 Touchscreen-Sensoren, Drucksensoren oder Fingerabdrucksensoren beinhalten. In mindestens einer Ausführungsform kann der drahtlose Sendeempfänger 2126 ein Wi-Fi-Sendeempfänger, ein Bluetooth-Sendeempfänger oder ein Sendeempfänger für ein mobiles Netz, wie etwa ein 3G-, 4G- oder Long-Term-Evolution(„LTE“)-Sendeempfänger sein. In mindestens einer Ausführungsform ermöglicht die Firmware-Schnittstelle 2128 die Kommunikation mit der System-Firmware und kann z. B. eine einheitliche erweiterbare Firmware-Schnittstelle („UEFI“) sein. In mindestens einer Ausführungsform kann die Netzsteuerung 2134 eine Netzverbindung zu einem drahtgebundenen Netz ermöglichen. In mindestens einer Ausführungsform ist eine Netzsteuerung mit hoher Rechenleistung (nicht gezeigt) mit dem Schnittstellenbus 2110 gekoppelt. In mindestens einer Ausführungsform ist die Audiosteuerung 2146 eine Mehrkanal-High-Definition-Audiosteuerung. In mindestens einer Ausführungsform beinhaltet das Verarbeitungssystem 2100 eine optionale Legacy-E/A-Steuerung 2140 zum Koppeln von älteren Vorrichtungen (z. B. Personal System 2 („PS/2“)) an das Verarbeitungssystem 2100. In mindestens einer Ausführungsform kann der Plattformsteuerungs-Hub 2130 auch mit einer oder mehreren Universal-Serial-Bus(„USB“)-Steuerungen 2142 verbunden sein, die mit Eingabevorrichtungen, wie etwa Kombinationen aus Tastatur und Maus 2143, einer Kamera 2144 oder anderen USB-Eingabevorrichtungen, verbunden sind.
  • In mindestens einer Ausführungsform kann eine Instanz der Speichersteuerung 2116 und des Plattformsteuerungs-Hubs 2130 in einen diskreten externen Grafikprozessor, wie etwa den externen Grafikprozessor 2112, integriert sein. In mindestens einer Ausführungsform können der Plattformsteuerungs-Hub 2130 und/oder die Speichersteuerung 2116 extern zu einem oder mehreren Prozessor(en) 2102 sein. Zum Beispiel kann das System 2100 in mindestens einer Ausführungsform eine externe Speichersteuerung 2116 und einen Plattformsteuerungs-Hub 2130 beinhalten, der als Speichersteuerungs-Hub und Peripheriesteuerungs-Hub innerhalb eines Systemchipsatzes konfiguriert sein kann, der mit den Prozessor(en) 2102 in Kommunikation steht.
  • 22 veranschaulicht ein Computersystem 2200 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann Computersystem 2200 ein System mit miteinander verbundenen Vorrichtungen und Komponenten, ein SOC, oder eine Kombination sein. In mindestens einer Ausführungsform ist das Computersystem 2200 mit einem Prozessor 2202 gebildet, der Ausführungseinheiten zum Ausführen einer Anweisung beinhalten kann. In mindestens einer Ausführungsform kann das Computersystem 2200 ohne Einschränkung eine Komponente wie den Prozessor 2202 beinhalten, um Ausführungseinheiten einschließlich Logik zum Durchführen von Algorithmen zur Verarbeitung von Daten einzusetzen. In mindestens einer Ausführungsform kann das Rechensystem 2200 Prozessoren wie die PENTIUM®-Prozessorfamilie, XeonTM, Itanium®, XScaleTM und/oder StrongARMTM, Intel® Core™ oder Intel® Nervana™-Mikroprozessoren der Intel Corporation aus Santa Clara, Kalifornien, beinhalten, obwohl auch andere Systeme (wie PCs mit anderen Mikroprozessoren, technische Workstations, Set-Top-Boxen und dergleichen) verwendet werden können. In mindestens einer Ausführungsform kann das System 2200 eine Version des Betriebssystems WINDOWS der Microsoft Corporation aus Redmond, Washington, ausführen, obwohl auch andere Betriebssysteme (z.B. UNIX und Linux), eingebettete Software und/oder grafische Benutzeroberflächen verwendet werden können.
  • In mindestens einer Ausführungsform kann Computersystem 2200 auch bei anderen Vorrichtungen wie Handheld-Geräten und eingebetteten Anwendungen verwendet werden. Einige Beispiele für tragbare Vorrichtungen sind Mobiltelefone, Internetprotokoll-Vorrichtungen, Digitalkameras, persönliche digitale Assistenten (personal digital assistants - „PDAs“) und tragbare PCs. In mindestens einer Ausführungsform können eingebettete Anwendungen eine Mikrosteuerung, einen digitalen Signalprozessor („DSP“), ein SoC, Netzcomputer („NetPCs“), Set-Top-Boxen, Netz-Hubs, Wide-Area-Network-Switches („WAN“) oder jedes andere System beinhalten, das eine oder mehrere Anweisungen ausführen kann.
  • In mindestens einer Ausführungsform kann das Computersystem 2200 ohne Einschränkung den Prozessor 2202 beinhalten, der ohne Einschränkung eine oder mehrere Ausführungseinheiten 2208 beinhalten kann, um ein Compute Unified Device Architecture („CUDA“)-Programm auszuführen (CUDA® wurde von der NVIDIA Corporation in Santa Clara, CA entwickelt). In mindestens einer Ausführungsform ist ein CUDA-Programm mindestens ein Teil einer Software-Anwendung, die in einer CUDA-Programmiersprache geschrieben wurde. In mindestens einer Ausführungsform ist das Computersystem 2200 ein Einzelprozessor-Desktop- oder -Serversystem. In mindestens einer Ausführungsform kann das Computersystem 2200 ein Multiprozessorsystem sein. In mindestens einer Ausführungsform kann der Prozessor 2202 ohne Einschränkung einen „CISC“-Mikroprozessor, einen „RISC“-Mikroprozessor, einen „VLIW“-Mikroprozessor, einen Prozessor, der eine Kombination von Anweisungssätzen implementiert, oder eine beliebige andere Prozessorvorrichtung, wie etwa zum Beispiel einen digitalen Signalprozessor, beinhalten. In mindestens einer Ausführungsform kann der Prozessor 2202 mit einem Prozessorbus 2210 gekoppelt sein, der Datensignale zwischen dem Prozessor 2202 und anderen Komponenten in dem Computersystem 2200 übertragen kann.
  • In mindestens einer Ausführungsform kann der Prozessor 2202 ohne Einschränkung einen internen Cachespeicher („Cache“) 2204 der Ebene 1 („L1“) beinhalten. In mindestens einer Ausführungsform kann der Prozessor 2202 einen einzelnen internen Cache oder mehrere Levels von internem Cache aufweisen. In mindestens einer Ausführungsform kann sich der Cache-Speicher extern zu dem Prozessor 2202 befinden. In mindestens einer Ausführungsform kann der Prozessor 2202 auch eine Kombination von sowohl internen als auch externen Caches beinhalten. In mindestens einer Ausführungsform kann eine Registerbank 2206 unterschiedliche Arten von Daten in verschiedenen Registern speichern, einschließlich, ohne Einschränkung, Ganzzahlregistern, Fließkommaregistern, Statusregistern und eines Anwei sungszeigerregi sters.
  • In mindestens einer Ausführungsform befindet sich die Ausführungseinheit 2208, die ohne Einschränkung eine Logik zum Durchführen von Ganzzahl- und Gleitkommaoperationen beinhaltet, ebenfalls im Prozessor 2202. Der Prozessor 2202 kann auch einen Nur-LeseSpeicher („ROM“) für Mikrocode („ucode“) aufweisen, der Mikrocode für bestimmte Makrobefehle speichert. In mindestens einer Ausführungsform kann die Ausführungseinheit 2208 eine Logik beinhalten, um einen komprimierten Anweisungssatz 2209 zu handhaben. In mindestens einer Ausführungsform können durch die Aufnahme des gepackten Anweisungssatzes 2209 in einen Anweisungssatz eines Universalprozessors 2202 zusammen mit der damit assoziierten Schaltung zum Ausführen von Anweisungen Operationen, die durch viele Multimedia-Anwendungen verwendet werden, unter Verwendung von gepackten Daten in einem Universalprozessor 2202 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 eines 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 2208 auch in Mikrosteuerungen, eingebetteten Prozessoren, Grafikvorrichtungen, DSPs und anderen Arten von Logikschaltungen verwendet werden. In mindestens einer Ausführungsform kann das Computersystem 2200 ohne Einschränkung einen Speicher 2220 beinhalten. In mindestens einer Ausführungsform kann der Speicher 2220 als eine dynamische „DRAM“-Vorrichtung, statische „SRAM“-Vorrichtung, Flash-Speichervorrichtung oder eine andere Speichervorrichtung implementiert sein. Der Speicher 2220 kann (einen) Befehl(e) 2219 und/oder Daten 2221 speichern, die durch Datensignale dargestellt werden, die vom Prozessor 2202 ausgeführt werden können.
  • In mindestens einer Ausführungsform kann ein Systemlogik-Chip mit dem Prozessorbus 2210 und dem Speicher 2220 gekoppelt sein. In mindestens einer Ausführungsform kann ein Systemlogikchip ohne Einschränkung einen Speichersteuerungs-Hub („MCH“) 2216 beinhalten und kann der Prozessor 2202 mit dem MCH 2216 über den Prozessorbus 2210 kommunizieren. In mindestens einer Ausführungsform kann der MCH 2216 einen Speicherpfad mit hoher Bandbreite 2218 für den Speicher 2220 zur Speicherung von Anweisungen und Daten und zur Speicherung von Grafikbefehlen, Daten und Texturen bereitstellen. In mindestens einer Ausführungsform kann der MCH 2216 Datensignale zwischen dem Prozessor 2202, dem Speicher 2220 und anderen Komponenten in dem Computersystem 2200 leiten und Datensignale zwischen dem Prozessorbus 2210, dem Speicher 2220 und einem System-E/A 2222 überbrücken. In mindestens einer Ausführungsform kann der Systemlogikchip einen Grafikanschluss zum Koppeln an eine Grafiksteuerung bereitstellen. In mindestens einer Ausführungsform kann der MCH 2216 mit dem Speicher 2220 über einen Speicherpfad mit hoher Bandbreite 2218 gekoppelt sein, und eine Grafik-/Video-Karte 2212 kann mit dem MCH 2216 über einen beschleunigten Grafikanschluss- („AGP“) Zusammenschluss 2214 gekoppelt sein.
  • In mindestens einer Ausführungsform kann das Computersystem 2200 den System-E/A 2222 verwenden, der ein proprietärer Hub-Interface-Bus ist, um den MCH 2216 mit dem E/A-Steuerungs-Hub („ICH“) 2230 zu koppeln. In mindestens einer Ausführungsform kann der ICH 2230 direkte Verbindungen zu einigen E/A-Vorrichtungen über einen lokalen E/A-Bus bereitstellen. In mindestens einer Ausführungsform kann der lokale E/A-Bus ohne Einschränkung einen Hochgeschwindigkeits-E/A-Bus zum Verbinden von Peripheriegeräten mit dem Speicher 2220, einem Chipsatz und dem Prozessor 2202 beinhalten. Beispiele können ohne Einschränkung eine Audiosteuerung 2229, einen Firmware-Hub („Flash-BIOS“) 2228, einen drahtlosen Sendeempfänger 2226, einen Datenspeicher 2224, eine Legacy-E/A-Steuerung 2223, die eine Benutzereingabeschnittstelle 2225 und eine Tastaturschnittstelle beinhaltet, einen seriellen Erweiterungsport 2227, wie etwa einen „USB“, und eine Netzsteuerung 2234 beinhalten. Der Datenspeicher 2224 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, eine CD-ROM-Vorrichtung, ein Flash-Speichervorrichtung oder eine andere Massenspeichervorrichtung umfassen.
  • In mindestens einer Ausführungsform stellt 22 ein System, das miteinander verbundene Hardware-Vorrichtungen oder „Chips“ aufweist. In mindestens einer Ausführungsform kann 22 ein beispielhaftes SoC veranschaulichen. In mindestens einer Ausführungsform können die in 22 veranschaulichten Vorrichtungen mit proprietären Zusammenschaltungen, standardisierten Zusammenschaltungen (z. B. PCIe) oder einer Kombination davon miteinander verbunden sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten des Computersystems 2200 über „CXL“-Zusammenschaltungen miteinander verbunden.
  • 23 veranschaulicht ein System 2300 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist System 2300 eine elektronische Vorrichtung, die einen Prozessor 2310 verwendet. In mindestens einer Ausführungsform kann die elektronische Vorrichtung 2300 zum Beispiel und ohne Einschränkung ein Notebook, ein Tower-Server, ein Rack-Server, ein Blade-Server, ein Laptop, ein Desktop, ein Tablet, eine Mobilvorrichtung, ein Telefon, ein eingebetteter Computer oder eine beliebige andere geeignete elektronische Vorrichtung sein.
  • In mindestens einer Ausführungsform kann das System 2300 ohne Einschränkung einen Prozessor 2310 aufweisen, der kommunikativ mit einer beliebigen Anzahl oder Art von Komponenten, Peripheriegeräten, Modulen oder Vorrichtungen verbunden ist. In mindestens einer Ausführungsform ist der Prozessor 2310 über einen Bus oder eine Schnittstelle gekoppelt, wie z. B. einen I2C-Bus, einen System-Management-Bus („SMBus“), einen Low-Pin-Count-Bus („LPC“), ein Serial-Peripheral-Interface („SPI“), einen High-Definition-Audio-Bus („HDA“), einen Serial-Advance-Technology-Attachment-Bus („SATA“), einen „USB“ (Versionen 1, 2, 3, usw.) oder einen Universal-Asynchronous-Receiver/Transmitter-Bus („UART“). In mindestens einer Ausführungsform stellt 23 ein System, das miteinander verbundene Hardware-Vorrichtungen oder „Chips“ aufweist. In mindestens einer Ausführungsform kann 23 ein beispielhaftes SoC veranschaulichen. In mindestens einer Ausführungsform können die in 23 veranschaulichten Vorrichtungen mit proprietären Zusammenschaltungen, standardisierten Zusammenschaltungen (z. B. PCIe) oder einer Kombination davon miteinander verbunden sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten der 23 über „CXL“-Zusammenschaltungen miteinander verbunden.
  • In mindestens einer Ausführungsform kann 23 eine Anzeige 2324, einen Touchscreen 2325, ein Touchpad 2330, eine Near Field Communications-Einheit („NFC“) 2345, einen Sensor-Hub 2340, einen Wärmesensor 2346, einen Express-Chipsatz („EC“) 2335, ein Trusted Platform Module („TPM“) 2338, BIOS/Firmware/Flash-Speicher („BIOS, FW Flash“) 2322, ein DSP 2360, eine Solid State Disk („SSD“) oder Festplatte („HDD“) 2320, eine drahtlose lokale Netzeinheit („WLAN“) 2350, eine Bluetooth-Einheit 2352, eine drahtlose Wide Area Network-Einheit („WWAN“) 2356, ein Global Positioning-System („GPS“) 2355, eine Kamera („USB-3.0-Kamera“) 2354, wie z. B. eine USB 3.0-Kamera, und/oder eine Low Power Double Data Rate(„LPDDR“)-Speichereinheit („LPDDR3“) 2315, die z. B. im LPDDR3-Standard implementiert ist, aufweisen. Diese Komponenten können jeweils auf beliebige geeignete Weise implementiert sein.
  • In mindestens einer Ausführungsform können andere Komponenten mit dem Prozessor 2310 über die oben erörterten Komponenten kommunikativ verbunden sein. In mindestens einer Ausführungsform können ein Beschleunigungsmesser 2341, ein Umgebungslichtsensor („ALS“) 2342, ein Kompass 2343 und ein Gyroskop 2344 kommunikativ mit dem Sensor-Hub 2340 gekoppelt sein. In mindestens einer Ausführungsform können ein Wärmesensor 2339, ein Lüfter 2337, eine Tastatur 2336 und ein Touchpad 2330 kommunikativ mit dem EC 2335 verbunden sein. In mindestens einer Ausführungsform können ein Lautsprecher 2363, ein Kopfhörer 2364 und ein Mikrofon („Mic“) 2365 kommunikationsmäßig mit einer Audioeinheit („Audio-Codec und Klasse D-Verstärker“) 2362 gekoppelt sein, die wiederum kommunikationsmäßig mit dem DSP 2360 gekoppelt sein können. In mindestens einer Ausführungsform kann die Audioeinheit 2362 zum Beispiel und ohne Einschränkung einen Audiocodierer/-decodierer („Codec“) und einen Klasse-D-Verstärker beinhalten. In mindestens einer Ausführungsform kann die SIM-Karte („SIM“) 2357 mit der WWAN-Einheit 2356 kommunikativ gekoppelt sein. In mindestens einer Ausführungsform können Komponenten wie die WLAN-Einheit 2350 und die Bluetooth-Einheit 2352 sowie die WWAN-Einheit 2356 in einem Next Generation Form Factor („NGFF“) implementiert sein.
  • 24 veranschaulicht eine beispielhafte integrierte Schaltung 2400, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform handelt es sich bei der integrierten Schaltung 2400 um ein SoC, das unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann. In mindestens einer Ausführungsform weist die integrierte Schaltung 2400 einen oder mehrere Anwendungsprozessor(en) 2405 (z. B. CPUs), mindestens einen Grafikprozessor 2410 auf und kann zusätzlich einen Bildprozessor 2415 und/oder einen Videoprozessor 2420 aufweisen, von denen jeder ein modularer IP-Kern sein kann. In mindestens einer Ausführungsform weist die integrierte Schaltung 2400 eine Peripherie- oder Buslogik auf, darunter eine USB-Steuerung 2425, eine UART-Steuerung 2430, eine SPI/SDIO-Steuerung 2435 und eine I2S/I2C-Steuerung 2440. In mindestens einer Ausführungsform kann die integrierte Schaltung 2400 eine Anzeigevorrichtung 2445 beinhalten, die an eine oder mehrere von einer High-Definition-Multimedia-Interface(„HDMI“)-Steuerung 2450 und einer Mobile-Industry-Processor-Interface-Anzeigeschnittstelle („MIPI“-Anzeigeschnittstelle) 2455 gekoppelt ist. In mindestens einer Ausführungsform kann die Speicherung durch ein Flash-Speicherteilsystem 2460 bereitgestellt sein, das Flash-Speicher und eine Flash-Speichersteuerung beinhaltet. In mindestens einer Ausführungsform kann eine Speicherschnittstelle über eine Speichersteuerung 2465 für den Zugriff auf SDRAM- oder SRAM-Speichervorrichtungen bereitgestellt sein. In mindestens einer Ausführungsform beinhalten einige integrierte Schaltungen zusätzlich eine eingebettete Sicherheits-Engine 2470.
  • 25 veranschaulicht ein Rechensystem 2500 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet das Rechensystem 2500 ein Verarbeitungsteilsystem 2501 mit einem oder mehreren Prozessor(en) 2502 und einem Systemspeicher 2504, die über einen Zusammenschaltungspfad kommunizieren, der einen Speicher-Hub 2505 beinhalten kann. In mindestens einer Ausführungsform kann der Speicher-Hub 2505 eine getrennte Komponente innerhalb einer Chipsatzkomponente sein oder kann in einen oder mehrere Prozessoren 2502 integriert sein. In mindestens einer Ausführungsform ist der Speicher-Hub 2505 über eine Kommunikationsverknüpfung 2506 mit einem E/A-Teilsystem 2511 gekoppelt. In mindestens einer Ausführungsform beinhaltet das E/A-Teilsystem 2511 einen E/A-Hub 2507, der es dem Rechensystem 2500 ermöglichen kann, Eingaben von einer oder mehreren Eingabevorrichtung(en) 2508 zu empfangen. In mindestens einer Ausführungsform kann der E/A-Hub 2507 es einer Anzeigesteuerung, die in einem oder mehreren Prozessor(en) 2502 beinhaltet sein kann, ermöglichen, einer oder mehreren Anzeigevorrichtung(en) 2510A Ausgaben bereitzustellen. In mindestens einer Ausführungsform können eine oder mehrere mit dem E/A-Hub 2507 gekoppelte Anzeigevorrichtung(en) 2510A eine lokale, interne oder eingebettete Anzeigevorrichtung beinhalten.
  • In mindestens einer Ausführungsform beinhaltet das Verarbeitungsteilsystem 2501 einen oder mehrere Parallelprozessor(en) 2512, die über einen Bus oder eine andere Kommunikationsverknüpfung 2513 an den Speicher-Hub 2505 gekoppelt sind. In mindestens einer Ausführungsform kann die Verknüpfung 2513 eine beliebige Anzahl von standardbasierten Verknüpfungstechnologien oder Protokollen sein, wie PCI Express, aber nicht darauf beschränkt, oder kann eine herstellerspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur sein. In mindestens einer Ausführungsform bilden einige oder alle der parallelen Prozessoren 2512 ein rechnerisch fokussiertes Parallel- oder Vektorverarbeitungssystem, das eine große Anzahl von Verarbeitungskernen und/oder Verarbeitungsclustern aufweisen kann, wie z. B. einen Many Integrated Core-Prozessor. In mindestens einer Ausführungsform bilden einige oder alle Parallelprozessor(en) 2512 ein Grafikverarbeitungsteilsystem, das Pixel an eine oder mehrere Anzeigevorrichtung(en) 2510A ausgeben kann, die über den E/A-Hub 2507 gekoppelt sind. In mindestens einer Ausführungsform können die Parallelprozessor(en) 2512 zudem eine Anzeigesteuerung und eine Anzeigeschnittstelle (nicht gezeigt) beinhalten, um eine direkte Verbindung zu einer oder mehreren Anzeigevorrichtung(en) 2510B zu ermöglichen.
  • In mindestens einer Ausführungsform kann eine Systemspeichereinheit 2514 mit dem E/A-Hub 2507 verbunden sein, um einen Speichermechanismus für das Rechensystem 2500 bereitzustellen. In mindestens einer Ausführungsform kann ein E/A-Switch 2516 verwendet werden, um einen Schnittstellenmechanismus bereitzustellen, um Verbindungen zwischen dem E/A-Hub 2507 und anderen Komponenten zu ermöglichen, wie etwa einem Netzadapter 2518 und/oder einem drahtlosen Netzadapter 2519, die in eine Plattform integriert sein können, und verschiedenen anderen Vorrichtungen, die über eine oder mehrere Erweiterungsvorrichtung(en) 2520 hinzugefügt werden können. In mindestens einer Ausführungsform kann der Netzadapter 2518 ein Ethernet-Adapter oder ein anderer kabelgebundener Netzadapter sein. In mindestens einer Ausführungsform kann der drahtlose Netzadapter 2519 eine oder mehrere Wi-Fi-, Bluetooth-, NFC- oder andere Netzvorrichtungen aufweisen, die ein oder mehrere drahtlose Funkvorrichtungen enthalten.
  • In mindestens einer Ausführungsform kann das Rechensystem 2500 andere, nicht explizit gezeigte Komponenten beinhalten, z. B. USB- oder andere Portverbindungen, optische Speicherlaufwerke, Videoaufnahmevorrichtungen und/oder Variationen davon, die ebenfalls mit dem E/A-Hub 2507 verbunden sein können. In mindestens einer Ausführungsform können Kommunikationswege, die verschiedene Komponenten in 25 miteinander verbinden, unter Verwendung beliebiger geeigneter Protokolle implementiert sein, wie z. B. PCI-basierte Protokolle (z. B. PCI-e) oder andere Bus- oder Punkt-zu-Punkt-Kommunikationsschnittstellen und/oder Protokolle, wie z. B. NV-Link Hochgeschwindigkeitszusammenschaltung oder Zusammenschaltungsprotokolle.
  • In mindestens einer Ausführungsform enthalten der eine oder die mehreren Parallelprozessor(en) 2512 Schaltungen, die für die Grafik- und Videoverarbeitung optimiert sind, z. B. Videoausgangsschaltungen, und bilden eine Grafikverarbeitungseinheit („GPU“). In mindestens einer Ausführungsform beinhalten der eine oder die mehreren Parallelprozessor(en) 2512 Schaltungen, die für Universalverarbeitung optimiert sind. In mindestens einer Ausführungsform können Komponenten des Rechensystems 2500 mit einem oder mehreren anderen Systemelementen auf einem einzigen integrierten Schaltkreis integriert sein. Zum Beispiel können in mindestens einer Ausführungsform der eine oder die mehreren Parallelprozessor(en) 2512, der Speicher-Hub 2505, der/die Prozessor(en) 2502 und der E/A-Hub 2507 in eine integrierte Schaltung als SoC integriert sein. In mindestens einer Ausführungsform können Komponenten des Computersystems 2500 in ein einzelnes Paket integriert werden, um eine System-in-Gehäuse(system in package - „SIP“)-Konfiguration zu bilden. In mindestens einer Ausführungsform kann mindestens ein Teil der Komponenten des Computersystems 2500 in ein Mehrchipmodul („MCM“) integriert werden, das mit anderen Mehrchipmodulen zu einem modularen Computersystem verbunden werden kann. In mindestens einer Ausführungsform sind das E/A-Teilsystem 2511 und die Anzeigevorrichtungen 2510B nicht im Rechensystem 2500 enthalten.
  • VERARBEITUNGSSYSTEME
  • Die folgenden Figuren legen ohne Einschränkung beispielhafte Verarbeitungssysteme dar, die verwendet werden können, um mindestens eine Ausführungsform zu implementieren.
  • 26 veranschaulicht eine beschleunigte Verarbeitungseinheit („APU“) 2600 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird die APU 2600 von der AMD Corporation, Santa Clara, Kalifornien, entwickelt. In mindestens einer Ausführungsform kann die APU 2600 dazu konfiguriert sein, ein Anwendungsprogramm, wie etwa ein CUDA-Programm, auszuführen. In mindestens einer Ausführungsform beinhaltet die APU 2600 unter anderem einen Kernkomplex 2610, einen Grafikkomplex 2640, eine Struktur 2660, E/A-Schnittstellen 2670, eine Speichersteuerung 2680, eine Anzeigesteuerung 2692 und eine Multimedia-Engine 2694. In mindestens einer Ausführungsform kann die APU 2600 ohne Einschränkung eine beliebige Anzahl von Kernkomplexen 2610, eine beliebige Anzahl von Grafikkomplexen 2640, eine beliebige Anzahl von Anzeigesteuerungen 2692 und eine beliebige Anzahl von Multimedia-Engines 2694 in einer beliebigen Kombination beinhalten. Zu Erläuterungszwecken werden hierin mehrere Instanzen von gleichen Objekten mit Bezugszeichen bezeichnet, die ein Objekt identifizieren, und in Klammern gesetzte Nummern identifizieren eine Instanz, wo dies erforderlich ist.
  • In mindestens einer Ausführungsform ist der Kernkomplex 2610 eine CPU, ist der Grafikkomplex 2640 eine GPU und ist die APU 2600 eine Verarbeitungseinheit, die ohne Einschränkung 2610 und 2640 auf einem einzelnen Chip integriert ist. In mindestens einer Ausführungsform können dem Kernkomplex 2610 einige Tasks zugewiesen werden und können dem Grafikkomplex 2640 andere Tasks zugewiesen werden. In mindestens einer Ausführungsform ist der Kernkomplex 2610 konfiguriert, um mit der APU 2600 assoziierte Hauptsteuersoftware, wie etwa ein Betriebssystem, auszuführen. In mindestens einer Ausführungsform ist der Kernkomplex 2610 ein Masterprozessor der APU 2600, der Operationen anderer Prozessoren steuert und koordiniert. In mindestens einer Ausführungsform gibt der Kernkomplex 2610 Befehle aus, die eine Operation des Grafikkomplexes 2640 steuern. In mindestens einer Ausführungsform kann der Kernkomplex 2610 konfiguriert sein, um vom Host ausführbaren Code, der vom CUDA-Quellcode abgeleitet ist, auszuführen, und der Grafikkomplex 2640 kann konfiguriert sein, um von der Vorrichtung ausführbaren Code, der vom CUDA-Quellcode abgeleitet ist, auszuführen.
  • In mindestens einer Ausführungsform beinhaltet der Kernkomplex 2610, ohne Einschränkung, die Kerne 2620(1)-2620(4) und einen L3-Cache 2630. In mindestens einer Ausführungsform kann der Kernkomplex 2610 ohne Einschränkung eine beliebige Anzahl von Kernen 2620 und eine beliebige Anzahl und Art von Caches in beliebiger Kombination beinhalten. In mindestens einer Ausführungsform sind die Kerne 2620 konfiguriert, um Anweisungen einer konkreten Anweisungssatzarchitektur (instruction set architecture - „ISA“) auszuführen. In mindestens einer Ausführungsform ist jeder Kern 2620 ein CPU-Kern.
  • In mindestens einer Ausführungsform beinhaltet jeder Kern 2620, ohne Einschränkung, eine Abruf-/Decodiereinheit 2622, eine Ganzzahl-Ausführungs-Engine 2624, eine Gleitkomma-Ausführungs-Engine 2626 und einen L2-Cache 2628. In mindestens einer Ausführungsform ruft die Abruf-/Decodiereinheit 2622 Anweisungen ab, decodiert solche Anweisungen, erzeugt Mikrooperationen und sendet separate Mikroanweisungen an die Ganzzahl-Ausführungs-Engine 2624 und die Gleitkomma-Ausführungs-Engine 2626 ab. In mindestens einer Ausführungsform kann die Abruf-/Decodiereinheit 2622 gleichzeitig eine Mikroanweisung an die Ganzzahl-Ausführungs-Engine 2624 und eine weitere Mikroanweisung die Gleitkomma-Ausführungs-Engine 2626 absenden. In mindestens einer Ausführungsform führt die Ganzzahl-Ausführungs-Engine 2624 ohne Einschränkung Ganzzahl- und Speicheroperationen aus. In mindestens einer Ausführungsform führt die Gleitkomma-Engine 2626 ohne Einschränkung Gleitkomma- und Vektoroperationen aus. In mindestens einer Ausführungsform gibt die Abruf-/Decodiereinheit 2622 Mikrobefehle an eine einzige Ausführungs-Engine weiter, die sowohl die Ganzzahl-Ausführungs-Engine 2624 als auch die Gleitkomma-Ausführungs-Engine 2626 ersetzt.
  • In mindestens einer Ausführungsform kann jeder Kern 2620(i), wobei i eine ganze Zahl ist, die eine bestimmte Instanz von Kern 2620 darstellt, auf den L2-Cache 2628(i) zugreifen, der im Kern 2620(i) enthalten ist. In mindestens einer Ausführungsform ist jeder im Kernkomplex 2610(j) enthaltene Kern 2620, wobei j eine ganze Zahl ist, die eine bestimmte Instanz des Kernkomplexes 2610 darstellt, mit anderen im Kernkomplex 2610(j) enthaltenen Kernen 2620 über den im Kernkomplex 2610(j) enthaltenen L3-Cache 2630(j) verbunden. In mindestens einer Ausführungsform können die im Kernkomplex 2610(j) enthaltenen Kerne 2620, wobei j eine ganze Zahl ist, die eine bestimmte Instanz des Kernkomplexes 2610 darstellt, auf den gesamten L3-Cache 263 0(j) zugreifen, der im Kernkomplex 2610(j) enthalten ist. In mindestens einer Ausführungsform kann der L3-Cache 2630 ohne Einschränkung eine beliebige Anzahl von Slices beinhalten.
  • In mindestens einer Ausführungsform kann der Grafikkomplex 2640 so konfiguriert werden, dass er Rechenoperationen hochgradig parallel ausführt. In mindestens einer Ausführungsform ist der Grafikkomplex 2640 konfiguriert, um Grafikpipelineoperationen auszuführen, wie beispielsweise Zeichenbefehle, Pixeloperationen, geometrische Berechnungen und andere Operationen, die mit dem Rendern eines Bildes auf einer Anzeige assoziiert sind. In mindestens einer Ausführungsform ist der Grafikkomplex 2640 konfiguriert, um Operationen auszuführen, die sich nicht auf Grafik beziehen. In mindestens einer Ausführungsform ist der Grafikkomplex 2640 konfiguriert, um sowohl Operationen, die sich auf Grafik beziehen, als auch Operationen, die sich nicht auf Grafik beziehen, auszuführen.
  • In mindestens einer Ausführungsform beinhaltet der Grafikkomplex 2640 ohne Einschränkung eine beliebige Anzahl von Recheneinheiten 2650 und einen L2-Cache 2642. In mindestens einer Ausführungsform berechnen die Recheneinheiten 2650 den L2-Cache 2642 gemeinsam. In mindestens einer Ausführungsform ist der L2-Cache 2642 partitioniert. In mindestens einer Ausführungsform beinhaltet der Grafikkomplex 2640 ohne Einschränkung eine beliebige Anzahl von Recheneinheiten 2650 und eine beliebige Anzahl (einschließlich null) und Art von Caches. In mindestens einer Ausführungsform beinhaltet der Grafikkomplex 2640 ohne Einschränkung eine beliebige Menge an dedizierter Grafikhardware.
  • In mindestens einer Ausführungsform beinhaltet jede Recheneinheit 2650 ohne Einschränkung eine beliebige Anzahl von SIMD-Einheiten 2652 und einen gemeinsam genutzten Speicher 2654. In mindestens einer Ausführungsform implementiert jede SIMD-Einheit 2652 eine SIMD-Architektur und ist konfiguriert, um Operationen parallel durchzuführen. In mindestens einer Ausführungsform kann jede Recheneinheit 2650 eine beliebige Anzahl von Thread-Blöcken ausführen, aber jeder Thread-Block wird auf einer einzigen Recheneinheit 2650 ausgeführt. In mindestens einer Ausführungsform beinhaltet ein Thread-Block ohne Einschränkung eine beliebige Anzahl von Ausführungs-Threads. In mindestens einer Ausführungsform ist eine Arbeitsgruppe ein Thread-Block. In mindestens einer Ausführungsform führt jede SIMD-Einheit 2652 einen anderen Warp aus. In mindestens einer Ausführungsform ist ein Warp eine Gruppe von Threads (z. B. 16 Threads), wobei jeder Thread in einem Warp zu einem einzelnen Thread-Block gehört und konfiguriert ist, um einen anderen Datensatz basierend auf einem einzelnen Satz von Anweisungen zu verarbeiten. In mindestens einer Ausführungsform kann Prädikation verwendet werden, um einen oder mehrere Threads in einem Warp zu deaktivieren. In mindestens einer Ausführungsform ist ein Pfad ein Thread. In mindestens einer Ausführungsform ist ein Arbeitselement ein Thread. In mindestens einer Ausführungsform ist eine Wellenfront ein Warp. In mindestens einer Ausführungsform können sich verschiedene Wellenfronten in einem Thread-Block miteinander synchronisieren und über den gemeinsam genutzten Speicher 2654 kommunizieren.
  • In mindestens einer Ausführungsform ist die Struktur 2660 eine Systemverbindung, die die Daten- und Steuerübertragungen zwischen dem Kernkomplex 2610, dem Grafikkomplex 2640, den E/A-Schnittstellen 2670, den Speichersteuerungen 2680, der Anzeigesteuerung 2692 und der Multimedia-Engine 2694 ermöglicht. In mindestens einer Ausführungsform kann die APU 2600 ohne Einschränkung eine beliebige Menge und Art von Systemzusammenschaltung zusätzlich zu oder anstelle der Struktur 2660 beinhalten, die Daten- und Steuerübertragungen über eine beliebige Anzahl und Art von direkt oder indirekt verbundenen Komponenten ermöglicht, die sich innerhalb oder außerhalb der APU 2600 befinden können. In mindestens einer Ausführungsform stellen E/A-Schnittstellen verschiedene Anzahlen und Arten von E/A-Schnittstellen 2670 (z. B. PCI, PCI-Extended („PCI-X“), PCIe, Gigabit Ethernet („GBE“), USB, usw.) dar. In mindestens einer Ausführungsform sind verschiedene Arten von Peripheriegeräten mit E/A-Schnittstellen 2670 gekoppelt. In mindestens einer Ausführungsform können Peripheriegeräte, die mit den E/A-Schnittstellen 2670 gekoppelt sind, ohne Einschränkung Tastaturen, Mäuse, Drucker, Scanner, Joysticks oder andere Arten von Spielesteuerungen, Medienaufzeichnungsvorrichtungen, externen Speichervorrichtungen, Netzkarten usw. beinhalten.
  • In mindestens einer Ausführungsform zeigt die Anzeigesteuerung 2692 Bilder auf einer oder mehreren Anzeigevorrichtungen an, beispielsweise auf einer Flüssigkristallanzeige („LCD“). In mindestens einer Ausführungsform umfasst die Multimedia-Engine 2694 ohne Einschränkung jede Menge und Art von Schaltungen, die sich auf Multimedia beziehen, wie etwa einen Video-Decoder, einen Video-Encoder, einen Bildsignalprozessor usw. In mindestens einer Ausführungsform erleichtern die Speichersteuerungen 2680 die Datenüberführungen zwischen der APU 2600 und einem einheitlichen Systemspeicher 2690. In mindestens einer Ausführungsform nutzen der Kernkomplex 2610 und der Grafikkomplex 2640 den vereinheitlichten Systemspeicher 2690 gemeinsam.
  • In mindestens einer Ausführungsform implementiert die APU 2600 ein SpeicherTeilsystem, das ohne Einschränkung eine beliebige Anzahl und einen beliebigen Typ von Speicher-Steuerungen 2680 und Speichervorrichtungen (z. B. gemeinsamer Speicher 2654) beinhaltet, die einer Komponente zugeordnet oder von mehreren Komponenten gemeinsam genutzt werden können. In mindestens einer Ausführungsform implementiert die APU 2600 ein Cache-Teilsystem, das ohne Einschränkung einen oder mehrere Cache-Speicher (z. B. L2-Caches 2728, L3-Cache 2630 und L2-Cache 2642) beinhaltet, die jeweils für eine beliebige Anzahl von Komponenten reserviert sein können oder von diesen gemeinsam genutzt werden können (z. B. Kerne 2620, Kernkomplex 2610, SIMD-Einheiten 2652, Recheneinheiten 2650 und Grafikkomplex 2640).
  • 27 veranschaulicht eine CPU 2700 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird die CPU 2700 von der AMD Corporation, Santa Clara, Kalifornien, entwickelt. In mindestens einer Ausführungsform kann die CPU 2700 konfiguriert sein, um ein Anwendungsprogramm auszuführen. In mindestens einer Ausführungsform ist die CPU 2700 konfiguriert, um eine Hauptsteuersoftware, wie etwa ein Betriebssystem, auszuführen. In mindestens einer Ausführungsform gibt die CPU 2700 Befehle aus, die einen Betrieb einer externen GPU (nicht gezeigt) steuern. In mindestens einer Ausführungsform kann die CPU 2700 konfiguriert sein, um vom Host ausführbaren Code, der vom CUDA-Quellcode abgeleitet ist, auszuführen, und kann ein externe GPU konfiguriert sein, um von der Vorrichtung ausführbaren Code, der vom CUDA-Quellcode abgeleitet ist, auszuführen. In mindestens einer Ausführungsform beinhaltet die CPU 2700, ohne Einschränkung, eine beliebige Anzahl von Kernkomplexen 2710, Fabric 2760, E/A-Schnittstellen 2770 und Speichersteuerungen 2780.
  • In mindestens einer Ausführungsform beinhaltet der Kernkomplex 2710, ohne Einschränkung, die Kerne 2720(1)-2720(4) und einen L3-Cache 2730. In mindestens einer Ausführungsform kann der Kernkomplex 2710 ohne Einschränkung eine beliebige Anzahl von Kernen 2720 und eine beliebige Anzahl und Art von Caches in beliebiger Kombination beinhalten. In mindestens einer Ausführungsform sind die Kerne 2720 konfiguriert, um Anweisungen einer konkreten ISA auszuführen. In mindestens einer Ausführungsform ist jeder Kern 2720 ein CPU-Kern.
  • In mindestens einer Ausführungsform beinhaltet jeder Kern 2720, ohne Einschränkung, eine Abruf-/Decodiereinheit 2722, eine Ganzzahl-Ausführungs-Engine 2724, eine Gleitkomma-Ausführungs-Engine 2726 und einen L2-Cache 2728. In mindestens einer Ausführungsform ruft die Abruf-/Decodiereinheit 2722 Anweisungen ab, decodiert solche Anweisungen, erzeugt Mikrooperationen und sendet separate Mikroanweisungen an die Ganzzahl-Ausführungs-Engine 2724 und die Gleitkomma-Ausführungs-Engine 2726 ab. In mindestens einer Ausführungsform kann die Abruf-/Decodiereinheit 2722 gleichzeitig eine Mikroanweisung an die Ganzzahl-Ausführungs-Engine 2724 und eine weitere Mikroanweisung die Gleitkomma-Ausführungs-Engine 2726 absenden. In mindestens einer Ausführungsform führt die Ganzzahl-Ausführungs-Engine 2724 ohne Einschränkung Ganzzahl- und Speicheroperationen aus. In mindestens einer Ausführungsform führt die Gleitkomma-Ausführungs-Engine 2726 ohne Einschränkung Gleitkomma- und Vektoroperationen aus. In mindestens einer Ausführungsform gibt die Abruf-/Decodiereinheit 2722 Mikrobefehle an eine einzige Ausführungs-Engine weiter, die sowohl die Ganzzahl-Ausführungs-Engine 2724 als auch die Gleitkomma-Ausführungs-Engine 2726 ersetzt.
  • In mindestens einer Ausführungsform kann jeder Kern 2720(i), wobei i eine ganze Zahl ist, die eine bestimmte Instanz des Kerns 2720 darstellt, auf den L2-Cache 2728(i) zugreifen, der im Kern 2720(i) enthalten ist. In mindestens einer Ausführungsform ist jeder Kern 2720, der im Kernkomplex 2710(j) enthalten ist, wobei j eine ganze Zahl ist, die eine bestimmte Instanz des Kernkomplexes 2710 darstellt, mit anderen Kernen 2720 im Kernkomplex 2710(j) über den L3-Cache 2730(j) verbunden, der im Kernkomplex 2710(j) enthalten ist. In mindestens einer Ausführungsform können die im Kernkomplex 2710(j) enthaltenen Kerne 2720, wobei j eine ganze Zahl ist, die eine bestimmte Instanz des Kernkomplexes 2710 darstellt, auf den gesamten L3-Cache 2730(j) zugreifen, der im Kernkomplex 2710(j) enthalten ist. In mindestens einer Ausführungsform kann der L3-Cache 2730 ohne Einschränkung eine beliebige Anzahl von Slices beinhalten.
  • In mindestens einer Ausführungsform ist die Struktur 2760 eine SystemZusammenschaltung, die Daten- und Steuerübertragungen über die Kernkomplexe 2710(1)-2710(N) (wobei N eine ganze Zahl größer als Null ist), die E/A-Schnittstellen 2770 und die Speichersteuerungen 2780 ermöglicht. In mindestens einer Ausführungsform kann die CPU 2700 ohne Einschränkung eine beliebige Menge und Art von Systemzusammenschaltungen zusätzlich zu oder anstelle der Struktur 2760 beinhalten, die Daten- und Steuerübertragungen über eine beliebige Anzahl und Art von direkt oder indirekt verbundenen Komponenten ermöglicht, die sich innerhalb oder außerhalb der CPU 2700 befinden können. In mindestens einer Ausführungsform stellen E/A-Schnittstellen 2770 eine beliebige Anzahl und Art von E/A-Schnittstellen dar (z. B. PCI , PCI-X, PCIe, GBE, USB usw.). In mindestens einer Ausführungsform sind verschiedene Arten von Peripheriegeräten mit E/A-Schnittstellen 2770 gekoppelt. In mindestens einer Ausführungsform können verschiedene Arten von Peripheriegeräten, die mit den E/A-Schnittstellen 2770 gekoppelt sind, ohne Einschränkung Anzeigen, Tastaturen, Mäuse, Drucker, Scanner, Joysticks oder andere Arten von Spielesteuerungen, Medienaufzeichnungsvorrichtungen, externen Speichervorrichtungen, Netzkarten usw. beinhalten.
  • In mindestens einer Ausführungsform unterstützen die Speichersteuerungen 2780 Datenübertragungen zwischen der CPU 2700 und einem Systemspeicher 2790. In mindestens einer Ausführungsform teilen sich der Kernkomplex 2710 und der Grafikkomplex 2740 den Systemspeicher 2790. In mindestens einer Ausführungsform implementiert die CPU 2700 ein Speicherteilsystem, das ohne Einschränkung eine beliebige Menge und Art von Speichersteuerungen 2780 und Speichervorrichtungen beinhaltet, die einer Komponente zugeordnet sein oder von mehreren Komponenten gemeinsam genutzt werden können. In mindestens einer Ausführungsform implementiert die CPU 2700 ein Cache-Teilsystem, das ohne Einschränkung einen oder mehrere Cache-Speicher (z. B. L2-Caches 2728 und L3-Caches 2730) beinhaltet, die jeweils für eine beliebige Anzahl von Komponenten reserviert sein können oder von diesen gemeinsam genutzt werden können (z. B. Kerne 2720 und Kernkomplexe 2710).
  • 28 veranschaulicht ein beispielhaftes Beschleunigerintegrations-Slice 2890 gemäß mindestens einer Ausführungsform. Wie hierin verwendet umfasst ein „Slice“ einen bestimmten Abschnitt der Verarbeitungsressourcen einer Beschleuniger-Integrationsschaltung. In mindestens einer Ausführungsform stellt eine Beschleuniger-Integrationsschaltung Cache-Management, Speicherzugriff, Kontext-Management und Unterbrechungsmanagement-Dienste für mehrere in einem Grafikbeschleunigungsmodul enthaltene Motoren zur Verfügung. Die Motoren für die Grafikverarbeitung können jeweils eine separate GPU umfassen. Alternativ können Grafikverarbeitungs-Engines verschiedene Arten von Grafikverarbeitungs-Engines innerhalb einer GPU umfassen wie z. B. Grafikausführungseinheiten, Medienverarbeitungs-Engines (z. B. Video-Codierer/- Decodierer), Abtaster und Blit-Engines. In mindestens einer Ausführungsform kann ein Grafikbeschleunigungsmodul eine GPU mit mehreren Motoren für die Grafikverarbeitung sein. In mindestens einer Ausführungsform kann es sich bei den Grafikverarbeitungs-Engines um einzelne GPUs handeln, die in einem gemeinsamen Gehäuse, einer Leitung oder einem Chip integriert sind.
  • Ein anwendungseffektiver Adressraum 2882 im Systemspeicher 2814 speichert Prozesselemente 2883. In einer Ausführungsform werden die Prozesselemente 2883 als Reaktion auf GPU-Aufrufe 2881 von Anwendung 2880, die auf dem Prozessor 2807 ausgeführt werden, gespeichert. Ein Prozesselement 2883 enthält den Prozesszustand für die entsprechende Anwendung 2880. Ein im Prozesselement 2883 enthaltener Arbeitsdeskriptor (Work Descriptor („WD“)) 2884 kann ein einzelner, von einer Anwendung angeforderter Job sein oder einen Zeiger auf eine Warteschlange von Jobs enthalten. In mindestens einer Ausführungsform ist der WD 2884 ein Zeiger auf eine Auftragsanforderungs-Warteschlange im effektiven Adressraum 2882 einer Anwendung .
  • Das Grafikbeschleunigungsmodul 2846 und/oder die einzelnen Grafikverarbeitungs-Engines können von allen oder einer Teilmenge der Prozesse in einem System gemeinsam genutzt werden. In mindestens einer Ausführungsform kann eine Infrastruktur zum Einrichten des Prozessstatus und zum Senden eines WD 2884 an ein Grafikbeschleunigungsmodul 2846 zum Starten eines Auftrags in einer virtualisierten Umgebung vorhanden sein.
  • In mindestens einer Ausführungsform ist ein Programmiermodell für dedizierte Prozesse implementierungsspezifisch. In diesem Modell besitzt ein einzelner Prozess das Grafikbeschleunigungsmodul 2846 oder eine einzelne Grafikverarbeitungs-Engine. Weil, wenn das Grafikbeschleunigungsmodul 2846 In mindestens einer Ausführungsform einem einzelnen Prozess gehört, initialisiert ein Hypervisor eine Beschleuniger-Integrationsschaltung für eine besitzende Partition, und ein Betriebssystem initialisiert die Beschleuniger-Integrationsschaltung für einen besitzenden Prozess, wenn das Grafikbeschleunigungsmodul 2846 zugewiesen wird.
  • Im Betrieb holt eine WD-Abrufeinheit 2891 in dem Beschleuniger-Integrations-Slice 2890 den nächsten WD 2884 ab, der eine Angabe der Arbeit aufweist, die von einer oder mehreren Grafikverarbeitungs-Engines des Grafikbeschleunigungsmoduls 2846 zu erledigen ist. Die Daten aus dem WD 2884 können in Registern 2845 gespeichert und von der Speichermananagementeinheit („MMU“) 2839, der Unterbrechungsmanagementschaltung 2847 und/oder der Kontextmanagementschaltung 2848 verwendet werden, wie es dargestellt ist. Eine Ausführungsform der MMU 2839 beinhaltet zum Beispiel eine Segment-/Seitenlaufschaltung zum Zugreifen auf Segment-/Seitentabellen 2886 innerhalb des virtuellen Adressraums 2885 des OS. Die Unterbrechungsmanagementschaltung 2847 kann vom Grafikbeschleunigungsmodul 2846 empfangene Unterbrechungsereignisse („INT“) 2892 verarbeiten. Beim Durchführen von Grafikoperationen wird in mindestens einer Ausführungsform eine durch eine Grafikverarbeitungs-Engine erzeugte effektive Adresse 2893 durch die MMU 2839 in eine reale Adresse übersetzt.
  • In mindestens einer Ausführungsform wird ein gleicher Satz von Registern 2845 für jede Grafikverarbeitungs-Engine und/oder jedes Grafikbeschleunigungsmodul 2846 dupliziert und können von einem Hypervisor oder Betriebssystem initialisiert werden. Jedes dieser duplizierten Register kann in einer Beschleuniger-Integrations-Slice 2890 enthalten sein. Beispielhafte Register, die von einem Hypervisor initialisiert werden können, sind in Tabelle 1 aufgeführt. Tabelle 1 - Vom Hypervisor initialisierte Register
    1 Slice-Steuerregister
    2 Bereichszeiger geplante Prozesse reale Adresse (RA)
    3 Autoritätsmasken-Überschreibungsregister
    4 Unterbrechungsvektor-Tabelleneintragsversatz
    5 Unterbrechungsvektor-Tabelleneintragsbegrenzung
    6 Zustandsregister
    7 Logische Partitions-ID
    8 Datensatzzeiger Hypervisor-Beschleuniger-Nutzung reale Adresse (RA)
    9 Speicherbeschreibungsregister
  • Beispielhafte Register, die von einem Betriebssystem initialisiert werden können, sind in Tabelle 2 aufgeführt. Tabelle 2 - Initialisierte Register des Betriebssystems
    1 Prozess- und Thread-Identifikation
    2 Kontext-Speicher-/Wiederherstellungs-Zeiger effektive Adresse (EA)
    3 Datensatzzeiger Beschleuniger-Nutzung virtuelle Adresse (VA)
    4 Speichersegmenttabellenzeiger virtuelle Adresse (VA)
    5 Autoritätsmaske
    6 Arbeitsdeskriptor
  • In einer Ausführungsform ist jeder WD 2884 spezifisch für ein bestimmtes Grafikbeschleunigungsmodul 2846 und/oder eine bestimmte Grafikverarbeitungs-Engine. Er enthält alle Informationen, die für eine Grafikverarbeitungs-Engine erforderlich sind, um Arbeit zu verrichten, oder er kann ein Zeiger auf einen Speicherort sein, an dem eine Anwendung eine Befehlswarteschlange von abzuschließender Arbeit eingerichtet hat.
  • 29A-29B veranschaulichen beispielhafte Grafikprozessoren in mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann jeder der beispielhaften Grafikprozessoren unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden. Zusätzlich zu dem, was veranschaulicht ist, können in mindestens einer Ausführungsform auch andere Logiken und Schaltungen enthalten sein, einschließlich zusätzlicher Grafikprozessoren/Kerne, Peripherie-Schnittstellen-Steuerungen oder Universal-Prozessorkerne. In mindestens einer Ausführungsform sind die beispielhaften Grafikprozessoren zur Verwendung in einem SoC vorgesehen.
  • 29A veranschaulicht einen beispielhaften Grafikprozessor 2910 einer integrierten Schaltung für ein SoC, der gemäß mindestens einer Ausführungsform mit einem oder mehreren IP-Kernen hergestellt werden kann. 29B veranschaulicht einen weiteren beispielhaften Grafikprozessor 2940 eines Systems auf einer SoC-integrierten Schaltung, das gemäß mindestens einer Ausführungsform unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann. In mindestens einer Ausführungsform ist der Grafikprozessor 2910 aus 29A ein Grafikprozessorkern mit niedriger Leistung. In mindestens einer Ausführungsform ist der Grafikprozessor 2940 aus 29B ein Grafikprozessorkern mit höherer Leistung.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2910 einen Vertex-Prozessor 2905 und einen oder mehrere Fragmentprozessoren 2915A-2915N (z. B. 2915A, 2915B, 2915C, 2915D bis 2915N-1 und 2915N). In mindestens einer Ausführungsform kann der Grafikprozessor 2910 verschiedene Shader-Programme über eine separate Logik ausführen, so dass der Vertex-Prozessor 2905 für die Ausführung von Operationen für Vertex-Shader-Programme optimiert ist, während ein oder mehrere Fragmentprozessor(en) 2915A - 2915N 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 2905 eine Vertex-Verarbeitungsstufe einer 3D-Grafikpipeline durch und erzeugt Primitiv- und Vertexdaten. In mindestens einer Ausführungsform verwenden die Fragmentprozessoren 2915A - 2915N die vom Vertex-Prozessor 2905 generierten Primitiv- und Vertex-Daten, um einen Bildpuffer zu erzeugen, der auf einer Anzeigevorrichtung angezeigt wird. In mindestens einer Ausführungsform ist/sind der/die Fragmentprozessor(en) 2915A-2915N für die Ausführung von Fragment-Shader-Programmen optimiert, wie sie in einer OpenGL-API vorgesehen sind, die verwendet werden können, um ähnliche Operationen wie ein Pixel-Shader-Programm durchzuführen, wie sie in einer Direct 3D-API vorgesehen sind.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2910 zusätzlich eine oder mehrere MMU(s) 2920A-2920B, Cache(s) 2925A-2925B und Schaltungszusammenschaltung(en) 2930A-2930B. In mindestens einer Ausführungsform sorgen eine oder mehrere MMU(s) 2920A-2920B für die Zuordnung von virtuellen zu physischen Adressen für den Grafikprozessor 2910, einschließlich für den Vertex-Prozessor 2905 und/oder den/die Fragmentprozessor(en) 2915A-2915N, der/die zusätzlich zu den in einem oder mehreren Cache(s) 2925A-2925B gespeicherten Vertex- oder Bild-/Texturdaten auf im Speicher gespeicherte Vertex- oder Bild-/Texturdaten verweisen kann/können. In mindestens einer Ausführungsform können eine oder mehrere MMU(s) 2920A-2920B mit anderen MMUs innerhalb eines Systems synchronisiert werden, einschließlich einer oder mehrerer MMUs, die mit einem oder mehreren Anwendungsprozessor(en), Bildprozessoren und/oder Videoprozessoren aus 29 assoziiert sind, sodass jeder Prozessor 2905-2920 an einem gemeinsam genutzten oder einheitlichen virtuellen Speichersystem teilnehmen kann. In mindestens einer Ausführungsform ermöglichen eine oder mehrere Schaltungsverbindung(en) 2930A-2930B dem Grafikprozessor 2910 eine Schnittstelle zu anderen IP-Kernen innerhalb des SoC, entweder über einen internen Bus des SoC oder über eine direkte Verbindung.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2940 eine oder mehrere MMU(s) 2920A-2920B, Caches 2925A-2925B und Schaltungszusammenschaltungen 2930A-2930B des Grafikprozessors 2910 der 29A. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2940 einen oder mehrere Shader-Kern(e) 2955A-2955N (z. B. 2955A, 2955B, 2955C, 2955D, 2955E, 2955F bis 2955N-1 und 2955N), 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 Rechen-Shadern. In mindestens einer Ausführungsform kann eine Anzahl der Shader-Kerne variieren. In mindestens einer Ausführungsform weist der Grafikprozessor 2940 einen Inter-Core-Aufgabenmanager 2945 auf, der als Thread-Dispatcher fungiert, um Ausführungs-Threads an einen oder mehrere Shader-Kerne 2955A-2955N zu verteilen, sowie eine Kachelungseinheit 2958, um Kachelungsoperationen für kachelbasiertes Rendering zu beschleunigen, bei dem Rendering-Operationen für eine Szene im Bildraum unterteilt werden, um beispielsweise die lokale räumliche Kohärenz innerhalb einer Szene auszunutzen oder die Verwendung interner Caches zu optimieren.
  • 30A veranschaulicht einen Grafikkern 3000 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Grafikkern 3000 den Grafikprozessor 2410 aus 24 beinhalten. In mindestens einer Ausführungsform kann der Grafikkern 3000 ein einheitlicher Shader-Kern 2955A-2955N wie in 29B sein. In mindestens einer Ausführungsform beinhaltet der Grafikkern 3000 einen gemeinsam genutzten Anweisungs-Cache 3002, eine Textureinheit 3018 und einen Cache/Speicher 3020, die den Ausführungsressourcen innerhalb des Grafikkerns 3000 gemeinsam sind. In mindestens einer Ausführungsform kann der Grafikkern 3000 mehrere Slices 3001A-3001N oder Partitionen für jeden Kern beinhalten, und ein Prozessor kann mehrere Instanzen des Grafikkerns 3000 beinhalten. Slices 3001A-3001N können eine Unterstützungslogik beinhalten, die einen lokalen Anweisungs-Cache 3004A-3004N, einen Thread-Scheduler 3006A-3006N, einen Thread-Dispatcher 3008A-3008N und einen Satz von Registern 3010A-3010N umfasst. In mindestens einer Ausführungsform können die Slices 3001A-3001N einen Satz zusätzlicher Funktionseinheiten („AFUs“) 3012A-3012N, Gleitkommaeinheiten („FPUs“) 3014A-3014N, ganzzahlige arithmetische Logikeinheiten („ALUs“) 3016-3016N, Adressberechnungseinheiten („ACUs“) 3013A-3013N, Gleitkommaeinheiten mit doppelter Genauigkeit („DPFPUs“) 3015A-3015N und Matrixverarbeitungseinheiten („MPUs“) 3017A-3017N beinhalten.
  • In mindestens einer Ausführungsform können die FPUs 3014A-3014N Gleitkommaoperationen mit einfacher Genauigkeit (32 Bit) und halber Genauigkeit (16 Bit) durchführen, während die DPFPUs 3015A-3015N Gleitkommaoperationen mit doppelter Genauigkeit (64 Bit) durchführen. In mindestens einer Ausführungsform können die ALUs 3016A - 3016N ganzzahlige Operationen mit variabler Genauigkeit mit 8-Bit-, 16-Bit- und 32-Bit-Genauigkeit durchführen und für Operationen mit gemischter Genauigkeit konfiguriert sein. In mindestens einer Ausführungsform können die MPUs 3017A-3017N 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 3017-3017N eine Vielzahl von Matrixoperationen durchführen, um CUDA-Programme zu beschleunigen, einschließlich der Unterstützung für eine beschleunigte allgemeine Matrix-Matrix-Multiplikation (GEMM). In mindestens einer Ausführungsform können die AFUs 3012A-3012N zusätzliche Logikoperationen durchführen, die nicht durch Gleitkomma- oder Ganzzahl-Einheiten unterstützt werden, einschließlich trigonometrischer Operationen (z. B. Sinus, Cosinus usw.).
  • 30B veranschaulicht eine Universalverarbeitungseinheit („GPGPU“) 3030 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist die GPGPU 3030 hochparallel und für den Einsatz auf einem Mehrchipmodul geeignet. In mindestens einer Ausführungsform kann die GPGPU 3030 so ausgestaltet sein, dass sie hochparallele Rechenoperationen durch ein Array von GPUs ausführen kann. In mindestens einer Ausführungsform kann die GPGPU 3030 direkt mit anderen Instanzen der GPGPU 3030 verbunden sein, um einen Multi-GPU-Cluster zu erstellen, um die Ausführungszeit für CUDA-Programme zu verbessern. In mindestens einer Ausführungsform beinhaltet die GPGPU 3030 eine Host-Schnittstelle 3032, um eine Verbindung mit einem Host-Prozessor zu ermöglichen. In mindestens einer Ausführungsform ist die Host-Schnittstelle 3032 eine PCIe -Schnittstelle. In mindestens einer Ausführungsform kann es sich bei der Host-Schnittstelle 3032 um eine herstellerspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur handeln. In mindestens einer Ausführungsform empfängt die GPGPU 3030 Befehle von einem Host-Prozessor und verwendet einen globalen Scheduler 3034, um Ausführungs-Threads, die diesen Befehlen zugeordnet sind, an einen Satz von Rechenclustern 3036A-3036H zu verteilen. In mindestens einer Ausführungsform nutzen die Computercluster 3036A-3036H einen Cache-Speicher 3038 gemeinsam. In mindestens einer Ausführungsform kann der Cache-Speicher 3038 als übergeordneter Cache für Cache-Speicher innerhalb der Computercluster 3036A-3036H dienen.
  • In mindestens einer Ausführungsform beinhaltet die GPGPU 3030 Speicher 3044A-3044B, der über einen Satz von Speichersteuerungen 3042A-3042B mit den Rechenclustern 3036A-3036H gekoppelt ist. In mindestens einer Ausführungsform kann der Speicher 3044A-3044B verschiedene Typen von Speichervorrichtungen beinhalten, darunter DRAM oder Grafik-Direktzugriffsspeicher, wie etwa synchroner Grafik-Direktzugriffsspeicher („SGRAM“), darunter Grafik-Double-Data-Rate(„GDDR“)-Speicher.
  • In mindestens einer Ausführungsform beinhalten die Computercluster 3036A-3036H jeweils einen Satz von Grafikkernen, wie z. B. den Grafikkern 3000 von 30A, 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 geeignet sind, die mit CUDA-Programmen assoziiert sind. Zum Beispiel kann in mindestens einer Ausführungsform mindestens eine Teilmenge von Gleitkommaeinheiten in jedem der Computercluster 3036A-3036H so konfiguriert sein, dass sie 16-Bit- oder 32-Bit-Gleitkommaoperationen durchführen, während eine andere Teilmenge von Gleitkommaeinheiten so konfiguriert sein kann, dass sie 64-Bit-Gleitkommaoperationen durchführen kann.
  • In mindestens einer Ausführungsform können mehrere Instanzen der GPGPU 3030 für den Betrieb als ein Computercluster konfiguriert sein. In mindestens einer Ausführungsform können die Computercluster 3036A-3036H jede technisch mögliche Kommunikationstechnik für die Synchronisation und den Datenaustausch implementieren. In mindestens einer Ausführungsform kommunizieren mehrere Instanzen der GPGPU 3030 über die Host-Schnittstelle 3032. In mindestens einer Ausführungsform beinhaltet die GPGPU 3030 einen E/A-Hub 3039, der die GPGPU 3030 mit einer GPU-Verknüpfung 3040 koppelt, die eine direkte Verbindung zu anderen Instanzen der GPGPU 3030 ermöglicht. In mindestens einer Ausführungsform ist die GPU-Verknüpfung 3040 an eine dedizierte GPU-zu-GPU-Brücke gekoppelt, die Kommunikation und Synchronisation zwischen mehreren Instanzen der GPGPU 3030 ermöglicht. In mindestens einer Ausführungsform ist der GPU-Link 3040 mit einer Hochgeschwindigkeits-Verbindung gekoppelt, um Daten an andere GPGPUs 3030 oder Parallelprozessoren zu senden und zu empfangen. In mindestens einer Ausführungsform befinden sich mehrere Instanzen der GPGPU 3030 in separaten Datenverarbeitungssystemen und kommunizieren über eine Netzvorrichtung, auf die über die Host-Schnittstelle 3032 zugegriffen werden kann. In mindestens einer Ausführungsform kann die GPU-Verknüpfung 3040 so konfiguriert sein, dass eine Verbindung zu einem Host-Prozessor zusätzlich zu oder alternativ zu der Host-Schnittstelle 3032 ermöglicht, wird In mindestens einer Ausführungsform kann die GPGPU 3030 so konfiguriert werden, dass sie ein CUDA-Programm ausführt.
  • 31A veranschaulicht einen Parallelprozessor 3100 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform können verschiedene Komponenten des Parallelprozessors 3100 unter Verwendung einer oder mehrerer integrierten Schaltungsvorrichtungen umgesetzt sein, wie etwa programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen („ASICs“) oder FPGAs.
  • In mindestens einer Ausführungsform beinhaltet der Parallelprozessor 3100 eine Parallelverarbeitungseinheit 3102. In mindestens einer Ausführungsform beinhaltet die Parallelverarbeitungseinheit 3102 eine E/A-Einheit 3104, die Kommunikation mit anderen Vorrichtungen ermöglicht, einschließlich anderer Instanzen der Parallelverarbeitungseinheit 3102. In mindestens einer Ausführungsform kann die E/A-Einheit 3104 direkt mit anderen Vorrichtungen verbunden sein. In mindestens einer Ausführungsform ist die E/A-Einheit 3104 über die Verwendung einer Hub- oder Switch-Schnittstelle, wie etwa dem Speicher-Hub 605, mit anderen Vorrichtungen verbunden. In mindestens einer Ausführungsform bilden Verbindungen zwischen dem Speicher-Hub 605 und der E/A-Einheit 3104 eine Kommunikationsverbindung. In mindestens einer Ausführungsform ist die E/A-Einheit 3104 mit einer Host-Schnittstelle 3106 und einer Speicherkreuzschiene 3116 verbunden, wobei die Host-Schnittstelle 3106 Befehle empfängt, die auf das Durchführen von Verarbeitungsoperationen gerichtet sind, und die Speicherkreuzschiene 3116 Befehle empfängt, die auf das Durchführen von Speicheroperationen gerichtet sind.
  • In mindestens einer Ausführungsform, wenn die Host-Schnittstelle 3106 einen Befehlspuffer über die E/A-Einheit 3104 empfängt, kann die Host-Schnittstelle 3106 Arbeitsoperationen zur Ausführung dieser Befehle an ein Frontend 3108 leiten. In mindestens einer Ausführungsform ist das Front-End 3108 mit einem Scheduler 3110 gekoppelt, der dazu konfiguriert ist, Befehle oder andere Arbeitselemente an ein Verarbeitungscluster-Array 3112 zu verteilen. In mindestens einer Ausführungsform stellt der Scheduler 3110 sicher, dass das Verarbeitungscluster-Array 3112 ordnungsgemäß konfiguriert ist und sich in einem gültigen Zustand befindet, bevor Aufgaben an ein Verarbeitungsarray 3112 verteilt werden. In mindestens einer Ausführungsform ist der Scheduler 3110 über Firmware-Logik implementiert, die auf einer Mikrosteuerung ausgeführt wird. In mindestens einer Ausführungsform ist der durch eine Mikrosteuerung implementierte Scheduler 3110 konfigurierbar, um komplexe Planungs- und Arbeitsverteilungsoperationen mit grober und feiner Granularität durchzuführen, was eine schnelle Präemption und Kontextumschaltung von Threads ermöglicht, die auf dem Verarbeitungsarray 3112 ausgeführt werden. In mindestens einer Ausführungsform kann die Host-Software Arbeitslasten für die Planung auf dem Verarbeitungsarray 3112 über eine von mehreren Grafikverarbeitungstürklingeln nachweisen. In mindestens einer Ausführungsform können Arbeitslasten dann durch die Logik des Schedulers 3110 innerhalb einer Mikrosteuerung, die den Scheduler 3110 beinhaltet, automatisch über das Verarbeitungsarray 3112 verteilt werden.
  • In mindestens einer Ausführungsform kann das Verarbeitungscluster-Array 3112 bis zu „N“ Verarbeitungscluster beinhalten (z. B. Cluster 3114A, Cluster 3114B, bis Cluster 3114N). In mindestens einer Ausführungsform kann jeder Cluster 3114A-3114N des Verarbeitungsarrays 3112 eine große Anzahl von gleichzeitigen Threads ausführen. In mindestens einer Ausführungsform kann der Scheduler 3110 den Clustern 3114A-3114N des Verarbeitungsarrays 3112 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 Scheduler 3110 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 Verarbeitungsarray 3112 konfiguriert ist. In mindestens einer Ausführungsform können verschiedene Cluster 3114A-3114N des Verarbeitungsarrays 3112 für die Verarbeitung verschiedener Arten von Programmen oder für die Durchführung verschiedener Arten von Berechnungen zugewiesen werden.
  • In mindestens einer Ausführungsform kann das Verarbeitungsarray 3112 so ausgestaltet sein, dass sie verschiedene Arten von Parallelverarbeitungsoperationen durchführt. In mindestens einer Ausführungsform ist das Verarbeitungsarray 3112 so ausgestaltet, dass sie parallele Universal-Rechenoperationen durchführt. Zum Beispiel kann in mindestens einer Ausführungsform das Verarbeitungsarray 3112 eine Logik aufweisen, um Verarbeitungsaufgaben auszuführen, einschließlich der Filterung von Video- und/oder Audiodaten, der Durchführung von Modellierungsoperationen, einschließlich physikalischer Operationen, und der Durchführung von Datentransformationen.
  • In mindestens einer Ausführungsform ist das Verarbeitungsarray 3112 so ausgestaltet, dass sie parallele Grafikverarbeitungsoperationen durchführt. In mindestens einer Ausführungsform kann das Verarbeitungsarray 3112 eine zusätzliche Logik aufweisen, um die Ausführung solcher Grafikverarbeitungsoperationen zu unterstützen, einschließlich, aber nicht beschränkt auf Texturabtastlogik, um Texturoperationen durchzuführen, sowie Tesselationslogik und andere Vertexverarbeitungslogik. In mindestens einer Ausführungsform kann die Verarbeitungsclusteranordnung 3112 so ausgestaltet sein, dass sie grafikverarbeitungsbezogene Shader-Programme ausführt, wie z. B. Vertex-Shader, Tesselation-Shader, Geometrie-Shader und Pixel-Shader. In mindestens einer Ausführungsform kann die Parallelverarbeitungseinheit 3102 Daten aus dem Systemspeicher über die E/A-Einheit 3104 zur Verarbeitung übermitteln. In mindestens einer Ausführungsform können die übertragenen Daten während der Verarbeitung im On-Chip-Speicher (z. B. im Parallelprozessorspeicher 3122) gespeichert und dann in den Systemspeicher zurückgeschrieben werden.
  • In mindestens einer Ausführungsform, wenn die Parallelverarbeitungseinheit 3102 zum Ausführen der Grafikverarbeitung verwendet wird, kann der Scheduler 3110 so konfiguriert sein, dass er ein Verarbeitungspensum in ungefähr gleich große Aufgaben aufteilt, um eine bessere Verteilung der Grafikverarbeitungsoperationen auf mehrere Cluster 3114A-3114N des Verarbeitungsarrays 3112 zu ermöglichen. In mindestens einer Ausführungsform können Abschnitte des Verarbeitungsarrays 3112 so ausgestaltet sein, dass sie verschiedene Arten der Verarbeitung durchführen. Zum Beispiel kann in mindestens einer Ausführungsform ein erster Abschnitt dazu konfiguriert sein, Vertex-Shading und Topologiegenerierung durchzuführen, ein zweiter Abschnitt kann dazu konfiguriert sein, Tesselations- und Geometrie-Shading durchzuführen, und ein dritter Abschnitt kann dazu konfiguriert sein, Pixel-Shading oder andere Screenspace-Operationen durchzuführen, um ein gerendertes Bild für die Anzeige zu erzeugen. In mindestens einer Ausführungsform können Zwischendaten, die von einem oder mehreren Clustern 3114A-3114N erzeugt werden, in Puffern gespeichert werden, damit Zwischendaten zwischen den Clustern 3114A-3114N zur weiteren Verarbeitung übertragen werden können.
  • In mindestens einer Ausführungsform kann das Verarbeitungsarray 3112 über den Scheduler 3110, der Befehle zur Definition von Verarbeitungsaufgaben vom Frontend 3108 empfängt, auszuführende Verarbeitungsaufgaben empfangen. In mindestens einer Ausführungsform können die Verarbeitungsaufgaben Indizes der zu verarbeitenden Daten aufweisen, z. B. Oberflächen- (Patch-) Daten, Primitivdaten, Vertexdaten und/oder Pixeldaten, sowie Zustandsparameter und Befehle, die definieren, wie die Daten zu verarbeiten sind (z. B. welches Programm ausgeführt werden soll). In mindestens einer Ausführungsform kann der Scheduler 3110 konfiguriert sein, um Indizes abzurufen, die Tasks entsprechen, oder kann Indizes von dem Frontend 3108 empfangen. In mindestens einer Ausführungsform kann das Frontend 3108 so ausgestaltet sein, dass es sicherstellt, dass das Verarbeitungsarray 3112 in einem gültigen Zustand konfiguriert ist, bevor eine durch eingehende Befehlspuffer (z. B. Batch-Puffer, Push-Puffer usw.) spezifizierte Arbeitslast eingeleitet wird.
  • In mindestens einer Ausführungsform kann jede von einer oder mehreren Instanzen der Parallelverarbeitungseinheit 3102 mit einem Parallelprozessorspeicher 3122 gekoppelt sein. In mindestens einer Ausführungsform kann auf den Parallelprozessorspeicher 3122 über das Speicherkoppelfeld 3116 zugegriffen werden, die Speicheranforderungen von dem Verarbeitungsarray 3112 sowie der E/A-Einheit 3104 empfangen kann. In mindestens einer Ausführungsform kann die Speicherkreuzschiene 3116 über eine Speicherschnittstelle 3118 auf den Parallelprozessorspeicher 3122 zugreifen. In mindestens einer Ausführungsform kann die Speicherschnittstelle 3118 mehrere Partitionseinheiten aufweisen (z. B. Partitionseinheit 3120A, Partitionseinheit 3120B bis Partitionseinheit 3120N), die jeweils mit einem Abschnitt (z. B. einer Speichereinheit) des Parallelprozessorspeichers 3122 gekoppelt sein können. In mindestens einer Ausführungsform ist eine Anzahl von Partitionseinheiten 3120A-3120N so ausgestaltet, dass sie gleich einer Anzahl von Speichereinheiten ist, so dass eine erste Partitionseinheit 3120A eine entsprechende erste Speichereinheit 3124A hat, eine zweite Partitionseinheit 3120B eine entsprechende Speichereinheit 3124B hat und eine N-te Partitionseinheit 3120N eine entsprechende N-te Speichereinheit 3124N hat. In mindestens einer Ausführungsform kann eine Anzahl von Partitionseinheiten 3120A-3120N möglicherweise nicht gleich einer Anzahl von Speichervorrichtungen sein.
  • In mindestens einer Ausführungsform können die Speichereinheiten 3124A-3124N verschiedene Arten von Speichervorrichtungen beinhalten, einschließlich DRAM oder Grafik-Direktzugriffsspeicher, wie etwa SGRAM, einschließlich GDDR-Speicher. In mindestens einer Ausführungsform können die Speichereinheiten 3124A-3124N auch 3D-Stapelspeicher beinhalten, einschließlich, aber nicht beschränkt auf, Speicher mit hoher Bandbreite (high bandwidth memory - „HBM“). In mindestens einer Ausführungsform können Rendering-Ziele, wie etwa Bildpuffer oder Texturkarten, über die Speichereinheiten 3124A-3124N hinweg gespeichert werden, was es den Partitionseinheiten 3120A-3120N ermöglicht, Abschnitte jedes Rendering-Ziels parallel zu schreiben, um die verfügbare Bandbreite des Parallelprozessorspeichers 3122 effizient zu nutzen. In mindestens einer Ausführungsform kann eine lokale Instanz des Parallelprozessorspeichers 3122 zugunsten einer vereinheitlichten Speicherausgestaltung ausgeschlossen werden, die Systemspeicher in Verbindung mit lokalem Cache-Speicher nutzt.
  • In mindestens einer Ausführungsform kann jeder der Cluster 3114A-3114N des Verarbeitungsarrays 3112 Daten verarbeiten, die in eine der Speichereinheiten 3124A-3124N innerhalb des Parallelprozessorspeichers 3122 geschrieben werden. In mindestens einer Ausführungsform kann die Speicherkreuzschiene 3116 so konfiguriert sein, dass sie eine Ausgabe jedes Clusters 3114A-3114N an eine beliebige Partitionseinheit 3120A-3120N oder an einen anderen Cluster 3114A-3114N übermittelt, der zusätzliche Verarbeitungsoperationen an einer Ausgabe durchführen kann. In mindestens einer Ausführungsform kann jeder Cluster 3114A-3114N durch die Speicherkreuzschiene 3116 mit der Speicherschnittstelle 3118 kommunizieren, um aus verschiedenen externen Speichervorrichtungen zu lesen oder in diese zu schreiben. In mindestens einer Ausführungsform weist die Speicherkreuzschiene 3116 eine Verbindung mit der Speicherschnittstelle 3118 auf, um mit der E/A-Einheit 3104 zu kommunizieren, sowie eine Verbindung mit einer lokalen Instanz des Parallelprozessorspeichers 3122, was es den Verarbeitungseinheiten innerhalb der unterschiedlichen Cluster 3114A-3114N ermöglicht, mit Systemspeicher oder anderem Speicher zu kommunizieren, der nicht lokal zu der Parallelverarbeitungseinheit 3102 ist. In mindestens einer Ausführungsform kann die Speicherkreuzschiene 3116 virtuelle Kanäle verwenden, um Verkehrsströme zwischen Clustern 3114A-3114N und Partitionseinheiten 3120A-3120N zu trennen.
  • In mindestens einer Ausführungsform können mehrere Instanzen der Parallelverarbeitungseinheit 3102 auf einer einzigen Erweiterungskarte bereitgestellt sein, oder mehrere Erweiterungskarten können miteinander verbunden sein. In mindestens einer Ausführungsform können verschiedene Instanzen der Parallelverarbeitungseinheit 3102 so ausgestaltet sein, dass sie auch dann zusammenarbeiten, wenn die verschiedenen Instanzen eine unterschiedliche Anzahl von Verarbeitungskernen, unterschiedliche Mengen an lokalem Parallelprozessorspeicher und/oder andere Konfigurationsunterschiede aufweisen. Zum Beispiel können in mindestens einer Ausführungsform einige Instanzen der Parallelverarbeitungseinheit 3102 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 3102 oder des Parallelprozessors 3100 einbeziehen, in einer Vielfalt von Konfigurationen und Formfaktoren implementiert sein, einschließlich, aber nicht beschränkt auf, Desktop-, Laptop- oder tragbarer Personalcomputer, Server, Arbeitsstationen, Spielekonsolen und/oder eingebetteter Systeme.
  • 31B veranschaulicht einen Verarbeitungscluster 3194 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der Verarbeitungscluster 3194 beinhaltet in einer Parallelverarbeitungseinheit. In mindestens einer Ausführungsform ist der Verarbeitungscluster 3194 einer der Verarbeitungscluster 3114A-3114N aus 31. In mindestens einer Ausführungsform kann der Verarbeitungscluster 3194 so konfiguriert sein, dass es viele Threads parallel ausführt, wobei sich der Begriff „Thread“ auf eine Instanz eines konkreten Programms bezieht, die an einem konkreten 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 3194 ausgibt.
  • In mindestens einer Ausführungsform kann die Operation des Verarbeitungsclusters 3194 über einen Pipelinemanager 3132 gesteuert werden, der die Verarbeitungs-Tasks auf die SIMT-Parallelprozessoren verteilt. In mindestens einer Ausführungsform empfängt der Pipelinemanager 3132 Anweisungen von dem Scheduler 3110 aus 31A und verwaltet die Ausführung dieser Anweisungen über einen Grafikmultiprozessor 3134 und/oder eine Textureinheit 3136. In mindestens einer Ausführungsform ist der Grafikmultiprozessor 3134 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 3194 beinhaltet sein. In mindestens einer Ausführungsform können eine oder mehrere Instanzen des Grafikmultiprozessors 3134 innerhalb des Verarbeitungsclusters 3194 beinhaltet sein. In mindestens einer Ausführungsform kann der Grafikmultiprozessor 3134 Daten verarbeiten und eine Datenkreuzschiene 3140 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 3132 die Verteilung von verarbeiteten Daten erleichtern, indem er Ziele für zu verteilende verarbeitete Daten über die Datenkreuzschiene 3140 vorgibt.
  • In mindestens einer Ausführungsform kann jeder Grafikmultiprozessor 3134 innerhalb des Verarbeitungsclusters 3194 einen identischen Satz funktionaler Ausführungslogik beinhalten (z. B. arithmetische Logikeinheiten, Lade-/Speichereinheiten („LSUs“) usw.). In mindestens einer Ausführungsform kann die funktionale Ausführungslogik in einer Pipeline dazu konfiguriert sein, neue Anweisungen ausgegeben zu 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 eine beliebige Kombination von Funktionseinheiten vorhanden sein.
  • In mindestens einer Ausführungsform bilden die an den Verarbeitungscluster 3194 übertragenen Anweisungen einen Thread. In mindestens einer Ausführungsform ist ein Satz von Threads, die über einen Satz von Parallelverarbeitungs-Engines ausgeführt werden, eine Thread-Gruppe. In mindestens einer Ausführungsform führt eine Thread-Gruppe ein Programm an unterschiedlichen Eingabedaten aus. In mindestens einer Ausführungsform kann jeder Thread innerhalb einer Thread-Gruppe einer anderen Verarbeitungs-Engine innerhalb des Grafikmultiprozessors 3134 zugewiesen sein. In mindestens einer Ausführungsform kann eine Thread-Gruppe weniger Threads beinhalten als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafikmultiprozessors 3134. In mindestens einer Ausführungsform kann, wenn eine Thread-Gruppe weniger Threads als eine Anzahl von Verarbeitungs-Engines aufweist, eine oder mehrere der Verarbeitungs-Engines während der Zyklen, in denen diese Thread-Gruppe verarbeitet wird, im Leerlauf sein. In mindestens einer Ausführungsform kann eine Thread-Gruppe auch mehr Threads beinhalten als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafikmultiprozessors 3134. Wenn eine Thread-Gruppe mehr Threads als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafikmultiprozessors 3134 beinhaltet, kann das Verarbeiten in mindestens einer Ausführungsform über aufeinanderfolgende Taktzyklen durchgeführt werden. In mindestens einer Ausführungsform können mehrere Thread-Gruppen gleichzeitig auf einem Grafikmultiprozessor 3134 ausgeführt werden.
  • In mindestens einer Ausführungsform können mehrere Thread-Gruppen nebenläufig auf einem Grafikmultiprozessor 3134 ausgeführt werden. In mindestens einer Ausführungsform kann der Grafikmultiprozessor 3134 auf einen internen Cache verzichten und einen Cache-Speicher (z. B. L1-Cache 3148) innerhalb des Verarbeitungsclusters 3194 verwenden. In mindestens einer Ausführungsform hat jeder Grafikmultiprozessor 3134 auch Zugriff auf Level-2(„L2“)-Caches innerhalb von Partitionseinheiten (z. B. die Partitionseinheiten 3120A-3120N von 31A), die von allen Verarbeitungsclustern 3194 gemeinsam genutzt werden und zur Datenübertragung zwischen Threads verwendet werden können. In mindestens einer Ausführungsform kann der Grafikmultiprozessor 3134 auch auf den chipexternen globalen Speicher zugreifen, der einen oder mehrere von dem lokalen Parallelprozessorspeicher und/oder dem Systemspeicher beinhalten kann. In mindestens einer Ausführungsform kann jeder Speicher außerhalb der Parallelverarbeitungseinheit 3102 als globaler Speicher verwendet werden. In mindestens einer Ausführungsform beinhaltet der Verarbeitungscluster 3194 mehrere Instanzen des Grafikmultiprozessors 3134, die gemeinsame Anweisungen und Daten gemeinsam nutzen können, die im L1-Cache 3148 gespeichert sein können.
  • In mindestens einer Ausführungsform kann jeder Verarbeitungscluster 3194 eine MMU 3145 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 3145 innerhalb der Speicherschnittstelle 3118 aus 31. In mindestens einer Ausführungsform beinhaltet die MMU 3145 einen Satz von Seitentabelleneinträgen (page table entries - „PTEs“), der dazu verwendet wird, eine virtuelle Adresse auf eine physische Adresse einer Kachel abzubilden, sowie optional einen Cache-Zeilenindex. In mindestens einer Ausführungsform kann die MMU 3145 Adressübersetzungspuffer (translation lookaside buffers - TLB) oder Caches beinhalten, die sich innerhalb des Grafikmultiprozessors 3134 oder des L1-Caches 3148 oder des Verarbeitungsclusters 3194 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-Zeilen-Index verwendet werden, um zu bestimmen, ob eine Anforderung für eine Cache-Zeile ein Treffer (Hit) oder Fehlzugriff (Miss) ist.
  • In mindestens einer Ausführungsform kann der Verarbeitungscluster 3194 so ausgestaltet sein, dass jeder Grafikmultiprozessor 3134 mit einer Textureinheit 3136 gekoppelt ist, um Texturabbildungsoperationen durchzuführen, z. B. Bestimmen von Texturabtastpositionen, Lesen von Texturdaten und Filtern von Texturdaten. In mindestens einer Ausführungsform werden die Texturdaten aus einem internen Textur-L1-Cache (nicht gezeigt) oder aus einem L1-Cache innerhalb des Grafikmultiprozessors 3134 gelesen und je nach Bedarf aus einem L2-Cache, einem lokalen Parallelprozessorspeicher oder dem Systemspeicher abgerufen. In mindestens einer Ausführungsform gibt jeder Grafikmultiprozessor 3134 eine verarbeitete Aufgabe an die Datenkreuzschiene 3140 aus, um verarbeitete Aufgaben einem anderen Verarbeitungscluster 3194 zur weiteren Verarbeitung bereitzustellen oder eine verarbeitete Aufgabe über die Speicherkreuzschiene 3116 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“) 3142 konfiguriert, um Daten von dem Grafikmultiprozessor 3134 zu empfangen und um Daten an ROP-Einheiten zu leiten, die sich bei Partitionseinheiten befinden können, wie hierin beschrieben (z. B. die Partitionseinheiten 3120A-3120N aus 31A). In mindestens einer Ausführungsform kann die preROP 3142 Optimierungen für die Farbmischung durchführen, Pixelfarbdaten organisieren und Adressübersetzungen vornehmen.
  • 31C veranschaulicht einen Grafikmultiprozessor 3196, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der Grafikmultiprozessor 3196 der Grafikmultiprozessor 3134 aus 31B. In mindestens einer Ausführungsform ist der Grafikmultiprozessor 3196 mit dem Pipeline-Manager 3132 des Verarbeitungsclusters 3194 gekoppelt. In mindestens einer Ausführungsform weist der Grafikmultiprozessor 3196 eine Ausführungspipeline auf, die unter anderem einen Anweisungs-Cache 3152, eine AnweisungsEinheit 3154, eine Adressabbildungseinheit 3156, eine Registerdatei 3158, einen oder mehrere GPGPU-Kerne 3162 und eine oder mehrere LSUs 3166 umfasst. Die GPGPU-Kerne 3162 und LSUs 3166 sind über eine Speicher- und Cache-Zusammenschaltung 3168 mit dem Cache-Speicher 3172 und dem gemeinsamen Speicher 3170 verbunden.
  • In mindestens einer Ausführungsform empfängt der Anweisungs-Cache 3152 einen Strom aus auszuführenden Anweisungen von dem Pipelinemanager 3132. In mindestens einer Ausführungsform werden die Anweisungen im Anweisungs-Cache 3152 zwischengespeichert und von einer Anweisungseinheit 3154 zur Ausführung versendet. In mindestens einer Ausführungsform kann die Anweisungseinheit 3154 Anweisungen als Thread-Gruppen (z. B. Warps) versenden, wobei jeder Thread der Thread-Gruppe einer anderen Ausführungseinheit innerhalb GPGPU-Kern 3162 zugewiesen ist. In mindestens einer Ausführungsform kann ein Befehl auf einen lokalen, gemeinsam genutzten oder globalen Adressraum zugreifen, indem er eine Adresse innerhalb eines einheitlichen Adressraums angibt. In mindestens einer Ausführungsform kann die Adresszuordnungseinheit 3156 verwendet werden, um Adressen in einem vereinheitlichten Adressraum in eine eindeutige Speicheradresse zu übersetzen, auf die die LSUs 3166 zugreifen können.
  • In mindestens einer Ausführungsform stellt die Registerbank 3158 einen Satz von Registern für funktionelle Einheiten des Grafikmultiprozessors 3196 bereit. In mindestens einer Ausführungsform stellt die Registerbank 3158 einen temporären Datenspeicher für Operanden bereit, die mit Datenwegen von funktionellen Einheiten (z. B. GPGPU-Kernen 3162, LSUs 3166) des Grafikmultiprozessors 3196 verbunden sind. In mindestens einer Ausführungsform ist die Registerbank 3158 zwischen den einzelnen Funktionseinheiten aufgeteilt, so dass jeder Funktionseinheit ein eigener Abschnitt der Registerbank 3158 zugewiesen ist. In mindestens einer Ausführungsform ist die Registerdatei 3158 auf verschiedene Thread-Gruppen aufgeteilt, die vom Grafikmultiprozessor 3196 ausgeführt werden.
  • In mindestens einer Ausführungsform können die GPGPU-Kerne 3162 jeweils FPUs und/oder ALUs beinhalten, die zur Ausführung von Anweisungen des Grafikmultiprozessors 3196 verwendet werden. Die GPGPU-Kerne 3162 können sich in ihrer Architektur ähneln oder unterscheiden. In mindestens einer Ausführungsform beinhaltet ein erster Abschnitt der GPGPU-Kerne 3162 eine FPU mit einfacher Genauigkeit und eine Ganzzahl-ALU, während ein zweiter Abschnitt der GPGPU-Kerne 3162 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 3196 zusätzlich eine oder mehrere Festfunktions- oder Sonderfunktionseinheiten aufweisen, um spezifische Funktionen wie das Kopieren von Rechtecken oder Pixel-Blending-Operationen durchzuführen. In mindestens einer Ausführungsform können einer oder mehrere der GPGPU-Kerne 3162 auch Fest- oder Spezialfunktionslogik beinhalten.
  • In mindestens einer Ausführungsform beinhalten die GPGPU-Kerne 3162 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 3162 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 3162 zur Kompilierzeit von einem Shader-Compiler oder automatisch bei der Ausführung von Programmen erzeugt werden, die für Single Program Multiple Data („SPMD“)- oder SIMT-Architekturen geschrieben und kompiliert wurden. In mindestens einer Ausführungsform können mehrere Threads eines Programms, das für ein SIMT-Ausführungsmodell konfiguriert ist, über eine einzige 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 3168 ein Verbindungsnetz, das jede Funktionseinheit des Grafikmultiprozessors 3196 mit der Registerdatei 3158 und dem gemeinsamen Speicher 3170 verbindet. In mindestens einer Ausführungsform ist die Speicher- und Cache-Verbindung 3168 eine Kreuzschienen-Verbindung, die es der LSU 3166 ermöglicht, Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher 3170 und der Registerbank 3158 zu implementieren. In mindestens einer Ausführungsform kann die Registerbank 3158 mit der gleichen Frequenz wie die GPGPU-Kerne 3162 arbeiten, sodass die Datenübertragung zwischen den GPGPU-Kernen 3162 und der Registerbank 3158 eine sehr geringe Latenz aufweist. In mindestens einer Ausführungsform kann der gemeinsam genutzte Speicher 3170 verwendet werden, um die Kommunikation zwischen Threads zu ermöglichen, die auf funktionellen Einheiten innerhalb des Grafikmultiprozessors 3196 ausgeführt werden. In mindestens einer Ausführungsform kann der Cache-Speicher 3172 zum Beispiel als Daten-Cache verwendet werden, um Texturdaten zwischenzuspeichern, die zwischen funktionellen Einheiten und der Textureinheit 3136 kommuniziert werden. In mindestens einer Ausführungsform kann der gemeinsame Speicher 3170 auch als programmgesteuerter Cache verwendet werden. In mindestens einer Ausführungsform können Threads, die auf den GPGPU-Kernen 3162 ausgeführt werden, zusätzlich zu den automatisch zwischengespeicherten Daten, die innerhalb des Cache-Speichers 3172 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 Funktionen einer Allzweck-GPU (GPGPU) zu beschleunigen. In mindestens einer Ausführungsform kann eine GPU über einen Bus oder eine andere Zusammenschaltung (z. B. eine Hochgeschwindigkeitszusammenschaltung wie etwa PCIe oder NVLink) kommunikativ an den Host-Prozessor/die Kerne gekoppelt sein. In mindestens einer Ausführungsform kann eine GPU in einem gleichen Gehäuse oder Chip als Kerne integriert sein und kommunikativ über einen 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 einer GPU einer GPU Arbeit in Form von BefehlsfolgenBefehlen zuweisen, die in einem WD enthalten sind. In mindestens einer Ausführungsform verwendet eine GPU dann dedizierte Schaltung/Logik zum effizienten Verarbeiten dieser Befehle/Anweisungen.
  • ALLGEMEINE DATENVERARBEITUNG
  • Die folgenden Figuren legen ohne Einschränkung beispielhafte Softwarekonstrukte innerhalb der allgemeinen Datenverarbeitung dar, die verwendet werden können, um mindestens eine Ausführungsform zu implementieren.
  • 32 veranschaulicht einen Softwarestapel einer Programmierplattform gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist eine Programmierplattform eine Plattform zum Einsetzen von Hardware auf einem Rechensystem, um Berechnungstasks zu beschleunigen. In mindestens einer Ausführungsform kann eine Programmierplattform für Softwareentwickler durch Bibliotheken, Compilerdirektiven und/oder Erweiterungen von Programmiersprachen zugänglich sein. In mindestens einer Ausführungsform kann eine Programmierplattform CUDA, Radeon Open Compute Platform („ROCm“), OpenCL (OpenCL™ wird von der Khronos-Gruppe entwickelt), SYCL oder Intel One API sein, ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform stellt ein Softwarestapel 3200 einer Programmierplattform eine Ausführungsumgebung für eine Anwendung 3201 bereit. In mindestens einer Ausführungsform kann die Anwendung 3201 eine beliebige Computersoftware beinhalten, die auf dem Softwarestapel 3200 gestartet werden kann. In mindestens einer Ausführungsform kann die Anwendung 3201 eine Anwendung für künstliche Intelligenz („KI“)/maschinelles Lernen („ML“), eine Anwendung für Hochleistungsrechnen („HPC“), eine virtuelle Desktop-Infrastruktur („VDI“) oder eine Rechenzentrumarbeitslast beinhalten, ist aber nicht darauf beschränkt.
  • In mindestens einer Ausführungsform laufen die Anwendung 3201 und der Softwarestapel 3200 auf Hardware 3207. Die Hardware 3207 kann in mindestens einer Ausführungsform eine oder mehrere GPUs, CPUs, FPGAs, KI-Engines und/oder andere Arten von Rechenvorrichtungen beinhalten, die eine Programmierplattform unterstützen. In mindestens einer Ausführungsform, wie etwa bei CUDA, kann der Softwarestapel 3200 herstellerspezifisch und nur mit Vorrichtungen von (einem) konkreten Hersteller(n) kompatibel sein. In mindestens einer Ausführungsform, wie etwa bei OpenCL, kann der Softwarestapel 3200 mit Vorrichtungen von verschiedenen Herstellern verwendet werden. In mindestens einer Ausführungsform beinhaltet die Hardware 3207 einen Host, der mit einem oder mehreren Vorrichtungen verbunden ist, auf die zugegriffen werden kann, um Berechnungstasks über Aufrufe einer Anwendungsprogrammierschnittstelle (application programming interface - „API“) auszuführen. Eine Vorrichtung innerhalb der Hardware 3207 kann, ohne darauf beschränkt zu sein, eine GPU, ein FPGA, eine KI-Engine oder eine andere Rechenvorrichtung und ihren Speicher beinhalten (kann aber auch eine CPU beinhalten), im Gegensatz zu einem Host innerhalb der Hardware 3207, der in mindestens einer Ausführungsform eine CPU und ihren Speicher beinhalten kann (aber auch eine Rechenvorrichtung beinhalten kann), ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform beinhaltet der Softwarestapel 3200 einer Programmierplattform ohne Einschränkung eine Anzahl von Bibliotheken 3203, eine Laufzeit 3205 und einen Vorrichtungskerneltreiber 3206. Jede der Bibliotheken 3203 kann in mindestens einer Ausführungsform Daten und Programmiercode beinhalten, die durch Computerprogramme verwendet und während der Softwareentwicklung eingesetzt werden können. In mindestens einer Ausführungsform können die Bibliotheken 3203 vorgefertigten Code und Teilroutinen, Klassen, Werte, Typspezifikationen, Konfigurationsdaten, Dokumentation, Hilfedaten und/oder Nachrichtenvorlagen beinhalten, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform beinhalten die Bibliotheken 3203 Funktionen, die für die Ausführung auf einer oder mehreren Arten von Vorrichtungen optimiert sind. In mindestens einer Ausführungsform können die Bibliotheken 3203 Funktionen zum Durchführen von mathematischen Operationen, tiefem Lernen und/oder anderen Arten von Operationen auf Vorrichtungen beinhalten, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform sind CUDA-Bibliotheken 3303 entsprechenden API 3302 zugeordnet, die eine oder mehrere API beinhalten können, die in CUDA-Bibliotheken 3303 implementierte Funktionen offenlegen.
  • In mindestens einer Ausführungsform ist die Anwendung 3201 als Quellcode geschrieben, der in ausführbaren Code kompiliert wird, wie nachstehend in Verbindung mit 37 ausführlicher erörtert. Der ausführbare Code der Anwendung 3201 kann mindestens teilweise auf einer Ausführungsumgebung laufen, die in mindestens einer Ausführungsform vom Softwarestapel 3200 bereitgestellt wird. In mindestens einer Ausführungsform kann während der Ausführung der Anwendung 3201 Code erreicht werden, der auf einer Vorrichtung im Gegensatz zu einem Host laufen muss. In einem solchen Fall kann die Laufzeit 3205 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 3205 ein beliebiges technisch machbares Laufzeitsystem beinhalten, das die Ausführung der Anwendung S01 unterstützen kann.
  • In mindestens einer Ausführungsform ist die Laufzeit 3205 als eine oder mehrere Laufzeitbibliotheken implementiert, die entsprechenden APIs zugeordnet sind, die als API(s) 3204 dargestellt sind. Eine oder mehrere solcher Laufzeitbibliotheken können in mindestens einer Ausführungsform ohne Einschränkung unter anderem Funktionen für die Speicherverwaltung, Ausführungssteuerung, Vorrichtungsverwaltung, Fehlerhandhabung und/oder Synchronisation beinhalten. In mindestens einer Ausführungsform können die Speichermanagementfunktionen Funktionen zum Zuweisen, Freigeben und Kopieren von Vorrichtungsspeicher sowie zum Übertragen von Daten zwischen Host-Speicher und Vorrichtungsspeicher beinhalten, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform können die Ausführungssteuerfunktionen Funktionen zum Starten einer Funktion (manchmal als „Kernel“ bezeichnet, wenn eine Funktion eine von einem Host aufrufbare globale Funktion ist) auf einer Vorrichtung beinhalten und Attributwerte in einem Puffer setzen, der durch eine Laufzeitbibliothek für eine bestimmte Funktion gepflegt wird, die auf einer Vorrichtung ausgeführt werden soll, ohne darauf beschränkt zu sein.
  • Laufzeitbibliotheken und entsprechende API(s) 3204 können in mindestens einer Ausführungsform auf eine beliebige technisch machbare Weise implementiert sein. In mindestens einer Ausführungsform kann eine (oder eine beliebige Anzahl von) API einen Satz von Funktionen einer niedrigen Ebene für eine feingranulare Steuerung einer Vorrichtung bereitstellen, während eine andere (oder eine beliebige Anzahl von) API einen Satz solcher Funktionen einer höheren Ebene offenlegen kann. In mindestens einer Ausführungsform kann eine Laufzeit-API einer hohen Ebene auf einer API einer niedrigen Ebene aufgebaut sein. In mindestens einer Ausführungsform können eine oder mehrere Laufzeit-APIs sprachspezifische APIs sein, die auf einer sprachunabhängigen Laufzeit-API aufgesetzt sind.
  • In mindestens einer Ausführungsform ist der Vorrichtungskerntreiber 3206 so konfiguriert, dass er die Kommunikation mit einer zugrunde liegenden Vorrichtung ermöglicht. In mindestens einer Ausführungsform kann der Vorrichtungskerneltreiber 3206 Funktionalitäten einer niedrigen Ebene bereitstellen, auf die APIs, wie etwa die API(s) 3204 und/oder andere Software, zurückgreifen. In mindestens einer Ausführungsform kann der Vorrichtungskerneltreiber 3206 konfiguriert sein, um Zwischendarstellungs(Intermediate Representation - „IR“)-Code zur Laufzeit in Binärcode zu kompilieren. Für CUDA kann der Vorrichtungskerneltreiber 3206 in mindestens einer Ausführungsform IR-Code zur parallelen Thread-Ausführung (Parallel Thread Execution - „PTX“), der nicht hardwarespezifisch ist, zur Laufzeit in Binärcode für eine bestimmtes Zielvorrichtung kompilieren (mit Zwischenspeichern des kompilierten Binärcodes), was manchmal auch als „Finalisieren“ von Code bezeichnet wird. Dies kann in mindestens einer Ausführungsform zulassen, dass finalisierter Code auf einer Zielvorrichtung läuft, der möglicherweise nicht existiert hat, als der Quellcode ursprünglich in PTX-Code kompiliert wurde. Alternativ kann in mindestens einer Ausführungsform der Vorrichtungsquellcode offline in Binärcode kompiliert werden, ohne dass es erforderlich ist, dass der Vorrichtungskerneltreiber 3206 den IR-Code während der Laufzeit kompiliert.
  • 33 veranschaulicht eine CUDA-Implementierung des Softwarestapels 3200 aus 32 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet ein CUDA-Softwarestapel 3300, auf dem eine Anwendung 3301 gestartet werden kann, CUDA-Bibliotheken 3303, eine CUDA-Laufzeit 3305, einen CUDA-Treiber 3307 und einen Vorrichtungskerneltreiber 3308. In mindestens einer Ausführungsform wird der CUDA-Softwarestapel 3300 auf Hardware 3309 ausgeführt, die eine GPU beinhalten kann, die CUDA unterstützt und von NVIDIA Corporation, Santa Clara, Kalifornien entwickelt wird.
  • In mindestens einer Ausführungsform können die Anwendung 3301, die CUDA-Laufzeit 3305 und der Vorrichtungs-Kerneltreiber 3308 ähnliche Funktionalitäten wie die Anwendung 3201, die Laufzeit 3205 bzw. der Vorrichtungs-Kerneltreiber 3206 durchführen, die vorstehend in Verbindung mit 32 beschrieben sind. In mindestens einer Ausführungsform beinhaltet der CUDA-Treiber 3307 eine Bibliothek (libcuda.so), die eine CUDA-Treiber-API 3306 implementiert. Ähnlich einer CUDA-Laufzeit-API 3304, die durch eine CUDA-Laufzeitbibliothek (cudart) implementiert wird, kann die CUDA-Treiber-API 3306 in mindestens einer Ausführungsform ohne Einschränkung unter anderem Funktionen für Speicherverwaltung, Ausführungssteuerung, Vorrichtungsverwaltung, Fehlerbehandlung, Synchronisation und/oder Grafikinteroperabilität offenlegen. In mindestens einer Ausführungsform unterscheidet sich die CUDA-Treiber-API 3306 von der CUDA-Laufzeit-API 3304 darin, dass die CUDA-Laufzeit-API 3304 die Vorrichtungscodeverwaltung vereinfacht, indem sie implizite Initialisierung, Kontextverwaltung (analog zu einem Prozess) und Modulverwaltung (analog zu dynamisch geladenen Bibliotheken) bereitstellt. Im Gegensatz zur CUDA-Laufzeit-API 3304 auf hoher Ebene ist die CUDA-Treiber-API 3306 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 3306 Funktionen für die Kontextverwaltung offenlegen, die nicht durch die CUDA-Laufzeit-API 3304 offengelegt werden. In mindestens einer Ausführungsform ist die CUDA-Treiber-API 3306 auch sprachunabhängig und unterstützt z. B. OpenCL zusätzlich zur CUDA-Laufzeit-API 3304. Ferner können in mindestens einer Ausführungsform Entwicklungsbibliotheken, einschließlich der CUDA-Laufzeit 3305, als von Treiberkomponenten getrennt betrachtet werden, einschließlich des Benutzermodus-CUDA-Treibers 3307 und des Kernelmodus-Vorrichtungstreibers 3308 (manchmal auch als „Anzeige“-Treiber bezeichnet).
  • In mindestens einer Ausführungsform können CUDA-Bibliotheken 3303 unter anderem mathematische Bibliotheken, Deep-Learning-Bibliotheken, parallele Algorithmenbibliotheken und/oder Signal-/Frame-/Videoverarbeitungsbibliotheken beinhalten, die von parallelen Rechenanwendungen wie der Anwendung 3301 genutzt werden können. In mindestens einer Ausführungsform können die CUDA-Bibliotheken 3303 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 (fast Fourier transforms - „FFTs“) und eine cuRAND-Bibliothek zur Generierung von Zufallszahlen. In mindestens einer Ausführungsform können die CUDA-Bibliotheken 3303 Deep-Learning-Bibliotheken beinhalten, wie etwa unter anderem eine cuDNN-Bibliothek von Primitiven für tiefe neuronale Netze und eine TensorRT-Plattform für Hochleistungs-Deep-Learning-Inferenz.
  • 34 veranschaulicht eine ROCm-Implementierung des Softwarestapels 3200 der 32 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet ein ROCm-Softwarestapel 3400, auf dem eine Anwendung 3401 gestartet werden kann, eine Sprachlaufzeit 3403, eine Systemlaufzeit 3405, einen Thunk 3407, einen ROCm-Kerneltreiber 3408 und einen Vorrichtungskerneltreiber 3409. In mindestens einer Ausführungsform wird der ROCm-Softwarestapel 3400 auf Hardware 3410 ausgeführt, die eine GPU beinhalten kann, die ROCm unterstützt und von AMD Corporation, Santa Clara, Kalifornien entwickelt wird.
  • In mindestens einer Ausführungsform kann die Anwendung 3401 ähnliche Funktionalitäten wie die Anwendung 3201 durchführen, die vorstehend in Verbindung mit 32 beschrieben sind. Außerdem können die Sprachlaufzeit 3403 und die Systemlaufzeit 3405 in mindestens einer Ausführungsform ähnliche Funktionalitäten wie die vorstehend in Verbindung mit 32 erörterte Laufzeit 3205 durchführen. In mindestens einer Ausführungsform unterscheiden sich die Sprachlaufzeit 3403 und die Systemlaufzeit 3405 darin, dass die Systemlaufzeit 3405 eine sprachunabhängige Laufzeit ist, die eine ROCr-Systemlaufzeit-API 3404 implementiert und eine Laufzeit-API mit heterogener Systemarchitektur (Heterogeneous System Architecture - „HAS“) verwendet. Die HAS-Laufzeit-API ist in mindestens einer Ausführungsform eine schlanke Benutzermodus-API, die Schnittstellen für den Zugriff auf und die Interaktion mit einer AMD-GPU offenlegt, die unter anderem Funktionen für die Speicherverwaltung, die Ausführungssteuerung über den architekturdefinierten Versand von Kerneln, die Fehlerbehandlung, System- und Agenteninformationen sowie die Initialisierung und das Herunterfahren der Laufzeit beinhaltet. Im Gegensatz zur Systemlaufzeit 3405 ist die Sprachlaufzeit 3403 in mindestens einer Ausführungsform eine Implementierung einer sprachspezifischen Laufzeit-API 3402, die auf der ROCr-Systemlaufzeit-API 3404 geschichtet ist. In mindestens einer Ausführungsform kann die Sprachlaufzeit-API unter anderem eine Sprachlaufzeit-API für Heterogeneous Compute Interface for Portability („HIP“), eine Sprachlaufzeit-API für Heterogeneous Compute Compiler („HCC“) oder eine OpenCL-API beinhalten, ohne darauf beschränkt zu sein. Die HIP-Sprache ist insbesondere eine Erweiterung der Programmiersprache C++ mit funktional ähnlichen Versionen von CUDA-Mechanismen, und in mindestens einer Ausführungsform beinhaltet eine HIP-Sprachen-Laufzeit-API Funktionen, die denen der CUDA-Laufzeit-API 3304 ähneln, die vorstehend in Verbindung mit 33 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) 3407 eine Schnittstelle, die verwendet werden kann, um mit dem darunterliegenden ROCm-Treiber 3408 zu interagieren. In mindestens einer Ausführungsform ist der ROCm-Treiber 3408 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 3206 durchführt, der vorstehend in Verbindung mit 32 beschrieben sind. In mindestens einer Ausführungsform ist der HAS-Kernel-Treiber ein Treiber, der es unterschiedlichen Arten von Prozessoren erlaubt, Systemressourcen effektiver über Hardware-Merkmale gemeinsam zu nutzen.
  • In mindestens einer Ausführungsform können verschiedene Bibliotheken (nicht dargestellt) im ROCm-Softwarestapel 3400 oberhalb der Sprachlaufzeit 3403 beinhaltet sein und eine Ähnlichkeit der Funktionalität zu den CUDA-Bibliotheken 3303 bereitstellen, die vorstehend in Verbindung mit 33 erörtert wird. In mindestens einer Ausführungsform können verschiedene Bibliotheken mathematische, Deep-Learning- und/oder andere Bibliotheken beinhalten, wie etwa unter anderem eine hipBLAS-Bibliothek, die Funktionen ähnlich denen von CUDA cuBLAS implementiert, eine rocFFT-Bibliothek zum Berechnen von FFT, die ähnlich CUDA cuFFT ist.
  • 35 veranschaulicht eine OpenCL-Implementierung des Softwarestapels 3200 aus 32 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet ein OpenCL-Softwarestapel 3500, auf dem eine Anwendung 3501 gestartet werden kann, ein OpenCL-Framework 3550, eine OpenCL-Laufzeit 3506 und einen Treiber 3507. In mindestens einer Ausführungsform wird der OpenCL-Softwarestapel 3500 auf Hardware 3309 ausgeführt, die nicht herstellerspezifisch ist. Da OpenCL durch Vorrichtungen unterstützt wird, die von verschiedenen Herstellern entwickelt wurden, können in mindestens einer Ausführungsform spezifische OpenCL-Treiber erforderlich sein, um mit Hardware von solchen Herstellern zusammenzuwirken.
  • In mindestens einer Ausführungsform können die Anwendung 3501, die OpenCL-Laufzeit 3506, der Vorrichtungskerneltreiber 3507 und die Hardware 3508 ähnliche Funktionalitäten wie die Anwendung 3201, die Laufzeit 3205, der Vorrichtungskerneltreiber 3206 bzw. die Hardware 3207 durchführen, die vorstehend in Verbindung mit 32 beschrieben sind. In mindestens einer Ausführungsform beinhaltet die Anwendung 3501 außerdem einen OpenCL-Kernel 3502 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 3503 und Laufzeit-API 3505 dargestellt sind. In mindestens einer Ausführungsform verwendet die Laufzeit-API 3505 Kontexte, um die Ausführung von Kerneln auf Vorrichtungen zu verwalten. In mindestens einer Ausführungsform kann jede identifizierte Vorrichtung einem jeweiligen Kontext zugeordnet sein, den die Laufzeit-API 3505 verwenden kann, für diese Vorrichtung um unter anderem Befehlswarteschlangen, Programmobjekte und Kernelobjekte zu verwalten und Speicherobjekte gemeinsam zu nutzen. In mindestens einer Ausführungsform legt die Plattform-API 3503 Funktionen offen, die unter anderem die Verwendung von Vorrichtungskontexten zum Auswählen und Initialisieren von Vorrichtungen, zum Übermitteln von Arbeit an Vorrichtungen über Befehlswarteschlangen und zum Ermöglichen der Datenübertragung zu und von Vorrichtungen zulassen. Darüber hinaus stellt das OpenCL-Framework in mindestens einer Ausführungsform verschiedene integrierte Funktionen (nicht gezeigt) bereit, einschließlich unter anderem mathematischer Funktionen, relationaler Funktionen und Bildverarbeitungsfunktionen.
  • In mindestens einer Ausführungsform ist auch ein Compiler 3504 im OpenCL-Framework 3550 beinhaltet. Quellcode kann in mindestens einer Ausführungsform offline vor der Ausführung einer Anwendung oder online während der Ausführung einer Anwendung kompiliert werden. Im Gegensatz zu CUDA und ROCm können OpenCL-Anwendungen in mindestens einer Ausführungsform online durch den Compiler 3504 kompiliert werden, der beinhaltet ist, um repräsentativ für eine beliebige Anzahl von Compilern zu sein, die verwendet werden kann, um Quellcode und/oder IR-Code, wie etwa Portable Intermediate Representation („SPIR-V“)-Code, in Binärcode zu kompilieren. Alternativ können in mindestens einer Ausführungsform OpenCL-Anwendungen offline kompiliert werden, bevor solche Anwendungen ausgeführt werden.
  • 36 veranschaulicht Software, die von einer Programmierplattform unterstützt wird, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist eine Programmierplattform 3604 so konfiguriert, dass sie verschiedene Programmiermodelle 3603, Middlewares und/oder Bibliotheken 3602 und Frameworks 3601 unterstützt, auf die sich eine Anwendung 3600 stützen kann. In mindestens einer Ausführungsform kann die Anwendung 3600 eine KI/MI,-Anwendung sein, die zum Beispiel unter Verwendung eines Deep-Learning-Frameworks wie MXNet, PyTorch oder TensorFlow implementiert ist, das sich auf Bibliotheken wie etwa 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 3604 eine der vorstehend in Verbindung mit 33, 34 bzw. 35 beschriebenen CUDA-, ROCm- oder OpenCL-Plattformen sein. In mindestens einer Ausführungsform unterstützt die Programmierplattform 3604 mehrere Programmiermodelle 3603, die Abstraktionen eines zugrunde liegenden Rechensystems sind, das Ausdrücke von Algorithmen und Datenstrukturen zulässt. Die Programmiermodelle 3603 können in mindestens einer Ausführungsform Merkmale der zugrunde liegenden Hardware offenlegen, um die Leistungsfähigkeit zu verbessern. In mindestens einer Ausführungsform können die Programmiermodelle 3603 CUDA, HIP, OpenCL, C++ Accelerated Massive Parallelism („C++AMP“), Open Multi-Processing („OpenMP“), Open Accelerators („OpenACC“) und/oder Vulcan Compute beinhalten, ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform stellen Bibliotheken und/oder Middlewares 3602 Implementierungen von Abstraktionen von Programmiermodellen 3603 bereit. In mindestens einer Ausführungsform können derartige Bibliotheken Daten und Programmiercode beinhalten, die durch Computerprogramme verwendet und während der Softwareentwicklung eingesetzt werden können. In mindestens einer Ausführungsform beinhalten solche Middlewares Software, die Dienste für Anwendungen bereitstellt, die über diejenigen hinausgehen, die von der Programmierplattform 3604 verfügbar sind. In mindestens einer Ausführungsform können die Bibliotheken und/oder Middlewares 3602 cuBLAS-, cuFFT-, cuRAND- und andere CUDA-Bibliotheken oder rocBLAS-, rocFFT-, rocRAND- und andere ROCm-Bibliotheken beinhalten, ohne darauf beschränkt zu sein. Darüber hinaus können die Bibliotheken und/oder Middlewares 3602 in mindestens einer Ausführungsform NCCL- und ROCm-Communication-Collectives-Library(„RCCL“)-Bibliotheken, die Kommunikationsroutinen für GPU bereitstellen, eine MIOpen-Bibliothek für Deep Learning-Beschleunigung und/oder eine Eigen-Bibliothek für lineare Algebra, Matrix- und Vektoroperationen, geometrische Transformationen, numerische Solver und verwandte Algorithmen beinhalten.
  • In mindestens einer Ausführungsform hängen die Anwendungs-Frameworks 3601 von den Bibliotheken und/oder Middlewares 3602 ab. In mindestens einer Ausführungsform ist jedes der Anwendungs-Frameworks 3601 ein Software-Framework, das verwendet wird, um eine Standardstruktur von Anwendungssoftware zu implementieren. Eine KI/NIIL-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.
  • 37 veranschaulicht das Kompilieren von Code zum Ausführen auf einer der Programmierplattformen der 32 - 35 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform empfängt ein Compiler 3701 Quellcode 3700, der sowohl Host-Code als auch Vorrichtungscode beinhaltet. In mindestens einer Ausführungsform ist der Compiler 3701 so konfiguriert, dass er den Quellcode 3700 in einen vom Host ausführbaren Code 3702 zur Ausführung auf einem Host und einen von der Vorrichtung ausführbaren Code 3703 zur Ausführung auf einer Vorrichtung umwandelt. Der Quellcode 3700 kann in mindestens einer Ausführungsform entweder offline vor der Ausführung einer Anwendung oder online während der Ausführung einer Anwendung kompiliert werden.
  • In mindestens einer Ausführungsform kann der Quellcode 3700 Code in einer beliebigen Programmiersprache beinhalten, die durch den Compiler 3701 unterstützt wird, wie etwa C++, C, Fortran usw. In mindestens einer Ausführungsform kann der Quellcode 3700 in einer Einzelquelldatei mit einer Mischung aus Host-Code und Vorrichtungscode beinhaltet sein, wobei darin Stellen des Vorrichtungscodes angegeben sind. In mindestens einer Ausführungsform kann eine Einzelquelldatei eine .cu-Datei, die CUDA-Code beinhaltet, oder eine .hip.cpp-Datei, die HIP-Code beinhaltet, sein. Alternativ kann der Quellcode 3700 in mindestens einer Ausführungsform Mehrfachquellen-Codedateien anstelle einer Einzelquelldatei beinhalten, in die Host-Code und Vorrichtungscode getrennt sind.
  • In mindestens einer Ausführungsform ist der Compiler 3701 so konfiguriert, dass er den Quellcode 3700 in einen vom Hostausführbaren Code 3702 zur Ausführung auf einem Host und einen von der Vorrichtung ausführbaren Code 3703 zur Ausführung auf einer Vorrichtung kompiliert. In mindestens einer Ausführungsform führt der Compiler 3701 Operationen durch, beinhaltend Parsen von Quellcode 3700 in einen abstrakten Systembaum (AST), Durchführung von Optimierungen und Erzeugung von ausführbarem Code. In mindestens einer Ausführungsform, in der der Quellcode 3700 eine einzige -Quelldatei beinhaltet, kann der Compiler 3701 den Vorrichtungscode vom Host-Code in einer solchen einzigen Quelldatei trennen, den Vorrichtungscode und den Host-Code in den von der Vorrichtung Code 3703 bzw. den vom Host ausführbaren Code 3702 kompilieren und den von der Vorrichtung ausführbaren Code 3703 und den vom ausführbaren Code 3702 in einer einzigen Datei miteinander verknüpfen, wie nachstehend mit Bezug auf 26 ausführlicher erörtert.
  • In mindestens einer Ausführungsform können der vom Host ausführbare Code 3702 und der von der Vorrichtung ausführbare Code 3703 in einem beliebigen geeigneten Format vorliegen, wie etwa als Binärcode und/oder IR-Code. Im Falle von CUDA kann in mindestens einer Ausführungsform der vom Host ausführbare Code 3702 nativen Objektcode beinhalten und kann der von der Vorrichtung ausführbare Code 3703 Code in einer PTX-Zwischendarstellung beinhalten. Im Falle von ROCm kann sowohl der vom Host ausführbare Code 3702 als auch der von der Vorrichtung ausführbare Code 3703 in mindestens einer Ausführungsform Ziel-Binärcode beinhalten.
  • Andere Variationen liegen innerhalb des Geistes der vorliegenden Offenbarung. Somit können zwar bezüglich der offenbarten Verfahren diverse Modifikationen und alternative Konstruktionen vorgenommen werden, bestimmte veranschaulichte Ausführungsformen davon werden jedoch in den Zeichnungen gezeigt und wurden vorangehend ausführlich beschrieben. Allerdings versteht es sich, dass nicht die Absicht verfolgt wird, die Offenbarung auf die spezifische(n) offenbarte(n) Form oder Formen einzuschränken, sondern die Absicht ganz im Gegenteil darin besteht, sämtliche Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die in den Geist und Umfang der wie in den beigefügten Ansprüchen definierten Offenbarung fallen.
  • Die Verwendung der Ausdrücke „ein“ und „eine“ und „der/die/das“ und ähnlicher Referenten im Kontext des Beschreibens offenbarter Ausführungsformen (insbesondere im Kontext der folgenden Ansprüche) ist so auszulegen, dass sie sowohl den Singular als auch den Plural abdeckt, sofern hierin nichts anderes angegeben ist oder der Kontext dem eindeutig widerspricht, und nicht als Definition eines Ausdrucks. Die Ausdrücke „umfassend“, „aufweisend“, „beinhaltend“ und „enthaltend“ sind als offene Ausdrücke auszulegen (die „einschließlich, aber nicht beschränkt auf bedeuten), sofern nicht anderweitig angemerkt. Wenn es unmodifiziert vorliegt und sich auf physische Verbindungen bezieht, ist der Begriff „verbunden“ als teilweise oder vollständig ineinander enthalten, aneinander angebracht oder aneinander angefügt auszulegen, auch wenn ein Element dazwischenliegt. Die Nennung von Wertebereichen hierin soll lediglich als kurzes Verfahren zur einzelnen Bezugnahme auf jeden separaten Wert dienen, der in den Bereich fällt, es sei denn, hierin ist etwas anderes angegeben, und jeder separate Wert ist in die Beschreibung eingeschlossen, als ob er einzeln hierin wiedergegeben wäre. In mindestens einer Ausführungsform ist die Verwendung des Ausdrucks „Satz“ bzw. „Menge“ (z. B. „ein Satz bzw. eine Menge von Gegenständen“) oder „Teilmenge“ als eine nicht leere Sammlung auszulegen, die ein oder mehrere Elemente umfasst, es sei denn, es ist etwas anderes angemerkt oder der Kontext widerspricht dem. Ferner bezeichnet der Ausdruck „Teilsatz“ eines entsprechenden Satzes nicht notwendigerweise einen tatsächlichen Teilsatz des entsprechenden Satzes, vielmehr können der Teilsatz und der entsprechende Satz gleich sein, es sei denn, es ist etwas anderes angemerkt oder dies widerspricht dem Kontext.
  • 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. Zusätzlich bezeichnet, sofern nicht anders angegeben oder durch den Kontext widersprochen, der Ausdruck „Vielzahl“ außerdem einen Zustand der Pluralität (z. B. „eine Vielzahl von Elementen“ bezeichnet mehrere Elemente). 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 „basierend auf" mindestens teilweise basierend auf und nicht „ausschließlich basierend auf“.
  • Hierin beschriebene Operationen 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. In mindestens einer Ausführungsform in Form eines Computerprogramms, das eine Vielzahl von Anweisungen umfasst, die durch einen oder mehrere Prozessoren ausgeführt werden können. In mindestens einer Ausführungsform ist ein computerlesbares Speichermedium ein nicht transitorisches computerlesbares Speichermedium, das transitorische Signale (z. B. eine sich ausbreitende transiente elektrische oder elektromagnetische Übertragung) ausschließt, aber nicht transitorische Datenspeicherschaltungen (z. B. Puffer, Cache und Warteschlangen) innerhalb von Sendeempfängern von transitorischen Signalen einschließt. In einigen Ausführungsformen ist der Code (z. B. ausführbarer Code oder Quellcode) auf einem Satz von einem oder mehreren nicht transitorischen computerlesbaren Speichermedien gespeichert, die darauf gespeicherte ausführbare Anweisungen (oder anderen Speicher, um ausführbare Anweisungen zu speichern) aufweisen, die bei Ausführung (d. h. als Folge davon, dass sie ausgeführt werden) durch einen oder mehrere Prozessoren eines Computersystems das Computersystem veranlassen, in dieser Schrift 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 von Beispielen oder beispielhafter Wortwahl (z. B. „wie etwa“), die hierin bereitgestellt ist, soll lediglich die Ausführungsformen der Offenbarung besser verdeutlichen und stellt keine Einschränkung des Umfangs der Offenbarung dar, es sei denn, es ist etwas anderes beansprucht. Keinerlei Wortwahl in der Beschreibung sollte so ausgelegt werden, dass sie ein beliebiges nicht beanspruchtes Element als für die Umsetzung der Offenbarung wesentlich angibt.
  • Jegliche Bezugnahmen, einschließlich Veröffentlichungen, Patentanmeldungen und Patenten, die hierin genannt werden, sind hiermit durch Bezugnahme in demselben Maße aufgenommen, als wäre jede Bezugnahme einzeln und spezifisch als durch Bezugnahme eingeschlossen angegeben und in ihrer Gesamtheit hierin dargelegt.
  • In der Beschreibung und in 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 in mindestens einer Ausführungsform 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. Die Begriffe „System“ und „Verfahren“ werden hierin insofern austauschbar verwendet, dass ein System ein oder mehrere Verfahren verkörpern kann und die Verfahren als System betrachtet werden können.
  • Im vorliegenden Dokument kann auf das Erhalten, Erfassen, Empfangen oder Eingeben von analogen oder digitalen Daten in ein Teilsystem, ein Computersystem oder eine computerimplementierte Maschine Bezug genommen werden. In mindestens einer Ausführungsform kann der Prozess des Erhaltens, 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 einigen Implementierungen kann der Prozess des Erlangens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch das Übermitteln von Daten über eine serielle oder parallele Schnittstelle erfolgen. In einer weiteren Implementierung kann der Prozess 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. Es kann auch auf das Bereitstellen, Ausgeben, Übertragen, Senden oder Darstellen von analogen oder digitalen Daten Bezug genommen werden. In verschiedenen Beispielen kann der Prozess 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 obige Erörterung hierin beispielhafte Implementierungen der beschriebenen Techniken darlegt, können auch andere Architekturen verwendet werden, um die beschriebene Funktionalität zu implementieren, und sie sollen in den Anwendungsbereich dieser Offenbarung fallen. Darüber hinaus sind, obwohl spezifische Verteilungen von Zuständigkeiten vorstehend zum Zwecke der Erörterung definiert sein können, verschiedene Funktionen und Zuständigkeiten in Abhängigkeit von den Umständen anders verteilt und aufgeteilt.
  • Obwohl der Gegenstand ferner in für Strukturmerkmale und/oder Verfahrenshandlungen spezifischer Sprache beschrieben wurde, versteht sich, dass der in den beigefügten Ansprüchen beanspruchte Gegenstand nicht unbedingt auf die beschriebenen spezifischen Merkmale oder Handlungen beschränkt ist. Vielmehr werden spezifische Merkmale und Handlungen als beispielhafte Formen zum Implementieren der Ansprüche offenbart.

Claims (30)

  1. Prozessor, umfassend: eine oder mehrere Schaltungen, die ein oder mehrere neuronale Netze verwenden, um eine oder mehrere Rechenressourcen vorherzusagen, um eine oder mehrere Arbeitslasten durchzuführen.
  2. Prozessor nach Anspruch 1, wobei das eine oder die mehreren neuronalen Netze ferner einen oder mehrere Knoten eines Rechenzentrums empfehlen sollen, um die eine oder die mehreren Arbeitslasten durchzuführen, wobei der eine oder die mehreren Knoten die eine oder die mehreren Rechenressourcen umfassen.
  3. Prozessor nach Anspruch 2, ferner umfassend: die eine oder die mehreren Schaltungen, um die Auswahl des oder der empfohlenen Knoten des Rechenzentrums zu empfangen und den oder die empfohlenen Knoten des Rechenzentrums für die eine oder die mehreren Arbeitslasten zuzuweisen.
  4. Prozessor nach einem der vorhergehenden Ansprüche, ferner umfassend: die eine oder die mehreren Schaltungen, um zu bestimmen, dass die eine oder die mehreren Rechenressourcen nicht ausreichen, um die eine oder die mehreren Arbeitslasten während der Ausführung der einen oder der mehreren Arbeitslasten auf der einen oder den mehreren Rechenressourcen zu bewältigen, und um automatisch eine oder mehrere zusätzliche Rechenressourcen für die eine oder die mehreren Arbeitslasten zuzuweisen.
  5. Prozessor nach einem der vorhergehenden Ansprüche, ferner umfassend: die eine oder die mehreren Schaltungen zum Verarbeiten einer ersten Eingabe, die der einen oder den mehreren Arbeitslasten zugeordnet ist, und einer zweiten Eingabe, die den verfügbaren Rechenressourcen eines Rechenzentrums zugeordnet ist, um die eine oder die mehreren Rechenressourcen zum Durchführen der einen oder der mehreren Arbeitslasten aus den verfügbaren Rechenressourcen des Rechenzentrums vorherzusagen.
  6. Prozessor nach Anspruch 5, wobei die erste Eingabe eine dem einen oder den mehreren Arbeitslasten zugeordnete Industrie und eine dem einen oder den mehreren Arbeitslasten zugeordnete Art der Operation umfasst.
  7. Prozessor nach Anspruch 5 oder 6, wobei die erste Eingabe Informationen über mindestens eines von zu verarbeitenden Daten, einer Art der mit den Daten durchzuführenden Operation, einer Zielzeit für den Abschluss der Operation oder einer Art des für die Operation zu verwendenden Modells umfasst.
  8. Prozessor nach einem der Ansprüche 5 bis 7, wobei die zweite Eingabe mindestens eines von Verfügbarkeit von Rechenressourcen, Verfügbarkeit von Netzressourcen, Verfügbarkeit von Speicherressourcen oder Verfügbarkeit von Speicherressourcen umfasst.
  9. Prozessor nach einem der vorhergehenden Ansprüche, wobei die eine oder die mehreren Schaltungen ferner ein Job-Profil erzeugen, das eine oder mehrere Arbeitslast-Details der einen oder mehreren Arbeitslasten umfasst.
  10. Prozessor nach einem der vorhergehenden Ansprüche, ferner umfassend: die eine oder die mehreren Schaltungen zur Überwachung der Ausführung der einen oder der mehreren Arbeitslasten auf den einen oder den mehreren Rechenressourcen, zur Bestimmung, ob die eine oder die mehreren Rechenressourcen für die Ausführung der einen oder der mehreren Arbeitslasten optimal waren, und zur Aktualisierung des Trainings der einen oder der mehreren neuronalen Netze.
  11. Prozessor nach einem der vorhergehenden Ansprüche, ferner umfassend: die eine oder die mehreren Schaltungen, um ein Konfidenzniveau zu bestimmen, dass die vorhergesagte(n) eine oder mehreren Rechenressourcen für die eine oder die mehreren Arbeitslasten ausreichend sind, und um das Konfidenzniveau auszugeben.
  12. Rechenzentrum, umfassend: einen oder mehrere Prozessoren, um ein oder mehrere neuronale Netze zu verwenden, um eine oder mehrere Rechenressourcen zum Durchführen einer oder mehrerer Arbeitslasten vorherzusagen.
  13. Rechenzentrum nach Anspruch 12, ferner umfassend: eine Vielzahl von Knoten, wobei das eine oder die mehreren neuronalen Netze ferner dazu dienen, einen oder mehrere Knoten der Vielzahl von Knoten zu empfehlen, um die eine oder die mehreren Arbeitslasten durchzuführen, wobei der eine oder die mehreren Knoten die eine oder die mehreren Rechenressourcen umfassen.
  14. Rechenzentrum nach Anspruch 13, wobei der eine oder die mehreren Prozessoren ferner die Auswahl des empfohlenen einen oder der mehreren Knoten des Rechenzentrums empfangen und den empfohlenen einen oder die mehreren Knoten des Rechenzentrums für die eine oder die mehreren Arbeitslasten zuweisen.
  15. Rechenzentrum nach einem der Ansprüche 12 bis 14, wobei der eine oder die mehreren Prozessoren ferner dazu dienen, zu bestimmen, dass die einen oder die mehreren Rechenressourcen nicht ausreichen, um die einen oder die mehreren Arbeitslasten während der Ausführung der einen oder der mehreren Arbeitslasten auf der einen oder den mehreren Rechenressourcen zu bewältigen, und automatisch eine oder mehrere zusätzliche Rechenressourcen für die eine oder die mehreren Arbeitslasten zuzuweisen.
  16. Rechenzentrum nach einem der Ansprüche 12 bis 15, wobei der eine oder die mehreren Prozessoren ferner eine erste Eingabe, die der einen oder den mehreren Arbeitslasten zugeordnet ist, und eine zweite Eingabe, die den verfügbaren Rechenressourcen des Rechenzentrums zugeordnet ist, verarbeiten, um die eine oder die mehreren Rechenressourcen zum Durchführen der einen oder der mehreren Arbeitslasten aus den verfügbaren Rechenressourcen des Rechenzentrums vorherzusagen.
  17. Rechenzentrum nach Anspruch 16, wobei die erste Eingabe eine Industrie umfasst, die der einen oder den mehreren Arbeitslasten und der Art der Operation zugeordnet ist, die der einen oder den mehreren Arbeitslasten zugeordnet ist.
  18. Rechenzentrum nach Anspruch 16 oder 17, wobei die erste Eingabe Informationen über mindestens eines von zu verarbeitenden Daten, einer Art der mit den Daten durchzuführenden Operation, einer Zielzeit für den Abschluss der Operation oder einer Art des für die Operation zu verwendenden Modells umfasst.
  19. Rechenzentrum nach einem der Ansprüche 16 bis 18, wobei die zweite Eingabe mindestens eines von Verfügbarkeit von Rechenressourcen, Verfügbarkeit von Netzressourcen, Verfügbarkeit von Speicherressourcen oder Verfügbarkeit von Speicherressourcen umfasst.
  20. Rechenzentrum nach einem der Ansprüche 16 bis 18, wobei der eine oder die mehreren Prozessoren ferner ein Job-Profil erzeugen, das ein oder mehrere Details der Arbeitslasten umfasst.
  21. Rechenzentrum nach Anspruch 20, wobei der eine oder die mehreren Prozessoren ferner dazu dienen, die Ausführung der einen oder der mehreren Arbeitslasten auf der einen oder den mehreren Rechenressourcen zu überwachen, zu bestimmen, ob die eine oder die mehreren Rechenressourcen für die Ausführung der einen oder der mehreren Arbeitslasten optimal waren, und das Training des einen oder der mehreren neuronalen Netze zu aktualisieren.
  22. Rechenzentrum nach einem der Ansprüche 12 bis 21, wobei der eine oder die mehreren Prozessoren ferner dazu dienen, ein Konfidenzniveau zu bestimmen, dass die vorhergesagten ein oder mehreren Rechenressourcen für die ein oder die mehreren Arbeitslasten ausreichen, und das Konfidenzniveau auszugeben.
  23. Rechenzentrum nach einem der Ansprüche 12 bis 22, wobei die eine oder die mehreren Rechenressourcen Komponenten einer Vielzahl von Knoten des Rechenzentrums sind, die heterogene Hardware aufweisen, und wobei ein erster Knoten der Vielzahl von Knoten sich von einem zweiten Knoten der Vielzahl von Knoten in Bezug auf mindestens einen der Leistungsparameter von Rechenressourcen, Leistungsparameter von Speicherressourcen, Leistungsparameter von Netzressourcen oder Leistungsparameter von Speicherressourcen unterscheidet.
  24. Verfahren, umfassend: Verwenden eines oder mehrerer neuronaler Netze zur Vorhersage einer oder mehrerer Rechenressourcen, um eine oder mehrere Arbeitslasten durchzuführen.
  25. Verfahren nach Anspruch 24, wobei das eine oder die mehreren neuronalen Netze ferner dazu dienen, einen oder mehrere Knoten eines Rechenzentrums zu empfehlen, um die eine oder die mehreren Arbeitslasten durchzuführen, wobei der eine oder die mehreren Knoten die eine oder die mehreren Rechenressourcen umfassen.
  26. Verfahren nach Anspruch 25, ferner umfassend: Verarbeiten einer ersten Eingabe, die den einen oder den mehreren Arbeitslasten zugeordnet ist, und einer zweiten Eingabe, die den verfügbaren Rechenressourcen eines Rechenzentrums zugeordnet ist, um die eine oder die mehreren Rechenressourcen zum Durchführen der einen oder der mehreren Arbeitslasten aus den verfügbaren Rechenressourcen des Rechenzentrums vorherzusagen.
  27. Verfahren nach Anspruch 26, wobei die erste Eingabe eine Industrie umfasst, die der einen oder den mehreren Arbeitslasten und der Art der Operation zugeordnet ist, die der einen oder den mehreren Arbeitslasten zugeordnet ist.
  28. Verfahren nach Anspruch 26 oder 27, wobei die erste Eingabe Informationen über mindestens eines von zu verarbeitenden Daten, einer Art der mit den Daten durchzuführenden Operation, einer Zielzeit für den Abschluss der Operation oder einer Art des für die Operation zu verwendenden Modells umfasst.
  29. Verfahren nach einem der Ansprüche 26 bis 28, wobei die zweite Eingabe mindestens eines von Verfügbarkeit von Rechenressourcen, Verfügbarkeit von Netzressourcen, Verfügbarkeit von Speicherressourcen oder Verfügbarkeit von Speicherressourcen umfasst.
  30. Verfahren nach einem der Ansprüche 24 bis 29, ferner umfassend: Aktualisieren des Trainings des einen oder der mehreren neuronalen Netze nach dem Überwachen der Ausführung der einen oder der mehreren Arbeitslasten auf den einen oder den mehreren Rechenressourcen und Bestimmen, ob die einen oder die mehreren Rechenressourcen für die Ausführung der einen oder der mehreren Arbeitslasten optimal waren.
DE102023129956.5A 2022-11-15 2023-10-30 Ressourcenvorhersage für arbeitslasten Pending DE102023129956A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US18/055,788 2022-11-15
US18/055,788 US20240160491A1 (en) 2022-11-15 2022-11-15 Resource prediction for workloads

Publications (1)

Publication Number Publication Date
DE102023129956A1 true DE102023129956A1 (de) 2024-05-16

Family

ID=91023998

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102023129956.5A Pending DE102023129956A1 (de) 2022-11-15 2023-10-30 Ressourcenvorhersage für arbeitslasten

Country Status (3)

Country Link
US (1) US20240160491A1 (de)
CN (1) CN118051325A (de)
DE (1) DE102023129956A1 (de)

Also Published As

Publication number Publication date
CN118051325A (zh) 2024-05-17
US20240160491A1 (en) 2024-05-16

Similar Documents

Publication Publication Date Title
DE112020004237T5 (de) Video-upsampling unter verwendung eines oder mehrerer neuronaler netze
DE112020004702T5 (de) Bildgenerierung unter verwendung eines oder mehrerer neuronaler netze
DE112020004167T5 (de) Videovorhersage unter verwendung eines oder mehrerer neuronaler netze
DE112021002803T5 (de) Reservoir in einem rack-formfaktor für kühlsysteme in rechenzentren
DE102021133641A1 (de) Verteilung des flüssigkeitsstroms mit hilfe eines oder mehrerer neuronaler netzwerke
DE102021206537A1 (de) Schnittstellenübersetzung unter verwendung eines oder mehrerer neuronaler netzwerke
DE102021102589A1 (de) Berechnungsgraph-optimierung
DE112020003165T5 (de) Videointerpolation unter Verwendung eines oder mehrerer neuronaler Netze
DE112021004177T5 (de) Detektion von einem Leistungsrückgang eines Webservice basierend auf Metriken von Gruppen von Benutzerinteraktionen
DE102021115585A1 (de) Empfehlungserzeugung unter verwendung von einem oder mehreren neuronalen netzwerken
DE102021206615A1 (de) Charakterisierung von anomalien unter verwendung eines oder mehrerer neuronaler netzwerke
DE102021123338A1 (de) Vorausschauende steuerung unter verwendung eines oder mehrerer neuralen netze
DE102022101324A1 (de) Statischer rechenzentrum-leistungsausgleich und konfiguration
DE102023103633A1 (de) Zustandsüberwachung in sicheren rechenzentren
DE102022120616A1 (de) Selbstheilung und Rechenzentren
DE102021114849A1 (de) Umgebungserzeugung unter verwendung eines oder mehrerer neuronaler netzwerke
DE112021005433T5 (de) Verfahren zur leistungsbalancierung mehrerer chips
DE112022003222T5 (de) Multi-architektur-ausführungsgraphen
DE112023000088T5 (de) Selektive kommunikationsschnittstellen für programmierbare teile
DE102023113043A1 (de) Codeerzeugungsverfahren
DE102022131531A1 (de) Luftstromregelung für kühleffizienz
DE112022003854T5 (de) Anwendungsmanagement-Plattform für hyperkonvergente Cloud-Infrastrukturen
DE102022126283A1 (de) Nichtflüchtiger Speicher und Schnittstelle
DE102022108108A1 (de) Zwischenspeicherung von kompilierten shader-programmen in einer cloud-computing-umgebung
DE102022113303A1 (de) Raum-zeitliche rauschmasken für die bildverarbeitung

Legal Events

Date Code Title Description
R012 Request for examination validly filed