DE102019106669A1 - Verfahren und anordnungen zum verwalten von speicher in kaskadierten neuronalen netzen - Google Patents

Verfahren und anordnungen zum verwalten von speicher in kaskadierten neuronalen netzen Download PDF

Info

Publication number
DE102019106669A1
DE102019106669A1 DE102019106669.7A DE102019106669A DE102019106669A1 DE 102019106669 A1 DE102019106669 A1 DE 102019106669A1 DE 102019106669 A DE102019106669 A DE 102019106669A DE 102019106669 A1 DE102019106669 A1 DE 102019106669A1
Authority
DE
Germany
Prior art keywords
shared memory
memory block
logic circuitry
neural network
stages
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
DE102019106669.7A
Other languages
English (en)
Inventor
Byoungwon Choe
Kwangwoong Park
Seok-Yong Byun
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 DE102019106669A1 publication Critical patent/DE102019106669A1/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/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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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

Landscapes

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

Abstract

Eine Logik kann die Größe eines Laufzeitspeichers für Tiefes-neuronales-Netz-Inferenzberechnungen reduzieren. Die Logik kann, für zwei oder mehr Stufen eines neuronalen Netzes, eine Anzahl an Gemeinsam-genutzter-Block-Zuordnungen, oder Gemeinsam-genutzter-Speicherblock-Zuordnungen, die während einer Ausführung der zwei oder mehr Stufen gleichzeitig existieren, bestimmen. Die Logik kann die Anzahlen der Gemeinsam-genutzter-Block-Zuordnungen vergleichen, um eine maximale Anzahl der Anzahlen zu bestimmen. Die Logik kann eine Inferenzberechnungszeit für Tiefes-neuronales-Netz-Inferenzberechnungen reduzieren. Die Logik kann eine Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen der Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen bestimmen, um Daten zum Speichern in einem gemeinsam genutzten Speicher während einer Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes aufzunehmen. Die Logik kann eine Batch-Größe pro Stufe der zwei oder mehr Stufen eines kaskadierten neuronalen Netzes basierend auf einem Fehlen von gegenseitigen Abhängigkeiten zwischen Eingabedaten bestimmen.

