DE102019211829A1 - Recheneinheit, Verfahren und Computerprogramm zur Multiplikation - Google Patents

Recheneinheit, Verfahren und Computerprogramm zur Multiplikation Download PDF

Info

Publication number
DE102019211829A1
DE102019211829A1 DE102019211829.1A DE102019211829A DE102019211829A1 DE 102019211829 A1 DE102019211829 A1 DE 102019211829A1 DE 102019211829 A DE102019211829 A DE 102019211829A DE 102019211829 A1 DE102019211829 A1 DE 102019211829A1
Authority
DE
Germany
Prior art keywords
bit
bit shift
multiplicand
result
value
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
DE102019211829.1A
Other languages
English (en)
Inventor
Sebastian Vogel
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.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
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 Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102019211829.1A priority Critical patent/DE102019211829A1/de
Priority to PCT/EP2020/069872 priority patent/WO2021023482A1/de
Priority to US17/625,026 priority patent/US20220291899A1/en
Priority to JP2022507493A priority patent/JP7247418B2/ja
Priority to KR1020227007568A priority patent/KR20220038173A/ko
Priority to CN202080055729.2A priority patent/CN114174982A/zh
Publication of DE102019211829A1 publication Critical patent/DE102019211829A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/5235Multiplying only using indirect methods, e.g. quarter square method, via logarithmic domain
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/4833Logarithmic number system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)

Abstract

Die Erfindung betrifft Recheneinheit (4) zur Multiplikation eines ersten Wertes x mit einem ersten Multiplikanden w oder zur Mulitplikation des ersten Wertes x mit jeweils einem zweiten und dritten Multiplikanden. Die Recheneinheit erhält die Multiplikanden in einem logarithmischen Zahlenformat, sodass die Multiplikanden jeweils als zumindest ein Exponent zu einer vorgebbaren Basis vorliegen. Die Recheneinheit (4) umfasst ein erstes Register (43), in welchem entweder zwei Exponenten ŵ1, ŵ2des ersten Multiplikand oder der Exponent des zweiten und der Exponent des dritten Mulitplikand hinterlegt sind. Ein gesetztes Konfigurationsbit (40) charakterisiert, ob entweder die zwei Exponenten ŵ1, ŵ2des ersten Multiplikand oder der Exponent des zweiten und der Exponent des dritten Multiplikand in dem ersten Register (43) hinterlegt sind. Die Recheneinheit umfasst zumindest zwei Bitshiftoperatoren (31,32). Die Erfindung betrifft ferner ein Verfahren und ein Computerprogramm zum Multiplizieren des Wertes x mit den Multiplikanden.

