Computationally efficiently discretizing floating point numbers

EP4735992A1Pending Publication Date: 2026-05-06SNAP INC
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
EP · EP
Patent Type
Applications
Current Assignee / Owner
SNAP INC
Filing Date
2024-06-28
Publication Date
2026-05-06

AI Technical Summary

Technical Problem

The computational effort involved in discretizing floating-point numbers for neural network operations is substantial, leading to latency issues, especially in complex neural networks, due to the need for floating-point division and multiplication operations.

Method used

A computation engine with a discretizing unit that computes a difference exponent value and outputs a discretized floating-point number by retaining only the most significant bits of the mantissa component, reducing the computational complexity to simple arithmetic and logical operations.

Benefits of technology

This approach significantly reduces the computational latency and resource requirements, enabling efficient discretization of floating-point numbers, particularly in neural network operations, and allows for efficient encoding and storage of results.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure US2024036113_02012025_PF_FP_ABST
    Figure US2024036113_02012025_PF_FP_ABST
Patent Text Reader

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.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] COMPUTATIONALLY EFFICIENTLY DISCRETIZING FLOATING POINT NUMBERS

[0002] CLAIM OF PRIORITY

[0003] 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.

[0004] TECHNICAL FIELD

[0005] 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.

[0006] BACKGROUND

[0007] 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.

[0008] SUMMARY According to a first aspect of the present disclosure a computation engine for discretizing floating point numbers is provided herein.

[0009] According to a second aspect a computing device comprising a computation engine for performing a discretization operations for the purpose of neural network processing.

[0010] According to a third aspect of the present disclosure a computation method for discretizing floating point numbers engine is provided herein.

[0011] 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.

[0012] 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.

[0013] 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.

[0014] 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.

[0015] 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.

[0016] 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.

[0017] 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:

[0018] Discretize ( T) — sign(

[0019] The conventional way of discretization also substantially contributes to a latency in operation of the neural network.

[0020] 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.

[0021] 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.

[0022] 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.

[0023] 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.

[0024] 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.

[0025] In an embodiment of the method the floating point number to be discretized is specified in the FP16 number format.

[0026] 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.

[0027] BRIEF DESCRIPTION OF THE DRAWINGS

[0028] FIG. 1 schematically shows an exemplary data processing device;

[0029] FIG. 2 shows an exemplary neural network to be implemented by the data processing device;

[0030] FIG. 3 shows an embodiment of a computation engine; and

[0031] FIG. 4 shows an embodiment of a computation method.

[0032] DETAILED DESCRIPTION OF EMBODIMENTS

[0033] 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.

[0034] 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.

[0035] 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.

[0036] 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.

[0037] FIG. 3 schematically shows a discretization unit in an exemplary embodiment of a computation engine as disclosed herein.

[0038] 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.

[0039] 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.

[0040] The floating point number X has a value Vx determined as follows:

[0041] Vx= 2VEX* VMXwherein 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:

[0042] The values VEX and VMX are determined by a further convention.

[0043] 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.

[0044] 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.

[0045] 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.

[0046] 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:

[0047] MSXY= max(m — VE, 0).

[0048] And further determines a selection range size SRXY which is complementary to the mask size, i.e.

[0049] SRXY = m - MSXY = min (V EA, 0)

[0050] 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.

[0051] 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.

[0052] 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.

[0053] The value VFPIG of a number in the FP16 representation is determined by.

[0054] Therein the exponent value Vexpis the value represented by the exponent component reduced by 15.

[0055] The mantissa value Vmnt is the value represented by the value 1+the value of the fraction expressed by the mantissa.

[0056] 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.

[0057] Examples are presented for various ratios of X / Y.

[0058] For now it is presumed that the value of the reference Y is 1.

[0059] This implies that Y is expressed in the FP16 notation as (S=) 0 (EXP=) 01111 (MNT=) 0000000000 Example 1

[0060] In a first example the value X is less than the reference value Y.

[0061] For example, X has the value 0 01101 0101010101 in FP16 notation which approximates the decimal fraction 1 / 3.

[0062] 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.

[0063] 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.

[0064] Example 2

[0065] 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.

[0066] 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.

[0067] 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.

[0068] 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.

[0069] 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.

[0070] 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.

[0071] 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.

[0072] 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).

[0073] 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.

[0074] 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.

[0075] 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.

[0076] 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.

[0077] 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.

[0078] 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.

[0079] 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.

[0080] 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.

[0081] Example 4

[0082] 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.

[0083] 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.

[0084] 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.

[0085] 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.

[0086] 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.

[0087] 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.

[0088] 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

[0089] In a final example, the floating point number X has a value greater than or equal to the value of 1024Y.

[0090] 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.

[0091] 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.

[0092] 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.

[0093] 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.

[0094] 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

[0095] 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.

[0096] 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

CLAIMS1. 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.