-
Technisches Gebiet
-
Die vorliegende Erfindung bezieht sich auf eine Datenverarbeitungsvorrichtung und ein Datenverarbeitungsverfahren.
-
Stand der Technik
-
Eine Technik zum Erkennen der Umgebungssituation um ein Fahrzeug basierend auf einem aufgenommenen Bild aus einer Kamera und Informationen aus verschiedenen Sensoren und Bereitstellen verschiedener Formen der Fahrunterstützung gemäß den Erkennungsergebnissen ist seit Jahren weit verbreitet. In Bezug auf eine solche Fahrunterstützungstechnologie für ein Fahrzeug ist kürzlich die Berechnung unter Verwendung eines tiefen neuronalen Netzes (DNN), das den Funktionen der Nervenzellen des menschlichen Gehirns nachempfunden ist, vorgeschlagen worden, um hochpräzise Ergebnisse bei der Erkennung der komplizierten Umgebungssituation zu erhalten.
-
Da die herkömmliche DNN-Berechnung eine Vielzahl von Operationen, die mit hoher Geschwindigkeit parallel ausgeführt werden, beinhaltet, werden üblicherweise feldprogrammierbare Gate-Arrays (FPGA) oder Grafikverarbeitungseinheiten (GPU) zur DNN-Berechnung verwendet. In den letzten Jahren wurden diese FPGA und GPU nach und nach durch Vorrichtungen, die als KI-Beschleuniger bezeichnet werden, ersetzt. Ein KI-Beschleuniger ist ein Typ einer Arithmetikvorrichtung, die mehrere Prozessorkerne aufweist und für Vektoroperationen gut geeignet ist. Sie ist eine Vorrichtung, die für Kl-basierte Verarbeitung dediziert ist.
-
Der Kl-Beschleuniger ist, wie vorstehend erwähnt, für Vektoroperationen in der DNN-Berechnung gut geeignet, ist jedoch nicht in der Lage, alle für die DNN-Berechnung erforderlichen Prozesse auszuführen und hat Schwierigkeiten bei der Ausführung einiger Prozesse. Aus diesem Grund wird bei der herkömmlichen DNN-Berechnung unter Verwendung des Kl-Beschleunigers eine andere Berechnungsverarbeitungseinheit als der KI-Beschleuniger mit dem KI-Beschleuniger verbunden, und beide Einheiten arbeiten zusammen, um die DNN-Berechnung durchzuführen. In diesem Fall tauschen der Kl-Beschleuniger und die Arithmetikverarbeitungseinheit ihre Berechnungsergebnisse DNN-Schicht für DNN-Schicht aus, was eine Datenübertragung in jeder Schicht erforderlich macht. Dies führt zu einem Anstieg des Datenkommunikationsvolumens zwischen dem KI-Beschleuniger und der Berechnungsverarbeitungseinheit. Infolgedessen ist eine größere Busbandbreite erforderlich, da eine Speicherbetriebsmittelverbrauchsrate in der Berechnungsverarbeitungseinheit ansteigt. Auf diese Weise entstehen in einer herkömmlichen Datenverarbeitungsvorrichtung, die die DNN-Berechnung mit zwei Berechnungseinheiten, wie z. B. dem KI-Beschleuniger und der Berechnungsverarbeitungseinheit, ausführt, aufgrund des Anstieg des Datenkommunikationsvolumens zwischen den beiden Berechnungseinheiten verschiedene Probleme. Als die Berechnungsverarbeitungseinheit werden verschiedene zur Arithmetikverarbeitung fähige Vorrichtungen verwendet, die einen Allzweck-Mikrocomputer, eine programmierbare integrierte Schaltung, eine programmierbare Logikvorrichtung und ein System-on-Chip enthalten.
-
Einer der Prozesse in der DNN-Berechnung, den der Kl-Beschleuniger nur schwer ausführen kann, ist ein als O-Padding bezeichneter Prozess. 0-Padding ist ein Prozess zum Einfügen von O-Daten in den Randbereich einer Merkmalskarte, um eine Faltungsverarbeitung an Daten in einem Endabschnitt der Merkmalskarte, die der Gegenstand der DNN-Berechnung ist, zu ermöglichen. Bei der DNN-Berechnung wird eine Faltungsberechnung als eine Produkt-Summen-Operation von Vektoren ausgeführt, die durch den Kl-Beschleuniger ausgeführt werden kann. Das O-Padding, das als Vorverarbeitung vor der Faltungsberechnung erforderlich ist, ist jedoch keine Operation, die Vektoren verwendet, und daher für den KI-Beschleuniger schwierig auszuführen.
-
Eine Technik aus Patentliteratur 1 ist als eine Technik zum Reduzieren der Verarbeitungslast in der DNN-Berechnung bekannt.
-
Patentliteratur 1 offenbart ein System, das einen globalen Speicher zum Speichern von Merkmalskarten, einen lokalen Speicher zum Speichern von Gewichtsdaten und eine Berechnungsverarbeitungsschaltung enthält und das Faltungsberechnungen ausführt. Gemäß dem System werden, wenn der lokale Speicher Daten mit einer höheren Datenübertragungsrate als die des globalen Speichers an die Berechnungsverarbeitungsschaltung überträgt, mehrere Faltungsberechnungen an demselben Empfangsabschnitt der durch die Berechnungsverarbeitungsschaltung empfangenen eingegebenen Merkmalskarten durchgeführt. Dies reduziert den über ein Speicherschaltungsnetz übertragenen Datenverkehr.
-
Entgegenhaltungsliste
-
Patentliteratur
-
-
Zusammenfassung der Erfindung
-
Technische Aufgabe
-
Die Technik von Patentliteratur 1 ist eine Technik zum Reduzieren des Datenübertragungsvolumens bei der Faltungsberechnung und ist keine Technik zum Reduzieren eines Datenübertragungsvolumens in einem Fall, in dem ein Prozess, den der KI-Beschleuniger nur schwer ausführen kann, wie z. B. der O-Padding-Prozess, durch die Berechnungsverarbeitungsschaltung ausgeführt wird. Die Technik ist daher nicht effektiv zum Reduzieren des Volumens der Datenkommunikation zwischen zwei Berechnungseinheiten wie z. B. dem KI-Beschleuniger und der Berechnungsverarbeitungseinheit und bietet somit keine Lösung für das vorstehend genannte Problem.
-
Lösung der Aufgabe
-
Eine Datenverarbeitungsvorrichtung gemäß der vorliegenden Erfindung führt eine DNN-Berechnung an einer Merkmalskarte aus. Die Datenverarbeitungsvorrichtung enthält: eine erste Berechnungseinheit; eine zweite Berechnungseinheit, die über einen Bus mit der ersten Berechnungseinheit verbunden ist; und eine Speichereinheit, die die bei der DNN-Berechnung verwendeten Gewichtsinformationen speichert. Die erste Berechnungseinheit überträgt eine Teilmerkmalskarte, die ein Teil der Merkmalskarte ist, und Positionsinformationen, die die Position der Teilmerkmalskarte in der Merkmalskarte angeben, an die zweite Berechnungseinheit. Die zweite Berechnungseinheit erfasst die Gewichtsinformationen aus der Speichereinheit, empfängt die Teilmerkmalskarte und die Positionsinformationen, die von der ersten Berechnungseinheit übertragen werden, führt eine vorgeschriebene Vorverarbeitung basierend auf den Positionsinformationen aus und führt die DNN-Berechnung unter Verwendung eines Ergebnisses der Ausführung der Vorverarbeitung und der Teilmerkmalskarte aus.
-
Ein Datenverarbeitungsverfahren ist ein Verfahren zum Ausführen einer DNN-Berechnung an einer Merkmalskarte unter Verwendung einer Datenverarbeitungsvorrichtung, die eine erste Berechnungseinheit, eine zweite Berechnungseinheit, die über einen Bus mit der ersten Berechnungseinheit verbunden ist, und eine Speichereinheit, die in der DNN-Berechnung verwendete Gewichtungsinformationen speichert, enthält. Das Datenverarbeitungsverfahren enthält: Veranlassen der ersten Berechnungseinheit, eine Teilmerkmalskarte, die ein Teil der Merkmalskarte ist, und Positionsinformationen, die eine Position der Teilmerkmalskarte in der Merkmalskarte angeben, an die zweite Berechnungseinheit zu übertragen; und Veranlassen der zweiten Berechnungseinheit, die Gewichtsinformationen aus der Speichereinheit zu erfassen, die Teilmerkmalskarte und die Positionsinformationen, die von der ersten Berechnungseinheit übertragen werden, zu empfangen, eine vorgeschriebene Vorverarbeitung basierend auf den Positionsinformationen auszuführen und die DNN-Berechnung unter Verwendung eines Ergebnisses der Ausführung der Vorverarbeitung und der Teilmerkmalskarte auszuführen.
-
Vorteilhafte Effekte der Erfindung
-
Gemäß der vorliegenden Erfindung kann eine Datenverarbeitungsvorrichtung, die eine DNN-Berechnung unter Verwendung von zwei Berechnungseinheiten ausführt, das Volumen der Datenkommunikation zwischen den beiden Berechnungseinheiten reduzieren.
-
Figurenliste
-
- [1] 1 bildet eine Konfiguration einer Datenverarbeitungsvorrichtung gemäß einer Ausführungsform der vorliegenden Erfindung ab.
- [2] 2 bildet einen Fluss von Informationen, die zwischen den Bestandteilen der Datenverarbeitungsvorrichtung übertragen/empfangen werden, ab.
- [3] 3 bildet eine funktionelle Konfiguration einer DNN-Berechnungseinheit in einem KI-Beschleuniger ab.
- [4] 4 ist ein erläuterndes Diagramm eines durch eine O-Padding-Steuereinheit ausgeführten Prozesses.
- [5] 5 bildet ein Beispiel für Berechnungsschichtinformationen ab.
- [6] 6 bildet ein Beispiel für Positionsinformationen ab.
- [7] 7 ist ein Ablaufplan, der einen Ablauf eines Prozesses durch eine DNN-Berechnungseinheit zeigt.
- [8] 8 bildet Ablaufpläne ab, die die Abläufe der Verarbeitung am oberen Ende, der Verarbeitung in der Mitte und der Verarbeitung am unteren Ende zeigen.
- [9] 9 ist ein Ablaufplan, der einen Ablauf jedes der jeweils an einem ersten Bereich bis neunten Bereich ausgeführten Prozesse zeigt.
- [10] 10 ist ein Ablaufplan, der einen Ablauf eines Positionsinformationsneuberechnungsprozesses zeigt.
- [11] 11 bildet ein Beispiel für eine Datenanordnung und Maskenabschnitte in einem Gewichtsregister und einem Eingangsregister ab.
- [12] 12 ist ein erläuterndes Diagramm eines Berechnungsprozesses gemäß einer zweiten Ausführungsform der vorliegenden Erfindung.
- [13] 13 ist ein erläuterndes Diagramm eines Berechnungsprozesses gemäß einer dritten Ausführungsform der vorliegenden Erfindung.
- [14] 14 bildet ein Beispiel für die Datenanordnung und Maskenabschnitte in einem Gewichtsregister und einem Eingangsregister in einem Fall ab, in dem ein Maskierungsprozess gemäß einer vierten Ausführungsform der vorliegenden Erfindung nicht erforderlich ist.
-
Beschreibung von Ausführungsformen
-
(Erste Ausführungsform)
-
1 bildet eine Konfiguration einer Datenverarbeitungsvorrichtüng gemäß einer Ausführungsform der vorliegenden Erfindung ab. Eine Datenverarbeitungsvorrichtung 1 dieser Ausführungsform führt eine DNN-Berechnung an einer von außen eingegebenen Merkmalskarte aus. Wie in 1 gezeigt, enthält die Datenverarbeitungsvorrichtung 1 einen Kl-Beschleuniger 10, eine Berechnungsverarbeitungseinheit 20 und eine Speichereinheit 30.
-
Die Berechnungsverarbeitungseinheit 20 besteht beispielsweise aus einem Mikrocomputer und führt einen vorgeschriebenen Berechnungsprozess aus. In die Berechnungsverarbeitungseinheit 20 wird eine Merkmalskarte, die der Gegenstand der DNN-Berechnung ist, aus einer externen Vorrichtung (nicht dargestellt) eingegeben. Beispielsweise werden ein Bild, das durch eine in einem Fahrzeug integrierten Kamera aufgenommen wurde, Entfernungsinformationen, die durch ein in das Fahrzeug integriertes Lichtdetektion und Entfernungsmessungssystem (LiDAR) oder Radar erfasst wurden, und dergleichen in die Berechnungsverarbeitungseinheit 20 als eine Merkmalskarte zum Erkennen eines Objekts in der Umgebung des Fahrzeugs eingegeben. In einem weiteren Fall kann eine in der Speichereinheit 30 gespeicherte Merkmalskarte in die Berechnungsverarbeitungseinheit 20 eingegeben werden.
-
Die Speichereinheit 30 besteht beispielsweise aus einem nichtflüchtigen Aufzeichnungsmedium, wie z. B. einem Festplattenlaufwerk (HDD) oder einem Festkörperlaufwerk (SSD), und speichert Informationen, die in der durch die Datenverarbeitungsvorrichtung 1 ausgeführten DNN-Berechnung verwendet werden. Die in der Speichereinheit 30 gespeicherten Informationen enthalten beispielsweise Gewichtsinformationen, die für eine Faltungsberechnung in der DNN-Berechnung verwendet werden.
-
Der Kl-Beschleuniger 10 ist ein Typ einer Arithmetikvorrichtung, die gut für Vektoroperationen geeignet ist und für die Ki-basierte Verarbeitung dediziert ist. Der Kl-Beschleuniger 10 ist über einen Bus mit der Berechnungsverarbeitungseinheit 20 verbunden. Ein Teil einer Merkmalskarte, die in die Berechnungsverarbeitungseinheit 20 eingegeben wird, wird aus der Berechnungsverarbeitungseinheit 20 über den Bus an den Kl-Beschleuniger 10 übertragen. Nachstehend wird eine in die Berechnungsverarbeitungseinheit 20 eingegebene Merkmalskarte als „Gesamtmerkmalskarte“ bezeichnet, und ein Teil der Merkmalskarte, der von der Berechnungsverarbeitungseinheit 20 an den Kl-Beschleuniger 10 übertragen wird, wird als „Teilmerkmalskarte“ bezeichnet, so dass die Gesamtmerkmalskarte und die Teilmerkmalskarte unterscheidbar sind. Zusätzlich werden von der Berechnungsverarbeitungseinheit 20 zusammen mit der Teilmerkmalskarte auch Positionsinformationen, die die Position der Teilmerkmalskarte in der Gesamtmerkmalskarte angeben, über den Bus übertragen.
-
Der Kl-Beschleuniger 10 enthält N DNN-Berechnungseinheiten 11, die jeweils N Schichten eines DNN entsprechen. Im Kl-Beschleuniger 10 sind die DNN-Berechnungseinheiten 11 in der Reihenfolge von der ersten Schicht bis zur N-ten Schicht verbunden und besitzen jeweils einen Kernel 13 (siehe 3), der eine DNN-Berechnung in jeder Schicht durchführt.
-
Die DNN-Berechnungseinheit 11 in der ersten Schicht empfängt die Eingabe einer Teilmerkmalskarte und Positionsinformationen, die von der Berechnungsverarbeitungseinheit 20 an den Kl-Beschleuniger 10 übertragen werden, und die Eingabe von Gewichtsinformationen aus der Speichereinheit 30. Basierend auf diesen Eingabedaten führt die DNN-Berechnungseinheit 11 in der ersten Schicht eine DNN-Berechnung auf der ersten Schicht aus und gibt ein Ergebnis der Berechnung an die DNN-Berechnungseinheit 11 in der nächsten Schicht (zweiten Schicht) aus. Die DNN-Berechnungseinheit 11 in der zweiten Schicht führt eine DNN-Berechnung auf der zweiten Schicht basierend auf dem Berechnungsergebnis aus der DNN-Berechnungseinheit 11 in der vorhergehenden Schicht (ersten Schicht) und auf eingehenden Gewichtsinformationen aus der Speichereinheit 30 aus und gibt ein Ergebnis der Berechnung an die DNN-Berechnungseinheit 11 in der nächsten Schicht aus. In jeder der anderen Schichten, die auf die erste und zweite Schicht folgen, führt die DNN-Berechnungseinheit 11 den gleichen Berechnungsprozess wie vorstehend beschrieben aus. Ein Berechnungsergebnis der DNN-Berechnungseinheit 11 in der letzten Schicht (N-ten Schicht) wird als endgültiges DNN-Berechnungsergebnis des KI-Beschleunigers 10 an die Berechnungsverarbeitungseinheit 20 ausgegeben. Auf diese Weise führt die DNN-Berechnungseinheit 11 in jeder Schicht die DNN-Berechnung auf der entsprechenden Schicht durch. Der KI-Beschleuniger 10 führt somit die gesamte DNN-Berechnung aus.
-
2 bildet einen Fluss von Informationen, der zwischen dem Kl-Beschleuniger 10, der Berechnungsverarbeitungseinheit 20 und der Speichereinheit 30, die Bestandteile der Datenverarbeitungsvorrichtung 1 sind, gesendet/empfangen wird, ab. In 2 repräsentieren Pfeile mit durchgezogener Linie jeweils die Übertragung von Daten vom Startpunkt zum Endpunkt eines Pfeils. Ein Pfeil mit gestrichelter Linie gibt die Übertragung eines Datenstroms vom Startpunkt zum Endpunkt des Pfeils an, das heißt einen kontinuierlichen Datenfluss von der Sendeseite zur Empfangsseite.
-
Zu Beginn der Ausführung der DNN-Berechnung in der Datenverarbeitungsvorrichtung 1 werden die Gewichtsinformationen zunächst aus der Speichereinheit 30 an den Kl-Beschleuniger 10 übertragen. Danach wird die Übertragung einer Merkmalskarte aus der Berechnungsverarbeitungseinheit 20 an den Kl-Beschleuniger 10 gestartet. Zu diesem Zeitpunkt unterteilt die Berechnungsverarbeitungseinheit 20 eine Gesamtmerkmalskarte gemäß einer gegebenen Datengröße, wodurch mehrere Teilmerkmalskarten erzeugt werden, und überträgt die Teilmerkmalskarten nacheinander an den Kl-Beschleuniger 10. Zusätzlich berechnet die Berechnungsverarbeitungseinheit 20 jedes Mal, wenn eine Teilmerkmalskarte an den Kl-Beschleuniger 10 übertragen wird, Positionsinformationen, die die Position der Teilmerkmalskarte in der Gesamtmerkmalskarte angeben, und überträgt die Positionsinformationen an den Kl-Beschleuniger 10.
-
Beim Empfang der Teilmerkmalskarte und der Positionsinformationen, die von der Berechnungsverarbeitungseinheit 20 übertragen werden, veranlasst der KI-Beschleuniger 10 die DNN-Berechnungseinheiten 11 in den jeweiligen Schichten, basierend auf den empfangenen Eingabedaten nacheinander eine DNN-Berechnung unter Verwendung von im Voraus aus der Speichereinheit 30 erfassten Gewichtsinformationen auszuführen. Wenn die DNN-Berechnungen auf allen Schichten fertiggestellt sind, werden die Berechnungsergebnisse an die Berechnungsverarbeitungseinheit 20 ausgegeben.
-
3 bildet eine funktionelle Konfiguration der DNN-Berechnungseinheit 11 im KI-Beschleuniger 10 ab. In dem KI-Beschleuniger 10 ist jede DNN-Berechnungseinheit 11, die jeder Schicht des DNN entspricht, so konfiguriert, dass sie einen lokalen Speicherbereich 12 und den Kernel 13 enthält.
-
Der lokale Speicherbereich 12 besitzt eine Funktion, Informationen, die in die DNN-Berechnungseinheit 11 eingegeben werden, vorübergehend zu speichern und die Informationen an den Kernel 13 zu liefern. Der lokale Speicherbereich 12 speichert Positionsinformationen 121, Berechnungsschichtinformationen 122, Gewichtsinformationen 123 und eine Teilmerkmalskarte 124. Die Positionsinformation 121 sind Informationen, die angeben, an welcher Position die Teilmerkmalskarte 124 in der ursprünglichen Gesamtmerkmalskarte vorhanden ist, und sind eingehende Informationen aus der Berechnungsverarbeitungseinheit 20 oder der DNN-Berechnungseinheit 11 in der vorhergehenden Schicht. Die Berechnungsschichtinformationen 122 sind Informationen, die Merkmale einer durch die DNN-Berechnungseinheit 11 ausgeführten DNN-Berechnung angeben, und sind im Voraus im lokalen Speicherbereich 12 gespeichert. Die Gewichtsinformationen 123 sind Informationen, die für eine Faltungsberechnung in der durch die DNN-Berechnungseinheit 11 ausgeführten DNN-Berechnung verwendet werden, und sind eingehende aus von der Speichereinheit 30. Die Teilmerkmalskarte 124 ist Daten, die der Berechnung durch die DNN-Berechnungseinheit 11 unterzogen werden sollen, und ist eingehende Daten aus der Berechnungsverarbeitungseinheit 20 oder der DNN-Berechnungseinheit 11 in der vorhergehenden Schicht.
-
Der Kernel 13 enthält eine O-Padding-Steuereinheit 131, Einheit 132 zur Erzeugung von Positionsinformationen für den nächsten Kernel und eine Faltungsberechnungseinheit 133. Die Faltungsberechnungseinheit 133 enthält ein Gewichtsregister 301, ein Eingangsregister 302, eine Produkt-Summen-Operationseinheit 303 und ein Ausgangsregister 304.
-
Die O-Padding Steuereinheit 131 führt basierend auf den Positionsinformationen 121 an den Gewichtsinformationen 123, die aus dem lokalen Speicherbereich 12 in das Gewichtsregister 301 geladen werden, einen dem O-Padding äquivalenten Prozess durch. Der durch die O-Padding-Steuereinheit 131 durchgeführte dem 0-Padding äquivalente Prozess ist ein Prozess, durch den, wenn die Teilmerkmalskarte 124 einen Endabschnitt der Gesamtmerkmalskarte an einer durch die Positionsinformationen 121 angegebenen Position enthält, ein Teil in den Gewichtsinformationen 123, der den Positionsinformationen 121 entspricht, mit 0-Daten maskiert wird, um die Ausführung einer Faltungsberechnung an dem Endabschnitt zu ermöglichen. Mit anderen Worten führt die O-Padding-Steuereinheit 131 dem O-Padding äquivalenten Prozess am Gewichtsregister 301 durch, und dieser Prozess ersetzt einen Teil der im Gewichtsregister 301 gespeicherten Gewichtsinformationen 123 durch O-Daten und erzeugt dadurch maskierte Gewichtsinformationen.
-
Die Faltungsberechnungseinheit 133 lädt die Gewichtsinformationen 123 und die Teilmerkmalskarte 124 aus dem lokalen Speicherbereich 12 in das Gewichtsregister 301 bzw. das Eingangsregister 302. Die Produkt-Summen-Operationseinheit 303 führt eine Faltungsberechnung (Produkt-Summen-Operation) an jedem Datenwert der Teilmerkmalskarte unter Verwendung der maskierten Gewichtsinformationen, die in dem Gewichtsregister 301 gespeichert sind und durch den dem O-Padding äquivalenten Prozess, der durch die O-Padding-Steuereinheit 131 ausgeführt wird, erzeugt werden, und der Teilmerkmalskarte, die in dem Eingangsregister 302 gespeichert ist, aus. Ein Berechnungsergebnis aus der Produkt-Summen-Operationseinheit 303 wird im Ausgangsregister 304 gespeichert und wird aus dem Ausgangsregister 304 an die DNN-Berechnungseinheit 11 in der nächsten Schicht oder an die Berechnungsverarbeitungseinheit 20 ausgegeben.
-
Wenn das Berechnungsergebnis aus dem Ausgangsregister 304 in die DNN-Berechnungseinheit 11 in der nächsten Schicht eingegeben wird, speichert die DNN-Berechnungseinheit 11 in der nächsten Schicht das Berechnungsergebnis im lokalen Speicherbereich 12 als die Teilmerkmalskarte 124. Dann führt die Faltungsberechnungseinheit 133 in der nächsten Schicht eine Faltungsberechnung an dieser Teilmerkmalskarte 124, d. h. an den Daten, die der Berechnung unterzogen werden sollen, aus.
-
Basierend auf den Positionsinformationen 121 und den Berechnungsschichtinformationen 122, die im lokalen Speicherbereich 12 gespeichert sind, bestimmt die Einheit 132 zur Erzeugung von Positionsinformationen für den nächsten Kernel, an welcher Position ein aus dem Ausgangsregister 304 übertragenes Faltungsberechnungsergebnis in der ursprünglichen Gesamtmerkmalskarte vorhanden ist, wobei das Faltungsberechnungsergebnis als die Teilmerkmalskarte 124 für die DNN-Berechnungseinheit 11 in der nächsten Schicht verarbeitet wird. Die Einheit 132 zur Erzeugung von Positionsinformationen für den nächsten Kernel erzeugt dann basierend auf einem Ergebnis der Bestimmung Positionsinformationen und gibt die erzeugten Positionsinformationen an die DNN-Berechnungseinheit 11 in der nächsten Schicht aus.
-
4 ist ein erläuterndes Diagramm eines durch die O-Padding-Steuereinheit 131 ausgeführt Prozesses. 4 zeigt ein Beispiel, in dem in der DNN-Berechnungseinheit 11, die eine Berechnung an einer Teilmerkmalskarte 124, die sich an einem oberen rechten Endabschnitt einer Gesamtmerkmalskarte 401 unter 5 mal 5 Teilmerkmalskarten befindet, die die Berechnungsverarbeitungseinheit 20 durch Unterteilung der Gesamtmerkmalskarte 401 sowohl in vertikaler als auch in horizontaler Richtung erzeugt hat, durchführt, die O-Padding-Steuereinheit 131 den dem 0-Padding äquivalenten Prozess durchführt. Es wird darauf hingewiesen, dass im Beispiel von 4 eine Faltungsberechnung an der Teilmerkmalskarte 124 mit einer datenweisen Schrittweite unter Verwendung der Gewichtsinformationen 123, die aus 3-mal-3-Matrix-Gewichtsdaten bestehen, durchgeführt wird.
-
Wenn, wie in 4 gezeigt, ein Gebiet, in dem sich die 3-mal-3-Matrix-Gewichtsdaten bei der Ausführung der Faltungsberechnung auf der Gesamtmerkmalskarte 401 bewegen, als Faltungsberechnungsgebiet 402 definiert ist, wird dieses Faltungsberechnungsgebiet 402 in neun Typen von Bereichen unterteilt, abhängig davon, welcher der oberen, unteren, linken und rechten Endabschnitte der Gesamtmerkmalskarte 401 in jedem Bereich enthalten ist. Insbesondere ist das Faltungsberechnungsgebiet 402 in einen ersten Bereich, der eine obere linke Ecke enthält, einen zweiten Bereich, das einen oberen Endabschnitt enthält, einen dritten Bereich, der eine obere rechte Ecke enthält, einen vierten Bereich, der einen linken Endabschnitt enthält, einen fünften Bereich, der keinen Endabschnitt enthält, einen sechsten Bereich, der einen rechten Endabschnitt enthält, einen siebten Bereich, der eine untere linke Ecke enthält, einen achten Bereich, der einen unteren Endabschnitt enthält, und einen neunten Bereich, der eine untere linke Ecke enthält, unterteilt.
-
Wenn beispielsweise, wie im vorstehenden Fall, die Teilmerkmalskarte 124, die sich rechts oben in der Gesamtmerkmalskarte 401 befindet, unter den Teilmerkmalskarten, die durch Unterteilen der Gesamtmerkmalskarte 401 erzeugt wurden, eingegeben wird, führt die DNN-Berechnungseinheit 11 eine Faltungsberechnung an dieser Teilmerkmalskarte 124 an jeder Position durch, während sie die 3-mal-3-Matrix-Gewichtsdaten bei jeder Bewegungsstrecke gleich der Schrittweite von links nach rechts bewegt. Wenn die Gewichtsdaten das rechte Ende der Teilmerkmalskarte 124 erreichen und die Faltungsberechnung an dieser rechten Endposition fertiggestellt ist, werden die Gewichtsdaten um die Bewegungsstrecke, die gleich der Schrittweite ist, nach unten verschoben, und dann wird die Faltungsberechnung erneut gestartet, während die Gewichtsdaten von links nach rechts bewegt werden. Auf diese Weise führt die DNN-Berechnungseinheit 11 eine Berechnung auf einer spezifischen Schicht der DNN-Berechnung aus, indem sie die Faltungsberechnung an jeder Position an der Teilmerkmalskarte 124 durchführt.
-
In der DNN-Berechnungseinheit 11 bestimmt die O-Padding-Steuereinheit 131 für jede Position auf der Teilmerkmalskarte 124, an der eine Faltungsberechnung durchgeführt wird, basierend auf der Positionsinformation 121, zu welchem aus dem ersten bis neunten Bereich ein Bereich der Faltungsberechnung gehört. Beispielsweise wird in der Teilmerkmalskarte 124 bestimmt, dass der obere linke Abschnitt, in dem die Faltungsberechnung zuerst durchgeführt wird, zum zweiten Gebiet gehört und der obere rechte Abschnitt zum dritten Bereich gehört, In gleicher Weise wird diese Bereichsbestimmung für jede Position auf der Teilmerkmalskarte 124 vorgenommen, was zu einem Bereichsbestimmungsergebnis führt, das durch das Bezugszeichen 403 gekennzeichnet ist. Dieses Bereichsbestimmungsergebnis 403 gibt unter Verwendung einer eingekreisten Zahl an, zu welchem aus dem ersten bis neunten Bereich jede Position auf der Teilmerkmalskarte 124 gehört.
-
Wenn das Ergebnis der Bereichsbestimmung für jede Position auf der Teilmerkmalskarte 124 auf die vorstehend beschriebene Weise erhalten wird, bestimmt die O-Padding-Steuereinheit 131 basierend auf dem Bereichsbestimmungsergebnis einen Maskierungsteil für die im Gewichtsregister 301 gespeicherten Gewichtsinformationen 123. In diesem Fall wird der Maskierungsteil so bestimmt, dass ein Faltungsberechnungsergebnis, das durch eine Faltungsberechnung unter Verwendung der Teilmerkmalskarte 124 und der maskierten Gewichtsinformationen 123 erhalten wird, mit einem Berechnungsergebnis, das erhalten wird, wenn ein O-Padding-Prozess zum Hinzufügen von 1 Zeile und 1 Spalte aus O-Daten zu einem Endabschnitt der Teilmerkmalskarte 124 durchgeführt wird und dann eine Faltungsberechnung unter Verwendung der Gewichtsinformation 123 durchgeführt wird, übereinstimmt. Dann wird in dem Gewichtsregister 301 der Wert der Gewichtsinformationen 123, der dem bestimmten Maskierungsteil entspricht, auf 0 gesetzt, was bedeutet, dass ein Maskierungsprozess, der ein Prozess ist, der dem O-Padding entspricht, an dem Gewichtsregister 301 ausgeführt wird. Auf diese Weise werden in dem Gewichtsregister 301, an dem der Maskierungsprozess ausgeführt worden ist, maskierte Gewichtsinformationen erzeugt.
-
Es wird darauf hingewiesen, dass der O-Padding-Prozess an einer Position, die zum fünften Bereich gehört, nicht erforderlich ist. Wenn eine Faltungsberechnung an einer Position, die zum fünften Bereich gehört, durchgeführt wird, ist daher die Ausführung des Maskierungsprozesses durch die O-Padding-Steuereinheit 131 nicht erforderlich.
-
5 bildet ein Beispiel für die im lokalen Speicherbereich 12 in jeder DNN-Berechnungseinheit 11 gespeicherten Berechnungsschichtinformationen 122 ab. Die Berechnungsschichtinformationen 122 bestehen beispielsweise aus diesen Dateneinheiten: einer Größenänderungsrate 501, einer Gewichtsgröße 502, einer Schrittweite 503, einer Padding-Breite 504, einer Breite 505 der eingegebenen Merkmalskarte, einer Höhe 506 der eingegebenen Merkmalskarte, einer Anzahl 507 von Kanälen der eingegebenen Merkmalskarte und einer Anzahl 508 von Kanälen der ausgegebenen Merkmalskarte. Die jeweiligen Werte für diese Dateneinheiten werden in Übereinstimmung mit dem Inhalt einer durch die DNN-Berechnungseinheit 11 durchgeführten Berechnung eingestellt.
-
Die Größenänderungsrate 501 repräsentiert eine Rate, mit der sich die Größe der Teilmerkmalskarte nach einer Berechnung im Vergleich zur Größe vor der Berechnung geändert hat. Die Gewichtsgröße 502 repräsentiert die Größe einer Seite der Gewichtsdaten, die Schrittweite 503 repräsentiert ein Intervall, in dem eine Gewichtungsoperation an der Teilmerkmalskarte durchgeführt wird, und die Padding-Breite 504 repräsentiert die Breite einer Seite von O-Daten, die der Teilmerkmalskarte bei der Ausführung von O-Padding hinzugefügt werden. Die Breite 505 der eingegebenen Merkmalskarte und die Höhe 506 der eingegebenen Merkmalskarte repräsentieren die Anzahl der Daten in horizontaler Richtung der Teilmerkmalskarte, die der Berechnung unterzogen werden soll, bzw. die Anzahl der Daten deren vertikaler Richtung. Die Anzahl 507 der Kanäle der eingegebenen Merkmalskarte und die Anzahl 508 der Kanäle der ausgegebenen Merkmalskarte repräsentieren die Anzahl der Daten in der Tiefenrichtung der Teilmerkmalskarte vor der Berechnung bzw. nach der Berechnung.
-
6 bildet ein Beispiel für die im lokalen Speicherbereich 12 in jeder in jeder DNN-Berechnungseinheit 11 gespeicherten Positionsinformationen 121 ab. Die Positionsinformationen 121 bestehen beispielsweise aus diesen Dateneinheiten: einer Unterteilungs-ID 601, einer Breite 602 der Gesamtmerkmalskarte, einer Höhe 603 der Gesamtmerkmalskarte, einer Berechnungsschicht 604, einer Start-x-Koordinate 605, einer Start-y-Koordinate 606, einer Ende-x-Koordinate 607, einer Ende-y-Koordinate 608, der Anzahl 609 horizontaler Faltungsberechnungen und der Anzahl 610 vertikaler Faltungsberechnungen. Die jeweiligen Werte für diese Dateneinheiten werden in Übereinstimmung mit den Merkmalen einer Teilmerkmalskarte, die in die DNN-Berechnungseinheit 11 eingegeben und der Berechnung unterzogen wird, eingestellt.
-
Die Unterteilungs-ID 601 ist Informationen, die eine ID angeben, die zugewiesen wird, um jede der unterteilten Teilmerkmalskarten in einem Fall zu identifizieren, in dem eine Teilmerkmalskarte in mehrere unterteilte Teile unterteilt wird, die in der DNN-Berechnungseinheit 11 verarbeitet werden sollen. Der Fall, in dem die Teilmerkmalskarte in mehrere zu bearbeitende unterteilte Teilen unterteilt ist, wird später als zweite eine Ausführungsform genau beschrieben.
-
Die Breite 602 der Gesamtmerkmalskarte und die Höhe 603 der Gesamtmerkmalskarte repräsentieren die Anzahl der Daten in horizontaler Richtung der ursprünglichen Gesamtmerkmalskarte, bevor sie in Teilmerkmalskarten unterteilt wird, bzw. die Anzahl der Daten deren vertikaler Richtung.
-
Die Berechnungsschicht 604 ist Informationen, die eine DNN-Schicht angeben, die einer in der DNN-Berechnungseinheit 11 ausgeführten Berechnung entspricht.
-
Die Start-x-Koordinate 605 und die Start-y-Koordinate 606 repräsentieren Koordinatenwerte eines oberen linken Punktes, an dem eine Faltungsberechnung startet, einer Teilmerkmalskarte, die jeweils auf der Gesamtmerkmalskarte definiert sind. Die Ende-x-Koordinate 607 und die Ende-y-Koordinate 608 repräsentieren Koordinatenwerte eines unteren rechten Punktes, an dem die letzte Runde der Faltungsberechnung ausgeführt wird, der Teilmerkmalskarte, die jeweils auf der Gesamtmerkmalskarte definiert sind. Die Anzahl 609 horizontaler Faltungsberechnungen und die Anzahl 610 vertikaler Faltungsberechnungen repräsentieren die Anzahl der auf der Teilmerkmalskarte in horizontaler Richtung ausgeführten Faltungsberechnungen bzw. die Anzahl der in vertikaler Richtung ausgeführten Faltungsberechnungen.
-
Dann wird ein Ablauf eines Prozesses durch die DNN-Berechnungseinheit 11 im KI-Beschleuniger 10 beschrieben. 7 ist ein Ablaufplan, der den Ablauf des Prozesses durch die DNN-Berechnungseinheit 11 zeigt. Der im Ablaufplan von 7 gezeigte Prozess wird in jeder in dem Kl-Beschleuniger enthaltenen DNN-Berechnungseinheit 11 ausgeführt.
-
In Schritt S701 wird bestimmt, ob eine der Berechnung zu unterziehende Teilmerkmalskarte den oberen Endabschnitt der Gesamtmerkmalskarte enthält, und zwar basierend auf den Positionsinformationen 121 und der Teilmerkmalskarte 124, die von der Berechnungsverarbeitungseinheit 20 oder der DNN-Berechnungseinheit 11 in der vorhergehenden Schicht gesendet werden und im lokalen Speicherbereich 12 gespeichert sind. Wenn die Teilmerkmalskarte den oberen Endabschnitt enthält, wird die in 8(a) gezeigte Verarbeitung des oberen Endes in Schritt S702 ausgeführt, und dann fährt der Prozessablauf zu Schritt S703 fort. Wenn die Teilmerkmalskarte den oberen Endabschnitt nicht enthält, wird die Verarbeitung des oberen Endes in Schritt S702 nicht ausgeführt, und der Prozessablauf fährt zu Schritt S703 fort.
-
In Schritt S703 wird ein Prozess des Schrittes S704 wiederholt so oft ausgeführt, wie es der Anzahl der Faltungsberechnungen in vertikaler Richtung an der Teilmerkmalskarte, die der Berechnung unterzogen werden soll, entspricht, und dann fährt der Prozessablauf zu Schritt S705 fort. In Schritt S704 wird die in 8(b) gezeigte Verarbeitung der Mitte ausgeführt.
-
In Schritt S705 wird basierend auf den Positionsinformationen 121 und der Teilmerkmalskarte 124 bestimmt, ob die der Berechnung zu unterziehende Teilmerkmalskarte den unteren Endabschnitt der Gesamtmerkmalskarte enthält. Wenn die Teilmerkmalskarte den unteren Endabschnitt enthält, wird die in 8(c) gezeigte Verarbeitung des unteren Endes in Schritt S706 ausgeführt, und dann fährt der Prozessablauf zu Schritt S707 fort. Wenn die Teilmerkmalskarte den unteren Endabschnitt nicht enthält, wird die Verarbeitung des unteren Endes in Schritt S706 nicht ausgeführt, und der Prozessablauf fährt zu Schritt S707 fort.
-
Im Schritt S707 führt die Einheit 132 zur Erzeugung von Positionsinformationen für den nächsten Kernel einen in 10 gezeigten Positionsinformationsneuberechnungsprozess aus. Wenn der Positionsinformationsneuberechnungsprozess in Schritt S707 fertiggestellt ist, endet der im Ablaufplan von 7 gezeigte Prozess.
-
8 zeigt Ablaufpläne, die die Abläufe der Verarbeitung des oberen Endes, der Verarbeitung der Mitte und der Verarbeitung des unteren Endes zeigen, die in den Schritten S702, S704 bzw. S706 von 7 ausgeführt werden.
-
In Schritt S711 der in 8(a) gezeigten Verarbeitung des oberen Endes wird basierend auf den Positionsinformationen 121 und der Teilmerkmalskarte 124 bestimmt, ob die der Berechnung zu unterziehende Teilmerkmalskarte den linken Endabschnitt der Gesamtmerkmalskarte enthält. Wenn die Teilmerkmalskarte den linken Endabschnitt enthält, wird im Schritt S712 ein Prozess an dem ersten Bereich ausgeführt, und dann fährt der Prozessablauf zu Schritt S713 fort. Wenn die Teilmerkmalskarte den linken Endabschnitt nicht enthält, wird der Prozess von Schritt S712 nicht ausgeführt, und dann fährt der Prozessablauf zu Schritt S713 fort.
-
In Schritt S713 wird ein Prozess des Schrittes S714 wiederholt so oft ausgeführt, wie es der Anzahl der Faltungsberechnungen in horizontaler Richtung an der Teilmerkmalskarte, die der Berechnung unterzogen werden soll, entspricht, und dann fährt der Prozessablauf zu Schritt S715 fort. In Schritt S714 wird ein Prozess an dem zweiten Bereich ausgeführt.
-
In Schritt S715 wird basierend auf den Positionsinformationen 121 und der Teilmerkmalskarte 124 bestimmt, ob die der Berechnung zu unterziehende Teilmerkmalskarte den rechten Endabschnitt der Gesamtmerkmalskarte enthält. Wenn die Teilmerkmalskarte den rechten Endabschnitt enthält, wird in Schritt S716 ein Prozess an dem dritten Bereich ausgeführt, und dann wird die im Ablaufplan von 8(a) gezeigte Verarbeitung des oberen Endes beendet. Wenn die Teilmerkmalskarte den rechten Endabschnitt nicht enthält, wird der Prozess von Schritt S716 nicht ausgeführt, und dann wird die Verarbeitung des oberen Endes beendet.
-
In Schritt S721 der in 8(b) gezeigten Verarbeitung der Mitte wird basierend auf den Positionsinformationen 121 und der Teilmerkmalskarte 124 bestimmt, ob die der Berechnung zu unterziehende Teilmerkmalskarte den linken Endabschnitt der Gesamtmerkmalskarte enthält. Wenn die Teilmerkmalskarte den linken Endabschnitt enthält, wird im Schritt S722 ein Prozess an dem vierten Bereich ausgeführt, und dann fährt der Prozessablauf zu Schritt S723 fort. Wenn die Teilmerkmalskarte den linken Endabschnitt nicht enthält, wird der Prozess von Schritt S722 nicht ausgeführt, und dann fährt der Prozessablauf zu Schritt S723 fort.
-
In Schritt S723 wird ein Prozess des Schrittes S724 wiederholt so oft ausgeführt, wie es der Anzahl der Faltungsberechnungen in horizontaler Richtung an der Teilmerkmalskarte, die der Berechnung unterzogen werden soll, entspricht, und dann fährt der Prozessablauf zu Schritt S725 fort. Im Schritt S714 wird ein Prozess an dem zweiten Bereich ausgeführt. In Schritt S724 wird ein Prozess an dem fünften Bereich ausgeführt.
-
In Schritt S725 wird basierend auf den Positionsinformationen 121 und der Teilmerkmalskarte 124 bestimmt, ob die der Berechnung zu unterziehende Teilmerkmalskarte den rechten Endabschnitt der Gesamtmerkmalskarte enthält. Wenn die Teilmerkmalskarte den rechten Endabschnitt enthält, wird in Schritt S726 ein Prozess an dem sechsten Bereich ausgeführt, und dann wird die im Ablaufplan von 8(b) gezeigte Verarbeitung der Mitte beendet. Wenn die Teilmerkmalskarte den rechten Endabschnitt nicht enthält, wird der Prozess von Schritt S726 nicht ausgeführt, und dann wird die Verarbeitung der Mitte beendet.
-
In Schritt S731 der in 8(c) gezeigten Verarbeitung des unteren Endes wird basierend auf den Positionsinformationen 121 und der Teilmerkmalskarte 124 bestimmt, ob die der Berechnung zu unterziehende Teilmerkmalskarte den linken Endabschnitt der Gesamtmerkmalskarte enthält. Wenn die Teilmerkmalskarte den linken Endabschnitt enthält, wird im Schritt S732 ein Prozess an dem siebten Bereich ausgeführt, und dann fährt der Prozessablauf zu Schritt S733 fort. Wenn die Teilmerkmalskarte den linken Endabschnitt nicht enthält, wird der Prozess von Schritt S732 nicht ausgeführt, und dann fährt der Prozessablauf zu Schritt S733 fort.
-
In Schritt S733 wird ein Prozess des Schrittes S734 wiederholt so oft ausgeführt, wie es der Anzahl der Faltungsberechnungen in horizontaler Richtung an der Teilmerkmalskarte, die der Berechnung unterzogen werden soll, entspricht, und dann fährt der Prozessablauf zu Schritt S735 fort. In Schritt S734 wird ein Prozess an dem achten Bereich ausgeführt.
-
In Schritt S735 wird basierend auf den Positionsinformationen 121 und der Teilmerkmalskarte 124 bestimmt, ob die der Berechnung zu unterziehende Teilmerkmalskarte den rechten Endabschnitt der Gesamtmerkmalskarte enthält. Wenn die Teilmerkmalskarte den rechten Endabschnitt enthält, wird in Schritt S736 ein Prozess an dem neunten Bereich ausgeführt, und dann wird die im Ablaufplan von 8(c) gezeigte Verarbeitung des unteren Endes beendet. Wenn die Teilmerkmalskarte den rechten Endabschnitt nicht enthält, wird der Prozess von Schritt S736 nicht ausgeführt, und dann wird die Verarbeitung des unteren Endes beendet.
-
9 ist ein Ablaufplan, der einen Ablauf jedes der Prozesse zeigt, die jeweils auf dem ersten Bereich bis zum neunten Bereich in den Schritten S712, S714, S716, S722, S724, S726, S732, S734 und S736 von 8 ausgeführt werden.
-
In Schritt S801 des Ablaufplans von 9(a) liest die Faltungsberechnungseinheit 133 die Gewichtsinformationen 123 und die Teilmerkmalskarte 124 aus dem lokalen Speicherbereich 12 und speichert die Gewichtsinformationen 123 und die Teilmerkmalskarte 124 im Gewichtsregister 301 bzw. im Eingangsregister 302.
-
In Schritt S802 führt die O-Padding-Steuereinheit 131 einen Maskenpositionsbestimmungsprozess zum Bestimmen einer Maskenposition gemäß dem Typ eines Bereichs aus. In diesem Fall wird der Maskenpositionsbestimmungsprozess gemäß einer in einem Ablaufplan von 9(b) gezeigten Prozedur ausgeführt.
-
Im Schritt S803 führt die Faltungsberechnungseinheit 133 einen Maskierungsprozess an dem Gewichtsregister 301 gemäß einer durch den Maskenpositionsbestimmungsprozess in Schritt S802 bestimmten Maskenposition durch. In diesem Schritt wird, wie vorstehend beschrieben, der Wert der Gewichtsinformationen 123 an der Maskierungsposition, wobei die Gewichtsinformationen 123 im Gewichtsregister 301 gespeichert sind, mit O-Daten maskiert, was der als der dem O-Padding äquivalente Prozess ausgeführte Maskierungsprozess ist. Es wird jedoch darauf hingewiesen, dass für den fünften Bereich, an dem die Ausführung des 0-Padding-Prozesses nicht erforderlich ist, keine Maskenposition eingestellt wird. In dem im Schritt S724 ausgeführten Prozess an dem fünften Bereich wird daher in Schritt S802 keine Maskenposition ausgegeben, und daher wird in Schritt S803 kein Maskierungsprozess ausgeführt.
-
In Schritt S804 veranlasst die Faltungsberechnungseinheit 133 die Produkt-Summen-Operationseinheit 303, eine Produkt-Summen-Operation (Faltungsberechnung) der maskierten Gewichtsinformationen, die durch den Maskierungsprozess im Schritt S803 erzeugt wurden, das heißt der Gewichtsinformationen 123 im Gewichtsregister 301, die dem Maskierungsprozess unterzogen worden sind, und der im Eingangsregister 302 gespeicherten Teilmerkmalskarte 124 auszuführen. Danach wird ein Ergebnis der Operation aus dem Ausgangsregister 304 ausgegeben, und der im Ablaufplan von 9(a) gezeigte Prozess endet.
-
In Schritt S8.11 des in 9(b) gezeigten Maskenpositionsbestimmungsprozesses wird ein Bereich erfasst, zu dem die Teilmerkmalskarte, die der Berechnung unterzogen werden soll, gehört. In diesem Schritt wird bestimmt, zu welchem aus den ersten bis neunten Bereichen die Teilmerkmalskarte gehört, gemäß einer Bestimmung dazu, in welchem der in 8 gezeigten Schritte S712, S714, S716, S722, S724, S726, S732, S734 und S736 der Maskenpositionsbestimmungsprozess ausgeführt wird.
-
In Schritt S812 bezieht sich die O-Padding-Steuereinheit 131 auf eine Maskenposition, die einem in Schritt S811 erfassten Bereich entspricht. In diesem Schritt wird unter Bezugnahme auf die Maskenposition, die dem in Schritt S811 erfassten Bereich entspricht, unter den Maskenpositionen,die jeweils für den ersten bis neunten Bereich voreingestellt sind, die Maskenposition in dem Bereich bestimmt. Es wird darauf hingewiesen, dass für jeden der ersten bis neunten Bereiche die O-Padding-Steuereinheit 131 eine Maskenposition voreinstellt, so dass ein Faltungsberechnungsergebnis, das durch eine Faltungsberechnung unter Verwendung der Teilmerkmalskarte 124 und der maskierten Gewichtsinformationen 123 erhalten wird, mit einem Berechnungsergebnis übereinstimmt, das erhalten wird, wenn der O-Padding-Prozess an einem Endabschnitt der Teilmerkmalskarte 124 ausgeführt wird, wobei der Endabschnitt jedem Bereich entspricht, und dann eine Faltungsberechnung unter Verwendung der Gewichtsinformationen 123 durchgeführt wird. Für den fünften Bereich, für den die Ausführung des O-Padding-Prozesses nicht erforderlich ist, wird jedoch keine Maskenposition eingestellt.
-
In dem Prozess von Schritt S812 kann die O-Padding-Steuereinheit 131 die Maskenposition, die dem O-Padding-Prozess entspricht, für jeden Bereich bestimmen, indem sie auf die Informationen über die voreingestellte Maskenposition Bezug nimmt und diese auf die vorstehend beschriebene Weise verwendet. Infolgedessen kann ein in den Gewichtsinformationen 123 zu maskierender Teil in Übereinstimmung mit der Position eines Endabschnitts der Gesamtmerkmalskarte in jedem Bereich korrekt bestimmt werden.
-
In Schritt S813 wird die in Schritt S812 bestimmte Maskenposition aus der 0-Padding-Steuereinheit 131 an die Faltungsberechnungseinheit 133 ausgegeben. Wenn der Prozess von Schritt S813 fertiggestellt ist, endet der im Ablaufplan von 9(b) gezeigte Maskenpositionsbestimmungsprozess.
-
10 ist ein Ablaufplan, der einen Ablauf des Positionsinformationsneuberechnungsprozesses zeigt, der in dem in 7 gezeigten Schritt S707 ausgeführt wird.
-
In Schritt S 901 des in 10(a) gezeigten Positionsinformationsneuberechnungsprozesses wird basierend auf dem Wert der in den Berechnungsschichtinformationen 122 enthaltenen Größenänderungsrate 501 bestimmt, ob die Größe einer Teilmerkmalskarte durch eine durch die Faltungsberechnungseinheit 133 durchgeführte Faltungsberechnung (Produkt-Summen-Operation) geändert wird. Wenn der Wert der Größenänderungsrate 501 ungleich 1 ist, wird bestimmt, dass die Größe der Teilmerkmalskarte in horizontaler Richtung und/oder die in vertikaler Richtung geändert wird, wobei in diesem Fall der Prozessablauf zu Schritt S902 fortfährt. Wenn der Wert der Größenänderungsrate 501 gleich 1 ist, wird bestimmt, dass die Größe der Teilmerkmalskarte nicht geändert wird, wobei in diesem Fall ein Prozess des Schrittes S902 nicht ausgeführt wird und der Prozessablauf zu Schritt S903 fortfährt.
-
Im Schritt S902 berechnet die Einheit 132 zur Erzeugung von Positionsinformationen für den nächsten Kernel basierend auf der Berechnungsschichtinformationen 122 die Positionsinformationen 121 neu. In diesem Schritt wird jeder Datenwert, der in den Positionsinformationen 121 enthalten ist, basierend auf jedem Datenwert, der in den Berechnungsschichtinformationen 122 enthalten ist, neu berechnet.
-
In Schritt S902 wird jeder Datenwert der Positionsinformationen 121 neu berechnet, beispielsweise unter Verwendung jeder der in 10(b) gezeigten Berechnungsformeln (1) bis (7). In den Formeln (1) bis (7) bezeichnen WW und WH den Wert der Breite 602 der Gesamtmerkmalskarte bzw. den Wert der Höhe 603 der Gesamtmerkmalskarte. Ferner bezeichnen x und y den Wert der Start-x-Koordinate 605 bzw. den Wert der Start-y-Koordinate 606, und endx und endy bezeichnen den Wert der Ende-x-Koordinate 607 bzw. den Wert der Ende-y-Koordinate 608. OW und OH bezeichnen den Wert der Anzahl 609 horizontaler Faltungsberechnungen bzw. den Wert der Anzahl 610 vertikaler Faltungsberechnungen. IW und IH bezeichnen die Werte der Breite 505 der eingegebenen Merkmalskarte bzw. der Höhe 506der eingegebenen Merkmalskarte der Berechnungsschichtinformationen 122, k und k+1 bezeichnen die Position der aktuellen Berechnungsschicht in den gesamten Schichten der DNN-Berechnung (welche der gesamten Schichten der aktuellen Schicht entspricht) bzw. die Position der nächsten Berechnungsschicht in den gesamten Schichten, und KS und stride bezeichnen die Werte der Gewichtsgröße 502 bzw. der Schrittweite 503 der Berechnungsschichtinformationen 122.
-
Unter Verwendung der Formeln (1) bis (7) werden WW, WH, x und y berechnet, indem ihre Werte in den aktuellen Positionsinformationen 121 mit dem Wert der Größenänderungsrate 501 der Berechnungsschichtinformationen 122 multipliziert und die Zahlen in den Dezimalstellen aufgerundet werden, endx und endy ergeben sich durch Addition von IW und IH zu x bzw. y der nächsten Schicht. OW und OH werden berechnet, indem die Werte, die sich aus der Subtraktion von KS von IW und IH ergeben, durch die Schrittweite geteilt und 1 zu den abgeschnittenen Werten der Division addiert wird.
-
In Schritt S903 erzeugt die Einheit 132 zur Erzeugung von Positionsinformationen für den nächsten Kernel Positionsinformationen für die DNN-Berechnungseinheit 11 in der nächsten Schicht. In diesem Schritt werden die Positionsinformationen für die nächste Schicht erzeugt, indem der Wert der Berechnungsschicht 604 in den im lokalen Speicherbereich 12 gespeicherten Positionsinformationen 121 oder der Positionsinformationen, in denen sich ein aus der Neuberechnung im Schritt S902 resultierende Wert widerspiegelt, um 1 erhöht wird und ein durch die Erhöhung erhaltener Wert als ein der DNN-Berechnungseinheit 11 in der nächsten Schicht entsprechender Wert verwendet wird.
-
In Schritt S904 werden die in Schritt S903 erzeugten Positionsinformationenen aus der Einheit 132 zur Erzeugung von Positionsinformationen für den nächsten Kernel an die DNN-Berechnungseinheit 11 in der nächsten Schicht übertragen. Wenn der Prozess von Schritt S904 fertiggestellt ist, endet der im Ablaufplan von 10 gezeigte Positionsinformationsneuberechnungsprozess.
-
In dem Kl-Beschleuniger 10 werden die vorstehend genannten Prozesse in jeder DNN-Berechnungseinheit 11 ausgeführt. Infolgedessen wird an jeder Position auf der Teilmerkmalskarte, die von der Berechnungsverarbeitungseinheit 20 übertragen wird, der Prozess durchgeführt, der dem Typ jedes Bereichs entspricht, der in dem Faltungsberechnungsgebiet der Gesamtmerkmalskarte eingestellt ist. Somit wird in dem Kl-Beschleuniger 10 der Prozess, der dem 0-Padding entspricht, durchgeführt, um maskierte Gewichtsinformationen zu erzeugen, und die Faltungsberechnung, die jeder DNN-Schicht entspricht, kann unter Verwendung dieser maskierten Gewichtsinformationen ausgeführt werden.
-
11 bildet ein Beispiel für eine Datenanordnung und Maskenabschnitte in dem Gewichtsregister 301 und dem Eingangsregister 302 ab. 11 zeigt ein Beispiel, in dem, wenn die Gewichtsinformationen 123 aus den vorstehend genannten 3-mal-3-Matrix-Gewichtsdaten bestehen, insgesamt 32 Gewichtsdateneinheiten, d. h. 4 Eingangskanäle mal 8 Ausgangskanäle = 32 Datenkanäle, alle im Gewichtsregister 301 gespeichert sind. In diesem Fall sind beispielsweise Werte für drei Zeilen von 32 Gewichtsdateneinheiten im Gewichtsregister 301 gespeichert, wie in 11 gezeigt. In 11 werden aus den Gruppen aus 3-mal-3-Matrixdatenwerten, die 32 Gewichtsdateneinheiten sind, die die Gewichtsinformationen 123 bilden, Datenwerte an Teilen, denen die Nummern „0 bis 95“ zugewiesen sind, im Gewichtsregister 301 gespeichert. Diese Nummern entsprechen den Nummern, die den jeweiligen Speicherabschnitten des Gewichtsregisters 301 zugewiesen sind. Es wird darauf hingewiesen, dass im Gewichtsregister 301 in Speicherabschnitten, denen die Nummern „96 bis 127“ zugewiesen sind, kein Gewichtsdatenwert gespeichert ist.
-
Wie in 11 gezeigt, werden beispielsweise aus den Datenwerten in 4 Kanälen der Teilmerkmalskarten 124, die aus dem lokalen Speicherbereich 12 geladen werden, Datenwerte an Teilen, denen die Nummern „0 bis 27“ zugewiesen sind, im Eingangsregister 302 gespeichert. Ähnlich wie im Fall des Gewichtsregisters 301 entsprechen diese Nummern den Nummern, die den jeweiligen Speicherabschnitten des Eingangsregisters 302 zugewiesen sind. In den ersten vier Speicherteilen des Eingangsregisters 302, denen „x“ zugewiesen ist, kann ein beliebiger Datenwert gespeichert sein, wie z. B. ein Datenwert, der gleich einem der Datenwerte in anderen Speicherabschnitten ist.
-
Wenn die Faltungsberechnung jedes Datenwerts im Gewichtsregister 301 und jedes Datenwerts im Eingangsregister 302, wobei der Datenwert in 11 gezeigt ist, durchgeführt wird, beispielsweise bei der Ausführung einer Faltungsberechnung an einer Position, die zum vierten Bereich gehört, wird der Maskierungsprozess an Datenwerten in einem durch das Bezugszeichen 1101 bezeichneten Bereich ausgeführt, das heißt an Datenwerten in Speicherabschnitten, denen die Nummern „0 bis 31“ zugewiesen sind, wobei die Speicherabschnitte einer Zeile „set 0“ entsprechen. Infolgedessen können für die Gewichtsinformationen 123 Gewichtsdaten eingestellt werden, die dem O-Padding äquivalent sind.
-
Die vorstehend beschriebene erste Ausführungsform der vorliegenden Erfindung bietet die folgenden Effekte.
- (1) Die Datenverarbeitungsvorrichtung 1, die die DNN-Berechnung an der Merkmalskarte ausführt, enthält die Berechnungsverarbeitungseinheit 20, den Kl-Beschleuniger 10, der über den Bus mit der Berechnungsverarbeitungseinheit 20 verbunden ist, und die Speichereinheit 30, die die in der DNN-Berechnung verwendeten Gewichtsinformationen speichert. Die Berechnungsverarbeitungseinheit 20 überträgt die Teilmerkmalskarte 124, die ein Teil der Merkmalskarte ist, und die Positionsinformationen 121, die die Position der Teilmerkmalskarte 124 in der Merkmalskarte angeben, an den Kl-Beschleuniger 10. Der Kl-Beschleuniger 10 erfasst die Gewichtsinformationen 123 aus der Speichereinheit 30 und empfängt die Teilmerkmalskarte 124 und die Positionsinformationen 121, die von der Berechnungsverarbeitungseinheit 20 übertragen werden. Der Kl-Beschleuniger 10 führt dann die vorgeschriebene Vorverarbeitung (Schritte S803 und S811 bis S813) basierend auf den Positionsinformationen 121 aus und führt die DNN-Berechnung unter Verwendung eines Ergebnisses der Ausführung der Vorverarbeitung und der Teilmerkmalskarte 124 (Schritt S804) aus. Gemäß dieser Konfiguration kann der Kl-Beschleuniger 10 in der Datenverarbeitungsvorrichtung 1, die die DNN-Berechnung unter Verwendung von zwei Berechnungseinheiten, d. h. des Kl-Beschleunigers 10 und der Berechnungsverarbeitungseinheit 20, durchführt, die dem O-Padding-Prozess äquivalente Vorverarbeitung ausführen, was eine Reduktion des Datenkommunikationsvolumens zwischen diesen beiden Berechnungseinheiten ermöglicht.
- (2) Die durch den KI-Beschleuniger 10 ausgeführte Vorverarbeitung ist der Prozess zum Maskieren des Teils, der den Positionsinformationen 121 in den Gewichtsinformationen 123 entspricht. Der Kl-Beschleuniger 10 führt die Produkt-Summen-Operation als die DNN-Berechnung in Schritt S804 unter Verwendung der maskierten Gewichtsinformationen, die durch die Ausführung der Vorverarbeitung erzeugt wurden, und der Teilmerkmalskarte 124 aus. Gemäß dieser Konfiguration kann die dem O-Padding-Prozess äquivalente Vorverarbeitung als der auf dem KI-Beschleuniger 10 ausführbare Prozess ausgeführt werden,
- (3) Basierend auf den Positionsinformationen 121 bestimmt der Kl-Beschleuniger 10, zu welchem Bereich aus den mehreren Bereichen, die in der Merkmalskarte eingestellt sind, die Teilmerkmalskarte 124 gehört (Schritte S701 bis S707, S711 bis S716, S721 bis S726 und S731 bis S736), und führt den Prozess zum Maskieren des Teils, der dem Bereich entspricht, zu dem die Teilmerkmalskarte 124 gehört, als Vorverarbeitung in den Schritten S803 und S811 bis S 813 aus. Insbesondere enthalten, wie in 4 gezeigt, die mehreren in der Merkmalskarte eingestellten Bereiche den ersten Bereich, der die obere linke Ecke der Merkmalskarte 401 enthält, den zweiten Bereich, der den oberen Endabschnitt der Merkmalskarte 401 enthält, den dritten Bereich, der die obere rechte Ecke der Merkmalskarte 401 enthält, den vierten Bereich, der den linken Endabschnitt der Merkmalskarte 401 enthält, den fünften Bereich, der keinen Endabschnitt der Merkmalskarte 401 enthält, den sechsten Bereich, der den rechten Endabschnitt der Merkmalskarte 401 enthält, den siebten Bereich, der die untere linke Ecke der Merkmalskarte 401 enthält, den achten Bereich, der den unteren Endabschnitt der Merkmalskarte 401 enthält, und den neunten Bereich, der die untere rechte Ecke der Merkmalskarte 401 enthält. Wenn die Teilmerkmalskarte 124 zu irgendeinem anderen Bereich als dem fünften Bereich gehört, bestimmt der Kl-Beschleuniger 10 in den Schritten S811 und S812 einen Teil, der in der Gewichtsinformation 123 zu maskieren ist, gemäß der Position eines Endabschnitts der Merkmalskarte in dem Bereich, zu dem die Teilmerkmalskarte 124 gehört. Wenn die Teilmerkmalskarte 124 jedoch zum fünften Bereich gehört, führt der KI-Beschleuniger 10 den Maskierungsprozess in Schritt S803 nicht aus. Gemäß dieser Konfiguration kann die dem O-Padding-Prozess äquivalente Vorverarbeitung zuverlässig durchgeführt werden.
- (4) Der Kl-Beschleuniger 10 enthält die mehreren Prozessorkerne, die für Vektoroperationen dediziert sind, und führt DNN-Berechnungen durch KI-basierte Verarbeitung unter Verwendung der mehreren Prozessorkerne aus. Dies ermöglicht eine schnellere Ausführung der DNN-Berechnung.
- (5) Der KI-Beschleuniger 10 enthält die mehreren Kernel 13, die jeweils den DNN-Schichten entsprechen. Wenn sich die Größe der Teilmerkmalskarte 124 in deren horizontaler Richtung und/oder in deren vertikaler Richtung bei einem beliebigen Kernel 13 aus den mehreren Kerneln 13 bei der Ausführung der DNN-Berechnung ändert (Schritt S901: Ja), berechnet der eine Kernel 13 die Positionsinformationen 121 neu (Schritt S902) und überträgt die neu berechneten Positionsinformationen an den Kernel 13 in der nächsten Schicht (Schritt S904). Gemäß dieser Konfiguration kann die dem 0-Padding-Prozess äquivalente Vorverarbeitung durch den Kl-Beschleuniger 10 auf die DNN-Berechnung unter Verwendung des aus den mehreren Schichten bestehenden DNN angewendet werden.
-
(Zweite Ausführungsform)
-
Eine zweite Ausführungsform der vorliegenden Erfindung wird anschließend beschrieben. Die zweite Ausführungsform wird als Beispiel beschrieben, in dem in irgendeiner der DNN-Berechnungseinheiten 11 des KI-Beschleunigers 10 die Teilmerkmalskarte 124 in vertikaler Richtung in mehrere Teile unterteilt wird und eine Berechnung für eine Schicht durch mehrere in der DNN-Berechnungseinheit 11 enthaltene Kernel 13 ausgeführt wird:
-
In dem Kl-Beschleuniger 10 dieser Ausführungsform weist daher wenigstens eine DNN-Berechnungseinheit 11 eine Konfiguration auf, die sich von der in der ersten Ausführungsform beschriebenen Konfiguration unterscheidet, so dass die DNN-Berechnungseinheit 11 Kernel 13 aufweist, deren Anzahl gleich der Anzahl der Unterteilungen der Teilmerkmalskarte 124 ist, die bei der Ausführung der Berechnung für eine DNN-Schicht erzeugt werden. In dieser Ausführungsform sind die Konfiguration der Datenverarbeitungsvorrichtung 1, die Konfiguration des KI-Beschleunigers 10, die Konfiguration der DNN-Berechnungseinheit 11 mit Ausnahme der Anzahl der darin enthaltenen Kernel 13 und die Konfiguration des Kernels 13 gleich den in den 1 und 3 in der ersten Ausführungsform gezeigten. Die Beschreibung dieser Bestandteile wird daher im Folgenden weggelassen.
-
12 ist ein erläuterndes Diagramm für einen Berechnungsprozess gemäß der zweiten Ausführungsform der vorliegenden Erfindung. 12 zeigt ein Beispiel, bei dem die Teilmerkmalskarte 124 in drei Schichten unterteilt ist und deren Berechnung in einer Zwischenschicht, die die zweite Schicht aus drei Schichten zur Berechnung ist, durchgeführt wird. In diesem Fall enthalten, wie in 12 gezeigt, die DNN-Berechnungseinheiten 11 für drei Schichten einen Unterteilungskernel 1201, der in der DNN-Berechnungseinheit 11 in der ersten Schicht enthalten ist, drei Zwischenkernel 1202, die in der DNN-Berechnungseinheit 11 in der zweiten Schicht enthalten sind, und einen Zusammenführungskernel 1203, der in der DNN-Berechnungseinheit 11 in der dritten Schicht enthalten ist. Jeder dieser Kernel besitzt die gleiche Konfiguration wie der Kernel 13 der ersten Ausführungsform in 3.
-
In 12 unterteilt der Unterteilungskernel 1201 nach dem Durchführen eines Prozesses an der ersten Schicht die Teilmerkmalskarte 1204 in drei Teile, um drei unterteilte Teilmerkmalskarten 124 zu erzeugen, und sendet sie an die DNN-Berechnungseinheit 11 in der nächsten Schicht. Die Zwischenkernel 1202 verarbeiten jeweils die von den Unterteilungskerneln 1201 übertragenen unterteilten Teilmerkmalskarten 1204 und übertragen die verarbeiteten unterteilten Teilmerkmalskarten an die DNN-Berechnungseinheit 11 in der nächsten Schicht. Der Zusammenführungskernel 1203 veranlasst, dass die durch die drei Zwischenkernel 1202 verarbeiteten unterteilten Teilmerkmalskarten 1204 zusammengeführt werden und führt dann einen Prozess auf der dritten Schicht durch.
-
Bei der Erzeugung der drei unterteilten Teilmerkmalskarten 1204 erzeugt der Unterteilungskernel 1201 Positionsinformationen 121, die jeder der unterteilten Teilmerkmalskarten 1204 entsprechen. Zu diesem Zeitpunkt wird der Wert der Unterteilungs-ID 601, die eine der Dateneinheiten ist, aus denen die in 6 gezeigte Positionsinformationen 121 bestehen, in der Reihenfolge der kleineren Start-x-Koordinate auf 0, 1 und 2 eingestellt. Die Werte der Ende-x-Koordinate 607 und der Ende-y-Koordinate 608 werden ebenfalls auf Werte geändert, die jeweils den unterteilten Teilmerkmalskarten 1204 entsprechen. Die auf diese Weise erzeugten Positionsinformationen 121 werden zusammen mit den unterteilten Teilmerkmalskarten 1204 an jeden Unterteilungskernel 1201 übertragen.
-
Der Zwischenkernel 1202 führt den gleichen Prozess wie den Prozess in der ersten Ausführungsform an jeder unterteilten Teilmerkmalskarte 1204 durch.
-
Wenn die Positionsinformationen 121 zusammen mit den verarbeiteten unterteilten Teilmerkmalskarten 1204 von den Zwischenkernels 1202 empfangen werden, veranlasst der Zusammenführungskernel 1203, dass die unterteilten Teilmerkmalskarten 1204 zu einer Teilmerkmalskarte 124 zusammengeführt werden. Zu diesem Zeitpunkt werden die Positionsinformationen 121 auf der zusammengeführten Teilmerkmalskarte 124 unter Verwendung der Werte der Start-x-Koordinate 605 und der Start-y-Koordinate 606 der Positionsinformationen 121 mit dem Wert der Unterteilungs-ID 601, der am kleinsten ist, und der Werte der Ende-x-Koordinate 607 und der Ende-y-Koordinate 608 der Positionsinformationen 121 mit dem Wert der Unterteilungs-ID 601, der am größten ist, aktualisiert. Dann wird eine Faltungsberechnung, die der dritten Schicht entspricht, unter Verwendung der zusammengeführten Teilmerkmalskarte 124 und der aktualisierten Positionsinformationen 121 durchgeführt.
-
(Dritte Ausführungsform
-
Eine dritte Ausführungsform der vorliegenden Erfindung wird anschließend beschrieben. Die dritte Ausführungsform wird als ein Beispiel beschrieben, bei dem die Teilmerkmalskarte 124 mehrmals nacheinander in irgendeine der DNN-Berechnungseinheiten 11 des KI-Beschleunigers 10 eingegeben wird und die Berechnungsergebnisse aus mehreren Teilmerkmalskarten 124 alle auf einmal an die DNN-Berechnungseinheit 11 in der nächsten Schicht übertragen werden.
-
In dieser Ausführungsform sind die Konfiguration der Datenverarbeitungsvorrichtung 1, die Konfiguration des KI-Beschleunigers 10, die Konfiguration der DNN-Berechnungseinheit 11 und die Konfiguration des Kernels 13 gleich den in den 1 und 3 in der ersten Ausführungsform gezeigten. Die Beschreibung dieser Bestandteile wird daher im Folgenden weggelassen.
-
13 ist ein erläuterndes Diagramm für einen Berechnungsprozess gemäß der dritten Ausführungsform der vorliegenden Erfindung. Im Beispiel von 13 sind die jeweiligen Kernel 13 der DNN-Berechnungseinheiten 11, die die Berechnungen für drei Schichten durchführen, als Kernel 0, Kernel 1 und Kernel 2 gezeigt. In diesem Fall überträgt der Kernel 0, wie der Kernel der ersten Ausführungsform, die Teilmerkmalskarte 124, die dem Berechnungsprozess unterzogen worden ist, und die Positionsinformationen 121 der Teilmerkmalskarte 124 an den Kernel 1, wie in 13(b) gezeigt. Der Kernel 1 führt wie der Kernel der ersten Ausführungsform einen Prozess auf der Teilmerkmalskarte 124 durch. Wenn jedoch Daten, die für eine Berechnung durch den Kernel 2 in der nächsten Schicht erforderlich sind, nicht vorbereitet sind, überträgt der Kernel 1 kein Berechnungsergebnis aus der Teilmerkmalskarte 124 und den Positionsinformationen 121, die der Teilmerkmalskarte 124 entsprechen, an den Kernel 2. Wenn die Teilmerkmalskarte 124, die durch den Kernel 1 unter Verwendung von Daten, die vom Kernel 0 bei der zweiten Datenübertragung übertragen wurden, verarbeitet wird und die Teilmerkmalskarte 124, die durch den Kernel 1 unter Verwendung von Daten, die bei der ersten Datenübertragung erfasst wurden, verarbeitet wird, vorbereitet sind, das heißt wenn die für eine Berechnung durch den Kernel 2 erforderlichen Daten vorbereitet sind, überträgt der Kernel 1 die Teilmerkmalskarten 124 und die Positionsinformationen 121 an den Kernel 2.
-
Um die vorstehend beschriebene Berechnungsprozedur zu implementieren, enthält der Kernel 13 (der Kernel 0 bis Kernel 2) jeder Schicht des KI-Beschleunigers 10 die Anzahl der Kernelausführungen, die die Anzahl der Ausführungen von Berechnungen im Kernel repräsentiert, und die Anzahl der Ausgaben, die die Anzahl der zur Datenausgabe aus dem Kernel an den Kernel in der nächsten Schicht erforderlichen Operationen repräsentiert. Basierend auf diesen Informationseinheiten führt der Kernel 13 einen in einem Ablaufplan von 13(a) gezeigten Prozess aus. Jeder Kernel steuert somit den Zeitpunkt der Ausgabe der Teilmerkmalskarte 124 und der Positionsinformationen 121.
-
In Schritt S1301 des Ablaufplans von 13(a) wird 1 zu der durch den Kernel gehaltenen Anzahl der Ausführungen addiert. Ein Anfangswert für die Anzahl der Ausführungen ist 0.
-
Im Schritt S 1302 wird ein Rest bestimmt, der sich aus der Division der durch den Kernel gehaltenen Anzahl der Ausführungen durch die Anzahl der Ausgaben ergibt, und es wird bestimmt, ob der Rest gleich 0 ist. Wenn der Rest gleich 0 ist, fährt der Prozessablauf zu Schritt S1303 fort. Wenn der Rest nicht gleich 0 ist, wird ein Prozess von Schritt S1303 nicht ausgeführt, und der im Ablaufplan von 13(a) gezeigte Prozess endet.
-
Im Schritt S 1303 werden die Positionsinformationen 121 aktualisiert, und die aktualisierten Positionsinformationen 121 und die Teilmerkmalskarte 124 werden an den Kernel in der nächsten Schicht ausgegeben. Nachdem der Prozess von Schritt S1303 ausgeführt worden ist, wird die Anzahl der Ausführungen auf den Anfangswert 0 zurückgesetzt, und dann endet der im Ablaufplan von 13(a) gezeigte Prozess.
-
(Vierte Ausführungsform)
-
Eine vierte Ausführungsform der vorliegenden Erfindung wird anschließend beschrieben. Die vierte Ausführungsform wird als ein Fall beschrieben, in dem der Maskierungsprozess abhängig von der Datenanordnung in der zu verarbeitenden Teilmerkmalskarte 124 und den Gewichtsinformationen 123 nicht immer erforderlich ist.
-
In dieser Ausführungsform sind die Konfiguration der Datenverarbeitungsvorrichtung 1, die Konfiguration des Kl-Beschleunigers 10, die Konfiguration der DNN-Berechnungseinheit 11 und die Konfiguration des Kernels 13 gleich den in den 1 und 3 in der ersten Ausführungsform gezeigten. Die Beschreibung dieser Bestandteile wird daher im Folgenden weggelassen.
-
14 bildet ein Beispiel für die Datenanordnung in dem Gewichtsregister und dem Eingangsregister in einem Fall ab, in dem der Maskierungsprozess gemäß der vierten Ausführungsform der vorliegenden Erfindung nicht erforderlich ist. Ähnlich 11 zeigt 14 ein Beispiel, in dem, wenn die Gewichtsinformationen 123 aus den 3-mal-3-Matrix-Gewichtsdaten bestehen, insgesamt 32 Gewichtsdateneinheiten, d. h. 4 Eingangskanäle mal 8 Ausgangskanäle = 32 Datenkanäle, alle im Gewichtsregister 301 gespeichert sind. In diesem Fall wird bei der Ausführung einer Faltungsberechnung an einer Position, die zum ersten Bereich gehört, der Maskierungsprozess in einem durch das Bezugszeichen 1401 gekennzeichneten Bereich zum Zeitpunkt der Verarbeitung unter Verwendung der ersten Zeile der 3-mal-3-Matrix-Gewichtsdaten durchgeführt. Mit anderen Worten wird der Maskierungsprozess an allen Speicherabschnitten des Gewichtsregisters 301, die Gewichtsdaten speichern, durchgeführt.
-
Der vorstehende Fall, in dem der Maskierungsprozess an den gesamten im Gewichtsregister 301 gespeicherten Gewichtsdaten durchgeführt wird, wird als äquivalent zu einem Fall betrachtet, in dem der Maskierungsprozess übersprungen und die Faltungsberechnung selbst nicht durchgeführt wird, um einfach 0-Daten als Berechnungsergebnis zu erzeugen. Die letztgenannte Herangehensweise führt zu demselben Ergebnis, das eine Faltungsberechnung nach dem Maskierungsprozess produzieren würde. Auf diese Weise können nicht erforderliche Berechnungsprozesse weggelassen werden, um eine schnellere Berechnung zu erreichen. Was vorstehend für den Fall der Faltungsberechnung an einer zum ersten Bereich gehörenden Position beschrieben wurde, gilt auch für einen Fall der Faltungsberechnung an einer zu einem anderen Bereich gehörenden Position. Wenn der Maskierungsprozess an den gesamten im Gewichtsregister 301 gespeicherten Gewichtsdaten durchgeführt wird, können der Maskierungsprozess und die Faltungsberechnung übersprungen werden.
-
Die vorstehend beschriebene zweite bis vierte Ausführungsform der vorliegenden Erfindung bietet jeweils die gleichen Effekte wie die erste Ausführungsform.
-
Jede der vorstehenden Ausführungsformen ist als Beispiel beschrieben worden, bei dem im Kl-Beschleuniger 10 der Prozess der Maskierung des Teils, der den Positionsinformationen 121 in den Gewichtsinformationen 123 entspricht, als dem O-Padding-Prozess äquivalente Vorverarbeitung durchgeführt wird. Im Kl-Beschleuniger 10 kann jedoch der 0-Padding-Prozess selbst durchgeführt werden, so dass die DNN-Berechnung unter Verwendung der dem O-Padding-Prozess unterzogenen Teilmerkmalskarte 124 ausgeführt wird. Der letztgenannte Fall bietet den gleichen Effekt wie in der ersten Ausführungsform beschrieben.
-
Die vorstehend beschriebenen Ausführungsformen und Modifikationen sind Beispiele. Die vorliegende Erfindung ist nicht auf diese Ausführungsformen und Modifikationen beschränkt und kann in anderen Formen implementiert werden, sofern die Merkmale der Erfindung nicht beeinträchtigt werden. Verschiedene Ausführungsformen und Modifikationen können jeweils als unabhängige Ausführungsform oder Modifikation implementiert werden oder als beliebige Kombination von Ausführungsformen und Modifikationen implementiert werden. Obwohl vorstehend verschiedene Ausführungsformen und Modifikationen beschrieben worden sind, ist die vorliegende Erfindung nicht auf diese Ausführungsformen und Modifikationen beschränkt. Andere Art und Weisen der Erfindung, die im Rahmen des technischen Konzepts der vorliegenden Erfindung denkbar sind, sind ebenfalls in dem Schutzbereich der vorliegenden Erfindung enthalten.
-
Bezugszeichenliste
-
- 1
- Datenverarbeitungsvorrichtung
- 10
- Kl-Beschleuniger
- 11
- DNN-Berechnungseinheit
- 12
- lokaler Speicherbereich
- 13
- Kernel
- 20
- Berechnungsverarbeitungseinheit
- 30
- Speichereinheit
- 121
- Positionsinformationen
- 122
- Berechnungsschichtinformationen
- 123
- Gewichtsinformationen
- 124
- Teilmerkmalskarte
- 131
- O-Padding-Steuereinheit
- 132
- Einheit zur Erzeugung von Positionsinformationen für den nächsten Kernel
- 133
- Faltungsberechnungseinheit
- 301
- Gewichtsregister
- 302
- Eingangsregister
- 303
- Produkt-Summen-Operationseinheit
- 304
- Ausgangsregister
-
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
-