DE112017008040T5 - Rechenoperationsschaltung, rechenoperationsverfahren und programm - Google Patents

Rechenoperationsschaltung, rechenoperationsverfahren und programm Download PDF

Info

Publication number
DE112017008040T5
DE112017008040T5 DE112017008040.1T DE112017008040T DE112017008040T5 DE 112017008040 T5 DE112017008040 T5 DE 112017008040T5 DE 112017008040 T DE112017008040 T DE 112017008040T DE 112017008040 T5 DE112017008040 T5 DE 112017008040T5
Authority
DE
Germany
Prior art keywords
coefficient matrix
computers
vector
arithmetic operation
multiplications
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
DE112017008040.1T
Other languages
English (en)
Inventor
Susumu Tanaka
Masashi Mori
Kazushige Hashimoto
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of DE112017008040T5 publication Critical patent/DE112017008040T5/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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • G06F18/24133Distances to prototypes
    • 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/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
    • 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/048Activation functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Neurology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Multimedia (AREA)
  • Complex Calculations (AREA)

Abstract

Es wird ein Rechenoperationsverfahren für eine Faltungsschicht in einem Gefalteten Neuronalen Netzwerk bereitgestellt. Das Rechenoperationsverfahren beinhaltet Folgendes: Erzeugung einer Koeffizientenmatrix (A) durch Konvertierung eines in der Faltungsschicht verwendeten Kernels so, dass die Koeffizientenmatrix mit einem Eingangsvektor (x) verknüpft wird, der durch die Erweiterung einer Merkmalskarte, die in die Faltungsschicht eingegeben wurde, in eine Spalte erhalten wird; Suche nach Nicht-Null-Elementen, die in der Koeffizientenmatrix enthalten sind; Zuweisen von Multiplikationen der in der Koeffizientenmatrix enthaltenen Nicht-Null-Elemente und entsprechender Elemente des Eingangsvektors an eine Vielzahl von Rechnern (CL), wobei jede der Multiplikationen als eine Prozesseinheit behandelt wird, um die Anzahl der Prozesseinheiten zwischen den Rechnern auszugleichen, wobei alle Rechner in der Lage sind, Prozesse parallel zueinander auszuführen; und sequentielles Ausführen der zugewiesenen Multiplikationen durch die Rechner und sequentielles Addieren der Ergebnisse der Multiplikationen zu entsprechenden Elementen eines Ausgangsvektors (f) durch den Rechner.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung bezieht sich auf eine Rechenoperationsschaltung, ein Rechenoperationsverfahren und ein Programm zur Durchführung des Rechenoperationsverfahrens und wird z.B. für eine Rechenoperation einer Faltungsschicht im Gefalteten Neuronalen Netzwerk verwendet.
  • STAND DER TECHNIK
  • Ein Rechenoperationsverfahren mit der Bezeichnung „Gefaltetes Neuronales Netzwerk (CNN)“ wird häufig in vielen Bereichen eingesetzt, z.B. in der Bildverarbeitung zur Mustererkennung oder ähnlichem, in der Spracherkennung und in der Robotik. Im Allgemeinen besteht das CNN aus einer Faltungsschicht, die eine Faltungsoperation durchführt, einer Pooling-Schicht, die lokale Statistiken berechnet, und einer vollständig verknüpften Schicht. Die Faltungsschicht erzeugt eine Ausgabe-Merkmalskarte auf folgende Weise: Beim Scannen eines Kernels (auch „Filter“ genannt) auf einer Eingabe Merkmalskarte, die auf Pixeln als Einheit basiert, wird wiederholt eine Multiplikations-Akkumulationsoperation zwischen einem entsprechenden Bereich der Eingabe Merkmalskarte und dem Kernel durchgeführt und dann ein endgültiges Ergebnis der Multiplikations-Akkumulationsoperation nichtlinear konvertiert.
  • Die Japanische Patentanmeldungs-Offenlegungsschrift JP 2010-134 697 A (Patentdokument 1) beschreibt eine Rechenoperationsschaltung zur Durchführung einer Faltungsoperation im Wege der Parallelverarbeitung. Insbesondere führt die im Patentdokument beschriebene Rechenoperationsschaltung eine parallele Rechenoperation unter Verwendung der jeweiligen Anzahl von Multiplikatoren und Akkumulatoren durch, die der Anzahl der Spalten des Kernels entsprechen.
  • STAND DER TECHNIK
  • Patentdokument 1: Japanische Patentanmeldungs-Offenlegungsschrift JP 2010-134 697 A
  • KURZBESCHREIBUNG DER ERFINDUNG
  • Mit der Erfindung zu lösende Probleme
  • In der oben beschriebenen Rechenoperationsschaltung des oben beschriebenen Patentdokuments werden die Merkmalskarte und der Kernel unverändert für die Rechenoperation verwendet. Dadurch wird die Anzahl der Wiederholungen der Rechenoperation erhöht, mit der Folge, dass der Prozess langsam und nachteilig wird.
  • Um dem entgegenzuwirken, wird zur Verkürzung der Prozesszeit häufig ein Verfahren zur Durchführung einer Rechenoperation nach Erweiterung der Merkmalskarte oder des Kernels auf eine Spalte verwendet. Nach diesem Verfahren ergibt die Faltungsoperation ein Produkt aus einer Koeffizientenmatrix und einem Vektor, d.h. eine Multiplikations-Akkumulationsoperation eines Elements jeder Zeile der Koeffizientenmatrix und eines Elements des Vektors. Zum Beispiel kann eine parallele Rechenoperation durch die Anzahl der Multiplikations-Akkumulationsrechner entsprechend der Anzahl der Zeilen der Koeffizientenmatrix durchgeführt werden.
  • Wenn hier die Multiplikations-Akkumulationsoperation einfach von jedem Multiplikations-Akkumulationsrechner durchgeführt wird, wobei 0 in die Elemente der Koeffizientenmatrix eingeschlossen wird, wird Zeit für überflüssige Rechenoperationen verbraucht. Daher wird die Rechenoperation normalerweise mit dem Multiplikations-Akkumulationsrechner durchgeführt, wobei die Null-Elemente der Koeffizientenmatrix ausgeschlossen werden. Die Anzahl der Nicht-Null-Elemente unterscheidet sich jedoch zwischen den Zeilen der Koeffizientenmatrix. Auch wenn die Anzahl der Nicht-Null-Elemente in der gesamten Koeffizientenmatrix gering ist, wird eine gesamte Prozesszeit durch eine Zeile mit der größten Anzahl von Nicht-Null-Elementen bestimmt. Wenn es nur eine Zeile mit einer Vielzahl von Nicht-Null-Elementen gibt, wird dementsprechend die gesamte Prozesszeit durch die Multiplikations-Akkumulationsoperation in dieser Zeile bestimmt, mit dem Ergebnis, dass die gesamte Prozesszeit nicht wie erwartet verkürzt werden kann.
  • Die vorliegende Erfindung wurde unter Berücksichtigung der oben beschriebenen Problematik erstellt und hat zum Ziel, eine Rechenoperationsschaltung und ein Rechenoperationsverfahren bereitzustellen, durch die jeweils die gesamte Prozesszeit verkürzt werden kann, wenn eine Multiplikation einer Koeffizientenmatrix mit 0 in Elementen und einem Vektor durchgeführt wird. Es ist zu beachten, dass jede der Rechenoperationsschaltungen und Rechenoperationsverfahren gemäß der vorliegenden Erfindung für eine Faltungsoperation in einem CNN geeignet ist, aber nicht nur für das CNN, sondern auch für andere Bereiche anwendbar ist.
  • Mittel zum Lösen der Probleme
  • Bei einer Rechenoperationsschaltung gemäß einer Ausführungsform der Erfindung ist eine Koeffizientenmatrix, die Nicht-Null-Elemente und Null-Elemente enthält, mit einem Eingangsvektor von rechts zu multiplizieren und ein Rechenoperationsergebnis als Ausgangsvektor auszugeben. Die Rechenoperationsschaltung weist Folgendes auf: Einen Steuerprozessor; und eine Vielzahl von Rechnern, die jeweils in der Lage sind, einen Prozess parallel zueinander durchzuführen. Der Steuerprozessor weist dem Rechner Multiplikationen der in der Koeffizientenmatrix enthaltenen Nicht-Null-Elemente und entsprechende Elemente des Eingangsvektors zu, wobei jede der Multiplikationen als eine Prozesseinheit behandelt wird, um die Anzahl der Prozesseinheiten im Rechner zu nivellieren. Der Rechner führt die zugeordneten Multiplikationen nacheinander aus und addiert die Ergebnisse der Multiplikationen nacheinander zu den entsprechenden Elementen des Ausgangsvektors.
  • Effekt der Erfindung
  • Nach der oben beschriebenen Ausführungsform werden die Multiplikationen der in der Koeffizientenmatrix enthaltenen Nicht-Null-Elemente und die entsprechenden Elemente des Eingangsvektors dem Rechner zugeordnet, wobei jede der Multiplikationen als eine Prozesseinheit behandelt wird, um die Anzahl der Prozesseinheiten im Rechner zu nivellieren, wodurch die gesamte Prozesszeit verkürzt werden kann.
  • Figurenliste
    • 1 ist ein Flussdiagramm, das einen Rechenoperationsprozess durch ein CNN zeigt;
    • 2 illustriert eine Faltungsoperation;
    • 3 zeigt die Erweiterung einer Merkmalskarte und eines Kernels;
    • 4 ist ein Blockdiagramm, das eine beispielhafte Konfiguration eines Parallelcomputers zeigt;
    • 5 ist ein Flussdiagramm, das einen Überblick über den Ablauf der Faltungsoperation zeigt;
    • 6 ist ein Flussdiagramm, das Details des Ablaufs der Faltungsoperation zeigt;
    • 7 ist ein Flussdiagramm, das eine beispielhafte Vorgehensweise bei der Durchführung einer Einheits-Multiplikations-Akkumulationsoperation in jedem Rechner des Parallelrechners von 4 zeigt;
    • 8 veranschaulicht einen Effekt einer ersten Ausführungsform und
    • 9 ist ein Flussdiagramm, das den Ablauf einer Faltungsoperation nach einer zweiten Ausführungsform zeigt.
  • BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • Im Folgenden wird jede Ausführungsform unter Bezug auf die Zeichnungen beschrieben. Dabei ist zu beachten, dass die gleichen oder entsprechende Bestandteile die gleichen Bezugszeichen erhalten und nicht wiederholt beschrieben werden.
  • Ausführungsform 1
  • CNN
  • Zunächst wird ein CNN kurz beschrieben. 1 ist ein Flussdiagramm, das einen Rechenoperationsprozess des CNN zeigt.
  • Wie in 1 gezeigt, enthält das CNN eine Eingangsschicht S201, Faltungsschichten S202, S204, Pooling-Schichten S203, S205, eine vollständig verknüpfte Schicht S206 und eine Ausgangsschicht S207.
  • Die Eingabeschicht S201 empfängt die Eingabe der zu verarbeitenden Daten, wie z.B. Bilddaten. Die Ausgabeschicht S207 gibt nach der Datenverarbeitung ein Endergebnis aus. Zur einfacheren Beschreibung wird in 1 eine Kombination aus Faltungsschicht und Pooling-Schicht zweimal wiederholt (S202, S203; S204, S205), kann aber auch mehrmals wiederholt werden.
  • Die Dateneingabe in die Faltungsschicht wird als „Eingabe Merkmalskarte“, die Datenausgabe aus der Faltungsschicht als „Ausgabe-Merkmalskarte“ bezeichnet. Jede der Faltungsschichten S202, S204 führt wiederholt eine Multiplikations-Akkumulationsoperation eines entsprechenden Bereichs der Eingabe Merkmalskarte und einen Kernel (auch als „Filter“ bezeichnet) durch, während der Kernel auf der Eingabe Merkmalskarte basierend auf Pixel als Einheit gescannt wird, und konvertiert ein endgültiges Ergebnis der Multiplikations-Akkumulationsoperation nichtlinear, wodurch die Ausgabe-Merkmalskarte erzeugt wird. Ein Element (auch als „Gewicht“ bezeichnet) des Kernels wird durch Training im Voraus bestimmt. Einzelheiten der Faltungsoperation werden später mit Bezug auf 2 beschrieben.
  • Jede der Pooling-Schichten S203, S205 führt eine Operation durch, um Elemente einer lokalen Domäne der Ausgabe-Merkmalskarte in einem Element zu sammeln, um die räumliche Größe der Merkmalskarte zu reduzieren. Jede der Pooling-Schichten S203, S205 nimmt den maximalen Wert der lokalen Domäne oder mittelt z.B. die in der lokalen Domäne enthaltenen Elemente.
  • Eine oder mehrere vollständig verknüpfte Schichten S206 sind neben der Ausgabeschicht S207 vorgesehen. Jedes Neuron der vollständig verknüpften Schicht(en) S206 hat eine Verbindung zu allen Neuronen einer benachbarten Schicht.
  • Faltungsoperation
  • 2 veranschaulicht die Faltungsoperation. Wie in 2 dargestellt, werden die Ausgangsdaten 102 durch eine Faltungsoperation aus einem Kernel 101 und Eingabedaten 100 als Eingabe Merkmalskarte erzeugt. Jedem Element der Ausgangsdaten 102 wird ein Bias hinzugefügt, und es wird auch eine aktivierende Funktion darauf angewendet, wodurch die Ausgangs-Merkmalskarte erzeugt wird. Als aktivierende Funktion wird eine nichtlineare Funktion wie z.B. ReLU (Rectified Linear Unit) verwendet.
  • Der Einfachheit halber wird im Beispiel von 2 die Eingabedaten-Größe auf (7, 7) und die Kernel-Größe auf (3, 3) gesetzt. Zur Einstellung einer Ausgangsdatengröße kann die Umgebung 104 der Eingabedaten 100 mit festen Daten (z.B. 0) gefüllt werden. Dies wird als „Padding“ bezeichnet. Ein Padding mit einer Breite von 1 und einem Wert von 0 wird auf Eingabedaten 100 von 2 angewendet.
  • In der Faltungsoperation werden beim Verschieben des Kernel 101 in einem bestimmten Intervall auf Eingabedaten 100 einschließlich der Padding-Anteile Elemente des Kernel 101 mit entsprechenden Elementen der Eingabedaten 100 multipliziert und eine Summe daraus berechnet. Das heißt, es wird eine Multiplikations-Akkumulationsoperation durchgeführt. Ein Ergebnis der Multiplikations-Akkumulationsoperation wird als entsprechendes Element der Ausgangsdaten 102 gespeichert. Das Intervall, in dem Kernel 101 verschoben wird, wird als „schreiten“ bezeichnet. Im Fall von 2 ist der Schritt 1.
  • Insbesondere wenn Kernel 101 so angeordnet ist, dass er einem Rahmen 103 entspricht, der durch eine dicke durchgezogene Linie in 2 angezeigt wird, wird ein Ergebnis der Multiplikations-Akkumulationsoperation von „30“ als ein positionsmäßig entsprechendes Element 106 der Ausgangsdaten 102 gespeichert. Wenn Kernel 101 so angeordnet ist, dass er einem Rahmen 105 entspricht, der durch eine dicke gestrichelte Linie in 2 angezeigt wird, wird das Ergebnis der Multiplikations-Akkumulationsoperation von „13“ als positionsmäßig entsprechendes Element 107 der Ausgangsdaten 102 gespeichert.
  • Erweiterung von Merkmalskarte und Kernel.
  • 3 veranschaulicht die Erweiterung der Merkmalskarte und des Kernels. Im Falle der vorliegenden Ausführungsform wird die Merkmalskarte zur Verkürzung der Prozesszeit der Faltungsoperation zu einer Spalte erweitert, indem die jeweiligen Reihen der Merkmalskarte miteinander verbunden werden.
  • Konkret wird unter Bezugnahme auf 2 und 3 ein Eingangsvektor 110 aus 3 erzeugt, indem die jeweiligen Zeilen der Eingabedaten 100 aus 2 miteinander verbunden werden. Die Anzahl der Elemente des Eingangsvektors 110 entsprechend Eingabedaten 100 beträgt 7×7=49. Auch die Zeilen der Ausgangsdaten 102 aus 2 werden miteinander verbunden, um sich zu einer Spalte zu erweitern. Die Anzahl der Elemente des Ausgangsvektors, die den Ausgangsdaten 102 entsprechen, beträgt ebenfalls 49.
  • Kernel 101 aus 2 wird zu einer Matrix erweitert, um einen Ausgangsvektor zu erzeugen, der den Ausgangsdaten 102 aus 2 entspricht, wenn er mit dem Eingangsvektor 110 von rechts multipliziert wird. Entsprechend wird eine Koeffizientenmatrix 111 erzeugt. Die Koeffizientenmatrix 111 hat eine erste bis neunundvierzigste Zeile und hat somit 49 Zeilen. Die Koeffizientenmatrix 111 hat eine erste bis neunundvierzigste Spalte und hat daher 49 Spalten. Es ist zu beachten, dass in der Koeffizientenmatrix 111, die in 3 dargestellt ist, Elemente in leeren Quadraten 0 darstellen.
  • Die erste Zeile der Koeffizientenmatrix 111 ist (3, 2, 0, 0, 0, 0, 0, 1, 3, 0, ..., 0) und entspricht dem Fall, dass Kernel 101 von 2 so angeordnet ist, dass er dem Rahmen 105 entspricht, der durch die dicke gestrichelte Linie auf der Merkmalskarte 100 angezeigt wird. Durch die Durchführung der Multiplikations-Akkumulationsoperation der ersten Zeile der Koeffizientenmatrix 111 und des Eingangsvektors 110 werden die Daten „13“, die als positionsentsprechendes Element 107 der Ausgangsdaten 102 von 2 zu speichern sind, erzeugt.
  • In ähnlicher Weise ist die neunte Zeile der Koeffizientenmatrix 111 (3, 2, 1, 0, 0, 0, 0, 1, 3, 2, 0, 0, 0, 0, 2, 1, 3, 0, ..., 0) und entspricht dem Fall, dass Kernel 101 von 2 so angeordnet ist, dass er dem Rahmen 103 entspricht, der durch die dicke durchgezogene Linie auf der Merkmalskarte 100 angezeigt wird. Durch die Durchführung der Multiplikations-Akkumulationsoperation der neunten Zeile der Koeffizientenmatrix 111 und des Eingangsvektors 110 werden die Daten „30“, die als positionsentsprechendes Element 106 der Ausgangsdaten 102 von 2 zu speichern sind, erzeugt.
  • Wenn in 2 kein Padding angewendet wird, ist der Eingangsvektor 110 entsprechend Eingabedaten 100 unverändert und hat 49 Elemente. Da die Datengröße der Ausgangsdaten 102 (5, 5) ist, beträgt die Anzahl der Elemente eines Ausgangsvektors, der den Ausgangsdaten 102 entspricht, 5×5=25. Außerdem ist die Anzahl der Zeilen der Koeffizientenmatrix 111, die dem Kernel 101 entspricht, 25, und die Anzahl der Spalten 49.
  • Im Allgemeinen wird eine in der Faltungsoperation durchgeführte Matrixoperation durch eine Formel (1) ausgedrückt. Das heißt, einen Ausgangsvektor f der Faltungsoperation erhält man durch Multiplikation der Koeffizientenmatrix A mit dem Eingangsvektor x von rechts und durch Addition eines Biasvektors b zum Ergebnis der Rechenoperation. Eine Besonderheit der Koeffizientenmatrix A besteht darin, dass die Koeffizientenmatrix A eine vergleichsweise große Anzahl von Elementen enthält, die jeweils den Wert 0 haben. f = A x + b [ f 1 f 2 f n ] = ( A 11 A 12 A 1 m A 21 A 22 A 2 m A n 1 A n 2 A n m ) [ x 1 x 2 x m ] + [ b 1 b 2 b n ]
    Figure DE112017008040T5_0001
  • In dieser Beschreibung werden die Elemente des Ausgangsvektors f als f1, ..., fn angegeben. Das i-te Element des Ausgangsvektors f wird als fi oder f(i) angegeben. Die Elemente des Eingangsvektors x werden als x1, ..., xm angegeben. Das j-te Element des Eingangsvektors x wird als xj oder x(j) angegeben. Die Elemente des Biasvektors b werden als b1, ..., bn angegeben. Das Element des i-ten Biasvektors b wird als bi oder b(i) angegeben. Außerdem besteht die Koeffizientenmatrix A aus n Zeilen der ersten bis n-ten Zeile und m Spalten der ersten bis m-ten Spalte. Ein Element der i-ten Zeile und der j-ten Spalte der Koeffizientenmatrix A wird als Aij oder A(i, j) angegeben.
  • Konfiguration des Parallelrechners
  • Die durch die obige Formel (1) dargestellte Matrix-Operation kann von einem Parallelcomputer mit mehreren Rechnern ausgeführt werden. Im Folgenden wird eine beispielhafte Konfiguration eines Allzweck-Parallelcomputers beschrieben. Im Gegensatz zum Beispiel in 4 kann die durch die obige Formel (1) dargestellte Matrix-Operation von einem ASIC (Application Specific Integrated Circuit) ausgeführt werden, der eine Vielzahl von Rechnern enthält, die jeweils in der Lage sind, einen Prozess parallel zueinander auszuführen.
  • 4 ist ein Blockdiagramm, das eine beispielhafte Konfiguration des Parallelcomputers zeigt. Unter Bezugnahme auf 4 enthält der Parallelcomputer 120 Folgendes: Mehrere Verarbeitungseinheiten 121A, 121B, ..., die jeweils mehrere Rechner CL0, CL1, ... enthalten; einen L2-Cache-Speicher (Level 2 Cache-Speicher) 125; und einen dedizierten Speicher 126.
  • Jede Verarbeitungseinheit 121 (121A, 121B, ...) enthält Folgendes: Die Vielzahl von Rechner CL0, CL1, ...; Registergruppen R0, R1 ... entsprechend dem jeweiligen Rechner; und einen L1-Cache-Speicher (Level 1 Cache-Speicher) 122. Die Rechner CL (CL0, CL1, ...), die in der gleichen Verarbeitungseinheit 121 enthalten sind, teilen sich den L1-Cache-Speicher 122.
  • In der oben beschriebenen Konfiguration kann die Vielzahl der Verarbeitungseinheiten 121A, 121B, ... ein Programm parallel zueinander ausführen. Weiterhin kann die Vielzahl der Rechner CL0, CL1, ... jeder Verarbeitungseinheit 121 ein Programm parallel zueinander ausführen. Es ist zu beachten, dass das Programm über ein Netzwerk bereitgestellt werden kann, oder durch ein Speichermedium, das das Programm in einer nicht-transitorischen Art und Weise speichert, indem ein magnetisches oder optisches Verfahren, ein Halbleiterspeicher oder ähnliches verwendet wird.
  • Der Parallelrechner 120 kann über eine Hochgeschwindigkeitsschnittstelle an eine CPU (Zentrale Verarbeitungseinheit) 130 angeschlossen sein. Die CPU 130 steuert das gesamte Programm. In diesem Fall kann die Datenübertragung durch direkten Speicherzugriff zwischen einem Speicher 131 für die CPU 130 und einem dedizierten Speicher 126 des Parallelcomputers 120 zugelassen werden. Im Gegensatz zu der Konfiguration in 4 können die CPU 130 für die Steuerung und der Speicher 131 auch im den Parallelcomputer 120 eingebaut sein.
  • Übersicht über den Ablauf der Faltungsoperation
  • Im Folgenden wird ein Überblick über einen Ablauf der Faltungsoperation beschrieben, insbesondere ein Überblick über einen Ablauf der durch die Formel (1) dargestellten Matrixoperation.
  • 5 ist ein Flussdiagramm, das den Ablauf der Faltungsoperation im Überblick zeigt. Es wird davon ausgegangen, dass jedes Element des für die Faltungsoperation verwendeten Kernels bereits trainiert wurde. Wie in 5 dargestellt, kann ein Faltungsoperationsprozess unterteilt werden in einen Vorprozess S500, der zu Beginn nur einmal ausgeführt wird, und eine Multiplikations-Akkumulationsoperation S510, die als Antwort auf Eingabedaten wiederholt wird. Der Vorprozess kann von einer Allzweck-CPU (z.B. CPU 130 in 4) durchgeführt werden. Andererseits wird die Multiplikations-Akkumulationsoperation hauptsächlich von dem Parallelrechner 120 aus 4 durchgeführt und im Allgemeinen von der CPU 130 gesteuert.
  • In der Vorverarbeitungsphase erzeugt zunächst in einem Schritt S501, wie in 2 und 3 dargestellt, ein Prozessor wie die CPU aus dem trainierten Kernel die Koeffizientenmatrix A. Die erzeugte Koeffizientenmatrix A wird in einem Speicher abgelegt.
  • In einem nächsten Schritt S502 sucht der Prozessor nach allen Nicht-Null-Elementen der Koeffizientenmatrix A. Die Koeffizientenmatrix A wird in einem Speicher abgelegt. Das Suchergebnis wird im Speicher gespeichert. Dementsprechend wird die Gesamtzahl der in der Koeffizientenmatrix A enthaltenen Nicht-Null-Elemente gefunden. Es wird davon ausgegangen, dass die Eingabedaten in eine Spalte expandiert und entsprechend in den Eingangsvektor umgewandelt werden.
  • In einem nächsten Schritt S503 weist der Prozessor dem Rechner CL Multiplikationen der gesuchten Nicht-Null-Elemente und entsprechende Elemente des Eingangsvektors x zu, wobei jede der Multiplikationen als eine Prozesseinheit behandelt wird, um die Anzahl der Prozesseinheiten unter den Rechnern CL, die im Parallelrechner 120 enthalten sind, zu nivellieren. Dementsprechend können die Prozesszeiten zwischen den Rechnern im Wesentlichen gleich gemacht werden. Auf diese Weise wird die Vorverarbeitungsphase beendet.
  • In der nächsten Multiplikations-Akkumulationsoperation wird zunächst in einem Schritt S511 der Biasvektor b als Anfangswert in den Ausgangsvektor f eingegeben. Es ist zu beachten, dass der Biasvektor b am Ende der Multiplikations-Akkumulationsoperation zum Ausgangsvektor f addiert werden kann.
  • Im nächsten Schritt S512 führt jeder Rechner CL des Parallelrechners 120 nacheinander die zugeordnete Multiplikation durch. Der Rechner CL addiert ein Multiplikationsergebnis zu einem Wert, der derzeit als entsprechendes Element des Ausgangsvektors f gespeichert ist. Das heißt, das Multiplikationsergebnis wird sequentiell zum entsprechenden Element des Ausgangsvektors f addiert. Schritt S512 wird wiederholt, bis alle zugewiesenen Multiplikationen beendet sind (bis in Schritt S513 JA bestimmt wird).
  • Es ist zu beachten, dass in jedem der Schritte S512, S513 berücksichtigt werden kann, dass die Multiplikations-Akkumulationsoperationen jeder Zeile der Koeffizientenmatrix A und des Eingangsvektors x zur Ausführung in Einheits-Multiplikations-Akkumulationsoperationen aufgeteilt werden können. Hier besteht jede der Einheits-Multiplikations-Akkumulationsoperationen aus Folgendem: Einer Multiplikation eines Nicht-Null-Elements der Koeffizientenmatrix A und eines entsprechenden Elements des Eingangsvektors; und einer Addition eines Multiplikationsergebnisses zu einem entsprechenden Element des Ausgangsvektors f.
  • Im Folgenden wird ein kurzes spezifisches Beispiel dafür beschrieben. Es wird z.B. angenommen, dass in der Koeffizientenmatrix A der Formel (1) n=m und nur diagonale Elemente Nicht-Null-Elemente sind. Außerdem wird angenommen, dass die Gesamtzahl der Rechner CL insgesamt n ist. In diesem Fall führt der i-te (1≤i≤n) Rechner CL eine Multiplikation von Aii und xi durch und addiert das Multiplikationsergebnis zum Bias-Wert bi, der aktuell als Element fi des Ausgangsvektors f gespeichert ist.
  • Als weiteres Beispiel wird angenommen, dass in der Koeffizientenmatrix A der Formel (1) nur die Elemente A11 bis A1m der ersten Zeile Nicht-Null-Elemente sind. Darüber hinaus wird angenommen, dass die Gesamtzahl der Rechner CL m ist. In diesem Fall führt der i-te (1≤i≤m) Rechner CL eine Rechenoperation von A1i·xi durch und addiert das Ergebnis der Rechenoperation zu dem Wert, der derzeit als erstes Element f1 des Ausgangsvektors f gespeichert ist. Da die Additionsoperationen des Rechners CL miteinander in Konflikt stehen, wird in diesem Fall eine exklusive Steuerung durchgeführt. Beispielsweise addiert der erste Rechner CL das Ergebnis der Rechenoperation von A11·x1 zum Anfangswert b1 des Elements f1 des Ausgangsvektors f. Nach Ende dieser Additionsoperation addiert der zweite Rechner CL ein Ergebnis der Rechenoperation von A12·x2 zu b1+A11·x1, das derzeit als Element f1 des Ausgangsvektors f gespeichert ist. Anschließend wird die Additionsoperation in der gleichen Weise sequentiell wiederholt.
  • Details des Verfahrens der Faltungsoperation
  • 6 ist ein Flussdiagramm, das den Ablauf der Faltungsoperation im Detail zeigt.
  • Unter Bezugnahme auf 6 entspricht der Schritt S101 bis zum Schritt S108 dem Vorprozess von Schritt S500 aus 5.
  • Zunächst werden die Variablen in Schritt S101 initialisiert. Konkret initialisiert der Prozessor sowohl eine Zeilenrichtungsvariable i als auch eine Spaltenrichtungsvariable j auf 1 und initialisiert die Anzahl k der Nicht-Null-Elemente (d.h. die Anzahl der Einheits-Multiplikations-Akkumulationsoperationen) auf 0.
  • Im nächsten Schritt S102 wird bestimmt, ob ein Element ein Nicht-Null-Element ist oder nicht. Konkret prüft der Prozessor den Wert eines Elements A(i, j) der Koeffizientenmatrix A. Wenn der Wert 0 ist, ist das Element A(i, j) ein Element, das nicht für die Multiplikations-Akkumulationsoperation vorgesehen ist. Daher fährt der Prozess mit Schritt S105 fort, um die Zeilenrichtungsvariable i hochzuzählen. Wenn der Wert des Elements A(i, j) jedoch nicht 0 ist, ist das Element A(i, j) ein Element, das für die Multiplikations-Akkumulationsoperation vorgesehen ist. Daher setzt der Prozessor den Prozess zum Schritt S103 fort, um das Nicht-Null-Element zu speichern.
  • In Schritt S103 wird ein Zeiger auf das gesuchte Nicht-Null-Element gespeichert. Insbesondere speichert der Prozessor zur Speicherung des Zeigers auf das Element A(i, j), das für die Multiplikations-Akkumulationsoperation vorgesehen ist, die Zeilenrichtungsvariable i in einem Zeilenzahl-Speicherarray AROW(k) und die Spaltenrichtungsvariable j in einem Spaltenzahl-Speicherarray ACOL(k).
  • Im nächsten Schritt S104 wird die Anzahl k der Nicht-Null-Elemente hochgezählt. Insbesondere inkrementiert der Prozessor die Variable k, die die Anzahl der Nicht-Null-Element anzeigt.
  • Im nächsten Schritt S105 inkrementiert der Prozessor die Zeilenrichtungsvariable i, um die nächste Zeile zu prüfen.
  • Im nächsten Schritt S106 wird, um den Prozess in die nächste Spalte zu überführen, wenn ein Prozess für eine Spalte abgeschlossen ist, bestimmt, ob der Prozess für eine Spalte der Koeffizientenmatrix abgeschlossen ist oder nicht. Insbesondere durch den Vergleich der Zeilenrichtungsvariablen i mit der Anzahl n von Zeilen der Koeffizientenmatrix bestimmt der Prozessor, ob der Prozess für die aktuelle Spalte abgeschlossen ist oder nicht. Wenn die Zeilenrichtungsvariable i größer als die Anzahl n von Zeilen ist, stellt der Prozessor fest, dass der Prozess für die aktuelle Spalte abgeschlossen ist oder nicht. Um den Prozess für die nächste Spalte durchzuführen, setzt der Prozessor den Prozess in Schritt S107 zur Aktualisierung der Spaltenrichtungsvariablen j fort. Wenn andererseits die Zeilenrichtungsvariable i nicht größer als die Anzahl n von Zeilen ist, stellt der Prozessor fest, dass der Prozess für die gegenwärtige Spalte noch nicht abgeschlossen ist. Um den Prozess für die nächste Zeile durchzuführen, setzt der Prozessor den Prozess in Schritt S102 fort, um zu bestimmen, ob das Element ein Nicht-Null-Element ist oder nicht.
  • In Schritt S107 werden die Variablen für den Prozess für die nächste Spalte aktualisiert. Insbesondere initialisiert der Prozessor die Zeilenrichtungsvariable i auf 1, um den Prozess ab der ersten Zeile der nächsten Spalte durchzuführen. Außerdem inkrementiert der Prozessor die Spaltenrichtungsvariable j.
  • Im nächsten Schritt S108 wird ermittelt, ob der Prozess für alle Spalten abgeschlossen ist. Um zu bestimmen, ob der Prozess für alle Spalten abgeschlossen ist oder nicht, bestimmt der Prozessor durch Vergleich der Spaltenrichtungsvariablen j mit der Anzahl m der Spalten der Koeffizientenmatrix A, ob der Prozess für die gesamte Matrix abgeschlossen ist oder nicht. Wenn die Spaltenrichtungsvariable j größer ist als die Anzahl m der Spalten, bestimmt der Prozessor, dass der Prozess für die gesamte Matrix abgeschlossen ist, und setzt den Prozess mit Schritt S109 zur Initialisierung der Variable f (entsprechend dem Ausgangsvektor) der Multiplikations-Akkumulationsoperation fort. Wenn andererseits die Spaltenrichtungsvariable j nicht größer ist als die Anzahl m der Spalten, stellt der Prozessor fest, dass eine nicht verarbeitete Spalte übrig bleibt, und setzt den Prozess mit Schritt S102 fort, um zu bestimmen, ob das Element ein Nicht-Null-Element ist oder nicht.
  • Die nachfolgenden Schritte S109 bis S112 entsprechen der Multiplikations-Akkumulationsoperation S510 aus 5. Diese Schritte werden hauptsächlich von dem Parallelrechner 120 aus 4, einem dedizierten ASIC, der in der Lage ist, parallele Rechenoperationen oder ähnliches durchzuführen, durchgeführt.
  • Zunächst wird in Schritt S109 jede Variable, die für die Multiplikations-Akkumulationsoperation verwendet wird, initialisiert. Im Einzelnen initialisiert der Prozessor (z.B. CPU 130 in 4), der die allgemeine Operation steuert, jeweils eine Indexvariable o des Zeilenzahl-Speicherarrays und des Spaltenzahl-Speicherarrays auf 0. Ferner initialisiert der Prozessor die Ausgangsvektoren f(1) bis f(n) zur Ausgabe von Ergebnissen der Multiplikations-Akkumulationsoperation an die Elemente b(1) bis b(n) des Biasvektors b.
  • Im nächsten Schritt S110 wird die Gesamtzahl k der Einheits-Multiplikations-Akkumulationsoperationen sequentiell mit n Multiplikations-Akkumulationsrechnern durchgeführt. Insbesondere werden der Zeilenzahl-Speicherarray AROW(p) und der Spaltenzahl-Speicherarray ACOL(p) als Zeiger auf die Koeffizientenmatrix A verwendet, und der p-te Rechner CL führt die durch die folgende Formel (2) angegebene Einheits-Multiplikations-Akkumulationsoperation durch: f ( A R O W ( p ) ) = f ( A R O W ( p ) ) + A ( A R O W ( p ) ) , A C O L ( p ) x ( A C O L ( p ) )
    Figure DE112017008040T5_0002
  • Da die Einheits-Multiplikations-Akkumulationsoperationen mit den n Rechnern parallel durchgeführt werden, hat die Variable p in der obigen Formel (2) n Werte in einem Bereich von p=o bis p=o+n-1. Da die Multiplikations-Akkumulationsoperationen nicht so durchgeführt werden, dass sie die Anzahl k der Nicht-Null-Elemente überschreiten, wird eine Multiplikations-Akkumulationsoperation nur dann durchgeführt, wenn p<k erfüllt ist.
  • Im nächsten Schritt S111 wird die Variable für die Multiplikations-Akkumulationsoperationen hochgezählt. Insbesondere erhöht der Prozessor für die Steuerung die Indexvariable o der Zeilenzahl-Speicheranordnung AROW(p) und der Spaltenwert-Speicheranordnung ACOL(p) um die Zahl n der Rechner, um die nächsten n Multiplikations-Akkumulationsoperationen vorzubereiten.
  • Im nächsten Schritt S112 wird bestimmt, ob alle Einheits-Multiplikations-Akkumulationsoperationen abgeschlossen sind. Durch Vergleich der Indexvariablen o jedes Arrays zur Speicherung der Zeilenzahl und des Arrays zur Speicherung der Spaltenzahl mit der Anzahl k von Nicht-Null-Elementen bestimmt der Prozessor zur Steuerung, ob die Multiplikations-Akkumulationsoperationen für alle Nicht-Null-Elemente abgeschlossen sind. Wenn die Indexvariable o jeder der Zeilenzahl-Speicheranordnung und der Spaltenzahl-Speicheranordnung größer oder gleich der Anzahl k von Nicht-Null-Elementen ist, bestimmt der Prozessor zur Steuerung, dass alle Multiplikations-Akkumulationsoperationen abgeschlossen sind, und beendet den Prozess der Multiplikations-Akkumulationsoperationen. Wenn andererseits die Indexvariable o jeder der Zeilenzahl-Speicherarrays und der Spaltenzahl-Speicherarrays nicht größer oder gleich der Anzahl k der Nicht-Null-Elemente ist, fährt der Prozessor für die Steuerung mit dem Prozess zu Schritt S110 zur Durchführung der Multiplikations-Akkumulationsoperationen fort, um die restlichen Multiplikations-Akkumulationsoperationen durchzuführen.
  • Es ist zu beachten, dass bei der oben beschriebenen Prozedur der Rechenoperation die Prüfung auf die Nicht-Null-Elemente der Koeffizientenmatrix A in der Reihenfolge der Zeile und der Spalte durchgeführt wird, aber auch in der Reihenfolge der Spalte und der Zeile durchgeführt werden kann. Außerdem ist die Gesamtzahl der Rechner CL gleich der Anzahl n der Zeilen, kann aber auch gleich der Anzahl m der Spalten sein oder auf eine beliebige Anzahl gesetzt werden.
  • 7 ist ein Flussdiagramm, das ein beispielhaftes Verfahren zur Durchführung der Einheits-Multiplikations-Akkumulationsoperation in jedem Rechner des Parallelrechners von 4 zeigt. Es ist zu beachten, dass bei dem unten beschriebenen Verfahren ein erstes Register und ein zweites Register in der Registergruppe R entsprechend jedem Rechner CL enthalten sind.
  • In einem Schritt S301 liest Rechner CL ein entsprechendes Element A(AROW(p), ACOL(p)) der Koeffizientenmatrix aus dediziertem Speicher 126, L1 Cache-Speicher 122 oder L2 Cache-Speicher 125 aus und speichert es in sein entsprechendes erstes Register.
  • In einem nächsten Schritt S302 liest der Rechner CL ein entsprechendes Element x(ACOL(p)) des Eingangsvektors aus dedizierter Speicher 126, L1 Cache-Speicher 122 oder L2 Cache-Speicher 125 aus und speichert es in sein entsprechendes zweites Register. Es ist zu beachten, dass Schritt S302 auch gleichzeitig mit Schritt S301 oder vor Schritt S301 durchgeführt werden kann.
  • In einem nächsten Schritt S303 multipliziert der Rechner CL den im ersten Register gespeicherten Wert mit dem im zweiten Register gespeicherten Wert und speichert z.B. ein Multiplikationsergebnis im ersten Register.
  • Die nachfolgenden Schritte werden ausgeführt, wenn auf das entsprechende Element f(AROW(p)) des Ausgangsvektors zugegriffen werden kann, d.h. wenn kein Konflikt vorliegt (JA in Schritt S304).
  • Zunächst liest der Rechner CL in einem Schritt S305 fs(AROW(p)) aus dem dedizierten Speicher 126, L1 Cache-Speicher 122 oder L2 Cache-Speicher 125 und speichert es in das zweite Register.
  • In einem nächsten Schritt S306 werden der im ersten Register gespeicherte Wert (d.h. das Ergebnis der Rechenoperation aus Schritt S303) und der im zweiten Register gespeicherte Wert addiert und das Additionsergebnis z.B. im ersten Register gespeichert.
  • In einem nächsten Schritt S307 speichert der Rechner CL den im ersten Register gespeicherten Wert (d.h. das Ergebnis der Rechenoperation aus Schritt S306) in eine entsprechende Adresse des L1-Cache-Speichers 122. Auf diese Weise wird die Einheits-Multiplikations-Akkumulationsoperation abgeschlossen.
  • Spezifisches Beispiel einer Faltungsoperation
  • Im Folgenden wird anhand exemplarischer Zahlenwerte die Vorgehensweise der Faltungsoperation von 6 näher beschrieben. Konkret werden Koeffizientenmatrix A, Eingangsvektor x und Biasvektor b wie in der folgenden Formel (3) eingestellt: f = A x + b = ( 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0 1 ) [ 1 2 3 4 ] + [ 4 3 2 1 ]
    Figure DE112017008040T5_0003
  • Wenn jede Zeile der oben beschriebenen Matrixoperation einzeln von einem entsprechenden Rechner-CL ausgeführt wird, werden vier Rechenoperationen, die in der folgenden Formel (4) dargestellt sind, jeweils vier Rechnern zugeordnet. f ( 1 ) = 1 1 + 1 2 + 1 3 + 4 f ( 2 ) = 1 2 + 1 3 + 3 f ( 3 ) = 1 3 + 2 f ( 4 ) = 1 4 + 1 }
    Figure DE112017008040T5_0004
  • Daher ist in diesem Fall die Anzahl der Rechenoperationen des ersten Rechners am größten, während die Anzahl der Rechenoperationen des dritten und vierten Rechners jeweils am kleinsten ist. Die gesamte Prozesszeit wird durch eine Rechenoperationszeit des ersten Rechners bestimmt.
  • Wenn andererseits die beispielhaften Zahlenwerte der Formel (3) auf die Schritte S101 bis S108 von 6 der vorliegenden Ausführungsform angewendet werden, sind die Zeilenzahl-Speicheranordnung AROW(p) und die Spaltenzahl-Speicheranordnung ACOL(p) wie in der folgenden Tabelle 1 beschrieben: Tabelle 1: Werte von AROW(p) und ACOL(p)
    p 0 1 2 3 4 5 6
    AROW 1 1 2 1 2 3 4
    ACOL 1 2 2 3 3 3 4
  • Der Index p der obigen Tabelle 1 wird in der nachfolgenden Koeffizientenmatrix A zur besseren Übersichtlichkeit hochgestellt, wie in der folgenden Formel (5) angegeben. Wie in der Formel (5) angegeben, beträgt die Gesamtzahl der Nicht-Null-Elemente, d.h. die Gesamtzahl der Einheits-Multiplikations-Akkumulationsoperationen, 7. f = A x + b = ( 0 1 1 1 3 1 0 0 2 1 4 1 0 0 0 5 1 0 0 0 0 6 1 ) [ 1 2 3 4 ] + [ 4 3 2 1 ]
    Figure DE112017008040T5_0005
  • Basierend auf dem Zeilenzahl-Speicherarray AROW(p) und dem Spaltenzahl-Speicherarray ACOL(p) werden die in der Koeffizientenmatrix A durchzuführenden Einheits-Multiplikations-Akkumulationsoperationen wie in den folgenden Formeln (6.1) bis (6.7) ausgedrückt: f ( 1 ) = f ( 1 ) + A ( 1,1 ) x ( 1 )
    Figure DE112017008040T5_0006
    f ( 1 ) = f ( 1 ) + A ( 1,2 ) x ( 2 )
    Figure DE112017008040T5_0007
    f ( 2 ) = f ( 2 ) + A ( 2,2 ) x ( 2 )
    Figure DE112017008040T5_0008
    f ( 1 ) = f ( 1 ) + A ( 1,3 ) x ( 3 )
    Figure DE112017008040T5_0009
    f ( 2 ) = f ( 2 ) + A ( 2,3 ) x ( 3 )
    Figure DE112017008040T5_0010
    f ( 3 ) = f ( 3 ) + A ( 3,3 ) x ( 3 )
    Figure DE112017008040T5_0011
    f ( 4 ) = f ( 4 ) + A ( 4, ) x ( 4 )
    Figure DE112017008040T5_0012
  • Da die Anzahl n der Rechners CL 4 ist, werden die durch die Formeln (6.1) bis (6.4) angegebenen Einheits-Multiplikations-Akkumulationsoperationen jeweils im ersten Schritt durch den nullten bis dritten Rechner CL0 bis CL3 durchgeführt. In diesem Fall wird für den Zugriff auf das entsprechende Element f(1) des Ausgangsvektors jeder Einheits-Multiplikations-Akkumulationsoperation in der Formel (6.1), der Formel (6.2) und der Formel (6.4) die ausschließliche Kontrolle durchgeführt.
  • In einem nächsten Schritt werden die Einheits-Multiplikations-Akkumulationsoperationen der Formeln (6.5) bis (6.7) jeweils durch den nullten bis zweiten Rechner CL0 bis CL2 durchgeführt.
  • Wirkung
  • Wie oben beschrieben, werden gemäß der ersten Ausführungsform die Nicht-Null-Elemente der Koeffizientenmatrix A gesucht und die Einheits-Multiplikations-Akkumulationsoperationen für die Nicht-Null-Elemente auf Basis des Suchergebnisses dem Rechner zugeordnet und von diesem durchgeführt. Entsprechend können die Anzahl der Prozesse für die Einheits-Multiplikations-Akkumulationsoperationen unter den Rechnern ausgeglichen werden, wodurch die Multiplikations-Akkumulationsoperationen durch die Vielzahl der Rechner effizient durchgeführt werden können.
  • 8 veranschaulicht einen Effekt der ersten Ausführungsform. 8 (A) zeigt ein Vergleichsbeispiel und 8 (B) zeigt den Fall der vorliegenden Ausführungsform.
  • 8 (A) zeigt einen Fall, bei dem Multiplikations-Akkumulationsoperationen der jeweiligen Zeilen der Koeffizientenmatrix A und des Eingangsvektors x individuell dem Rechner CL zugeordnet werden. In diesem Fall, auch wenn nur die Nicht-Null-Elemente berechnet werden, wird, wenn die Anzahl der Nicht-Null-Elemente zwischen den Zeilen der Koeffizientenmatrix unterschiedlich ist, die gesamte Rechenoperationsdauer durch eine Rechenoperation im Rechner CL bestimmt, die der Zeile mit der größten Anzahl von Nicht-Null-Elementen entspricht.
  • Im Fall der vorliegenden Ausführungsform aus 8 (B) werden die Einheits-Multiplikations-Akkumulationsoperationen dem Rechner im Wesentlichen gleich zugeordnet. Das heißt, Bereiche der Einheits-Multiplikations-Akkumulationsoperationen, die vom Rechner (1) und vom Rechner (2) im Fall von 8 (A) durchgeführt werden, werden anderen Rechnern zugewiesen. Entsprechend kann die gesamte Prozesszeit reduziert werden.
  • Ausführungsform 2
  • Im Schritt S110 des in 6 gezeigten Flussdiagramms greifen n Rechner CL gleichzeitig auf die Koeffizientenmatrix A mit den n Zeilen und den m Spalten über die Zeilenzahl-Speicheranordnung AROW(p) und die Spaltenzahl-Speicheranordnung ACOL(p) zu. Entsprechend hoch wird die Prozesslast bei einer großen Koeffizientenmatrix A. Um dem entgegenzuwirken, wird in der zweiten Ausführungsform anstelle des Zugriffs auf die Koeffizientenmatrix A mit den n Zeilen und den m Spalten über die Zeilenzahl-Speicheranordnung AROW(p) und die Spaltenzahl-Speicheranordnung ACOL(p) ein Koeffizientenfeld A' (auch als „Koeffizientenvektor A' “ bezeichnet) mit Ausnahme der Nicht-Null-Elemente neu definiert und n Rechner CL greifen auf das Koeffizientenfeld A' zu. Damit kann ein intensiver Zugriff auf die Koeffizientenmatrix A mit den n Zeilen und den m Spalten verhindert werden.
  • 9 ist ein Flussdiagramm, das den Ablauf einer Faltungsoperation nach der zweiten Ausführungsform zeigt. Die Schritte S401 bis S412 der 9 entsprechen jeweils den Schritten S101 bis S112 der 6. Allerdings unterscheiden sich Bereiche der Abläufe in Schritt S403 und Schritt S412 davon. Im Folgenden werden hauptsächlich die Schritte S403 und S412 mit unterschiedlichen Prozessen beschrieben, wobei die Schritte mit den gleichen Prozessen wie in 6 nicht wiederholt beschrieben werden.
  • Unter Bezugnahme auf 9 werden in Schritt S403 die Werte der in der Koeffizientenmatrix A enthaltenen Nicht-Null-Elemente sowie deren Zeilen- und Spaltennummern gespeichert. Um insbesondere ein Element A(i, j) zu speichern, das für eine Multiplikations-Akkumulationsoperation vorgesehen ist, speichert der Prozessor eine Zeilenrichtungsvariable i in der Zeilenzahl-Speicheranordnung AROW(k), eine Spaltenrichtungsvariable j in der Spaltenzahl-Speicheranordnung ACOL(k) und das Element A(i, j) der Koeffizientenmatrix A in dem Koeffizientenfeld A'(k).
  • Im Folgenden wird insbesondere der Fall der beispielhaften Zahlenwerte in der obigen Formel (3) beschrieben. In diesem Fall wird das Koeffizientenfeld A' wie in der folgenden Tabelle 2 beschrieben angegeben. Tabelle 2: Wert von A'(p)
    p 0 1 2 3 4 5 6
    A' 1 1 1 1 1 1 1
  • In Schritt S410 werden k Einheits-Multiplikations-Akkumulationsoperationen insgesamt sequentiell von n Rechnern CL ausgeführt. Insbesondere werden der Zeilenzahl-Speicherbereich AROW(p) und der Spaltenzahl-Speicherbereich ACOL(p) als Zeiger auf den Ausgangsvektor f bzw. den Eingangsvektor x verwendet, und der p-te Rechner CL führt eine Einheits-Multiplikations-Akkumulationsoperation durch, die durch die folgende Formel (7) angegeben wird: f ( A R O W ( p ) ) = f ( A R O W ( p ) ) + A ' ( p ) x ( A C O L ( p ) )
    Figure DE112017008040T5_0013
  • Da die Einheits-Multiplikations-Akkumulationsoperationen mit den n-Rechnern parallel durchgeführt werden, nimmt die Variable p der Formel (7) n Werte in einem Bereich von p=o bis p=o+n-1 an. Da die Multiplikations-Akkumulationsoperationen durchgeführt werden, ohne die Anzahl k der Nicht-Null-Elemente zu überschreiten, wird eine Multiplikations-Akkumulationsoperation nur dann durchgeführt, wenn p<k erfüllt ist.
  • Wie oben beschrieben, kann nach der zweiten Ausführungsform der gleiche Effekt wie in der ersten Ausführungsform gezeigt werden, und ein intensiver Zugriff auf die Koeffizientenmatrix A mit den n Zeilen und den m Spalten kann verhindert werden.
  • Die hier beschriebenen Ausführungsformen sind in jeder Hinsicht illustrativ und nicht einschränkend. Der Umfang der vorliegenden Erfindung wird nicht durch die oben beschriebenen Ausführungsformen definiert und soll alle Änderungen umfassen.
  • Bezugszeichenliste
  • 100
    Eingabedaten (Eingabe Feature Map)
    101
    Kernel
    102
    Ausgangsdaten
    110, x
    Eingangsvektor
    111, A
    Koeffizientenmatrix
    120
    Parallelcomputer
    121
    Verarbeitungseinheit
    122
    L1 Cache-Speicher
    125
    L2-Cache-Speicher
    126
    dedizierter Speicher
    130
    CPU
    131
    Speicher
    A'
    Koeffizientenfeld (Koeffizientenvektor)
    CL
    Rechner
    R
    Registergruppe
    b
    Biasvektor
    f
    Ausgangsvektor
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • JP 2010134697 A [0003, 0004]