Description

  • TECHNISCHES GEBIET
  • Hier beschriebene Ausführungsformen sind in dem Gebiet der Speicherverwaltung. Insbesondere betreffen die Ausführungsformen Verfahren und Anordnungen zum Verwalten einer Speicherzuordnung in kaskadierten neuronalen Netzen.
  • HINTERGRUND
  • Angetrieben durch die Verfügbarkeit von gewaltigen Daten und der Rechenfähigkeit zum Verarbeiten der Daten ist tiefgehendes Lernen ein entscheidendes Werkzeug zum Lösen komplexer Probleme über einen weiten Bereich von Domänen, wie etwa Bilderkennung, Sprachverarbeitung, natürliche Sprachverarbeitung, Sprachübersetzung und autonome Fahrzeuge. Faltende neuronale Netze (CNNs: Convolutional Neural Networks) sind zu dem beliebtesten Algorithmusansatz für tiefgehendes Lernen für viele dieser Domänen geworden. Hohe Leistungsfähigkeit und extreme Energieeffizienz sind kritisch für Einsätze von CNNs in einem weiten Bereich von Situationen, insbesondere Mobilplattformen, wie etwa autonome Fahrzeuge, Kameras und elektronische persönliche Assistenten.
  • Figurenliste
    • 1A-B stellen Ausführungsformen von Systemen dar, die Prozessoren, einen Speicher, eine neuronale Rechen-Engine und Neuronales-Netz-Pipelines beinhalten;
    • 1C-D stellen Ausführungsformen eines Prozesses für eine Speicherverwaltungslogikschaltungsanordnung zum Optimieren einer geteilten Speicherblockzuordnung, wie etwa die in 1A-B veranschaulichte Speicherverwaltungslogikschaltungsanordung, dar;
    • 1E stellt eine Ausführungsform einer Tabelle zum Vergleichen einer Speichernutzung durch andere Implementierungen gegenüber einer Speichernutzung durch eine Speicherverwaltungslogikschaltungsanordnung, wie etwa die in 1A und 1B gezeigte Speicherverwaltungslogikschaltungsanordnung, dar;
    • 1F stellt eine Ausführungsform einer Tabelle zum Vergleichen von Inferenzgeschwindigkeiten durch andere Implementierungen gegenüber einer Inferenzgeschwindigkeit durch eine Speicherverwaltungslogikschaltungsanordnung, wie etwa die in 1A und 1B gezeigte Speicherverwaltungslogikschaltungsanordnung, dar;
    • 1G stellt eine Ausführungsform von Stufen eines tiefen neuronalen Netzes und eines gemeinsam genutzten Speichers dar, um einen Prozess einer Batch-Verarbeitung durch eine Speicherverwaltungslogikschaltungsanordnung, wie etwa die in 1A und 1B gezeigte Speicherverwaltungslogikschaltungsanordnung, zu veranschaulichen;
    • 2 stellt eine Ausführungsform einer Speicherverwaltungslogikschaltungsanordnung, wie etwa die in 1A und 1B gezeigten Speicherverwaltungslogikschaltungsanordnung, dar;
    • 3A-3C stellen Flussdiagramme von Ausführungsformen zum Optimieren von Speicherzuordnungen und zum Implementieren einer Batch-Verarbeitung durch eine Speicherverwaltungslogikschaltungsanordnung, wie etwa die in 1A und 1B gezeigte Speicherverwaltungslogikschaltungsanordnung, dar; und
    • 4 stellt eine Ausführungsform eines Systems dar, das eine Mehrfachprozessorplattform, einen Chipsatz, Busse und Zubehör beinhaltet;
    • 5-6 stellen Ausführungsformen eines Speicherungsmediums und einer Rechenplattform dar.
  • AUSFÜHRLICHE BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
  • Nachfolgendes ist eine ausführliche Beschreibung von Ausführungsformen, die in den Zeichnungen dargestellt sind. Die ausführliche Beschreibung deckt alle Modifikationen, Äquivalente und Alternativen ab, die in die angehängten Ansprüche fallen.
  • Tiefe neuronale Netze (DNN: Deep Neural Networks) sind zum Abwickeln vieler Computersichtaufgaben beliebt geworden, aber sie sind zu schwer, um auf eingebetteten Vorrichtungen abzulaufen, hauptsächlich aufgrund begrenzter Speicherressourcen sowie einer geringen Rechenleistung. Viele DNNs umfassen eine kaskadierte Struktur zur Gesichtsdetektion, Objektdetektion oder Haltungsdetektion, wobei die anschließende Netzstufe die Ausgabe(n) von der vorherigen Stufe verarbeitet. Solche kaskadierten Netze können jedoch mehr Laufzeitspeicher bei einer Inferenz erfordern und es schwieriger machen, sie in eingebetteten Vorrichtungen einzusetzen.
  • Es gibt zwei Hauptzustände für die neuronalen Netze, die Training und Inferenz beinhalten. Während des Trainingsprozesses wird typischerweise ein Experte für tiefgehendes Lernen das Netz konstruieren, die Zahl an Schichten in dem neuronalen Netz, die Operation, die durch jede Schicht durchgeführt wird, und die Konnektivität zwischen Schichten einrichten. Viele Schichten weisen Parameter, typischerweise Filtergewichtungen, auf, die eine durch die Schicht durchgeführte genaue Berechnung bestimmen. Das Ziel des Trainingsprozesses besteht darin, die Filtergewichtungen zu lernen, üblicherweise über eine stochastische gradientenabstiegsbasierte Exkursion durch den Raum von Gewichtungen. Sobald der Trainingsprozess abgeschlossen ist, setzt eine Inferenz basierend auf dem trainierten neuronalen Netz typischerweise eine Vorwärtsausbreitungsberechnung für Eingabedaten ein, um Ausgabedaten zu erzeugen.
  • Eingabedaten können in der Form von Tensordaten vorliegen. Der Tensor ist ein geometrisches Objekt, das lineare Beziehungen zwischen geometrischen Vektoren, Skalaren und anderen Tensoren beschreibt. Ein organisiertes mehrdimensionales Array aus numerischen Werten, oder Tensordaten, kann einen Tensor repräsentieren. Die Ordnung (auch der Grad oder Rang genannt) eines Tensors ist die Dimensionalität des Arrays oder äquivalent die Zahl an Indizes, die eine Komponente dieses Arrays beschriften. Zum Beispiel wird eine lineare Abbildung durch eine Matrix (ein 2-dimensionales Array) in einer Basis repräsentiert und ist daher ein Tensor 2. Ordnung. Tensoren als Eingaben und Ausgaben können von 1. Ordnung bis zur 5. Ordnung oder größer reichen. Bei vielen Anwendungen können die Tensoren jedoch von 2. Ordnung oder 3. Ordnung sein.
  • Obwohl es viele Versuche gab, tiefgehendes Lernen auf kleinen eingebetteten Vorrichtungen mit begrenzten Rechen- und Speicherressourcen einzusetzen, konzentrieren sich die meisten der vorhergehenden Verfahren auf das Reduzieren von Rechenressourcen während der Inferenz. Ausführungsformen hier adressieren eine Speicherverwaltung für Inferenzberechnungen, um Effizienzen bei der Verwendung von Speicherressourcen zu erhöhen, was Implementierungen auf kleinen eingebetteten Vorrichtungen erleichtern kann.
  • Einige Ausführungsformen analysieren die kaskadierten tiefen neuronalen Netze systematisch, um eine minimale Speichergröße zum Ausführen der Tiefgehendes-Lemen-Inferenz zu finden. Zudem verarbeiten viele Ausführungsformen jede Kaskadenstufe des neuronalen Netzes in einem Batch, um die beste Geschwindigkeit bei der minimalen Speichernutzung zu erhalten. Folglich bieten viele Ausführungsformen Arten, um tiefgehendes Lernen auf eingebetteten Vorrichtungen zu ermöglichen, ohne Speicherressourcen auf Serverebene zu erfordern.
  • Zum Optimieren der Speichernutzung nutzen viele Ausführungsformen den Fluss von Inferenzberechnungen durch ein neuronales Netz aus. Im Gegensatz zu dem Trainingsprozess sind viele Inferenzberechnungen azyklisch, was bedeutet, dass die Ergebnisse typischerweise nachfolgende Berechnungen versorgen anstatt wieder zurück zu vorherigen Berechnungen zu gehen. Ausführungsformen können jede Stufe eines neuronalen Netzes für Inferenzberechnungen als einen gelenkten azyklischen Graphen für Analysen behandeln. Dementsprechend empfängt eine Stufe des neuronalen Netzes Eingaben und produziert Ausgaben, die nachfolgende Schichten in dem neuronalen Netz beeinflussen.
  • Viele Ausführungsformen analysieren jede Stufe der kaskadierten Netze, um die optimale Speichergröße von dem größten Teilnetz zu finden, das den größten Laufzeitspeicher erfordert. Einige Ausführungsformen führen einen effektiven Speicherzuordnungsoptimierer anstelle eines einfachen Rundlaufverfahrens zum Zuordnen von Tensordaten zu gemeinsam nutzbaren Blöcken ein. Manche Tiefgehendes-Lernen-Inferenzlaufzeiten, wie Caffe, können gemeinsam genutzte Blöcke verwenden, um die Zahl an Speicherzuordnungen und -freigaben zu minimieren.
  • Neuronale Netze, die Bilder zur Gesichtsdetektion und Objektdetektion verarbeiten, kaskadieren typischerweise einige Stufen neuronaler Netze und führen einige Iterationen der gleichen Inferenzberechnung bei jeder Stufe durch. Manche Ausführungsformen nutzen die mehreren Inferenzberechnungen bei jeder Stufe, die azyklische Natur der Berechnungen und die optimierte Speichernutzung durch Batching der Inferenzberechnungen bei einer oder mehreren der Stufen in dem möglichen Ausmaß. Mit anderen Worten führen vorherige Ausführungsformen Inferenzberechnungen seriell bei einer Stufe für jede Eingabe bei dieser Stufe (z. B. jedes Bild) durch. Viele Ausführungsformen hier verarbeiten die Eingaben als Batch oder verarbeiten diese Eingaben parallel, innerhalb einer festen Speichergröße, um die Geschwindigkeit einer Verarbeitung der Eingabedaten zu erhöhen.
  • Viele Ausführungsformen analysieren, ob ein Batching in jeder Stufe der Kaskade angewandt werden kann. Dann berechnen für jede Stufe, die für eine Batch-Verarbeitung geeignet ist, viele Ausführungsformen die maximale Zahl für die Batch-Größe in der festen Gemeinsam-genutzter-Block-Größe. Infolgedessen reduzieren viele Ausführungsformen die Rechenzeit für Inferenzberechnungen, indem einige Stufen in dem Batch-Modus laufen, während sie auch die minimale Speichergröße verwenden. Viele Ausführungsformen führen komplizierte Tiefes-neuronales-Netz(DNN)-Kaskaden auf eingebetteten Vorrichtungen mit begrenzter Rechenleistung und begrenztem Speicher aus.
  • Verschiedene Ausführungsformen können dazu gestaltet sein, unterschiedliche technische Probleme zu behandeln, die mit Speicherzuordnungen für Inferenzberechnungen für kaskadierte neuronale Netze assoziiert sind, wie etwa in eingebetteten Vorrichtungen mit begrenzten Speicherressourcen. Andere technische Probleme können Folgendes beinhalten: Reduzieren einer Speichernutzung in einem gemeinsam genutzten Speicher während einer Ausführung kaskadierter neuronaler Netze für Inferenzberechnungen; serielle Inferenzberechnungen bei jeder Stufe in einem kaskadierten neuronalen Netz; begrenzte Speicher- und Rechenressourcen in einer eingebetteten Vorrichtung; Bestimmen einer Batch-Größe für Batching-Stufen von Inferenzberechnungen; Bestimmen, ob Eingabedaten als Batch verarbeitet werden können, für Inferenzberechnungen bei jeder Stufe eines kaskadierten neuronalen Netzes; und/oder dergleichen.
  • Andere technische Probleme als jene oben besprochenen können durch eine oder mehrere unterschiedliche Ausführungsformen behandelt werden. Beispielsweise können manche Ausführungsformen, die Probleme behandeln, die mit einer Speicherzuordnung für Inferenzberechnungen für kaskadierte neuronale Netze assoziiert sind, dies durch ein oder mehrere unterschiedliche technische Mittel vornehmen, wie etwa Folgendes: Bestimmen, für zwei oder mehr Stufen eines kaskadierten neuronalen Netzes, einer Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen, die während einer Ausführung der zwei oder mehr Stufen gleichzeitig existieren; Bestimmen einer Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen der Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen, um Daten zum Speichern in einem gemeinsam genutzten Speicher während einer Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes aufzunehmen; Erzeugen einer Liste der Gemeinsam-genutzter-Speicherblock-Zuordnungen, die gleichzeitig während einer Ausführung der zwei oder mehr Stufen existieren, und von Größeninformationen für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen; Bestimmen einer Batch-Größe pro Stufe der zwei oder mehr Stufen eines kaskadierten neuronalen Netzes; Bestimmen einer Anzahl an Eingaben für eine Stufe der zwei oder mehr Stufen, denen gegenseitige Abhängigkeiten fehlen; Bestimmen der Batch-Größe basierend auf einer festen Menge eines gemeinsam genutzten Speichers, der für eine Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes verfügbar ist; Bestimmen der Batch-Größe basierend auf der maximalen Anzahl, der Größe, die für alle Gemeinsam-genutzter-Speicherblock-Zuordnungen bestimmt wird, und der Anzahl an Eingaben; Bestimmen einer Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen für Tensordaten zur Speicherung in dem gemeinsam genutzten Speicher und von Größeninformationen für die Tensordaten; Berechnen einer Batch-Größe basierend auf einem Verhältnis einer Eingabedatengröße einer ersten Stufe der zwei oder mehr Stufen zu einer Eingabedatengröße einer anderen Stufe der zwei oder mehr Stufen; Vergleichen von Anzahlen der Gemeinsam-genutzter-Speicherblock-Zuordnungen, die gleichzeitig während einer Ausführung von jeder der zwei oder mehr Stufen des kaskadierten neuronalen Netzes existieren, um eine maximale Anzahl dieser Anzahlen der Gemeinsam-genutzter-Speicherblock-Zuordnungen zu bestimmen; und dergleichen.
  • Einige Ausführungsformen umfassen Systeme mit mehreren Prozessorkernen, wie etwa zentrale Server, Zugangspunkte und/oder Stationen (STAs), wie etwa Modems, Router, Switches, Server, Workstations, Netbooks, Mobilvorrichtungen (Laptop, Smartphone, Tablet und dergleichen), Sensoren, Zähler, Steuerungen, Instrumente, Monitore, Heim- oder Bürogeräte, Internet-der-Dinge(IOT: Internet Of Things)-Ausrüstung (Armbanduhren, Brillen, Kopfhörer und dergleichen) und dergleichen. Manche Ausführungsformen können z. B. Innen- und/oder Außen-„Smart“-Stromnetz- und -Sensorvorrichtungen bereitstellen. Bei verschiedenen Ausführungsformen stehen diese Vorrichtungen mit speziellen Anwendungen in Zusammenhang, wie etwa Gesundheitswesen-, Heim-, kommerzielle Büro- und Einzelhandel-, Sicherheits- und Industrieautomatisierungs- und - überwachungsanwendungen sowie Fahrzeuganwendungen (Kraftfahrzeuge, selbstfahrende Fahrzeuge, Flugzeuge, Drohnen und dergleichen) und dergleichen.
  • Nun unter Zuwendung zu den Zeichnungen veranschaulicht 1A eine Ausführungsform eines Systems 1000. Das System 1000 kann ein eingebettetes System sein, wie etwa eine Tiefgehendes-Lemen-Beschleuniger-Karte, ein Prozessor mit Tiefgehendes-Lernen-Beschleunigung, ein neuronaler Rechen-Stick oder dergleichen. Das System 1000 umfasst eine Schnittstelle(SST) 1015, (einen) Prozessor(en) 1020, einen Speicher 1030, eine neuronale Rechen-Engine 1040, Neuronales-Netz-Pipelines 1050 und (einen) Vektorprozessor(en) 1060. Bei manchen Ausführungsformen umfasst das System 1000 ein System-auf-einem-Chip (SOC: System On a Chip) und bei anderen Ausführungsformen beinhaltet das System 1000 eine Leiterplatte oder ein Chipgehäuse mit zwei oder mehr diskreten Komponenten.
  • Die SST 1015 kann einen Universal-Serial-Bus(USB)-Port, eine Peripheral-Component-Interconnect-enhanced(PCIe)-Bus-Schnittstelle, eine Punkt-zu-Punkt-Schnittstelle, eine Drahtloskommunikationsschnittstelle und/oder dergleichen umfassen. Die SST 1015 kann mit einem Host-System koppeln, um Eingabedaten für ein vortrainiertes neuronales Netz zu empfangen, das sich in dem System 1000 in dem Speicher 1030, dem (den) Prozessor(en) 1020 und/oder dem (den) Vektorprozessor(en) 1060 befindet. Bei weiteren Ausführungsformen kann die SST 1015 mit dem Host-System koppeln, um ein vortrainiertes neuronales Netz zur Ausführung auf dem System 1000 zu empfangen.
  • Der (die) Prozessor(en) 1020 kann (können) die Hauptprozessoren für das System 1000 umfassen und kann (können) ein Betriebssystem ausführen, das sich in dem Code 1032 in dem Speicher 1030 befindet. Das Betriebssystem kann vortrainierte tiefe neuronale Netze (DNNs) über einen Hardwarebeschleuniger, die neuronale Rechen-Engine 1040, die Neuronales-Netz-Pipelines 1050 und den (die) Vektorprozessor(en) 1060 empfangen, speichern und ausführen. Beispielsweise kann das Host-System ein DNN mit kaskadierten Stufen für eine Gesichtserkennung trainieren und kann das DNN an das System 1000 für Inferenzberechnungen übertragen. Danach kann das Host-System Eingabedaten an das DNN liefern, wie etwa Bilder als Eingabedaten in der Form von Tensordaten. Das System 1000 kann die Ausgabe des DNN nach Abschluss der Inferenzberechnungen an den Bildern an das Host-System übertragen.
  • Bei der vorliegenden Ausführungsform beinhalten der (die) Prozessor(en) 1020 und der Speicher 1030 eine Speicherverwaltungslogikschaltungsanordnung 1022 bzw. 1034. Die Speicherverwaltungslogikschaltungsanordnung 1022 kann eine Prozessorschaltungsanordnung aus (einem) Prozessor(en) 1020 umfassen, die Middleware-Code speichern und/oder ausführen, um eine Speichernutzung eines gemeinsam genutzten Speichers durch ein DNN während einer Ausführung des DNN zu verwalten.
  • Die Speicherverwaltungslogikschaltungsanordnung 1022 und/oder 1034 kann einen Speicherzuordnungsoptimierer zum Optimieren der Verwendung eines gemeinsam genutzten Speichers während einer Ausführung der Stufen des DNN umfassen und kann eine oder mehrere Möglichkeiten mit Stufen des DNN zum Durchführen einer Batch-Verarbeitung von Eingabedaten für die eine oder die mehreren der Stufen identifizieren. Der Speicherzuordnungsoptimierer kann eine notwendige Zahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen und jede Gemeinsam-genutzter-Block-Zuordnungsgröße für sämtliche Schichten oder Unterstufen eines Kaskaden-DNN berechnen.
  • Nun unter Bezugnahme auf 1A und 1C stellt 1C eine Ausführungsform eines Prozesses durch eine Speicherverwaltungslogikschaltungsanordnung dar, die Gemeinsam-genutzter-Speicherblock-Zuordnungen optimieren kann, wie etwa die in 1A-B veranschaulichte Speicherverwaltungslogikschaltungsanordnung. 1C veranschaulicht eine DNN-Struktur 1110 für eine Stufe des DNN, Lebenszeiten Gemeinsam-genutzter-Speicherblock-Zuordnungen 1130 und eine Liste von gleichzeitig existierenden Blockzuordnungen 1150. Bei manchen Ausführungsformen kann die DNN-Struktur 1110 eine Reihe aus einem oder mehreren Paaren von Faltungs- und Faltung-Rectifier- oder Rectified-Linear-Unit(ReLU)-Schichten umfassen.
  • Die DNN-Struktur 1110 zeigt Schichten einer Stufe der DNN-Struktur, die eine oder mehrere Eingaben von einer vorherigen Schicht empfängt, aber keine zyklischen Eingaben beinhaltet. Die Speicherverwaltungslogikschaltungsanordnung 1022 und/oder 1034 kann die DNN-Struktur 1110 durchsuchen, um jede Speicherblockzuordnung und die Lebenszeiten der Blockzuordnungen 1130 zu identifizieren und zu bestimmen. Beispielsweise beginnt eine erste Blockzuordnung (MB 1) 1132 bei der Eingabeschicht 1102 und die Lebenszeit erstreckt sich bis zu der Schicht 3 1106. Eine zweite Blockzuordnung (MB2) 1134 beginnt bei der Eingabeschicht 2 1104 und erstreckt sich bis zu der Schicht X 1112. Eine dritte Blockzuordnung (MB3) 1136 beginnt bei der Schicht 2 1104 und die Lebenszeit erstreckt sich bis zu dem Ende der Schicht 2 1106. Eine vierte Blockzuordnung (MB4) 1138 beginnt bei der Schicht 3 1106 und die Lebenszeit erstreckt sich bis zu dem Ende der Schicht X 1112. Eine fünfte Blockzuordnung (MB5) 1140 beginnt nach der Schicht 3 1106 und vor der Schicht X 1112 und die Lebenszeit erstreckt sich bis zu dem Ende der Schicht X 1112. Die sechste Blockzuordnung (MB6) 1142 beginnt dann bei der Ausgabeschicht 1114 und die Lebenszeit erstreckt sich bis zu dem Ende der Ausgabeschicht X 1114.
  • Eine Gemeinsam-genutzter-Block-Anzahl der Speicherverwaltungslogikschaltungsanordnung 1022 kann eine Liste basierend auf der Durchsuchung der DNN-Struktur 1110 erzeugen, wie etwa einen gerichteten azyklischen Graphen (DAG: Directed Acyclic Graph), um die Zahl Gemeinsam-genutzter-Speicherblock-Zuordnungen während jeder der Schichten zu zählen, um eine Anzahl an gleichzeitig existierenden Gemeinsam-genutzter-Speicherblock-Zuordnungen zu bestimmen. Bei vielen Ausführungsformen kann der Gemeinsam-genutzter-Block-Zähler Größeninformationen, wie etwa Größen 1 bis 4 in der Liste gleichzeitig existierender Blockzuordnungen 1150, beinhalten. Zum Beispiel existiert bei der Schicht 1 1102 die Blockzuordnung (MB 1) nicht gleichzeitig mit anderen Blockzuordnungen, so dass der Gemeinsam-genutzter-Block-Zähler keinen Eintrag zu der Liste gleichzeitig existierender Blockzuordnungen 1150 hinzufügt. Jedoch treten gleichzeitig existierende Blockzuordnungen bei der Schicht 3 1104 (MB 1, MB2, MB3), bei der Schicht 3 1106 (MB2, MB4), zwischen der Schicht 3 1106 und der Schicht X 1112 (MB5, MB2, MB4), und bei der Schicht X 1112 (MB5, MB4) auf.
  • Basierend auf der Liste gleichzeitig existierender Blockzuordnungen 1150 kann ein Maximalblockzuordnungszähler der Speicherverwaltungslogik schaltungsanordnung 1022 bestimmen, dass die maximale Anzahl 1160 an Blockzuordnungen drei ist, wie durch die gleichzeitige Existenz der Blockzuordnungen MB1, MB2, MB3 und MB5, MB2, MB4 während Inferenzberechnungen bewiesen ist. Mit anderen Worten erfordert die Stufe des DNN 1110 höchstens drei Speicherblockzuordnungen zu einer Zeit.
  • Nun unter Bezugnahme auf 1A und 1D stellt 1D eine Ausführungsform eines Prozesses für eine Speicherverwaltungslogikschaltungsanordnung zum Optimieren Gemeinsam-genutzter-Speicherblock-Zuordnungen, wie etwa die in 1A-B veranschaulichte Speicherverwaltungslogikschaltungsanordnung, dar. Nach dem Bestimmen der maximalen Zahl an Blockzuordnungen, die gleichzeitig existieren, in der Stufe der DNN-Struktur 1110, die in 1C gezeigt ist, kann die Speicherverwaltungslogikschaltungsanordnung 1022 den gleichen Prozess mit jeder der verbleibenden Stufen in dem DNN durchführen und dann eine maximale Anzahl für sämtliche Stufen bestimmen. Unter der Annahme, dass die Speicherverwaltungslogikschaltungsanordnung 1022 bestimmt, dass die drei Blockzuordnungen des gemeinsam genutzten Speichers die maximale Anzahl für alle Stufen sind, kann die Speicherverwaltungslogikschaltungsanordnung 1022 fortfahren, eine optimale Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen zu bestimmen.
  • Die Speicherverwaltungslogikschaltungsanordnung 1022 kann dann die optimale Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen basierend auf der maximalen Anzahl, die der Lebenszyklus der Tensoren sein kann, und die erwartete gesamte Gemeinsam-genutzter-Block-Größe der Gemeinsam-genutzter-Speicherblock-Zuordnungen bestimmen. Fall es beispielsweise ein Maximum von drei lebendigen Tensoren in dem Netz für die Netzlebenszyklen gibt, dann ist die notwendige Zahl gemeinsam genutzter Blöcke drei, ohne eine erwartete gesamte Blockgröße zu berücksichtigen. Falls wir jedoch die erwartete gesamte Blockgröße auch berücksichtigen, dann können die optimalen Gemeinsam-genutzter-Block-Größen größer als die Größe der drei Tensoren sein. Daher kann ein Gemeinsam-genutzter-Speicherblock-Dispatcher der Speicherverwaltungslogikschaltungsanordnung 1022 die optimale Zahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen unter Berücksichtigung der maximalen Zahl an lebendigen Tensoren und der erwarteten gesamten Blockgröße berechnen.
  • Zur Veranschaulichung kann die Speicherverwaltungslogikschaltungsanordnung 1022 die DNN-Struktur 1110 für alle Stufen des DNN ähnlich dem Prozess durchsuchen, der für eine Stufe der DNN-Struktur 1110 in 1D gezeigt ist. 1D veranschaulicht die gleichen Schichten der einen Stufe der DNN-Struktur 1110, die in 1C veranschaulicht sind, die Lebenszeit optimierter Blockzuordnungen 1230 und eine Liste der optimierten Blockzuordnungen 1240. Basierend auf der Bestimmung, dass die maximale Anzahl an gleichzeitig existierenden Blockzuordnungen drei für sämtliche Stufen des DNN ist, kann die Speicherverwaltungslogikschaltungsanordnung 1022 basierend auf der DNN-Struktur 1110 bestimmen, die Blockzuordnungen MB 1, MB2 und MB3 zu optimieren. Falls dies die erste Stufe ist, kann die Speicherverwaltungslogikschaltungsanordnung 1022 die Größen für die Blockzuordnungen MB 1, MB2 und MB3 auf null setzen, eine Blockzuordnung MB1 1202 der Eingabeschicht 1102 zuordnen und eine Blockzuordnung MB3 1212 der Ausgabeschicht 1114 zuordnen. Danach kann die Speicherverwaltungslogikschaltungsanordnung 1022 jede anschließende Zuordnung nach der Eingabeschicht 1102 identifizieren, die kleinste verfügbare Blockzuordnung von MB1, MB2 und MB3, die verfügbar ist und die Größe der anschließenden Zuordnung aufnimmt, zuweisen und die Größen der Blockzuordnungen MB1, MB2 und MB3 nach Bedarf anpassen, um die Daten, die die DNN-Schichten speichern, in den Blockzuordnungen aufzunehmen. Falls des Weiteren keine der Gemeinsam-genutzter-Speicherblock-Zuordnungen MB1, MB2 und MB3 verfügbar und groß genug zum Aufnehmen einer nachfolgenden Zuordnung sind, kann die Speicherverwaltungslogikschaltungsanordnung 1022 die kleinste verfügbare Speicherblockzuordnung von MB1, MB2 und MB3 auswählen und die Größe erhöhen, um die anschließende Zuordnung aufzunehmen.
  • Zum Beispiel wird angenommen, dass die Speicherverwaltungslogikschaltungsanordnung 1022 MB1 1202 auf 90 Kilobyte (kB) setzt, um Eingabetensordaten in der Eingabeschicht 1102 aufzunehmen. Es wird angenommen, dass die Speicherverwaltungslogikschaltungsanordnung 1022 MB3 1212 auf 40 kB setzt, um Ausgabesensordaten der Ausgabeschicht 1114 aufzunehmen, und es wird angenommen, dass MB2 noch zugeordnet werden muss, so dass MB2 auf dem Rücksetzwert von null kB ist. Die Speicherverwaltungslogikschaltungsanordnung 1022 kann von der Eingabeschicht 1102 zu der Schicht 2 1104 fortfahren, um zu bestimmen, dass die Ausgabe der Eingabeschicht eine anschließende Zuordnung von 30 kB aufweist. Die kleinste verfügbare Gemeinsam-genutzter-Block-Zuordnung, die 30 kB aufnimmt, ist MB3, so dass die Speicherverwaltungslogikschaltungsanordnung 1022 die 30 kB zu MB3 1212 zuordnet.
  • Die Speicherverwaltungslogikschaltungsanordnung 1022 kann von der Eingabeschicht 1102 zu der Schicht 2 1104 fortfahren, um zu bestimmen, dass eine Inferenzberechnung bei der Schicht 2 eine anschließende Zuordnung von 140 kB aufweist. Bei der Schicht 2 verbleibt MB1 1202 zugeordnet und verbleibt MB3 zugeordnet. Da die kleinste Blockzuordnung, die verfügbar ist, MB2 ist, kann die Speicherverwaltungslogikschaltungsanordnung 1022 MB2 für die Zuordnung von Schicht 2 1104 auswählen und die Größe von MB2 auf 140 kB erhöhen.
  • Nach der Schicht 2 1104 kann eine Inferenzberechnung bei der Schicht 3 1106 die nächste anschließende Zuordnung von 60 kB präsentieren. Bei der Schicht 3 1106 ist MB1 nicht zugeordnet, verbleibt MB2 zugeordnet und ist MB3 zu klein, um 60 kB aufzunehmen. MB1 ist eine 90-kB-Zuordnung, so dass die Speicherverwaltungslogikschaltungsanordnung 1022 die anschließende Zuordnung von 60 kB zu MB1 1208 zuweisen kann.
  • Zwischen der Schicht 3 1106 und der Schicht X 1110 kann die Speicherverwaltungslogikschaltungsanordnung 1022 eine anschließende Zuordnung von 40 kB identifizieren. MB1 verbleibt zugeordnet, MB2 verbleibt zugeordnet und MB3 kann 60 kB aufnehmen. Dementsprechend kann die Speicherverwaltungslogikschaltungsanordnung 1022 MB3 1212 für die anschließende Zuordnung von 40 kB auswählen. Des Weiteren werden bei der Ausgabeschicht 1114 die Gemeinsam-genutzter-Speicherblock-Zuordnungen MB1, MB2 und MB3 nicht zugeordnet und weist die Ausgabeschicht 1114 eine anschließende Zuordnung von 40 kB auf, die MB3 1212 am Anfang des Prozesses der Dimensionierung der Gemeinsam-genutzter-Speicherblock-Zuordnungen für diese Stufe zugeordnet wurde.
  • Sobald die Speicherverwaltungslogikschaltungsanordnung 1022 den Prozess der Dimensionierung der Gemeinsam-genutzter-Speicherblock-Zuordnungen für diese Stufe abschließt, kann die Speicherverwaltungslogikschaltungsanordnung 1022 den Prozess mit den gleichen Speicherblockzuordnungen für die verbleibenden Stufen abschließen, bis die Speicherverwaltungslogikschaltungsanordnung 1022 jede Zuordnung durch die Schichten der Stufen einer der drei Gemeinsam-genutzter-Speicherblock-Zuordnungen zuweist, die durch die maximale Anzahl an gleichzeitig existierenden Blockzuordnungen bestimmt werden, wie in Verbindung mit 1C besprochen ist.
  • Unter der Annahme, dass die Speicherverwaltungslogikschaltungsanordnung 1022 Zuordnungen für sämtliche Stufen des DNN abschließt und die anderen Stufen die Zuordnungen von der in 1D gezeigten Stufe nicht erhöht haben, sind die optimierten Blockzuordnungen 1240, für die Erörterung mit Bezug auf 1D, MB1, das auf 90 kB gesetzt ist, MB2, das auf 140 kB gesetzt ist, und MB3, das auf 30 kB gesetzt ist, Es wird angemerkt, dass die optimierten Blockzuordnungen auch die ursprünglichen Zuordnungen aus 1C mit den neuen Zuordnungen in 1D betreffen, die eine Wiederverwendung der gleichen Blockzuordnungen maximieren und das Potential für eine Batch-Verarbeitung erhöhen.
  • Nun unter Bezugnahme auf 1A und 1G stellt 1G eine Ausführungsform 1500 von Stufen eines tiefen neuronalen Netzes (DNN) 1510 und eines geteilten Speichers 1540 dar, um einen Prozess einer Batch-Verarbeitung durch eine Speicherverwaltungslogikschaltungsanordnung, wie etwa die in 1A und 1B gezeigte Speicherverwaltungslogikschaltungsanordnung 1022 und 1032, zu veranschaulichen. Bei einigen Ausführungsformen kann jede Stufe des DNN 1510 ein faltendes neuronales Netz (CNN) umfassen, um ein kaskadiertes tiefes neuronales Netz zu bilden, und die Eingabe kann ein einziges Bild umfassen. Bei manchen Ausführungsformen kann die Speicherverwaltungslogikschaltungsanordnung 1022 die Anwendbarkeit einer Batch-Verarbeitung nach dem Durchführen der Speicherzuordnungsoptimierung in 1C und 1D bestimmen. Bei weiteren Ausführungsformen können diese Prozesse gleichzeitig auftreten.
  • Bei einem typischen kaskadierten DNN nimmt ein erstes Stufennetz ein einziges Eingabebild mit voller Größe und die anschließenden Netze empfangen als Eingabedaten mehrere Ausgabebilder oder Merkmale mit kleiner Größe des vorherigen Stufennetzes. Als ein Ergebnis des Verkleinerns von Eingabedaten oder Tensordatengrößen wird eine Batch-Verarbeitung ein wichtiger Kandidat zum Verbessern einer lückenlosen Leistungsfähigkeit. Bei vielen Ausführungsformen kann die Speicherverwaltungslogikschaltungsanordnung 1022 die Batch-Verarbeitung implementieren, während die gesamte Speichervorraussetzung innerhalb der Größe des Speichers für die erste Stufe von Inferenzberechnungen in dem DNN 1510 beibehalten wird.
  • Um die Batch-Verarbeitung zu implementieren, kann die Speicherverwaltungslogikschaltungsanordnung 1022 die erforderliche Bedingung für die Batch-Verarbeitung prüfen, die maximale mögliche Batch-Zahl oder Batch-Größe berechnen und eine Batch-Verarbeitung mit der ausgewählten Zahl festlegen. Die Speicherverwaltungslogikschaltungsanordnung 1022 kann die Eingabedaten für jede Stufe des DNN 1510 hinsichtlich gegenseitigen Abhängigkeiten prüfen. Beispielsweise sind, falls Berechnungen während einer Stufe an ersten Eingabedaten die Berechnungen während derselben Stufe an den zweiten Eingabedaten bestimmt oder beeinflusst, die zweiten Eingabedaten von den ersten Eingabedaten abhängig, eine zeitliche Abhängigkeit, und können dementsprechend nicht mit den ersten Eingabedaten als Batch verarbeitet werden. Falls jedoch die ersten Eingabedaten und die dritten Eingabedaten keinerlei gegenseitige Abhängigkeiten aufweisen, sind die ersten Eingabedaten und die dritten Eingabedaten Kandidaten für eine Batch-Verarbeitung.
  • Nach dem Bestimmen davon, welche Eingabedaten für eine Stufe des DNN 1510 für eine Batch-Verarbeitung geeignet sind, kann die Speicherverwaltungslogikschaltungsanordnung 1022 die Batch-Zahl, oder Batch-Größe, basierend auf dem Verhältnis der Eingabedatengröße (der Größe der Eingabedaten 1542) der Stufe 1 zu den Eingabedatengrößen anderer Stufen berechnen. Mit anderen Worten kann die Speicherverwaltungslogikschaltungsanordnung 1022 bei manchen Ausführungsformen automatisch eine Batch-Größe zum Ausführen der Batch-Verarbeitung bestimmen, die nicht mehr Speicher als eine Ausführung der Stufe-1-Inferenzberechnungen erfordert. Dies erfolgt durch Bestimmen des Verhältnisses der Eingabedaten 1542 der Stufe 1 zu den Eingabedaten der Stufe 2 (Stufe-1-Ergebnisse 1544) und den Eingabedaten der Stufe 3 (Stufe-2-Ergebnisse 1546). Zum Beispiel zeigt die Ausführungsform 1500 Eingabedaten 1542 als eine Eingabe in die [Stufe 1]-DNN-Verarbeitungsschicht 1512. Das DNN 1510 speichert die Ausgabe der Stufe 1 in dem gemeinsamgenutzten Speicher 1540 als Stufe-1-Ergebnisse 1544, die auch Eingabedaten für Stufe 2 des DNN 1510 sind. Die [Stufe 2]-Eingabedatenverkettungsschicht 1516 kann die Eingabedaten, wie etwa Eingabetensordaten, die in der Form eines Tensors 2. Ordnung oder eines Tensors 3. Ordnung vorliegen können, verketten so dass die [Stufe 2]-DNN-Batch-Verarbeitung 1516 mehrere Eingabedaten oder Tensordaten gleichzeitig verarbeiten kann. Falls beispielsweise das Verhältnis der Eingabedaten 1542 für die erste Stufe zu den Eingabedaten 1544 für die zweite Stufe 10:1 ist, was bedeutet, dass die Tensordaten für die Eingaben der Stufe 1 10-mal größer als die Tensordateneingabe in die Stufe 2 sind, dann kann die [Stufe 2]-Eingabedatenverkettung 10 Tensordateneingaben für eine Batch-Verarbeitung durch die [Stufe 2]-DNN-Batch-Verarbeitungsschicht 1516 verketten, vorteilhafterweise ohne die Menge eines gemeinsam genutzten Speichers zu erhöhen, die zum Durchführen der Inferenzberechnungen notwendig ist.
  • Gleichermaßen können die Stufe-2-Ergebnisse 1546 für die Eingabedaten für die Stufe 3 und die Stufe-3-Eingabedatenverkettungsschicht 1518 die Eingabedaten (die die Prüfung für gegenseitige Abhängigkeit bestehen) basierend auf dem Verhältnis der Größe der Eingabedaten 1546 für die Stufe 3 zu der Größe der Eingabedaten 1542 in der Stufe 1 automatisch verketten. Die [Stufe 3]-DNN-Batch-Verarbeitungsschicht 1520 kann eine gleichzeitige Verarbeitung der verketteten Tensordaten durchführen, um die Ausgabedaten 1548 zu produzieren.
  • Bei anderen Ausführungsformen kann die Speicherverwaltungslogikschaltungsanordnung 1022 eine Batch-Dimensionierung basierend auf einer ersten festen Menge des Speichers, wie etwa der Menge des gemeinsam genutzten Speichers, die zum Ausführen des DNN 1510 verfügbar ist, anstatt basierend auf der Menge des Speichers, der während der Stufe-1-DNN-Inferenzberechnungen verwendet wird, durchführen. Zum Beispiel kann die Speicherverwaltungslogikschaltungsanordnung 1022 das Verhältnis der festen Menge des Speichers zu der Speichernutzung in der Stufe 1 für die Eingabedaten bestimmen, um eine Batch-Größe für Stufe-1-Inferenzberechnungen zu bestimmen. Danach wird das Verhältnis der Eingabedaten für die Stufe 1 zu den Eingabedaten für die andere Stufe, wie etwa die Stufe 2, mit dem Verhältnis der festen Menge des Speichers zu der Speichernutzung in der Stufe 1 multipliziert, um automatische Batch-Größen für die anderen Stufen zu bestimmen.
  • 1E stellt eine Ausführungsform einer Tabelle 1300 zum Vergleichen einer Speichernutzung durch andere Implementierungen gegenüber einer Speichernutzung durch eine Speicherverwaltungslogikschaltungsanordnung, wie etwa die in 1A und 1B gezeigte Speicherverwaltungslogikschaltungsanordnung, dar. Die Tabelle 1300 zeigt die experimentellen Ergebnisse von der Anwendung einer Ausführungsform in der DNN-Kaskade für die Gesichtsdetektion. Die Tabelle 1300 zeigt einen Vergleich der Speichergröße von der Standard-Caffe-Implementierung zu der erheblich optimierten Speichergröße unserer Ausführungsform von einem kaskadierten Gesichtsdetektionsnetz. Wie in der Tabelle 1300 gezeigt, ordnet die Standard-Caffe-Implementierung über 2 Gigabyte an Speicher dem DNN zur Gesichtsdetektion zu. Die Gemeinsam-genutzter-Block-Wiederverwendung über Teilstufen in einem Rundlaufspeicherzuordnungsschema verwendet 240 MB. Und eine hier beschriebene Ausführungsform verwendet 176,25 MB, was eine signifikante Verbesserung gegenüber diesen anderen derzeitigen Verfahren einer Speicherzuordnung für eine Inferenzberechnung demonstriert. Die experimentellen Ergebnisse von einer Produktion-DNN-Lösung demonstriert klar eine signifikante Speicherreduzierung und Leistungsfähigkeitsverbesserung.
  • 1F stellt eine Ausführungsform einer Tabelle 1400 zum Vergleichen einer Inferenzgeschwindigkeit durch andere Implementierungen gegenüber einer Inferenzgeschwindigkeit durch eine Speicherverwaltungslogikschaltungsanordnung, wie etwa die in 1A und 1B gezeigte Speicherverwaltungslogikschaltungsanordnung, dar. Die Tabelle 1400 zeigt die experimentellen Ergebnisse von der Anwendung einer Ausführungsform in der DNN-Kaskade für die Gesichtsdetektion. Die Tabelle 1400 zeigt einen Vergleich einer Tiefgehendes-Lemen-Inferenzleistungsfähigkeit beim Verarbeiten einer kaskadierten Gesichtsdetektion ohne Batch-Verarbeitung (136,59 ms), mit Batch-Verarbeitung für Stufen 2 und 3 in einem Batch 16 (120,19 ms), mit Batch-Verarbeitung für Stufen 2 und 3 in Batch 32 (103,81 ms) und mit Batch-Verarbeitung für Stufen 2 und 3 mit automatisierter Batch-Größe (97,42 ms). Eine automatische Batch-Dimensionierung verbessert die Leistungsfähigkeit von dem Standard-Nicht-Batch-Modus erheblich. Die experimentellen Ergebnisse von einer Produktion-DNN-Lösung einer Ausführungsform demonstrieren klar eine signifikante Speicherreduzierung und Lei stungsfähigkei tsverbesserung.
  • 1B stellt eine alternative Ausführungsform für ein System 1100 dar. Das System 1100 kann ein bewegbares Objekt gemäß Ausführungsformen steuern. Das System 1100 kann mit einer beliebigen geeigneten Ausführungsform der hier offenbarten Systeme, Vorrichtungen und Verfahren kombiniert werden. Das System 1100 kann ein Erfassungsmodul 1102, (einen) Prozessor(en) 1104, ein nichtflüchtiges Speicherungsmedium 1106, ein Steuermodul 1108 und ein Kommunikationsmodul 1110 beinhalten. Jedes dieser Module beinhaltet eine Schaltungsanordnung zum Implementieren einer Logik, wie etwa eines Codes, und kann auch als eine Logikschaltungsanordnung bezeichnet werden.
  • Das Erfassungsmodul 1102 kann einige Typen von Sensoren verwenden, die Informationen hinsichtlich der beweglichen Objekte auf einige Weisen sammeln. Distinkte Typen von Sensoren können einige Typen von Signalen oder Signale von unterschiedlichen Quellen erfassen. Zum Beispiel können die Sensoren Inertialsensoren, GPS-Sensoren, Annäherungssensoren (z. B. Lidar) oder Sicht-/Bildsensoren (z. B. eine Kamera) beinhalten. Das Erfassungsmodul 1102 kann mit (einem) Prozessor(en) 1104 wirkgekoppelt werden. Bei manchen Ausführungsformen kann das Erfassungsmodul 1102 mit einem Übertragungsmodul 1112 (z. B. einem Wi-Fi-Bildübertragungsmodul) wirkgekoppelt werden, um Daten direkt an eine geeignete externe Vorrichtung oder ein System zu übertragen. Zum Beispiel kann das Übertragungsmodul 1112 Bilder, die durch eine Kamera des Erfassungsmoduls 1102 erfasst werden, an ein fernes Endgerät übertragen.
  • Der (die) Prozessor(en) 1104 kann (können) einen oder mehrere Prozessoren, wie etwa einen programmierbaren Prozessor (z. B. eine zentrale Verarbeitungseinheit (CPU)), umfassen. Der (die) Prozessor(en) 1104 kann (können) eine Prozessorschaltungsanordnung zum Implementieren einer Speicherverwaltungslogikschaltungsanordnung 1022, wie etwa der Speicherverwaltungslogikschaltungsanordnung 1022 in 1A, umfassen.
  • Der (die) Prozessor(en) 1104 kann (können) mit einem nichtflüchtigen Speicherungsmedium 1106 wirkgekoppelt werden. Das nichtflüchtige Speicherungsmedium 1106 kann Logik, Code und/oder Programmbefehle, die durch den (die) Prozessor(en) 1104 zum Ausführen eines oder mehrerer Befehle, einschließlich der Speicherverwaltungslogikschaltungsanordnung 1034, wie etwa der Speicherverwaltungslogikschaltungsanordnung 1034 in 1A, speichern. Das nichtflüchtige Speicherungsmedium kann eine oder mehrere Speichereinheiten (z. B. entfernbare Medien oder eine externe Speicherung, wie etwa eine Secure-Digital(SD)-Karte oder ein Direktzugriffsspeicher (RAM)) umfassen. Bei manchen Ausführungsformen werden Daten von dem Erfassungsmodul 1102 direkt zu den Speichereinheiten des nichtflüchtigen Speicherungsmediums 1106 transferiert und innerhalb dieses gespeichert. Die Speichereinheiten des nichtflüchtigen Speicherungsmediums 1106 können Logik, Code und/oder Programmbefehle, die durch den (die) Prozessor(en) ausführbar sind, zum Durchführen einer beliebigen geeigneten Ausführungsform der hier beschriebenen Verfahren speichern. Zum Beispiel kann (können) der (die) Prozessor(en) 1104 Befehle ausführen, die bewirken, dass ein oder mehrere Prozessoren des (der) Prozessors (Prozessoren) 1104 Erfassungsdaten analysieren, die durch das Erfassungsmodul produziert werden. Die Speichereinheiten können Erfassungsdaten von dem Erfassungsmodul 1102 zum Verarbeiten durch den (die) Prozessor(en) 1104 speichern. Bei manchen Ausführungsformen können die Speichereinheiten des nichtflüchtigen Speicherungsmediums 1106 die Verarbeitungsergebnisse speichern, die durch den (die) Prozessor(en) 1104 produziert werden.
  • Bei manchen Ausführungsformen kann (können) der (die) Prozessor(en) 1104 mit einem Steuermodul 1108 zum Steuern eines Zustands des beweglichen Objekts wirkgekoppelt werden. Zum Beispiel kann das Steuermodul 1108 den Antriebsmechanismus des beweglichen Objekts steuern, um die räumliche Anordnung, Geschwindigkeit und/oder Beschleunigung des beweglichen Objekts mit Bezug auf sechs Freiheitsgrade anzupassen. Alternativ dazu oder in Kombination kann das Steuermodul 1108 einen Zustand eines Trägers und/oder eine Nutzlast und/oder ein Erfassungsmodul steuern.
  • Der (die) Prozessor(en) 1104 kann (können) mit einem Kommunikationsmodul 1110 zum Übertragen und/oder Empfangen von Daten von einer oder mehreren externen Vorrichtungen (z. B. einem Endgerät, einer Anzeigevorrichtung oder einer anderen Fernsteuerung) gekoppelt werden. Zum Beispiel kann das Kommunikationsmodul 1110 eines oder mehrere von Local Area Networks (LAN), Wide Area Networks (WAN), Infrarot-, Funk-, Wi-Fi-, Punkt-zu-Punkt(P2P)-Netzen, Telekommunikationsnetzen, Cloud-Kommunikation und dergleichen implementieren. Bei manchen Ausführungsformen können Kommunikationen eine Sichtlinie erfordern oder nicht. Das Kommunikationsmodul 1110 kann eines oder mehrere von Erfassungsdaten von dem Erfassungsmodul 1102, Verarbeitungsergebnissen von dem (den) Prozessor(en) 1104, vorbestimmten Steuerdaten, Benutzerbefehlen von einem Endgerät oder einer Fernsteuerung und dergleichen übertragen und/oder empfangen.
  • Die Komponenten des Systems 1100 können in einer beliebigen geeigneten Konfiguration angeordnet werden. Zum Beispiel können sich eine oder mehrere der Komponenten des Systems 100 auf dem beweglichen Objekt, einem Träger, einer Nutzlast, einem Endgerät, einem Erfassungssystem oder einer zusätzlichen externen Vorrichtung in Kommunikation mit einem oder mehreren von Obigem befinden.
  • 2 stellt eine Ausführungsform einer Speicherverwaltungslogikschaltungsanordnung 2000, wie etwa der Speicherverwaltungslogikschaltungsanordnung 1022 und/oder 1034 in 1A, dar. Die Speicherverwaltungslogikschaltungsanordnung 2000 kann einen oder mehrere Vorgänge zum Verwalten von Speicherblockzuordnungen in einem gemeinsam genutzten Speicher 2050, wie etwa einem Cache oder einem anderen Speicher, während Inferenzberechnungen in einem kaskadierten neuronalen Netz 2060 durchführen. Die Speicherverwaltungslogikschaltungsanordnung 2000 kann einen Speicherzuordnungsoptimierer 2010 und eine Batch-Logikschaltungsanordnung 2030 umfassen.
  • Der Speicherzuordnungsoptimierer 2010 kann den gerichteten azyklischen Graphen (DAG) des kaskadierten neuronalen Netzes 2060 durchsuchen. Der DAG ist die Reihenfolge von Berechnungen durch die Schichten jeder Stufe des kaskadierten neuronalen Netzes 2060 für Inferenzberechnungen. Der Speicherzuordnungsoptimierer 2010 kann einen Gemeinsam-genutzter Speicherblock-Zähler 2012, einen Maximalanzahlbestimmer 2014 und einen Gemeinsam-genutzter-Speicherblock-Dispatcher 2016 umfassen.
  • Der Gemeinsam-genutzter-Speicherblock-Zähler 2012 kann Anzahlen an gleichzeitig existierenden Gemeinsam-genutzter-Speicherblock-Zuordnungen während der Ausführung jeder der Stufen des kaskadierten neuronalen Netzes 2060 bestimmen und eine Liste dieser gleichzeitig existierenden Gemeinsam-genutzter-Speicherblock-Zuordnungen zusammen mit Größeninformationen bezüglich der Größen der Tensoren in jeder der Gemeinsam-genutzter-Speicherblock-Zuordnungen erzeugen.
  • Nachdem der Gemeinsam-genutzter-Speicherblock-Zähler 2012 die Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen bestimmt hat, kann der Maximalanzahlbestimmer 2014 die maximale Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen, die gleichzeitig existieren, durch sämtliche Stufen des kaskadierten neuronalen Netzes 2060 hinweg bestimmen. Mit der maximalen Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen, die gleichzeitig existieren, kann der Gemeinsam-genutzter-Speicherblock-Dispatcher 2016 eine Größe für jede der maximalen Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen bestimmen. Anfänglich durch Setzen der Größen von jeder der maximalen Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen auf null oder eine andere kleine Größe beginnend, kann der Gemeinsam-genutzter-Speicherblock-Dispatcher 2016 durch gemeinsam genutzte Speicherblockzuordnungen in jeder der Schichten jeder der Stufen des kaskadierten neuronalen Netzes 2060 fortschreiten, um zu bestimmen, wie jede Blockzuordnung der maximalen Anzahl zugeordnet werden kann, um eine Wiederverwendung in den Inferenzberechnungen durch das kaskadierte neuronale Netz 2060 hinweg zu maximieren. Zum Beispiel kann der Gemeinsam-genutzter-Speicherblock-Dispatcher 2016 die Eingabedaten und Ausgabedaten für jede Schicht in jeder Stufe des kaskadierten neuronalen Netzes 2060 bestimmen und die kleinsten Gemeinsam-genutzter-Speicherblock-Zuordnungen zuweisen, die die Eingabedaten und Ausgabedaten aufnehmen. Danach kann der Gemeinsam-genutzter-Speicherblock-Dispatcher 2016 die kleinste verfügbare Blockzuordnung für jede Zuordnungsanforderung in einer Schicht wählen. Falls keine der verfügbaren Blockzuordnungen eine Anforderung der Schicht aufnimmt, kann der Gemeinsam-genutzter-Speicherblock-Dispatcher 2016 die kleinste Blockzuordnung der verfügbaren Blockzuordnungen auswählen und die Größe dieser Blockzuordnung erhöhen, um die Anforderung der Schicht aufzunehmen.
  • Der Gemeinsam-genutzter-Speicherblock-Dispatcher 2016 kann diesen Prozess für jede Schicht in jeder Stufe des kaskadierten neuronalen Netzes 2060 wiederholen, bis die Kombination der maximalen Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen alle Daten, die in dem gemeinsam genutzten Speicher 2050 gespeichert werden, durch die Inferenzberechnungen des kaskadierten neuronalen Netzes 2060 hinweg aufnehmen kann.
  • Die Batch-Logikschaltungsanordnung 2030 kann bei manchen Ausführungsformen für jede Stufe des kaskadierten neuronalen Netzes 2060 automatisch bestimmen, ob eine Batch-Verarbeitung der Eingabedaten möglich ist. Danach kann die Batch-Logikschaltungsanordnung 2030 mehrere Eingabedaten, wie etwa Tensordaten, zur gleichen Zeit als Batch verarbeiten, wobei die Geschwindigkeit von Inferenzberechnungen für das kaskadierte neuronale Netz 2060 vorteilhaft erhöht wird. Die Batch-Logikschaltungsanordnung 2030 kann einen Eingabeprüfer 2032, einen Batch-Dimensionierer 2034, einen Batch-Verketter 2036 und einen Batch-Prozessor 2038 umfassen. Der Eingabeprüfer 2032 kann bestimmen, ob eine Batch-Verarbeitung möglich ist, und das Ausmaß bestimmen, zu dem eine Batch-Verarbeitung möglich ist. Insbesondere kann die Batch-Logikschaltungsanordnung 2030 einige Instanzen von Eingabedaten parallel verarbeiten, so lange die Verarbeitung einer Instanz nicht von der Verarbeitung einer anderen Instanz der Eingabedaten in der gleichen Stufe abhängt. Dementsprechend kann der Eingabeprüfer 2032 die Inferenzberechnungen der vortrainierten Stufen in dem kaskadierten neuronalen Netz 2060 prüfen, um zu bestimmen, ob irgendwelche gegenseitigen Abhängigkeiten zwischen den Eingabedaten für jede der Stufen existieren. Falls keine gegenseitigen Abhängigkeiten existieren, kann das kaskadierte neuronale Netz dann sämtliche Eingabedaten bis zu der maximalen Batch-Größe als Batch verarbeiten, die eine maximale Speichergröße für die Inferenzberechnungen auferlegen kann. Falls manche der Eingabedaten von einer Verarbeitung anderer Eingabedaten abhängen, kann die Batch-Logikschaltungsanordnung 2030 eine Reihe von Batches zum Verarbeiten implementieren, um gegenseitige Abhängigkeiten zwischen Instanzen der Eingabedaten zu berücksichtigen.
  • Der Batch-Dimensionierer 2034 kann die maximale Batch-Größe basierend auf einem verfügbaren gemeinsamgenutzten Speicher 2050 für Inferenzberechnungen bestimmen. Bei manchen Ausführungsformen basiert die maximale Batch-Größe auf dem Verhältnis der Eingabedaten für die erste Stufe und der Eingabedaten für die nachfolgenden Stufen. Falls beispielweise die Eingabedaten für die erste Stufe fünfmal größer als die Eingabedaten für die zweite Stufe sind, kann die maximale Batch-Größe für die zweite Stufe fünf sein. Mit anderen Worten kann der Batch-Verketter 2036 fünf Eingaben für die zweite Stufe des kaskadierten neuronalen Netzes 2060 verketten, ohne die Gemeinsam-genutzter-Speicher-Anforderungen für Inferenzberechnungen zwischen der ersten Stufe und der zweiten Stufe zu erhöhen. Gleichermaßen kann der Batch-Dimensionierer 2034 bestimmen, dass das Verhältnis der Eingabedaten der ersten Stufe zu der dritten Stufe 15:1 ist, so dass der Batch-Verketter 2036 fünfzehn Eingaben für die dritte Stufe des kaskadierten neuronalen Netzes 2060 verketten kann, ohne die Gemeinsam-genutzter-Speicher-Anforderungen für Inferenzberechnungen zwischen der ersten Stufe und der dritten Stufe zu erhöhen.
  • Der Batch-Verketter 2036 kann Instanzen von Eingabedaten für eine Stufe zur Präsentation für das kaskadierte neuronale Netz als eine einzige Eingabe kombinieren, um die Eingaben als Batch zu verarbeiten. Der Batch-Prozessor 2038 kann die verketteten Eingabedaten für jede zutreffende Stufe des neuronalen Netzes 2060 als Eingabedaten präsentieren, um die Batch-Verarbeitung durchzuführen.
  • 3A-C stellen Flussdiagramme von Ausführungsformen zum Optimieren von Speicherzuordnungen und zum Implementieren einer Batch-Verarbeitung durch eine Speicherverwaltungslogikschaltungsanordnung, wie etwa die in 1A und 1B gezeigte Speicherverwaltungslogikschaltungsanordnung, dar. 3A veranschaulicht ein Flussdiagramm zum Bestimmen optimierter Gemeinsam-genutzter-Speicherblock-Zuordnungen für ein vortrainiertes neuronales Netz. Das Flussdiagramm beginnt mit Bestimmen, für zwei oder mehr Stufen eines kaskadierten neuronalen Netzes, einer Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen, die während einer Ausführung der zwei oder mehr Stufen gleichzeitig existieren (Element 3010). Bei vielen Ausführungsformen kann die Speicherverwaltungslogikschaltungsanordnung, wie etwa die Speicherverwaltungslogikschaltungsanordnung 1022 und/oder 1034 in 1A-B und die Speicherverwaltungslogikschaltungsanordnung 2000 in 2, die DNN-Struktur eines kaskadierten neuronalen Netzes durchsuchen, um Gemeinsam-genutzter-Speicher-Anforderungen oder -Zuordnungen zu identifizieren. Die Speicherverwaltungslogikschaltungsanordnung kann ferner Gemeinsam-genutzter-Speicherblock-Zuordnungen identifizieren, die während der Lebenszeit einer oder mehrerer anderer Gemeinsam-genutzter-Speicherblock-Zuordnungen entstehen, um eine Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen zu bestimmen, die zu den gleichen Zeitpunkten während der Ausführung von Inferenzberechnungen existieren. Eine maximale Anzahl dieser Anzahlen der Gemeinsam-genutzter-Speicherblock-Zuordnungen wird die Speicherverwaltungslogikschaltungsanordnung über die minimale Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen informieren, die das vortrainierte kaskadierte neuronale Netz während Inferenzberechnungen für sämtliche Stufen des kaskadierten neuronalen Netzes erfordern wird.
  • Nach dem Bestimmen der maximalen Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen kann die Speicherverwaltungslogikschaltungsanordnung eine Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen der Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen bestimmen, um Daten zum Speichern in den gemeinsam genutzten Speicher während einer Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes aufzunehmen (Element 3015). Bei einigen Ausführungsformen kann die Speicherverwaltungslogikschaltungsanordnung die Größe der Gemeinsam-genutzter-Speicherblock-Zuordnungen bestimmen, indem die Inferenzberechnungen Schicht für Schicht und Stufe für Stufe durch das neuronale Netz durchlaufen werden, wobei die Größe von jeder der Gemeinsam-genutzter-Speicherblock-Zuordnungen bestimmt wird, bis jede Zuordnung der maximalen Anzahl eine Größe aufweist und wenigstens eine Zuordnung der maximalen Anzahl mit der angemessenen Größe für jede Instanz von Daten verfügbar sein wird, die die Inferenzberechnungen in dem gemeinsam genutzten Speicher während der Ausführung des neuronalen Netzes an den Eingabedaten speichern.
  • 3B veranschaulicht ein Flussdiagramm für eine Batch-Verarbeitung von Eingabedaten. Das Flussdiagramm beginnt mit Bestimmen einer Anzahl an Eingaben für eine Stufe der zwei oder mehr Stufen, denen gegenseitige Abhängigkeiten fehlen (Element 3110). Eine Speicherverwaltungslogikschaltungsanordnung, wie etwa die Speicherverwaltungslogikschaltungsanordnung 2000 in 2, kann die mehreren Instanzen von Eingabedaten bei der Eingabe jeder Stufe oder wenigstens jeder Stufe nach der ersten Stufe prüfen und bestimmen, ob die Instanzen von Eingabedaten in einem Batch verarbeitet werden können. Mit anderen Worten kann die Speicherverwaltungslogikschaltungsanordnung durch Durchsuchen der DNN-Struktur eines neuronalen Netzes bestimmen, ob eine Inferenzberechnung basierend auf einer Eingabe bei einer speziellen Stufe von beliebigen Berechnungen einer beliebigen anderen Instanz der Eingabedaten in derselben Stufe abhängt. Falls die Instanzen der Eingabedaten gegenseitige Abhängigkeiten aufweisen, kann die Reihenfolge, in der die Instanzen der Eingabedaten als Batch verarbeitet oder anderweitig verarbeitet werden, gemäß den Abhängigkeiten fortfahren. Bei manchen Ausführungsformen kann die Speicherverwaltungslogikschaltungsanordnung solche gegenseitigen Abhängigkeiten behandeln, indem mehr als ein Batch der Eingabedaten in einer Reihenfolge basierend auf den gegenseitigen Abhängigkeiten vorbreitet wird. Falls es keine gegenseitigen Abhängigkeiten gibt, kann die maximale Batch-Größe der Eingabedaten parallel durch die Stufe verarbeitet werden.
  • Nach dem Prüfen der gegenseitigen Abhängigkeiten der Eingabedaten kann die Speicherverwaltungslogikschaltungsanordnung die Batch-Größe basierend auf einer festen Menge des verfügbaren gemeinsamgenutzten Speichers über ein Verhältnis der Eingabedatengröße für die erste Stufe des neuronalen Netzes zu der Eingabedatengröße der anderen Stufen bestimmen (Element 3115). Bei vielen Ausführungsformen kann die Speicherverwaltungslogikschaltungsanordnung eine automatische Batch-Verarbeitung für geeignete Eingabedaten für Stufen nach Stufe eins durchführen. Die automatische Batch-Verarbeitung kann die Leistungsfähigkeit des kaskadierten neuronalen Netzes signifikant für Inferenzberechnungen erhöhen, ohne die Gemeinsam-genutzter-Speicher-Anforderungen oberhalb der Speicheranforderungen für die erste Stufe des kaskadierten neuronalen Netzes zu erhöhen.
  • Mit Eingabedaten, die für eine Batch-Verarbeitung geeignet sind, und einer bekannten Batch-Größe für wenigstens die Stufen nach der ersten Stufe kann die Speicherverwaltungslogikschaltungsanordnung die geeigneten Eingabedaten bei jeder Stufe verketten (Element 3120) und die verketteten Eingabedaten in einer oder mehreren Stufen des kaskadierten neuronalen Netzes als Batch verarbeiten (Element 3125).
  • 3C veranschaulicht ein Flussdiagramm zum Bestimmen von Gemeinsam-genutzter-Speicherblock-Zuordnungen mit einer Speicherverwaltungslogikschaltungsanordnung, wie etwa der in 2 veranschaulichten Speicherverwaltungslogikschaltungsanordnung 2000 und der Speicherverwaltungslogikschaltungsanordnung 1022 und 1034 in 1A-B. Das Flussdiagramm beginnt mit Zeigen zu der ersten Stufe eines tiefen neuronalen Netzes (Element 3205). Beginnend mit der ersten Stufe kann die Speicherverwaltungslogikschaltungsanordnung einen gerichteten azyklischen Graphen des neuronalen Netzes durchsuchen, um eine Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen, die gleichzeitig für Inferenzberechnungen existieren, zu bestimmen (Element 3210), und eine Liste von gleichzeitig existierenden Gruppen von Gemeinsam-genutzter-Speicherblock-Zuordnungen mit Größeninformationen über die Gemeinsam-genutzter-Speicherblock-Zuordnungen erzeugen (Element 3215). Mit anderen Worten kann die Speicherverwaltungslogikschaltungsanordnung die sich überschneidenden Lebenszeiten der Gemeinsam-genutzter-Speicherblock-Zuordnungen bestimmen und eine Anzahl der Zahl der Gemeinsam-genutzter-Speicherblock-Zuordnungen bestimmen, die sich während Inferenzberechnungen überschneiden, um zu bestimmen, wie viele Gemeinsam-genutzter-Speicherblock-Zuordnungen diese Durchführung der Inferenzberechnungen erfordert.
  • Nach dem Bestimmen der Anzahl an gleichzeitig existierenden Gemeinsam-genutzter-Speicherblock-Zuordnungen in der ersten Stufe kann die Speicherverwaltungslogikschaltungsanordnung bestimmen, ob es zusätzliche Stufen gibt (Element 3230). Da dies ein tiefes neuronales Netz ist, gibt es wenigstens eine zweite Stufe, so dass die Speicherverwaltungslogikschaltungsanordnung zu der nächsten Stufe des tiefen neuronalen Netzes zeigen (Element 3225) und den Prozess von Element 3210 wiederholen kann, um Anzahlen der sich überschneidenden Lebenszeiten der Gemeinsam-genutzter-Speicherblock-Zuordnungen in jeder der Stufen des tiefen neuronalen Netzes zu bestimmen.
  • Sobald die Speicherverwaltungslogikschaltungsanordnung die Zählungen für die letzte Stufe des tiefen neuronalen Netzes durchgeführt hat, kann die Speicherverwaltungslogikschaltungsanordnung die Anzahlen vergleichen, um die maximale Anzahl zu bestimmen (Element 3235). Mit anderen Worten bestimmt die Speicherverwaltungslogikschaltungsanordnung aus sämtlichen Anzahlen gleichzeitig existierender Gemeinsam-genutzter-Speicherblock-Zuordnungen das Maximum der Gemeinsam-genutzter-Speicherblock-Zuordnungen, die zur gleichen Zeit während der Inferenzberechnungen durch das gesamte neuronale Netz hindurch existieren. Die maximale Anzahl kann die minimale Zahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen sein, die zum Durchführen der Inferenzberechnungen notwendig ist.
  • Nach dem Bestimmen der maximalen Anzahl kann die Speicherverwaltungslogikschaltungsanordnung die Größen für die Gemeinsam-genutzter-Speicherblock-Zuordnungen auf null setzen (Element 3240), um für einen Prozess zum Bestimmen einer minimalen Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen vorzubereiten, um sämtliche Gemeinsam-genutzter-Speicher-Anforderungen der Inferenzberechnungen durch sämtliche Stufen des tiefen neuronalen Netzes hinweg aufzunehmen. Für den ersten Schritt in diesem Prozess kann die Speicherverwaltungslogikschaltungsanordnung wieder zu der ersten Stufe des tiefen neuronalen Netzes zeigen (Element 3245) und einen Prozess zum Zuordnen von Daten aus den Inferenzberechnungen zu den Gemeinsam-genutzter-Speicherblock-Zuordnungen beginnen.
  • Der Prozess kann mit dem Zuordnen der Eingabetensordaten und der Ausgabetensordaten zu Gemeinsam-genutzter-Speicherblock-Zuordnungen und Festlegen der Blockzuordnungen auf die Größe des Eingabetensors bzw. des Ausgabetensors beginnen (Element 3250). Sobald die Speicherverwaltungslogikschaltungsanordnung die Gemeinsam-genutzter-Speicherblock-Zuordnungen den Eingabe- und Ausgabedaten für eine Stufe zugewiesen hat, kann die Speicherverwaltungslogikschaltungsanordnung jede Inferenzberechnung in der Stufe durchlaufen, um jede zusätzliche Speicherzuordnungsvoraussetzung zu bestimmen und die Voraussetzung einer der Gemeinsam-genutzter-Speicherblock-Zuordnungen zuweisen. Falls keine Blockzuordnungen groß genug sind, wird die kleinste Gemeinsam-genutzter-Block-Zuordnung ausgewählt und wird die Größe erhöht, um die Tensordaten aufzunehmen (Element 3255).
  • Nach dem Bestimmen einer angemessenen Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen für die erste Stufe kann die Speicherverwaltungslogikschaltungsanordnung bestimmen, ob es zusätzliche Stufen gibt (Element 3260). Falls ja, kann die Speicherverwaltungslogikschaltungsanordnung zu der nächsten Stufe in dem tiefen neuronalen Netz zeigen und den Prozess bei Element 3250 wiederholen. Ansonsten endet der Prozess.
  • 4 veranschaulicht eine Ausführungsform eines Systems 4000. Das System 4000 ist ein Computersystem mit mehreren Prozessorkernen, wie etwa ein verteiltes Rechensystem, ein Supercomputer, ein Hochleistungsrechensystem, ein Rechencluster, ein Mainframe-Computer, ein Minicomputer, ein Client-Server-System, ein persönlicher Computer (PC), eine Workstation, ein Server, ein portabler Computer, ein Laptop-Computer, ein Tablet-Computer, eine Handheld-Vorrichtung, wie etwa ein persönlicher digitaler Assistent (PDA), oder eine andere Vorrichtung zum Verarbeiten, Anzeigen oder Übertragen von Informationen. Ähnliche Ausführungsformen können z. B. Unterhaltungsvorrichtungen, wie etwa ein portabler Musikabspieler oder ein portabler Videoabspieler, ein Smartphone oder ein anderes zellulares Telefon, ein Telefon, eine digitale Videokamera, eine digitale Fotokamera, eine externe Speicherungsvorrichtung oder dergleichen, umfassen. Weitere Ausführungsformen implementieren Serverkonfigurationen mit größerem Maßstab. Bei anderen Ausführungsformen kann das System 4000 einen einzigen Prozessor mit einem Kern oder mehr als einen Prozessor aufweisen. Es wird angemerkt, dass der Ausdruck „Prozessor“ auf einen Prozessor mit einem einzigen Kern oder ein Prozessorgehäuse mit mehreren Prozessorkernen verweist.
  • Wie in 4 gezeigt, umfasst das System 4000 eine Hauptplatine 4005 zum Montieren von Plattformkomponenten. Die Hauptplatine 4005 ist eine Punkt-zu-Punkt-Zwischenverbindungsplattform, die einen ersten Prozessor 4010 und einen zweiten Prozessor 4030 beinhaltet, die über eine Punkt-zu-Punkt-Zwischenverbindung 4056, wie etwa ein Ultra Path Interconnect (UPI), gekoppelt sind. Bei anderen Ausführungsformen kann das System 4000 eine andere Busarchitektur aufweisen, wie etwa einen Multi-Drop-Bus. Des Weiteren kann jeder der Prozessoren 4010 und 4030 Prozessorgehäuse mit mehreren Prozessorkernen einschließlich des (der) Prozessorkerns (Prozessorkerne) 4020 bzw. 4040 sein. Während das System 4000 ein Beispiel für eine Zwei-Sockel(2S)-Plattform ist, können andere Ausführungsformen mehr als zwei Sockel oder einen Sockel beinhalten. Zum Beispiel können manche Ausführungsformen eine Vier-Sockel(4S)-Plattform oder eine Acht-Sockel(8S)-Plattform beinhalten. Jeder Sockel ist eine Halterung für einen Prozessor und kann eine Sockelkennung aufweisen. Es wird angemerkt, dass der Ausdruck Plattform auf die Hauptplatine mit gewissen montierten Komponenten, wie etwa den Prozessoren 4010 und dem Chipsatz 4060, verweist. Manche Plattformen können zusätzliche Komponenten beinhalten und manche Plattformen beinhalten möglicherweise nur Sockel zum Montieren der Prozessoren und/oder des Chipsatzes.
  • Der erste Prozessor 4010 beinhaltet eine integrierte Speichersteuerung (IMC: Integrated Memory Controller) 4014 und Punkt-zu-Punkt(P-P)-Schnittstellen 4018 und 4052. Gleichermaßen kann der zweite Prozessor 4030 eine IMC 4034 und P-P-Schnittstellen 4038 und 4054 beinhalten. Die IMCs 4014 und 4034 koppeln die Prozessoren 4010 bzw. 4030 mit jeweiligen Speichern, einem Speicher 4012 und einem Speichern 4032. Die Speicher 4012 und 4032 können Teile des Hauptspeichers (z. B. eines dynamischen Direktzugriffsspeichers (DRAM)) für die Plattform sein, wie etwa Double-Data-Rate-Typ-3(DDR3)- oder -Typ-4(DDR4)-Synchron-DRAM (SDRAM). Bei der vorliegenden Ausführungsform werden die Speicher 4012 und 4032 lokal an die jeweiligen Prozessoren 4010 und 4030 angehängt. Bei anderen Ausführungsformen kann der Hauptspeicher über einen Bus und einen gemeinsam genutzten Speicher-Hub mit den Prozessoren gekoppelt sein.
  • Die Prozessoren 4010 und 4030 umfassen jeweils Caches, die mit jedem des (der) Prozessorkerns (Prozessorkerne) 4020 bzw. 4040 gekoppelt sind. Bei der vorliegenden Ausführungsform beinhaltet (beinhalten) der (die) Prozessorkern(e) 4020 des Prozessors 4010 eine Speicherverwaltungslogikschaltungsanordnung 4026, wie etwa die in 1A-B gezeigte Speicherverwaltungslogikschaltungsanordnung 1022. Die Speicherverwaltungslogikschaltungsanordnung 4026 kann eine Schaltungsanordnung repräsentieren, die zum Implementieren der Funktionalität einer Speicherverwaltung für eine Neuronales-Netz-Unterstützung innerhalb des (der) Prozessorkerns (Prozessorkerne) 4020 konfiguriert ist, oder kann eine Kombination der Schaltungsanordnung innerhalb eines Prozessors und eines Mediums zum Speichern der gesamten oder eines Teils der Funktionalität der Speicherverwaltungslogikschaltungsanordnung 4026 in einem Speicher, wie etwa einem Cache, dem Speicher 4012, Puffern, Registern und/oder dergleichen, repräsentieren. Bei einigen Ausführungsformen befindet sich die Funktionalität der Speicherverwaltungslogikschaltungsanordnung 4026 vollständig oder teilweise als Code in einem Speicher, wie etwa der Speicherverwaltung 4096 in der Datenspeicherung 4088, die über einen Chipsatz 4060 an den Prozessor 4010 angehängt ist, wie etwa die in 1A-B gezeigte Speicherverwaltungslogikschaltungsanordnung 4034. Die Funktionalität der Speicherverwaltungslogikschaltungsanordnung 4026 kann sich auch vollständig oder teilweise in einem Speicher, wie etwa dem Speicher 4012, und/oder einem Cache des Prozessors befinden. Des Weiteren kann die Funktionalität der Speicherverwaltungslogikschaltungsanordnung 4026 auch vollständig oder teilweise als Schaltungsanordnung innerhalb des Prozessors 4010 befinden und kann Vorgänge, z. B. innerhalb von Registern oder Puffern, wie etwa der Register 4016 innerhalb des Prozessors 4010, oder innerhalb einer Befehls-Pipeline des Prozessors 4010, durchführen.
  • Bei anderen Ausführungsformen kann mehr als einer der Prozessoren 4010 und 4030 eine Funktionalität der Speicherverwaltungslogikschaltungsanordnung 4026, wie etwa der Prozessor 4030 und/oder der Prozessor innerhalb des Tiefgehendes-Lernen-Beschleunigers 4067, der über eine Schnittstelle (SST) 4066 mit dem Chipsatz 4060 gekoppelt ist, umfassen. Die SST 4066 kann zum Beispiel eine Peripheral-Component-Interconnect-enhanced (PCI-e) sein.
  • Der erste Prozessor 4010 ist über P-P-Zwischenverbindungen 4052 und 4062 mit einem Chipsatz 4060 gekoppelt und der zweite Prozessor 4030 ist über P-P-Zwischenverbindungen 4054 und 4064 mit einem Chipsatz 4060 gekoppelt. Direct Media Interfaces (DMIs) 4057 und 4058 können mit den P-P-Zwischenverbindungen 4052 und 4062 bzw. den P-P-Zwischenverbindungen 4054 und 4064 gekoppelt sein. Die DMI kann eine Hochgeschwindigkeitszwischenverbindung sein, die z. B. acht Gigatransfers pro Sekunde (GT/s) ermöglicht, wie etwa DMI 3.0. Bei anderen Ausführungsformen können die Prozessoren 4010 und 4030 über einen Bus miteinander verbunden sein.
  • Der Chipsatz 4060 kann ein Steuerung-Hub, wie etwa ein Plattformsteuerung-Hub (PCH: Platform Controller Hub) umfassen. Der Chipsatz 4060 kann einen Systemtakt zum Durchführen von Taktungsfunktionen beinhalten und Schnittstellen für einen E/A-Bus, wie etwa einen Universal-Serial-Bus (USB), Peripheral Component Interconnects (PCIs), Serial Peripheral Interconnects (SPIs), Integrated Interconnects (I2Cs) und dergleichen beinhalten, um eine Verbindung von Peripherievorrichtungen auf der Plattform zu ermöglichen. Bei anderen Ausführungsformen kann der Chipsatz 4060 mehr als einen Steuerung-Hub, wie etwa einen Chipsatz mit einem Speichersteuerung-Hub, einen Grafiksteuerung-Hub und einen Eingabe/Ausgabe(E/A)-Steuerung-Hub, umfassen.
  • Bei der vorliegenden Ausführungsform ist der Chipsatz 4060 über eine Schnittstelle (SST) 4070 mit einem Trusted-Platform-Module (TPM: Vertrauenswürdige-Plattform-Modul) 4072 und der UEFI-, BIOS-, Flash-Komponente 4074 gekoppelt. Das TPM 4072 ist ein dedizierter Mikrocontroller, der dazu gestaltet ist, Hardware durch Integrieren von kryptografischen Schlüsseln in Vorrichtungen zu sichern. Die UEFI-, BIOS-, Flash-Komponente 4074 kann einen Vor-Boot-Code bereitstellen.
  • Des Weiteren beinhaltet der Chipsatz 4060 eine SST 4066 zum Koppeln des Chipsatzes 4060 mit einer Hochleistungsgrafik-Engine, Grafikkarte 4065. Bei anderen Ausführungsformen kann das System 4000 eine flexible Anzeigeschnittstelle (FDI: Flexible Display Interface) zwischen den Prozessoren 4010 und 4030 und dem Chipsatz 4060 beinhalten. Die FDI verbindet einen Grafikprozessorkern in einem Prozessor mit dem Chipsatz 4060.
  • Verschiedene E/A-Vorrichtungen 4092 sind mit dem Bus 4081 gekoppelt, zusammen mit einer Busbrücke 4080, die den Bus 4081 mit einem zweiten Bus 4091 koppelt, und einer SST 4068, die den Bus 4081 mit dem Chipsatz 4060 verbindet. Bei einer Ausführungsform kann der zweite Bus 4091 ein Low-Pin-Count(LPC: niedrige Stiftanzahl)-Bus sein. Verschiedene Vorrichtungen können mit dem zweiten Bus 4091 gekoppelt sein, einschließlich zum Beispiel einer Tastatur 4082, einer Maus 4084, Kommunikationsvorrichtungen 4086 und einer Datenspeicherungseinheit 4088, die Code, wie etwa den Compiler 4096, speichern kann. Des Weiteren kann eine Audio-E/A 4090 mit dem zweiten Bus 4091 gekoppelt sein. Viele der E/A-Vorrichtungen 4092, Kommunikationsvorrichtungen 4086 und die Datenspeicherungseinheit 4088 können sich auf der Hauptplatine 4005 befinden, während die Tastatur 4082 und die Maus 4084 Zusatzperipheriegeräte sein können. Bei anderen Ausführungsformen sind manche oder alle E/A-Vorrichtungen 4092, Kommunikationsvorrichtungen 4086 und die Datenspeicherungseinheit 4088 Zusatzperipheriegeräte und befinden sich nicht auf der Hauptplatine 4005.
  • 5 veranschaulicht ein Beispiel für ein Speicherungsmedium 5000 zum Speichern von Prozessordatenstrukturen. Das Speicherungsmedium 5000 kann einen Herstellungsartikel umfassen. Bei manchen Beispielen kann das Speicherungsmedium 5000 ein nichtflüchtiges computerlesbares Speicherungsmedium oder maschinenlesbares Speicherungsmedium, wie ein optisches, magnetisches oder Halbleiterspeicherungsmedium, beinhalten. Das Speicherungsmedium 5000 kann verschiedene Typen computerausführbarer Befehle, wie Befehle zum Implementieren von Logikflüssen und/oder Techniken, die hier beschrieben sind, speichern. Beispiele für ein computerlesbares oder maschinenlesbares Speicherungsmedium können beliebige greifbare Medien beinhalten, die zum Speichern elektronischer Daten fähig sind, einschließlich flüchtigen Speichers, nichtflüchtigen Speichers, entfernbaren oder nichtentfernbaren Speichers, löschbaren oder nichtlöschbaren Speichers, beschreibbaren oder wiederbeschreibbaren Speichers usw. Beispiele für computerausführbare Befehle können beliebige geeignete Typen von Code beinhalten, wie Quellcode, kompilierten Code, interpretierten Code, ausführbaren Code, statischen Code, dynamischen Code, objektorientierten Code, visuellen Code und dergleichen. Die Beispiele sind in diesem Kontext nicht beschränkt.
  • 6 veranschaulicht eine beispielhafte Rechenplattform 6000. Bei manchen Beispielen, wie in 6 gezeigt, kann die Rechenplattform 6000 eine Verarbeitungskomponente 6010, andere Plattformkomponenten oder eine Kommunikationsschnittstelle 6030 beinhalten. Gemäß manchen Beispielen kann die Rechenplattform 6000 in einer Rechenvorrichtung, wie etwa einem Server in einem System, wie etwa einem Datenzentrum oder einer Serverfarm, implementiert werden, die einen Manager oder eine Steuerung zum Verwalten konfigurierbarer Rechenressourcen, wie oben erwähnt, unterstützt. Des Weiteren kann die Kommunikationsschnittstelle 6030 ein Aufweckfunkgerät (WUR: Wake-Up Radio) umfassen und kann zum Aufwecken eines Hauptfukgeräts der Rechenplattform 6000 in der Lage sein.
  • Gemäß manchen Beispielen kann die Verarbeitungskomponente 6010 Verarbeitungsvorgänge oder eine Logik für die hier beschriebene Einrichtung 6015, wie etwa die in 1A und 1B veranschaulichte Speicherverwaltungslogikschaltungsanordnung 1034, ausführen. Die Verarbeitungskomponente 6010 kann verschiedene Hardwareelemente, Softwareelemente oder eine Kombination aus beidem beinhalten. Beispiele für Hardwareelemente können Vorrichtungen, logische Vorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltkreise, Prozessorschaltkreise, Schaltkreiselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktivitäten und so weiter), integrierte Schaltkreise, anwendungsspezifische integrierte Schaltkreise (ASIC: Application Specific Integrated Circuits), programmierbare Logikvorrichtungen (PLD: Programmable Logic Devices), digitale Signalprozessoren (DSP), ein vor Ort programmierbares Gatter-Array (FPGA: Field Programmable Gate Array), Speichereinheiten, Logik-Gatter, Register, eine Halbleitervorrichtung, Chips, Mikrochips, Chipsätze usw. beinhalten. Beispiele für Softwareelemente, die sich in dem Speicherungsmedium 6020 befinden können, können Softwarekomponenten, Programme, Anwendungen, Rechnerprogramme, Anwendungsprogramme, Vorrichtungstreiber, Systemprogramme, Softwareentwicklungsprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, Anwendungsprogrammschnittstellen (API: Application Program Interfaces), Befehlssätze, Rechencode, Rechnercode, Codesegmente, Rechnercodesegmente, Worte, Werte, Zeichen oder eine beliebige Kombination davon beinhalten. Das Bestimmen, ob ein Beispiel unter Verwendung von Hardwareelementen und/oder Softwareelementen implementiert wird, kann gemäß einer beliebigen Zahl von Faktoren variieren, wie zum Beispiel einer gewünschten Berechnungsrate, Leistungspegeln, Wärmetoleranzen, einem Verarbeitungszyklusbudget, Eingangsdatenraten, Ausgangsdatenraten, den Speicherressourcen, Datenbusgeschwindigkeiten und anderen Design- oder Leistungsfähigkeitsrestriktionen, so wie es für ein gegebenes Beispiel wünschenswert ist.
  • Bei manchen Beispielen können die anderen Plattformkomponenten 6025 übliche Rechenelemente, wie etwa einen oder mehrere Prozessoren, Mehrfachkernprozessoren, Co-Prozessoren, Speichereinheiten, Chipsätze, Steuerungen, Peripheriegeräte, Schnittstellen, Oszillatoren, Timingvorrichtungen, Videokarten, Audiokarten, Multimedia-Eingabe/Ausgabe(E/A)-Komponenten (z. B. digitale Anzeigen), Netzteile usw. beinhalten. Beispiele für Speichereinheiten können ohne Einschränkung verschiedene Typen computerlesbarer und maschinenlesbarer Speicherungsmedien in der Form einer oder mehrerer Hochgeschwindigkeitsspeichereinheiten aufweisen, wie etwa Nurlesespeicher (ROM: Read-Only Memory), Direktzugriffsspeicher (RAM), dynamischer RAM (DRAM), Double-Data-Rate DRAM (DDRAM), synchroner DRAM (SDRAM), statischer RAM (SRAM), programmierbarer ROM (PROM), löschbarer programmierbarer ROM (EPROM), elektrischer löschbarer programmierbarer ROM (EEPROM), Flash-Speicher, Polymerspeicher, wie etwa ferroelektrischer Polymerspeicher, ovonischer Speicher, Phasenwechsel- oder ferroelektrischer Speicher, Silicium-Oxid-Nitrid-Oxid-Silicium (SONOS)-Speicher, magnetische oder optische Karten, ein Array aus Vorrichtungen, wie etwa Redundant-Array-of-Independent-Disks(RAID)-Laufwerke, Festkörperspeichervorrichtungen (z. B. USB-Speicher), Festkörperlaufwerke (SSD) und ein beliebiger anderer Typ von Speicherungsmedium, das zum Speichern von Informationen geeignet ist, beinhalten.
  • Bei manchen Beispielen kann die Kommunikationsschnittstelle 6030 eine Logik und/oder Merkmale zum Unterstützen einer Kommunikationsschnittstelle beinhalten. Für diese Beispiele kann die Kommunikationsschnittstelle 6030 eine oder mehrere Kommunikationsschnittstellen beinhalten, die gemäß verschiedenen Kommunikationsprotokollen oder -standards arbeiten, um über direkte oder Netzwerkkommunikation-Links zu kommunizieren. Direkte Kommunikationen können über die Verwendung von Kommunikationsprotokollen oder -standards erfolgen, die in einem oder mehreren Industriestandards (einschließlich Abkömmlingen und Varianten) beschrieben sind, wie etwa diejenigen, die mit der PCI-Express-Spezifikation assoziiert sind. Netzwerkkommunikationen können über die Verwendung von Kommunikationsprotokollen oder -standards erfolgen, wie etwa denjenigen, die in einem oder mehreren Ethernet-Standards beschrieben sind, die von dem Institute of Electrical and Electronics Engineers (IEEE) veröffentlicht sind. Zum Beispiel kann ein solcher Ethernet-Standard das IEEE-802.3-2012, Canier-Sense-Multiple-Access-with-Collision-Detection(CSMA/CD)-Zugangsverfahren und -Physische-Schicht-Spezifikationen beinhalten, die im Dezember 2012 veröffentlicht wurden (nachfolgend „IEEE 802.3“). Eine Netzwerkkommunikation kann auch gemäß einer oder mehreren OpenFlow-Spezifikationen erfolgen, wie der Spezifikation OpenFlow-Hardware-Abstraction-API. Netzwerkkommunikationen können auch gemäß Infiniband Architecture Specification, Volume 1, Release 1.3, veröffentlicht im März 2015 („die Infiniband-Architecture-Spezifikation“) stattfinden.
  • Die Rechenplattform 6000 kann Teil einer Rechenvorrichtung sein, die zum Beispiel ein Server, ein Server-Array oder eine Serverfarm, ein Webserver, ein Netzwerkserver, ein Internetserver, eine Workstation, ein Minicomputer, ein Mainframe-Computer, ein Supercomputer, ein Netzwerkgerät, ein Web-Gerät, ein verteiltes Rechensystem, Mehrfachprozessorsysteme, prozessorbasierte Systeme oder eine Kombination davon sein kann. Entsprechend können Funktionen und/oder spezielle Konfigurationen der hier beschriebenen Rechenplattform 6000 in verschiedenen Ausführungsformen der Rechenplattform 6000, wie entsprechend erwünscht, enthalten sein oder weggelassen werden.
  • Die Komponenten und Merkmale der Rechenplattform 6000 können unter Verwendung einer beliebigen Kombination diskreter Schaltungen, von ASICs, Logik-Gattern und/oder Einzelchiparchitekturen implementiert werden. Ferner können die Merkmale der Rechenplattform 6000 unter Verwendung von Mikrocontrollern, programmierbaren Logik-Arrays und/oder Mikroprozessoren oder einer beliebigen Kombination der vorstehenden, wenn entsprechend geeignet, implementiert werden. Es sei darauf hingewiesen, dass Hardware-, Firmware- und/oder Softwareelemente hier kollektiv oder einzeln als „Logik“ bezeichnet werden können.
  • Es versteht sich, dass die beispielhafte Rechenplattform 6000, die in dem Blockdiagramm aus 6 gezeigt ist, ein funktionell beschreibendes Beispiel vieler möglicher Implementierungen repräsentieren kann. Entsprechend bedeutet eine Unterteilung, Auslassung oder Einschließung von in den begleitenden Figuren gezeigten Blockfunktionen nicht, dass die Hardwarekomponenten, Schaltkreise, Software und/oder Elemente zum Implementieren dieser Funktionen notwendigerweise in Ausführungsformen unterteilt, ausgelassen oder eingeschlossen sein müssen.
  • Ein oder mehrere Aspekte wenigstens eines Beispiels können durch repräsentative Befehle implementiert werden, die auf wenigstens einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors darstellt, die, wenn sie von einer Maschine, einer Rechenvorrichtung oder einem System gelesen wird, bewirkt, dass die Maschine, die Rechenvorrichtung oder das System eine Logik zum Durchführen der hier beschriebenen Techniken herstellt. Solche Repräsentationen, die als „IP-Kerne“ bekannt sind, können auf einem greifbaren maschinenlesbaren Medium gespeichert und für verschiedene Kunden oder Herstellungsanlagen bereitgestellt werden, um sie in die Herstellungsmaschinen zu laden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Verschiedene Beispiele können unter Verwendung von Hardwareelementen, Softwareelementen oder einer Kombination beider implementiert werden. Bei manchen Beispielen können Hardwareelemente Vorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltkreise, Schaltkreiselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktivitäten und so weiter), integrierte Schaltkreise, anwendungsspezifische integrierte Schaltkreise (ASIC), programmierbare Logikvorrichtungen (PLD), digitale Signalprozessoren (DSP), ein vor Ort programmierbares Gatter-Array (FPGA), Speichereinheiten, Logik-Gatter, Register, eine Halbleitervorrichtung, Chips, Mikrochips, Chipsätze usw. beinhalten. Bei manchen Beispielen können Softwareelemente Softwarekomponenten, Programme, Anwendungen, Rechnerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, Anwendungsprogrammschnittstellen (API), Befehlssätze, Rechencode, Rechnercode, Codesegmente, Rechnercodesegmente, Worte, Werte, Zeichen oder eine beliebige Kombination davon beinhalten. Das Bestimmen, ob ein Beispiel unter Verwendung von Hardwareelementen und/oder Softwareelementen implementiert wird, kann gemäß einer beliebigen Anzahl von Faktoren variieren, wie zum Beispiel einer gewünschten Berechnungsrate, Leistungspegeln, Wärmetoleranzen, einem Verarbeitungszyklusbudget, Eingangsdatenraten, Ausgangsdatenraten, Speicherressourcen, Datenbusgeschwindigkeiten und anderen Design- oder Leistungsbegrenzungen, so wie es für ein gegebenes Beispiel wünschenswert ist.
  • Manche Beispiele können einen Herstellungsartikel oder wenigstens ein computerlesbares Medium beinhalten. Ein computerlesbares Medium kann ein nichtflüchtiges Speicherungsmedium zum Speichern einer Logik beinhalten. Bei manchen Beispielen kann das nichtflüchtige Speicherungsmedium einen oder mehrere Typen von computerlesbaren Speicherungsmedien umfassen, die elektronische Daten speichern können, einschließlich flüchtigen Speichers oder nichtflüchtigen Speichers, entfernbaren oder nichtentfernbaren Speichers, löschbaren oder nichtlöschbaren Speichers, beschreibbaren oder wiederbeschreibbaren Speichers usw. Bei manchen Beispielen kann die Logik verschiedene Softwareelemente, wie etwa Softwarekomponenten, Programme, Anwendungen, Rechnerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, API, Befehlssätze, Rechencode, Rechnercode, Codesegmente, Rechnercodesegmente, Worte, Werte, Zeichen oder eine beliebige Kombination davon, beinhalten.
  • Gemäß manchen Beispielen kann ein computerlesbares Medium ein nichtflüchtiges Speicherungsmedium zum Speichern oder Beibehalten von Befehlen beinhalten, die beim Ausführen durch eine Maschine, eine Rechenvorrichtung oder ein System bewirken, dass die Maschine, die Rechenvorrichtung oder das System Verfahren und/oder Operationen gemäß den beschriebenen Beispielen durchführt. Die Befehle können einen beliebigen geeigneten Typ von Code beinhalten, wie z. B. Quellcode, kompilierten Code, interpretierten Code, ausführbaren Code, statischen Code, dynamischen Code und dergleichen. Die Befehle können entsprechend einer vorbestimmten Rechnersprache, Art oder Syntax implementiert werden, um eine Maschine, eine Rechenvorrichtung oder ein System zum Durchführen einer gewissen Funktion anzuweisen. Die Befehle können unter Verwendung einer beliebigen geeigneten höheren, niedrigeren, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert werden.
  • Manche Beispiele können unter Verwendung des Ausdrucks „bei einem Beispiel“ oder „ein Beispiel“ zusammen mit ihren jeweiligen Ableitungen beschrieben sein. Diese Ausdrücke bedeuten, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, das bzw. die in Verbindung mit dem Beispiel beschrieben wird, in wenigstens einem Beispiel enthalten ist. Das Erscheinen der Phrase „bei einem Beispiel“ an verschiedenen Stellen in der Beschreibung bezieht sich nicht notwendigerweise auf dasselbe Beispiel.
  • Manche Beispiele können unter Verwenden des Ausdrucks „gekoppelt“ und „verbunden“ zusammen mit ihren jeweiligen Ableitungen beschrieben sein. Diese Ausdrücke sind nicht notwendigerweise als synonym zueinander zu betrachten. Beschreibungen, die die Ausdrücke „verbunden“ und/oder „gekoppelt“ verwenden, können z. B. angeben, dass sich zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt miteinander befinden. Der Ausdruck „gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sind, jedoch immer noch miteinander zusammenwirken oder interagieren.
  • Zusätzlich sieht man in der obenstehenden ausführlichen Beschreibung, dass verschiedene Merkmale in einem einzigen Beispiel zum Zweck der Straffung der Offenbarung gruppiert sind. Diese Offenbarungsmethode darf jedoch nicht als eine Absicht wiedergebend ausgelegt werden, dass die beanspruchten Beispiele mehr Merkmale als in jedem Anspruch ausdrücklich erwähnt erfordern. Stattdessen liegt, wie in den folgenden Ansprüchen wiedergegeben, der erfinderische Gegenstand in weniger als allen Merkmalen eines einzelnen offenbarten Beispiels. Dementsprechend werden die folgenden Ansprüche hiermit in die ausführliche Beschreibung aufgenommen, wobei jeder Anspruch allein als ein separates Beispiel gilt. In den angehängten Ansprüchen werden die Ausdrücke „einschließlich“ und „in welchem/welcher“ als Äquivalente in einfachem Deutsch der entsprechenden Begriffe „umfassend“ und „wobei“ verwendet. Zudem sind die Ausdrücke „erste/r“, „zweite/r“, „dritte/r“ usw. lediglich als Bezeichnungen verwendet und sollen keine numerischen Anforderungen an ihre Objekte darstellen.
  • Obwohl der Gegenstand in einer Sprache beschrieben wurde, die für strukturelle Merkmale und/oder methodologische Handlungen spezifisch ist, versteht es sich, dass der in den angehängten Ansprüchen definierte Gegenstand nicht notwendigerweise auf die oben beschriebenen speziellen Merkmale oder Handlungen beschränkt ist. Stattdessen werden die oben beschriebenen speziellen Merkmale und Handlungen als beispielhafte Formen zum Implementieren der Ansprüche offenbart.
  • Ein Datenverarbeitungssystem, das zum Speichern und/oder Ausführen eines Programmcodes geeignet ist, wird wenigstens einen Prozessor beinhalten, der direkt oder indirekt über einen Systembus mit Speicherelementen gekoppelt ist. Die Speicherelemente können einen lokalen Speicher, der während einer tatsächlichen Ausführung des Programmcodes eingesetzt wird, eine Massenspeicherung und Cache-Speicher beinhalten, die eine temporäre Speicherung für wenigstens einen Teil des Programmcodes bereitstellen, um die Zahl an Malen zu reduzieren, die der Code aus der Massenspeicherung während einer Ausführung abgerufen werden muss. Der Ausdruck „Code“ deckt einen breiten Bereich von Softwarekomponenten und - konstrukten ab, einschließlich Anwendungen, Treibern, Prozessen, Routinen, Verfahren, Modulen, Firmware, Mikrocode und Subprogrammen. Dementsprechend kann der Ausdruck „Code“ verwendet werden, um auf eine beliebige Sammlung von Befehlen zu verweisen, die, wenn sie durch ein Verarbeitungssystem ausgeführt werden, einen gewünschten Vorgang oder gewünschte Vorgänge ausführen.
  • Eine Logikschaltungsanordnung, Vorrichtungen und Schnittstellen, die hier beschrieben sind, können Funktionen durchführen, die in Hardware implementiert sind und auch mit Code implementiert sind, der auf einem oder mehreren Prozessoren ausgeführt wird. Logikschaltungsanordnung verweist auf die Hardware oder den Hardwarecode, die/der eine oder mehrere logische Funktionen implementiert. Eine Schaltungsanordnung ist eine Hardware und kann auf einen oder mehrere Schaltkreise verweisen. Jeder Schaltkreis kann eine spezielle Funktion durchführen. Ein Schaltkreis der Schaltungsanordnung kann diskrete elektrische Komponenten, die mit einem oder mehreren Leitern miteinander verbunden sind, einen integrierten Schaltkreis, ein Chipgehäuse, einen Chipsatz, einen Speicher oder dergleichen umfassen. Integrierte Schaltkreise beinhalten Schaltkreise, die auf einem Substrat, wie etwa einem Siliciumwafer, erzeugt sind und Komponenten umfassen können. Und integrierte Schaltkreise, Prozessorgehäuse, Chipgehäuse und Chipsätze können einen oder mehrere Prozessoren umfassen.
  • Prozessoren können Signale, wie etwa Befehle und/oder Daten, an dem (den) Eingang (Eingängen) empfangen und die Signale verarbeiten, um die wenigstens eine Ausgabe zu erzeugen. Während ein Code ausgeführt wird, ändert der Code die physikalischen Zustände und Charakteristiken von Transistoren, die eine Prozessor-Pipeline darstellen. Die physikalischen Zustände der Transistoren werden in logische Bits aus Einsen und Nullen übersetzt, die in Registern innerhalb des Prozessors gespeichert werden. Der Prozessor kann die physikalischen Zustände der Transistoren in Register transferieren und die physikalischen Zustände der Transistoren in ein anderes Speicherungsmedium transferieren.
  • Ein Prozessor kann Schaltkreise zum Durchführen einer oder mehrerer Unterfunktionen umfassen, die zum Durchführen der Gesamtfunktion des Prozessors implementiert sind. Ein Beispiel für einen Prozessor ist eine Zustandsmaschine oder ein anwendungsspezifischer integrierter Schaltkreis (ASIC), die/der wenigstens einen Eingang und wenigstens einen Ausgang beinhaltet. Eine Zustandsmaschine kann die wenigstens eine Eingabe manipulieren, um die wenigstens eine Ausgabe zu erzeugen, indem eine vorbestimmte Reihe von seriellen und/oder parallelen Manipulationen oder Transformationen an der wenigstens einen Eingabe durchgeführt wird.
  • Die wie oben beschriebene Logik kann ein Teil der Gestaltung für einen integrierten Schaltkreischip sein. Die Chipgestaltung wird in einer grafischen Computerprogrammiersprache erzeugt und in einem Computerspeicherungsmedium oder Datenspeicherungsmedium (wie etwa einer Platte, einem Band, einer physischen Festplatte oder einer virtuellen Festplatte, wie etwa in einem Speicherungszugangsnetz) gespeichert. Falls der Designer keine Chips oder die zum Fertigen von Chips verwendeten fotolithografischen Masken fertigt, sendet der Designer die resultierende Gestaltung durch ein physisches Mittel (z. B. durch Bereitstellen einer Kopie des Speicherungsmediums, das die Gestaltung speichert) oder elektronisch (z. B. durch das Internet) an solche Entitäten, direkt oder indirekt. Die gespeicherte Gestaltung wird dann in das angemessene Format (z. B. GDSII) für die Fertigung konvertiert.
  • Die resultierenden integrierten Schaltkreischips können durch den Hersteller in Rohwaferform (das heißt als ein einziger Wafer, der mehrere nichtgekapselte Chips aufweist), als ein Nacktchip oder in einer gekapselten Form vertrieben werden. In dem letzteren Fall ist der Chip in einem Einzelchipgehäuse (wie etwa einem Kunststoffträger, mit Zuleitungen, die an einer Hauptplatine oder einem anderen Träger höherer Ebene angebracht sind) oder einem Mehrfachchipgehäuse (wie etwa einem Keramikträger, der eines oder beide von Oberflächenzwischenverbindungen oder vergrabenen Zwischenverbindungen aufweist) montiert. In jedem Fall wird der Chip dann mit anderen Chips, diskreten Schaltkreiselementen und/oder Signalverarbeitungsvorrichtungen als Teil von entweder (a) einem Zwischenprodukt, wie etwa einer Prozessorplatine, einer Serverplattform oder einer Hauptplatine, oder (b) eines Endprodukts integriert.
  • Einige Ausführungsformen weisen einen oder mehrere möglicherweise vorteilhafte Effekte auf. Beispielweise reduziert das Optimieren einer Speichernutzung vorteilhafterweise Speicherressourcenanforderungen, wie etwa Cache-Anforderungen in eingebetteten Systemen, und reduziert eine Speichernutzung, während einige Prozesse zur gleichen Zeit ausgeführt werden, wie etwa bei Mehrfachprozessorsystemen. Das Minimieren von Gemeinsam-nutzbarer-BlockZuordnungen reduziert vorteilhafterweise Speicherressourcenanforderungen, wie etwa Cache-Anforderungen in eingebetteten Systemen, und reduziert eine Speichernutzung, während einige Prozesse zur gleichen Zeit ausgeführt werden, wie etwa bei Mehrfachprozessorsystemen. Das Analysieren der zeitlichen Sequenz einer Speichernutzung in Inferenzberechnungen in einer DNN-Verarbeitung erleichtert vorteilhafterweise eine Batch- oder Parallelverarbeitung. Automatische Verarbeitungsstufen eines neuronalen Netzes in einem Batch für Inferenzberechnungen ohne Erhöhen der Gesamtspeichergröße reduziert vorteilhafterweise Speicherressourcenanforderungen, wie etwa Cache-Anforderungen in eingebetteten Systemen, und reduziert eine Speichernutzung, während einige Prozesse zur gleichen Zeit ausgeführt werden, wie etwa bei Mehrfachprozessorsystemen. Das Reduzieren der Größe eines Laufzeitspeichers für DNN-Inferenzberechnungen reduziert vorteilhafterweise Speicherressourcenanforderungen, wie etwa Cache-Anforderungen in eingebetteten Systemen, und reduziert eine Speichernutzung, während einige Prozesse zur gleichen Zeit ausgeführt werden, wie etwa bei Mehrfachprozessorsystemen. Das Durchführen einer Batch-Verarbeitung erhöht vorteilhafterweise die Leistungsfähigkeit hinsichtlich der Geschwindigkeit von Inferenzberechnungen für ein vortrainiertes neuronales Netz.
  • BEISPIELE FÜR WEITERE AUSFÜHRUNGSFORMEN
  • Die folgenden Beispiele betreffen weitere Ausführungsformen. Einzelheiten in den Beispielen können an irgendeiner Stelle in einer oder mehreren Ausführungsformen verwendet werden.
  • Beispiel 1 ist eine Einrichtung zum Verwalten von Speicherressourcen, wobei die Einrichtung Folgendes umfasst: einen Speicher; und eine mit dem Speicher gekoppelte Logikschaltungsanordnung zum: Bestimmen, für zwei oder mehr Stufen eines kaskadierten neuronalen Netzes, einer Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen, die während einer Ausführung der zwei oder mehr Stufen gleichzeitig existieren; und Bestimmen einer Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen der Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen, um Daten zum Speichern in einem gemeinsam genutzten Speicher während einer Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes für Inferenzberechnungen aufzunehmen. In Beispiel 2 die Einrichtung nach Anspruch 1, wobei die Logikschaltungsanordnung zum Erzeugen einer Liste der Gemeinsam-genutzter-Speicherblock-Zuordnungen, die gleichzeitig während einer Ausführung der zwei oder mehr Stufen existieren, und von Größeninformationen für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen konfiguriert ist. In Beispiel 3 die Einrichtung nach Anspruch 1, wobei die Logikschaltungsanordnung zum Bestimmen einer Batch-Größe pro Stufe der zwei oder mehr Stufen eines kaskadierten neuronalen Netzes konfiguriert ist. In Beispiel 4 die Einrichtung nach Anspruch 1, wobei die Logikschaltungsanordnung zum Bestimmen einer Anzahl an Eingaben für eine Stufe der zwei oder mehr Stufen, denen gegenseitige Abhängigkeiten fehlen, konfiguriert ist. In Beispiel 5 die Einrichtung nach Anspruch 4, wobei die Logikschaltungsanordnung zum Bestimmen der Batch-Größe basierend auf einer festen Menge eines gemeinsam genutzten Speichers, der für eine Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes verfügbar ist, konfiguriert ist. In Beispiel 6 die Einrichtung nach Anspruch 5, wobei die Logikschaltungsanordnung zum Bestimmen der Batch-Größe basierend auf der festen Menge des gemeinsam genutzten Speichers, der für eine Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes verfügbar ist, basierend auf der maximalen Anzahl, der Größe, die für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen bestimmt wird, und der Anzahl an Eingaben konfiguriert ist. In Beispiel 7 die Einrichtung nach Anspruch 1, wobei die Logikschaltungsanordnung zum Bestimmen einer Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen für Tensordaten zur Speicherung in dem gemeinsam genutzten Speicher und von Größeninformationen für die Tensordaten konfiguriert ist. In Beispiel 8 die Einrichtung nach Anspruch 1, wobei die Logikschaltungsanordnung zum Vergleichen von Anzahlen der Gemeinsam-genutzter-Speicherblock-Zuordnungen konfiguriert ist, die gleichzeitig während einer Ausführung von jeder der zwei oder mehr Stufen des kaskadierten neuronalen Netzes existieren, um eine maximale Anzahl der Anzahlen der Gemeinsam-genutzter-Speicherblock-Zuordnungen zu bestimmen. In Beispiel 9 die Einrichtung nach Anspruch 1, wobei die Logikschaltungsanordnung zum Berechnen einer Batch-Größe basierend auf einem Verhältnis einer Eingabedatengröße einer ersten Stufe der zwei oder mehr Stufen zu einer Eingabedatengröße einer anderen Stufe der zwei oder mehr Stufen konfiguriert ist.
  • Beispiel 10 ist ein Verfahren zum Verwalten von Speicherressourcen, wobei das Verfahren Folgendes umfasst: Bestimmen, durch eine Speicherverwaltungslogikschaltungsanordnung, für zwei oder mehr Stufen eines kaskadierten neuronalen Netzes, einer Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen, die während einer Ausführung der zwei oder mehr Stufen gleichzeitig existieren; und Bestimmen, durch die Speicherverwaltungslogikschaltungsanordnung, einer Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen der Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen, um Daten zum Speichern in einem gemeinsam genutzten Speicher während einer Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes für Inferenzberechnungen aufzunehmen. In Beispiel 11 das Verfahren nach Anspruch 10, die ferner Erzeugen, durch eine Speicherverwaltungslogikschaltungsanordnung, einer Liste der Gemeinsam-genutzter-Speicherblock-Zuordnungen, die gleichzeitig während einer Ausführung der zwei oder mehr Stufen existieren, und von Größeninformationen für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen umfasst. In Beispiel 12 das Verfahren nach Anspruch 10, das ferner Bestimmen einer Batch-Größe pro Stufe der zwei oder mehr Stufen eines kaskadierten neuronalen Netzes umfasst. In Beispiel 13 das Verfahren nach Anspruch 10, wobei Bestimmen einer Batch-Größe pro Stufe Bestimmen einer Anzahl an Eingaben für eine Stufe der zwei oder mehr Stufen, denen gegenseitige Abhängigkeiten fehlen, umfasst. In Beispiel 14 das Verfahren nach Anspruch 13, wobei Bestimmen einer Batch-Größe pro Stufe Bestimmen der Batch-Größe basierend auf einer festen Menge eines gemeinsam genutzten Speichers, der für eine Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes verfügbar ist, umfasst. In Beispiel 15 das Verfahren nach Anspruch 14, wobei Bestimmen der Batch-Größe basierend auf einer festen Menge des gemeinsam genutzten Speichers, der für eine Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes verfügbar ist, basierend auf der maximalen Anzahl Bestimmen der Batch-Größe basierend der maximalen Anzahl, der Größe, die für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen bestimmt wird, und der Anzahl an Eingaben umfasst. In Beispiel 16 das Verfahren nach Anspruch 10, wobei Bestimmen einer Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen Bestimmen der Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen für Tensordaten zur Speicherung in dem gemeinsam genutzten Speicher und von Größeninformationen für die Tensordaten umfasst. In Beispiel 17 das Verfahren nach Anspruch 10, wobei Vergleichen einer Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen Vergleichen von Anzahlen der Gemeinsam-genutzter-Speicherblock-Zuordnungen umfasst, die gleichzeitig während einer Ausführung von jeder der zwei oder mehr Stufen des kaskadierten neuronales Netzes existieren, um eine maximale Anzahl dieser Anzahlen der Gemeinsam-genutzter-Speicherblock-Zuordnungen zu bestimmen. In Beispiel 18 das Verfahren nach Anspruch 10, wobei die Logikschaltungsanordnung zum Berechnen einer Batch-Größe basierend auf einem Verhältnis einer Eingabedatengröße einer ersten Stufe der zwei oder mehr Stufen zu einer Eingabedatengröße einer anderen Stufe der zwei oder mehr Stufen konfiguriert ist.
  • Beispiel 19 ist ein computerlesbares Medium mit darauf gespeicherten Befehlen, die, wenn sie ausgeführten werden, veranlassen, dass ein Computer Vorgänge durchführt, die die Vorgänge nach einem der Ansprüche 8-14 umfassen. Beispiel 20 ist eine Einrichtung zum Verwalten von Speicherressourcen, wobei die Einrichtung ein Mittel zum Durchführen von einem der Ansprüche 10-18 umfasst. Beispiel 21 ist ein Programm zum Veranlassen, dass ein Computer Vorgänge durchführt, die Vorgänge nach einem der Ansprüche 10-18 umfassen. Beispiel 22 ist ein computerlesbares Speicherungsmedium zum Speichern des Programms nach Anspruch 21.
  • Beispiel 23 ist ein System zum Verwalten von Speicherressourcen, wobei das System Folgendes umfasst: einen Speicher, der dynamischen DRAM umfasst; eine mit dem Speicher gekoppelte Logikschaltungsanordnung zum: Bestimmen, für zwei oder mehr Stufen eines kaskadierten neuronalen Netzes, einer Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen, die während einer Ausführung der zwei oder mehr Stufen gleichzeitig existieren; und Bestimmen einer Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen der Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen, um Daten zum Speichern in einem gemeinsam genutzten Speicher während einer Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes für Inferenzberechnungen aufzunehmen. In Beispiel 24 das System nach Anspruch 23, wobei die Logikschaltungsanordnung zum Erzeugen einer Liste der Gemeinsam-genutzter-Speicherblock-Zuordnungen, die gleichzeitig während einer Ausführung der zwei oder mehr Stufen existieren, und von Größeninformationen für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen konfiguriert ist. In Beispiel 25 das System nach Anspruch 23, wobei die Logikschaltungsanordnung zum Bestimmen einer Batch-Größe pro Stufe der zwei oder mehr Stufen eines kaskadierten neuronalen Netzes konfiguriert ist. In Beispiel 26 das System nach Anspruch 23, wobei die Logikschaltungsanordnung zum Bestimmen einer Anzahl an Eingaben für eine Stufe der zwei oder mehr Stufen, denen gegenseitige Abhängigkeiten fehlen, und zum Bestimmen der Batch-Größe basierend auf einer festen Menge eines gemeinsam genutzten Speichers, der für eine Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes verfügbar ist, konfiguriert ist. In Beispiel 27 das System nach Anspruch 26, wobei die Logikschaltungsanordnung zum Bestimmen einer Anzahl an Eingaben für eine Stufe der zwei oder mehr Stufen, denen gegenseitige Abhängigkeiten fehlen, und zum Bestimmen der Batch-Größe basierend auf einer festen Menge eines gemeinsam genutzten Speichers, der für eine Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes verfügbar ist, konfiguriert ist. In Beispiel 28 das System nach Anspruch 27, wobei die Logikschaltungsanordnung zum Bestimmen der Batch-Größe basierend auf der festen Menge des gemeinsam genutzten Speichers, der für eine Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes verfügbar ist, basierend auf der maximalen Anzahl, der Größe, die für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen bestimmt wird, und der Anzahl an Eingaben konfiguriert ist. In Beispiel 29 das System nach Anspruch 23, wobei die Logikschaltungsanordnung zum Bestimmen einer Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen für Tensordaten zur Speicherung in dem gemeinsam genutzten Speicher und von Größeninformationen für die Tensordaten konfiguriert ist. In Beispiel 30 das System nach Anspruch 23, wobei die Logikschaltungsanordnung zum Vergleichen von Anzahlen der Gemeinsam-genutzter-Speicherblock-Zuordnungen konfiguriert ist, die gleichzeitig während einer Ausführung von jeder der zwei oder mehr Stufen des kaskadierten neuronales Netzes existieren, um eine maximale Anzahl der Anzahlen der Gemeinsam-genutzter-Speicherblock-Zuordnungen zu bestimmen. In Beispiel 31 das System nach Anspruch 23, wobei die Logikschaltungsanordnung zum Berechnen einer Batch-Größe basierend auf einem Verhältnis einer Eingabedatengröße einer ersten Stufe der zwei oder mehr Stufen zu einer Eingabedatengröße einer anderen Stufe der zwei oder mehr Stufen konfiguriert ist.
  • Beispiel 32 ist ein nichtflüchtiges maschinenlesbares Medium, das Befehle enthält, die, wenn sie durch einen Prozessor ausgeführt werden, den Prozessor dazu veranlassen, Vorgänge durchzuführen, wobei die Vorgänge Folgendes umfassen: Bestimmen, durch eine Speicherverwaltungslogikschaltungsanordnung, für zwei oder mehr Stufen eines kaskadierten neuronalen Netzes, einer Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen, die während einer Ausführung der zwei oder mehr Stufen gleichzeitig existieren; und Bestimmen, durch die Speicherverwaltungslogikschaltungsanordnung, einer Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen der Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen, um Daten zum Speichern in einem gemeinsam genutzten Speicher während einer Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes für Inferenzberechnungen aufzunehmen. In Beispiel 33 das maschinenlesbare Medium nach Anspruch 32, wobei die Vorgänge ferner Erzeugen, durch die Speicherverwaltungslogikschaltungsanordnung, einer Liste der Gemeinsam-genutzter-Speicherblock-Zuordnungen, die gleichzeitig während einer Ausführung der zwei oder mehr Stufen existieren, und von Größeninformationen für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen umfassen. In Beispiel 34 das maschinenlesbare Medium nach Anspruch 32, wobei die Vorgänge ferner Bestimmen einer Batch-Größe pro Stufe der zwei oder mehr Stufen eines kaskadierten neuronalen Netzes umfassen. In Beispiel 35 das maschinenlesbare Medium nach Anspruch 32, wobei Bestimmen einer Batch-Größe pro Stufe Bestimmen einer Anzahl an Eingaben für eine Stufe der zwei oder mehr Stufen, denen gegenseitige Abhängigkeiten fehlen, umfasst. In Beispiel 36 das maschinenlesbare Medium nach Anspruch 35, wobei Bestimmen der Batch-Größe basierend auf einer festen Menge eines gemeinsam genutzten Speichers, der für eine Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes verfügbar ist. In Beispiel 37 das maschinenlesbare Medium nach Anspruch 36, wobei Bestimmen der Batch-Größe basierend auf einer festen Menge des gemeinsam genutzten Speichers, der für eine Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes verfügbar ist, basierend auf der maximalen Anzahl Bestimmen der Batch-Größe basierend der maximalen Anzahl, der Größe, die für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen bestimmt wird, und der Anzahl an Eingaben umfasst. In Beispiel 38 das maschinenlesbare Medium nach Anspruch 32, wobei Bestimmen einer Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen Bestimmen der Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen für Tensordaten zur Speicherung in dem gemeinsam genutzten Speicher und von Größeninformationen für die Tensordaten umfasst. In Beispiel 39 das maschinenlesbare Medium nach Anspruch 32, wobei Bestimmen einer Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen Vergleichen von Anzahlen der Gemeinsam-genutzter-Speicherblock-Zuordnungen umfasst, die gleichzeitig während einer Ausführung von jeder der zwei oder mehr Stufen des kaskadierten neuronales Netzes existieren, um eine maximale Anzahl der Anzahlen der Gemeinsam-genutzter-Speicherblock-Zuordnungen zu bestimmen. In Beispiel 40 das maschinenlesbare Medium nach Anspruch 32, wobei die Logikschaltungsanordnung zum Berechnen einer Batch-Größe basierend auf einem Verhältnis einer Eingabedatengröße einer ersten Stufe der zwei oder mehr Stufen zu einer Eingabedatengröße einer anderen Stufe der zwei oder mehr Stufen konfiguriert ist.
  • Beispiel 41 ist eine Einrichtung zum Verwalten von Speicherressourcen, wobei die Einrichtung Folgendes umfasst: ein Mittel zum Bestimmen, durch eine Speicherverwaltungslogikschaltungsanordnung, für zwei oder mehr Stufen eines kaskadierten neuronalen Netzes, einer Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen, die während einer Ausführung der zwei oder mehr Stufen gleichzeitig existieren; und ein Mittel zum Bestimmen, durch die Speicherverwaltungslogikschaltungsanordnung, einer Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen der Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen, um Daten zum Speichern in einem gemeinsam genutzten Speicher während einer Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes für Inferenzberechnungen aufzunehmen. In Beispiel 42 die Einrichtung nach Anspruch 41, die ferner Erzeugen, durch die Speicherverwaltungslogikschaltungsanordnung, einer Liste der Gemeinsam-genutzter-Speicherblock-Zuordnungen, die gleichzeitig während einer Ausführung der zwei oder mehr Stufen existieren, und von Größeninformationen für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen umfasst. In Beispiel 43 die Einrichtung nach Anspruch 41, die ferner Bestimmen einer Batch-Größe pro Stufe der zwei oder mehr Stufen eines kaskadierten neuronalen Netzes umfasst. In Beispiel 44 die Einrichtung nach Anspruch 41, wobei Bestimmen einer Batch-Größe pro Stufe Bestimmen einer Anzahl an Eingaben für eine Stufe der zwei oder mehr Stufen, denen gegenseitige Abhängigkeiten fehlen, umfasst. In Beispiel 45 die Einrichtung nach Anspruch 44, wobei Bestimmen der Batch-Größe basierend auf einer festen Menge eines gemeinsam genutzten Speichers, der für eine Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes verfügbar ist. In Beispiel 46 die Einrichtung nach Anspruch 45, wobei Bestimmen der Batch-Größe basierend auf einer festen Menge des gemeinsam genutzten Speichers, der für eine Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes verfügbar ist, basierend auf der maximalen Anzahl Bestimmen der Batch-Größe basierend der maximalen Anzahl, der Größe, die für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen bestimmt wird, und der Anzahl an Eingaben umfasst. In Beispiel 47 die Einrichtung nach Anspruch 41, wobei Bestimmen einer Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen Bestimmen der Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen für Tensordaten zur Speicherung in dem gemeinsam genutzten Speicher und von Größeninformationen für die Tensordaten umfasst. In Beispiel 48 die Einrichtung nach Anspruch 41, wobei Bestimmen einer Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen Vergleichen von Anzahlen der Gemeinsam-genutzter-Speicherblock-Zuordnungen umfasst, die gleichzeitig während einer Ausführung von jeder der zwei oder mehr Stufen des kaskadierten neuronalen Netzes existieren, um eine maximale Anzahl der Anzahlen der Gemeinsam-genutzter-Speicherblock-Zuordnungen zu bestimmen. In Beispiel 49 die Einrichtung nach Anspruch 41, wobei die Logikschaltungsanordnung zum Berechnen einer Batch-Größe basierend auf einem Verhältnis einer Eingabedatengröße einer ersten Stufe der zwei oder mehr Stufen zu einer Eingabedatengröße einer anderen Stufe der zwei oder mehr Stufen konfiguriert ist.

