DE112020006010T5 - Schulung eines neuronalen netzwerks durch verwenden eines datenflussgraphen und dynamische verwaltung von arbeitsspeicher - Google Patents

Schulung eines neuronalen netzwerks durch verwenden eines datenflussgraphen und dynamische verwaltung von arbeitsspeicher Download PDF

Info

Publication number
DE112020006010T5
DE112020006010T5 DE112020006010.1T DE112020006010T DE112020006010T5 DE 112020006010 T5 DE112020006010 T5 DE 112020006010T5 DE 112020006010 T DE112020006010 T DE 112020006010T DE 112020006010 T5 DE112020006010 T5 DE 112020006010T5
Authority
DE
Germany
Prior art keywords
node
memory
data
subgraph
gpu
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
DE112020006010.1T
Other languages
English (en)
Inventor
Gradus Janssen
Vladimir Zolotov
Tung Le
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112020006010T5 publication Critical patent/DE112020006010T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Verarbeiten eines Datenflussgraphen eines neuronalen Netzwerks mit einem Satz von Knoten und einem Satz von Kanten. Ein Einfügungspunkt wird für eine Arbeitsspeicher-Reduzierungs- oder Arbeitsspeicher-Wiederherstellungsoperation bestimmt. Die Bestimmung beruht auf einem Berechnen von Tensor-Timing-Slacks (TTS) für einen Satz von Eingabetensoren; Kompilieren einer Kandidatenliste (SI) von Eingabetensoren aus dem Satz von Eingabetensoren durch Verwenden von Eingabetensoren mit entsprechenden TTS-Werten, die größer als ein Schwellenwert (thTTS) sind; Filtern der SI zum Beibehalten von Eingabetensoren, deren Größe einen Schwellenwert (thS) erfüllt; und Bestimmen eines Einfügungspunkts für die Operation durch Verwenden der SI auf Grundlage des Filterns. Ein neuer Datenflussgraph wird generiert oder ein bestehender wird durch Verwenden dieses Prozesses modifiziert.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft allgemein ein Verarbeiten von großen Maschinenlern- und neuronalen Netzwerk-Modellen in einer Umgebung mit begrenzter Arbeitsspeicherkapazität. Insbesondere betrifft die vorliegende Erfindung Modifizierungen an dem Rechendatenflussgraphen, die den Arbeitsspeicherbedarf reduzieren würden, d.h. während einer Auswertung des Graphen würde weniger Arbeitsspeicher benötigt, und daher können ein größerer Graph oder größere Datenstichproben (oder mehrere Stichproben gleichzeitig) bearbeitet werden.
  • Ein neuronales Netzwerk ist ein künstliches neuronales Netzwerk (ANN), das nach der Funktionsweise des menschlichen Gehirns mit gewichteten Verbindungen zwischen seinen Knoten oder „Neuronen“ modelliert ist. Ein tiefes neuronales Netzwerk (DNN) ist ein künstliches neuronales Netzwerk mit mehreren „verborgenen“ Schichten zwischen seinen Eingabe- und Ausgabeschichten. Die verborgenen Schichten eines DNNs ermöglichen, dass komplexe nicht lineare Beziehungen mit höheren abstrakten Datendarstellungen modelliert werden können, wobei jede verborgene Schicht eine nichtlineare Transformationen einer vorherigen Schicht bestimmt. Ein Schulen von großen tiefen neuronalen Netzwerken ist ein anspruchsvolles Rechenproblem. Nur die Einführung von Grafikprozessoren (GPUs) mit ihrer hervorragenden Leistung ermöglichte es, von einem Erkennen von handgeschriebenen Zahlen (MNIST) und winzigen Bildern (CIFAR 10) zu einem Klassifizieren von hochauflösenden Bildern (ImageNet) zu wechseln. Ein Schlüssel der Rechenleistung der GPU ist ihr Hochgeschwindigkeits-Arbeitsspeicher. Bedauerlicherweise ist der GPU-Arbeitsspeicher viel kleiner als der Hauptarbeitsspeicher (CPU-Arbeitsspeicher) des Computers. Die Größe des Arbeitsspeichers eines Grafikprozessors (GPU) begrenzt sowohl die Tiefe des DNNs als auch die Größe der Datenstichproben. Infolgedessen besteht oft eine Einschränkung hinsichtlich Bildgröße und -auflösung, was sich wiederum auf die Genauigkeit des DNNs auswirkt. Arbeitsspeicher-Einschränkungen können durch ein Reduzieren des Arbeitsspeichers verringert werden, der von den Daten belegt wird. In veranschaulichenden Ausführungsformen kann die GPU Daten in ihrem Arbeitsspeicher an die CPU senden, um zusätzlichen Arbeitsspeicherplatz freizugeben und anschließend die Daten aus der CPU abzurufen, nachdem der zusätzliche Arbeitsspeicherplatz für die beabsichtigte Funktion verwendet worden ist.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Ausführungsformen der vorliegenden Erfindung stellen Verfahren, Systeme und Computerprogrammprodukte zum Reduzieren einer Gesamtnutzung eines GPU-Arbeitsspeichers beim Verarbeiten von neuronalen Netzwerken durch automatisches Bestimmen von Einfügungspunkten von Arbeitsspeicher-Erhaltungsoperationen in einem zugrunde liegenden Datenflussgraphen bereit, der einen Satz von Knoten und einen Satz von Kanten aufweist.
  • In einer Ausführungsform berechnet ein Verfahren zum Reduzieren einer Gesamtnutzung eines GPU-Arbeitsspeichers Tensor-Timing-Slacks (TTS) für einen Satz von Eingabetensoren, kompiliert eine Kandidatenliste (SI) von Eingabetensoren aus dem Satz von Eingabetensoren durch Verwenden von Eingabetensoren mit entsprechenden TTS-Werten, die größer als ein Schwellenwert (thTTS) sind, filtert die Sl zum Beibehalten von Eingabetensoren, deren Größe einen Schwellenwert (thS) erfüllt, und bestimmt einen Einfügungspunkt für die Operation durch Verwenden der SI auf Grundlage des Filterns.
  • In einer Ausführungsform ist die Operation eine Kombination von einer Reduzierungsoperation und einer Wiederherstellungsoperation, wobei die Reduzierungsoperation eines oder beides von einem Kopieren in eine Arbeitsspeicheroperation einer Zentraleinheit (CPU) und einer Komprimierungsoperation aufweist, und wobei die Wiederherstellungsoperation eines oder beides von einem Kopieren aus einer CPU-Arbeitsspeicheroperation und einer Dekomprimierungsoperation aufweist.
  • In einer Ausführungsform weist ein Berechnen des TTS ein Durchführen einer Timing-Analyse durch Verwenden der Eingabetensoren auf.
  • In einer Ausführungsform weist die Timing-Analyse ein Initialisieren von Werten von Tensorankunftszeit (TAT), erforderlicher Tensorzeit (TRT) und Tensor-Timing-Slack (TTS) für die Eingabetensoren auf; für einen Satz von Eingabetensoren Q, wobei Q nicht leer ist, ein Durchführen von Schritten zum: Auswählen eines Knotens q in Q zum Ausschließen; Ausschließen von q aus Q; und Einrichten, für jeden Nachfolger-Eingabetensor s von q, der TAT von s, um der TAT von q zu entsprechen.
  • In einer Ausführungsform weist das Initialisieren ein Initialisieren der TAT-, TRT- und TTS-Werte auf einen unbekannten Wert oder auf Null auf.
  • In einer Ausführungsform haben alle Eingaben eines Knotens n einen bekannten TAT-Wert, wobei n ein Knoten ist, für den s ein Eingabetensor ist, und wobei das Verfahren ferner für den Satz von Eingabetensoren Q ein Durchführen von weiteren Schritten aufweist zum: Einrichten der TRT von n auf ein Maximum der TATs von Eingaben s von n; Einrichten des TTS jeder Eingabe i von n als eine Differenz der TRT von n, erhöht um eine Knotenverzögerung; und Wiederaufnehmen von n in Q.
  • In einer Ausführungsform weist der Datenflussgraph ein Paar (N, E) auf, wobei N einen Satz von Knoten aufweist und E einen Satz von Hyperkanten aufweist, und wobei ein bestimmter Knoten in N einen oder mehrere Operatoren auf einem oder mehreren Tensoren umsetzt.
  • In einer Ausführungsform weist der bestimmte Knoten ein Triplet (f, l, O) auf, wobei f eine Funktion eines Operators ist, der durch den bestimmten Knoten umgesetzt wird, / ein Satz von Eingabetensoren des bestimmten Knotens ist, und O ein Satz von Ausgaben des bestimmten Knotens ist, die auf Grundlage des Operators generiert wurden.
  • In einer Ausführungsform definiert eine Hyperkante, wie ein Tensor von einem Operator, der den Tensor generiert, an einen Operator übergeben wird, der den Tensor als ein Argument verwendet.
  • In einer Ausführungsform weist eine Hyperkante ein Paar (s, H) auf, wobei s eine Knotenausgabe ist, und H ein Satz von Knoteneingaben ist.
  • In einer Ausführungsform umfasst das Verfahren ferner: Einfügen eines der Operation entsprechenden Teilgraph-Knotens in den Datenflussgraphen.
  • In einer Ausführungsform generiert das Einfügen einen neuen Datenflussgraphen oder modifiziert einen vorhandenen Datenflussgraphen.
  • In einer Ausführungsform generiert das Einfügen einen neuen Datenflussgraphen, wobei der neue Datenflussgraph einen vollständigen oder einen teilweisen Datenflussgraphen aufweist.
  • In einer Ausführungsform umfasst das Verfahren ferner: Verarbeiten des Satzes von Eingabetensoren durch Verwenden des Datenflussgraphen auf Grundlage des Einfügens; und Generieren von Ausgaben auf Grundlage des Verarbeitens.
  • In einer Ausführungsform ist die Operation eine Arbeitsspeicher-Reduzierungsoperation, und das Verfahren weist ferner ein Einfügen eines Teilgraph-Knotens einer Arbeitsspeicher-Reduzierung auf, die der Arbeitsspeicher-Reduzierungsoperation entspricht.
  • In einer Ausführungsform umfasst das Einfügen ferner: Verbinden, über eine erste Hyperkante, eines ersten Knotens mit dem s-Teilgraph-Knoten der Arbeitsspeicher-Reduzierung, wobei der erste Knoten einem Quellknoten entspricht; und Verbinden, über eine zweite Hyperkante, des Teilgraph-Knotens der Arbeitsspeicher-Reduzierung mit dem zweiten Knoten, wobei die zweite Hyperkante eine Serialisierungs-Hyperkante aufweist, und der zweite Knoten einem Zwischenknoten oder einem Zielknoten entspricht.
  • In einer Ausführungsform weist das Einfügen ferner auf: Verbinden, über eine dritte Hyperkante, des ersten Knotens mit einem zweiten Knoten.
  • In einer Ausführungsform ist die Operation eine Arbeitsspeicher-Wiederherstellungsoperation, und das Verfahren weist ferner auf: Einfügen eines Teilgraph-Knotens der Arbeitsspeicher-Reduzierung, der der Arbeitsspeicher-Wiederherstellungsoperation entspricht.
  • In einer Ausführungsform weist das Einfügen ferner: auf Verbinden, über eine erste Hyperkante, eines ersten Knotens mit dem Teilgraph-Knoten der Arbeitsspeicher-Wiederherstellung, wobei die zweite Hyperkante eine Serialisierungs-Hyperkante oder eine Vorabruf-Hyperkante aufweist; Verbinden, über eine zweite Hyperkante, des Teilgraph-Knotens der Arbeitsspeicher-Wiederherstellung mit einem zweiten Knoten, wobei der zweite Knoten einem Zielknoten entspricht; und Verbinden, über eine dritte Hyperkante, eines Teilgraph-Knotens der Arbeitsspeicher-Reduzierung mit dem Teilgraph-Knoten der Arbeitsspeicher-Wiederherstellung.
  • In einer Ausführungsform weist das Verfahren ferner ein Verbinden von zwei Knoten des Datenflussgraphen über eine Hyperkante auf, wobei das Verbinden eines aufweist von: einer direkten Verbindung über die Hyperkante zwischen den beiden Knoten; und einer indirekten Verbindung über einen oder mehrere zusätzliche Knoten und Hyperkanten zwischen den beiden Knoten.
  • In einer Ausführungsform werden Schritte des Verfahrens wiederholt durchgeführt, um einen Satz von Teilgraph-Knoten in Flussgraphen einzufügen, um mindestens eine Arbeitsspeicher-Reduzierungsoperation und mindestens eine Arbeitsspeicher-Wiederherstellungsoperation durchzuführen.
  • In einer Ausführungsform weist ein wiederholtes Durchführen von Schritten des Verfahrens ein Einfügen eines Satzes von Hyperkanten in den Flussgraphen auf, wobei der Satz von Hyperkanten mindestens eine Serialisierungs-Hyperkante oder mindestens eine Vorabruf-Hyperkante oder mindestens eine Serialisierungs-Hyperkante und mindestens eine Vorabruf-Hyperkante aufweist.
  • In einer Ausführungsform wird das oben beschriebene Verfahren als Programmieranweisungen gespeichert, die auf einem oder mehreren konkreten Speichermedien von einem oder mehreren Computersystemen gespeichert sind und von einem oder mehreren Prozessoren des einen oder der mehreren Computersysteme durchgeführt werden, das bzw. die die Programmieranweisungen ausführen. Die Programmieranweisungen können als ein Computerprogrammierprodukt gespeichert werden.
  • Gemäß einem Aspekt wird ein Verfahren zum Reduzieren einer Gesamtnutzung eines GPU-Arbeitsspeichers beim Verarbeiten von neuronalen Netzwerken bereitgestellt, wobei das Verfahren aufweist: automatisches Bestimmen von Einfügungspunkten von Arbeitsspeicher-Erhaltungsoperationen in einem zugrunde liegenden Datenflussgraphen, der einen Satz von Knoten und einen Satz von Kanten aufweist.
  • Gemäß einem weiteren Aspekt wird ein Verfahren bereitgestellt, das aufweist: Auswählen eines Einfügungspunkts in einem Datenflussgraphen für eine Operation auf Grundlage eines Satzes von Tensor-Timing-Slacks (TTS) und einer Kandidatenliste von Eingabetensoren (SI); Berechnen der Tensor-Timing-Slacks (TTS) für einen Satz von Eingabetensoren; Kompilieren der Kandidatenliste (SI) von Eingabetensoren aus einem Satz von Eingabetensoren durch Verwenden von Eingabetensoren mit entsprechenden TTS-Werten, die größer als ein Schwellenwert (thTTS) sind; Filtern der SI zum Beibehalten von Eingabetensoren, deren Größe einen Schwellenwert (thS) erfüllt; und Bestimmen eines Einfügungspunkts für eine Reduzierungs- und Wiederherstellungsoperation durch Verwenden der SI auf Grundlage des Filterns.
  • Gemäß einem weiteren Aspekt wird ein Verfahren bereitgestellt, das aufweist: Bestimmen, eine Arbeitsspeicher-Reduzierungsaktion mit einem Teilgraph-Knoten A und einem Knoten P anzuwenden, indem eine Arbeitsspeicher-Anforderung für Ausgabedaten identifiziert wird, die durch den Knoten P erzeugt werden sollen; Übertragen von Daten von einem Quellknoten zu dem Teilgraph-Knoten A und dem Knoten P; Ermöglichen, dass der Teilgraph-Knoten A die Arbeitsspeicher-Reduzierungsaktion vor einer Ausführung des Knotens P durchführt, wobei die Arbeitsspeicher-Reduzierungsaktion veranlasst, dass ein zusätzlicher Arbeitsspeicherplatz für einen Grafikprozessor (GPU) verfügbar wird, um eine oder mehrere Funktionen durchzuführen; Veranlassen, dass ein Teilgraph-Knoten B eine Arbeitsspeicher-Wiederherstellungsaktion verzögert, bis ein Knoten Q seine Ausführung beendet hat; und Übertragen der Daten von einem zentralen Prozessor (CPU) des Teilgraph-Knotens B zu dem GPU, um die Daten für den GPU wiederherzustellen
  • Gemäß einem weiteren Aspekt wird ein Computerprogramm bereitgestellt, das Programmcodemittel aufweist, die angepasst sind, um das Verfahren nach einem der Absätze [0027], [0028] oder [0029] durchzuführen, wenn das Programm auf einem Computer ausgeführt wird.
  • Gemäß einem weiteren Aspekt wird ein System zum Reduzieren einer Gesamtnutzung eines GPU-Arbeitsspeichers beim Verarbeiten von neuronalen Netzwerken bereitgestellt, wobei das System betriebsfähig ist zum: automatischen Bestimmen von Einfügungspunkten von Arbeitsspeicher-Erhaltungsoperationen in einem zugrunde liegenden Datenflussgraphen, das einen Satz von Knoten und einen Satz von Kanten aufweist.
  • Gemäß einem weiteren Aspekt wird ein System bereitgestellt, das betriebsfähig ist zum: Auswählen eines Einfügungspunkts in einen Datenflussgraphen für eine Operation auf Grundlage eines Satzes von Tensor-Timing-Slacks (TTS) und einer Kandidatenliste von Eingabetensoren (SI); Berechnen der Tensor-Timing-Slacks (TTS) für einen Satz von Eingabetensoren; Kompilieren der Kandidatenliste (SI) von Eingabetensoren aus einem Satz von Eingabetensoren durch Verwenden von Eingabetensoren mit entsprechenden TTS-Werten, die größer als ein Schwellenwert (thTTS) sind; Filtern der SI zum Beibehalten von Eingabetensoren, deren Größe einen Schwellenwert (thS) erfüllt; und Bestimmen eines Einfügungspunkts für eine Reduzierungs- und Wiederherstellungsoperation durch Verwenden der SI auf Grundlage des Filterns.
  • Gemäß einem weiteren Aspekt wird ein System bereitgestellt, das betriebsfähig ist zum: Bestimmen, eine Arbeitsspeicher-Reduzierungsaktion mit einem Teilgraph-Knoten A und einem Knoten P anzuwenden, indem eine Arbeitsspeicher-Anforderung für Ausgabedaten identifiziert wird, die durch den Knoten P erzeugt werden sollen; Übertragen von Daten von einem Quellknoten zu dem Teilgraph-Knoten A und dem Knoten P; Ermöglichen, dass der Teilgraph-Knoten A die Arbeitsspeicher-Reduzierungsaktion vor einer Ausführung des Knotens P durchführt, wobei die Arbeitsspeicher-Reduzierungsaktion veranlasst, dass ein zusätzlicher Arbeitsspeicherplatz für einen Grafikprozessor (GPU) verfügbar wird, um eine oder mehrere Funktionen durchzuführen; Veranlassen, dass ein Teilgraph-Knoten B eine Arbeitsspeicher-Wiederherstellungsaktion verzögert, bis ein Knoten Q seine Ausführung beendet hat; und Übertragen der Daten von einem zentralen Prozessor (CPU) des Teilgraph-Knotens B zu der GPU, um die Daten für die GPU wiederherzustellen
  • Figurenliste
  • Nachstehend werden bevorzugte Ausführungsformen der vorliegenden Erfindung allein zu Beispielzwecken und unter Bezugnahme auf die folgenden Zeichnungen beschrieben:
    • 1 stellt ein Blockschaubild eines Netzwerks von Datenverarbeitungssystemen dar, in denen veranschaulichende Ausführungsformen umgesetzt werden können;
    • 2 stellt ein Blockschaubild eines Datenverarbeitungssystems dar, in dem veranschaulichende Ausführungsformen umgesetzt werden können;
    • 3 stellt einen Datenflussgraphen gemäß einer veranschaulichenden Ausführungsform dar;
    • 4 stellt einen Datenflussgraphen mit einem den Arbeitsspeicher reduzierenden Teilgraphen gemäß einer veranschaulichenden Ausführungsform dar;
    • 5 stellt einen Datenflussgraphen mit Vorabruf und Serialisierung gemäß einer veranschaulichenden Ausführungsform dar;
    • 6 stellt einen Datenfluss-Teilgraphen gemäß einer veranschaulichenden Ausführungsform dar;
    • 7 stellt einen Datenfluss-Teilgraphen gemäß einer veranschaulichenden Ausführungsform dar;
    • 8 stellt einen Datenfluss-Teilgraphen gemäß einer veranschaulichenden Ausführungsform dar;
    • 9 stellt einen Datenfluss-Teilgraphen gemäß einer veranschaulichenden Ausführungsform dar;
    • 10A stellt einen Ablaufplan eines beispielhaften Prozesses zum Bestimmen eines Einfügungspunktes für eine Reduzierungs- und Wiederherstellungsoperation gemäß einer veranschaulichenden Ausführungsform dar;
    • 10B stellt einen Ablaufplan eines beispielhaften Prozesses zum Durchführen einer Timing-Analyse gemäß einer veranschaulichenden Ausführungsform dar;
    • 11 stellt einen Arbeitsspeicher-Profilgraphen gemäß einer veranschaulichenden Ausführungsform dar;
    • 12 stellt einen Arbeitsspeicher-Profilgraphen gemäß einer veranschaulichenden Ausführungsform dar; und
    • 13 stellt einen Ablaufplan eines beispielhaften Prozesses zur Arbeitsspeicher-Reduzierung in einem Grafikprozessor gemäß einer veranschaulichenden Ausführungsform dar.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ein GPU hat nur einen bestimmten Arbeitsspeicherplatz, mit dem Berechnungen ausgeführt oder verschiedene Funktionen durchgeführt werden können. Die veranschaulichenden Ausführungsformen würdigen, dass eine GPU Daten effizient zu einer CPU verschieben oder ihre eigenen Daten komprimieren kann, um zusätzlichen Arbeitsspeicherplatz freizugeben, der zum Durchführen der Berechnungen und/oder Funktionen erforderlich ist. Ein Auslagerungsknoten verschiebt seinen Eingabetensor aus der GPU in eine CPU. Ein Einlagerungsknoten verschiebt Daten aus der CPU zurück in die GPU. Die Datenwiederherstellung der GPU wird verzögert, bis die Daten für weitere Berechnungen benötigt werden.
  • Die veranschaulichenden Ausführungsformen würdigen, dass eine Serialisierung zusammen mit einem Tensortausch GPU-Arbeitsspeicher-Anforderungen minimieren kann. Tensortausch und Datenkomprimierung werden zur Reduzierung verwendet. Da eine GPU Daten viel schneller komprimiert, als sie die Daten zu der CPU überträgt, reduziert die Datenkomprimierung die Rechenzeit signifikant. Eine Anwendung einer Datenkomprimierung alleine kann Arbeitsspeicherplatz bei minimalem Ausführungszeitverlust einsparen. Eine Komprimierung von Tensoren, die ausgelagert werden sollen, kann die Zeit verringern, die aufgrund eines Datentransfers verloren wird.
  • Die veranschaulichenden Ausführungsformen stellen dar, wie eine Arbeitsspeicher-Reduzierung durch sachgemäße Serialisierung des Datenflusses verbessert wird. Die veranschaulichenden Ausführungsformen würdigen, dass ein Datenflussgraph mit Arbeitsspeicherverwaltung eine effiziente Technik zum Schulen von tiefen neuronalen Netzwerken ist. Der Datenflussgraph veranschaulicht den Tensorfluss oder Datenfluss, der von der GPU zu der CPU auftritt, und Datenfluss, der von einem Datenknoten zu einem anderen Datenknoten in Knoten des Datenverarbeitungssystems auftritt. Die Arbeitsspeicher-Verwaltung bezieht sich darauf, dass die GPU fähig ist, zusätzlichen Arbeitsspeicherplatz freizugeben. In der Regel hat ein Datenflussgraph Rechenknoten, die Eingabedaten aufnehmen und Ausgabedaten erzeugen. Die GPU ist für eine rechtzeitige Zuweisung und Zuweisungsaufhebung dieser Tensoren oder Daten zuständig. Die Knappheit des GPU-Arbeitsspeichers kann der Größe des Datenflussgraphen und der entsprechenden Tensoren jedoch eine strikte Grenze setzen.
  • Die veranschaulichenden Ausführungsformen stellen dar, wie eine GPU zusätzlichen Arbeitsspeicherplatz durch Transferieren von Daten in einer CPU freigeben kann. Ein Problem mit einer Datenauslagerung zwischen einer GPU und einer CPU, wobei die GPU einige seiner ihrer Daten in die CPU transferiert, um zusätzlichen Arbeitsspeicherplatz freizugeben, besteht jedoch darin, diesen Prozess innerhalb eines angemessenen Zeitraums durchzuführen, da Daten in dem Datenverarbeitungssystem fließen und über verschiedene Knoten übertragen werden. Eine Auslagerung großer Datenmengen aus der GPU in die CPU kann zeitintensiv sein. Ein Auslagerungsknoten verschiebt Daten oder einen Eingabetensor aus einer GPU in einen CPU-Arbeitsspeicher. Ein Einlagerungsknoten verschiebt die Daten oder einen Eingabetensor während der Arbeitsspeicher-Wiederherstellung wieder in die GPU zurück. Dementsprechend können große Datenflussgraphen mit einem begrenzten GPU-Arbeitsspeicher ausgeführt werden. Ein Tensortausch zwischen der GPU und der CPU und eine Datenkomprimierung können effektiv zum Freigeben von zusätzlichem Arbeitsspeicherplatz verwendet werden, der zum Ausführen des großen Datenflussgraphen benötigt wird. Die veranschaulichenden Ausführungsformen würdigen, dass je mehr Tensoren an einer Arbeitsspeichererhaltung beteiligt sind, um so höher die Arbeitsspeicher-Einsparungen ausfallen und um so größere Datenflussgraphen wegen des verfügbaren zusätzlichen Arbeitsspeicherraums in dem GPU-Arbeitsspeicher verarbeitet werden können. Ferner kann die GPU auch entscheiden, eine größere Anzahl von kleineren oder mittelgroßen Tensoren zu transferieren, um den Arbeitsspeicherplatz freizugeben, was weniger Zeit in Anspruch nehmen kann, als eine große Datenmenge zu einer CPU zu verschieben.
  • Die veranschaulichenden Ausführungsformen würdigen, dass der Prozess der Arbeitsspeicher-Reduzierung durch eine sachgemäße Ausführung von Serialisierung und Vorabruf eines Datenflussgraphen verbessert werden kann. Die Arbeitsspeicher-Anforderungen der GPU werden infolge des Tensortauschs mit der CPU signifikant reduziert. Mit einem Vorabruf kann die Datenwiederherstellung für die GPU verzögert werden, bis die Daten tatsächlich benötigt werden.
  • Die veranschaulichenden Ausführungsformen würdigen, dass ein Datentransfer von einer Einheit zu einer anderen wie beispielsweise von einer GPU zu einer CPU und umgekehrt beträchtliche Zeit in Anspruch nehmen kann. Da bei einer Ausführungsform eine Arbeitsspeicher-Erhaltung Zeit für Datentransfer, Komprimierung und Dekomprimierung in Anspruch nimmt (der Begriff „dekomprimieren“ und dessen anderen Formen werden austauschbar mit „entkomprimieren“ und dessen anderen Formen verwendet), sollte sie nur auf Tensoren angewendet werden, die GPU-Arbeitsspeicher für einen ausreichend langen Zeitraum belegen, ohne an irgendwelchen Berechnungen beteiligt zu sein. Dementsprechend kann die GPU Daten (Tensoren) in die CPU transferieren und dieselben Daten von der CPU empfangen, die nicht an Berechnungen oder Funktionen beteiligt sind. Durch eine Serialisierung kann eine zusätzliche Strukturmodifizierung zu dem Datenflussgraphen in der Form von Steuerabhängigkeitskanten im Gegensatz zu regulären Datenübertragungskanten hinzugefügt werden. Die GPU kann Tensoren (Daten) in die CPU auslagern oder transferieren, um zusätzlichen Arbeitsspeicherplatz freizugeben, der zum Durchführen einer Reihe von Funktionen oder Berechnungen benötigt wird
  • In veranschaulichenden Ausführungsformen kann die Arbeitsspeicher-Wiederherstellung verzögert werden. Eine zusätzliche Strukturmodifizierung zu dem Datenflussgraphen in der Form von Steuerabhängigkeitskanten hinzugefügt werden. Die GPU kann die Daten zurückfordern, die sie ursprünglich zu der CPU transferiert hat, um die Funktionen und/oder die Berechnung durchzuführen. Ein Knoten kann eine Steuerabhängigkeitskante auf einen oder mehrere Teilgraph-Knoten anwenden, um eine Wiederherstellung des Arbeitsspeichers zu verzögern, bis der Knoten seine Ausführung beendet hat.
  • In veranschaulichenden Ausführungsformen kann die GPU auch entscheiden, keine Tensoren mit der CPU oder einer anderen Einheit auszutauschen. Stattdessen kann die GPU entscheiden, ihre Tensoren intern zu komprimieren, um den zusätzlichen Arbeitsspeicherplatz freizugeben. Die Serialisierung gibt der GPU Zeit, mit dem Komprimieren der Daten zum Freigeben von zusätzlichem Arbeitsspeicherplatz zu beginnen, bevor eine Wiederaufnahme des Datentransfers zwischen den Knoten erlaubt wird. Ein Vorabruf kann der GPU ermöglichen, ein Dekomprimieren der Daten zu verzögern, um Knoten ein Übertragen ihrer Daten zu erlauben, bevor die GPU die komprimierten Daten dekomprimiert.
  • Die veranschaulichenden Ausführungsformen stellen Arbeitsspeicher-Reduzierungs- und Arbeitsspeicher-Wiederherstellungsaktionen bereit, die der GPU erlauben, Daten zum Freigeben von zusätzlichem Arbeitsspeicherplatz in eine CPU zu transferieren, um Berechnungen und/oder Funktionen durchzuführen und anschließend ihre Daten von der CPU zurückzuholen, nachdem der zusätzliche Arbeitsspeicherplatz verwendet worden ist. Die veranschaulichenden Ausführungsformen stellen auch ein Programmprodukt und ein Computersystem bereit, das die oben beschriebene Arbeitsspeicher-Reduzierung und Arbeitsspeicher-Wiederherstellung umfasst, um Daten zum Freigeben von zusätzlichem Arbeitsspeicherplatz in die CPU zu transferieren und anschließend die Daten von der CPU zurückzuholen, nachdem der zusätzlich Arbeitsspeicherplatz verwendet worden ist.
  • Die veranschaulichenden Ausführungsformen, die zum Beschreiben der Erfindung verwendet werden, befassen sich allgemein mit dem oben beschriebenen Problem der Arbeitsspeicher-Verwaltung in einer GPU in einem Datenverarbeitungssystem in Deep-Learning-Systemen und lösen es. Die veranschaulichenden Ausführungsformen stellen ein Verfahren, ein Computerprogrammprodukt und ein Computersystem zur Arbeitsspeicher-Verwaltung in einer GPU in Deep-Learning-Systemen bereit.
  • In einer Ausführungsform berechnet die Timing-Analyse Zeitpunkte der Ereignisse, die in einem Datenflussgraphen während seiner Ausführung auftreten. Zeit ist ein Kriterium für ein Auswählen von Tensoren (Daten) zur Arbeitsspeicher-Reduzierung. Die Timing-Analyse geht zudem davon aus, dass die Berechnung der Daten an allen Ausgaben eines bestimmten Knotens zur selben Zeit beendet wird.
  • Die Timing-Mengen, die in der Timing-Analyse verwendet werden, umfassen Tensorankunftszeit (TAT), erforderliche Tensorzeit (TRT) und Tensor-Timing-Slack (Slack-Zeit). Die TAT ist der Zeitpunkt, an dem die Berechnung von Daten beendet ist, und die Daten für Operatoren/Knoten verfügbar sind. Die TRT ist der Zeitpunkt, an dem die Daten an einer Eingabe eines Knotens zur Ausführung des Knotens erforderlich sind. Der TTS ist die Differenz zwischen der TRT und der TAT.
  • Der Timing-Analysenalgorithmus beginnt damit, die TATs, TRTs und die TTSs in dem Datenflussgraphen als unbekannt zu initialisieren. Die TAT und TRT und der TTS sind = 0 für jeden Quellknoten des Datenflussgraphen. Aus dem Datenflussgraphen kann ein beliebiger Knoten ausgewählt werden, um die Timing-Analyse unter Einbeziehung von TAT, TRT und TTS durchzuführen.
  • Einige grundlegende Kriterien für ein Auswählen von Kandidatentensoren für eine Arbeitsspeichererhaltung können die Größe des Tensors, den Tensor-Timing-Slack und die Gesamtanzahl von Tensoren umfassen. Kleine Tensoren sind nicht unbedingt die besten Kandidaten für einen Datentausch. Im Gegensatz dazu kann ein größerer Tensor-Timing-Slack länger im CPU-Arbeitsspeicher oder in einem komprimierten Zustand verbleiben. Ferner kann die größere Anzahl an der Arbeitsspeichererhaltung beteiligten Tensoren mehr GPU-Arbeitsspeicher für andere Berechnungen freigeben.
  • In veranschaulichenden Ausführungsformen kann die Timing-Analyse zum Identifizieren von einem oder mehreren Knoten in einer Datenflussgruppe verwendet werden. Der eine oder die mehreren Knoten, der bzw. die Ausgabedaten mit der größten Arbeitsspeicher-Anforderung von den Knoten in dem Datenflussgraphen erzeugt bzw. erzeugen, können identifiziert werden. Strukturbezogene Modifikatoren wie zum Beispiel eine „SERIALISIERUNG“ (SERIALIZATION) und ein „VORABRUF“ (PREFETCH) können in den einen oder die mehreren Knoten in dem Datenflussgraphen eingefügt werden. Die Serialisierung von Datenflussgraphenknoten wird durch Definieren einer Steuerabhängigkeit eines Knotens von einem anderen Knoten durchgeführt. Die Ausführung eines Knotens B beginnt erst, wenn die Ausführung eines Knotens A vollständig beendet ist. Das bedeutet, dass keine Ausgabetensoren von einem Knoten B zugewiesen werden, bevor die Ausführung eines Knotens A beendet ist. Ein Vorabruf wird durchgeführt, indem eine Steuerabhängigkeitskante von einem Knoten zu einem anderen Knoten aufgerufen wird, um einen Tensor-Wiederaufbau oder eine Arbeitsspeicher-Wiederherstellung zu verzögern. Der Knoten, der die Steuerabhängigkeitskante anwendet, beendet seine Ausführung, bevor der Tensor-Wiederaufbau oder die Arbeitsspeicher-Wiederherstellung stattfindet.
  • Eine Ausführungsform stellt ein Verfahren zur Arbeitsspeicher-Verwaltung in einer GPU bereit, wobei die GPU Daten in eine CPU transferiert, um zusätzlichen Arbeitsspeicherplatz freizugeben, um eine oder mehrere Funktionen oder Berechnungen durchzuführen. Das Verfahren umfasst auch eine Arbeitsspeicher-Wiederherstellung, wobei die CPU die wiederhergestellten Daten an die GPU zurückgeben kann. Eine weitere Ausführungsform stellt ein Computerprogrammprodukt mit Programmanweisungen für die GPU bereit, um Daten für ein Freigeben von zusätzlichem Arbeitsspeicherplatz in eine CPU zu transferieren. Das Computerprogrammprodukt umfasst auch Programmanweisungen einschließlich einer Arbeitsspeicher-Wiederherstellung, um der GPU zu ermöglichen, die Daten von der CPU zurück zu erhalten. Eine weitere Ausführungsform stellt ein Computersystem mit Programmanweisungen für die GPU bereit, um Daten in eine CPU zu transferieren. Das Computersystem umfasst auch Programmanweisungen zum Verwenden einer Arbeitsspeicher-Wiederherstellung, um die Daten in die GPU zurück zu transferieren.
  • Abschlusszeiten beziehen sich auf die Zeit, zu der die Berechnung des Tensors oder der Daten an dem Knoten beendet ist und für die anderen Knoten verfügbar ist. Gemäß einer Definition beziehen sich Slack-Zeiten auf die Zeitdauer, um die die Ankunft einer bestimmten Eingabe verzögert werden könnte, ohne zu verursachen, dass die gesamte Operation verzögert wird, oder wie lange der Tensor an der Eingabe des Knotens wartet, bis der Tensor für die Berechnung verwendet wird.
  • In einer Ausführungsform wird das Hinzufügen einer Arbeitsspeichereinheit, wie zum Beispiel eine GPU, in einem Datenverarbeitungssystem eingeführt, in dem Knoten Daten übertragen und empfangen. Die GPU versucht, Funktionen oder Berechnungen durchzuführen, die ein Erlangen von zusätzlichem Arbeitsspeicherplatz verursachen. Zum Durchführen der Funktionen oder Berechnungen entscheidet die GPU, Daten in eine CPU in dem Datenverarbeitungssystem zu verschieben, um den zusätzlichen Arbeitsspeicherplatz freizugeben. Während der Arbeitsspeicher-Reduzierung wendet ein bzw. wenden mehrere Teilgraph-Knoten eine Steuerabhängigkeitskante auf einen Knoten an, um der GPU zu erlauben, die Daten zu der CPU zu übertragen und zusätzlichen Arbeitsspeicherplatz freizugeben. Der Knoten ist ein abhängiger Knoten und der bzw. die Teilgraph-Knoten ist bzw. sind der Steuerknoten während der Serialisierungsroute. Der bzw. die Teilgraph-Knoten und der Knoten werden serialisiert, wobei der bzw. die Teilgraph-Knoten seine bzw. ihre Ausführung durchführen, bevor der Knoten seine Ausführung durchführt. Wenn die Knoten ihre Daten zu anderen Knoten übertragen, kann eine weitere strukturbezogene Modifizierung zu dem Datenflussgraphen hinzugefügt werden, um eine Ausführung von Knoten zu serialisieren. Veranschaulichende Ausführungsformen können mehrere strukturbezogene Modifizierungen aufweisen, die dem Datenflussgraphen hinzugefügt wurden, und dadurch führt die GPU ihre Ausführung eines Übertragens von Daten zu einer CPU durch, bevor der Knoten seine Ausgabedaten zu einem anderen Knoten überträgt.
  • Wenn die GPU die Nutzung des zusätzlichen Arbeitsspeicherplatzes für ihre beabsichtigte Funktion beendet hat, kann die GPU die Daten zurückholen, die sie ursprünglich in die CPU transferiert hat, und die Arbeitsspeicher-Wiederherstellung kann erfolgen. Ein weiterer Knoten kann eine Steuerabhängigkeitskante auf einen oder mehrere andere Teilgraph-Knoten anwenden. Aufgrund der Anwendung der Steuerabhängigkeitskante wird ein Senden der wiederhergestellten Daten verzögert, bis ein Zielknoten, der die wiederhergestellten Daten aufnimmt, die wiederhergestellten Daten benötigt, und bis der Steuerknoten, der die Steuerabhängigkeitskante angewendet hat, seine Ausführung durchgeführt hat. Die CPU kann die für die GPU wiederherzustellenden Daten an den Zielknoten übertragen, wenn der Knoten, der die Steuerabhängigkeitskante angewendet hat, seine Ausführung beendet hat.
  • In einer Ausführungsform kann die GPU ihre Daten auch auf einen Bruchteil komprimieren, um zusätzlichen Arbeitsspeicherplatz bereitzustellen, um die gewünschten Funktionen oder Berechnungen durchzuführen, ohne irgendwelche Daten an eine CPU zu übertragen. Die GPU kann Daten von 32 Bit auf 16 Bit komprimieren, um den zusätzlichen Arbeitsspeicherplatz zu erstellen. In anderen veranschaulichenden Ausführungsformen kann die GPU ihre Daten auf einen anderen Bruchteil komprimieren (d.h. von 32 Bit auf 24 Bit oder von 32 Bit auf 8 Bit). Ein oder mehrere Teilgraph-Knoten wendet bzw. wenden eine Steuerabhängigkeitskante auf einen Knoten an, der Daten von dem Quellknoten empfangen hat. Die GPU kann ihre Ausführung eines Komprimierens der Daten beenden. Der Knoten wird serialisiert und überträgt seine empfangenen Daten, nachdem die GPU die Komprimierung ihrer Daten beendet hat. Die Steuerabhängigkeitskante kann ein Dekomprimieren der Daten für den bzw. die anderen Teilgraph-Knoten verzögern, bis der Knoten seine Ausführung beendet hat. Die GPU kann die dekomprimierten Daten erst empfangen, wenn der Knoten, der die Steuerabhängigkeitskante angewendet hat, seine Ausführung beendet hat.
  • Wie hierin verwendet, kann der Begriff „Datenflussgraph“ gemäß einer der folgenden beispielhaften und nicht einschränkenden Definitionen definiert werden.
  • Definition 1: Ein Datenflussgraph ist ein Paar (N, E), wobei N ein Satz von Knoten ist und E ein Satz von Hyperkanten ist. Knoten setzten Operatoren auf Tensoren um. Jeder Knoten ist ein Triplet (f, l, O), wobei f die Funktion des durch den Knoten umgesetzten Operators ist, 1 ein Satz der Knoteneingaben ist, die den Operator-Argumenten entsprechen, und O ein Satz der Knotenausgaben ist, die den durch den Operator berechneten Tensoren entsprechen. Hyperkanten definieren, wie Tensoren von Operatoren, die sie berechnen, an Operatoren übergeben werden, die sie als Argumente verwenden. Jede Hyperkante ist ein Paar (s, H), wobei s eine Knotenausgabe ist, und H ein Satz von Knoteneingaben ist. s und H = {h1, h2, ... } sind jeweils die Quelle und der Satz der Senken der Hyperkante. Hypergraphen unterscheiden sich von herkömmlichen Graphen. Eine Kante eines herkömmlichen Graphen weist immer eine Senke auf. Eine Hyperkante kann mehrere Senken haben: derselbe Tensor wird von mehreren Operatoren als ein Argument verwendet. Ein Hypergraph-Knoten weist eine komplexere Struktur als ein Knoten eines herkömmlichen Graphen auf. Verschiedene Operatorargumente und -ergebnisse können verschiedene Bedeutungen, Größen und Dimensionen haben. Daher können die Eingaben und Ausgaben eines Hypergraph-Knotens identifiziert und eindeutig gekennzeichnet werden. Knoten von herkömmlichen Graphen können nur Operatoren mit einem einzigen Argument und einem einzigen Ergebnis beschreiben. Zusätzlich zum Definieren von Quellen und Senken von Hyperkanten als Knoteneingaben und -ausgaben ist es zweckmäßig, Quell- und Senkenknoten von Hyperkanten zu erörtern. Sie werden wie folgt definiert.
  • Definition 2: Die Knoten, die einer Hyperkantenquelle und Senken entsprechen, werden jeweils als Quell- und Senkenknoten der Hyperkante bezeichnet.
  • Definition 3: Eine Hyperkante, die mit einer Eingabe eines Knotens verbunden ist, wird als eingehende Hyperkante dieses Knotens bezeichnet, und eine Hyperkante, die mit einer Ausgabe dieses Knotens verbunden ist, wird als ausgehende Hyperkante dieses Knotens bezeichnet.
  • Definition 4: Die Nachfolgereingaben eines Knotens sind die Senken der ausgehenden Hyperkanten dieses Knotens.
  • Definition 5: Die Nachfolgerknoten eines Knotens sind die Senkenknoten der ausgehenden Hyperkanten dieses Knotens. Zu beachten ist, dass zwischen Nachfolgereingaben und Nachfolgerknoten unterschieden wird. Erstere sind Knoteneingaben und Letztere sind die Knoten selbst.
  • Dementsprechenden stellen eine oder mehrere Ausführungsformen Verfahren bereit, die eine Arbeitsspeicher-Verwaltung ermöglichen. Verschiedene Ausführungsformen stellen eine Methodik bereit, die eine Arbeitsspeicher-Verwaltung in einem Deep-Learning-System ermöglicht.
  • Aus Gründen der Übersichtlichkeit der Beschreibung, und ohne irgendeine zugehörige Einschränkung zu implizieren, werden die veranschaulichenden Ausführungsformen durch Verwenden einiger Beispielkonfigurationen beschrieben. Aus dieser Offenbarung sind für den Fachmann viele Änderungen, Anpassungen und Modifizierungen einer beschriebenen Konfiguration vorstellbar, um einen beschriebenen Zweck zu erreichen, und diese werden als innerhalb des Schutzumfangs der veranschaulichenden Ausführungsformen berücksichtigt.
  • Ferner werden vereinfachte Darstellungen der Datenverarbeitungs-Umgebungen in den Figuren und den veranschaulichten Ausführungsformen verwendet. In einer tatsächlichen Datenverarbeitungsumgebung können zusätzliche Strukturen oder Komponenten, die hierin nicht gezeigt oder beschrieben wurden, oder Strukturen oder Komponenten, die sich von den gezeigten unterscheiden, aber für eine ähnliche Funktion wie hierin beschrieben vorhanden sein, ohne vom Schutzumfang der veranschaulichenden Ausführungsformen abzuweichen.
  • Ferner werden die veranschaulichenden Ausführungsformen in Bezug auf spezifische tatsächliche oder hypothetische Komponenten nur zu Beispielzwecken beschrieben. Die durch die verschiedenen veranschaulichenden Ausführungsformen beschriebenen Schritte können durch Verwenden einer Vielfalt von Komponenten angepasst werden, die zweckgebunden sein oder einem neuen Zweck zugeführt werden können, um eine beschriebene Funktion in einer Datenverarbeitungsumgebung bereitzustellen, und derartige Anpassungen werden als innerhalb des Schutzumfangs der veranschaulichenden Ausführungsformen betrachtet.
  • Die veranschaulichenden Ausführungsformen werden in Bezug auf bestimmte Typen von Schritten, Anwendungen und Datenverarbeitungsumgebungen als rein beispielhaft beschrieben. Alle spezifischen Erscheinungsformen von diesen und anderen ähnlichen Artefakten sind nicht als Einschränkung der Erfindung aufzufassen. Jede geeignete Erscheinungsform von diesen und anderen ähnlichen Artefakten kann innerhalb des Schutzumfangs der veranschaulichenden Ausführungsformen ausgewählt werden.
  • Die Beispiele in dieser Offenbarung werden nur zur Verdeutlichung der Beschreibung verwendet und schränken die veranschaulichenden Ausführungsformen nicht ein. Alle hierin aufgelisteten Vorteile sind nur Beispiele und sind nicht als Einschränkung auf die veranschaulichenden Ausführungsformen aufzufassen. Weitere oder verschiedene Vorteile können durch spezifische veranschaulichende Ausführungsformen verwirklicht werden. Ferner kann eine bestimmte veranschaulichende Ausführungsform einige, alle oder gar keine der oben aufgeführten Vorteile aufweisen.
  • Unter Bezugnahme auf die Figuren und insbesondere unter Bezugnahme auf 1 und 2 sind diese Figuren beispielhafte Darstellungen von Datenverarbeitungsumgebungen, in denen veranschaulichende Ausführungsformen umgesetzt werden können. 1 und 2 sind nur Beispiele und durch sie soll keinerlei Einschränkung hinsichtlich der Umgebungen festgestellt oder impliziert werden, in denen verschiedene Ausführungsformen umgesetzt werden können. Eine spezielle Umsetzung kann zu vielen Modifizierungen an den dargestellten Umgebungen auf Grundlage der folgenden Beschreibung führen.
  • 1 stellt ein Blockschaubild eines Netzwerks von Datenverarbeitungssystemen dar, in denen veranschaulichende Ausführungsformen umgesetzt werden können. Eine Datenverarbeitungsumgebung 100 ist ein Netzwerk von Computern, in denen die veranschaulichenden Ausführungsformen umgesetzt werden können. Die Datenverarbeitungsumgebung 100 umfasst ein Netzwerk 102. Das Netzwerk 102 ist das Medium, das zum Bereitstellen von Datenübertragungsverbindungen zwischen verschiedenen Einheiten und Computern verwendet wird, die in der Datenverarbeitungsumgebung 100 miteinander verbunden sind. Das Netzwerk 102 kann Verbindungen enthalten, wie beispielsweise drahtgebundene, drahtlose Datenübertragungsverbindungen oder Lichtwellenleiterkabel.
  • Clients oder Server sind nur beispielhafte Rollen von bestimmten Datenverarbeitungssystemen, die mit dem Netzwerk 102 verbunden sind, und sind nicht so aufzufassen, dass sie andere Konfigurationen oder Rollen für diese Datenverarbeitungssysteme ausschließen. Ein Server 104 ist mit dem Netzwerk 102 verbunden. Software-Anwendungen können auf jedem Quanten-Datenverarbeitungssystem in der Datenverarbeitungsumgebung 100 ausgeführt werden. Jede Software-Anwendung, die als in dem Server 104 in 1 ausgeführt beschrieben wird, kann konfiguriert werden, um in einem anderen Datenverarbeitungssystem auf ähnliche Weise ausgeführt zu werden. Alle im Server 104 in 1 gespeicherten oder erzeugten Daten oder Informationen können in einem anderen Datenverarbeitungssystem auf ähnliche Weise gespeichert oder erzeugt zu werden. Ein klassisches Datenverarbeitungssystem, wie zum Beispiel der Server 104, kann Daten enthalten und kann Software-Anwendungen oder Software-Werkzeuge aufweisen, die klassische Datenverarbeitungsprozesse darauf ausführen.
  • Ein Server 106 ist zusammen mit einer Speichereinheit 108 mit dem Netzwerk 102 verbunden. Die enthaltene Speichereinheit 108 ist so konfiguriert, dass sie Schulungsdaten für ein neuronales Netzwerk speichert, wie hierin unter Bezugnahme auf verschiedene Ausführungsformen beschrieben. Der Server 106 ist ein herkömmliches Datenverarbeitungssystem. Software-Anwendungen können auf jedem Quanten-Datenverarbeitungssystem in der Datenverarbeitungsumgebung 100 ausgeführt werden. Jede Software-Anwendung kann konfiguriert werden, um in einem anderen Datenverarbeitungssystem auf ähnliche Weise ausgeführt zu werden.
  • Clients 110, 112 und 114 sind ebenfalls mit dem Netzwerk 102 verbunden. Ein herkömmliches Datenverarbeitungssystem wie zum Beispiel der Server 106 oder der Client 110, 112 oder 114 kann Daten enthalten und kann Software-Anwendungen oder Software-Werkzeuge aufweisen, die herkömmliche Datenverarbeitungsprozesse darauf ausführen.
  • Nur als Beispiel und ohne irgendeine Einschränkung einer derartigen Architektur implizieren zu wollen, stellt 1 bestimmte Komponenten dar, die in einer beispielhaften Umsetzung einer Ausführungsform verwendbar sind. Zum Beispiel werden der Server 106 und die Clients 110, 112, 114 nur zu Beispielzwecken als Server und Clients dargestellt und nicht, um eine Einschränkung auf eine Client-Server-Architektur zu implizieren. Als weiteres Beispiel kann eine Ausführungsform über mehrere herkömmliche Datenverarbeitungssysteme, Quanten-Datenverarbeitungssysteme und ein Datennetzwerk, wie gezeigt, verteilt werden, wogegen eine andere Ausführungsform auf einem einzelnen herkömmlichen Datenverarbeitungssystem oder einem einzelnen Quanten-Datenverarbeitungssystem innerhalb des Schutzumfangs der veranschaulichenden Ausführungsformen umgesetzt werden kann. Herkömmliche Datenverarbeitungssysteme 106, 110, 112 und 114 stellen auch Beispielknoten in einem Cluster, Partitionen und anderen Konfigurationen dar, die für ein Umsetzen einer Ausführungsform geeignet sind.
  • Eine Einheit 132 ist ein Beispiel für eine hierin beschriebene herkömmliche Datenverarbeitungseinheit. Zum Beispiel kann die Einheit 132 die Form eines Smartphones, eines Tablet-Computers, eines Laptop-Computers, eines Clients 110 in einer ortsfesten oder tragbaren Form, eine tragbare Datenverarbeitungseinheit oder jede andere geeignete Einheit aufweisen. Jede Software-Anwendung, die als in einem weiteren herkömmlichen Datenverarbeitungssystem in 1 ausgeführt beschrieben wird, kann konfiguriert werden, um in der Einheit 132 auf ähnliche Weise ausgeführt zu werden. Alle in einem weiteren herkömmlichen Datenverarbeitungssystem in 1 gespeicherten oder erzeugten Daten oder Informationen können konfiguriert werden, um in der Einheit 132 auf ähnliche Weise gespeichert oder erzeugt zu werden.
  • Der Server 106, die Speichereinheit 108, das klassische Verarbeitungssystem 104, das Quanten-Verarbeitungssystem 140 und die Clients 110, 112 und 114 und die Einheit 132 können mit dem Netzwerk 102 durch Verwenden von drahtgebundenen Verbindungen, drahtlosen Datenübertragungsprotokollen oder einer anderen geeigneten Datenkonnektivität verbunden werden. Die Clients 110, 112 und 114 können zum Beispiel PCs oder Netzwerk-Computer sein.
  • In dem dargestellten Beispiel kann der Server 106 Daten wie zum Beispiel Boot-Dateien, Betriebssystemabbildungen und Anwendungen für die Clients 110, 112 und 114 bereitstellen. Die Clients 110, 112 und 114 können in diesem Beispiel Clients für den Server 106 sein. Die Clients 110, 112 und 114 oder eine Kombination davon können ihre eigenen Daten, Boot-Dateien, Betriebssystemabbilder und Anwendungen umfassen. Die Datenverarbeitungsumgebung 100 kann zusätzliche Server, Clients und andere nicht gezeigte Einheiten enthalten.
  • Die Datenverarbeitungsumgebung 100 kann zusätzliche Arbeitsspeicher, Quanten-Prozessoren und andere nicht gezeigte Einheiten enthalten. In dem dargestellten Beispiel kann die Datenverarbeitungsumgebung 100 das Internet sein. Das Netzwerk 102 kann eine Sammlung von Netzwerken und Gateways darstellen, die das Transmission Control Protocol/Internet Protocol (TCP/IP) oder andere Protokolle verwenden, um miteinander Daten auszutauschen. Das Kernstück des Internets ist ein Backbone von Datenübertragungsverbindungen zwischen Hauptknoten oder Host-Computern, die Tausende von gewerblichen, behördlichen, schulischen und anderen Computersystemen umfassen, die Daten und Nachrichten weiterleiten. Selbstverständlich kann die Datenverarbeitungsumgebung 100 auch als eine Anzahl von verschiedenen Typen von Netzwerken umgesetzt werden, wie zum Beispiel ein Intranet, ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN). 1 ist als Beispiel und nicht als Architektureinschränkung für die verschiedenen veranschaulichenden Ausführungsformen gedacht.
  • Neben anderen Verwendungen kann die Datenverarbeitungsumgebung 100 zum Umsetzen einer Client-Server-Umgebung verwendet werden, in der die veranschaulichenden Ausführungsformen umgesetzt werden können. Eine Client-Server-Umgebung ermöglicht, dass Software-Anwendungen und Daten über ein Netzwerk verteilt werden können, sodass eine Anwendung durch ein Verwenden der Interaktivität zwischen einem herkömmlichen Client-Datenverarbeitungssystem und einem herkömmlichen Server-Datenverarbeitungssystem funktioniert. Die Datenverarbeitungsumgebung 100 kann auch eine dienstorientierte Architektur verwenden, in der interoperable Software-Komponenten, die über ein Netzwerk verteilt sind, als kohärente Geschäftsanwendungen zusammengepackt sind. Die Datenverarbeitungsumgebung 100 kann auch die Form einer Cloud annehmen und ein Cloud-Computing-Modell einer Dienstbereitstellung verwenden, um einen problemlosen bedarfsgesteuerten Netzwerkzugang zu einem gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen zu ermöglichen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können.
  • Unter Bezugnahme auf 2 stellt diese Figur ein Blockschaubild eines Datenverarbeitungssystems dar, in dem veranschaulichende Ausführungsformen umgesetzt werden können. Ein Datenverarbeitungssystem 200 ist ein Beispiel für einen herkömmlichen Computer, wie zum Beispiel das klassische Datenverarbeitungssystem 104, der Server 106 oder die Clients 110, 112 und 114 in 1 oder ein anderer Typ von Einheit, in dem sich durch einen Computer verwendbarer Programmcode oder Anweisungen für die veranschaulichenden Ausführungsformen befinden kann bzw. können, der bzw. die die Prozesse umsetzt bzw. umsetzen.
  • Das Datenverarbeitungssystem 200 ist auch repräsentativ für ein herkömmliches Datenverarbeitungssystem oder eine Konfiguration darin, in dem sich durch einen Computer verwendbarer Programmcode oder Anweisungen befinden kann bzw. können, der bzw. die die Prozesse der veranschaulichenden Ausführungsformen umsetzt bzw. umsetzen. Das Datenverarbeitungssystem 200 wird nur zu Beispielzwecken als ein Computer beschrieben, ohne darauf beschränkt zu sein. Umsetzungen in der Form von anderen Einheiten können das Datenverarbeitungssystem 200 zum Beispiel durch Hinzufügen einer Berührungsschnittstelle modifizieren und sogar bestimmte dargestellte Komponenten aus dem Datenverarbeitungssystem 200 eliminieren, ohne von der allgemeinen Beschreibung der Operationen und Funktionen des hierin beschriebenen Datenverarbeitungssystems 200 abzuweichen.
  • In dem dargestellten Beispiel verwendet das Datenverarbeitungssystem 200 eine Hub-Architektur mit North-Bridge und Speicher-Controller-Hub (NB/MCH) 202 und South-Bridge und Eingabe/Ausgabe- (E/A) Controller-Hub (SB/ICH) 204. Eine Verarbeitungseinheit 206, ein Hauptarbeitsspeicher 208 und ein Grafikprozessor 210 sind mit North-Bridge und dem Controller-Hub (NB/MCH) 202 verbunden. Die Verarbeitungseinheit 206 kann einen oder mehrere Prozessoren enthalten und kann durch Verwenden von einem oder mehreren heterogenen Prozessorsystemen umgesetzt werden. Die Verarbeitungseinheit 206 kann ein Mehrkern-Prozessor sein. Der Grafikprozessor 210 kann in bestimmten Umsetzungen mit dem NB/MCH 202 über einen beschleunigten Grafikanschluss (AGP - Accelerated Graphics Port) verbunden werden.
  • In dem dargestellten Beispiel ist ein Adapter 212 des lokalen Netzwerks (LAN) mit South-Bridge und E/A-Controller-Hub (SB/ICH 204) verbunden. Ein Audio-Adapter 216, ein Tastatur- und Maus-Adapter 220, ein Modem, ein Nur-Lese-Speicher (ROM) 224, ein Universal-Serial-Bus (USB) und andere Anschlüsse 232 und PCI/PCIe-Einheiten 234 sind mit South-Bridge und einem E/A-Controller-Hub 204 über einen Bus 238 verbunden. Ein Festplattenlaufwerk oder eine Solid-State-Einheit (SSD) 226 und ein CD-ROM 230 sind mit South-Bridge und E/A-Controller-Hub 204 durch einen Bus 240 verbunden. Zu den PCI/PCIe-Einheiten 234 können beispielsweise Ethernet-Adapter, Add-in-Karten und PC-Karten für Notebook-Computer gehören. PCI verwendet einen Karten-Bus-Controller, PCIe hingegen nicht. Der ROM 224 kann beispielsweise ein binäres Flash-Eingabe/Ausgabe-System (BIOS) sein. Das Festplattenlaufwerk 226 und der CD-ROM 230 können zum Beispiel eine Integrated Drive Electronics- (IDE) oder Serial Advanced Technology Attachment- (SATA) Schnittstelle oder Varianten wie beispielsweise External SATA (eSATA) und Mikro-SATA (mSATA) verwenden. Eine Super I/O- (SIO) Einheit 236 kann mit South-Bridge und dem E/A-Controller-Hub (SB/ICH) 204 über den Bus 238 verbunden werden.
  • Arbeitsspeicher, wie zum Beispiel der Hauptarbeitsspeicher 208, der ROM 224 oder ein Flash-Speicher (nicht gezeigt) sind einige Beispiele für durch einen Computer verwendbare Speichereinheiten. Das Festplattenlaufwerk oder die Solid-State-Einheit (SSD) 226 oder andere ähnlich verwendbare Einheiten sind einige Beispiele für durch einen Computer verwendbare Speichereinheiten, die ein durch einen Computer verwendbares Speichermedium umfassen.
  • Auf der Verarbeitungseinheit 206 wird ein Betriebssystem ausgeführt. Das Betriebssystem koordiniert verschiedene Komponenten und stellt deren Steuerung in dem Datenverarbeitungssystem 200 in 2 bereit. Das Betriebssystem kann ein im Handel erhältliches Betriebssystem für jeden Typ einer Datenverarbeitungsplattform sein, das Serversysteme, PCs und mobile Einheiten umfasst, aber nicht darauf beschränkt ist. Ein objektorientiertes Programmiersystem oder ein anderer Typ eines Programmiersystems kann zusammen mit dem Betriebssystem ausgeführt werden und stellt Aufrufe an das Betriebssystem aus Programmen oder Anwendungen bereit, die auf dem Datenverarbeitungssystem 200 ausgeführt werden.
  • Anweisungen für das Betriebssystem, das objektorientierte Programmiersystem und Anwendungen oder Programme befinden sich auf Speichereinheiten, wie beispielsweise in der Form eines Codes 226A auf dem Festplattenlaufwerk 226, und können in mindestens einen von einem oder mehreren Arbeitsspeichern, wie beispielsweise den Hauptarbeitsspeicher 208, zur Ausführung durch die Verarbeitungseinheit 206 geladen werden. Die Prozesse der veranschaulichenden Ausführungsformen können von der Verarbeitungseinheit 206 durch Verwenden von durch den Computer umgesetzten Anweisungen ausgeführt werden, die sich in einem Arbeitsspeicher wie zum Beispiel dem Hauptarbeitsspeicher 208, dem ROM 224 oder in einer oder mehreren Peripherieeinheiten befinden können.
  • Ferner kann in einem Fall der Code 226A über ein Netzwerk 201A von einem entfernt angeordneten System 201B heruntergeladen werden, wobei ein ähnlicher Code 201C auf einer Speichereinheit 201D gespeichert ist. In einem weiteren Fall kann der Code 226A über das Netzwerk 201A auf das entfernt angeordnete System 201B heruntergeladen werden, wobei der heruntergeladene Code 201C auf der Speichereinheit 201D gespeichert ist.
  • Die Hardware in den 1 bis 2 kann je nach Umsetzung verschieden sein. Andere interne Hardware- oder Peripherie-Einheiten wie Flash-Speicher, gleichwertiger nicht flüchtiger Arbeitsspeicher oder optische Plattenlaufwerke und dergleichen können zusätzlich zu oder anstelle der Hardware verwendet werden, die in den 1 bis 2 dargestellt ist. Außerdem können die Prozesse der veranschaulichenden Ausführungsformen auf ein Mehrfachprozessor-Datenverarbeitungssystem angewendet werden.
  • In einigen veranschaulichenden Beispielen kann das Datenverarbeitungssystem 200 ein Personal Digital Assistant (PDA) sein, der im Allgemeinen mit einem Flash-Arbeitsspeicher konfiguriert ist, um nicht flüchtigen Arbeitsspeicher zum Speichern von Betriebssystemdateien und/oder vom Benutzer generierten Daten bereitzustellen. Ein Bussystem kann aus einem oder mehreren Bussen bestehen, wie zum Beispiel einem Systembus, einem E/A-Bus und einem PCI-Bus. Selbstverständlich kann das Bussystem unter Verwendung jedes Typs von Kommunikationsstruktur oder -architektur umgesetzt werden, die eine Übertragung von Daten zwischen verschiedenen Komponenten oder Einheiten bereitstellen, die mit der Struktur oder Architektur verbunden sind.
  • Eine Datenübertragungseinheit kann eine oder mehrere Einheiten umfassen, die zum Übertragen und Empfangen von Daten verwendet wird bzw. werden, wie zum Beispiel ein Modem oder ein Netzwerkadapter. Ein Arbeitsspeicher kann zum Beispiel der Hauptarbeitsspeicher 208 oder ein Cachespeicher wie beispielsweise der Cachespeicher sein, der in North-Bridge und dem Arbeitsspeicher-Controller-Hub 202 zu finden ist. Eine Verarbeitungseinheit kann einen oder mehrere Prozessoren oder CPUs umfassen.
  • Die dargestellten Beispiele in 1 bis 2 und die oben beschriebenen Beispiele sind so aufzufassen, dass sie keinerlei Einschränkungen der Architektur implizieren. Zum Beispiel kann das Datenverarbeitungssystem 200 zusätzlich zum Aufweisen einer Form als mobile oder Wearable-Einheit auch ein Tablet-Computer, ein Laptop-Computer oder eine Telefoneinheit sein.
  • In Fällen, in denen ein Computer- oder Datenverarbeitungssystem als eine virtuelle Maschine, eine virtuelle Einheit oder eine virtuelle Komponente beschrieben wird, arbeitet die virtuelle Maschine, die virtuelle Einheit oder die virtuelle Komponente in der Art und Weise des Datenverarbeitungssystems 200 durch Verwenden einer virtualisierten Erscheinungsform von einigen oder allen Komponenten, die in dem Datenverarbeitungssystem dargestellt sind. Zum Beispiel offenbart sich in einer virtuellen Maschine, einer virtuellen Einheit oder einer virtuellen Komponente die Verarbeitungseinheit 206 als eine virtualisierte Instanz von allen oder einer gewissen Anzahl von Hardware-Verarbeitungseinheiten 206, die in einem Host-Datenverarbeitungssystem verfügbar sind. Der Hauptarbeitsspeicher 208 offenbart sich als eine virtualisierte Instanz von allen oder einigen Abschnitten des Hauptarbeitsspeichers 208, die in dem Host-Datenverarbeitungssystem verfügbar sind. Die Festplatte 226 offenbart sich als eine virtualisierte Instanz von allen oder einigen Abschnitten der Festplatte 226, die in dem Host-Datenverarbeitungssystem verfügbar sind. Das Host-Datenverarbeitungssystem wird in solchen Fällen durch das Datenverarbeitungssystem 200 dargestellt.
  • Unter Bezugnahme auf 3 stellt diese Figur einen Datenflussgraphen mit einem Datentransfer zwischen Knoten in dem Datenverarbeitungssystem 200 dar. 3 wird ohne Modifizierungen durch Arbeitsspeicher-Einsparungen dargestellt, wie durch diese Erfindung vorgeschlagen, die in späteren Figuren beschrieben werden. Die in 3 dargestellten Knoten sind einige der Knoten, die in der Praxis für neuronale Netzwerke auftreten können. In noch weiteren Ausführungsformen kann ein Datenflussgraph aus über 1000 Knoten oder mehr bestehen. Die Knoten in 3 und in den noch zu beschreibenden restlichen Figuren, nehmen Datenelemente (Tensoren) als Eingaben auf und bearbeiten diese Daten, um an ihren Ausgaben neue Daten zu erzeugen. Ein Knoten kann ausgeführt werden, sobald alle seiner Eingabedaten verfügbar sind. Knoten, die Ausgabedaten erzeugen, sind bereits entsprechend ausgeführt worden. Der Quellknoten 300 kann Daten empfangen und kann seine Ausgabedaten zu einer Mehrzahl von Knoten in dem Datenverarbeitungssystem 200 übertragen. Zum Beispiel kann der Quellknoten 300 seine Ausgabedaten zu einem zweiten Knoten 302 übertragen. Der zweite Knoten 302 kann seine Ausgabedaten auch zu einem dritten Knoten 304 übertragen. Ferner kann der dritte Knoten 304 seine Ausgabedaten zu einem vierten Knoten 306 übertragen. Der vierte Knoten 306 kann seine Ausgabedaten, die er von dem dritten Knoten 304 empfangen hat, zu einem fünften Knoten 308 übertragen. Der Quellknoten 300 überträgt seine Ausgabedaten auch zu dem fünften Knoten 308 und einem Zielknoten 310. Der fünfte Knoten 308 überträgt seine Ausgabedaten, die er von dem vierten Knoten 306 und dem Quellknoten 300 empfangen hat, auch an den Zielknoten 310. Der Prozess eines Datentransfers zwischen den Knoten in dem Datenflussgraphen kann nach Bedarf wiederholt werden. Die Knoten, die Daten übertragen, haben Abschlusszeiten. Abschlusszeiten beziehen sich auf die Zeit, zu der die Berechnung der Daten an dem Knoten beendet und für die anderen Knoten verfügbar ist. Slack-Zeiten beziehen sich auf die Zeitdauer, um die die Ankunft einer bestimmten Eingabe verzögert werden könnte, ohne zu verursachen, dass die gesamte Operation verzögert wird, oder wie lange die Daten an der Eingabe des Knotens warten, bis die Daten für die Berechnung verwendet werden.
  • Unter Bezugnahme auf 4 stellt diese Figur einen Datenflussgraphen mit ähnlichen Konfigurationen wie 3 dar. Außerdem führt 4 Teilgraph-Einfügungen für Arbeitsspeicher-Reduzierung und Arbeitsspeicher-Wiederherstellung ein. GPUs in dem Datenverarbeitungssystem 200 können oft nicht den erforderlichen Arbeitsspeicher aufweisen, um bestimmte Berechnungen oder Funktionen durchzuführen, die zusätzlichen Arbeitsspeicherplatz erfordern. Infolgedessen kann eine GPU zum Beispiel Daten, die den erforderlichen Arbeitsspeicherplatz in Anspruch nehmen, in die CPU verschieben. Der Arbeitsspeicher-Reduzierungsknoten 301 veranschaulicht die GPU, die Daten in einen CPU transferiert, um die notwendigen Funktionen oder Berechnungen durchzuführen, die den zusätzlichen Arbeitsspeicherplatz erfordern. Der zweite Knoten 302 kann sofort nach dem Knoten 300 ausgeführt werden und dadurch Arbeitsspeicherplatz für seine eigenen Ausgabedaten zuweisen, während der Knoten 301 zur selben Zeit damit beschäftigt sein kann, Daten in den CPU-Arbeitsspeicher zu kopieren. Nachdem der Knoten 301 sein Kopieren beendet hat und den durch seinen Eingabetensor belegten Arbeitsspeicher freigibt, hindert den bzw. die Teilgraph-Knoten 312 nichts mehr daran, sofort mit seiner bzw. ihrer eigenen Arbeitsspeicher-Wiederherstellungsaktion zu beginnen und die soeben gespeicherten Daten wieder aus der CPU in die GPU zurückzubringen.
  • Immer noch unter Bezugnahme auf 4 erfolgt eine identische Serie von Ereignissen beim zweiten Aufruf eines Teilgraphen einer Arbeitsspeicher-Reduzierung/Wiederherstellung auf der rechten Seite von 4, an dem der dritte Knoten 304, die Teilgraph-Knoten 311 und 322, der vierte Knoten 306 beteiligt sind. Der dritte Knoten 304 überträgt seine Ausgabedaten zu dem bzw. den Teilgraph-Knoten 311. Der bzw. die Teilgraph-Knoten 311 verschiebt bzw. verschieben die Daten zu dem bzw. den Teilgraph-Knoten 322. Der bzw. die Teilgraph-Knoten 322 verschiebt bzw. verschieben die Daten zu einem vierten Knoten 306. Der vierte Knoten 306 überträgt seine Ausgabedaten zu einem fünften Knoten 308. Der fünfte Knoten 308 empfängt Daten von dem bzw. den Teilgraph-Knoten 312. Der fünfte Knoten 308 überträgt seine Ausgabedaten zu dem Zielknoten 310. In einer parallelen Ausführung fährt der bzw. fahren die Teilgraph-Knoten 312 damit fort, Daten zu dem Zielknoten 310 zu verschieben, wenn der fünfte Knoten 308 seine Ausgabedaten an den Zielknoten 310 überträgt.
  • Unter Bezugnahme auf 5 wurde bestimmt, dass die Nutzung der Daten an den Knoten 416 und 418 keine Eile hat und daher durch eine Arbeitsspeicher-Reduzierungsaktion verzögert werden kann, die durch den bzw. die Teilgraph-Knoten 401 dargestellt wird. Diese Aktion erfordert eine Entsprechung in der Form einer Arbeitsspeicher-Wiederherstellungsaktion, die durch den bzw. die Teilgraph-Knoten 413 dargestellt wird. Ein Ziel des eingefügten Teilgraphen, einschließlich der Teilgraph-Knoten 401 und 413, ist ein Entlasten des GPU-Arbeitsspeichers von der Notwendigkeit, die Daten des Ausgabetensors des Knotens 400 über einen langen Zeitraum zu speichern. Nachdem der Knoten 402 diesen Tensor in Anspruch genommen hat, wird dieser erst wieder benötigt, wenn der Knoten 416 ausgeführt wird. Es gibt drei weitere zusätzliche Vorgaben, die einen Bestandteil des eingefügten Teilgraphen bilden, und zwar die zusätzlichen Steuerabhängigkeitskanten, die mit den Wörtern „SERIALISIERUNG“ und „VORABRUF“ gekennzeichnet sind, die in dem Datenflussgraphen durch die gestrichelten Pfeile dargestellt werden. Die erste ist eine Kante von dem bzw. den Teilgraph-Knoten 401 zum Knoten 402.
  • Immer noch unter Bezugnahme auf 5 besteht eine Bedeutung einer Steuerabhängigkeitskante von einem Knoten A zu einem Knoten B darin, eine Ausführung des Knotens B vom Knoten A abhängig zu machen. In einer Ausführungsform muss der Knoten B mit dem Beginn seiner Operation warten, bis der Knoten A seine Operation beendet hat. Daher kann eine Steuerabhängigkeitskante als eine Datenausgabe eines Knotens A an die Eingabe des abhängigen Knotens B betrachtet werden, wobei keine tatsächlichen Daten transferiert werden, stattdessen aber eine Abschlussmeldung signalisiert wird. Der Grund für ein Einfügen der Steuerabhängigkeitskante von dem bzw. den Teilgraph-Knoten 401 zu dem zweiten Knoten 402 besteht darin, sicherzustellen, dass die Ausführung des Knotens 402 verzögert wird, bis die Arbeitsspeiche-Reduzierung durch den bzw. die Teilgraph-Knoten 401 beendet ist. Andernfalls würde der Knoten 402 sofort ausgeführt werden, nachdem der Quellknoten 400 ausgeführt worden ist, und würde zusätzlichen GPU-Arbeitsspeicher für einen eigenen Ausgabetensor zuweisen. Dies wird durch die „SERIALISIERUNGS“- Kante von dem bzw. den Teilgraph-Knoten 401 zum Knoten 402 vermieden. Der bzw. die Teilgraph-Knoten 401 und der Knoten 402 werden garantiert der Reihe nach ausgeführt. Der bzw. die Teilgraph-Knoten 401 beendet bzw. beenden ihre Ausführung vor dem Knoten 402. Der Knoten 402 kann seine Ausgabedaten zu einem Knoten 404 übertragen. Der Knoten 404 kann seine Ausgabedaten auch zu einem Knoten 406 und einem Knoten 414 übertragen. Identische Rollen spielt der bzw. spielen die Teilgraph-Knoten 411 und der Knoten 408 als der bzw. die Teilgraph-Knoten 401 und der Knoten 402.
  • Immer noch unter Bezugnahme auf 5, unter Bezugnahme auf den Arbeitsspeicher-Wiederherstellungsknoten 413, würde dieser ohne weitere gegenteilige Vorgaben sofort ausgeführt werden, nachdem der bzw. die Teilgraph-Knoten 401 die Ausführung beendet hat bzw. haben. Dies würde jedoch den Zweck der Arbeitsspeicher-Reduzierung vereiteln. In einer Ausführungsform kann es obligatorisch sein, die Ausführung des bzw. der Teilgraph-Knoten 413 zu verzögern, bis die Knoten, die die Daten als Eingabe erfordern (die Knoten 416 und 418) zur Ausführung bereit sind. Eine Steuerabhängigkeitskante wird daher als Eingabe für den bzw. die Teilgraph-Knoten 413 benötigt, sodass der bzw. die Teilgraph-Knoten 413 auf den Abschluss eines Steuerknotens wartet bzw. warten. Der Steuerknoten kann weder der Knoten 416 noch der Knoten 418 sein, da die zusätzliche Abhängigkeitskante in dem Graphen einen Zyklus erstellen würde, der nicht gestattet werden kann. Der Steuerknoten sollte irgendein dem Knoten 416 vorgelagerter Knoten sein. Der Knoten 410 überträgt seine Ausgabedaten zu einem Knoten 412. Der Knoten 412 überträgt seine Ausgabedaten zu dem Knoten 414. Der Knoten 414 wird dementsprechend ausgewählt, um eine „VORABRUF“-Kante auf den bzw. die Teilgraph-Knoten 413 anzuwenden. Sobald der Knoten 414 seine Operation beendet, gibt er seinen Tensor an den Knoten 416 aus, und signalisiert gleichzeitig dem Teilgraph-Knoten über die „VORABRUF“-Kante, dass der Teilgraph-Knoten 413 seine Wiederherstellungsaktion beginnen kann. Die Initiierung der Wiederherstellungsaktion sollte derart erfolgen, dass zum Zeitpunkt ihres Abschlusses der Knoten bzw. die Knoten, der bzw. die auf die wiederhergestellten Daten wartet bzw. warten, zur Ausführung bereit sind, das heißt, dass Daten für andere Eingabe dieser Knoten bereits angekommen sind.
  • Unter Bezugnahme auf 5 wird eine dritte Steuerabhängigkeitskante, die zweite, die mit „SERIALISIERUNG“ gekennzeichnet ist, in 5 so dargestellt, dass sie vom Knoten 412 zum Teilgraph-Knoten 413 verläuft. Sie stellt für den Teilgraph-Knoten 413 eine zweite Voraussetzung für den Beginn seiner Wiederherstellungsaktion bereit. Der Zweck ist, anschließende Wiederherstellungsaktionen zu serialisieren, wobei in diesem Fall die Wiederherstellungsaktion der Teilgraph-Knoten 423 und 413 beteiligt ist. Der bzw. die Teilgraph-Knoten 423 stellt bzw. stellen einen Tensor wieder her, der von dem Knoten 412 in Anspruch genommen wird. Sobald der Knoten 412 seine Ausführung beendet hat (und somit Arbeitsspeicher für seine Eingabetensoren freigegeben worden sind), erlaubt er dem bzw. den Teilgraph-Knoten 413, mit der Ausführung zu beginnen, aber nur, wenn alle anderen Eingaben ebenfalls verfügbar sind. Der Knoten 413 muss eine Weile länger darauf warten, dass sein „VORABRUF“-Signal von dem Knoten 414 kommt. Nach dem Empfang stellt bzw. stellen der bzw. die Teilgraph-Knoten 413 ihren Tensor wieder her und senden ihn an die Knoten 416 und 418. Für den Knoten 416 sind jetzt alle Eingaben verfügbar und daher wird er ausgeführt, wobei der Ausgabetensor erzeugt wird, den der Knoten 418 als seine Eingabe benötigt. Für den Knoten 418 sind jetzt ebenfalls seine Eingabedaten verfügbar und er wird ausgeführt.
  • Immer noch unter Bezugnahme auf 5 spielen die beiden Steuerabhängigkeiten, die auf den Knoten 413 zielgerichtet sind, verschiedene Rollen. Die „VORABRUF“-Abhängigkeit stellt sicher, dass der bzw. die Teilgraph-Knoten 413 die Daten, die durch den Knoten 410 reduziert worden sind, nicht sofort wiederherstellt bzw. wiederherstellen. Es besteht eine Verzögerung, bis die Knoten, die auf die wiederhergestellten Daten warten, an ihren anderen Eingaben bereit sind. Die „SERIALISIERUNGS“-Abhängigkeit stellt sicher, dass nicht zwei Wiederherstellungen gleichzeitig auftreten, was für alle zur selben Zeit wiederhergestellten Tensoren eine zu große Arbeitsspeichernutzung verursachen kann. In einer veranschaulichenden Ausführungsform kann festgestellt werden, dass das „VORABRUF“-Signal in Bezug auf das „SERIALISIERUNGS“-Signal dominant ist, da der „VORABRUF” später als die „SERIALISIERUNG“ initiiert wird. In noch anderen veranschaulichenden Ausführungsformen kann das „SERIALISIERUNGS”-Signal gegenüber dem VORABRUF“-Signal dominant sein.
  • Unter Bezugnahme auf 6 wird eine Ausführungsform dargestellt, in der eine GPU Daten in eine CPU verschiebt, um Arbeitsspeicherplatz freizugeben, um eine oder mehrere Funktionen oder Berechnungen durchzuführen. Serialisierung und Vorabruf werden wie in 5 verwendet.
  • Immer noch unter Bezugnahme auf 6 wird ein spezieller Aufruf eines eingefügten Teilgraphen dargestellt, der die Arbeitsspeicher-Reduzierungs- und - Wiederherstellungsaktionen erledigt. Hier wird die Arbeitsspeicher-Reduzierungsoperation durch einen einzelnen Knoten dargestellt, dessen Operation darin besteht, seinen eingehenden Tensor aus dem GPU-Arbeitsspeicher in den CPU-Arbeitsspeicher zu kopieren. Die Daten, die aus dem GPU-Arbeitsspeicher in den CPU-Arbeitsspeicher ausgelagert werden, können eine Auslagerungsaktion sein. Der GPU-Arbeitsspeicher, der die Daten ursprünglich enthält, kann jetzt freigegeben werden, nachdem die Kopieraktion beendet worden ist. Der Knoten 501, der diese Aktion darstellt, wurde mit „IN CPU KOPIEREN“ („COPY TO CPU“) gekennzeichnet. Die Entsprechung zu dieser Aktion wird durch den Wiederherstellungsknoten 507 erstellt, der mit „AUS CPU KOPIEREN“ („COPY FROM CPU“) gekennzeichnet ist. Der Zweck ist, den Tensor aus dem CPU-Arbeitsspeicher wieder zurück in den GPU-Arbeitsspeicher zu kopieren. Bevor mit dem Kopieren begonnen wird, muss der GPU-Arbeitsspeicher zum Aufnehmen des wiederhergestellten Tensors zugewiesen werden. Danach kann der CPU-Arbeitsspeicher, der diesen Tensor enthält, freigegeben werden.
  • Unter Bezugnahme auf 6 empfängt ein Quellknoten 500 Daten und überträgt die Daten zu dem Knoten 501 und einem zweiten Knoten 502. Die Arbeitsspeicher-Reduzierung beginnt an der Stelle, an der der Knoten 501, der Steuerknoten, eine Steuerabhängigkeitskante (eine mit den gepunkteten Linien und einem Pfeil veranschaulichte „SERIALISIERUNG“) auf dem zweiten Knoten 502 oder dem abhängigen Knoten bestätigt. Die Ausführung des zweiten Knotens 502 muss warten, bis der Knoten 501 seine Ausführung beendet hat. Die Ausführung des Knotens 501 und des zweiten Knotens 502 wird dementsprechend serialisiert. Der zweite Knoten 502 überträgt seine Ausgabedaten zu einem weiteren Knoten. Ein weiterer Knoten (nicht dargestellt) kann eine Steuerabhängigkeitskante (veranschaulicht durch „SERIALISIERUNG“) auf den Knoten 507 anwenden, um sicherzustellen, dass der Knoten 507 ein Übertragen der Daten ausführt, die nach einer Ausführung des Übertragens der Ausgabedaten des anderen Knotens wiederhergestellt werden sollen. Ein dritter Knoten 504 kann seine Ausgabedaten zu einem vierten Knoten 506 übertragen. Der vierte Knoten 506 kann eine Steuerabhängigkeitskante (veranschaulicht durch „VORABRUF“) auf den Knoten 507 anwenden. Dementsprechend wird ein Übertragen der wiederherzustellenden Daten zu der GPU durch den Knoten 507 verzögert, bis der vierte Knoten 506 seine Ausgabedaten an den Zielknoten 508 übertragen hat. Nach der Ausführung des vierten Knotens 506 überträgt der Knoten 507 die Daten zu dem Zielknoten 508.
  • Unter Bezugnahme auf 7 wird ein weiterer Datenflussgraph veranschaulicht, der Datentransfer und Arbeitsspeicher-Verwaltung veranschaulicht. Eine GPU kann nicht nur entscheiden, Daten in eine CPU zu verschieben, um den erforderlichen Arbeitsspeicherplatz freizugeben, um eine oder mehrere große Funktionen oder Berechnungen durchzuführen. Die GPU kann auch entscheiden, die Daten auf einen Bruchteil zu komprimieren (d.h. von 32 Bit auf 16 Bit, von 32 Bit auf 8 Bit usw.), um den erforderlichen Arbeitsspeicherplatz zu erhalten, ohne die Daten in eine CPU zu verschieben. In anderen veranschaulichenden Ausführungsformen kann die GPU ihre Daten auf verschiedene Weise komprimieren. In dieser veranschaulichenden Ausführungsform komprimiert die GPU Daten wie beispielsweise große Tensoren von 32-Bit-Gleitkommazahlen auf 16-Bit-Gleitkommazahlen (siehe 11). Mit anderen Worten, die GPU kann die Daten von 32 Bit auf 16 Bit komprimieren und Arbeitsspeicherplatz freigeben, um Funktionen und/oder Berechnungen durchzuführen.
  • Immer noch unter Bezugnahme auf 7 empfängt der Quellknoten 600 Eingabedaten und sendet die Daten zu dem Knoten 601 und einem zweiten Knoten 602. Der Knoten 601 ist der Steuerknoten, der die Steuerabhängigkeitskante („SERIALISIERUNG“) anwendet, und der zweite Knoten 602 ist der abhängige Knoten. Der zweite Knoten 602 wartet, bis der Knoten 601 seine Ausführung beendet hat. Der zweite Knoten 602 überträgt seine Ausgabedaten, nachdem der Knoten 601 die Daten komprimiert hat, um Arbeitsspeicherplatz freizugeben. Ein weiterer Knoten (nicht dargestellt) kann eine Steuerabhängigkeitskante („SERIALISIERUNG“) auf dem Knoten 606 bestätigen. Der Knoten 606 wartet mit dem Dekomprimieren der Daten, bis der andere Knoten seine Ausführung beendet hat. Der dritte Knoten 609 empfängt Daten und überträgt seine Ausgabedaten zu einem vierten Knoten 605. Der vierte Knoten 605 kann eine Steuerabhängigkeitskante („VORABRUF“) auf dem bzw. den Teilgraph-Knoten 606 bestätigen. Der Knoten 606 wartet mit dem Dekomprimieren und Wiederherstellen der Daten, bis der vierte Knoten 605 seine eigene Ausführung beendet und seine Ausgabedaten zu dem Zielknoten 607 übertragen hat. Nach der Ausführung des vierten Knotens 605 kann der Knoten 606 seine Ausführung beenden. Die Daten können dekomprimiert und zu dem Zielknoten 607 übertragen werden.
  • Unter Bezugnahme auf 8 kann die GPU Daten komprimieren und die komprimierten Daten in die CPU transferieren, um zusätzlichen Arbeitsspeicherplatz freizugeben. Eine Arbeitsspeicher-Reduzierung kann dort erfolgen, wo die GPU Daten komprimiert und die komprimierten Daten an die CPU überträgt, bevor ein anderer Knoten seine Daten zu einem nächsten Knoten überträgt. Eine Arbeitsspeicher-Reduzierung kann erfolgen, wobei ein Dekomprimieren der Daten und Zurückübertragen der Daten zu der GPU durch die CPU verzögert wird, bis der Zielknoten die Daten benötigt.
  • Immer noch unter Bezugnahme auf 8 empfängt der Quellknoten 700 Daten und überträgt die Daten zu einem Knoten 701 und einem zweiten Knoten 702. Der Knoten 701 wendet eine Steuerabhängigkeitskante auf den zweiten Knoten 702 an. Die Ausführung des zweiten Knotens 702 muss warten, bis der Knoten 701 Daten komprimiert hat und die komprimierten Daten übertragen und die komprimierten Daten in die CPU kopiert hat. Ein Knoten 707 ist Teil der Wiederherstellungsstruktur. Die Ausführung des bzw. der Teilgraph-Knoten 701 und des zweiten Knotens 702 wird dementsprechend serialisiert. Die GPU kann den zusätzlichen Arbeitsspeicherplatz zum Durchführen von einer oder mehreren Funktionen oder Berechnungen verwenden. Der zweite Knoten 702 kann seine Ausgabedaten zu einem nächsten Knoten (nicht dargestellt) übertragen. Ein Knoten (nicht dargestellt) kann eine Steuerabhängigkeitskante auf den Knoten 707 anwenden, der die komprimierten Daten auf der CPU enthält. In einer Ausführungsform muss der Knoten 707 mit dem Zurückkopieren der komprimierten Daten in die GPU warten, bis die Steuerabhängigkeit durch den anderen Knoten aktiviert wird. Der Knoten 707 beendet die Ausführung des Zurückkopierens der komprimierten Daten in die GPU, nachdem die Ausführung des anderen Knotens beendet ist.
  • Unter Bezugnahme auf 8 empfängt ein dritter Knoten 704 die Daten und überträgt seine Ausgabedaten zu einem vierten Knoten 706. Der vierte Knoten 706 führt eine Steuerabhängigkeitskante auf dem Knoten 707 aus. Der Knoten 707 wartet, um die Daten zurück zu kopieren und die Daten an den Knoten zu übertragen, der mit „In FP32 DEKOMPRIMIEREN“) („UNCOMPRESS to FP32“) gekennzeichnet ist. Sobald beide Steuerabhängigkeitseingaben erfüllt sind, kopiert der Knoten 707 die Daten aus dem CPU-Arbeitsspeicher in den GPU-Arbeitsspeicher zurück und überträgt die Daten, die dekomprimiert werden sollen. Nach dem Dekomprimieren werden die wiederhergestellten Daten dem Knoten 708 verfügbar gemacht.
  • Unter Bezugnahme auf 9 können Situationen entstehen, in denen die Wiederherstellungsaktion dupliziert werden sollte, um verschiedene Zielknoten zu bedienen. Obwohl die Arbeitsspeicher-Reduzierungsaktion, die durch einen Knoten 801 dargestellt wird, einmalig ist, wird in diesem Fall durch experimentelle Daten festgestellt, dass zwei getrennte Wiederherstellungsaktionen der Daten vorteilhaft sind, die durch die Knoten 813 und 807 dargestellt werden. In einer veranschaulichenden Ausführungsform kann die GPU dieselben Daten von der CPU nochmals so oft wie erforderlich abrufen, um zusätzlichen Arbeitsspeicherplatz freizugeben, um Berechnungen und/oder andere Funktionen durchzuführen.
  • Unter Bezugnahme auf 9 überträgt ein Quellknoten 800 Daten zu dem Knoten 801 und einem zweiten Knoten 802. Die Serialisierung wird durch ein Hinzufügen einer Steuerabhängigkeitskante von dem Knoten 801 zu dem zweiten Knoten 802 durchgesetzt. Der Knoten 801 kopiert die Daten in den CPU-Arbeitsspeicher. Die Ausführung des Knotens 801 und des zweiten Knotens 802 wird serialisiert, wobei der zweite Knoten 802 seine Ausgabedaten nach der Ausführung des Knotens 801 zu einem nächsten Knoten (nicht dargestellt) überträgt. Die Figur stellt ferner zwei Beispiele von Teilgraphen für Arbeitsspeicher-Wiederherstellung in Form der Knoten 807 und 813 dar. Beide Knoten 807, 813 haben zwei eingehende Steuerabhängigkeiten, die die Serialisierungs- und Vorabruf-Vorgaben erstellen, wie in den vorhergehenden Figuren beschrieben.
  • Unter weiterer Bezugnahme auf 9 empfängt ein dritter Knoten 804 Daten und überträgt seine Ausgabedaten zu einem vierten Knoten 806. Der vierte Knoten 806 kann eine Steuerabhängigkeitskante auf den Knoten 807 anwenden. Der Knoten 807 wartet mit dem Abrufen von Daten aus der CPU und dem Übertragen zu dem Zielknoten 808, bis der vierte Knoten 806 seine Ausführung beendet hat. Der Knoten 807 überträgt die wiederhergestellten Daten zu dem Zielknoten 808.
  • Unter Bezugnahme auf 9 sind an einer identischen Situation einer Wiederherstellung die Knoten 813, 814, 812 und 810 beteiligt. Dieselben Daten, die durch die Ausführung des Knotens 801 im CPU-Arbeitsspeicher gespeichert wurden, werden in die GPU durch den Knoten 813 zurückgeholt, sobald seine Steuerabhängigkeiten erfüllt worden sind, nachdem der nicht dargestellte Knoten ausgeführt wird und die „SERIALISIERUNGS“-Kante signalisiert, und auch die Ausführung des Knotens 812 die „VORABRUF“-Kante signalisiert. Der fünfte Knoten 810 kann auch Daten empfangen und seine Ausgabedaten zu dem sechsten Knoten 812 übertragen. Der sechste Knoten 812 ist die Quelle der „VORABRUF“-Steuerabhängigkeit für den Knoten 813. Die Wiederherstellung der CPU-Daten in der GPU wird verzögert, bis die Ausführung des sechsten Knotens 812 beendet ist. Dementsprechend überträgt der Knoten 813 die Daten zu dem Zielknoten 814.
  • Unter Bezugnahme auf 10A wird ein Ablaufplan eines beispielhaften Prozesses 1100 zum Bestimmen eines Einfügungspunkts für eine Reduzierungs- und Wiederherstellungsoperation dargestellt. Das Verfahren 1100 kann unter Verwendung eines Prozessors durch Ausführen von Programmieranweisungen durchgeführt werden, die auf einem konkreten Speichermedium gespeichert sind (zum Beispiel diejenigen, die in Verbindung mit 1 und 2 beschrieben worden sind).
  • In dieser Ausführungsform können einige durch einen Benutzer konfigurierbare Informationen angenommen werden. Erstens kann ein Schwellenwert thTTS für einen Timing-Slack eines Tensors (TTS) definiert werden; nur Tensoren mit Slack-Werten, die größer als der Schwellenwert sind, werden als Kandidaten für Einfügungspunkte berücksichtigt. Zweitens kann ein Schwellenwert thS für eine Tensorgröße definiert werden; nur Tensoren mit einer Größe (z.B. in Byte), die größer als der Schwellenwert ist, werden als Kandidaten für Einfügungspunkte berücksichtigt. Drittens kann ein Höchstwert N für die Anzahl der zu berücksichtigenden Einfügungen definiert werden.
  • Auf Grundlage dieser Annahmen werden an einem Block 1102 Tensor-Timing-Slacks (TTS) für einen Satz von Eingabetensoren (z.B. alle Eingabetensoren aller Datenflussgraphenknoten) über eine Timing-Analyse berechnet.
  • An einem Block 1104 wird eine Kandidatenliste SI aus den Eingabetensoren von Datenflussgraphenknoten mit TTS-Werten kompiliert, die größer als der thTTS sind, und mit Tensoren, deren Größe größer als der thS ist.
  • An einem Entscheidungsblock 1106 wird eine Bestimmung in Bezug darauf vorgenommen, ob die Größe der Kandidatenliste SI größer als N ist.
  • An einem Block 1108 (JA-Verzweigung des Entscheidungsblocks 1106) wird die Kandidatenliste SI in absteigender Reihenfolge nach Tensorgröße sortiert. Nur die obersten N Elemente in der Liste werden in der Liste beibehalten, und die zusätzlichen Tensoren werden aus der Kandidatenliste SI entfernt. Andere Sortier- oder Schwellenwertbildungsmechanismen können ebenfalls verwendet werden.
  • An einem Block 1110 (entweder NEIN-Verzweigung des Entscheidungsblocks 1106 oder Beendigung von Block 1108) wird die Kandidatenliste SI als die Liste von Kandidatenknoten für Einfügungspunkte einer Arbeitsspeicher-Reduzierungs- oder Arbeitsspeicher-Wiederherstellungsoperation gemäß Ausführungsformen der Erfindung zurückgegeben, die in Verbindung mit anderen Figuren beschrieben worden sind.
  • Unter Bezugnahme auf 10B wird ein Ablaufplan eines beispielhaften Prozesses 1200 zum Durchführen einer Timing-Analyse dargestellt. Das Verfahren 1200 kann unter Verwendung eines Prozessors durch Ausführen von Programmieranweisungen durchgeführt werden, die auf einem konkreten Speichermedium gespeichert sind (zum Beispiel diejenigen, die in Verbindung mit 1 und 2 beschrieben worden sind).
  • Unter folgender Bezugnahme auf 10B beginnt der Prozess gemäß der dargestellten Ausführungsform. In einem Schritt 1202 initialisiert der Prozess 1200 TAT-, TRT- und TTS-Werte so, dass sie allen Datenflussgraphenknoten unbekannt sind. In einem Schritt 1204 definiert der Prozess 1200 einen Datensatz Q wie folgt: Q soll der Satz aller Datenflussgraphen-Quellknoten sein. Der Prozess 1200 richtet ferner TAT-, TRT- und TTS-Werte von Elementen von Q auf Null (0) ein.
  • In einem Schritt 1206 prüft der Prozess 1200, ob Q leer ist. Falls ja, endet der Prozess (Schritt 1218). Falls jedoch nein (d.h. wenn Q nicht leer ist), wählt der Prozess 1200 (Schritt 1208) ein willkürliches Element q von Q und schließt q aus Q aus.
  • In einem Schritt 1210 bestimmt der Prozess 1200, ob alle Senkeneingaben s von q verarbeitet sind. Falls ja, prüft der Prozess 1200 das nächste q (im Schritt 1206 durchgeführte Prüfung). Falls jedoch nein, verarbeitet der Prozess s wie in einem Schritt 1212 vorgesehen, wobei der Prozess 1200 die TAT von s so einrichtet, dass sie gleich der TAT des Knotens q ist. Der Prozess 1200 definiert ferner (in Schritt 1212), dass n der Knoten ist, zu dem die Knoteneingabe gehört. Der Prozess 1200 bestimmt (in einem Schritt 1214), ob alle Eingaben i des Knotens n einen bekannten TAT-Wert haben. Falls nein, prüft der Prozess 1200 die nächsten s und wiederholt sie als While-Schleife, um Rest-Senkeneingaben s von q zu verarbeiten, wie im Schritt 1210 identifiziert.
  • Falls jedoch ja (Bestimmung im Schritt 1214), fährt der Prozess 1200 mit einem Schritt 1216 fort, in dem der Prozess die TRT des Knotens n als den Höchstwert der TATs seiner Eingaben einrichtet; den TTS jeder Eingabe 1 als die Differenz der TRT von n und die TAT von i einrichtet, und die TAT des Knotens n als seine TRT einrichtet, die mit der entsprechenden Knotenverzögerung erhöht wurde; und nimmt n in Q auf.
  • Der Prozess 1200 endet (Schritt 1218), wenn Q leer ist (bestimmt in Schritt 1206), wobei TAT-, TRT- und TTS-Werte für alle Knoten durch die oben beschriebenen Schritte bestimmt worden sind.
  • In einer Ausführungsform durchquert die Timing-Analyse, wie im Prozess 1200 beschrieben, einen Datenflussgraphen von seinen Quellen zu Senken und berechnet TATs, TRTs und TTSs gemäß ihren Definitionen, die durch den Prozess umgesetzt wurden. Diese Berechnung wird auf zeitlich-lineare Weise in der Größe des Datenflussgraphen durchgeführt.
  • Im Folgenden wird unter Bezugnahme auf 11 ein Arbeitsspeicher-Profildiagramm einer GPU dargestellt, die oben in den veranschaulichenden Ausführungsformen beschrieben wurde. Eine GPU in den veranschaulichenden Ausführungsformen hat einen Arbeitsspeicher von 16 Gigabyte (GB). In anderen veranschaulichenden Ausführungsformen kann die GPU einen größeren Arbeitsspeicherplatz haben. Wenn die GPU ausgeführt wird und Funktionen und Berechnungen durchführt, wird für die beabsichtigten Funktionen und Berechnungen immer mehr Arbeitsspeicher zugewiesen, bis ein Spitzenwert erreicht wird, an dem kein Arbeitsspeicherplatz mehr übrig ist. Sobald der Spitzenwert erreicht ist, wird Arbeitsspeicher freigegeben, wobei der zuletzt zugewiesene Arbeitsspeicher zuerst freigegeben wird.
  • Unter Bezugnahme auf 12 wird ein Arbeitsspeicher-Profildiagramm einer GPU dargestellt, die oben in den veranschaulichenden Ausführungsformen beschrieben wurde. Wenn eine GPU entscheidet, die in ihr enthaltenen Daten zu komprimieren, um zusätzlichen Arbeitsspeicherplatz zu schaffen, wie oben in 7 und 8 gezeigt, werden die großen Datentensoren in der GPU von 32-Bit Gleitkommazahlen auf 16-Bit-Gleitkommazahlen oder von 32 Bit auf 16 Bit komprimiert. Infolgedessen wird die Hälfte des Arbeitsspeicherplatzes frei, und die Datenstapelgröße in dem Arbeitsspeicher wird verdoppelt, bevor der Arbeitsspeicher in der GPU seinen Spitzenwert erreicht.
  • Unter Bezugnahme auf 13 wird ein Ablaufplan eines beispielhaften Prozesses 1000 zum Durchführen verschiedener Funktionen gemäß einer Ausführungsform dargestellt. An einem Block 1002 erfolgt eine Bestimmung, eine Arbeitsspeicher-Reduzierungsaktion auf den bzw. die Teilgraph-Knoten A und den Knoten P anzuwenden, indem eine Arbeitsspeicher-Anforderung für Ausgabedaten identifiziert wird, die durch den Knoten P erzeugt werden sollen (zum Beispiel kann der Knoten A in dem Kontext von 5 auf den Teilgraph 401 verweisen, und der Knoten P kann auf den Knoten 402 verweisen). An einem Block 1004 überträgt ein Quellknoten Daten zu dem bzw. den Teilgraph-Knoten A und dem Knoten P. An einem Block 1006 wendet bzw. wenden der bzw. die Teilgraph-Knoten A eine Steuerabhängigkeitskante auf den Knoten P an. Die Ausführung des bzw. der Teilgraph-Knoten A und des Knotens P wird serialisiert. Der bzw. die Teilgraph-Knoten A wird bzw. werden vor dem Knoten P ausgeführt. Hier besteht die Operation des bzw. der Teilgraph-Knoten A darin, den eingehenden Tensor von dem GPU-Arbeitsspeicher in den CPU-Arbeitsspeicher zu kopieren. Die Daten, die aus dem GPU-Arbeitsspeicher in den CPU-Arbeitsspeicher ausgelagert werden, können eine Auslagerungsaktion sein. Der GPU-Arbeitsspeicher, der die Daten ursprünglich enthält, kann jetzt freigegeben werden, nachdem die Kopieraktion beendet worden ist. Die GPU kann den zusätzlichen Arbeitsspeicherplatz zum Durchführen von einer oder mehreren Funktionen oder Berechnungen verwenden. An einem Block 1008 überträgt der Knoten P seine Ausgabedaten zu einem Knoten Q. An einem Block 1010 wendet der Knoten Q eine Steuerabhängigkeitskante auf den bzw. die Teilgraph-Knoten B an. Die Steuerabhängigkeitskante stellt sicher, dass der bzw. die Teilgraph-Knoten B die Arbeitsspeicher-Wiederherstellungsaktion verzögert bzw. verzögern, bis der Knoten Q seine Ausführung beendet hat. Es besteht eine Verzögerung, bis die Knoten, die auf die wiederhergestellten Daten warten, an ihren anderen Eingaben bereit sind. An einem Block 1012 überträgt der Knoten Q seine Ausgabedaten zu dem Zielknoten. Ferner überträgt bzw. übertragen der bzw. die Teilgraph-Knoten B an einem Block 1014 die wiederhergestellten Daten zu dem Zielknoten.
  • Einige Ausführungsformen der Erfindung werden im Folgenden allgemeiner beschrieben. In der folgenden Beschreibung kann auf eine oder mehrere Figuren bei Bedarf direkt verwiesen werden, doch sollen die Ausführungsformen nicht als auf eine bestimmte Figur eingeschränkt verstanden werden.
  • Gemäß einer Ausführungsform der Erfindung wird ein Verfahren zum Verarbeiten eines Datenflussgraphen eines neuronalen Netzwerks bereitgestellt, der einen Satz von Knoten und einen Satz von Kanten aufweist (zum Beispiel wie oben unter den Definitionen 1 bis 5 definiert). Schritte des Verfahrens werden wie beschrieben durchgeführt, zum Beispiel in 10A und 10B, um einen Datenflussgraphen zu generieren oder einen Datenflussgraphen zu modifizieren, wie zum Beispiel in Verbindung mit 3 bis 9 beschrieben. Schritte des Verfahrens werden auf einer konkreten Speichereinheit (zum Beispiel als ein Computerprogrammprodukt) eines Computersystems gespeichert, wie beispielweise diejenigen, die in Verbindung mit 1 bis 2 beschrieben wurden.
  • Das Verfahren berechnet Tensor-Timing-Slacks (TTS) für einen Satz von Eingabetensoren, wobei eine Kandidatenliste (SI) von Eingabetensoren aus dem Satz von Eingabetensoren durch Verwenden von Eingabetensoren mit entsprechenden TTS-Werten kompiliert wird, die größer als ein Schwellenwert (thTTS) sind; die SI zum Beibehalten von Eingabetensoren gefiltert wird, deren Größe einen Schwellenwert (thS) erfüllt; und ein Einfügungspunkt für die Operation durch Verwenden der SI auf Grundlage des Filterns bestimmt wird.
  • Gemäß einer Ausführungsform des Verfahrens ist die Operation eine Kombination von einer Reduzierungsoperation und einer Wiederherstellungsoperation. Die Reduzierungsoperation weist eines oder beides von einer Arbeitsspeicheroperation eines Kopierens in eine Zentraleinheit (CPU) und einer Komprimierungsoperation auf. Die Wiederherstellungsoperation weist eines oder beides von einer Arbeitsspeicheroperation eines Kopierens aus der CPU und einer Dekomprimierungsoperation auf.
  • Gemäß einer Ausführungsform des Verfahrens weist ein Berechnen des TTS ein Durchführen einer Timing-Analyse durch Verwenden der Eingabetensoren auf.
  • Gemäß einer Ausführungsform des Verfahrens umfasst die Timing-Analyse: Initialisieren von Werten von Tensorankunftszeit (TAT), erforderlicher Tensorzeit (TRT) und Tensor-Timing-Slack (TTS) für die Eingabetensoren; für einen Satz von Eingabetensoren Q, wobei Q nicht leer ist, Durchführen von Schritten zum: Auswählen eines Knotens q in Q zum Ausschließen; Ausschließen von q aus Q; und Einrichten, für jeden Nachfolger-Eingabetensor s von q, der TAT von s, um der TAT von q zu entsprechen.
  • Gemäß einer Ausführungsform des Verfahrens weist das Initialisieren auf: Initialisieren der TAT-, TRT- und TTS-Werte auf einen unbekannten Wert oder auf Null.
  • Gemäß einer Ausführungsform des Verfahrens haben alle Eingaben eines Knotens n einen bekannten TAT-Wert, wobei n ein Knoten ist, für den s ein Eingabetensor ist, und wobei das Verfahren ferner für den Satz von Eingabetensoren Q ein Durchführen weiterer Schritte aufweist zum: Einrichten der TRT von n auf ein Maximum der TATs von Eingaben s von n; Einrichten des TTS jeder Eingabe i von n als eine Differenz der TRT von n, erhöht um eine Knotenverzögerung; und Wiederaufnehmen von n in Q.
  • Gemäß einer Ausführungsform des Verfahrens weist der Datenflussgraph ein Paar (N, E) auf, wobei N einen Satz von Knoten aufweist und E einen Satz von Hyperkanten aufweist, und wobei ein bestimmter Knoten in N einen oder mehrere Operatoren auf einem oder mehreren Tensoren umsetzt.
  • Gemäß einer Ausführungsform des Verfahrens weist der bestimmte Knoten ein Triplet (f, l, O) auf, wobei f eine Funktion eines Operators ist, der durch den bestimmten Knoten umgesetzt wird, 1 ein Satz von Eingabetensoren des bestimmten Knotens ist, und O ein Satz von Ausgaben des bestimmten Knotens ist, die auf Grundlage des Operators generiert wurden.
  • Gemäß einer Ausführungsform des Verfahrens definiert eine Hyperkante, wie ein Tensor von einem Operator, der den Tensor generiert, an einen Operator übergeben wird, der den Tensor als ein Argument verwendet.
  • Gemäß einer Ausführungsform des Verfahrens weist eine Hyperkante ein Paar (s, H) auf, wobei seine Knotenausgabe ist, und H ein Satz von Knoteneingaben ist.
  • Gemäß einer Ausführungsform des Verfahrens weist das Verfahren ferner ein Einfügen eines Teilgraph-Knotens auf, der der Operation entspricht, in den Datenflussgraphen.
  • Gemäß einer Ausführungsform des Verfahrens generiert das Einfügen einen neuen Datenflussgraphen oder modifiziert einen vorhandenen Datenflussgraphen.
  • Gemäß einer Ausführungsform des Verfahrens generiert das Einfügen eines neuen Datenflussgraphen, wobei der neue Datenflussgraphen einen vollständigen Datenflussgraphen oder einen teilweisen Datenflussgraphen aufweist.
  • Gemäß einer Ausführungsform des Verfahrens umfasst das Verfahren ferner: Verarbeiten des Satzes von Eingabetensoren durch Verwenden des Datenflussgraphen auf Grundlage des Einfügens; und Generieren von Ausgaben auf Grundlage des Verarbeitens.
  • Gemäß einer Ausführungsform des Verfahrens ist die Operation eine Arbeitsspeicher-Reduzierungsoperation, wobei das Verfahren ferner aufweist: Einfügen eines Teilgraph-Knotens einer Arbeitsspeicher-Reduzierung in die Arbeitsspeicher-Reduzierungsoperation.
  • Gemäß einer Ausführungsform des Verfahrens umfasst das Einfügen ferner: Verbinden, über eine erste Hyperkante, eines ersten Knotens mit dem Teilgraph-Knoten einer Arbeitsspeicher-Reduzierung, wobei der erste Knoten einem Quellknoten entspricht; und Verbinden, über eine zweite Hyperkante, des Teilgraph-Knotens einer Arbeitsspeicher-Reduzierung mit dem zweiten Knoten, wobei die zweite Hyperkante eine Serialisierungs-Hyperkante aufweist, und der zweite Knoten einem Zwischenknoten oder einem Zielknoten entspricht.
  • Gemäß einer Ausführungsform des Verfahrens weist das Einfügen ferner auf: Verbinden, über eine dritte Hyperkante, des ersten Knotens mit einem zweiten Knoten.
  • Gemäß einer Ausführungsform des Verfahrens ist die Operation eine Arbeitsspeicher-Wiederherstellungsoperation, wobei das Verfahren ferner aufweist: Einfügen eines Teilgraph-Knotens einer Arbeitsspeicher-Wiederherstellung in die Arbeitsspeicher-Wiederherstellungsoperation.
  • Gemäß einer Ausführungsform des Verfahrens umfasst das Einfügen ferner: Verbinden, über eine erste Hyperkante, eines ersten Knotens mit dem Teilgraph-Knoten einer Arbeitsspeicher-Wiederherstellung, wobei die zweite Hyperkante eine Serialisierungs-Hyperkante oder eine Vorabruf-Hyperkante aufweist; Verbinden, über eine zweite Hyperkante, des Teilgraph-Knotens einer Arbeitsspeicher-Wiederherstellung mit einem zweiten Knoten, wobei der zweite Knoten einem Zielknoten entspricht; und Verbinden, über eine dritte Hyperkante, eines Teilgraph-Knotens einer Arbeitsspeicher-Reduzierung mit dem Teilgraph-Knoten einer Arbeitsspeicher-Wiederherstellung.
  • Gemäß einer Ausführungsform des Verfahrens weist das Verfahren ferner ein Verbinden von zwei Knoten des Datenflussgraphen über eine Hyperkante auf, wobei das Verbinden eines aufweist von: einer direkten Verbindung über die Hyperkante zwischen den beiden Knoten; und einer indirekten Verbindung über einen oder mehrere zusätzliche Knoten und Hyperkanten zwischen den beiden Knoten.
  • Gemäß einer Ausführungsform des Verfahrens werden Schritte des Verfahrens wiederholt durchgeführt, um einen Satz von Teilgraph-Knoten in den Flussgraphen einzufügen, um mindestens eine Arbeitsspeicher-Reduzierungsoperation und mindestens eine Arbeitsspeicher-Wiederherstellungsoperation durchzuführen.
  • Gemäß einer Ausführungsform des Verfahrens weist ein Durchführen von Schritten des Verfahrens ein wiederholtes Einfügen eines Satzes von Hyperkanten in den Flussgraphen auf, wobei der Satz von Hyperkanten mindestens eine Serialisierungs-Hyperkante oder mindestens eine Vorabruf-Hyperkante oder mindestens eine Serialisierungs-Hyperkante und mindestens eine Vorabruf-Hyperkante aufweist.
  • Gemäß einer weiteren Ausführungsform der Erfindung wird ein Verfahren bereitgestellt. Das Verfahren wählt einen Einfügungspunkt in einen Datenflussgraphen für eine Operation auf Grundlage eines Satzes von Tensor-Timing-Slacks (TTS) und einer Kandidatenliste von Eingabetensoren (SI) aus.
  • In einer Ausführungsform weist das Verfahren ferner auf: Berechnen der Tensor-Timing-Slacks (TTS) für einen Satz von Eingabetensoren; Kompilieren der Kandidatenliste (SI) von Eingabetensoren aus dem Satz von Eingabetensoren durch Verwenden von Eingabetensoren mit entsprechenden TTS-Werten, die größer als ein Schwellenwert (thTTS) sind; Filtern der SI zum Beibehalten von Eingabetensoren, deren Größe einen Schwellenwert (thS) erfüllt; und Bestimmen eines Einfügungspunkts für eine Reduzierungs- und Wiederherstellungsoperation durch Verwenden der SI auf Grundlage des Filterns.
  • In einer Ausführungsform weist ein Berechnen des TTS ein Durchführen einer Timing-Analyse durch Verwenden der Eingabetensoren auf.
  • In einer Ausführungsform weist das Verfahren ferner ein Einfügen eines Teilgraph-Knotens, der der Operation entspricht, in den Datenflussgraphen auf.
  • In einer Ausführungsform generiert das Einfügen einen neuen Datenflussgraphen oder modifiziert einen vorhandenen Datenflussgraphen.
  • In einer Ausführungsform generiert das Einfügen einen neuen Datenflussgraphen, wobei der neue Datenflussgraph einen vollständigen Datenflussgraphen oder einen teilweisen Datenflussgraphen aufweist.
  • In einer Ausführungsform weist das Verfahren ferner auf: Verarbeiten des Satzes von Eingabetensoren durch Verwenden des Datenflussgraphen auf Grundlage des Einfügens; und Generieren von Ausgaben auf Grundlage des Verarbeitens.
  • Gemäß einer Ausführungsform der Erfindung wird ein Verfahren bereitgestellt. Das Verfahren weist auf: Bestimmen, eine Arbeitsspeicher-Reduzierungsaktion mit einem Teilgraph-Knoten A und einem Knoten P anzuwenden, indem eine Arbeitsspeicher-Anforderung für Ausgabedaten identifiziert wird, die durch den Knoten P erzeugt werden sollen; Übertragen von Daten von einem Quellknoten zu dem Teilgraph-Knoten A und dem Knoten P; Ermöglichen, dass der Teilgraph-Knoten A die Arbeitsspeicher-Reduzierungsaktion vor einer Ausführung des Knotens P durchführt, wobei die Arbeitsspeicher-Reduzierungsaktion veranlasst, dass ein zusätzlicher Arbeitsspeicherplatz für einen Grafikprozessor (GPU) verfügbar wird, um eine oder mehrere Funktionen durchzuführen; Veranlassen, dass ein Teilgraph-Knoten B eine Arbeitsspeicher-Wiederherstellungsaktion verzögert, bis ein Knoten Q seine Ausführung beendet hat; und Übertragen der Daten von einem zentralen Prozessor (CPU) des Teilgraph-Knotens B zu der GPU, um die Daten für die GPU wiederherzustellen
  • In einer Ausführungsform weist das Verfahren ferner ein Anwenden einer Steuerabhängigkeitskante auf den Knoten P auf, um dem Teilgraph-Knoten A ein Ausführen vor dem Knoten P zu ermöglichen.
  • In einer Ausführungsform weist das Verfahren ferner ein Bestimmen einer Einfügungsstelle für die Steuerabhängigkeitskante auf, wobei bestimmt wird, dass der Knoten P die Ausgabedaten, die größer als die Ausgabedaten sind, die durch den Knoten Q erzeugt werden, mit der Arbeitsspeicher-Anforderung erzeugt.
  • In einer Ausführungsform weist das Verfahren ein Anwenden einer Steuerabhängigkeitskante auf den Teilgraph-Knoten B auf, um die Arbeitsspeicher-Wiederherstellungsaktion zu verzögern, bis der Knoten Q seine Ausführung beendet hat.
  • In einer Ausführungsform weist das Verfahren ein Verzögern der Ausführung des Knotens P auf, bis die Arbeitsspeicher-Reduzierungsaktion beendet ist.
  • In einer Ausführungsform weist das Verfahren ein Durchführen einer Reihe von Berechnungen durch die GPU durch Verwenden des zusätzlichen Arbeitsspeicherplatzes auf.
  • In einer Ausführungsform weist das Verfahren ein Übertragen der Daten von dem Teilgraph-Knoten B zu einem Zielknoten auf, nachdem der Knoten Q seine Ausführung beendet.
  • In einer Ausführungsform weist das Verfahren ein Komprimieren der Daten auf, um den zusätzlichen Arbeitsspeicherplatz für die GPU zum Durchführen der einen oder der mehreren Funktionen zu erhalten.
  • In einer Ausführungsform weist das Verfahren ein Dekomprimieren der Daten vor einem Beenden der Arbeitsspeicher-Wiederherstellungsaktion auf.
  • In einer Ausführungsform weist das Verfahren ein Verzögern der Arbeitsspeicher-Wiederherstellungsaktion auf, bis die Daten von einem Zielknoten benötigt werden.
  • In einer Ausführungsform weist das Verfahren ein Dekomprimieren der Daten auf, nachdem der Knoten Q seine Ausführung beendet hat.
  • In einer Ausführungsform weist das Verfahren ein Wiederherstellen der Daten für die GPU auf, nachdem der Knoten Q seine Ausführung beendet hat.
  • In einer Ausführungsform weist das Verfahren ein Bestimmen einer Einfügungsstelle zum Anwenden einer Steuerabhängigkeitskante auf, um ein Durchführen einer zusätzlichen Arbeitsspeicher-Wiederherstellungsaktion zu gestatten.
  • In einer Ausführungsform weist das Verfahren ein Durchführen der zusätzlichen Arbeitsspeicher-Wiederherstellungsaktion in einem von der Arbeitsspeicher-Wiederherstellungsaktion zwischen dem Knoten Q und dem Teilgraph-Knoten B verschiedenen Zeitintervall auf.
  • In einer Ausführungsform weist das Verfahren auf: Komprimieren der Daten, um den zusätzlichen Arbeitsspeicherplatz für die GPU zu erstellen, um die eine oder die mehreren Funktionen durchzuführen; Kopieren der komprimierten Daten vor der Ausführung des Knotens P in die CPU; Übertragen der von dem Knoten P empfangenen Daten, nachdem die CPU die komprimierten Daten empfangen hat; und Durchführen der einen oder der mehreren Funktionen in der GPU durch Verwenden des erstellten zusätzlichen Arbeitsspeicherplatzes.
  • In einer Ausführungsform weist das Verfahren ein Bestimmen eines Zeitintervalls auf, das zum Verzögern der Arbeitsspeicher-Wiederherstellungsaktion benötigt wird, um die GPU daran zu hindern, die Daten vorzeitig von der CPU zurück zu empfangen.
  • Gemäß einer weiteren Ausführungsform der Erfindung kann ein durch einen Computer verwendbares Programmprodukt bereitgestellt werden. Das durch den Computer verwendbare Programmprodukt weist eine oder mehrere durch einen Computer lesbare Speichereinheiten und Programmanweisungen auf, die auf mindestens einer von der einen oder den mehreren Speichereinheiten gespeichert sind, wobei die Speicherprogrammanweisungen Programmanweisungen zum Durchführen von Schritten eines Verfahrens gemäß Ausführungsformen aufweisen, die durch diese Offenbarung bereitgestellt werden.
  • Gemäß einer weiteren Ausführungsform der Erfindung kann ein Computer bereitgestellt werden. Das System weist einen oder mehrere Prozessoren, einen oder mehrere durch einen Computer lesbare Arbeitsspeicher und eine oder mehrere durch einen Computer lesbare Speichereinheiten und Programmanweisungen auf, die auf mindestens einer von der einen oder den mehreren Speichereinheiten zur Ausführung durch mindestens einen von dem einen oder den mehreren Prozessoren über mindestens einen von dem einen oder den mehreren Arbeitsspeichern gespeichert sind, wobei der Speicher Programmanweisungen aufweist, um Schritte eines Verfahrens gemäß Ausführungsformen durchzuführen, die von dieser Offenbarung bereitgestellt werden.
  • In einem Datenflussgraphen in veranschaulichenden Ausführungsformen belegen die vorher berechneten Tensoren GPU-Arbeitsspeicher, bis die anderen Tensoren, die zur Knoten-Ausführung benötigt werden, bereit sind. Die zu früh berechneten Tensoren können entweder in einen großen CPU-Arbeitsspeicher verschoben oder komprimiert oder sogar aus dem GPU-Arbeitsspeicher gelöscht werden. Wenn diese Tensoren wieder benötigt werden, werden sie in den GPU-Arbeitsspeicher zurückgeholt, dekomprimiert oder neu berechnet. Je mehr Tensoren an einer Arbeitsspeicher-Erhaltung beteiligt sind, um so größer sind die Speichereinsparungen und um so größer ist der Datenflussgraph, der in demselben GPU-Arbeitsspeicher verarbeitet werden kann.
  • In einer Ausführungsform bestimmt das Verfahren, eine Arbeitsspeicher-Reduzierungsaktion mit einem Teilgraph-Knoten A und einem Knoten P anzuwenden, indem eine Arbeitsspeicheranforderung für Ausgabedaten identifiziert wird, die durch den Knoten P erzeugt werden sollen. Das Verfahren überträgt Daten von einem Quellknoten zu dem Teilgraph-Knoten A und dem Knoten P. Das Verfahren ermöglicht, dass der Teilgraph-Knoten A die Arbeitsspeicher-Reduzierungsaktion vor einer Ausführung des Knotens P durchführt, wobei die Arbeitsspeicher-Reduzierungsaktion veranlasst, dass ein zusätzlicher Arbeitsspeicherplatz für einen Grafikprozessor (GPU) verfügbar wird, um eine oder mehrere Funktionen durchzuführen. Das Verfahren veranlasst den Teilgraph-Knoten B, eine Arbeitsspeicher-Wiederherstellungsaktion zu verzögern, bis ein Knoten Q seine Ausführung beendet hat. Das Verfahren überträgt die Daten von einem zentralen Prozessor (CPU) des Teilgraph-Knotens B zu der GPU, um die Daten für die GPU wiederherzustellen.
  • In einer Ausführungsform wendet das Verfahren eine Steuerabhängigkeitskante auf den Knoten P an, um dem Teilgraph-Knoten A ein Ausführen vor dem Knoten P zu ermöglichen.
  • In einer Ausführungsform bestimmt das Verfahren eine Einfügungsstelle für die Steuerabhängigkeitskante, wobei der Knoten P bestimmt wird, der die Ausgabedaten, die größer als die Ausgabedaten sind, die durch den Knoten Q erzeugt werden, mit der Arbeitsspeicher-Anforderung erzeugt.
  • In einer Ausführungsform wendet das Verfahren eine Steuerabhängigkeitskante auf den Teilgraph-Knoten B an, um die Arbeitsspeicher-Wiederherstellungsaktion zu verzögern, bis der Knoten Q seine Ausführung beendet hat.
  • In einer Ausführungsform verzögert das Verfahren die Ausführung des Knotens P, bis die Arbeitsspeicher-Reduzierungsaktion beendet ist.
  • In einer Ausführungsform führt das Verfahren eine Reihe von Berechnungen durch die GPU durch Verwenden des zusätzlichen Arbeitsspeicherplatzes durch.
  • In einer Ausführungsform überträgt das Verfahren die Daten von dem Teilgraph-Knoten B zu einem Zielknoten, nachdem der Knoten Q seine Ausführung beendet.
  • In einer Ausführungsform komprimiert das Verfahren die Daten, um den zusätzlichen Arbeitsspeicherplatz für die GPU zum Durchführen der einen oder der mehreren Funktionen zu erhalten.
  • In einer Ausführungsform dekomprimiert das Verfahren die Daten vor einem Beenden der Arbeitsspeicher-Wiederherstellungsaktion.
  • In einer Ausführungsform verzögert das Verfahren die Arbeitsspeicher-Wiederherstellungsaktion, bis die Daten von einem Zielknoten benötigt werden.
  • In einer Ausführungsform dekomprimiert das Verfahren die Daten, nachdem der Knoten Q seine Ausführung beendet hat.
  • In einer Ausführungsform stellt das Verfahren die Daten für die GPU wieder her, nachdem der Knoten Q seine Ausführung beendet hat.
  • In einer Ausführungsform bestimmt das Verfahren eine Einfügungsstelle zum Anwenden einer Steuerabhängigkeitskante, um ein Durchführen einer zusätzlichen Arbeitsspeicher-Wiederherstellungsaktion zu gestatten.
  • In einer Ausführungsform führt das Verfahren die zusätzliche Arbeitsspeicher-Wiederherstellungsaktion in einem von der Arbeitsspeicher-Wiederherstellungsaktion zwischen dem Knoten Q und dem Teilgraph-Knoten B verschiedenen Zeitintervall durch.
  • In einer Ausführungsform komprimiert das Verfahren die Daten, um den zusätzlichen Arbeitsspeicherplatz für die GPU zum Durchführen der einen oder der mehreren Funktionen zu schaffen. Das Verfahren kopiert die komprimierten Daten vor der Ausführung des Knotens P in die CPU. Das Verfahren überträgt die von dem Knoten P empfangenen Daten, nachdem die CPU die komprimierten Daten empfangen hat. Das Verfahren führt die eine oder die mehreren Funktionen in der GPU durch Verwenden des erstellten zusätzlichen Arbeitsspeicherplatzes durch.
  • In einer Ausführungsform bestimmt das Verfahren ein Zeitintervall, das zum Verzögern der Arbeitsspeicher-Wiederherstellungsaktion benötigt wird, um die GPU daran zu hindern, die Daten vorzeitig von der CPU zurück zu empfangen.
  • In einer Ausführungsform wird ein durch einen Computer verwendbares Programmprodukt bereitgestellt, das eine oder mehrere durch einen Computer lesbare Speichereinheiten und Programmanweisungen aufweist, die auf mindestens einer von der einen oder den mehreren Speichereinheiten gespeichert sind. Die Speicher-Programmanweisungen umfassen Anweisungen zum Bestimmen, eine Arbeitsspeicher-Reduzierungsaktion mit einem Teilgraph-Knoten A und einem Knoten P anzuwenden, indem eine Arbeitsspeicher-Anforderung für Ausgabedaten identifiziert wird, die durch den Knoten P erzeugt werden sollen; zum Übertragen von Daten von einem Quellknoten zu dem Teilgraph-Knoten A und dem Knoten P; zum Ermöglichen, dass der Teilgraph-Knoten A die Arbeitsspeicher-Reduzierungsaktion vor einer Ausführung des Knotens P durchführt, wobei die Arbeitsspeicher-Reduzierungsaktion veranlasst, dass ein zusätzlicher Arbeitsspeicherplatz für einen Grafikprozessor (GPU) verfügbar wird, um eine oder mehrere Funktionen durchzuführen; zum Veranlassen, dass ein Teilgraph-Knoten B eine Arbeitsspeicher-Wiederherstellungsaktion verzögert, bis ein Knoten Q seine Ausführung beendet hat; und zum Übertragen der Daten von einem zentralen Prozessor (CPU) des Teilgraph-Knotens B zu der GPU, um die Daten für die GPU wiederherzustellen.
  • In einer Ausführungsform umfasst das Computersystem einen oder mehrere Prozessoren, einen oder mehrere durch einen Computer lesbare Arbeitsspeicher und eine oder mehrere durch einen Computer lesbare Speichereinheiten und Programmanweisungen, die auf mindestens einer von der einen oder den mehreren Speichereinheiten zur Ausführung durch mindestens einen von dem einen oder den mehreren Prozessoren über mindestens einen von dem einen oder den mehreren Arbeitsspeichern gespeichert sind. Die Speicher-Programmanweisungen umfassen Anweisungen zum Bestimmen, eine Arbeitsspeicher-Reduzierungsaktion mit einem Teilgraph-Knoten A und einem Knoten P anzuwenden, indem eine Arbeitsspeicher-Anforderung für Ausgabedaten identifiziert wird, die durch den Knoten P erzeugt werden sollen; zum Übertragen von Daten von einem Quellknoten zu dem Teilgraph-Knoten A und dem Knoten P; zum Ermöglichen, dass der Teilgraph-Knoten A die Arbeitsspeicher-Reduzierungsaktion vor einer Ausführung des Knotens P durchführt, wobei die Arbeitsspeicher-Reduzierungsaktion veranlasst, dass ein zusätzlicher Arbeitsspeicherplatz für einen Grafikprozessor (GPU) verfügbar wird, um eine oder mehrere Funktionen durchzuführen; zum Veranlassen, dass ein Teilgraph-Knoten B eine Arbeitsspeicher-Wiederherstellungsaktion verzögert, bis ein Knoten Q seine Ausführung beendet hat; und zum Übertragen der Daten von einem zentralen Prozessor (CPU) des Teilgraph-Knotens B zu der GPU, um die Daten für die GPU wiederherzustellen.
  • Die folgenden Definitionen und Abkürzungen sind für die Auslegung der Ansprüche und der Patentschrift zu verwenden. Wie hierin verwendet, sollen die Begriffe „weist auf“, „aufweisend“, „umfasst“, „umfassend“, „besitzt”, „besitzend“, „enthäl”“ oder „enthaltend“ oder irgendeine Variation davon eine nicht ausschließende Einbeziehung abdecken. Zum Beispiel ist eine Zusammensetzung, ein Gemisch, ein Prozess, ein Verfahren, ein Artikel oder eine Vorrichtung, die eine Liste von Elementen aufweist, nicht notwendigerweise auf nur diese Elemente beschränkt, sondern kann andere Elemente umfassen, die nicht ausdrücklich aufgelistet oder derartigen Zusammensetzungen, Gemischen, Prozessen, Verfahren, Artikeln oder Vorrichtungen eigen sind.
  • Außerdem bedeutet der hierin verwendete Begriff „veranschaulichend“, dass „etwas als Beispiel, Instanz oder zur Veranschaulichung dient“. Jede hierin als „veranschaulichend“ beschriebene Ausführungsform oder Auslegung muss nicht notwendigerweise als gegenüber anderen Ausführungsformen oder Auslegungen bevorzugt oder vorteilhaft aufgefasst werden. Der Begriff „mindestens ein/eine“ und „ein/e oder mehrere“ ist als jede ganzzahlige Anzahl größer oder gleich eins zu verstehen, d.h. eins, zwei, drei, vier usw. Der Begriff „eine Mehrzahl“ ist als ganzzahlige Anzahl größer oder gleich zwei zu verstehen, d.h. zwei, drei, vier, fünf usw. Der Begriff „Verbindung“ kann sowohl eine indirekte „Verbindung“ als auch eine direkte „Verbindung” umfassen.
  • Verweise in der Patentschrift auf „eine bestimmte Ausführungsform“, „eine Ausführungsform“, „eine beispielhafte Ausführungsform“ usw. geben an, dass die beschriebene Ausführungsform ein besonderes Merkmal, eine besondere Struktur oder Eigenschaft umfassen kann, aber nicht jede Ausführungsform das besondere Merkmal, die besondere Struktur oder Eigenschaft umfassen muss. Des Weiteren verweisen derartige Ausdrücke nicht notwendigerweise auf dieselbe Umgebung, Wenn ferner ein bestimmtes Merkmal, eine Struktur oder Eigenschaft in Verbindung mit einer Ausführungsform beschrieben wird, wird geltend gemacht, dass es innerhalb der Kenntnisse eines Fachmanns liegt, auf ein derartiges Merkmal, eine derartige Struktur oder Eigenschaft in Verbindung mit anderen Ausführungsformen Einfluss zu nehmen, gleichgültig, ob dies explizit beschrieben wurde.
  • Die Begriffe „über“, „im Wesentlichen“, „ungefähr“ und Variationen davon sollen das Fehlermaß angeben, das einer Messung der bestimmten Menge auf Grundlage des Zeitpunkts der Anmeldungseinreichung auf der verfügbaren Ausrüstung zugehörig ist. Zum Beispiel kann „über“ einen Bereich von ±8 % oder 5 % oder 2 % eines bestimmten Werts umfassen.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zweck der Veranschaulichung erstellt, sie sollen aber keineswegs erschöpfend oder auf die offenbarten Ausführungsformen eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, die nicht von dem Schutzumfang und Erfindungsgedanken der beschriebenen Ausführungsformen abweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, der praktischen Anwendung oder technischen Verbesserung gegenüber auf dem Markt gefundenen Technologien bestmöglich zu erklären oder anderen Fachleuten das Verständnis der hierin beschriebenen Ausführungsformen zu ermöglichen.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zweck der Veranschaulichung erstellt, sie sollen aber keineswegs erschöpfend oder auf die offenbarten Ausführungsformen eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, die nicht von dem Schutzumfang und Erfindungsgedanken der beschriebenen Ausführungsformen abweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, der praktischen Anwendung oder technischen Verbesserung gegenüber auf dem Markt gefundenen Technologien bestmöglich zu erklären oder anderen Fachleuten das Verständnis der hierin beschriebenen Ausführungsformen zu ermöglichen.
  • Somit werden durch einen Computer umgesetzte Verfahren in den veranschaulichenden Ausführungsformen zum Verwalten einer Teilnahme an Online-Communities und anderen zugehörigen Merkmalen, Funktionen oder Operationen bereitgestellt. In Fällen, in denen eine Ausführungsform oder ein Teil davon in Bezug auf einen Einheitentyp beschrieben wird, wird das durch einen Computer umgesetzte Verfahren, das System oder die Vorrichtung und das Computerprogrammprodukt oder ein Teil davon angepasst oder konfiguriert, um mit einer geeigneten oder vergleichbaren Erscheinungsform dieses Einheitentyps verwendet zu werden.
  • Der Benutzer kann durch Verwenden einer Vielfalt von Client-Einheiten über eine Thin-Client-Schnittstelle, beispielsweise ein Web-Browser (z.B. eMail auf Web-Grundlage) oder andere leichte Client-Anwendungen auf die Anwendung zugreifen. Der Benutzer verwaltet oder steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme oder der Speicher der Cloud-Infrastruktur.
  • Bei der vorliegenden Erfindung kann es sich um ein Verfahren, eine Vorrichtung und/oder ein Computerprogrammprodukt auf jeder möglichen technischen Detailintegrationsebene handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) enthalten, auf dem durch einen Computer lesbare Programmanweisungen gespeichert sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zum Ausführen von Anweisungen beibehalten und speichern kann. Das durch einen Computer lesbare Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu einer nicht erschöpfenden Liste von spezifischeren Beispielen des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer CD-ROM, eine DVD, ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination des Vorgenannten. Ein durch einen Computer lesbares Speichermedium soll, wie hierin verwendet, nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien ausbreiten (z.B. durch ein Lichtwellenleiterkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jeden Typ von Netzwerk verbunden werden, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die computerlesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es sollte klar sein, dass jeder Block der Ablaufplanveranschaulichungen und/oder der Blockschaubilder und Kombinationen von Blöcken in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen umgesetzt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. eine andere programmierbare Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, die Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Arbeitsschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder den Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zum Umsetzen der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt auftreten. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufplandarstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die angegebenen Funktionen oder Handlungen durchführen oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.

Claims (30)

  1. Verfahren zum Reduzieren einer Gesamtnutzung eines GPU-Arbeitsspeichers beim Verarbeiten von neuronalen Netzwerken, wobei das Verfahren aufweist: automatisches Bestimmen von Einfügungspunkten von Arbeitsspeicher-Erhaltungsoperationen in einem zugrunde liegenden Datenflussgraphen, der einen Satz von Knoten und einen Satz von Kanten aufweist.
  2. Verfahren nach Anspruch 1, wobei das automatische Bestimmen der Einfügungspunkte aufweist: Berechnen von Tensor-Timing-Slacks (TTS) für einen Satz von Eingabetensoren; Kompilieren einer Kandidatenliste (SI) von Eingabetensoren aus dem Satz von Eingabetensoren durch Verwenden von Eingabetensoren mit entsprechenden TTS-Werten, die größer als ein Schwellenwert (thTTS) sind; Filtern der SI zum Beibehalten von Eingabetensoren, deren Größe einen Schwellenwert (thS) erfüllt; und Bestimmen eines Einfügungspunkts für die Operation durch Verwenden der SI auf Grundlage des Filterns.
  3. Verfahren nach Anspruch 1, wobei die Operation eine Kombination von einer Reduzierungsoperation und einer Wiederherstellungsoperation ist, wobei die Reduzierungsoperation eines oder beides von einem Kopieren in eine Arbeitsspeicheroperation einer Zentraleinheit (CPU) und eine Komprimierungsoperation aufweist, und wobei die Wiederherstellungsoperation eines oder beides von einer Arbeitsspeicheroperation zum Kopieren aus einer CPU und eine Dekomprimierungsoperation aufweist.
  4. Verfahren nach Anspruch 1, wobei ein Berechnen des TTS ein Ausführen einer Timing-Analyse durch Verwenden der Eingabetensoren aufweist.
  5. Verfahren nach Anspruch 1, wobei die Timing-Analyse ferner aufweist: Initialisieren von Werten für Tensorankunftszeit (TAT), erforderliche Tensorzeit (TRT) und Tensor-Timing Slack (TTS) für die Eingabetensoren; für einen Satz von Eingabetensoren Q, wobei Q nicht leer ist, Ausführen von Schritten zum: Auswählen eines Knotens q in Q zum Ausschließen; Ausschließen von q aus Q; und Einrichten, für jeden Nachfolger-Eingabetensor s von q, der TAT von s, sodass sie der TAT von q entspricht.
  6. Verfahren nach Anspruch 5, wobei das Initialisieren aufweist: Initialisieren von TAT-, TRT- und TTS-Werten, sodass sie von unbekanntem Wert für alle Diagrammknoten sind und Null für alle Diagrammeingaben sind, die in Q gesammelt wurden.
  7. Verfahren nach Anspruch 5, wobei alle Eingaben eines Knotens n einen bekannten TAT-Wert haben, wobei n ein Knoten ist, für den s ein Eingabetensor ist, und wobei das Verfahren ferner ein Durchführen, für den Satz von Eingabetensoren Q, von weiteren Schritten ist zum: Einrichten der TRT von n auf ein Maximum der TATs von Eingaben i von n; Einrichten des TTS jeder Eingabe i von n als eine Differenz der TRT von n und der TAT von i; Einrichten der TAT von n auf Grundlage der TRT vom n, die um eine Knotenverzögerung erhöht wird; und Wiederaufnehmen von n in Q.
  8. Verfahren nach Anspruch 1, wobei der Datenflussgraph ein Paar (N, E) aufweist, wobei N einen Satz von Knoten aufweist und E einen Satz von Hyperkanten aufweist, und wobei ein bestimmter Knoten in N einen oder mehrere Operatoren auf einem oder mehreren Tensoren umsetzt.
  9. Verfahren nach Anspruch 8, wobei der bestimmte Knoten ein Triplet (f, l, O) aufweist, wobei f eine Funktion eines Operators ist, der durch den bestimmten Knoten umgesetzt wird, 1 ein Satz von Eingabetensoren des bestimmten Knotens ist, und O ein Satz von Ausgaben des bestimmten Knotens ist, die auf Grundlage des Operators generiert wurden.
  10. Verfahren nach Anspruch 8, wobei eine Hyperkante definiert, wie ein Tensor von einem Operator, der den Tensor generiert, an einen Operator übergeben wird, der den Tensor als ein Argument verwendet.
  11. Verfahren nach Anspruch 8, wobei eine Hyperkante ein Paar (s, H) aufweist, wobei s eine Knotenausgabe ist, und H ein Satz von Knoteneingaben ist.
  12. Verfahren nach Anspruch 1, das ferner aufweist: Einfügen eines Teilgraph-Knotens, der der Operation entspricht, in den Datenflussgraphen.
  13. Verfahren nach Anspruch 12, wobei das Einfügen einen neuen Datenflussgraphen generiert oder einen vorhandenen Datenflussgraphen modifiziert.
  14. Verfahren nach Anspruch 13, wobei das Einfügen einen neuen Datenflussgraphen generiert, wobei der neue Datenflussgraph einen vollständigen Datenflussgraphen oder einen teilweisen Datenflussgraphen aufweist.
  15. Verfahren nach Anspruch 12, das ferner aufweist: Verarbeiten des Satzes von Eingabetensoren durch Verwenden des Datenflussgraphen auf Grundlage des Einfügens; und Generieren von Ausgaben auf Grundlage des Verarbeitens.
  16. Verfahren nach Anspruch 1, wobei die Operation eine Arbeitsspeicher-Reduzierungsoperation ist, wobei das Verfahren ferner aufweist: Einfügen eines Teilgraph-Knotens der Arbeitsspeicher-Reduzierung, der der Arbeitsspeicher-Reduzierungsoperation entspricht.
  17. Verfahren nach Anspruch 12, wobei das Einfügen ferner aufweist: Verbinden, über eine erste Hyperkante, eines ersten Knotens mit dem Teilgraph-Knoten der Arbeitsspeicher-Reduzierung, wobei der erste Knoten einem Quellknoten entspricht; und Verbinden, über eine zweite Hyperkante, des Teilgraph-Knotens der Arbeitsspeicher-Reduzierung mit dem zweiten Knoten, wobei die zweite Hyperkante eine Serialisierungs-Hyperkante aufweist, und der zweite Knoten einem Zwischenknoten oder einem Zielknoten entspricht.
  18. Verfahren nach Anspruch 12, wobei das Einfügen ferner aufweist: Verbinden, über eine dritte Hyperkante des ersten Knotens mit einem zweiten Knoten.
  19. Verfahren nach Anspruch 1, wobei die Operation eine Arbeitsspeicher-Wiederherstellungsoperation ist, wobei das Verfahren ferner aufweist: Einfügen eines Teilgraph-Knotens der Arbeitsspeicher-Wiederherstellung, der der Arbeitsspeicher-Wiederherstellungsoperation entspricht.
  20. Verfahren nach Anspruch 19, wobei das Einfügen ferner aufweist: Verbinden, über eine erste Hyperkante, eines ersten Knotens mit dem Teilgraph-Knoten der Arbeitsspeicher-Wiederherstellung, wobei die zweite Hyperkante eine Serialisierungs-Hyperkante oder eine Vorabruf-Hyperkante aufweist; Verbinden, über eine zweite Hyperkante, des Teilgraph-Knotens der Arbeitsspeicher-Wiederherstellung mit einem zweiten Knoten, wobei der zweite Knoten einem Zielknoten entspricht; und Verbinden, über eine dritte Hyperkante, eines Teilgraph-Knotens einer Arbeitsspeicher-Reduzierung mit dem Teilgraph-Knoten der Arbeitsspeicher-Wiederherstellung.
  21. Verfahren nach Anspruch 1, das ferner ein Verbinden von zwei Knoten des Datenflussgraphen über eine Hyperkante aufweist, wobei das Verbinden eines aufweist von: einer direkten Verbindung über die Hyperkante zwischen den beiden Knoten; und einer indirekten Verbindung über einen oder mehrere zusätzliche Knoten und Hyperkanten zwischen den beiden Knoten.
  22. Verfahren nach Anspruch 1, wobei Schritte des Verfahrens wiederholt durchgeführt werden, um einen Satz von Teilgraph-Knoten in den Flussgraphen einzufügen, um mindestens eine Arbeitsspeicher-Reduzierungsoperation und mindestens eine Arbeitsspeicher-Wiederherstellungsoperation durchzuführen.
  23. Verfahren nach Anspruch 22, wobei ein wiederholtes Durchführen von Schritten des Verfahrens ein Einfügen eines Satzes von Hyperkanten in den Flussgraphen aufweist, wobei der Satz von Hyperkanten mindestens eine Serialisierungs-Hyperkante oder mindestens eine Vorabruf-Hyperkante oder mindestens eine Serialisierungs-Hyperkante und mindestens eine Vorabruf-Hyperkante aufweist.
  24. Verfahren nach Anspruch 1, wobei eine Operation eine Arbeitsspeicher-Reduzierungsaktion ist, wobei das Verfahren aufweist: Bestimmen, die Arbeitsspeicher-Reduzierungsaktion mit einem Teilgraph-Knoten A und einem Knoten P anzuwenden, indem eine Arbeitsspeicher-Anforderung für Ausgabedaten identifiziert wird, die durch den Knoten P erzeugt werden sollen; Übertragen von Daten von einem Quellknoten zu dem Teilgraph-Knoten A und dem Knoten P; Ermöglichen, dass der Teilgraph-Knoten A die Arbeitsspeicher-Reduzierungsaktion vor einer Ausführung des Knotens P durchführt, wobei die Arbeitsspeicher-Reduzierungsaktion veranlasst, dass ein zusätzlicher Arbeitsspeicherplatz für einen Grafikprozessor (GPU) verfügbar wird, um eine oder mehrere Funktionen durchzuführen; Veranlassen, dass ein Teilgraph-Knoten B eine Arbeitsspeicher-Wiederherstellungsaktion verzögert, bis ein Knoten Q seine Ausführung beendet hat; und Übertragen der Daten von einem zentralen Prozessor (CPU) des Teilgraph-Knotens B zu der GPU, um die Daten für die GPU wiederherzustellen.
  25. Verfahren, das aufweist: Auswählen eines Einfügungspunktes in einen Datenflussgraphen für eine Operation auf Grundlage eines Satzes von Tensor-Timing-Slacks (TTS) und einer Kandidatenliste von Eingabetensoren (SI); Berechnen der Tensor-Timing-Slacks (TTS) für einen Satz von Eingabetensoren; Kompilieren der Kandidatenliste (SI) von Eingabetensoren aus einem Satz von Eingabetensoren durch Verwenden von Eingabetensoren mit entsprechenden TTS-Werten, die größer als ein Schwellenwert (thTTS) sind; Filtern der SI zum Beibehalten von Eingabetensoren, deren Größe einen Schwellenwert (thS) erfüllt; und Bestimmen eines Einfügungspunkts für eine Reduzierungs- und Wiederherstellungsoperation durch Verwenden der SI auf Grundlage des Filterns.
  26. Verfahren, das aufweist: Bestimmen, eine Arbeitsspeicher-Reduzierungsaktion mit dem Teilgraph-Knoten A und dem Knoten P anzuwenden, indem eine Arbeitsspeicher-Anforderung von Ausgabedaten identifiziert wird, die durch den Knoten P erzeugt werden sollen; Übertragen von Daten von einem Quellknoten zu dem Teilgraph-Knoten A und dem Knoten P; Ermöglichen, dass der Teilgraph-Knoten A die Arbeitsspeicher-Reduzierungsaktion vor einer Ausführung des Knotens P durchführt, wobei die Arbeitsspeicher-Reduzierungsaktion veranlasst, dass ein zusätzlicher Arbeitsspeicherplatz für einen Grafikprozessor (GPU) verfügbar wird, um eine oder mehrere Funktionen durchzuführen; Veranlassen, dass ein Teilgraph-Knoten B eine Arbeitsspeicher-Wiederherstellungsaktion verzögert, bis ein Knoten Q seine Ausführung beendet hat; und Übertragen der Daten von einem zentralen Prozessor (CPU) des Teilgraph-Knotens B zu der GPU, um die Daten für die GPU wiederherzustellen.
  27. Computerprogramm, das Programmcodemittel aufweist, die angepasst sind, um ein Verfahren nach einem der Ansprüche 1 bis 26 auszuführen, wenn das Programm auf einem Computer ausgeführt wird.
  28. System zum Reduzieren einer Gesamtnutzung eines GPU-Arbeitsspeichers beim Verarbeiten von neuronalen Netzwerken, wobei das System betriebsfähig ist zum: automatischen Bestimmen von Einfügungspunkten von Arbeitsspeicher-Erhaltungsoperationen in einem zugrunde liegenden Datenflussgraphen, der einen Satz von Knoten und einen Satz von Kanten aufweist.
  29. System, das betriebsfähig ist zum: Auswählen eines Einfügungspunktes in einen Datenflussgraphen für eine Operation auf Grundlage eines Satzes von Tensor-Timing-Slacks (TTS) und einer Kandidatenliste von Eingabetensoren (SI); Berechnen der Tensor-Timing-Slacks (TTS) für einen Satz von Eingabetensoren; Kompilieren der Kandidatenliste (SI) von Eingabetensoren aus einem Satz von Eingabetensoren durch Verwenden von Eingabetensoren mit entsprechenden TTS-Werten, die größer als ein Schwellenwert (thTTS) sind; Filtern der SI zum Beibehalten von Eingabetensoren, deren Größe einen Schwellenwert (thS) erfüllt; und Bestimmen eines Einfügungspunkts für eine Reduzierungs- und Wiederherstellungsoperation durch Verwenden der SI auf Grundlage des Filterns.
  30. System, das betriebsfähig ist zum: Bestimmen, eine Arbeitsspeicher-Reduzierungsaktion mit einem Teilgraph-Knoten A und einem Knoten P anzuwenden, indem eine Arbeitsspeicher-Anforderung von Ausgabedaten identifiziert wird, die durch den Knoten P erzeugt werden sollen; Übertragen von Daten von einem Quellknoten zu dem Teilgraph-Knoten A und dem Knoten P; Ermöglichen, dass der Teilgraph-Knoten A die Arbeitsspeicher-Reduzierungsaktion vor einer Ausführung des Knotens P durchführt, wobei die Arbeitsspeicher-Reduzierungsaktion veranlasst, dass ein zusätzlicher Arbeitsspeicherplatz für einen Grafikprozessor (GPU) verfügbar wird, um eine oder mehrere Funktionen durchzuführen; Veranlassen, dass ein Teilgraph-Knoten B eine Arbeitsspeicher-Wiederherstellungsaktion verzögert, bis ein Knoten Q seine Ausführung beendet hat; und Übertragen der Daten von einem zentralen Prozessor (CPU) des Teilgraph-Knotens B zu der GPU, um die Daten für die GPU wiederherzustellen.
DE112020006010.1T 2019-12-05 2020-12-02 Schulung eines neuronalen netzwerks durch verwenden eines datenflussgraphen und dynamische verwaltung von arbeitsspeicher Pending DE112020006010T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/704,240 US11521062B2 (en) 2019-12-05 2019-12-05 Neural network training using a data flow graph and dynamic memory management
US16/704,240 2019-12-05
PCT/IB2020/061386 WO2021111332A1 (en) 2019-12-05 2020-12-02 Neural network training using data flow graph and dynamic memory management

Publications (1)

Publication Number Publication Date
DE112020006010T5 true DE112020006010T5 (de) 2023-01-19

Family

ID=76210011

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020006010.1T Pending DE112020006010T5 (de) 2019-12-05 2020-12-02 Schulung eines neuronalen netzwerks durch verwenden eines datenflussgraphen und dynamische verwaltung von arbeitsspeicher

Country Status (5)

Country Link
US (1) US11521062B2 (de)
CN (1) CN114746871A (de)
DE (1) DE112020006010T5 (de)
GB (1) GB2605100A (de)
WO (1) WO2021111332A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11521062B2 (en) 2019-12-05 2022-12-06 International Business Machines Corporation Neural network training using a data flow graph and dynamic memory management
US11960982B1 (en) * 2021-10-21 2024-04-16 Neuralmagic, Inc. System and method of determining and executing deep tensor columns in neural networks
CN115018064A (zh) * 2022-06-27 2022-09-06 中国科学技术大学 一种计算节点的空间分配方法及装置
CN115033391B (zh) * 2022-08-10 2022-11-11 之江实验室 一种用于神经网络计算的数据流动方法和装置
US20240104395A1 (en) * 2022-09-27 2024-03-28 Zhejiang Lab Memory optimization method and device oriented to neural network computing
WO2024118555A2 (en) * 2022-11-29 2024-06-06 ColdQuanta, Inc. Managing processing of states of sequences of data

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7747070B2 (en) 2005-08-31 2010-06-29 Microsoft Corporation Training convolutional neural networks on graphics processing units
US8490034B1 (en) 2010-07-08 2013-07-16 Gauda, Inc. Techniques of optical proximity correction using GPU
CN105573717B (zh) 2014-10-08 2018-02-06 华为技术有限公司 一种面向多核处理器的程序划分方法及装置
US9972063B2 (en) 2015-07-30 2018-05-15 International Business Machines Corporation Pipelined approach to fused kernels for optimization of machine learning workloads on graphical processing units
US11151446B2 (en) 2015-10-28 2021-10-19 Google Llc Stream-based accelerator processing of computational graphs
US10127696B2 (en) 2017-03-22 2018-11-13 Sas Institute Inc. Computer system to generate scalable plots using clustering
US10467795B2 (en) 2017-04-08 2019-11-05 Intel Corporation Sub-graph in frequency domain and dynamic selection of convolution implementation on a GPU
CN107402745B (zh) 2017-07-04 2020-05-22 清华大学 数据流图的映射方法及装置
US20200174707A1 (en) * 2017-10-27 2020-06-04 Wave Computing, Inc. Fifo filling logic for tensor calculation
US11373088B2 (en) * 2017-12-30 2022-06-28 Intel Corporation Machine learning accelerator mechanism
EP3970012A1 (de) * 2019-07-17 2022-03-23 Google LLC Planung von operationen auf einem berechnungsgraphen
CN111078395B (zh) * 2019-11-12 2023-06-20 华中科技大学 一种基于张量的深度学习gpu内存管理优化方法及系统
US11663746B2 (en) * 2019-11-15 2023-05-30 Intel Corporation Systolic arithmetic on sparse data
US11521062B2 (en) 2019-12-05 2022-12-06 International Business Machines Corporation Neural network training using a data flow graph and dynamic memory management

Also Published As

Publication number Publication date
US11521062B2 (en) 2022-12-06
CN114746871A (zh) 2022-07-12
WO2021111332A1 (en) 2021-06-10
GB202208863D0 (en) 2022-08-10
GB2605100A (en) 2022-09-21
JP2023504680A (ja) 2023-02-06
US20210174190A1 (en) 2021-06-10

Similar Documents

Publication Publication Date Title
DE112020006010T5 (de) Schulung eines neuronalen netzwerks durch verwenden eines datenflussgraphen und dynamische verwaltung von arbeitsspeicher
DE102012216029B4 (de) Ein skalierbares anpassungsfähiges map-reduce-rahmenwerk mit verteilten daten
DE112018005205T5 (de) Komprimierung von vollständig verbundenen / wiederkehrenden Schichten von einem oder mehreren tiefen Netzen durch Durchsetzen von räumlicher Lokalität für Gewichtsmatrizen und erwirken von Frequenzkomprimierung
DE112019004076T5 (de) Dezentralisiertes verteiltes deep learning
DE112018006189T5 (de) Robuste gradienten-gewichtskomprimierungsschemata für deep-learning-anwendungen
DE112021006595T5 (de) Benutzerkontextmigration basierend auf einem berechnungsdiagramm in einer künstlichen intelligenzanwendung, die in einer edge-computing-umgebung ausgeführt wird
DE112017007656T5 (de) Verschobene aktualisierung von datenbank-hashcode in einer blockchain
DE112011103276T5 (de) Vorauslese-Verarbeitung in einer Client-Server-Netzwerkarchitektur
DE112020004651B4 (de) Multi-tenant-etl-ressourcenaufteilung
DE112021002820T5 (de) Dynamische automatisierung einer auswahl von pipeline-artefakten
DE102018104188A1 (de) Kombiniertes Rendering- und Berechnungs-Ressourcenzuweisungsverwaltungssystem
DE102021105249A1 (de) Mikrotraining zur iterativen verfeinerung eines neuronalen netzes mit wenigen anpassungen
DE112018002266T5 (de) Kognitives Datenfiltern für Speicherumgebungen
DE112020003825T5 (de) Entsprechung zwischen externen Operationen und Containern sowie Mutationsereignissen
DE112021003747T5 (de) Erkennen von anomalien in einer netzwerktopologie
DE112018006377T5 (de) Verschmelzen spärlich besetzter kernels zur approximation eines vollen kernels eines neuronalen faltungsnetzes
DE102012204167A1 (de) Vorauslaufende genäherte Berechnungen
DE112019000676T5 (de) Zentraler scheduler und anweisungszuteiler für einen neuronalen inferenzprozessor
DE112019004391T5 (de) Grossmodellunterstützung für deep learning
DE112018003585T5 (de) Deduplizierung eines bandlaufwerkspeichers
DE112018005620T5 (de) Auftragsverwaltung in einem datenverarbeitungssystem
DE112021003274T5 (de) Ressourcenzuordnung zum optimieren von hyperparametern bei umfangreichen deep-learning-arbeitslasten
DE112016003598T5 (de) Gleichzeitige Massenverarbeitung von baumbasierten Datenstrukturen
DE102015116036A1 (de) Dezentrale Realzeitrechenstruktur, die eine speicherinterne Verarbeitung verwendet
DE112021006273T5 (de) Automatische beschreibung und entnahme von tabellendaten im portable document format unter verwendung von neuronalen graphennetzen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence