DE102020126699A1 - Initialisierung und verwaltung von class-of-service-attributen zur laufzeit, um deep-learning-training in verteilten umgebungen zu optimieren - Google Patents

Initialisierung und verwaltung von class-of-service-attributen zur laufzeit, um deep-learning-training in verteilten umgebungen zu optimieren Download PDF

Info

Publication number
DE102020126699A1
DE102020126699A1 DE102020126699.5A DE102020126699A DE102020126699A1 DE 102020126699 A1 DE102020126699 A1 DE 102020126699A1 DE 102020126699 A DE102020126699 A DE 102020126699A DE 102020126699 A1 DE102020126699 A1 DE 102020126699A1
Authority
DE
Germany
Prior art keywords
clos
attribute
memory buffer
memory
run
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
DE102020126699.5A
Other languages
English (en)
Inventor
Aravindh Anantaraman
Srinivas Sridharan
Ajaya Durg
Mohammed R. Haghighat
Mikhail E. Smorkalov
Sudarshan Srinivasan
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE102020126699A1 publication Critical patent/DE102020126699A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Databases & Information Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Microcomputers (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Systeme, Vorrichtungen und Verfahren können Technologie bereitstellen, die einen Laufzeitaufruf an eine Kommunikationsbibliothek erkennt, wobei der Laufzeitaufruf einen Speicherpuffer identifiziert, bestimmt, dass dem Speicherpuffer ein Class-of-Service (CLOS) -Attribut zugeordnet ist, und eine Treiberanweisung zum Modifizieren des CLOS-Attributs als Reaktion auf den Laufzeitaufruf ausgibt.

Description

  • TECHNISCHES GEBIET
  • Ausführungsformen beziehen sich im Allgemeinen auf Class-of-Service (CLOS) -Attribute. Insbesondere beziehen sich Ausführungsformen auf die Initialisierung und Verwaltung von CLOS-Attributen zur Laufzeit, um Deep-Learning-Training in verteilten Umgebungen zu optimieren.
  • HINTERGRUND
  • Einige Graphics-Processing-Units (GPU) können es Anwendungsentwicklern ermöglichen, während der Pufferzuweisung die Class-of-Service (CLOS) für Speicherseiten, die während der Ausführung der Anwendung verwendet werden, statisch einzustellen. Die CLOS kann dann dazu verwendet werden, die Zwischenspeicherbarkeit von Informationen auf einer pro-Seite-Basis zu steuern. Statisches Einstellen der CLOS während Pufferzuweisung auf der Seitenebene kann ineffizient sein. In der Tat können konventionelle Lösungen eine suboptimale Leistung zur Folge haben, insbesondere, wenn die Anwendung das Trainieren eines tiefen neuronalen Netzwerks mit einer relativ intensiven Kommunikationsarbeitslast umfasst.
  • Figurenliste
  • Die verschiedenen Vorteile der Ausführungsformen werden einem Fachmann durch Lesen der folgenden Spezifikation und der beigefügten Ansprüche und durch Bezugnahme auf die folgenden Zeichnungen ersichtlich, in denen Folgendes gilt:
    • 1 ist eine Veranschaulichung eines Beispiels von rekonfigurierbaren Class-of-Service-Attributen, die auf einer Unterseitenebene gemäß einer Ausführungsform verwaltet werden;
    • 2 ist ein Flussdiagramm eines Beispiels eines Verfahrens des Initialisierens eines Class-of-Service-Attributs gemäß einer Ausführungsform;
    • 3 ist ein Flussdiagramm eines Beispiels eines Verfahrens des Anpassens eines Class-of-Service-Attributs gemäß einer Ausführungsform;
    • 4 ist ein Flussdiagramm eines Beispiels eines anderen Verfahrens des Anpassens eines Class-of-Service-Attributs gemäß einer Ausführungsform;
    • 5 ist ein Signalisierungsdiagramm eines Beispiels von Kommunikationen zwischen einem Deep Learning (DL) -Framework, einer Kommunikationsbibliothek und einem Treiber gemäß einer Ausführungsform;
    • 6 ist ein Blockdiagramm eines Beispiels eines Software-Stapels gemäß einer Ausführungsform;
    • 7 ist ein Blockdiagramm eines Beispiels eines leistungsverbesserten Datenverarbeitungssystems gemäß einer Ausführungsform;
    • 8 ist eine Veranschaulichung eines Beispiels einer Halbleitervorrichtung gemäß einer Ausführungsform;
    • 9 ist ein Blockdiagramm eines Beispiels eines Prozessors gemäß einer Ausführungsform; und
    • 10 ist ein Blockdiagramm eines Beispiels eines Datenverarbeitungssystems auf Multiprozessor-Basis gemäß einer Ausführungsform.
  • BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
  • Wendet man sich nun 1 zu, ist Speicherseite 20 (zum Beispiel ein zusammenhängender Block virtuellen Speichers mit fester Länge, beschrieben durch einen einzelnen Eintrag in einer Seitentabelle) gezeigt, wobei die Speicherseite 20 ersten Adressbereich 22, zweiten Adressbereich 24, und so weiter, beinhaltet. In dem veranschaulichten Beispiel ist erstes Class-of-Service (CLOS) -Attribut 26 dem ersten Adressbereich 22 zugeordnet, und zweite CLOS 28 ist dem zweiten Adressbereich 24 zugeordnet. In einer Ausführungsform wird der erste Adressbereich 22 als ein erster Speicherpuffer verwendet, und der zweite Adressbereich 24 wird als ein zweiter Speicherpuffer verwendet. Wenn eine Anwendung, wie zum Beispiel eine Deep-Learning (DL) -Anwendung, den ersten Speicherpuffer einer ersten Arbeitslast zuordnet, kann die Anwendung das erste CLOS-Attribut 26 auch dem ersten Adressbereich 22 basierend auf dem Typ der Arbeitslast zuordnen, widmen und/oder zuweisen.
  • Wenn zum Beispiel zur Zuweisungszeit bestimmt wird, dass erwartet wird, dass die erste Arbeitslast ein Rechenkernel ist (zum Beispiel eine Softwareroutine, die Matrix-Matrix-Multiplikationsoperationen oder Faltungsoperationen gewidmet ist), könnte eine DL-Anwendung einen relativ niedrigen Wert für das erste CLOS-Attribut 26 auswählen. In ähnlicher Weise, wenn zur Zuweisungszeit bestimmt wird, dass erwartet wird, dass eine zweite Arbeitslast ein Kommunikationskernel ist (zum Beispiel eine Softwareroutine, Kommunikationen über Kacheln innerhalb eines GPU-Pakets mit mehreren Kacheln hinweg, über GPU-Pakete über Scale-up-Links hinweg, usw., in einer verteilten Umgebung gewidmet), kann die DL-Anwendung einen relativ hohen Wert für das zweite CLOS-Attribut 28 auswählen. Wenn die CLOS-Attribute 26, 28 proportional zur Zwischenspeicherbarkeit sind, werden die ausgewählten Werte veranlassen, dass für die Informationen in dem ersten Adressbereich 22 weniger Cache-Speicher zugeteilt wird als in dem zweiten Adressbereich 24. In diesem Zusammenhang wurde bestimmt, dass zum Beispiel eine „allreduce“ Kommunikationsoperation (die zum Beispiel einen Gradienten einer Verlustfunktion auf jeder GPU berechnet, den Mittelwert der Gradienten durch Kommunikation zwischen GPU berechnet, und das Netzwerkmodell aktualisiert), erheblich um die gleichen Ressourcen wie Rechenkernel konkurriert. Somit können die veranschaulichten CLOS-Attribute 26, 28 der Anwendung mehr Flexibilität bei dem Verwalten der Leistung und bessere Skalierbarkeit gewähren.
  • In der Tat sind die veranschaulichten CLOS-Attribute 26, 28 rekonfigurierbar, was die Effizienz, Leistung und/oder Skalierbarkeit weiter verbessern kann. In dieser Hinsicht können die Adressbereiche 22, 24 (zum Beispiel während iterativen Trainings) für unterschiedliche Arbeitslasten während der Ausführung der Anwendung wiederverwendet werden. Somit kann, wenn der erste Adressbereich 22 (zum Beispiel der erste Speicherpuffer) anschließend einer dritten Arbeitslast zugeordnet wird, die ein Kommunikationskernel ist, das erste CLOS-Attribut 26 (zum Beispiel über eine von einer Kommunikationsbibliothek ausgegebene Anweisung) auf einen relativ hohen Wert zur Laufzeit eingestellt werden. Somit kann eine noch größere Flexibilität hinsichtlich der Leistung erreicht werden. Darüber hinaus passt das Einstellen der CLOS-Attribute 26, 28 auf eine Granularitätsebene, die kleiner als die Seite 20 ist, die veranschaulichte Lösung ferner auf den Betrieb der Anwendung an, die Speicher auf der Pufferebene zuweist.
  • 2 zeigt Verfahren 30 des Initialisierens eines CLOS-Attributs. Das Verfahren 30 kann in einem oder mehreren Modulen als ein Satz von Logikanweisungen implementiert sein, die gespeichert sind in einem maschinen- oder computerlesbaren Speicherungsmedium, wie zum Beispiel einem Random-Access-Memory (RAM), Read-Only-Memory (ROM), Programmable ROM (PROM), Firmware, Flash-Speicher, usw., in konfigurierbarer Logik, wie zum Beispiel Programmable-Logic-Arrays (PLA), Field-Programmable-Gate-Arrays (FPGA), Complex-Programmable-Logic-Devices (CPLD), in Logik-Hardware mit fester Funktionalität durch Verwenden von Schaltungstechnologie, wie zum Beispiel Application-Specific-Integrated-Circuit (ASIC), Complementary-Metal-Oxide-Semiconductor (CMOS) oder Transistor-Transistor-Logic (TTL) -Technologie, oder jeglicher Kombination davon.
  • Zum Beispiel kann Computerprogrammcode zum Ausführen von in dem Verfahren 30 gezeigten Operationen in jeglicher Kombination von einer oder mehreren Programmiersprachen geschrieben werden, einschließlich einer objektorientierten Programmiersprache, wie zum Beispiel JAVA, SMALLTALK, C++, oder dergleichen, und herkömmlicher verfahrensorientierter Programmiersprachen, wie zum Beispiel der Programmiersprache „C“, oder ähnlicher Programmiersprachen. Zusätzlich können Logikanweisungen Assembler-Anweisungen, Instruction-Set-Architecture (ISA) -Anweisungen, Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Zustandseinstellungsdaten, Konfigurationsdaten für integrierte Schaltungen, Statusinformationen, die elektronische Schaltkreise personalisieren, und/oder andere strukturelle Komponenten umfassen, die nativ für Hardware (zum Beispiel Host-Prozessor, Central-Processing-Unit/CPU, Mikrocontroller, usw.) sind.
  • Veranschaulichter Verarbeitungsblock 32 stellt das Erkennen einer Zuordnungsanforderung bereit, wobei die Zuordnungsanforderung einen Speicherpuffer identifiziert. In einer Ausführungsform identifiziert die Zuordnungsanforderung den Speicherpuffer durch einen Adressbereich (zum Beispiel in virtuellem Speicher). Block 34 setzt ein dem Speicherpuffer zugeordnetes CLOS-Attribut als Reaktion auf die Zuordnungsanforderung auf eine Anfangsebene. Block 34 kann das CLOS-Attribut auf eine Standardebene oder eine Ebene, die dem erwarteten Typ von Arbeitslast für den Speicherpuffer entspricht, setzen. Das Verfahren 30 verbessert daher die Leistung durch Initialisieren von CLOS-Attributen auf einer pro-Speicherpuffer-Basis (anstelle zum Beispiel auf einer pro-Seite-Basis).
  • 3 zeigt Verfahren 40 des Anpassens eines CLOS-Attributs. Das Verfahren 40 kann anschließend an das Verfahren 30 (2) in einem oder mehreren Modulen als ein Satz von Logikanweisungen implementiert werden, die in einem maschinen- oder computerlesbaren Speicherungsmedium, wie zum Beispiel RAM, ROM, PROM, Firmware, Flash-Speicher, usw., in konfigurierbarer Logik, wie zum Beispiel PLA, FPGA, CPLD, in Logikhardware mit fester Funktionalität durch Verwenden von Schaltungstechnologie, wie zum Beispiel ASIC-, CMOS- oder TTL-Technologie, oder jeglicher Kombination davon gespeichert sind.
  • Veranschaulichter Verarbeitungsblock 42 erkennt einen Laufzeitaufruf (zum Beispiel ccl_allreduce während einer Trainingsiteration) an eine Kommunikationsbibliothek, wobei der Laufzeitaufruf einen Speicherpuffer identifiziert. In einem Beispiel wird der Speicherpuffer durch einen Adressbereich identifiziert. Block 44 bestimmt, dass dem Speicherpuffer ein CLOS-Attribut zugeordnet ist. In einer Ausführungsform beinhaltet der Block 44 das Durchsuchen einer Datenstruktur (zum Beispiel Abbildung) nach einem Adressbereich, der dem Speicherpuffer entspricht. Wie bereits erwähnt, kann der Adressbereich kleiner als die Größe einer Speicherseite sein. Block 46 gibt eine Treiberanweisung aus, um das CLOS-Attribut als Reaktion auf den Laufzeitaufruf zu modifizieren. In einem Beispiel fordert die Treiberanweisung eine Erhöhung in einer Ebene des CLOS-Attributs an, wenn der Laufzeitaufruf einem Kommunikationskernel zugeordnet ist. In einem anderen Beispiel fordert die Treiberanweisung eine Verringerung in einer Ebene des CLOS-Attributs an, wenn der Laufzeitaufruf einem Rechenkernel zugeordnet ist. Der Block 46 kann auch das Speichern des vorherigen Werts des CLOS-Attributs an einem geeigneten Speicherort (zum Beispiel Register) beinhalten. Das veranschaulichte Verfahren 40 verbessert daher die Leistung und/oder Skalierbarkeit mindestens durch 1) Verwenden einer Treiberanweisung, um das CLOS-Attribut 2) zur Laufzeit und 3) auf einer pro-Speicherpuffer-Basis zu modifizieren.
  • 4 zeigt anderes Verfahren 50 des Anpassens eines CLOS-Attributs. Das Verfahren 50 könnte anschließend an das Verfahren 40 (3, zum Beispiel nach dem Erhöhen eines CLOS-Attributs zur Unterstützung eines Kommunikationskernel) in einem oder mehreren Modulen als ein Satz von Logikanweisungen implementiert werden, die in einem maschinen- oder computerlesbaren Speicherungsmedium, wie zum Beispiel RAM, ROM, PROM, Firmware, Flash-Speicher, usw., in konfigurierbarer Logik, wie zum Beispiel PLA, FPGA, CPLD, in Logikhardware mit fester Funktionalität durch Verwenden von Schaltungstechnologie, wie zum Beispiel ASIC-, CMOS- oder TTL-Technologie, oder jeglicher Kombination davon gespeichert sind.
  • Veranschaulichter Verarbeitungsblock 52 stellt das Bestimmen bereit, ob ein Kommunikationskernel vollständig ist. Wenn nicht, tritt das veranschaulichte Verfahren 50 in einen Wartezustand ein. Sobald der Kommunikationskernel vollständig ist, gibt Block 54 das CLOS-Attribut als Reaktion auf die Vervollständigung der Arbeitslast auf eine Anfangsebene zurück. In einer Ausführungsform beinhaltet der Block 54 das Abrufen des Werts der Anfangsebene von einem geeigneten Speicherort (zum Beispiel Register). Das veranschaulichte Verfahren 50 verbessert daher ferner die Leistung und/oder Skalierbarkeit, indem es die Fähigkeit bereitstellt, CLOS-Attribute basierend auf Laufzeitbedingungen temporär anzupassen.
  • 5 zeigt Signalisierungsdiagramm 60 für Kommunikationen zwischen DL-Framework 62, Kommunikationsbibliothek 64 (zum Beispiel ONEAPI Collective Communications Library/oneCCL) und Treiber 66. In dem veranschaulichten Beispiel gibt das DL-Framework 62 Laufzeitaufruf 68 (zum Beispiel ccl_allreduce) an die Kommunikationsbibliothek 64 aus. Der Laufzeitaufruf 68 kann eine Pufferadresse, Größe, und so weiter, beinhalten. In einer Ausführungsform gibt die Kommunikationsbibliothek 64 eine Treiberanweisung aus (zum Beispiel durch zusätzliche Middleware und/oder ein Application-Programming-Interface/API), die eine Änderung des CLOS-Attributs für den Speicherbereich von Interesse anfordert. Wie bereits erwähnt, kann die Änderung auf einen relativ niedrigen CLOS-Wert für Rechenkernel, einen relativ hohen CLOS-Wert für Kommunikationskernel, und so weiter, erfolgen. Die Kommunikationsbibliothek 64 kann auch den vorherigen CLOS-Wert für den Speicherbereich speichern und die Kommunikationsoperation starten. Sobald die Kommunikation vollständig ist, stellt die veranschaulichte Kommunikationsbibliothek 64 den vorherigen CLOS-Wert für den Speicherbereich über andere Treiberanweisung 72 wieder her. In einer Ausführungsform sendet die Kommunikationsbibliothek 64 dann Benachrichtigung 74 an das DL-Framework 62, dass die Kommunikation vollständig ist. Nach Empfang der Benachrichtigung 74 kann das DL-Framework 62 beginnen, den Speicherpuffer für andere Zwecke zu verwenden.
  • 6 zeigt einheitlichen Software-Stapel 110, der Ebene-0-Schnittstelle 112, Systemsoftware 114 unterhalb der Ebene-0-Schnittstelle 112, Systemsoftware 116 oberhalb der Ebene-0-Schnittstelle 112 und Entwicklerschnittstelle 118 beinhaltet. Die Systemsoftware 114 unterhalb der Ebene-0-Schnittstelle 112 kommuniziert mit Hardware, wie zum Beispiel einer CPU (die zum Beispiel skalare Operationen unterstützen könnte), einer GPU (die zum Beispiel Vektoroperationen unterstützen kann), einem AI (Artificial-Intelligence) - Beschleuniger (der zum Beispiel Matrixoperationen unterstützen könnte) und einem FPGA (das zum Beispiel räumliche Operationen unterstützen kann). Zusätzlich interagiert die Entwicklerschnittstelle 118 mit optimierter Middleware und zugehörigen Frameworks, die wiederum eine oder mehrere optimierte Anwendungen unterstützen. In einer Ausführungsform beinhaltet Bibliothek 120, wie zum Beispiel (ONEAPI Collective Communications Library/oneCCL), die Funktionalität des Verfahrens 30 (2), des Verfahrens 40 (3) und/oder des Verfahrens 50 (4), die bereits diskutiert wurden.
  • Wendet man sich nun 7 zu, ist leistungsverbessertes Datenverarbeitungssystem 151 gezeigt. Das System 151 kann im Allgemeinen Teil eines elektronischen Geräts/einer elektronischen Plattform mit Datenverarbeitungsfunktionalität (zum Beispiel Personal-Digital-Assistant/PDA, Notebook-Computer, Tablet-Computer, konvertierbares Tablet, Server), Kommunikationsfunktionalität (zum Beispiel Smartphone), Bildgebungsfunktionalität (zum Beispiel Kamera, Camcorder), Medienwiedergabefunktionalität (zum Beispiel Smart-TV/TV), tragbare Funktionalität (zum Beispiel, Uhr, Brille, Kopfbedeckung, Fußbekleidung, Schmuck), Fahrzeugfunktionalität (zum Beispiel PKW, LKW, Motorrad), Roboterfunktionalität (zum Beispiel autonomer Roboter), usw., oder jegliche Kombination davon sein. In dem veranschaulichten Beispiel beinhaltet das System 151 Host-Prozessor 153 (zum Beispiel CPU mit mehreren Kernen) mit Last-Level-Cache (LLC, zum Beispiel Level 3/L3-Cache) 154 und Integrated-Memory-Controller (IMC) 155, der mit Systemspeicher 157 gekoppelt ist.
  • Das veranschaulichte System 151 beinhaltet auch Input-Output (IO)-Modul 159, das zusammen mit dem Hostprozessor 153 und Grafikprozessor 161 auf Halbleiterchip 163 als ein System-on-Chip (SoC) implementiert ist. Das veranschaulichte IO-Modul 159 kommuniziert zum Beispiel mit Anzeige 165 (zum Beispiel Touchscreen, Liquid-Crystal-Display/LCD, Light-Emitting-Diode/LED-Anzeige), Netzwerksteuerung 167 (zum Beispiel verdrahtet und/oder drahtlos) und Massenspeicher 169 (zum Beispiel Hard-Disk-Drive/HDD, optische Festplatte, Solid-State-Drive/SSD, Flash-Speicher).
  • In einer Ausführungsform führen der Host-Prozessor 153, der Grafikprozessor 161 und/oder das IO-Modul 159 Programmanweisungen 171 aus, die von dem Systemspeicher 157 und/oder Massenspeicherung 169 abgerufen wurden, um einen oder mehrere Aspekte des Verfahrens 30 (2), des Verfahrens 40 (3) und/oder des Verfahrens 50 (4), die bereits diskutiert wurden, auszuführen. Somit kann die Ausführung der veranschaulichten Anweisungen das Datenverarbeitungssystem dazu veranlassen, einen Laufzeitaufruf an eine Kommunikationsbibliothek zu erkennen, wobei der Laufzeitaufruf einen Speicherpuffer identifiziert, zu bestimmen, dass dem Speicherpuffer ein CLOS-Attribut zugeordnet ist, und eine Treiberanweisung zum Modifizieren des CLOS-Attributs als Reaktion auf den Laufzeitaufruf auszugeben. In einer Ausführungsform, um zu bestimmen, dass das CLOS-Attribut dem Speicherpuffer zugeordnet ist, veranlassen die Anweisungen 171, wenn ausgeführt, das Datenverarbeitungssystem 151 dazu, eine Datenstruktur nach einem Adressbereich zu durchsuchen, der dem Speicherpuffer entspricht. In einem Beispiel ist der Adressbereich kleiner als eine Speicherseite. Das Datenverarbeitungssystem 151 wird daher mindestens in dem Ausmaß leistungsverbessert, dass es eine Treiberanweisung dazu verwendet, das CLOS-Attribut zur Laufzeit und auf einer pro-Speicherpuffer-Basis zu modifizieren.
  • 8 zeigt Halbleitergehäusevorrichtung 173. Die veranschaulichte Vorrichtung 173 beinhaltet ein oder mehrere Substrate 175 (zum Beispiel Silizium, Saphir, Galliumarsenid) und Logik 177 (zum Beispiel Transistor-Array und andere Integrated-Circuit/IC-Komponenten), die mit dem Substrat (den Substraten) 175 gekoppelt sind. Die Logik 177 kann mindestens teilweise in konfigurierbarer Logik oder Logikhardware mit fester Funktionalität implementiert sein. In einem Beispiel implementiert die Logik 177 einen oder mehrere Aspekte des Verfahrens 30 (2), des Verfahrens 40 (3) und/oder des Verfahrens 50 (4), die bereits diskutiert wurden. Somit kann die Logik 177 einen Laufzeitaufruf an eine Kommunikationsbibliothek erkennen, wobei der Laufzeitaufruf einen Speicherpuffer identifiziert, bestimmen, dass dem Speicherpuffer ein CLOS-Attribut zugeordnet ist, und eine Treiberanweisung zum Modifizieren des CLOS-Attributs als Reaktion auf den Laufzeitaufruf ausgeben. In einer Ausführungsform, um zu bestimmen, dass das CLOS-Attribut dem Speicherpuffer zugeordnet ist, durchsucht die Logik 177 eine Datenstruktur nach einem Adressbereich, der dem Speicherpuffer entspricht. In einem Beispiel ist der Adressbereich kleiner als eine Speicherseite. Die Vorrichtung 173 wird daher mindestens in dem Ausmaß leistungsverbessert, dass sie eine Treiberanweisung dazu verwendet, das CLOS-Attribut zur Laufzeit und auf einer pro-Speicherpuffer-Basis zu modifizieren.
  • In einem Beispiel beinhaltet die Logik 177 Transistorkanalbereiche, die innerhalb des Substrats (der Substrate) 175 positioniert (zum Beispiel eingebettet) sind. Somit kann die Schnittstelle zwischen der Logik 177 und dem Substrat (den Substraten) 175 keine abrupte Abzweigung sein. Es kann auch angenommen werden, dass die Logik 177 eine Epitaxialebene beinhaltet, die auf einem anfänglichen Wafer des Substrats (der Substrate) 175 gewachsen ist.
  • 9 veranschaulicht Prozessorkern 200 gemäß einer Ausführungsform. Der Prozessorkern 200 kann der Kern für jeglichen Prozessortyp, wie zum Beispiel einen Mikroprozessor, einen eingebetteten Prozessor, einen Digital-Signal-Processor (DSP), einen Netzwerkprozessor oder ein anderes Gerät zum Ausführen von Code sein. Obwohl in 9 nur ein Prozessorkern 200 veranschaulicht ist, kann ein Verarbeitungselement alternativ mehr als einen der in 9 veranschaulichten Prozessorkerne 200 beinhalten. Der Prozessorkern 200 kann ein Single-Thread-Kern sein, oder der Prozessorkern 200 kann für mindestens eine Ausführungsform dahingehend multithreaded sein, dass er mehr als einen Hardware-Thread-Kontext (oder „logischen Prozessor“) pro Kern beinhalten kann.
  • 9 veranschaulicht auch Speicher 270, der mit dem Prozessorkern 200 gekoppelt ist. Der Speicher 270 kann jeglicher von einer breiten Palette von Speichern sein (einschließlich verschiedener Ebenen von Speicherhierarchie), wie sie Fachleuten bekannt oder anderweitig verfügbar sind. Der Speicher 270 kann eine oder mehrere Code 213-Anweisung(en) beinhalten, die von dem Prozessorkern 200 ausgeführt werden soll(en), wobei der Code 213 einen oder mehrere Aspekte des Verfahrens 30 (2), des Verfahrens 40 (3) und/oder des Verfahrens 50 (4), die bereits diskutiert wurden, implementieren kann. Der Prozessorkern 200 folgt einer Programmsequenz von durch den Code 213 angezeigten Anweisungen. Jede Anweisung kann in Front-End-Abschnitt 210 eintreten und durch einen oder mehrere Decoder 220 verarbeitet werden. Der Decoder 220 kann als seine Ausgabe eine Mikrooperation, wie zum Beispiel eine Mikrooperation mit fester Breite in einem vordefinierten Format erzeugen, oder kann andere Anweisungen, Mikroanweisungen oder Steuersignale erzeugen, die die ursprüngliche Codeanweisung widerspiegeln. Der veranschaulichte Front-End-Abschnitt 210 beinhaltet auch Registerumbenennungslogik 225 und Planungslogik 230, die im Allgemeinen Ressourcen zuweisen und die der Konvertierungsanweisung entsprechende Operation zur Ausführung in eine Warteschlange stellen.
  • Der Prozessorkern 200 ist einschließlich Ausführungslogik 250 mit einem Satz von Ausführungseinheiten 255-1 bis 255-N gezeigt. Einige Ausführungsformen können eine Anzahl von Ausführungseinheiten beinhalten, die bestimmten Funktionen oder Funktionssätzen gewidmet sind. Andere Ausführungsformen können nur eine Ausführungseinheit oder eine Ausführungseinheit, die eine bestimmte Funktion ausführen kann, beinhalten. Die veranschaulichte Ausführungslogik 250 führt die durch Codeanweisungen spezifizierten Operationen aus.
  • Nach Vervollständigung der Ausführung der durch die Codeanweisungen spezifizierten Operationen zieht Back-End-Logik 260 die Anweisungen des Codes 213 zurück. In einer Ausführungsform ermöglicht der Prozessorkern 200 eine Ausführung außerhalb der Reihenfolge, erfordert jedoch das Zurückziehen innerhalb der Reihenfolge von Anweisungen. Zurückziehungslogik 265 kann eine Vielzahl von Formen annehmen, wie sie Fachleuten bekannt sind (zum Beispiel Puffer neu anordnen oder dergleichen). Auf diese Weise wird der Prozessorkern 200 während der Ausführung des Codes 213 mindestens hinsichtlich der durch den Decoder erzeugten Ausgabe, der durch die Registerumbenennungslogik 225 verwendeten Hardware-Register und -Tabellen, und jeglicher durch die Ausführungslogik 250 modifizierter Register (nicht gezeigt) transformiert.
  • Obwohl in 9 nicht veranschaulicht, kann ein Verarbeitungselement andere Elemente auf dem Chip mit dem Prozessorkern 200 beinhalten. Zum Beispiel kann ein Verarbeitungselement zusammen mit dem Prozessorkern 200 Speichersteuerungslogik beinhalten. Das Verarbeitungselement kann eine I/O-Steuerungslogik beinhalten, und/oder kann eine in die Speichersteuerungslogik integrierte I/O-Steuerungslogik beinhalten. Das Verarbeitungselement kann auch einen oder mehrere Zwischenspeicher beinhalten.
  • Nun Bezugnehmend auf 10, ist ein Blockdiagramm von Datenverarbeitungssystem 1000 gemäß einer Ausführungsform gezeigt. In 10 ist ein Multiprozessorsystem 1000 gezeigt, das erstes Verarbeitungselement 1070 und zweites Verarbeitungselement 1080 beinhaltet. Während zwei Verarbeitungselemente 1070 und 1080 gezeigt sind, versteht es sich, dass eine Ausführungsform des Systems 1000 auch nur ein solches Verarbeitungselement beinhalten kann.
  • Das System 1000 ist als ein Punkt-zu-Punkt-Verbindungssystem veranschaulicht, wobei das erste Verarbeitungselement 1070 und das zweite Verarbeitungselement 1080 über Punkt-zu-Punkt-Verbindung 1050 gekoppelt sind. Es sollte klargestellt werden, dass jegliche oder alle der in 10 veranschaulichten Verbindungen als ein Multi-Drop-Bus anstelle einer Punkt-zu-Punkt-Verbindung implementiert werden können.
  • Wie in 10 gezeigt, kann jedes der Verarbeitungselemente 1070 und 1080 Mehrkernprozessoren sein, einschließlich erster und zweiter Prozessorkerne (das heißt Prozessorkerne 1074a und 1074b und Prozessorkerne 1084a und 1084b). Solche Kerne 1074a, 1074b, 1084a, 1084b können dazu ausgelegt sein, Anweisungscode auf eine Weise auszuführen, die ähnlich der oben in Verbindung mit 9 diskutierten ist.
  • Jedes Verarbeitungselement 1070, 1080 kann mindestens einen geteilten Cache 1896a, 1896b beinhalten. Der geteilte Cache 1896a, 1896b kann Daten (zum Beispiel Anweisungen) speichern, die durch eine oder mehrere Komponenten des Prozessors, wie zum Beispiel die Kerne 1074a, 1074b bzw. 1084a, 1084b, verwendet werden. Zum Beispiel kann der geteilte Cache 1896a, 1896b Daten, die in Speicher 1032, 1034 gespeichert sind, für einen schnelleren Zugriff durch Komponenten des Prozessors lokal zwischenspeichern. In einer oder mehreren Ausführungsformen kann der geteilte Cache 1896a, 1896b ein oder mehrere Mid-Level-Caches, wie zum Beispiel Level 2 (L2)-, Level 3 (L3)-, Level 4 (L4) -Cache oder andere Cache-Level, einen Last-Level-Cache (LLC), und/oder Kombinationen davon beinhalten.
  • Während mit nur zwei Verarbeitungselementen 1070, 1080 gezeigt, versteht es sich, dass der Umfang der vorliegenden Ausführungsformen nicht darauf beschränkt ist. In anderen Ausführungsformen können ein oder mehrere zusätzliche Verarbeitungselemente in einem gegebenen Prozessor vorhanden sein. Alternativ können eines oder mehrere der Verarbeitungselemente 1070, 1080 ein anderes Element als ein Prozessor sein, wie zum Beispiel ein Beschleuniger oder ein Field-Programmable-Gate-Array. Zum Beispiel können zusätzliche Verarbeitungselemente zusätzliche Prozessoren, die dieselben sind, wie ein erster Prozessor 1070, zusätzliche Prozessoren, die heterogen oder asymmetrisch sind, um einen ersten Prozessor 1070 zu verarbeiten, Beschleuniger (wie zum Beispiel Grafikbeschleuniger oder Digital-Signal-Processing (DSP) -Einheiten), Field-Programmable-Gate-Arrays, oder jegliches andere Verarbeitungselement beinhalten. Es kann eine Vielzahl von Unterschieden zwischen den Verarbeitungselementen 1070, 1080 in Bezug auf ein Spektrum von Leistungsmetriken, einschließlich Architektur-, Mikroarchitektur-, Wärme-, Stromverbrauchseigenschaften, und dergleichen, geben. Diese Unterschiede können sich effektiv als Asymmetrie und Heterogenität zwischen den Verarbeitungselementen 1070, 1080 manifestieren. Für mindestens eine Ausführungsform können sich die verschiedenen Verarbeitungselemente 1070, 1080 in demselben Chippaket befinden.
  • Das erste Verarbeitungselement 1070 kann ferner Speichersteuerungslogik (MC) 1072 und Punkt-zu-Punkt (P-P) -Schnittstellen 1076 und 1078 beinhalten. In ähnlicher Weise kann das zweite Verarbeitungselement 1080 MC 1082 und P-P-Schnittstellen 1086 und 1088 beinhalten. Wie in 10 gezeigt, koppeln die MC 1072 und 1082 die Prozessoren mit jeweiligen Speichern, nämlich dem Speicher 1032 und dem Speicher 1034, die Abschnitte eines lokal an die jeweiligen Prozessoren angehängten Hauptspeichers sein können. Während die MC 1072 und 1082 als in die Verarbeitungselemente 1070, 1080 integriert veranschaulicht sind, kann für alternative Ausführungsformen die MC-Logik eine diskrete Logik außerhalb der Verarbeitungselemente 1070, 1080 sein, anstatt darin integriert zu sein.
  • Das erste Verarbeitungselement 1070 und das zweite Verarbeitungselement 1080 können über die P-P-Verbindungen 1076 bzw. 1086 mit I/O-Subsystem 1090 gekoppelt sein. Wie in 10 gezeigt, beinhaltet das I/O-Subsystem 1090 P-P-Schnittstellen 1094 und 1098. Darüber hinaus beinhaltet das I/O-Subsystem 1090 Schnittstelle 1092 zum Koppeln des I/O-Subsystems 1090 mit Hochleistungsgrafik-Engine 1038. In einer Ausführungsform kann Bus 1049 dazu verwendet werden, die Grafikmaschine 1038 mit dem I/O-Subsystem 1090 zu koppeln. Alternativ kann eine Punkt-zu-Punkt-Verbindung diese Komponenten koppeln.
  • Das I/O-Subsystem 1090 kann wiederum über Schnittstelle 1096 mit erstem Bus 1016 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1016 ein Peripheral-Component-Interconnect (PCI) -Bus oder ein Bus, wie zum Beispiel ein PCI-Express-Bus oder ein anderer I/O-Verbindungsbus der dritten Generation sein, obwohl der Umfang der vorliegenden Ausführungsformen nicht darauf beschränkt ist.
  • Wie in 10 gezeigt, können verschiedene I/O-Geräte 1014 (zum Beispiel biometrische Scanner, Lautsprecher, Kameras, Sensoren) mit dem ersten Bus 1016 zusammen mit Busbrücke 1018 gekoppelt sein, die den ersten Bus 1016 mit zweitem Bus 1020 koppeln kann. In einer Ausführungsform kann der zweite Bus 1020 ein Low-Pin-Count (LPC) -Bus sein. Verschiedene Geräte können in einer Ausführungsform mit dem zweiten Bus 1020 gekoppelt werden, einschließlich zum Beispiel Tastatur und/oder Maus 1012, Kommunikationsgerät(e) 1026 und Datenspeicherungseinheit 1019, wie zum Beispiel ein Plattenlaufwerk oder ein anderes Massenspeicherungsgerät, das Code 1030 beinhalten kann. Der veranschaulichte Code 1030 kann einen oder mehrere Aspekte des Verfahrens 30 (2), des Verfahrens 40 (3) und/oder des Verfahrens 50 (4), die bereits diskutiert wurden, implementieren. Ferner kann Audio-I/O 1024 mit dem zweiten Bus 1020 gekoppelt sein, und Batterie 1010 kann das Datenverarbeitungssystem 1000 mit Strom versorgen.
  • Es ist zu beachten, dass andere Ausführungsformen in Betracht gezogen werden. Zum Beispiel kann ein System statt der Punkt-zu-Punkt-Architektur von 10 einen Multi-Drop-Bus oder eine andere solche Kommunikationstopologie implementieren. Auch können die Elemente von 10 alternativ durch Verwenden von mehr oder weniger integrierten Chips als in 10 gezeigt partitioniert werden.
  • Zusätzliche Anmerkungen und Beispiele:
  • Beispiel 1 beinhaltet ein leistungsverbessertes Datenverarbeitungssystem, das eine Netzwerksteuerung, einen mit der Netzwerksteuerung gekoppelten Prozessor und einen mit dem Prozessor gekoppelten Speicher beinhaltet, wobei der Speicher einen Satz ausführbarer Programmanweisungen beinhaltet, die, wenn durch den Prozessor ausgeführt, das Datenverarbeitungssystem dazu veranlassen, einen Laufzeitaufruf an eine Kommunikationsbibliothek zu erkennen, wobei der Laufzeitaufruf einen Speicherpuffer identifiziert, zu bestimmen, dass dem Speicherpuffer ein Class-of-Service (CLOS) -Attribut zugeordnet ist, und eine Treiberanweisung zum Modifizieren des CLOS - Attributs als Reaktion auf den Laufzeitaufruf auszugeben.
  • Beispiel 2 beinhaltet das Datenverarbeitungssystem von Beispiel 1, wobei, um zu bestimmen, dass das CLOS-Attribut dem Speicherpuffer zugeordnet ist, die Anweisungen, wenn ausgeführt, das Datenverarbeitungssystem dazu veranlassen, eine Datenstruktur nach einem Adressbereich zu durchsuchen, der dem Speicherpuffer entspricht, und wobei der Adressbereich kleiner als eine Speicherseite ist.
  • Beispiel 3 beinhaltet das Datenverarbeitungssystem von Beispiel 1, wobei die Treiberanweisung eine Erhöhung in einer Ebene des CLOS-Attributs anfordern soll, wenn der Laufzeitaufruf einem Kommunikationskernel zugeordnet ist.
  • Beispiel 4 beinhaltet das Datenverarbeitungssystem von Beispiel 3, wobei die Anweisungen, wenn ausgeführt, das Datenverarbeitungssystem ferner dazu veranlassen, das CLOS-Attribut als Reaktion auf eine Vervollständigung des Kommunikationskernel auf eine Anfangsebene zurückzugeben.
  • Beispiel 5 beinhaltet das Datenverarbeitungssystem von Beispiel 1, wobei die Treiberanweisung eine Verringerung in einer Ebene des CLOS-Attributs anfordern soll, wenn der Laufzeitaufruf einem Rechenkernel zugeordnet ist.
  • Beispiel 6 beinhaltet das Datenverarbeitungssystem von einem der Beispiele 1 bis 5, wobei die Anweisungen, wenn ausgeführt, das Datenverarbeitungssystem ferner dazu veranlassen, eine Zuweisungsanforderung zu erkennen, wobei die Zuweisungsanforderung den Speicherpuffer identifiziert, und das CLOS-Attribut als Reaktion auf die Zuweisungsanforderung auf eine Anfangsebene zu setzen.
  • Beispiel 7 beinhaltet eine Halbleitervorrichtung, die ein oder mehrere Substrate und eine mit dem einen oder den mehreren Substraten gekoppelte Logik umfasst, wobei die Logik mindestens teilweise in einer oder mehreren konfigurierbaren Logik oder Hardwarelogik mit fester Funktionalität implementiert ist, wobei die Logik mit dem einen oder den mehreren Substraten gekoppelt ist, um einen Laufzeitaufruf an eine Kommunikationsbibliothek zu erkennen, wobei der Laufzeitaufruf einen Speicherpuffer identifiziert, zu bestimmen, dass dem Speicherpuffer ein Class-of-Service (CLOS) -Attribut zugeordnet ist, und eine Treiberanweisung zum Modifizieren des CLOS-Attribut als Reaktion auf den Laufzeitaufruf auszugeben.
  • Beispiel 8 beinhaltet die Halbleitervorrichtung von Beispiel 7, wobei, um zu bestimmen, dass das CLOS-Attribut dem Speicherpuffer zugeordnet ist, die mit dem einen oder den mehreren Substraten gekoppelte Logik eine Datenstruktur nach einem Adressbereich durchsuchen soll, der dem Speicherpuffer entspricht, und wobei der Adressbereich kleiner als eine Speicherseite ist.
  • Beispiel 9 beinhaltet die Halbleitervorrichtung von Beispiel 7, wobei die Treiberanweisung eine Erhöhung in einer Ebene des CLOS-Attributs anfordern soll, wenn der Laufzeitaufruf einem Kommunikationskernel zugeordnet ist.
  • Beispiel 10 beinhaltet die Halbleitervorrichtung von Beispiel 9, wobei die mit dem einen oder den mehreren Substraten gekoppelte Logik das CLOS-Attribut als Reaktion auf eine Vervollständigung des Kommunikationskernel auf eine Anfangsebene zurückgeben soll.
  • Beispiel 11 beinhaltet die Halbleitervorrichtung von Beispiel 7, wobei die Treiberanweisung eine Verringerung in einer Ebene des CLOS-Attributs anfordern soll, wenn der Laufzeitaufruf einem Rechenkernel zugeordnet ist.
  • Beispiel 12 beinhaltet die Halbleitervorrichtung von einem der Beispiele 7 bis 11, wobei die mit dem einen oder den mehreren Substraten gekoppelte Logik eine Zuweisungsanforderung erkennen soll, wobei die Zuweisungsanforderung den Speicherpuffer identifiziert, und das CLOS-Attribut als Reaktion auf die Zuweisungsanforderung auf eine Anfangsebene setzen soll.
  • Beispiel 13 beinhaltet mindestens ein computerlesbares Speicherungsmedium, das einen Satz ausführbarer Programmanweisungen umfasst, die, wenn durch ein Datenverarbeitungssystem ausgeführt, das Datenverarbeitungssystem dazu veranlassen, einen Laufzeitaufruf an eine Kommunikationsbibliothek zu erkennen, wobei der Laufzeitaufruf einen Speicherpuffer identifiziert, zu bestimmen, dass dem Speicherpuffer ein Class-of-Service (CLOS) -Attribut zugeordnet ist, und eine Treiberanweisung zum Modifizieren des CLOS - Attributs als Reaktion auf den Laufzeitaufruf auszugeben.
  • Beispiel 14 beinhaltet das mindestens eine computerlesbare Speicherungsmedium von Beispiel 13, wobei, um zu bestimmen, dass das CLOS-Attribut dem Speicherpuffer zugeordnet ist, die Anweisungen, wenn ausgeführt, das Datenverarbeitungssystem dazu veranlassen, eine Datenstruktur nach einem Adressbereich zu durchsuchen, der dem Speicherpuffer entspricht, und wobei der Adressbereich kleiner als eine Speicherseite ist.
  • Beispiel 15 beinhaltet das mindestens eine computerlesbare Speicherungsmedium von Beispiel 13, wobei die Treiberanweisung eine Erhöhung in einer Ebene des CLOS-Attributs anfordern soll, wenn der Laufzeitaufruf einem Kommunikationskernel zugeordnet ist.
  • Beispiel 16 beinhaltet das mindestens eine computerlesbare Speicherungsmedium von Beispiel 15, wobei die Anweisungen, wenn ausgeführt, das Datenverarbeitungssystem ferner dazu veranlassen, das CLOS-Attribut als Reaktion auf eine Vervollständigung des Kommunikationskernel auf eine Anfangsebene zurückzugeben.
  • Beispiel 17 beinhaltet das mindestens eine computerlesbare Speicherungsmedium von Beispiel 13, wobei die Treiberanweisung eine Verringerung in einer Ebene des CLOS-Attributs anfordern soll, wenn der Laufzeitaufruf einem Rechenkernel zugeordnet ist.
  • Beispiel 18 beinhaltet das mindestens eine computerlesbare Speicherungsmedium von einem der Beispiele 13 bis 17, wobei die Anweisungen, wenn ausgeführt, das Datenverarbeitungssystem ferner dazu veranlassen, eine Zuweisungsanforderung zu erkennen, wobei die Zuweisungsanforderung den Speicherpuffer identifiziert, und das CLOS-Attribut als Reaktion auf die Zuweisungsanforderung auf eine Anfangsebene einzustellen.
  • Beispiel 19 beinhaltet ein Verfahren des Betreibens eines leistungsverbesserten Datenverarbeitungssystems, wobei das Verfahren das Erkennen eines Laufzeitaufrufs an eine Kommunikationsbibliothek, wobei der Laufzeitaufruf einen Speicherpuffer identifiziert, das Bestimmen, dass dem Speicherpuffer ein Class-of-Service (CLOS) -Attribut zugeordnet ist, und das Ausgeben einer Treiberanweisung zum Modifizieren des CLOS-Attributs als Reaktion auf den Laufzeitaufruf umfasst.
  • Beispiel 20 beinhaltet das Verfahren von Beispiel 19, wobei das Bestimmen, dass dem Speicherpuffer ein CLOS-Attribut zugeordnet ist, das Durchsuchen einer Datenstruktur nach einem Adressbereich, der dem Speicherpuffer entspricht, beinhaltet, und wobei der Adressbereich kleiner als eine Speicherseite ist.
  • Beispiel 21 beinhaltet das Verfahren von Beispiel 19, wobei die Treiberanweisung eine Erhöhung in einer Ebene des CLOS-Attributs anfordert, wenn der Laufzeitaufruf einem Kommunikationskernel zugeordnet ist.
  • Beispiel 22 beinhaltet das Verfahren von Beispiel 21, das ferner das Zurückgeben des CLOS-Attributs auf eine Anfangsebene als Reaktion auf eine Vervollständigung des Kommunikationskernel beinhaltet.
  • Beispiel 23 beinhaltet das Verfahren von Beispiel 19, wobei die Treiberanweisung eine Verringerung in einer Ebene des CLOS-Attributs anfordert, wenn der Laufzeitaufruf einem Rechenkernel zugeordnet ist.
  • Beispiel 24 beinhaltet das Verfahren von einem der Beispiele 19 bis 23, das ferner das Erkennen einer Zuweisungsanforderung, wobei die Zuweisungsanforderung den Speicherpuffer identifiziert, und das Einstellen des CLOS-Attributs auf eine Anfangsebene als Reaktion auf die Zuweisungsanforderung beinhaltet.
  • Beispiel 25 beinhaltet Mittel zum Ausführen des Verfahrens von einem der Beispiele 19 bis 24.
  • Somit verwendet die hierin beschriebene Technologie anweisungsbasiertes Einstellen von CLOS-Attributen dazu, es Kommunikationsbibliotheken zu ermöglichen, auszuwählen, welche Puffer diese Attribute haben werden. Die Technologie ermöglicht es der Bibliothek auch, die CLOS-Priorität basierend auf dem Laufzeitverhalten zu erhöhen oder zu verringern. Dementsprechend wird ein Mechanismus zum Abwägen zwischen Rechen- und Kommunikationsleistung erreicht. In der Tat kann die Fähigkeit zur Feinabstimmung des Trainings von DL-Arbeitslasten besonders vorteilhaft sein.
  • Ausführungsformen sind zur Verwendung mit allen Typen von Chips mit integrierten Halbleiterschaltungen („IC“-Chips) anwendbar. Beispiele für diese IC-Chips beinhalten, sind aber nicht beschränkt auf Prozessoren, Steuerungen, Chipsatzkomponenten, Programmable-Logic-Arrays (PLA), Speicherchips, Netzwerkchips, Systems-on-Chip (SoC), SSD/NAND-Steuerungs-ASIC und dergleichen. Zusätzlich sind in einigen der Zeichnungen Signalleiterleitungen mit Linien dargestellt. Einige können unterschiedlich sein, um mehr konstituierende Signalpfade anzuzeigen, können ein Nummern-Etikett haben, um eine Anzahl von konstituierenden Signalpfaden anzuzeigen, und/oder können Pfeile an einem oder mehreren Enden haben, um die primäre Informationsflussrichtung anzuzeigen. Dies sollte jedoch nicht in einer einschränkenden Weise ausgelegt werden. Vielmehr kann ein solches hinzugefügtes Detail in Verbindung mit einer oder mehreren beispielhaften Ausführungsformen dazu verwendet werden, einfacheres Verständnis einer Schaltung zu ermöglichen. Jegliche dargestellten Signalleitungen, ob sie zusätzliche Information haben oder nicht, können tatsächlich ein oder mehrere Signale umfassen, die sich in mehreren Richtungen bewegen können, und können mit jeglichem geeigneten Typ eines Signalschemas, zum Beispiel digitalen oder analogen Leitungen implementiert sein, die mit differentiellen Paaren, optischen Faserleitungen und/oder Single-Ended-Leitungen, implementiert sind.
  • Es können beispielhafte Größen/Modelle/Werte/Bereiche angegeben worden sein, obwohl Ausführungsformen nicht auf dieselben beschränkt sind. Wenn Herstellungstechniken (zum Beispiel Photolithographie) im Laufe der Zeit reifen, wird erwartet, dass Geräte kleinerer Größe hergestellt werden könnten. Zusätzlich dazu können gut bekannte Leistungs- /Masse-Verbindungen zu IC-Chips und andere Komponenten in den Figuren zur Vereinfachung der Veranschaulichung und Diskussion gezeigt sein oder nicht, und um bestimmte Aspekte der Ausführungsformen nicht unklar zu machen. Ferner können Anordnungen in Blockdiagrammform gezeigt sein, um zu vermeiden, Ausführungsformen unklar zu machen, und auch angesichts der Tatsache, dass Einzelheiten im Bezug auf die Implementierung solcher Blockdiagrammanordnungen in hohem Maße von dem Datenverarbeitungssystem abhängen, innerhalb dessen die Ausführungsform implementiert werden soll, das heißt, solche Einzelheiten sollten deutlich innerhalb des Geltungsbereichs eines Fachmanns sein. Wo spezifische Details (zum Beispiel Schaltungen) dargelegt sind, um beispielhafte Ausführungsformen zu beschreiben, sollte es für einen Fachmann ersichtlich sein, dass Ausführungsformen ohne diese spezifischen Details oder mit einer Variation davon praktiziert werden können. Die Beschreibung ist somit als veranschaulichend anstatt als einschränkend anzusehen.
  • Der Ausdruck „gekoppelt“ kann hierin verwendet werden, um sich auf jeglichen Typ von Beziehung, direkt oder indirekt, zwischen den fraglichen Komponenten zu beziehen, und kann für elektrische, mechanische, Fluid- , optische, elektromagnetische, elektromechanische oder andere Verbindungen anwendbar sein. Zusätzlich können die Begriffe „erster“, „zweiter“ usw. hierin nur zur Erleichterung der Diskussion verwendet werden, und tragen keine besondere zeitliche oder chronologische Bedeutung, sofern nicht anders angegeben.
  • Wie in dieser Anmeldung und in den Ansprüchen verwendet, kann eine Liste von Gegenständen, die durch den Ausdruck „eines oder mehrere von“ verbunden sind, jegliche Kombination der aufgelisteten Begriffe bedeuten. Zum Beispiel kann die Phrase „mindestens eines von A, B oder C“ A; B; C; A und B; A und C; B und C; oder A, B und C bedeuten.
  • Fachleute werden von der vorstehenden Beschreibung erkennen, dass die breiten Techniken der Ausführungsformen in einer Vielzahl von Formen implementiert werden können. Deshalb sollte, während die Ausführungsformen in Verbindung mit bestimmten Beispielen davon beschrieben wurden, der wahre Umfang der Ausführungsformen nicht auf diese beschränkt sein, da andere Modifikationen für den Fachmann bei einer Studie der Zeichnungen, Spezifikation und der folgenden Ansprüche offensichtlich werden.