Description

  • Technisches Gebiet
  • Die Erfindung betrifft eine Recheneinheit zur Berechnung einer Multiplikation mittels Bitshiftoperatoren. Ebenso betrifft die Erfindung ein Verfahren und ein Computerprogramm, die jeweils eingerichtet sind, die Multiplikation mittels Bitshiftoperatoren auszuführen.
  • Stand der Technik
  • Um neuronale Netze in Echtzeit ausführen zu können, wurden dedizierte Hardwarebeschleuniger entwickelt. Hardware-Beschleuniger setzen hardwareimplementierte Multiply-Accumulate-Einheiten (MAC)-Einheiten für die Multiplikationen ein. Es wurde erkannt, dass sich der Workload in einem neuronalen Netz fast ausschließlich aus Multiplikationen und Additionen zusammensetzt. Hardwarebeschleuniger erreichen folglich einen hohen Rechendurchsatz durch einen massiv parallelen Einsatz von MAC-Einheiten. Im Allgemeinen werden Netze auf Graphical Processing Units (GPUs) trainiert, wodurch das Repräsentationsformat von Netzgewichten und der Zwischenergebnisse Float32 entspricht. Dieses Zahlenformat ist für den Einsatz in Embedded Systemen weniger geeignet, da das entsprechende Embedded System Float32-MAC-Einheiten nutzen müsste, welche hohen Platz- und Energie-Bedarf mit sich bringen.
  • Vorteile der Erfindung
  • Es wird im Folgenden eine Recheneinheit vorgeschlagen, die eine Nutzung eines Zahlenformats mit reduzierter Wortbreite (z.B. 4 Bit) erlaubt, wodurch vorteilhafterweise auf Multiplizierer in Hardware verzichtet und stattdessen Bitshifts verwendet werden können. Denn Bitshifts benötigen in einer ASIC-Implementierung wesentlich (10-20x) weniger Chip-Fläche. Diese sind deshalb kostengünstiger. Ferner führt der Einsatz von Bitshifts zu einem gegenüber Multiplizieren reduzierten Energiebedarf. Die vorgeschlagene Recheneinheit bietet darüber hinaus auch eine Flexibilität hinsichtlich Auflösungsgenauigkeit und hohen Rechendurchsatz.
  • Ferner kann die Recheneinheit unterschiedlich quantisierte Gewichte von unterschiedlichen Schichten des neuronalen Netzes handhaben. Denn die Recheneinheit kann abhängig von den verwendeten Wortbreiten der Gewichte unterschiedlich betrieben werden.
  • Bekannte MAC-Einheiten der oben genannten Beschleuniger verwenden linear quantisierte Gewichte und können deshalb nicht von den Kosten-, Energie-, und Chip-Flächen-Einsparungen von einfachen Bitshifts in dem Maße profitieren, wie die vorgeschlagene Recheneinheit.
  • Mit der vorgeschlagenen Recheneinheit wird daher ein Beschleuniger vorgeschlagen, der flexibel abhängig von den Anforderungen an Genauigkeit des Zahlenformats, Energieverbrauch und Rechendurchsatz konfiguriert werden kann.
  • Offenbarung der Erfindung
  • In einem ersten Aspekt wird eine Recheneinheit zur Multiplikation eines ersten Wertes x mit einem ersten Multiplikanden w oder zur Multiplikation des ersten Wertes x mit jeweils einem zweiten und dritten Multiplikanden vorgeschlagen. Die Recheneinheit erhält den Wert x und Exponenten eines logarithmischen Zahlenformats der Multiplikanden. Im logarithmischen Zahlenformat werden die Multiplikanden jeweils durch zumindest ein Exponent zu einer vorgebbaren Basis dargestellt. Die Recheneinheit erhält zumindest zwei Exponenten ŵ1, ŵ2 eines ersten logarithmischen Zahlenformats (beispielsweise im „two-hot“-Zahlenformat) des ersten Multiplikanden oder jeweils einen Exponenten eines zweiten logarithmischen Zahlenformat (beispielsweise im „power-of-two“-Zahlenformat) der zweiten und dritten Multiplikanden. Es kann gesagt werden, dass die Exponenten entweder dem ersten Multiplikanden oder dem zweiten und dritten Multiplikanden zugeordnet sind. Die Exponenten sowie der erste Wert x sind quantisiert, beispielsweise mittels 2, 4 oder 8 Bit, oder mehr als 8 Bit und können als binäre Zahl vorliegen.
  • Die Recheneinheit umfasst ein erstes Register, in welchem entweder die zwei Exponenten ŵ1, ŵ2 des ersten Multiplikand oder der Exponent des zweiten und der Exponent des dritten Multiplikand hinterlegt sind. Ein Konfigurationsbit ist vorhanden, welches charakterisiert, ob entweder die zwei Exponenten ŵ1, ŵ2 des ersten Multiplikand oder der Exponent des zweiten und der Exponent des dritten Multiplikand in dem ersten Register hinterlegt sind. Denkbar ist auch, dass das Konfigurationsbit charakterisiert, ob die hinterlegten Exponenten des ersten Registers einem oder mehr als einem Multiplikanden zugeordnet sind oder ob diese Exponenten im ersten oder zweiten logarithmischen Zahlenformat verwendet werden. Das Konfigurationsbit kann ein gesetztes Bit in einem Register oder Speicher der Recheneinheit sein, bevorzugt im ersten Register.
  • Ferner umfasst die Recheneinheit einen ersten und zweiten Bitshiftoperator. Der Bitshiftoperator ist eingerichtet, abhängig von einem vorgebbaren (binären) Wert, eine binäre Zahl um die Anzahl der Stellen des vorgebbaren Wertes nach links (vorzugsweise in Hardware) zu verschieben. Der erste Bitshiftoperator verschiebt den ersten Wert x um eine Anzahl von Stellen, die einem Wert eines ersten Exponenten der hinterlegten Exponenten des ersten Registers entspricht. Der zweite Bitshiftoperator verschiebt den ersten Wert x um die Anzahl der Stellen, die einem Wert eines zweiten Exponenten der Exponenten des ersten Registers entspricht. Die Recheneinheit umfasst des Weiteren einen Addierer, der das Ergebnis des ersten und zweiten Bitshiftoperators aufaddiert. Die Recheneinheit ist des Weiteren eingerichtet, dann, wenn das Konfigurationsbit charakterisiert, dass der erste Multiplikand im ersten Register hinterlegt ist, das Ergebnis (B) des Addierers auszugeben und dann, wenn das Konfigurationsbit charakterisiert, dass der zweite und dritte Multiplikand im ersten Register hinterlegt sind, das Ergebnis (A) des zweiten Bitshiftoperators und das Ergebnis (C) des ersten Bitshiftoperators auszugeben. Das Ergebnis (B) liegt an einem Ausgang des Addierers vor, nachdem dieser seine Rechenoperation ausgeführt hat. Das Ergebnis (B) entspricht dem Multiplikationsergebnis des Wertes x mit dem ersten Multiplikanden. Das Ergebnis (A) entspricht dem Multiplikationsergebnis des Wertes x mit dem Multiplikanden, dem der Exponent zugeordnet ist, der für den Bitshift des zweiten Bitshiftoperators verwendet wurde. Das Entsprechende gilt für das Ergebnis (C).
  • Ein Vorteil der Recheneinheit ist einerseits, dass die vorgeschlagene Hardware einen ersten Modus (z.B. „two-hot“-Zahlenformat) bereithält, der vorzugsweise hinsichtlich der Auflösung/Zahlendarstellung einer linearen Quantisierung nahekommt und deshalb sehr genau rechnen kann, bei jedoch geringerem Flächen- und Energie-Bedarf aufgrund der Bitshiftoperatoren. Andererseits stellt die Recheneinheit einen weiteren Modus (z.B. „power-of-two“-Zahlenformat) zur Verfügung, bei dem die Effizienz respektive der Rechendurchsatz im Vordergrund steht. Bleibt der Gesamt-Workload konstant, verbraucht die Schaltung in diesem Modus besonders wenig Energie. Ist der Gesamt-Workload variable, so ist in diesem Modus der Rechendurchsatz doppelt so hoch. Daher ermöglicht die Recheneinheit nicht nur eine Energieeinsparung, sondern kann auch für einen höheren Datendurchsatz verwendet werden. Die Recheneinheit hat auch den Vorteil, dass die Auflösungsgenauigkeit durch die zwei Modi einstellbar ist und damit unterschiedliche Wortbreiten für verschiedene Schichten eines neuronalen Netzes unterstützt.
  • Es wird vorgeschlagen, dass die Recheneinheit einen weiteren Bitshiftoperator umfasst, der das Ergebnis des ersten Bitshiftoperators um eine vorgebbare Anzahl von Stellen nach links verschiebt. Diese vorgebbare Anzahl entspricht einem vorgebbaren Wert ζ, der eine unterschiedliche Auflösung der beiden Exponenten des ersten Multiplikanden charakterisiert. Der Addierer addiert das Ergebnis des zweiten Bitshiftoperators und des weiteren Bitshiftoperators auf.
  • Weiterhin wird vorgeschlagen, dass den Exponenten im ersten Register jeweils ein Vorzeichenbit (engl. sign-bit) zugeordnet ist und der Addierer abhängig von dem Vorzeichenbit die Ergebnisse der Bitshiftoperatoren aufsummiert oder subtrahiert. Das Vorzeichenbit charakterisiert, ob der jeweilige Multiplikand, insbesondere der Exponent, der diesem Multiplikanden zugeordnet ist, eine positive oder negative Zahl ist.
  • Weiterhin wird vorgeschlagen, dass die Recheneinheit einen ersten und zweiten Akkumulator umfasst. Dann, wenn das Konfigurationsbit charakterisiert, dass der erste Multiplikand im ersten Register hinterlegt ist, akkumuliert einer der Akkumulatoren nur das Ergebnis (B) des Addierers. Dann, wenn das Konfigurationsbit charakterisiert, dass die Exponenten des zweiten und dritten Multiplikanden im ersten Register hinterlegt sind, akkumuliert der erste Akkumulator das Ergebnis (A) des zweiten Bitshiftoperators und der zweite Akkumulator das Ergebnis (C) des ersten Bitshiftoperators.
  • Unter akkumulieren kann verstanden werden, dass mehrere Multiplikationen ausgeführt und die Ergebnisse der einzelnen Multiplikationen aufsummiert werden, z.B.: a ← a + (w * x).
  • Die Akkumulatoren können jeweils zwei Register und ein Akkumulationsregister und einen Addierer umfassen. In einem ersten Register ist eines der Ergebnisse A, B oder C hinterlegt. In dem zweiten Register ist das Vorzeichenbit des jeweiligen Exponenten hinterlegt, der dem zugehörigen Multiplikanden zugeordnet ist, welcher zum Ermitteln des Ergebnisses aus dem ersten Register verwendet wird. Der Addierer addiert oder subtrahiert den Inhalt des ersten Registers mit dem Akkumulationsregister abhängig von dem Vorzeichenbit aus dem zweiten Register und speichert das Ergebnis in dem Akkumulationsregister ab. Vorteilhaft ist hierbei, dass damit sehr effizient Vektor-Matrix-Multiplikationen durchgeführt werden können.
  • Weiterhin wird vorgeschlagen, dass der erste Akkumulator das Ergebnis (A) abhängig von demjenigen Vorzeichenbit aufsummiert oder subtrahiert, welches demjenigen Exponenten zugeordnet ist, welcher für den zweiten Bitshiftoperator verwendet wird und der zweite Akkumulator das Ergebnis (C) abhängig von demjenigen Vorzeichenbit aufsummiert oder subtrahiert, welches demjenigen Exponenten zugeordnet ist, welcher für den ersten Bitshiftoperator verwendet wird. Vorzugsweise sind die Vorzeichenbit ebenfalls im ersten Register hinterlegt.
  • Weiterhin wird vorgeschlagen, dass die Recheneinheit ferner eingerichtet ist, dass dann, wenn das Konfigurationsbit geändert wird, der erste und zweite Akkumulator zurückgesetzt (engl. reset) wird. Unter zurücksetzen kann verstanden werden, dass ein gespeicherter Wert, bzw. Inhalt des Akkumulators(-register) auf einen vorgebbaren initialen Wert, vorzugsweise auf den Wert null, gesetzt wird.
  • Weiterhin wird vorgeschlagen, dass die Basis der Multiplikanden des ersten und zweiten logarithmischen Zahlenformats dem Wert zwei entspricht. Die gesamte Wortbreite der beiden Exponenten des ersten Multiplikanden kann der gesamten Wortbreite der beiden Exponenten des ersten und zweiten Multiplikanden entsprechen, oder andersherum.
  • In einem zweiten Aspekt wird ein, insbesondere computerimplementiertes, Verfahren zum Betreiben der Recheneinheit nach dem ersten Aspekt vorgeschlagen. Das Verfahren umfasst die Schritte: Bereitstellen zweier Exponenten und eines Wertes x und eines Konfigurationsbits, wobei das Konfigurationsbit charakterisiert, ob die Exponenten genau einem Multiplikanden oder jeweils einem Multiplikanden zugeordnet sind. Daraufhin folgt ein Ausführen eines ersten Bitshifts des Wertes x um eine Anzahl der Stellen des ersten Exponenten und eines zweiten Bitshifts des Wertes x um die Anzahl der Stellen des zweiten Exponenten. Daraufhin folgt ein Ausgeben des Ergebnisses der Bitshiftoperatoren abhängig von dem Konfigurationsbit,
    wobei dann, wenn das Konfigurationsbit charakterisiert, dass die beiden Exponenten einem Multiplikanden zugeordnet sind, werden die Ergebnisse der Bitshiftoperatoren addiert und als Ergebnis der Multiplikation ausgegeben, wobei dann, wenn das Konfigurationsbit charakterisiert, dass die beiden Exponenten jeweils einem Multiplikanden zugeordnet sind, werden die Ergebnisse der Bitshiftoperatoren jeweils als ein Ergebnis der Multiplikation des Wertes mit jeweils einem der Multiplikanden ausgegeben.
  • In einem weiteren Aspekt wird ein Computerprogramm vorgeschlagen. Das Computerprogramm ist eingerichtet, das Verfahren des zweiten Aspektes auszuführen. Das Computerprogramm umfasst Anweisungen, die einen Computer veranlassen, eines dieser genannten Verfahren mit all seinen Schritten auszuführen, wenn das Computerprogramm auf dem Computer abläuft. Ferner wird ein maschinenlesbares Speichermodul vorgeschlagen, auf welchem das Computerprogramm gespeichert ist.
  • Ausführungsbeispiele der oben genannten Aspekte sind in den beiliegenden Zeichnungen dargestellt und in der nachfolgenden Beschreibung näher erläutert. Dabei zeigen: Kurze Beschreibung der Zeichnungen
    • 1 zwei schematisch Diagramme, die eine Verteilung von linear quantisierten und nicht-quantisierten Werten von Filtern einer Schicht eines neuronalen Netzes darstellen;
    • 2 zwei schematische Diagramme, die eine Verteilung von unterschiedlich logarithmisch quantisierten und nicht-quantisierten Werten der Filter der Schicht des neuronalen Netzes darstellen;
    • 3 eine schematische Darstellung eines Multiplizierers;
    • 4 eine schematische Darstellung eines weiteren Multiplizierers;
    • 5 eine Ausführungsform eines Verfahrens zur Multiplikation von unterschiedlich logarithmisch quantisierten Werten;
  • 1 zeigt ein erstes schematisches Diagramm (1), welches eine Verteilung (10) von Werten eines Filters (conv3_3), insbesondere Gewichte, einer Schicht eines trainierten neuronalen Netzes zeigt. Die Verteilung (10) ist eine Häufigkeitsverteilung von quantisierten Werten in einer Float32-Zahlendarstellung. Es sei angemerkt, dass im ersten schematischen Diagramm (1) die Werte einer mono-modalen Verteilung folgen. Des Weiteren sind in dem ersten schematischen Diagramm (1) quantisierte Werte (11) mit einer Auflösung von 4 Bit dargestellt. Diese quantisierten Werte (11) mit der Auflösung von 4 Bit sind hierbei linear quantisiert und um den Wert 0 angeordnet.
  • Es wurde jedoch beobachtet, dass die Werte der Filter, insbesondere die Gewichte des neuronalen Netzes, einer nicht-uniformen Häufigkeitsverteilung (siehe zweites schematisches Diagramm (2)) folgen. Daher ist für niedrige Bitbreiten eine lineare Quantisierung nicht geeignet, um bestmöglich die Werte der Filter bei einer nicht-uniformen Verteilung zu quantisieren. Denn wie in dem zweiten schematischen Diagramm (2) dargestellt, kann mit einer linearen Quantisierung bei geringe Bitbreiten nur ein erster Mode (12a) sinnvoll quantisiert werden, wohingegen Werte der Filter entlang einem zweiten Mode (12b) bei einer linearen Quantisierung überhaupt nicht berücksichtigt werden. Dies kann zu einem hohen Quantisierungsfehler führen.
  • Im Folgenden wird vorgeschlagen, dass die Verteilungen (10,12a,12b), denen die Werte der Schichten des neuronalen Netzes folgen, mittels eines nicht-gleichverteilten Quantisierungsformats gehandhabt werden. Vorzugsweise wird eine logarithmische Zahlendarstellung zur Quantisierung verwendet. Unter einer logarithmischen Zahlendarstellung wird verstanden, dass statt des Wertes einer Zahl nur ein Wert eines Exponenten zu einer vorgegebenen Basis verwendet wird. Beispielsweise: der Wert 64 wird in der logarithmischen Zahlendarstellung als 26 = 64, folglich als Wert 6 abgespeichert.
  • Bevorzugt wird im Folgenden die Zahlendarstellung zur Basis 2 verwendet und als „Power-of-two“-Zahlenformat bezeichnet.
  • Werden Gewichte w bzw. Werte der Filter eines neuronalen Netzes als „power-of-two“ Wert 2 quantisiert, kann die Multiplikation von Aktivierungen x der jeweiligen Schicht, bzw. Neurons dieser Schicht mit den Gewichten durch einen Bitshift der Aktivierungen x um ŵ Stellen nach links erfolgen: x w = x 2 w ^ = x w ^
    Figure DE102019211829A1_0001
  • Im Folgenden werden die Exponenten mit einem ŵ dargestellt. Es sei angemerkt, dass der Wert x und der Exponent ŵ jeweils quantisiert sind und bevorzugt als binäre Zahl vorliegen.
  • Es wurde erkannt, dass die logarithmische Darstellung von Gewichten eines neuronalen Netzes nur bedingt geeignet ist, da insbesondere für den Fall einer Bimodalen-Verteilung für den zweiten Mode (vgl. zweites schematisches Diagramm (2)) nur wenige Abtastpunkte zur Verfügung stehen, siehe 2(b).
  • Es wird deshalb vorgeschlagen, ein Zahlenformat respektive eine Quantisierung zu verwenden, bei der die Gewichte w eines neuronalen Netzes durch zwei „power-of-two“ Werte dargestellt werden: w = w 1 + w 2 = 2 w 1 ^ + 2 w 2 ^
    Figure DE102019211829A1_0002
  • Das sich durch die beiden „power-of-two“ Werte nach Gleichung (2) ergebende Zahlenformat soll im Folgenden als „two-hot“ Zahlenformat bezeichnet werden.
  • Für eine Multiplikation ergibt sich im „two-hot“ Zahlenformat: x w = x ( w 1 + w 2 ) = x w 1 ^ + x w 2 ^
    Figure DE102019211829A1_0003
  • Die entsprechenden Quantisierungswerte durch das „power-of-two“ und das „two-hot“ Zahlenformat für das erste und zweite schematische Diagramm (1,2) ist in 2 beispielhaft dargestellt.
  • In 2 wird ersichtlich, dass das „two-hot“-Format für Bimodale-Verteilungen sinnvollere Abtastwerte (21) für den zweiten Mode bereitstellt.
  • Um in der „two-hot“ -Zahlenrepräsentation einen Freiheitsgrad zu integrieren, der für Hardware keinen Mehraufwand oder wesentliche Zusatzkosten hervorruft, kann der Parameter ζ eingefügt werden. Der Parameter ζ charakterisiert eine unterschiedliche Auflösung der beiden Werte w1 und w2: x ( 2 ζ w 1 + w 2 ) = ( x w 1 ^ ) ζ + x w 2 ^
    Figure DE102019211829A1_0004
    3 zeigt schematisch eine Recheneinheit (3) zur Multiplikation zumindest zweier Zahlen im „two-hot“-Zahlenformat.
  • Die Recheneinheit (3) umfasst in dieser Ausführungsform einen Multiplizierer (30) und optional einen Akkumulator (35).
  • Der Multiplizierer (30) erhält als Eingangswerte den Wert x, bzw. die Aktivierung x und das Gewicht im „two-hot“-Zahlenformat, also die Exponenten des Gewichtes ŵ1 und ŵ2. Ferner ist den Exponenten ŵ1 und ŵ2 jeweils ein Vorzeichenbit (engl. sign bit) s1, s2 zugeordnet. Die Exponenten ŵ1 und ŵ2 und bevorzugt die Vorzeichenbit sind in einem ersten Register (43) hinterlegt.
  • Vorzugsweise haben die Eingangswerte eine Auflösung von 8 Bit. Denkbar sind beliebig weitere Auflösungen, vorzugweise Auflösungen von 16 Bit oder weniger als 4 Bit.
  • Der Multiplizierer (30) berechnet dann abhängig von den Exponenten ŵ1 und ŵ2 und abhängig von der Aktivierung x gemäß Gleichung (4) durch Bitshiftoperatoren (31,32) das Ergebnis der Multiplikation. Für den Fall, dass der Parameter ζ gegeben ist, kann wie in Gleichung (4) das Ergebnis des Bitshiftoperators (31) mittels eines weiteren Bitshiftoperators (33) um die Anzahl der Stellen nach links verschoben werden, die durch den Parameter ζ beschrieben werden.
  • Abhängig von dem Vorzeichenbit s1 des ersten Exponenten ŵ1 wird dann das Ergebnis der beiden Bitshiftoperatoren (31,32) aufsummiert oder subtrahiert, vorzugsweise mittels eines Addierers (34), und als Zwischenergebnis p ausgegeben.
  • Für den Fall, dass die Aktivierung x mehrfach mit unterschiedlichen Gewichten w multipliziert und anschließend über alle Ergebnisse der einzelnen Multiplikation summiert werden sollen, kann der Akkumulator (35) verwendet werden. Sobald der Multiplizierer (30) das Zwischenergebnis (p) ermittelt hat, kann dieses durch den Akkumulator (35) weiterverarbeitet werden. Der Akkumulator (35) ermittelt hierbei abhängig von dem Zwischenergebnis p und dem Vorzeichenbit s2 des Exponenten ŵ2 und abhängig von dem gespeicherten Ergebnis des Akkumulatorregisters (acc_reg) ein Endergebnis q.
  • Vorzugsweise speichert der Akkumulator (35) das Zwischenergebnis p in einem Register (reg). Daraufhin wird aus einem weiteren Register (37) das Vorzeichenbit (sign_2) ausgelesen und mit einem Addierer (36) abhängig von dem Vorzeichenbit (sign_2) das Zwischenergebnis p des Registers (reg) und der Inhalt des Akkumulatorregisters (acc_reg) aufaddiert oder subtrahiert. Das Ergebnis des Addierers (36) wird daraufhin in dem Akkumulatorregister (acc_reg) gespeichert und optional als Ergebnis q ausgegeben.
  • 4 zeigt eine schematische Darstellung einer weiteren Recheneinheit (4), welche vorteilhafterweise sowohl Multiplikationen in dem „two-hot“-Zahlenformat als auch in dem „power-of-two“-Zahlenformat ausführen kann.
  • Die Recheneinheit (4) kann durch ein Konfigurationsbit (40) in entweder einen ersten Modus versetzt werden, also Gewichte w gemäß dem „two-hot“-Zahlenformat, oder konfiguriert werden, in einem zweiten Modus zwei Gewichte im „power-of-two“- Zahlenformat zu verarbeiten.
  • Dabei wird im „two-hot“-Modus (erster Modus) das Ergebnis der beiden Bitshifts addiert (oder subtrahiert - abhängig von einem ersten Vorzeichenbit (sign_1)). Das Multiplikationsergebnis liegt am Ausgang B bereit und wird in einem ersten Akkumulator (35a) abhängig von einem zweiten Vorzeichenbit (sign_2) akkumuliert. Die Ausgabe eines zweiten Akkumulators (35b) ist 0 und/oder wird nicht verwendet. In diesem Modus ist die Auflösung der Zahlendarstellung für Gewichte höher als im zweiten Modus.
  • Ein Weiterleiten der Ergebnisse (am Ausgang A,B,C) des Multiplizierers (30) erfolgt durch Schalter (41,42). Diese Schalter leiten die Ergebnisse (am Ausgang A,B,C) des Multiplizierers (30) abhängig von dem Konfigurationsbit (40) zu den jeweiligen Akkumulatoren (35a,35b). Die Schalter können jeweils Multiplexer sein.
  • Alternativ kann für den ersten Modus das Konfigurationsbit (40) den zweiten Akkumulator (35b) deaktivieren oder die Ergebnisse am Ausgang A und C verwerfen.
  • Im „power-of-two“-Modus (zweiter Modus) werden zwei unterschiedliche Gewichte mit dem Eingangswert x parallel durch zwei Bitshifts multipliziert. Die beiden Multiplikationsergebnisse liegen an den Ausgängen A und C bereit.
  • Jedes Ergebnis wird abhängig vom entsprechenden Vorzeichenbit (sign_1,sign_2) auf das Akkumulator-Register des ersten und zweiten Akkumulators (35a,35b) addiert oder subtrahiert. Anschließend liegen zwei Ergebnisse an den beiden Akkumulatorausgängen bereit. In diesem Modus löst das Zahlenformat die Gewichte gröber auf. Im Gegenzug erreicht die Recheneinheit (4) den doppelten Rechendurchsatz.
  • Vorzugsweise werden im „power-of-two“-Modus (zweiter Modus) die Ergebnisse des ersten und zweiten Akkumulators (35a,35b) mittels eines weiteren Addierers aufaddiert, der nicht in 4 gezeigt ist. Dies wird vorzugsweise dann durchgeführt, wenn alle Ergebnisse in den Akkumulatoren berechnet wurden und eine Summe über alle Multiplikationsergebnisse ausgegeben werden soll.
  • 5 zeigt schematisch ein Flussdiagramm (5) zum Betreiben der Recheneinheit (4), insbesondere zur Multiplikation eines Wertes x mit einem Multiplikand im „two-hot“-Zahlenformat oder zur Multiplikation eines Wertes x mit 2 Multiplikanden im „power-of-two“- Zahlenformat.
  • Im ersten Schritt 500 wird der Werte x, die Exponenten des Multiplikanden im „two-hot“-Zahlenformat oder die Exponenten der zwei Multiplikanden im „power-of-two“-Zahlenformat bereitgestellt. Zusätzlich kann ein Konfigurationsbit gesetzt werden, welches charakterisiert, ob die zwei Exponenten dem einen Multiplikanden im „two-hot“-Zahlenformat zugeordnet sind, oder den zwei Multiplikanden im „power-of-two“-Zahlenformat.
  • In Schritt 500 wird dann entweder abhängig von dem Konfigurationsbit oder abhängig davon, in welchem Zahlenformat die Multiplikanden vorliegen, entschieden, ob die Multiplikation gemäß dem ersten Modus oder dem zweiten Modus ausgeführt wird.
  • Dann, wenn entschieden wurde, dass die Multiplikation gemäß dem ersten Modus ausgeführt wird, wird nach Schritt 500 der Schritt 510a ausgeführt. Dann, wenn in Schritt 500 entschieden wurde, dass die Multiplikation gemäß dem zweiten Modus ausgeführt werden soll, folgt Schritt 510b.
  • Im Schritt 510a werden die Exponenten des einen Multiplikanden im „two-hot“-Zahlenformat gemäß Gleichung (3) verwendet: mittels Bitshiftoperatoren und Addition wird das Ergebnis der Multiplikation ermittelt.
  • Nachdem Schritt 510a beendet wurde, folgt Schritt 520a. Hierbei wird das Ergebnis des Schrittes 510a ausgegeben. Zusätzlich oder alternativ kann in Schritt 520a über Ergebnisse des Schrittes 510a akkumuliert werden.
  • Im Schritt 510b werden die Exponenten der zwei Multiplikanden im „power-of-two“-Zahlenformat verwendet, um den Wert x jeweils um die Anzahl der Stellen der Exponenten nach links mittels Verschiebungsoperationen zu verschieben, beispielsweise mittels zwei Bitshiftoperatoren: x ≪ ŵ1 und x ≪ ŵ2.
  • Nachdem Schritt 510b beendet wurde, folgt Schritt 520b. Hierbei werden die Ergebnisse der jeweiligen Verschiebungsoperationen des Schrittes 510b separat voneinander ausgegeben. Zusätzlich oder alternativ kann in Schritt 520b jeweils über beide Ergebnisse des Schrittes 510b separat akkumuliert werden.