Claims (7)

  1. Rechenoperationsschaltung, um eine Koeffizientenmatrix, die Nicht-Null-Elemente und Null-Elemente enthält, mit einem Eingangsvektor von rechts zu multiplizieren und um das Rechenoperationsergebnis als Ausgangsvektor auszugeben, wobei die Rechenoperationsschaltung Folgendes aufweist: Einen Steuerprozessor; und eine Vielzahl von Rechnern, die jeweils in der Lage sind, Prozesse parallel zueinander auszuführen, wobei der Steuerprozessor den Rechnern Multiplikationen der in der Koeffizientenmatrix enthaltenen Nicht-Null-Elemente und entsprechende Elemente des Eingangsvektors zuweist, wobei jede der Multiplikationen als eine Prozesseinheit behandelt wird, um die Anzahl der Prozesseinheiten unter den Rechnern zu nivellieren, und wobei die Rechner nacheinander die zugewiesenen Multiplikationen ausführen und die Ergebnisse der Multiplikationen nacheinander zu den entsprechenden Elementen des Ausgangsvektors addieren.
  2. Rechenoperationsschaltung nach Anspruch 1, wobei die Rechenoperationsschaltung eine Rechenoperation einer Faltungsschicht in einem Gefalteten Neuronalen Netzwerk durchführt, der Eingangsvektor durch die Erweiterung einer Merkmalskarte, die in die Faltungsschicht eingegeben wird, in eine Spalte erhalten wird, und wobei die Koeffizientenmatrix einem Kernel entspricht, der in der Faltungsschicht verwendet wird.
  3. Rechenoperationsschaltung nach Anspruch 1 oder 2, die weiterhin Folgendes aufweist: Einen Koeffizientenvektor, um nur die aus der Koeffizientenmatrix extrahierten Nicht-Null-Elemente zu speichern, wobei die Rechner die Multiplikationen durchführten, indem sie entsprechende Nicht-Null-Elemente verwendet, die aus dem Koeffizientenvektor extrahiert werden.
  4. Rechenoperationsverfahren für eine Faltungsschicht in einem Gefalteten Neuronalen Netzwerk, wobei das Rechenoperationsverfahren folgende Schritte aufweist: Erzeugen einer Koeffizientenmatrix durch Umwandeln eines in der Faltungsschicht verwendeten Kernels, so dass die Koeffizientenmatrix mit einem Eingangsvektor verbunden ist, der durch Expandieren einer Merkmalskarte, die in die Faltungsschicht eingegeben wird, in eine Spalte erhalten wird; Suche nach Nicht-Null-Elementen, die in der Koeffizientenmatrix enthalten sind; Zuweisen von Multiplikationen der in der Koeffizientenmatrix enthaltenen Nicht-Null-Elemente und entsprechender Elemente des Eingangsvektors an eine Vielzahl von Rechnern, wobei jede der Multiplikationen als eine Prozesseinheit behandelt wird, um die Anzahl der Prozesseinheiten zwischen den Rechnern zu nivellieren, wobei alle Rechner in der Lage sind, Prozesse parallel zueinander auszuführen; und sequentielles Ausführen der zugewiesenen Multiplikationen durch die Rechner und sequentielles Addieren der Ergebnisse der Multiplikationen durch die Rechner zu den entsprechenden Elementen eines Ausgangsvektors.
  5. Rechenoperationsverfahren nach Anspruch 4, wobei ferner ein Biasvektor als Anfangswert des Ausgangsvektors eingegeben wird.
  6. Rechenoperationsverfahren nach Anspruch 4 oder 5, wobei ferner folgende Schritte durchgeführt werden: Extrahieren nur der Nicht-Null-Elemente, die in der Koeffizientenmatrix enthalten sind; und Speichern der Nicht-Null-Elemente als Koeffizientenvektor, wobei die Rechner die Multiplikationen durchführen, indem sie entsprechende, vom Koeffizientenvektor extrahierte Nicht-Null-Elemente verwenden.
  7. Programm, das einen Computer veranlasst, das in einem der Ansprüche 4 bis 6 aufgeführte Rechenoperationsverfahren durchzuführen.