Claims (25)

  1. Einrichtung zum Verwalten von Speicherressourcen, wobei die Einrichtung Folgendes umfasst: einen Speicher; eine mit dem Speicher gekoppelte Logikschaltungsanordnung zum: Bestimmen einer Anzahl gleichzeitiger Gemeinsam-genutzter-Speicherblock-Zuordnungen für zwei oder mehr Stufen eines kaskadierten neuronalen Netzes; und Bestimmen einer Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen der Anzahl gleichzeitiger Gemeinsam-genutzter-Speicherblock-Zuordnungen, um Daten zum Speichern in einem gemeinsam genutzten Speicher für die zwei oder mehr Stufen des kaskadierten neuronalen Netzes für Inferenzberechnungen aufzunehmen.
  2. Einrichtung nach Anspruch 1, wobei die Logikschaltungsanordnung zum Erzeugen einer Liste der gleichzeitigen Gemeinsam-genutzter-Speicherblock-Zuordnungen und von Größeninformationen für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen konfiguriert ist.
  3. Einrichtung nach Anspruch 1, wobei die Logikschaltungsanordnung zum Bestimmen einer Batch-Größe pro Stufe der zwei oder mehr Stufen des kaskadierten neuronalen Netzes konfiguriert ist.
  4. Einrichtung nach Anspruch 1, wobei die Logikschaltungsanordnung zum Bestimmen einer Anzahl an Eingaben für eine Stufe der zwei oder mehr Stufen, denen gegenseitige Abhängigkeiten fehlen, konfiguriert ist.
  5. Einrichtung nach Anspruch 4, wobei die Logikschaltungsanordnung zum Bestimmen der Batch-Größe basierend auf einer festen Menge eines gemeinsam genutzten Speichers, der für eine Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes verfügbar ist, konfiguriert ist.
  6. Einrichtung nach Anspruch 5, wobei die Logikschaltungsanordnung zum Bestimmen der Batch-Größe basierend auf der festen Menge des gemeinsam genutzten Speichers, der für eine Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes verfügbar ist, basierend auf der maximalen Anzahl, der Größe, die für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen bestimmt wird, und der Anzahl an Eingaben konfiguriert ist.
  7. Einrichtung nach Anspruch 1, wobei die Logikschaltungsanordnung zum Bestimmen einer Anzahl gleichzeitiger Gemeinsam-genutzter-Speicherblock-Zuordnungen für Tensordaten zur Speicherung in dem gemeinsam genutzten Speicher und von Größeninformationen für die Tensordaten konfiguriert ist.
  8. Einrichtung nach Anspruch 1, wobei die Logikschaltungsanordnung zum Vergleichen von Anzahlen der gleichzeitigen Gemeinsam-genutzter-Speicherblock-Zuordnungen des kaskadierten neuronalen Netzes konfiguriert ist, um eine maximale Anzahl der Anzahlen der Gemeinsam-genutzter-Speicherblock-Zuordnungen zu bestimmen.
  9. Einrichtung nach Anspruch 1, wobei die Logikschaltungsanordnung zum Berechnen einer Batch-Größe basierend auf einem Verhältnis einer Eingabedatengröße einer ersten Stufe der zwei oder mehr Stufen zu einer Eingabedatengröße einer anderen Stufe der zwei oder mehr Stufen konfiguriert ist.
  10. Verfahren zum Verwalten von Speicherressourcen, wobei das Verfahren Folgendes umfasst: Bestimmen, durch eine Speicherverwaltungslogikschaltungsanordnung, einer Anzahl gleichzeitiger Gemeinsam-genutzter-Speicherblock-Zuordnungen für zwei oder mehr Stufen eines kaskadierten neuronalen Netzes; und Bestimmen, durch die Speicherverwaltungslogikschaltungsanordnung, einer Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen der Anzahl gleichzeitiger Gemeinsam-genutzter-Speicherblock-Zuordnungen, um Daten zum Speichern in einem gemeinsam genutzten Speicher für die zwei oder mehr Stufen des kaskadierten neuronalen Netzes aufzunehmen.
  11. Verfahren nach Anspruch 10, das ferner Erzeugen, durch die Speicherverwaltungslogikschaltungsanordnung, einer Liste der gleichzeitigen Gemeinsam-genutzter-Speicherblock-Zuordnungen und von Größeninformationen für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen umfasst.
  12. Verfahren nach Anspruch 10, das ferner Bestimmen einer Batch-Größe pro Stufe der zwei oder mehr Stufen eines kaskadierten neuronalen Netzes umfasst.
  13. Verfahren nach Anspruch 10, wobei Bestimmen einer Batch-Größe pro Stufe Bestimmen einer Anzahl an Eingaben für eine Stufe der zwei oder mehr Stufen, denen gegenseitige Abhängigkeiten fehlen, umfasst.
  14. Verfahren nach Anspruch 13, wobei Bestimmen einer Batch-Größe pro Stufe Bestimmen der Batch-Größe basierend auf einer festen Menge eines gemeinsam genutzten Speichers, der für eine Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes verfügbar ist, umfasst.
  15. Verfahren nach Anspruch 14, wobei Bestimmen der Batch-Größe basierend auf einer festen Menge des gemeinsam genutzten Speichers, der für eine Ausführung der zwei oder mehr Stufen des kaskadierten neuronalen Netzes verfügbar ist, basierend auf der maximalen Anzahl Bestimmen der Batch-Größe basierend auf der maximalen Anzahl, der Größe, die für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen bestimmt wird, und der Anzahl an Eingaben umfasst.
  16. Verfahren nach Anspruch 10, wobei Bestimmen einer Anzahl an Gemeinsam-genutzter-Speicherblock-Zuordnungen Bestimmen der Anzahl gleichzeitiger Gemeinsam-genutzter-Speicherblock-Zuordnungen für Tensordaten zur Speicherung in dem gemeinsam genutzten Speicher und von Größeninformationen für die Tensordaten umfasst.
  17. Verfahren nach Anspruch 10, wobei Bestimmen einer Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen Vergleichen von Anzahlen der gleichzeitigen Gemeinsam-genutzter-Speicherblock-Zuordnungen des kaskadierten neuronalen Netzes umfasst, um eine maximale Anzahl der Anzahlen der Gemeinsam-genutzter-Speicherblock-Zuordnungen zu bestimmen.
  18. Verfahren nach Anspruch 10, wobei die Logikschaltungsanordnung zum Berechnen einer Batch-Größe basierend auf einem Verhältnis einer Eingabedatengröße einer ersten Stufe der zwei oder mehr Stufen zu einer Eingabedatengröße einer anderen Stufe der zwei oder mehr Stufen konfiguriert ist.
  19. System zum Verwalten von Speicherressourcen, wobei das System Folgendes umfasst: einen Speicher, der einen dynamischen Direktzugriffsspeicher umfasst; eine mit dem Speicher gekoppelte Logikschaltungsanordnung zum: Bestimmen einer Anzahl gleichzeitiger Gemeinsam-genutzter-Speicherblock-Zuordnungen für zwei oder mehr Stufen eines kaskadierten neuronalen Netzes; und Bestimmen einer Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen der Anzahl gleichzeitiger Gemeinsam-genutzter-Speicherblock-Zuordnungen, um Daten zum Speichern in einem gemeinsam genutzten Speicher für die zwei oder mehr Stufen des kaskadierten neuronalen Netzes für Inferenzberechnungen aufzunehmen.
  20. System nach Anspruch 19, wobei die Logikschaltungsanordnung zum Erzeugen einer Liste der gleichzeitigen Gemeinsam-genutzter-Speicherblock-Zuordnungen und von Größeninformationen für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen konfiguriert ist.
  21. System nach Anspruch 19, wobei die Logikschaltungsanordnung zum Bestimmen einer Batch-Größe pro Stufe der zwei oder mehr Stufen eines kaskadierten neuronalen Netzes konfiguriert ist.
  22. Maschinenlesbares Medium, das Befehle enthält, die, wenn sie durch einen Prozessor ausgeführt werden, den Prozessor dazu veranlassen, Vorgänge durchzuführen, wobei die Vorgänge Folgendes umfassen: Bestimmen, durch eine Speicherverwaltungslogikschaltungsanordnung, einer Anzahl gleichzeitiger Gemeinsam-genutzter-Speicherblock-Zuordnungen für zwei oder mehr Stufen eines kaskadierten neuronalen Netzes; und Bestimmen, durch die Speicherverwaltungslogikschaltungsanordnung, einer Größe für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen der Anzahl gleichzeitiger Gemeinsam-genutzter-Speicherblock-Zuordnungen, um Daten zum Speichern in einem gemeinsam genutzten Speicher für die zwei oder mehr Stufen des kaskadierten neuronalen Netzes aufzunehmen.
  23. Maschinenlesbares Medium nach Anspruch 22, wobei die Vorgänge ferner Erzeugen, durch die Speicherverwaltungslogikschaltungsanordnung, einer Liste der gleichzeitigen Gemeinsam-genutzter-Speicherblock-Zuordnungen und von Größeninformationen für jede der Gemeinsam-genutzter-Speicherblock-Zuordnungen umfassen.
  24. Maschinenlesbares Medium nach Anspruch 22, wobei die Vorgänge ferner Bestimmen einer Batch-Größe pro Stufe der zwei oder mehr Stufen eines kaskadierten neuronalen Netzes umfassen.
  25. Maschinenlesbares Medium nach Anspruch 22, wobei Bestimmen einer Batch-Größe pro Stufe Bestimmen einer Anzahl an Eingaben für eine Stufe der zwei oder mehr Stufen, denen gegenseitige Abhängigkeiten fehlen, umfasst.
