WO2025006953A1 - Computationally efficiently discretizing floating point numbers - Google Patents

Computationally efficiently discretizing floating point numbers Download PDF

Info

Publication number
WO2025006953A1
WO2025006953A1 PCT/US2024/036113 US2024036113W WO2025006953A1 WO 2025006953 A1 WO2025006953 A1 WO 2025006953A1 US 2024036113 W US2024036113 W US 2024036113W WO 2025006953 A1 WO2025006953 A1 WO 2025006953A1
Authority
WO
WIPO (PCT)
Prior art keywords
floating point
value
exponent
discretized
mantissa
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.)
Ceased
Application number
PCT/US2024/036113
Other languages
French (fr)
Inventor
Lennart BAMBERG
Arash POURTAHERIAN
Luc Johannes Wilhelmus Waeijen
Orlando Miguel Pires Dos Reis Moreira
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.)
Snap Inc
Original Assignee
Snap Inc
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 Snap Inc filed Critical Snap Inc
Priority to KR1020267002483A priority Critical patent/KR20260028106A/en
Priority to CN202480042416.1A priority patent/CN121420280A/en
Priority to EP24745576.9A priority patent/EP4735992A1/en
Publication of WO2025006953A1 publication Critical patent/WO2025006953A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]

Definitions

  • the present disclosure pertains to a computation engine for discretizing floating point numbers.
  • the present disclosure further pertains to a computing device configured to perform neural network operations of a neural network.
  • the present disclosure still further pertains to a computation method for discretizing floating point numbers.
  • the present disclosure also pertains to a neural network method configured to perform neural network operations of a neural network, therewith using the computation method.
  • An exemplary application is neural network computing.
  • developments in neural network technology rather tend to result in more and more complex neural networks with more layers and more neural network operations to be performed.
  • a computation engine for discretizing floating point numbers is provided herein.
  • a computing device comprising a computation engine for performing a discretization operations for the purpose of neural network processing.
  • the present disclosure further pertains to a tangible or non-transitory computer-readable medium having computer-executable instructions stored thereon that, when executed by a processor, perform the computation method.
  • a computation method for discretizing floating point numbers for the purpose of neural network operations is provided herein.
  • the present disclosure further pertains to a tangible or non-transitory computer-readable medium having computer-executable instructions stored thereon that, when executed by a processor, perform the neural network method.
  • the computation engine comprises a discretizing unit for discretizing a floating point number in order to provide a discretized floating point number.
  • Floating point numbers comprise an exponent component with a first number of bits and a mantissa component with a second number of bits.
  • Optionally floating point numbers also have a sign bit.
  • the exponent component has an exponent value and the mantissa component has a mantissa value.
  • the floating point number to be discretized has a value equal to a product of the mantissa value and the value 2 raised to the exponent value.
  • a sign bit if included indicates whether the floating point number has a positive or a negative value.
  • the FP16 format is very useful. Numbers specified in this format subsequently have a sign bit, 5 exponent bits and 10 mantissa bits, however other formats maybe useful as well depending on accuracy requirements and availability of computational resources.
  • the inventors recognized that a substantial computational effort is involved in the discretization of a floating-point number with respect to a predefined level in the hardware. Conventionally this requires a floating-point division operation and multiplication operation.
  • the overall operation of discretization of a floating-point number X with respect to a floating-point positive number Y, referred to as discretization level, can be formulated as:
  • the conventional way of discretization also substantially contributes to a latency in operation of the neural network.
  • the computation engine comprises a discretizing unit that performs this operation in a computationally efficient way. For this purpose, it is configured to: a) compute a difference exponent value of the discretized floating point number by subtracting a reference exponent value from the exponent value (VEX) of the floating point number to be discretized; b) output a value 0 as the discretized floating point value of the discretized floating point number if the difference exponent value is less than 0; c) if the difference exponent value is greater than or equal to 0 output a value of the discretized floating point number having an exponent component equal to the difference exponent value and having a mantissa component of which the n most significant bits are equal to the n most significant bits of the floating point number to be discretized, where the value of n is equal to the difference exponent value.
  • the discretizing unit in the computation engine merely needs to perform simple arithmetic and logical operations. These comprise a subtraction a) to compute the difference exponent value, a comparison b) to determine whether or not the difference exponent value is at least 0. In case it is determined by the comparison that the difference exponent value is at least 0, a discretized mantissa component is obtained of which the n most significant bits are equal to the n most significant bits of the floating point number to be discretized. The value of n is equal to the difference exponent value. All operations involved can be performed with low computational costs. In an embodiment the computation unit is configured to set to 0 any bits of the mantissa of the discretized floating point number other than the most significant bits.
  • the computation result can be very efficiently encoded for storage or transmission.
  • the other bits are referred to as don’t care bits or be assigned arbitrary binary values.
  • the exponent value of the output result indicates that only the A recipient of the output result knows that the n most significant bits are relevant, wherein the number n is equal to the difference exponent value.
  • the floating point number X to be discretized is specified in the FP16 number format.
  • This number format provides a large dynamic range and provides for an accuracy that is suitable for may applications, such as neural network applications.
  • the computing device is configured to perform neural network operations of a neural network, comprises a computation engine as specified above.
  • the computation engine therein is configured to perform the efficient discretization operations to floating point data to be exchanged between neurons in the neural network.
  • the computation method comprises: a) computing an exponent difference value as the difference between the value of the exponent component of the floating point number to be discretized and a reference exponent component value; b) outputting a value 0 for the discretized floating point number if the exponent difference value is less than 0; c) if the difference exponent value is greater than or equal to 0 outputting a value of the discretized floating point number having an exponent component equal to the difference exponent value and having a mantissa component of which the n most significant bits are equal to the n most significant bits of the floating point number to be discretized, where the value of n is equal to the difference exponent value.
  • An embodiment of the method comprises setting to 0 any bits other than the most significant bits of the mantissa of the discretized floating point number to 0.
  • the floating point number to be discretized is specified in the FP16 number format.
  • the method according to the fourth aspect of performing neural network operations of a neural network comprises performing the method to discretize floating point data to be exchanged between neurons in the neural network.
  • FIG. 1 schematically shows an exemplary data processing device
  • FIG. 2 shows an exemplary neural network to be implemented by the data processing device
  • FIG. 3 shows an embodiment of a computation engine
  • FIG. 4 shows an embodiment of a computation method.
  • FIG. 1 schematically shows a data processing device 1 comprising a plurality of computation engines 100, and further computational facilities 200, 300 that communicatively coupled to each other by a message exchange network 20 having a node 21 for each of the computation engines 100, and the further computational facilities 200, 300.
  • Links 22 are provided to pass messages between neighboring nodes in the network grid.
  • the plurality of computation engines 100 each have a proper storage location in the processing system for storing a state and having a respective system element identifier that identifies the data processing system element within the data processing device.
  • the further computational facilities 200, 300 typically have a proper storage location.
  • the data processing device further has an input facility 50 to receive input data from an external source.
  • a mapping facility 60 provided in this example provides for an efficient routing of arrays of data. More details are provided in international patent application PCT/EP2020/061492, published as W02020/216921, which is incorporated herein by reference in its entirety.
  • a data processing device 1 as shown in FIG. 1 is particularly suitable for implementation of a neural network.
  • An exemplary neural network is illustrated in FIG. 2.
  • the exemplary neural network of FIG. 2 comprises a plurality of mutually succeeding neural network processor layers.
  • the neural network processor comprises a total of 10 layers, including 4 fully connected layers FC1, FC2, FC3, FC4 and 5 convolutional layers CV1, CV2, CV3, CV4, CV5.
  • RGB data from an input plane PL with a resolution of 66x200 pixels is normalized in normalization unit NM.
  • a conversion unit EG is provided to convert normalized data from to localized event data, such that an event-message E(t,x,y) for a pixel with coordinates x,y is provided at point in time t to the first convolutional layer CV1 if an event decision function indicates that a significant change occurred for said pixel.
  • an event-message E(t,x,y) for a pixel with coordinates x,y is provided at point in time t to the first convolutional layer CV1 if an event decision function indicates that a significant change occurred for said pixel.
  • This may for example be the case if a sum of absolute differences for the color coordinates (R,G,B) in a corresponding color plane exceeds a threshold value.
  • More details are provided in international patent application PCT/EP2020/086846, published as W02020/216921, and in United States Patent Application Publication No. US2023/0035620, each of which is incorporated herein by reference in its entirety.
  • the neural network of FIG. 2 which is configured to be trained to provide vehicle control data, is merely provided as an example.
  • Various other neural network architectures are known as such for various other applications like audio signal processing, image segmentation (typically to be performed by a U-Net architecture) and for correlating signals. Whereas in the example of FIG. 2 a conversion to event data takes place, this is not mandatory.
  • n computing, half precision (sometimes called FP16 or float 16) is a binary floating-point computer number format that occupies 16 bits (two bytes in modern computers) in computer memory. It is intended for storage of floatingpoint values in applications where higher precision is not essential, in particular image processing and neural networks.
  • FIG. 3 schematically shows a discretization unit in an exemplary embodiment of a computation engine as disclosed herein.
  • the discretizing unit discretizes a floating point number X with respect to a floating-point positive number Y in a computationally efficient manner.
  • the floating-point positive number Y is referred to as discretization level so as to provide the discretized floating point number.
  • the floating point number X to be discretized has an exponent component EX with a first number e of bits and a mantissa component MX with a second number m of bits.
  • the floating point number X has a value Vx determined as follows:
  • V x 2 VEX * V MX wherein VEX is the exponent value and VMX is the mantissa value. Further the floating point number may have a sign (+/-), for example determined by a sign-bit SX, such that:
  • VEX and VMX are determined by a further convention.
  • the exponent value VEX is directly determined by the integer value of the exponent component.
  • the exponent component 00001 corresponds to a decimal value 1
  • the exponent component 00101 corresponds to the decimal value 5.
  • the mantissa component may for example express a fraction O.rn m -i, rn m -2,...,mo, wherein m m -i, m m -2,...,mo, are the m mantissa bits in an order from most significant to least significant.
  • the exponent value VE is the integer value of the exponent component minus a second integer value.
  • the exponent value VE is the integer value of the exponent component minus the value 15.
  • the mantissa value therein is equal to l.m m -i, m m -2,...,mo. I.e, a value 1 is added to the value of the fraction specified by the mantissa bits m m -i, m m -2,...,mo.
  • the exponent value subtraction module EVS also determines a mask size MSXY as:
  • a mantissa computation unit MCU provides a discretized mantissa component MD of which the SRXY most significant bits are identical to the SRXY most significant bits taken from the mantissa component MX of the floating point number X to be discretized.
  • the MSXY least significant bits of the discretized mantissa component MD are set to 0.
  • the discretized floating point number is defined by its exponent component being equal to the exponent difference value VEA (unless the exponent difference value VEA ⁇ 0, in which case the exponent component is 0), and the discretized mantissa component MD provided by the mantissa computation unit, and optionally a sign bit corresponding to the sign bit SX of the floating point number X to be discretized provided at its input as illustrated by the dashed line.
  • the discretizing unit is configured to provide at its output the discretized floating point number value 0 if the exponent difference value VEA ⁇ 0.
  • the method is now further elucidated for a number of examples, with reference to the FIG. 4.
  • the floating point number X to be discretized is provided in the FP16 format.
  • VFPIG of a number in the FP16 representation is determined by.
  • the mantissa value Vmnt is the value represented by the value 1+the value of the fraction expressed by the mantissa.
  • the value X is less than the reference value Y.
  • X has the value 0 01101 0101010101 in FP16 notation which approximates the decimal fraction 1/3.
  • the value X is in a range between 1 and 2 times the reference value Y.
  • the exponent difference value VEA being the difference of the decimal value Vx of the exponent component EX of X and the decimal value Vy of the reference exponent is equal to 0.
  • step S4 the exponent difference value VEA (0 for this case) is subtracted from the number m (here 10), i.e. the number of mantissa bits to obtain a difference value PI-VEA.
  • the difference value therewith is equal to the number m.
  • step S5 it is determined in step S5 that the difference value m-Sx,y is greater than 0, it is subsequently determined in step S51 that the mask size MSX,Y is equal to that difference value m-Sx,Y., which is 10 in this example.
  • step S6 a discretized mantissa component MD by concatenation of a most significant bit portion and a least significant bit portion.
  • the most significant bit portion corresponds to a third number of most significant bits of the mantissa component of the input value.
  • the third number is equal to the exponent difference value VEA , which is 0 in this case.
  • the least significant bit portion comprises a fourth number of zeros.
  • the fourth number is equal to the mask size MSXY, which in this example is equal to the number of mantissa bits (10) of the input value.
  • the value of the exponent component of the discretized floating point number is obtained by subtracting the reference exponent value from the exponent value of the floating point number to be discretized X. This corresponds to the unmasked bit value SX,Y, which is 0 in this case. This is expressed by the binary number 01111 in the exponent component.
  • the discretized mantissa has number of 10 zero’s in this case, so that the mantissa value is 1.0.
  • the computed discretized floating point value comprises the exponent component having decimal value 0 and a mantissa component with value 1, so that the discretized floating point value that is outputted in step S7 equals 1.
  • the exponent difference value VEA being the difference of the decimal value of the exponent component EX of X and the decimal value of the exponent component of the reference is equal to 1.
  • the difference value therewith is equal to the number m-1 (9 in this case).
  • step S5 it is determined that the difference value m- VEA is greater than 0, it is determined in step S51 that the mask size MS Y is equal to that difference value m-SRxy., which is 9 in this example.
  • step S6 a discretized mantissa component MD by concatenation of a most significant bit portion and a least significant bit portion.
  • the most significant bit portion corresponds to a third number of most significant bits of the mantissa component of the input value.
  • the third number is equal to the exponent difference value VEA, which is 1 in this case.
  • the least significant bit portion comprises a fourth number of zeros.
  • the fourth number is equal to the mask size MSXY, which in this example is equal to the number of mantissa bits reduced by 1 of the input value.
  • the mantissa component of the discretized floating point number comprises the most significant bit MSB (0) of the mantissa component EM of the input value X and a number of 9 zeros.
  • the value of the exponent component of the discretized floating point number is obtained by subtracting the reference exponent value from the exponent value of the floating point number to be discretized X. This corresponds to the exponent difference value VEA, which is 1 in this case. This is expressed by the binary number 10000 in the exponent component.
  • the discretized mantissa has a number of 10 zero’s in this case, so that the mantissa value is 1.0.
  • the computed discretized floating point value comprises the exponent component having a decimal value 1 and a mantissa with value 0, so that the discretized floating point value that is outputted in step S7 equals 2.
  • the value X is in a range between 7 and 8 times the reference value Y.
  • the exponent difference value VEA being the difference of the decimal value of the exponent component of X and the decimal value of the exponent component of the reference is equal to 2.
  • the difference value therewith is equal to the number m-2 (8 in this case).
  • step S5 it is determined (step S5) that the difference value m- VEA is greater than 0, it is determined in step S51 that the mask size MS Y is equal to that difference value m- VEA, which is 8 in this example.
  • the method proceeds now with computing in step S6 a discretized mantissa component MD by concatenation of a most significant bit portion and a least significant bit portion.
  • the most significant bit portion corresponds to a third number of most significant bits of the mantissa component of the input value.
  • the third number is equal to the exponent difference value VEA, which is 2 in this case.
  • the least significant bit portion comprises a fourth number of zeros.
  • the fourth number is equal to the mask size MSXY, which in this example is equal to the number of mantissa bits reduced by 2 of the input value, i.e. a mask of 8 zero’s.
  • the mantissa component of the discretized floating point number comprises the two most significant bits MSB (11) of the mantissa component MX of the input value X and a number of 8 zeros.
  • the two most significant bits of the mantissa component of the number X to be discretized are 11 so that the mantissa value is 1.11 (binary) corresponding decimal value 1.75.
  • the computed discretized floating point value comprises the exponent component having decimal value 2 and a mantissa with value 1.75, so that the discretized floating point value that is outputted in step S7 equals 7.
  • the floating point number X has a value greater than or equal to the value of 1024Y.
  • the exponent difference value VEA being the difference of the decimal value of the exponent component EX of X and the decimal value of the exponent component of the reference is greater than or equal to 10.
  • step S4 the exponent difference value VEA (VEA > 10 for this case) is subtracted from the second number mx(10) therewith obtaining the difference value ⁇ 0.
  • step S5 the difference value m- VEA is not greater than 0
  • step S52 the mask size MSXY is equal to 0 in this example.
  • step S6 a discretized mantissa component MD by concatenation of a most significant bit portion and a least significant bit portion.
  • the most significant bit portion corresponds to a third number of most significant bits of the mantissa component of the input value.
  • the third number is equal to the exponent difference value VEA but not exceeding the number of bits that is actually available.
  • the least significant bit portion comprises a fourth number of zeros.
  • the fourth number is equal to the mask size MSX Y, which in this example is equal to 0.
  • the mantissa component of the discretized floating point number is equal to the mantissa component MX of the floating point number X to be discretized.
  • Table 1 shows the comparison of realizing this operation in floating-point with standard instructions for a 32nm processor against the discretization method according to examples in the present disclosure in terms of energy and latency.
  • the method of the present disclosure can result in a significant improvement.
  • the method provides for a substantial reduction of the latency of a neural network as a whole.