Claims (10)

  1. Recheneinheit (4) zur Multiplikation eines ersten Wertes x mit zumindest einem Mulitplikanden, wobei die Recheneinheit (4) ein erstes Register (43) umfasst, in welchem entweder zwei Exponenten ŵ1, ŵ2 eines ersten logarithmischen Zahlenformats eines ersten Multiplikanden oder jeweils ein Exponent eines zweiten logarithmischen Zahlenformat eines zweiten und dritten Multiplikanden hinterlegbar sind, wobei die Recheneinheit eingerichtet ist, ein Konfigurationsbit (40) zu setzen, welches charakterisiert, ob entweder die zwei Exponenten ŵ1, ŵ2 des ersten Multiplikanden oder der Exponent des zweiten und der Exponent des dritten Multiplikanden in dem ersten Register (43) hinterlegt sind, wobei die Recheneinheit (4) einen ersten und zweiten Bitshiftoperator (31,32) umfasst, wobei der erste Bitshiftoperator (31) eingerichtet ist, den ersten Wert x um eine erste Anzahl von Stellen entsprechend einem Wert eines ersten Exponenten der hinterlegten Exponenten des ersten Registers (43) zu verschieben, wobei der zweite Bitshiftoperator (32) eingerichtet ist, den ersten Wert x um eine zweite Anzahl der Stellen entsprechend einem Wert eines zweiten Exponenten der Exponenten des ersten Registers (43) zu verschieben, wobei die Recheneinheit (4) des Weiteren einen Addierer (34) umfasst, der eingerichtet ist, das Ergebnis des ersten und zweiten Bitshiftoperators aufzuaddieren, wobei die Recheneinheit (4) eingerichtet ist, dann, wenn das Konfigurationsbit charakterisiert, dass der erste Multiplikand im ersten Register (43) hinterlegt ist, das Ergebnis (B) des Addierers (34) auszugeben und dann, wenn das Konfigurationsbit charakterisiert, dass der zweite und dritte Multiplikand im ersten Register (43) hinterlegt sind, das Ergebnis (A) des zweiten Bitshiftoperators und das Ergebnis (C) des ersten Bitshiftoperators auszugegeben.
  2. Recheneinheit (4) nach Anspruch 1, wobei die Recheneinheit (4) einen weiteren Bitshiftoperator umfasst, wobei der weitere Bitshiftoperator eingerichtet ist, das Ergebnis des ersten Bitshiftoperators um eine dritte Anzahl von Stellen nach links zu verschieben, wobei die Recheneinheit eingerichtet ist, einen vorgebbaren Wert ζ zu empfangen, wobei die dritte Anzahl einem vorgebbaren Wert ζ entspricht, der eine unterschiedliche Auflösung der beiden Exponenten des ersten Multiplikanden charakterisiert, wobei der Addierer (34) eingerichtet ist, das Ergebnis des zweiten Bitshiftoperators (32) und des weiteren Bitshiftoperators aufzuaddieren.
  3. Recheneinheit (4) nach Anspruch 1 oder Anspruch 2, wobei in dem ersten Register (43) zusätzlich Vorzeichenbits (engl. sign-bit), die jeweils einem der hinterlegten Exponenten zugeordnet sind, hinterlegbar sind, wobei der Addierer (34) eingerichtet ist, abhängig von dem Vorzeichenbit die Ergebnisse der Bitshiftoperatoren aufzusummieren oder zu subtrahieren.
  4. Recheneinheit (4) nach einem der vorhergehenden Ansprüche, wobei die Recheneinheit des Weiteren einen ersten und zweiten Akkumulator (35a,35b) umfasst, wobei die Recheneinheit des Weiteren eingerichtet ist, dass dann, wenn das Konfigurationsbit (40) charakterisiert, dass der erste Multiplikand im ersten Register hinterlegt ist, einer der Akkumulatoren (35a,35b) nur das Ergebnis (B) des Addierers (34) akkumuliert, und wobei die Recheneinheit eingerichtet ist, dass dann, wenn das Konfigurationsbit charakterisiert, dass die Exponenten des zweiten und dritten Multiplikanden im ersten Register (43) hinterlegt sind, der erste Akkumulator (35a) das Ergebnis (A) des zweiten Bitshiftoperators und der zweite Akkumulator (35b) das Ergebnis (C) des ersten Bitshiftoperators akkumuliert.
  5. Recheneinheit (4) nach Anspruch 3 und 4, wobei der erste Akkumulator (35a) eingerichtet ist, das Ergebnis (A) abhängig von demjenigen Vorzeichenbit (4:sign_2) aufzusummieren oder zu subtrahieren, welches demjenigen Exponenten zugeordnet ist, welcher für den zweiten Bitshiftoperator verwendet wird und der zweite Akkumulator (35b) eingerichtet ist, das Ergebnis (C) abhängig von demjenigen Vorzeichenbit (4:sign_1) aufsummiert oder subtrahiert, welches demjenigen Exponenten zugeordnet ist, welcher für den ersten Bitshiftoperator verwendet wird.
  6. Recheneinheit (4) nach Anspruch 4 oder 5, wobei die Recheneinheit (4) ferner eingerichtet ist, dass dann, wenn das Konfigurationsbit (40) geändert wird, der erste und zweite Akkumulator (35a,35b) zurückgesetzt (engl. reset) wird.
  7. Verfahren zum Betreiben der Recheneinheit (4) nach einem der vorhergehenden Ansprüche, umfassend die Schritte: zweier Exponenten und eines Wertes x sowie eines Konfigurationsbits, wobei das Konfigurationsbit charakterisiert, ob die Exponenten genau einem Multiplikanden oder jeweils einem Multiplikanden zugeordnet sind; Ausführen eines ersten Bitshifts des Wertes x um eine erste Anzahl von Stellen des ersten Exponenten und eines zweiten Bitshifts des Wertes x um die zweite Anzahl der Stellen des zweiten Exponenten, Ausgeben der Ergebnisse der Bitshiftoperatoren abhängig von dem Konfigurationsbit, wobei dann, wenn das Konfigurationsbit charakterisiert, dass die beiden Exponenten einem Multiplikanden zugeordnet sind, werden die Ergebnisse der Bitshiftoperatoren addiert und als Ergebnis der Multiplikation ausgegeben, wobei dann, wenn das Konfigurationsbit charakterisiert, dass die beiden Exponenten jeweils einem Multiplikanden zugeordnet sind, werden die Ergebnisse der Bitshiftoperatoren jeweils als ein Ergebnis der Multiplikation des Wertes mit jeweils einem der Multiplikanden ausgegeben.
  8. Verfahren nach Anspruch 7, wobei die Basis der Multiplikanden des ersten und zweiten logarithmischen Zahlenformats dem Wert 2 entspricht.
  9. Computerprogramm, welches Befehle umfasst, die beim Ausführen auf einem Computer bewirken, dass jeder Schritt des Verfahrens nach Anspruch 7 oder nach Anspruch 8 ausgeführt wird.
  10. Maschinenlesbares Speicherelement, auf dem das Computerprogramm nach Anspruch 9 gespeichert ist.