Claims (9)

  1. Datenverarbeitungssystem, das Folgendes umfasst: eine Netzwerksteuerung; einen mit der Netzwerksteuerung gekoppelten Prozessor; und einen mit dem Prozessor gekoppelten Speicher, wobei der Speicher einen Satz ausführbarer Programmanweisungen beinhaltet, die, wenn durch den Prozessor ausgeführt, das Datenverarbeitungssystem dazu veranlassen: einen Laufzeitaufruf an eine Kommunikationsbibliothek zu erkennen, wobei der Laufzeitaufruf einen Speicherpuffer identifiziert, zu bestimmen, dass dem Speicherpuffer ein Class-of-Service (CLOS) -Attribut zugeordnet ist, und eine Treiberanweisung auszugeben, um das CLOS-Attribut als Reaktion auf den Laufzeitaufruf zu modifizieren; wobei optional, um zu bestimmen, dass das CLOS-Attribut dem Speicherpuffer zugeordnet ist, die Anweisungen, wenn ausgeführt, das Datenverarbeitungssystem dazu veranlassen, eine Datenstruktur nach einem Adressbereich zu durchsuchen, der dem Speicherpuffer entspricht, und wobei der Adressbereich kleiner als eine Speicherseite ist.
  2. Datenverarbeitungssystem nach Anspruch 1, wobei die Treiberanweisung eine Erhöhung in einer Ebene des CLOS-Attributs anfordern soll, wenn der Laufzeitaufruf einem Kommunikationskernel zugeordnet ist; wobei optional die Anweisungen, wenn ausgeführt, das Datenverarbeitungssystem ferner dazu veranlassen, das CLOS-Attribut als Reaktion auf eine Vervollständigung des Kommunikationskernel auf eine Anfangsebene zurückzugeben.
  3. Datenverarbeitungssystem nach einem der Ansprüche 1 oder 2, wobei die Treiberanweisung eine Verringerung in einer Ebene des CLOS-Attributs anfordern soll, wenn der Laufzeitaufruf einem Rechenkernel zugeordnet ist; und/oder wobei die Anweisungen, wenn ausgeführt, das Datenverarbeitungssystem ferner dazu veranlassen: eine Zuweisungsanforderung zu erkennen, wobei die Zuweisungsanforderung den Speicherpuffer identifiziert; und das CLOS-Attribut als Reaktion auf die Zuweisungsanforderung auf eine Anfangsebene einzustellen.
  4. Verfahren, das Folgendes umfasst: das Erkennen eines Laufzeitaufrufs an eine Kommunikationsbibliothek, wobei der Laufzeitaufruf einen Speicherpuffer identifiziert; das Bestimmen, dass dem Speicherpuffer ein Class-of-Service (CLOS) -Attribut zugeordnet ist; und das Ausgeben einer Treiberanweisung zum Modifizieren des CLOS-Attributs als Reaktion auf den Laufzeitaufruf; wobei optional das Bestimmen, dass dem Speicherpuffer ein CLOS-Attribut zugeordnet ist, das Durchsuchen einer Datenstruktur nach einem Adressbereich, der dem Speicherpuffer entspricht, beinhaltet, und wobei der Adressbereich kleiner als eine Speicherseite ist.
  5. Verfahren nach Anspruch 4, wobei die Treiberanweisung eine Erhöhung in einer Ebene des CLOS-Attributs anfordert, wenn der Laufzeitaufruf einem Kommunikationskernel zugeordnet ist; das optional ferner das Zurückgeben des CLOS-Attributs auf eine Anfangsebene als Reaktion auf eine Vervollständigung des Kommunikationskernel umfasst.
  6. Verfahren nach einem der Ansprüche 4 oder 5, wobei die Treiberanweisung eine Verringerung in einer Ebene des CLOS-Attributs anfordert, wenn der Laufzeitaufruf einem Rechenkernel zugeordnet ist; und/oder das Verfahren ferner Folgendes umfasst: das Erkennen einer Zuweisungsanforderung, wobei die Zuweisungsanforderung den Speicherpuffer identifiziert; und das Einstellen des CLOS-Attributs auf eine Anfangsebene als Reaktion auf die Zuweisungsanforderung.
  7. Halbleitervorrichtung, die Folgendes umfasst: ein oder mehrere Substrate; und mit dem einen oder den mehreren Substraten gekoppelte Logik, wobei die Logik mindestens teilweise in einer oder mehreren konfigurierbaren Logik oder Hardwarelogik mit fester Funktionalität implementiert ist, wobei die Logik mit dem einen oder den mehreren Substraten gekoppelt ist, um ein Verfahren nach einem der Ansprüche 4 bis 6 zu implementieren.
  8. Mindestens ein computerlesbares Speicherungsmedium, das einen Satz ausführbarer Programmanweisungen umfasst, die, wenn durch ein Datenverarbeitungssystem ausgeführt, das Datenverarbeitungssystem dazu veranlassen, ein Verfahren nach einem der Ansprüche 4 bis 6 zu implementieren.
  9. Vorrichtung, die Mittel umfasst, um das Verfahren nach einem der Ansprüche 4 bis 6 auszuführen.
DE102020126699.5A 2019-12-17 2020-10-12 Initialisierung und verwaltung von class-of-service-attributen zur laufzeit, um deep-learning-training in verteilten umgebungen zu optimieren Pending DE102020126699A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/717,647 US11249910B2 (en) 2019-12-17 2019-12-17 Initialization and management of class of service attributes in runtime to optimize deep learning training in distributed environments
US16/717,647 2019-12-17

Publications (1)

Publication Number Publication Date
DE102020126699A1 true DE102020126699A1 (de) 2021-06-17

Family

ID=70279617

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020126699.5A Pending DE102020126699A1 (de) 2019-12-17 2020-10-12 Initialisierung und verwaltung von class-of-service-attributen zur laufzeit, um deep-learning-training in verteilten umgebungen zu optimieren

Country Status (5)

Country Link
US (1) US11249910B2 (de)
JP (1) JP2021096829A (de)
KR (1) KR20210077588A (de)
CN (1) CN112988376A (de)
DE (1) DE102020126699A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112416820B (zh) * 2020-11-04 2022-05-27 国网山东省电力公司信息通信公司 一种数据包分类存储方法及系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0600417D0 (en) * 2006-01-10 2006-02-15 Level 5 Networks Inc Virtualisation support
US9130968B2 (en) * 2008-01-16 2015-09-08 Netapp, Inc. Clustered cache appliance system and methodology
US9208071B2 (en) * 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US8516578B1 (en) * 2010-12-22 2013-08-20 Google Inc. Vertex array access bounds checking
US8780722B2 (en) * 2012-02-03 2014-07-15 Apple Inc. Scheduling packet transmission on a client device using packet classifications including high priority network control packets
WO2014107358A1 (en) * 2013-01-03 2014-07-10 Intel Corporation Packet data connections in a wireless communication system using a wireless local area network
US10496433B2 (en) * 2014-11-24 2019-12-03 Red Hat, Inc. Modification of context saving functions
US10236031B1 (en) * 2016-04-05 2019-03-19 Digimarc Corporation Timeline reconstruction using dynamic path estimation from detections in audio-video signals
US10628280B1 (en) * 2018-02-06 2020-04-21 Northrop Grumman Systems Corporation Event logger
US10481817B2 (en) * 2018-06-28 2019-11-19 Intel Corporation Methods and apparatus to optimize dynamic memory assignments in multi-tiered memory systems