Landscapes

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

Abstract

A computation engine includes a discretizing unit for transforming a floating point number (X) with an exponent having a first number of bits (e) and a mantissa with a second number of bits (m). The number (X) is a product of its mantissa value (VMX) and 2 raised to its exponent value (VEX). The unit performs the following: it computes a difference exponent value (VEA) by subtracting a reference exponent value (VEY) from VEX. If VEA is less than 0, the output is 0. If VEA is greater than or equal to 0, it outputs a discretized number with an exponent equal to VEA and a mantissa derived from the n most significant bits of X, where n equals VEA.

Description

COMPUTATIONALLY EFFICIENTLY DISCRETIZING FLOATING POINT NUMBERS
CLAIM OF PRIORITY
This application claims the benefit of priority to European Patent Application Serial No. 23306051.6, filed on June 28, 2023, which is incorporated herein by reference in its entirety.
TECHNICAL FIELD
The present disclosure pertains to a computation engine for discretizing floating point numbers. The present disclosure further pertains to a computing device configured to perform neural network operations of a neural network. The present disclosure still further pertains to a computation method for discretizing floating point numbers. The present disclosure also pertains to a neural network method configured to perform neural network operations of a neural network, therewith using the computation method.
BACKGROUND
For many applications it is desirable to use a floating point format in view of its large value range. An exemplary application is neural network computing. However, developments in neural network technology rather tend to result in more and more complex neural networks with more layers and more neural network operations to be performed. There is a need to mitigate the computational effort involved in these operations to render it possible that also these more complex neural networks can be performed with modest computational means.
SUMMARY According to a first aspect of the present disclosure a computation engine for discretizing floating point numbers is provided herein.
According to a second aspect a computing device comprising a computation engine for performing a discretization operations for the purpose of neural network processing.
According to a third aspect of the present disclosure a computation method for discretizing floating point numbers engine is provided herein.
The present disclosure further pertains to a tangible or non-transitory computer-readable medium having computer-executable instructions stored thereon that, when executed by a processor, perform the computation method.
According to a fourth aspect of the present disclosure a computation method for discretizing floating point numbers for the purpose of neural network operations is provided herein.
The present disclosure further pertains to a tangible or non-transitory computer-readable medium having computer-executable instructions stored thereon that, when executed by a processor, perform the neural network method.
The computation engine according to the first aspect comprises a discretizing unit for discretizing a floating point number in order to provide a discretized floating point number.
Floating point numbers comprise an exponent component with a first number of bits and a mantissa component with a second number of bits. Optionally floating point numbers also have a sign bit.
The exponent component has an exponent value and the mantissa component has a mantissa value. The floating point number to be discretized has a value equal to a product of the mantissa value and the value 2 raised to the exponent value. A sign bit if included indicates whether the floating point number has a positive or a negative value.
For neural network applications the FP16 format is very useful. Numbers specified in this format subsequently have a sign bit, 5 exponent bits and 10 mantissa bits, however other formats maybe useful as well depending on accuracy requirements and availability of computational resources. The inventors recognized that a substantial computational effort is involved in the discretization of a floating-point number with respect to a predefined level in the hardware. Conventionally this requires a floating-point division operation and multiplication operation. The overall operation of discretization of a floating-point number X with respect to a floating-point positive number Y, referred to as discretization level, can be formulated as:
Discretize ( T) — sign(
Figure imgf000005_0001
The conventional way of discretization also substantially contributes to a latency in operation of the neural network.
The computation engine comprises a discretizing unit that performs this operation in a computationally efficient way. For this purpose, it is configured to: a) compute a difference exponent value of the discretized floating point number by subtracting a reference exponent value from the exponent value (VEX) of the floating point number to be discretized; b) output a value 0 as the discretized floating point value of the discretized floating point number if the difference exponent value is less than 0; c) if the difference exponent value is greater than or equal to 0 output a value of the discretized floating point number having an exponent component equal to the difference exponent value and having a mantissa component of which the n most significant bits are equal to the n most significant bits of the floating point number to be discretized, where the value of n is equal to the difference exponent value.
Contrary to conventional solutions the discretizing unit in the computation engine merely needs to perform simple arithmetic and logical operations. These comprise a subtraction a) to compute the difference exponent value, a comparison b) to determine whether or not the difference exponent value is at least 0. In case it is determined by the comparison that the difference exponent value is at least 0, a discretized mantissa component is obtained of which the n most significant bits are equal to the n most significant bits of the floating point number to be discretized. The value of n is equal to the difference exponent value. All operations involved can be performed with low computational costs. In an embodiment the computation unit is configured to set to 0 any bits of the mantissa of the discretized floating point number other than the most significant bits. This has the advantage that the computation result can be very efficiently encoded for storage or transmission. In alternative embodiments the other bits (if any) are referred to as don’t care bits or be assigned arbitrary binary values. The exponent value of the output result indicates that only the A recipient of the output result knows that the n most significant bits are relevant, wherein the number n is equal to the difference exponent value.
In an embodiment of the computation unit the floating point number X to be discretized is specified in the FP16 number format. This number format provides a large dynamic range and provides for an accuracy that is suitable for may applications, such as neural network applications.
The computing device according to the second aspect is configured to perform neural network operations of a neural network, comprises a computation engine as specified above. In an example thereof, the computation engine therein is configured to perform the efficient discretization operations to floating point data to be exchanged between neurons in the neural network.
The computation method according to the third aspect comprises: a) computing an exponent difference value as the difference between the value of the exponent component of the floating point number to be discretized and a reference exponent component value; b) outputting a value 0 for the discretized floating point number if the exponent difference value is less than 0; c) if the difference exponent value is greater than or equal to 0 outputting a value of the discretized floating point number having an exponent component equal to the difference exponent value and having a mantissa component of which the n most significant bits are equal to the n most significant bits of the floating point number to be discretized, where the value of n is equal to the difference exponent value. An embodiment of the method comprises setting to 0 any bits other than the most significant bits of the mantissa of the discretized floating point number to 0.
In an embodiment of the method the floating point number to be discretized is specified in the FP16 number format.
The method according to the fourth aspect of performing neural network operations of a neural network, comprises performing the method to discretize floating point data to be exchanged between neurons in the neural network.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 schematically shows an exemplary data processing device;
FIG. 2 shows an exemplary neural network to be implemented by the data processing device;
FIG. 3 shows an embodiment of a computation engine; and
FIG. 4 shows an embodiment of a computation method.
DETAILED DESCRIPTION OF EMBODIMENTS
FIG. 1 schematically shows a data processing device 1 comprising a plurality of computation engines 100, and further computational facilities 200, 300 that communicatively coupled to each other by a message exchange network 20 having a node 21 for each of the computation engines 100, and the further computational facilities 200, 300. Links 22 are provided to pass messages between neighboring nodes in the network grid. The plurality of computation engines 100, each have a proper storage location in the processing system for storing a state and having a respective system element identifier that identifies the data processing system element within the data processing device. Also the further computational facilities 200, 300 typically have a proper storage location. In the example shown, the data processing device further has an input facility 50 to receive input data from an external source. A mapping facility 60 provided in this example provides for an efficient routing of arrays of data. More details are provided in international patent application PCT/EP2020/061492, published as W02020/216921, which is incorporated herein by reference in its entirety.
A data processing device 1 as shown in FIG. 1 is particularly suitable for implementation of a neural network. An exemplary neural network is illustrated in FIG. 2. The exemplary neural network of FIG. 2 comprises a plurality of mutually succeeding neural network processor layers. In this example the neural network processor comprises a total of 10 layers, including 4 fully connected layers FC1, FC2, FC3, FC4 and 5 convolutional layers CV1, CV2, CV3, CV4, CV5. In this example RGB data from an input plane PL with a resolution of 66x200 pixels is normalized in normalization unit NM. In the example shown, a conversion unit EG is provided to convert normalized data from to localized event data, such that an event-message E(t,x,y) for a pixel with coordinates x,y is provided at point in time t to the first convolutional layer CV1 if an event decision function indicates that a significant change occurred for said pixel. This may for example be the case if a sum of absolute differences for the color coordinates (R,G,B) in a corresponding color plane exceeds a threshold value. More details are provided in international patent application PCT/EP2020/086846, published as W02020/216921, and in United States Patent Application Publication No. US2023/0035620, each of which is incorporated herein by reference in its entirety.
It is noted that the neural network of FIG. 2, which is configured to be trained to provide vehicle control data, is merely provided as an example. Various other neural network architectures are known as such for various other applications like audio signal processing, image segmentation (typically to be performed by a U-Net architecture) and for correlating signals. Whereas in the example of FIG. 2 a conversion to event data takes place, this is not mandatory.
In a computation device as shown in FIG. 1 the computational load involved to perform the neural network operations, for example of the neural network of FIG. 2 or another neural network, is distributed over the computation engines. Nevertheless, it is still desirable to reduce the computation load, to achieve a higher performance with which the neural network can be executed by the computation device, to render it possible to execute the neural network with a simplified computation device or to render it possible to upgrade the computation device for implementing more complex neural networks. n computing, half precision (sometimes called FP16 or float 16) is a binary floating-point computer number format that occupies 16 bits (two bytes in modern computers) in computer memory. It is intended for storage of floatingpoint values in applications where higher precision is not essential, in particular image processing and neural networks.
FIG. 3 schematically shows a discretization unit in an exemplary embodiment of a computation engine as disclosed herein.
The discretizing unit discretizes a floating point number X with respect to a floating-point positive number Y in a computationally efficient manner. The floating-point positive number Y is referred to as discretization level so as to provide the discretized floating point number.
The floating point number X to be discretized has an exponent component EX with a first number e of bits and a mantissa component MX with a second number m of bits.
The floating point number X has a value Vx determined as follows:
Vx = 2VEX * VMX wherein VEX is the exponent value and VMX is the mantissa value. Further the floating point number may have a sign (+/-), for example determined by a sign-bit SX, such that:
Figure imgf000009_0001
The values VEX and VMX are determined by a further convention.
In a straightforward implementation the exponent value VEX is directly determined by the integer value of the exponent component. For example, the exponent component 00001 corresponds to a decimal value 1 and the exponent component 00101 corresponds to the decimal value 5.
The mantissa component may for example express a fraction O.rnm-i, rnm-2,...,mo, wherein mm-i, mm-2,...,mo, are the m mantissa bits in an order from most significant to least significant.
In another implementation the exponent value VE is the integer value of the exponent component minus a second integer value. For example in the FP16 notation the exponent value VE is the integer value of the exponent component minus the value 15. The mantissa value therein is equal to l.mm-i, mm-2,...,mo. I.e, a value 1 is added to the value of the fraction specified by the mantissa bits mm-i, mm-2,...,mo.
In the example shown in FIG. 3, the discretizing unit comprises an exponent value subtraction module EVS that determines an exponent difference value VEA computed as the exponent value VEX of the number X to be discretized minus the exponent value VEY of the exponent component of the discretization level Y. i.e. VEA = VEX - VEY. The exponent value subtraction module EVS also determines a mask size MSXY as:
MSXY = max(m — VE , 0).
And further determines a selection range size SRXY which is complementary to the mask size, i.e.
SRXY = m - MSXY = min (V EA, 0)
If the result exponent difference value VEA is greater than or equal to 0 then a mantissa computation unit MCU provides a discretized mantissa component MD of which the SRXY most significant bits are identical to the SRXY most significant bits taken from the mantissa component MX of the floating point number X to be discretized. In an example, further the MSXY least significant bits of the discretized mantissa component MD are set to 0.
With these operations the discretized floating point number is defined by its exponent component being equal to the exponent difference value VEA (unless the exponent difference value VEA<0, in which case the exponent component is 0), and the discretized mantissa component MD provided by the mantissa computation unit, and optionally a sign bit corresponding to the sign bit SX of the floating point number X to be discretized provided at its input as illustrated by the dashed line.
The discretizing unit is configured to provide at its output the discretized floating point number value 0 if the exponent difference value VEA<0. The method is now further elucidated for a number of examples, with reference to the FIG. 4. In these examples it is presumed that the floating point number X to be discretized, further denoted as input value, is provided in the FP16 format. This format comprises a sign bit, an exponent component EX with a number e =5 of bits and a mantissa component MX specified with a number m = 10 of bits exclusive an implicit most significant bit. The value of this implicit most significant bit is equal to 1 unless the exponent component is equal to 0.
The value VFPIG of a number in the FP16 representation is determined by.
Figure imgf000011_0001
Therein the exponent value Vexp is the value represented by the exponent component reduced by 15.
The mantissa value Vmnt is the value represented by the value 1+the value of the fraction expressed by the mantissa.
This notation, while requiring a modest number of bits allows for a large dynamical range. I.e. the smallest positive normal number therein is expressed as S=0 EXP= 00001 MNT=0000000000, which corresponds to a decimal value of approximately 0.00006103515625. The largest normal number therein is expressed as S=0 EXP= 11110, MNT= 1111111111, which corresponds to a decimal value of 65504. In addition the FP16 notation includes the following special cases. S=0, EXP=00000, MNT = 0000000000 for the value 0. Infinity is designated by S=0, EXP = 11111, MNT = 0000000000 and negative infinity by S = 1, EXP = 11111, MNT = 0000000000. Still further sub-normal numbers in a decimal range between about 0.00006103515625 and 0.000060975552 can be expressed.
Examples are presented for various ratios of X/Y.
For now it is presumed that the value of the reference Y is 1.
This implies that Y is expressed in the FP16 notation as (S=) 0 (EXP=) 01111 (MNT=) 0000000000 Example 1
In a first example the value X is less than the reference value Y.
For example, X has the value 0 01101 0101010101 in FP16 notation which approximates the decimal fraction 1/3.
In this example, the decimal value (Vx) of the exponent component EX of X equals -2, which is less than the decimal value of the reference exponent, i.e. the exponent component of Y, which is 0. Accordingly, in step Si it is determined that the exponent difference value VEA = -2. Accordingly, in step S2 it is determined that the exponent difference value VEA<0. Hence in step S3 it is determined that the discretized floating point value Discretize (X,Y) has a value of 0. In step S7 this value is outputted.
It can be immediately seen that the same result is obtained for other combinations wherein X<Y. In each case the decimal value of the exponent component of X is less than the decimal value of the reference exponent.
Example 2
In a second example the value X is in a range between 1 and 2 times the reference value Y. Suppose for example again that Y = 1, and further that X = 1.5, having the FP16 notation 0 01111 1000000000.
For this case, the exponent difference value VEA , being the difference of the decimal value Vx of the exponent component EX of X and the decimal value Vy of the reference exponent is equal to 0.
Now the method accordingly proceeds with step S4, wherein the exponent difference value VEA (0 for this case) is subtracted from the number m (here 10), i.e. the number of mantissa bits to obtain a difference value PI-VEA. The difference value therewith is equal to the number m. As it is determined in step S5 that the difference value m-Sx,y is greater than 0, it is subsequently determined in step S51 that the mask size MSX,Y is equal to that difference value m-Sx,Y., which is 10 in this example.
The method proceeds now with computing in step S6 a discretized mantissa component MD by concatenation of a most significant bit portion and a least significant bit portion. The most significant bit portion corresponds to a third number of most significant bits of the mantissa component of the input value. The third number is equal to the exponent difference value VEA , which is 0 in this case. The least significant bit portion comprises a fourth number of zeros.
The fourth number is equal to the mask size MSXY, which in this example is equal to the number of mantissa bits (10) of the input value.
The value of the exponent component of the discretized floating point number is obtained by subtracting the reference exponent value from the exponent value of the floating point number to be discretized X. This corresponds to the unmasked bit value SX,Y, which is 0 in this case. This is expressed by the binary number 01111 in the exponent component.
As noted above, the discretized mantissa has number of 10 zero’s in this case, so that the mantissa value is 1.0. Hence, the computed discretized floating point value comprises the exponent component having decimal value 0 and a mantissa component with value 1, so that the discretized floating point value that is outputted in step S7 equals 1.
Again, it is immediately clear that the same result is obtained for other combinations wherein Y<X<2Y. In each of these combinations the decimal value of the exponent component of X is equal to the decimal value of the reference exponent so that the value of the mantissa is 1 (as defined by the 10 zero bits) and the value of the exponent =0 (as defined by the difference of the exponent components).
Example 3 In a third example the value X is in a range between 2 and 3 times the reference value Y. Suppose for example again that Y = 1, and further that X = 2.5, having the FP16 notation 0 1000 0100000000.
For this case, the exponent difference value VEA , being the difference of the decimal value of the exponent component EX of X and the decimal value of the exponent component of the reference is equal to 1.
Now the method accordingly proceeds with step S4, wherein the exponent difference value VEA (VEA = 1 for this case) is subtracted from the second number m (here 10), i.e. the number of mantissa bits to obtain a difference value. The difference value therewith is equal to the number m-1 (9 in this case). As it is determined (step S5) that the difference value m- VEA is greater than 0, it is determined in step S51 that the mask size MS Y is equal to that difference value m-SRxy., which is 9 in this example.
The method proceeds now with computing in step S6 a discretized mantissa component MD by concatenation of a most significant bit portion and a least significant bit portion. The most significant bit portion corresponds to a third number of most significant bits of the mantissa component of the input value. The third number is equal to the exponent difference value VEA, which is 1 in this case. The least significant bit portion comprises a fourth number of zeros. The fourth number is equal to the mask size MSXY, which in this example is equal to the number of mantissa bits reduced by 1 of the input value.
Accordingly, the mantissa component of the discretized floating point number comprises the most significant bit MSB (0) of the mantissa component EM of the input value X and a number of 9 zeros.
The value of the exponent component of the discretized floating point number is obtained by subtracting the reference exponent value from the exponent value of the floating point number to be discretized X. This corresponds to the exponent difference value VEA, which is 1 in this case. This is expressed by the binary number 10000 in the exponent component.
As noted above, the discretized mantissa has a number of 10 zero’s in this case, so that the mantissa value is 1.0. Hence, the computed discretized floating point value comprises the exponent component having a decimal value 1 and a mantissa with value 0, so that the discretized floating point value that is outputted in step S7 equals 2.
Again, the same result is obtained for other combinations wherein 2Y<X<3Y. In each of these combinations the decimal value of the exponent component of X is one higher than the decimal value of the reference exponent so that the value of the mantissa is 1 (as defined by the MSB of 0 followed by 9 further zero’s) and the value of the exponent = 1 (as defined by the difference of the exponent components), so that the discretized floating point value that is outputted in step S7 equals 2.
Example 4
In a fourth example the value X is in a range between 7 and 8 times the reference value Y. Suppose for example again that Y = 1, and further that X = 7.5, having the FP16 notation 0 1001 11100000000.
For this case, the exponent difference value VEA, being the difference of the decimal value of the exponent component of X and the decimal value of the exponent component of the reference is equal to 2.
The method accordingly proceeds with step S4, wherein the exponent difference value VEA, (VEA = 2 for this case) is subtracted from the second number m (here 10), i.e. the number of mantissa bits to obtain a difference value. The difference value therewith is equal to the number m-2 (8 in this case). As it is determined (step S5) that the difference value m- VEA is greater than 0, it is determined in step S51 that the mask size MS Y is equal to that difference value m- VEA, which is 8 in this example.
The method proceeds now with computing in step S6 a discretized mantissa component MD by concatenation of a most significant bit portion and a least significant bit portion. The most significant bit portion corresponds to a third number of most significant bits of the mantissa component of the input value. The third number is equal to the exponent difference value VEA, which is 2 in this case. The least significant bit portion comprises a fourth number of zeros. The fourth number is equal to the mask size MSXY, which in this example is equal to the number of mantissa bits reduced by 2 of the input value, i.e. a mask of 8 zero’s.
Accordingly, the mantissa component of the discretized floating point number comprises the two most significant bits MSB (11) of the mantissa component MX of the input value X and a number of 8 zeros.
As noted above, the two most significant bits of the mantissa component of the number X to be discretized are 11 so that the mantissa value is 1.11 (binary) corresponding decimal value 1.75. Hence, the computed discretized floating point value comprises the exponent component having decimal value 2 and a mantissa with value 1.75, so that the discretized floating point value that is outputted in step S7 equals 7.
Again, the same result is obtained for other combinations wherein 7Y<X<8Y. In each of these combinations the decimal value of the exponent component of X is two higher than the decimal value of the reference exponent so that the value of the mantissa is 1.75 (as defined by the MSBs 11 followed by 8 zero’s) and the value of the exponent = 2 (as defined by the difference of the exponent components), so that the discretized floating point value that is outputted in step S7 equals 7. Fifth example
In a final example, the floating point number X has a value greater than or equal to the value of 1024Y.
For this case, the exponent difference value VEA, being the difference of the decimal value of the exponent component EX of X and the decimal value of the exponent component of the reference is greater than or equal to 10.
The method accordingly proceeds with step S4, wherein the exponent difference value VEA (VEA > 10 for this case) is subtracted from the second number mx(10) therewith obtaining the difference value < 0. As it is determined (step S5) that the difference value m- VEA is not greater than 0, it is determined in step S52 that the mask size MSXY is equal to 0 in this example.
The method proceeds now with computing in step S6 a discretized mantissa component MD by concatenation of a most significant bit portion and a least significant bit portion. The most significant bit portion corresponds to a third number of most significant bits of the mantissa component of the input value. The third number is equal to the exponent difference value VEA but not exceeding the number of bits that is actually available. The least significant bit portion comprises a fourth number of zeros. The fourth number is equal to the mask size MSX Y, which in this example is equal to 0.
Accordingly, in this example the mantissa component of the discretized floating point number is equal to the mantissa component MX of the floating point number X to be discretized.
Again, the same result is obtained for other combinations wherein X > 1024Y. In each of these combinations the decimal value of the exponent component EX of X is at least 10 higher than the decimal value of the exponent component of the reference, so that the mantissa component of the discretized number is identical to the mantissa component MX of the number to be discretized. EXPERIMENTAL RESULTS
Table 1 shows the comparison of realizing this operation in floating-point with standard instructions for a 32nm processor against the discretization method according to examples in the present disclosure in terms of energy and latency.
Figure imgf000018_0001
Clearly the method of the present disclosure can result in a significant improvement. In particular the method provides for a substantial reduction of the latency of a neural network as a whole.