DE102019211829.1A 2019-08-07 2019-08-07 Recheneinheit, Verfahren und Computerprogramm zur Multiplikation Pending DE102019211829A1 (de)

Priority Applications (6)

Application Number Priority Date Filing Date Title
DE102019211829.1A DE102019211829A1 (de) 2019-08-07 2019-08-07 Recheneinheit, Verfahren und Computerprogramm zur Multiplikation
PCT/EP2020/069872 WO2021023482A1 (de) 2019-08-07 2020-07-14 Recheneinheit, verfahren und computerprogramm zur multiplikation
US17/625,026 US20220291899A1 (en) 2019-08-07 2020-07-14 Processing unit, method and computer program for multiplication
JP2022507493A JP7247418B2 (ja) 2019-08-07 2020-07-14 乗算のための計算ユニット、方法及びコンピュータプログラム
KR1020227007568A KR20220038173A (ko) 2019-08-07 2020-07-14 승산을 위한 계산 유닛, 방법 및 컴퓨터 프로그램
CN202080055729.2A CN114174982A (zh) 2019-08-07 2020-07-14 用于乘法的计算单元、方法和计算机程序

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102019211829.1A DE102019211829A1 (de) 2019-08-07 2019-08-07 Recheneinheit, Verfahren und Computerprogramm zur Multiplikation