DE112017008040.1T 2017-09-14 2017-09-14 Rechenoperationsschaltung, rechenoperationsverfahren und programm Pending DE112017008040T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/033225 WO2019053835A1 (ja) 2017-09-14 2017-09-14 演算回路、演算方法、およびプログラム

Publications (1)

Publication Number Publication Date
DE112017008040T5 true DE112017008040T5 (de) 2020-07-09

Family

ID=65723958

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017008040.1T Pending DE112017008040T5 (de) 2017-09-14 2017-09-14 Rechenoperationsschaltung, rechenoperationsverfahren und programm

Country Status (5)

Country Link
US (1) US11281746B2 (de)
JP (1) JP6956796B2 (de)
CN (1) CN111052111A (de)
DE (1) DE112017008040T5 (de)
WO (1) WO2019053835A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107633295B (zh) * 2017-09-25 2020-04-28 南京地平线机器人技术有限公司 用于适配神经网络的参数的方法和装置
US11636327B2 (en) * 2017-12-29 2023-04-25 Intel Corporation Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism
US11487846B2 (en) * 2018-05-04 2022-11-01 Apple Inc. Performing multiply and accumulate operations in neural network processor
JP7199283B2 (ja) * 2019-03-28 2023-01-05 三菱電機株式会社 アクセラレータ装置
CN110991619A (zh) * 2019-12-09 2020-04-10 Oppo广东移动通信有限公司 神经网络处理器、芯片和电子设备
JP6872599B1 (ja) * 2019-12-23 2021-05-19 三菱電機マイコン機器ソフトウエア株式会社 ニューラルネットワーク処理装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010134697A (ja) 2008-12-04 2010-06-17 Canon Inc コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0748207B2 (ja) * 1989-04-14 1995-05-24 シャープ株式会社 行列演算装置
JP2825133B2 (ja) * 1989-09-20 1998-11-18 富士通株式会社 並列データ処理方式
TW325552B (en) * 1996-09-23 1998-01-21 Advanced Risc Mach Ltd Data processing condition code flags
JP2888292B2 (ja) 1997-07-24 1999-05-10 日本電気株式会社 2次元逆離散コサイン変換(idct)装置
JP2003122736A (ja) * 2001-10-11 2003-04-25 Matsushita Electric Ind Co Ltd 行列演算装置
JP4014512B2 (ja) * 2002-02-12 2007-11-28 株式会社リバーベル 画像改質処理方法およびその装置、プログラム、並びにデータ記録媒体
CN1682214A (zh) * 2003-03-07 2005-10-12 松下电器产业株式会社 矩阵运算装置
JP3981399B1 (ja) * 2006-03-10 2007-09-26 松下電器産業株式会社 固定符号帳探索装置および固定符号帳探索方法
US8488849B2 (en) * 2006-02-22 2013-07-16 Koninklijke Philips Electronics N.V. Image reconstruction using data ordering
CN101136882B (zh) * 2006-10-25 2010-05-19 中兴通讯股份有限公司 无线通信基带处理的系统矩阵计算方法和装置
CN101533387A (zh) * 2009-04-24 2009-09-16 西安电子科技大学 基于fpga的边角块稀疏矩阵并行lu分解器
CN102541814B (zh) * 2010-12-27 2015-10-14 北京国睿中数科技股份有限公司 用于数据通信处理器的矩阵计算装置和方法
US20160358069A1 (en) * 2015-06-03 2016-12-08 Samsung Electronics Co., Ltd. Neural network suppression
CN106445471B (zh) * 2016-10-13 2018-06-01 北京百度网讯科技有限公司 处理器和用于在处理器上执行矩阵乘运算的方法
US20180330275A1 (en) * 2017-05-09 2018-11-15 Microsoft Technology Licensing, Llc Resource-efficient machine learning

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010134697A (ja) 2008-12-04 2010-06-17 Canon Inc コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置