DE102019106669.7A 2018-04-17 2019-03-15 Verfahren und anordnungen zum verwalten von speicher in kaskadierten neuronalen netzen Pending DE102019106669A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/954,767 US11562213B2 (en) 2018-04-17 2018-04-17 Methods and arrangements to manage memory in cascaded neural networks
US15/954,767 2018-04-17

Publications (1)

Publication Number Publication Date
DE102019106669A1 true DE102019106669A1 (de) 2019-10-17

Family

ID=65231687

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019106669.7A Pending DE102019106669A1 (de) 2018-04-17 2019-03-15 Verfahren und anordnungen zum verwalten von speicher in kaskadierten neuronalen netzen

Country Status (3)

Country Link
US (1) US11562213B2 (de)
CN (1) CN110389910A (de)
DE (1) DE102019106669A1 (de)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US11740898B2 (en) 2018-02-13 2023-08-29 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
EP3651073B1 (de) 2018-02-13 2021-10-27 Shanghai Cambricon Information Technology Co., Ltd Rechenvorrichtung und -verfahren
CN116991226A (zh) 2018-02-14 2023-11-03 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
WO2019218896A1 (zh) 2018-05-18 2019-11-21 上海寒武纪信息科技有限公司 计算方法以及相关产品
KR102470893B1 (ko) 2018-06-27 2022-11-25 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템
KR102519467B1 (ko) * 2018-08-28 2023-04-06 캠브리콘 테크놀로지스 코퍼레이션 리미티드 데이터 전처리 방법, 장치, 컴퓨터 설비 및 저장 매체
US10467503B1 (en) * 2018-09-05 2019-11-05 StradVision, Inc. Method and device for generating image data set to be used for learning CNN capable of detecting obstruction in autonomous driving circumstance
US11703939B2 (en) 2018-09-28 2023-07-18 Shanghai Cambricon Information Technology Co., Ltd Signal processing device and related products
FR3089649A1 (fr) 2018-12-06 2020-06-12 Stmicroelectronics (Rousset) Sas Procédé et dispositif de détermination de la taille mémoire globale d’une zone mémoire globale allouée aux données d’un réseau de neurones
CN111383638A (zh) 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
FR3094104A1 (fr) * 2019-03-20 2020-09-25 Stmicroelectronics (Rousset) Sas Procédé et dispositif de détermination de la taille mémoire globale d’une zone mémoire globale allouée aux données d’un réseau de neurones compte tenu de sa topologie
CN111831543A (zh) 2019-04-18 2020-10-27 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
US20200334522A1 (en) 2019-04-18 2020-10-22 Cambricon Technologies Corporation Limited Data processing method and related products
US11551147B2 (en) 2019-06-05 2023-01-10 Koninklijke Philips N.V. Evaluating resources used by machine learning model for implementation on resource-constrained device
US11676029B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
KR20210018352A (ko) 2019-06-12 2021-02-17 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 신경망의 양자화 파라미터 확정방법 및 관련제품
IT201900012609A1 (it) * 2019-07-22 2021-01-22 St Microelectronics Srl Procedimento automatico di gestione della memoria, unità microcontrollore e prodotto informatico corrispondenti
US20210110249A1 (en) * 2019-10-14 2021-04-15 Micron Technology, Inc. Memory component with internal logic to perform a machine learning operation
CN112783640B (zh) * 2019-11-11 2023-04-04 上海肇观电子科技有限公司 预先分配内存的方法与设备、电路、电子设备及介质
WO2021243489A1 (zh) * 2020-05-30 2021-12-09 华为技术有限公司 一种神经网络的数据处理方法及装置
US20220012635A1 (en) * 2020-06-18 2022-01-13 Texas Instruments Incorporated Analytic techniques for improved super tiling machine learning processing
KR20220027500A (ko) * 2020-08-27 2022-03-08 에스케이하이닉스 주식회사 가속 장치, 데이터 저장 장치, 데이터 처리 시스템 및 가속 장치의 동작방법
US11417373B2 (en) * 2020-12-09 2022-08-16 Micron Technology, Inc. Neuromorphic computing devices and methods
CN112669852B (zh) * 2020-12-15 2023-01-31 北京百度网讯科技有限公司 内存分配方法、装置及电子设备
CN115145846A (zh) * 2021-03-31 2022-10-04 广东高云半导体科技股份有限公司 姿态识别人工智能系统及方法
US20230013998A1 (en) * 2021-07-19 2023-01-19 Texas Instruments Incorporated Memory sharing for machine learning processing
WO2023070655A1 (en) * 2021-11-01 2023-05-04 Huawei Technologies Co., Ltd. Interfacing with coded inference networks
US20240104395A1 (en) * 2022-09-27 2024-03-28 Zhejiang Lab Memory optimization method and device oriented to neural network computing

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10019668B1 (en) * 2017-05-19 2018-07-10 Google Llc Scheduling neural network processing