Publications (1)

Publication Number Publication Date
DE102019211829A1 true DE102019211829A1 (de) 2021-02-11

Family

ID=71670229

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019211829.1A Pending DE102019211829A1 (de) 2019-08-07 2019-08-07 Recheneinheit, Verfahren und Computerprogramm zur Multiplikation

Country Status (6)

Country Link
US (1) US20220291899A1 (de)
JP (1) JP7247418B2 (de)
KR (1) KR20220038173A (de)
CN (1) CN114174982A (de)
DE (1) DE102019211829A1 (de)
WO (1) WO2021023482A1 (de)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864529A (en) * 1986-10-09 1989-09-05 North American Philips Corporation Fast multiplier architecture
EP3396535A1 (de) * 2017-04-24 2018-10-31 INTEL Corporation Berechnung von optimierungen für neuronale netzwerke

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864529A (en) * 1986-10-09 1989-09-05 North American Philips Corporation Fast multiplier architecture
EP3396535A1 (de) * 2017-04-24 2018-10-31 INTEL Corporation Berechnung von optimierungen für neuronale netzwerke

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Tang, C. Z. et al.: Multilayer Feedforward Neural Networks with Single Powers-of-Two Weights. In: IEEE Transactions on Signal Processing, vol. 41, no. 8, pp. 2724 – 2727, Aug. 1993 *
Wallace, C. S.: A Suggestion for a Fast Multiplier. In: IEEE Transactions on Electronic Computers, vol. EC-13, no. 1, pp. 14 - 17, Feb. 1964 *