Also Published As

Publication number Publication date
US11249910B2 (en) 2022-02-15
CN112988376A (zh) 2021-06-18
JP2021096829A (ja) 2021-06-24
KR20210077588A (ko) 2021-06-25
US20200125499A1 (en) 2020-04-23

Similar Documents

Publication Publication Date Title
DE102013208554B4 (de) Verfahren und System zum Managen verschachtelter Ausführungsströme
DE112013002069B4 (de) Hohes Leistungsverbindungskohärenz-Protokoll
DE102014003798B4 (de) Verfahren zum Booten eines heterogenen Systems und Präsentieren einer symmetrischen Kernansicht
DE102019106669A1 (de) Verfahren und anordnungen zum verwalten von speicher in kaskadierten neuronalen netzen
DE112013001361B4 (de) System auf einem Chip, Verfahren, maschinenlesbares Medium und System für die Bereitstellung einer Snoop-Filterung zugeordnet mit einem Datenpuffer
DE102015109124B4 (de) Cache-Wegvorhersage
DE102020132716A1 (de) System zum analysieren und verbessern von software auf der basis von graph attention netzen
DE102012221502A1 (de) System und Verfahren zum Durchführen von gestalteter-Speicherzugriff-Operationen
DE102010055267A1 (de) Gemeinsames Benutzen von Ressourcen zwischen einer CPU und GPU
DE112013004751T5 (de) Prozessor mit mehreren Kernen, gemeinsam genutzter Kernerweiterungslogik und gemeinsam genutzten Kernerweiterungsnutzungsbefehlen
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE102012222394A1 (de) Verfahren und Vorrichtung zum Sammelzwischenspeichern von Quelloperanden
DE112012007115T5 (de) Wahlweise Logikprozessor-Zählung und Typauswahl für eine gegebene Arbeitsbelastung basierend auf Wärme- und Leistungsbudget-Einschränkungen der Plattform
DE102020129195A1 (de) Vereinheitlichtes programmiermodul für eine funktion-als-ein-dienst-berechnung
DE102020113480A1 (de) Zerlegte gleitkomma-multiplikation
DE102020121601A1 (de) Persistenter Notizblockspeicher zum Datenaustausch zwischen Programmen
DE112017001704T5 (de) Arbiterbasierte Serialisierung von Prozessor-System-Management-Interrupt-Ereignissen
DE102016006399A1 (de) Hardwarevorrichtungen und verfahren zum durchführen von transaktionaler energieverwaltung
DE102017124078A1 (de) Ordinale modifikation der dienstgüte
DE102018214008A1 (de) Dynamische Plattformmerkmaleinstellung basierend auf Laufzeiterfordernissen virtueller Maschinen
DE102020130528A1 (de) Technik für automatisches Lernen, um Computeranweisungen für heterogene Systeme zu partitionieren
DE112016007538T5 (de) Technologie zur realisierung eines binärverzweigten non-volatile-memory-express-treibers
DE102020126699A1 (de) Initialisierung und verwaltung von class-of-service-attributen zur laufzeit, um deep-learning-training in verteilten umgebungen zu optimieren
DE202019005663U1 (de) Vorrichtung und System zum verbesserten Datenvorabrufen basierend auf NUMA-Eigenschaften
DE102021102746A1 (de) Lese/schreib-seitenreplikation für mehrere recheneinheiten