Claims

1. A computation engine comprising a discretizing unit for discretizing a floating point number (X) to provide a discretized floating point number, the floating point number (X) to be discretized having an exponent component with a first number (e) of bits and a mantissa component with a second number (m) of bits, the exponent component having an exponent value and the mantissa component having a mantissa value, the floating point number (X) to be discretized having a value equal to a product of the mantissa value (VMX) and the value 2 raised to the exponent value (VEX), the discretizing unit being configured to: a) compute a difference exponent value (VE ) of the discretized floating point number by subtracting a reference exponent value (VEY) from the exponent value (VEX) of the floating point number to be discretized (X); b) output a value 0 as the discretized floating point value (Discretize(X,Y)) of the discretized floating point number if the difference exponent value (VEA) is less than 0; c) if the difference exponent value (VEA) is greater than or equal to 0 output a value of the discretized floating point number having an exponent component equal to the difference exponent value (VEA) and having a mantissa component of which the n most significant bits are equal to the n most significant bits of the floating point number (X) to be discretized, where the value of n is equal to the difference exponent value (VEA).
2. The computation engine according to claim 1, configured to set to 0 any bits of the mantissa of the discretized floating point number other than the most significant bits.
3. The computation engine according to claim 1, wherein the floating point number (X) to be discretized is specified in the FP16 number format.
4. The computation engine according to claim 2, wherein the floating point number (X) to be discretized is specified in the FP16 number format.
5. A computing device configured to perform neural network operations of a neural network, the computing device comprising a computation engine according to claim 1, the computation engine being configured to apply a discretization operation to floating point data selected from the group consisting of: floating point data to be exchanged between neurons in the neural network; floating point data representing neuron states; floating point data of a feature map.
6. The computation device according to claim 5, wherein the floating point number (X) to be discretized is specified in the FP16 number format.
7. A computing device configured to perform neural network operations of a neural network, the computing device comprising a computation engine according to claim 2, the computation engine being configured to apply a discretization operation to floating point data selected from the group consisting of: floating point data to be exchanged between neurons in the neural network; floating point data representing neuron states; floating point data of a feature map.
8. A computing device configured to perform neural network operations of a neural network, the computing device comprising a computation engine according to claim 4, the computation engine being configured to apply a discretization operation to floating point data selected from the group consisting of: floating point data to be exchanged between neurons in the neural network; floating point data representing neuron states; floating point data of a feature map.
9. A method to be performed by a computation engine for discretizing a floating point number (X) having a mantissa component with a first number (m) of bits and an exponent component with a second number (e) of bits, the exponent component having an exponent value and the mantissa component having a mantissa value, the floating point number (X) to be discretized having a value equal to a product of the mantissa value (VMX) and the value 2 raised to the exponent value (VEX), the method comprising: a) computing (Si) an exponent difference value (SEA,) as the difference between the value (VEX) of the exponent component of the floating point number to be discretized (X) and a reference exponent component value (VEY); b) outputting a value 0 for the discretized floating point number (Discretize(X,Y)) if the exponent difference value (SEA,) is less than 0; c) if the difference exponent value (VE ) is greater than or equal to 0 outputting a value of the discretized floating point number having an exponent component equal to the difference exponent value (VEA) and having a mantissa component of which the n most significant bits are equal to the n most significant bits of the floating point number (X) to be discretized, where the value of n is equal to the difference exponent value (VEA).
10. The method according to claim 9, comprising setting to 0 any bits other than the most significant bits of the mantissa of the discretized floating point number to 0.
11. The method according to claim 9, wherein the floating point number (X) to be discretized is specified in the FP16 number format.
12. The method according to claim 10, wherein the floating point number (X) to be discretized is specified in the FP16 number format.
13. A method of performing neural network operations of a neural network, according to claim 9, comprising discretizing floating point data selected from the group consisting of: floating point data to be exchanged between neurons in the neural network; floating point data representing neuron states; floating point data of a feature map.
14. A method of performing neural network operations of a neural network, according to claim 10, comprising discretizing floating point data selected from the group consisting of: floating point data to be exchanged between neurons in the neural network; floating point data representing neuron states; floating point data of a feature map.
15. A method of performing neural network operations of a neural network, according to claim 11, comprising discretizing floating point data selected from the group consisting of: floating point data to be exchanged between neurons in the neural network; floating point data representing neuron states; floating point data of a feature map.
16. A method of performing neural network operations of a neural network, according to claim 12, comprising discretizing floating point data selected from the group consisting of: floating point data to be exchanged between neurons in the neural network; floating point data representing neuron states; floating point data of a feature map.
17. A tangible computer-readable medium having computer-executable instructions stored thereon that, when executed by a processor, perform a method for discretizing a floating point number (X), wherein the floating point number (X) includes a mantissa component having a first number (m) of bits and an exponent component having a second number (e) of bits, the exponent component having an exponent value and the mantissa component having a mantissa value, the floating point number (X) to be discretized having a value equal to a product of the mantissa value (VMX) and the value 2 raised to the exponent value (VEX), the method comprising: a) computing (Si) an exponent difference value (SEA,) as the difference between the value (VEX) of the exponent component of the floating point number to be discretized (X) and a reference exponent component value (VEY); b) outputting a value 0 for the discretized floating point number (Discretize(X,Y)) if the exponent difference value (SEA,) is less than 0; c) if the difference exponent value (VE ) is greater than or equal to 0 outputting a value of the discretized floating point number having an exponent component equal to the difference exponent value (VEA) and having a mantissa component of which the n most significant bits are equal to the n most significant bits of the floating point number (X) to be discretized, where the value of n is equal to the difference exponent value (VEA).
18. The tangible computer-readable medium according to claim 17, wherein the method to be executed by the processor comprises setting to 0 any bits other than the most significant bits of the mantissa of the discretized floating point number to 0.
19. The tangible computer-readable medium according to claim 17, wherein the floating point number (X) to be discretized is specified in the FP16 number format.
20. The tangible computer-readable medium according to claim 17, wherein the method to be executed by the processor comprises discretizing floating point data selected from the group consisting of: floating point data to be exchanged between neurons in the neural network; floating point data representing neuron states; floating point data of a feature map.
PCT/US2024/036113 2023-06-28 2024-06-28 Computationally efficiently discretizing floating point numbers Ceased WO2025006953A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020267002483A KR20260028106A (en) 2023-06-28 2024-06-28 Computationally efficient discretization of floating-point numbers
CN202480042416.1A CN121420280A (en) 2023-06-28 2024-06-28 Computing efficient discretization of floating-point numbers
EP24745576.9A EP4735992A1 (en) 2023-06-28 2024-06-28 Computationally efficiently discretizing floating point numbers

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP23306051.6A EP4485168A1 (en) 2023-06-28 2023-06-28 Computationally efficiently discretizing floating point numbers
EP23306051.6 2023-06-28