Also Published As

Publication number Publication date
KR20220038173A (ko) 2022-03-25
WO2021023482A1 (de) 2021-02-11
CN114174982A (zh) 2022-03-11
US20220291899A1 (en) 2022-09-15
JP2022544132A (ja) 2022-10-17
JP7247418B2 (ja) 2023-03-28

Similar Documents

Publication Publication Date Title
DE112019000336T5 (de) Massiv parallele neuronale inferenz-datenverarbeitungselemente
DE112016002296T5 (de) Vektor-recheneinheit in einem neuronalen netzwerkprozessor
DE102017121257A1 (de) Ausführen von Mittelwert-Poolbildung in Hardware
DE68924477T2 (de) Gleitkommaeinheit mit gleichzeitiger Multiplikation und Addition.
DE112016002292T5 (de) Stapel-verarbeitung in einem neuronalen netzwerkprozessor
DE102013213397A1 (de) Verfahren und Vorrichtung zum Bereitstellen von Stützstellendaten für ein datenbasiertes Funktionsmodell
WO2018158043A1 (de) Neuronalnetzsystem
DE69925123T2 (de) Datenberechnungvorrichtung
DE10013068C2 (de) Potenzierungsoperationsvorrichtung
DE2417932A1 (de) Verfahren und vorrichtung zum gewinnen der zyklischen codegruppe einer binaeren nachricht
EP1499954B1 (de) Berechnung eines ergebnisses einer modularen multiplikation
DE102014225039A1 (de) Verfahren und Vorrichtung zum Bereitstellen von spärlichen Gauß-Prozess-Modellen zur Berechnung in einem Motorsteuergerät
DE4019646C2 (de) Vorrichtung und Verfahren zum Multiplizieren von Datenwörtern in Zweier-Komplement-Darstellung
DE102018200534A1 (de) Verfahren zum Betreiben eines künstlichen neuronalen Netzes
DE102019211829A1 (de) Recheneinheit, Verfahren und Computerprogramm zur Multiplikation
DE102013209657A1 (de) FMA-Einheit, insbesondere zur Verwendung in einer Modellberechnungseinheit zur rein hardwarebasierten Berechnung von Funktionsmodellen
DE3786072T2 (de) Fliesskomma-arithmetisches Gerät.
EP3811199B1 (de) Recheneinheit, verfahren und computerprogramm zum multiplizieren zumindest zweier multiplikanden
DE102013212840A1 (de) Modellberechnungseinheit und Steuergerät zur Berechnung eines datenbasierten Funktionsmodells mit Daten in verschiedenen Zahlenformaten
EP0537205B1 (de) Anordnung zur emulation neuronaler netze und verfahren zu ihrem betrieb
DE10050589B4 (de) Vorrichtung und Verfahren zur Verwendung beim Durchführen einer Gleitkomma-Multiplizier-Akkumulier-Operation
DE2432979C3 (de) Mit gemischter Zahlendarstellung arbeitende Einrichtung zum Multiplizieren zweier komplexer Zahlen und Addieren einer dritten komplexen Zahl zum Produkt
WO2023237205A1 (de) Computer-implementiertes verfahren und system zur anomalie-erkennung beim betrieb eines technischen geräts
DE3246872C2 (de)
DE102020205847A1 (de) Vorrichtung und computerimplementiertes Verfahren zum Trainieren eines künstlichen neuronalen Netzwerks

Legal Events

Date Code Title Description
R163 Identified publications notified
R012 Request for examination validly filed