Also Published As

Publication number Publication date
JPWO2019053835A1 (ja) 2020-10-01
US20210149983A1 (en) 2021-05-20
CN111052111A (zh) 2020-04-21
JP6956796B2 (ja) 2021-11-02
US11281746B2 (en) 2022-03-22
WO2019053835A1 (ja) 2019-03-21

Similar Documents

Publication Publication Date Title
DE112017008040T5 (de) Rechenoperationsschaltung, rechenoperationsverfahren und programm
DE202018101330U1 (de) Transportieren von Matrizen neuronaler Netze in Hardware
DE112019000437B4 (de) Architektur einer resistiven verarbeitungseinheit mit voneinander getrennter gewichtungsaktualisierungs- und inferenzschaltung
DE3854774T2 (de) Textsuchsystem
DE3586201T2 (de) Digitaler datenprozessor fuer matrix-vektor-multiplikation.
DE102018009243A1 (de) Abstrahierendes Zusammenfassen langer Dokumente unter Nutzung des Deep-Learning strukturierter Dokumente
DE102017121887A1 (de) Ausführen von Kerndurchschreiten in Hardware
DE202016107443U1 (de) Berechnen von Faltungen mithilfe eines neuronalen Netzwerkprozessors
DE68927474T2 (de) Neuro-Rechner
DE202016107476U1 (de) Stapel-Verarbeitung in einem neuronalen Netzwerkprozessor
DE102019126719A1 (de) Energieeffiziente Speichersysteme und Verfahren
DE2913327C2 (de) Matrix-Multiplizierer
EP3590078B1 (de) Neuronalnetzsystem
DE2505653B2 (de) Multiplizierer zur Multiplikation zweier Binärzahlen
DE102022100920A1 (de) Compute-in-memory-akkumulator
DE69517249T2 (de) Anordnung zur segmentierung eines diskreten datensatzes
DE69315250T2 (de) Neuronaler Prozessor mit Datennormalisierungsanlage
DE112018004972T5 (de) Operationsschaltung und operationsverfahren
DE19827238B4 (de) Verfahren zum Betrieb eines Vektorrechners
EP3869380A1 (de) Verfahren, computerbasiertes system und computerprogramm-produkt zum floorplanning für eine programmierbare gatteranordnung mit nicht-rechteckigen blockgrenzen
DE69128661T2 (de) Verfahren und Anordnung zur Vektorverarbeitung
DE102023203460B3 (de) Computerimplementiertes Verfahren zum Betrieb einer Bildgebungseinrichtung, Bildgebungseinrichtung, Computerprogramm und elektronisch lesbarer Datenträger
DE102013224694A1 (de) Verfahren und Vorrichtung zum Ermitteln eines Gradienten eines datenbasierten Funktionsmodells
WO2002019089A2 (de) Verfahren zum erzeugen einer folge von zufallszahlen eines 1/f-rauschens
DE3803183A1 (de) Verfahren zum analysieren einer physikalischen erscheinung, insbesondere nach der methode der finiten elemente

Legal Events

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