Publications (1)

Publication Number Publication Date
WO2025006953A1 true WO2025006953A1 (en) 2025-01-02

Family

ID=87863334

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2024/036113 Ceased WO2025006953A1 (en) 2023-06-28 2024-06-28 Computationally efficiently discretizing floating point numbers

Country Status (4)

Country Link
EP (2) EP4485168A1 (en)
KR (1) KR20260028106A (en)
CN (1) CN121420280A (en)
WO (1) WO2025006953A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130007076A1 (en) * 2011-06-30 2013-01-03 Samplify Systems, Inc. Computationally efficient compression of floating-point data
US20190122100A1 (en) * 2017-10-19 2019-04-25 Samsung Electronics Co., Ltd. Method and apparatus with neural network parameter quantization
US20200201602A1 (en) * 2018-12-21 2020-06-25 Graphcore Limited Converting floating point numbers to reduce the precision
WO2020216921A1 (en) 2019-04-25 2020-10-29 Grai Matter Labs S.A.S. Data processing system and data processing method
US20230035620A1 (en) 2019-12-17 2023-02-02 Grai Matter Labs S.A.S. Neural network processor and method of neural network processing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130007076A1 (en) * 2011-06-30 2013-01-03 Samplify Systems, Inc. Computationally efficient compression of floating-point data
US20190122100A1 (en) * 2017-10-19 2019-04-25 Samsung Electronics Co., Ltd. Method and apparatus with neural network parameter quantization
US20200201602A1 (en) * 2018-12-21 2020-06-25 Graphcore Limited Converting floating point numbers to reduce the precision
WO2020216921A1 (en) 2019-04-25 2020-10-29 Grai Matter Labs S.A.S. Data processing system and data processing method
US20230035620A1 (en) 2019-12-17 2023-02-02 Grai Matter Labs S.A.S. Neural network processor and method of neural network processing