Also Published As

Publication number Publication date
US20190042925A1 (en) 2019-02-07
US11562213B2 (en) 2023-01-24
CN110389910A (zh) 2019-10-29

Similar Documents

Publication Publication Date Title
DE102019106669A1 (de) Verfahren und anordnungen zum verwalten von speicher in kaskadierten neuronalen netzen
DE102012216029B4 (de) Ein skalierbares anpassungsfähiges map-reduce-rahmenwerk mit verteilten daten
DE102018003221A1 (de) Unterstützung gelernter Sprungprädiktoren
DE102019103310A1 (de) Schätzer for einen optimalen betriebspunkt für hardware, die unter einer beschränkung der gemeinsam genutzten leistung/wärme arbeitet
DE102014003689A1 (de) Verfolgung des kontrollflusses von befehlen
DE102018001535A1 (de) Laufzeit-prozessoroptimierung
DE102018001229A1 (de) Beschleunigerschaltung mit variabler Wortlänge für ein neuronales Netzwerk
DE102012214007A1 (de) Auswahl eines Protokolls einer kollektiven Operation in einem Paralellrechner
DE112013004783T5 (de) Durch Lese- und Schreibmasken gesteuerter Vektor-Verschiebebefehl
DE102021102589A1 (de) Berechnungsgraph-optimierung
DE102018125805A1 (de) Systeme, verfahren, und vorrichtungen für skalarproduktoperationen
DE102018006537A1 (de) Dynamische Leistungsbeeinflussung in einem Prozessor
DE112016004324T5 (de) Heterogene Kompressionsarchitektur für optimiertes Kompressionsverhältnis
DE102010044529A1 (de) Autonome Subsystem-Architektur
DE112017006367T5 (de) Aufgabenmanagement mit dynamischer Laufzeit
DE102017124078A1 (de) Ordinale modifikation der dienstgüte
DE112018005507T5 (de) Mehrkriterien-energiemanagementschema für gepoolte beschleunigerarchitekturen
DE112020000865T5 (de) Speicherverwaltungssystem
DE112020005789T5 (de) Hierarchische partitionierung von operatoren
DE102018128626A1 (de) Systeme, Verfahren und Vorrichtungen für Matrixoperationen
DE102018003483A1 (de) Optimierte bildmerkmalsextraktion
DE112020007087T5 (de) Gleichzeitige Hashtabellen-Aktualisierungen
DE112020003105T5 (de) Schicht für schicht-debugging von neuronalen netzwerken
CA3094727C (en) Transaction processing method and system, and server
DE102008016180A1 (de) Darlegen von Systemtopologie für die Ausführungsumgebung