Also Published As

Publication number Publication date
EP4485168A1 (en) 2025-01-01
CN121420280A (en) 2026-01-27
KR20260028106A (en) 2026-03-03
EP4735992A1 (en) 2026-05-06

Similar Documents

Publication Publication Date Title
US20220350567A1 (en) Arithmetic logic unit, floating-point number multiplication calculation method, and device
US9639326B2 (en) Floating-point adder circuitry
US9170773B2 (en) Mixed precision estimate instruction computing narrow precision result for wide precision inputs
US20210349692A1 (en) Multiplier and multiplication method
CN112130804B (en) Fused multiply-add operator with correctly rounded mixed precision floating point numbers
CN117891430B (en) Floating point multiplication and addition structure applied to FPGA embedded DSP
CN101149674A (en) Performing rounding operations in response to instructions
CN112889024B (en) Optimizing Neural Networks Using Hardware Computational Efficiency and Tuning Factors
JPH0474743B2 (en)
US11106431B2 (en) Apparatus and method of fast floating-point adder tree for neural networks
US20200133633A1 (en) Arithmetic processing apparatus and controlling method therefor
US20220050665A1 (en) Method and system for processing floating point numbers
WO2022164678A1 (en) Digital circuitry for normalization functions
WO2025006953A1 (en) Computationally efficiently discretizing floating point numbers
CN108153513B (en) Leading zero prediction
CN110069240A (en) Fixed point and floating data calculation method and device
US7831652B2 (en) Floating point multiplier with embedded status information
JP7304295B2 (en) Arithmetic unit, recognition unit and control unit
US7363337B2 (en) Floating point divider with embedded status information
CN117667008B (en) A decimal rounding method, system, circuit and computer device
CN118732990A (en) A Design Method of Fixed-Point and Floating-Point Adder
CN112732223B (en) Semi-precision floating point divider data processing method and system
CN119272811A (en) A hardware-based method for calculating the PReLU activated convolution operator
JP2801472B2 (en) Floating point arithmetic unit
Shaikh et al. IEEE 754-Based Single-and Double-Precision Floating-Point Multiplier Analysis

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 24745576

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 1020267002483

Country of ref document: KR

Free format text: ST27 STATUS EVENT CODE: A-0-1-A10-A15-NAP-PA0105 (AS PROVIDED BY THE NATIONAL OFFICE)

WWE Wipo information: entry into national phase

Ref document number: 1020267002483

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 2024745576

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2024745576

Country of ref document: EP

Effective date: 20260128

ENP Entry into the national phase

Ref document number: 2024745576

Country of ref document: EP

Effective date: 20260128

WWP Wipo information: published in national office

Ref document number: 1020267002483

Country of ref document: KR