WO2023003246A1 - 멀티레벨 룩업테이블을 이용한 함수근사 장치 및 방법 - Google Patents

멀티레벨 룩업테이블을 이용한 함수근사 장치 및 방법 Download PDF

Info

Publication number
WO2023003246A1
WO2023003246A1 PCT/KR2022/010127 KR2022010127W WO2023003246A1 WO 2023003246 A1 WO2023003246 A1 WO 2023003246A1 KR 2022010127 W KR2022010127 W KR 2022010127W WO 2023003246 A1 WO2023003246 A1 WO 2023003246A1
Authority
WO
WIPO (PCT)
Prior art keywords
lut
approximation
function
mapping information
segments
Prior art date
Application number
PCT/KR2022/010127
Other languages
English (en)
French (fr)
Inventor
한정호
Original Assignee
주식회사 사피온코리아
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 주식회사 사피온코리아 filed Critical 주식회사 사피온코리아
Priority to EP22846116.6A priority Critical patent/EP4375855A1/en
Priority to CN202280050505.1A priority patent/CN117859124A/zh
Priority to US18/579,212 priority patent/US20240320301A1/en
Publication of WO2023003246A1 publication Critical patent/WO2023003246A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/17Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
    • G06F17/175Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method of multidimensional data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/17Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers

Definitions

  • the present disclosure relates to a function approximation apparatus and method using a multilevel lookup table.
  • various non-linear functions are used for calculation (eg, exp, log, sqrt, tanh, sigmoid, mish, swish, etc.).
  • nonlinear functions in order to calculate an accurate function value, a lot of time may be consumed in the calculation, or a large area may be required when implemented in HW.
  • An approximation method based on equal segments is used, which sets N to 2 N (where N is a natural number).
  • N is a natural number
  • upper N bits may be used as an address for accessing memory.
  • the approximation based on the equal segment has the advantage that it is possible to read the approximation coefficient for the corresponding segment from the LUT (Look-up Table) as illustrated in FIG. 14 using the upper N bits. .
  • the approximation coefficient includes a slope and an offset in the case of linear approximation.
  • Approximation based on uniform segments can reduce the approximation error as the number of segments increases for a given function, but since the size of the LUT for storing approximation coefficients increases in proportion to the number of segments, The problem is that the number may be limited.
  • NVDLA an open source Artificial Intelligence processor published by NVIDIA
  • NVIDIA is a linear approximation based on two LUTs, as illustrated in FIGS. 15 and 16, in order to reduce approximation errors.
  • method (refer to 'http://nvdla.org/hw/v1/ias/lut-programming.html').
  • the first LUT linearly approximates the given function by dividing the entire input interval of the function into L parts
  • the second LUT linearly approximates the given function by dividing the input interval to be calculated more precisely into J parts.
  • the first LUT linearly approximates a function by equally dividing the entire given input section into 8 sections (S A0 to S A7 ), and the second LUT divides a part of the input section into 20 sections.
  • the function is approximated by equally dividing into subintervals (S B0 to S B19 ).
  • the variation of the function in one sub-period, illustrated in FIG. 15, is smaller than the variation in the function seen in one segment, illustrated in FIG. 13, so that linear approximation based on two LUTs can be facilitated.
  • the total size of the two LUTs can store approximation coefficients for a total of 28 (8 + 20) segments, as illustrated in FIG. 16. is the size of
  • NVDLA For a given input variable value, NVDLA first calculates two values simultaneously using two LUTs. Next, when the input variable value is included in the range that the second LUT can approximate, a value calculated based on the second LUT is selected as an output, and when not included in the range, a value calculated based on the first LUT is selected. A value is selected as an output.
  • the piece-by-piece linear approximation based on these two LUTs is effective in reducing approximation error when a highly variable part exists in only a part of the entire input range of a given function, but when there are several parts with a large change Or, even if it exists in a part, if the change is very severe, there is a problem that the approximation error cannot be effectively reduced.
  • An object of the present invention is to provide a function approximation apparatus and method for approximating a function value for a function in multiple stages using a multi-level look-up table (LUT) with different lengths of .
  • LUT multi-level look-up table
  • obtaining input variable values for a function obtaining input variable values for a function; Extracting an approximation coefficient for the function using a multi-level look-up table (LUT) based on the input variable value, wherein the multi-level LUT is K (K is a natural number greater than or equal to 2) contains two LUTs; And calculating a function value for the input variable value using the approximation coefficient, wherein each of the K LUTs has a different size of supported segments, and the kth (where k is 1 to K- natural number up to 1) The size of the segment supported by the LUT is larger than the size of the segment supported by the (k+1)th LUT, and the (k+1)th LUT is determined based on the mapping information provided by the kth LUT. It provides a function approximation method for each interval, characterized in that it approaches.
  • an input unit for obtaining input variable values for a function
  • a memory including a multi-level look-up table (LUT), wherein the multi-level LUT includes K (K is a natural number equal to or greater than 2) LUTs; a coefficient extraction unit extracting approximate coefficients for the function using the multi-level LUT based on the input variable values; And a function value generator for calculating a function value for the input variable value using the approximation coefficient, wherein each of the K LUTs has a different size of a segment to support, and a kth (where k is from 1 to 1).
  • a natural number up to K-1 The size of a segment supported by the LUT is larger than the size of a segment supported by the (k+1)th LUT, and based on the mapping information provided by the kth LUT, the (k+1) A function approximation device for each section, characterized in that it approaches the LUT, is provided.
  • a computer-readable recording medium in which instructions are stored, wherein the instructions, when executed by the computer, cause the computer to: obtain input variable values for a function; Extracting an approximation coefficient for the function using a multi-level look-up table (LUT) based on the input variable value, wherein the multi-level LUT is K (K is a natural number greater than or equal to 2) contains two LUTs; And a process of calculating a function value for the input variable value using the approximation coefficient, wherein each of the K LUTs has a different size of supported segments, and the kth (where k is 1 to K natural number up to -1) The size of the segment supported by the LUT is greater than the size of the segment supported by the (k+1)th LUT, and the (k+1)th LUT based on the mapping information provided by the kth LUT
  • a computer-readable recording medium characterized in that for accessing to provide.
  • a function approximation device and method for approximating a function value for a function in multiple stages using a multi-level LUT in which the length of a segment is set differently according to the amount of change of a nonlinear function By providing, There is an effect that it is possible to reduce an approximation error by using a small-sized LUT.
  • FIG. 1 is a schematic block diagram of a system equipped with a function approximation device according to an embodiment of the present disclosure.
  • FIG. 2 is a schematic block diagram of a function approximation device according to an embodiment of the present disclosure.
  • FIG. 3 is an exemplary diagram illustrating linear function approximation using a two-step LUT according to an embodiment of the present disclosure.
  • FIG. 4 is an exemplary diagram of a structure of a two-step LUT according to an embodiment of the present disclosure.
  • FIG. 5 is an exemplary diagram illustrating a configuration of a half-precision FP number according to an embodiment of the present disclosure.
  • FIG. 6 is an exemplary diagram illustrating the marking of LUT mapping information in a second step according to an embodiment of the present disclosure.
  • FIG. 7 is an exemplary diagram illustrating the marking of LUT mapping information in a second step according to another embodiment of the present disclosure.
  • FIG. 8 is an exemplary diagram illustrating the marking of LUT mapping information in a second step according to another embodiment of the present disclosure.
  • FIG. 9 is a flowchart of a function approximation method based on a two-step LUT according to an embodiment of the present disclosure.
  • FIG. 10 is a schematic block diagram of a function approximation device based on a multi-level LUT according to an embodiment of the present disclosure.
  • FIG. 11 is a flowchart of a function approximation method based on a multilevel LUT according to an embodiment of the present disclosure.
  • FIG. 12 is a flowchart of a method for generating a two-step LUT based on linear approximation according to an embodiment of the present disclosure.
  • 13 is an exemplary diagram illustrating linear function approximation using one LUT.
  • 15 is an exemplary diagram illustrating linear function approximation using two LUTs.
  • 16 is an exemplary view of the structure of two LUTs.
  • first, second, A, B, (a), and (b) may be used. These terms are only used to distinguish the component from other components, and the nature, sequence, or order of the corresponding component is not limited by the term.
  • a part 'includes' or 'includes' a certain component it means that it may further include other components without excluding other components unless otherwise stated.
  • the '... Terms such as 'unit' and 'module' refer to a unit that processes at least one function or operation, and may be implemented as hardware, software, or a combination of hardware and software.
  • This embodiment discloses a function approximation device and method using a multilevel lookup table. More specifically, in approximating a nonlinear function value based on piecewise linear approximation or piecewise polynomial approximation, in order to reduce the approximation error, a segment according to the variation of the function Provided is a function approximation device and method for approximating a function value for a function in multiple stages using a multi-level look-up table (LUT) with different lengths of .
  • LUT multi-level look-up table
  • HW accelerators for neural networks generally include engines dedicated to performing matrix operations such as convolution operations; a processor that performs a non-linear function, such as an activation function, or a pooling function; on-chip memory; and DMA (Direct Memory Access) for external memory access.
  • the function approximation device according to the present embodiment may be mounted and operated on a processor.
  • multi-level LUT collectively refers to all LUTs included in multi-level LUTs.
  • a 2-step LUT is an expression collectively referring to two included LUTs.
  • the output of the next stage LUT is generated using the output of the previous stage LUT.
  • Each LUT included in the multi-level LUT is called a first LUT, a second LUT, ..., and the like.
  • the NVDLA includes two LUTs, but since outputs of the first LUT and the second LUT are simultaneously generated, the LUT type included in the NVDLA does not correspond to a multi-level LUT.
  • a 'target function' or 'function' the original nonlinear function to be subjected to section-by-section approximation.
  • FIG. 1 is a schematic block diagram of a system equipped with a function approximation device according to an embodiment of the present disclosure.
  • a system equipped with a function approximation device includes a data memory 110 , a program memory 120 , and a processor 130 .
  • the processor 130 may perform function approximation on the target function.
  • the processor 130 includes a control unit 132, a register 134, a calculation unit 136, and a memory access unit 138.
  • the register 134 is a place where the operation input/output of the operation unit 136 is stored
  • the memory access unit 138 performs access to the data memory 110 and the program memory 120
  • the control unit 132 is a processor ( 130) controls the operation (eg, power management, interrupt handling, etc.).
  • the calculation unit 136 is equipped with a function approximation device according to the present embodiment, and approximates a function value for a target function in multiple stages.
  • FIG. 2 is a schematic block diagram of a function approximation device according to an embodiment of the present disclosure.
  • the function approximation device is mounted in the operation unit 136 and approximates the function value of the function in multiple steps using a multi-level LUT to perform section-by-section linear approximation or section-by-section polynomial approximation.
  • the bar illustrated in FIG. 2 shows a function approximation device using a two-step LUT.
  • the function approximation device includes all or part of the input unit 202, the index generation unit 204, the first LUT 206, the number determination unit 208, the second LUT 212, and the function value generation unit 214. do.
  • the first LUT 206 and the second LUT 212 are included in the memory 220 in the function approximation device, and the index generator 204 and the number determination unit 208 are included in the coefficient extraction unit 230 in the function approximation device. ) can be included.
  • FIG. 2 is an exemplary configuration according to the present embodiment, and includes other components or other connections between components according to the operation of the index generator, the structure of the multi-level LUT, the operation of the function value generator, and the configuration of the memory.
  • Various implementations are possible.
  • the LUT can be accessed using only the upper N bits of the input variable.
  • N is 3 for the first LUT 206, and m (where m is a natural number) bits from the N+1 th bit are used for the second LUT 212.
  • m is 1 or 2.
  • FIGS. 3 and 4 show linear function approximation.
  • FIG. 3 is an exemplary diagram illustrating linear function approximation using a two-step LUT according to an embodiment of the present disclosure.
  • a brief process of generating the second LUT 212 in advance by the computing device is as follows.
  • the computing device divides the entire input section into 8 sections (S A0 to S A7 ) using the first LUT 206, generates approximation coefficients for the target function for each section, and calculates an approximation error.
  • the computing device divides the segment with the large approximation error into small segments (S Ba , S Bb , S Bc , S Bd ), and generates approximation coefficients for the individual small segments.
  • the linear approximation coefficient for the small segment is stored in the second LUT 212 .
  • the intervals S A1 and S A6 where the change in the target function is relatively small are subdivided into two sub-ranges (S Ba0 S Ba1 , S Bd0 to S Bd1 ), and S A2 where the change in the target function is large. and S A5 sections are subdivided into 4 subsections (S Bb0 ⁇ S Bb3 , S B0 ⁇ S BC3 ).
  • the first LUT 206 is data for subdivided subsections S A1 , S A2 , S A5 , and S A6 , instead of approximation coefficients, and information about how many subsections the corresponding section is subdivided into. , and information about where linear approximation coefficients are stored in the second LUT 212 is stored.
  • the function approximation device When the input variable value (x) is given, the function approximation device reads the value of the first LUT 206 using this, and determines whether the read value is a linear approximation coefficient or 'mapping information for the LUT in the second step (hereinafter, ' It is determined whether it is used in compatibility with 'mapping information)'. If it is the mapping information, the function approximation device reads the linear approximation coefficient corresponding to the input variable value at the corresponding position of the second LUT 212 and then calculates an approximation value. As illustrated in Figure 3, the total size of the two LUTs is 20 (8 + (2 + 4 + 4 + 2)). Therefore, the function approximation device according to the present embodiment can approximate a function using a LUT smaller than that illustrated in FIG. 16 .
  • FIG. 4 is an exemplary diagram of a structure of a two-step LUT according to an embodiment of the present disclosure.
  • the first LUT 206 i) stores linear approximation coefficients for individual sections, or ii) stores mapping information for the second stage LUT .
  • the second LUT 212 stores corresponding approximation coefficients when linear approximation is performed by dividing individual sections mapped by the LUT of the second stage into small segments each having a required size.
  • the positions [1] and [6] of the first LUT 206 subdivide the corresponding section into two subsections, and store mapping information (BaseIndex, NumSeg) for the LUT in the second step.
  • BaseIndex base index
  • NumSeg number of small segments
  • the positions [2] and [5] of the first LUT 206 subdivide the corresponding section into four sub-sections, respectively, and store mapping information.
  • the first LUT 206 and the second LUT 212 have different segment sizes supported, and the segment size supported by the first LUT 206 is supported by the second LUT 212. is greater than the size of the segment to be Also, the function approximation device may access the second LUT 212 based on mapping information provided by the first LUT 206 .
  • the input unit 202 obtains an input variable (value) x for the target function.
  • the input variable may be expressed as a floating point number (hereinafter referred to as 'FP number') generally used in a computing system.
  • 'FP number' a floating point number
  • the FP numbering system is capable of expressing a very wide range of sizes.
  • a half-precision FP number (hereinafter 'FP16', that is, a 16-bit floating point number), as illustrated in FIG. 5, has a 1-bit sign (S) and a 5-bit exponent. E), and 10-bit mantissa (M). At this time, depending on the values of the E field and the M field, it indicates a normal number (normalized number, +/-0) or a special value (NaN (Not a Number), +/-Inf (infinity), sub-normal number ( can represent a regular number)).
  • S 1-bit sign
  • E 5-bit exponent.
  • M 10-bit mantissa
  • mapping information can be stored without additional overhead. By doing this, it can be determined whether the values read from the first LUT 206 are linear approximation coefficients or mapping information. A method of mapping the mapping information of the LUT in the second step to the NaN code will be described later.
  • the index generator 204 generates a first index for accessing the first LUT 206 from input variables.
  • the first index may indicate a location where information about a segment including an input variable value is stored in the first LUT 206 .
  • the first index of N bits may be generated by converting the FP number into an integer and then extracting upper N bits. Meanwhile, when the input variable is in the form of an integer, as described above, the first index may be generated by extracting the upper N bits of the input variable.
  • the function approximation device extracts the output of the first LUT 206 based on the first index. As described above, this output may be linear approximation coefficients for segments supported by the first LUT 206 or mapping information for the second LUT 212 .
  • the number determination unit 208 determines whether the output of the first LUT 206 is a number on the floating point number system.
  • the output of the first LUT 206 represents the linear approximation coefficients for the segment, namely the slope and offset.
  • the output of the first LUT 206 indicates mapping information for the second LUT 212 and includes a base index and the number of small segments.
  • the index generator 204 generates a second index for accessing the second LUT 212 from input variables and mapping information.
  • the index generation unit 204 calculates the location of the corresponding small segment using m bits after N bits used for the first index, and then bases the location of the small segment on the base.
  • a second index may be generated by adding the indices.
  • the function approximation device extracts the output of the second LUT 212 based on the second index.
  • the output of the second LUT 212 represents the linear approximation coefficient for the small segment.
  • the function value generator 214 generates an approximate value for the target function using the linear approximation coefficient.
  • the linear approximation coefficients that is, the slope (A) and the offset (B) may be outputs of the first LUT 206 or the second LUT 212 .
  • NaN in the FP number system represents a case where all bits of the E field are 1 and the M field is not 0, as illustrated in FIG. 5 . Therefore, it is possible to determine whether the value stored in the second LUT 212 is mapping information by storing a value other than 0 as mapping information for the LUT of the second stage in the M field of the NaN code.
  • a NaN code can be used as mapping information.
  • B For the value stored at position, if all the bit values of field E are 1 and the value of field M is not 0, the function approximator considers the value stored at position B as mapping information for the LUT of the second stage. .
  • the function approximation device checks BaseIndex and NumSeg, which are mapping information, using values stored in M fields in FP numbers of A and B positions.
  • HW logic for this must be used. As the number of bits allocated to the M field increases, Delays can be long.
  • mapping information in a NaN code when storing mapping information in a NaN code, a bit value at a predetermined position of one of the M fields may be fixed to 1.
  • FIGS. 7 and 8 show a method of storing the mapping information for the LUT in the second step after fixing the most significant bit value of the M field to 1 among the values stored in the first LUT 206 .
  • whether or not mapping information is included may be checked using the value stored in location A
  • mapping information is included may be checked using the value stored in location B.
  • the mapping information for the LUT in the second step is a sub-normal number code can be mapped to
  • an irregular number in the FP number system represents a case where all bits of the E field are 0 and the M field is not 0. Therefore, it is possible to determine whether the value stored in the second LUT 212 is mapping information by storing a value other than 0 as mapping information for the second stage LUT in the M field of the irregular number code.
  • mapping information that is, among the values read from the first LUT 206, at the position of B Regarding the stored value, if all bit values of the E field are 0 and the value of the M field is not 0, the function approximation device regards the value stored at the location of B as mapping information for the LUT of the second stage.
  • a bit value at a preset position of one of the M fields may be fixed to 1.
  • the S field of a NaN code or an irregular number code has a don't care condition.
  • the S field of the corresponding code may be set to a preset value to indicate the mapping information.
  • the S field is 1, the M field may indicate mapping information.
  • FIG. 9 is a flowchart of a function approximation method based on a two-step LUT according to an embodiment of the present disclosure.
  • the function approximation device obtains an input variable (value) for the target function (S900).
  • the function approximation device generates a first index from an input variable in order to access the first LUT 206 (S902).
  • the first index may indicate a location where information about a segment including an input variable value is stored in the first LUT 206 .
  • the function approximation device extracts the output of the first LUT 206 based on the first index (S904). As described above, this output may be linear approximation coefficients for segments supported by the first LUT 206 or mapping information for the second LUT 212 .
  • the function approximation device determines whether the output of the first LUT 206 is a number on the floating point number system (S906).
  • the output of the first LUT 206 represents the linear approximation coefficients for the segment, namely the slope and offset.
  • the output of the first LUT 206 indicates mapping information for the second LUT 212 and includes a base index and the number of small segments.
  • the function approximation device generates a second index from input variables and mapping information in order to access the second LUT 212 (S908).
  • the function approximation device extracts the output of the second LUT 212 based on the second index (S910).
  • the output of the second LUT 212 represents the linear approximation coefficient for the small segment.
  • the function approximation device generates an approximate value for the function using the linear approximation coefficient (S912).
  • the linear approximation coefficients that is, the slope (A) and the offset (B) may be outputs of the first LUT 206 or the second LUT 212 .
  • the description of this embodiment is for linear approximation based on the two-step LUT, but the scope of application of this embodiment is not necessarily limited thereto.
  • the function approximation device includes a multi-level LUT composed of K (K is a natural number) LUT
  • Linear approximation based on multi-level LUTs can be implemented by equally applying the process of generating mapping information for the second LUT 212 based on the same to all subsequent LUTs including the third LUT.
  • FIG. 10 is a schematic block diagram of a function approximation device based on a multi-level LUT according to an embodiment of the present disclosure.
  • the function approximation device based on the multi-level LUT is loaded into the calculation unit 136 and implemented as illustrated in FIG. 2, but the memory 220 includes the multi-level LUT.
  • the multilevel LUT includes K (K is a natural number greater than or equal to 2) LUTs.
  • K is a natural number greater than or equal to 2 LUTs.
  • Each of the K LUTs has a different segment size supported, and the size of the segment supported by the kth (where k is a natural number from 1 to K-1) LUT is the size of the segment supported by the (k+1)th LUT. bigger than size
  • Each of the K LUTs may be represented by a floating point number system, as described above.
  • the function approximation device may access the (k+1)th LUT based on mapping information provided by the kth LUT. Accordingly, the k th LUT includes linear approximation coefficients or mapping information as information about the segment, and the K th LUT in the last step includes linear approximation coefficients as information about the segment.
  • the mapping information is information for dividing each of the t segments into small segments supported by the (k+1)th LUT for t (where t is a natural number) segments among all segments supported by the kth LUT.
  • each of the t segments is a segment in which an approximation error for the function is greater than a preset threshold value.
  • the number of small segments may be determined according to the size of an approximation error for a function that each of the t segments has.
  • the mapping information may include, for each of the t segments, a base index that is a starting position in the (k+1)th LUT and the number of small segments.
  • mapping information on the floating point number system since the method of defining mapping information on the floating point number system has already been described based on FIGS. 5 to 8, further detailed description is omitted.
  • the input unit 202 obtains an input variable (value) for a target function.
  • the coefficient extraction unit 230 extracts linear approximation coefficients for a function using a multi-level LUT based on input variables.
  • the index generator 204 generates a jth index (where j is a natural number from 1 to K) based on input variables and mapping information.
  • the first index is generated based only on input variables.
  • the number determination unit 208 determines whether the j th output extracted from the j th LUT is a number based on the j th index.
  • the coefficient extraction unit 230 extracts the j-th output as a linear approximation coefficient when the j-th output is a number on the floating point number system , and when the j-th output is mapping information, mapping information based on the LUT of the next stage. Re-extract the linear approximation coefficients using
  • the function value generation unit 214 generates function values for input variables using linear approximation coefficients.
  • the memory 220 including the multi-level LUT illustrated in FIG. 2 or 10 may be implemented as follows.
  • each LUT included in the multi-level LUT may be implemented as a physically separate memory.
  • the function approximation device may access each LUT included in a separated memory based on a pipeline method.
  • the processing speed (throughput) for function approximation can be increased.
  • multi-level LUTs may be physically stored in the same memory while each LUT included in the multi-level LUT is logically separated.
  • the function approximation device may generate an index for accessing each LUT based on a pre-stored start position in memory for each LUT.
  • FIG. 11 is a flowchart of a function approximation method based on a multilevel LUT according to an embodiment of the present disclosure.
  • the function approximation device obtains an input variable (value) and initializes j (where j is a natural number from 1 to K) to 1 (S1100).
  • the function approximation device generates a j-th index based on input variables and mapping information (S1102).
  • the first index is generated based only on input variables.
  • the function approximation device generates a j-th output from the j-th LUT based on the j-th index (S1104).
  • the jth output may be linear approximation coefficients for a segment supported by the jth LUT or mapping information for a LUT of a next stage.
  • the function approximation device determines whether the jth output is a number on the floating point number system (1106).
  • the function approximation device increases j by 1 (S1108), and then repeats the process of extracting linear approximation coefficients (S1102 to S1106) using the mapping information.
  • the function approximation device extracts the jth output as a linear approximation coefficient when the jth output is a number.
  • the function approximation device generates an approximate value for the function using the linear approximation coefficient (S1110).
  • FIG. 12 is a flowchart of a method for generating a two-step LUT based on linear approximation according to an embodiment of the present disclosure.
  • the computing device assumes that the size of the LUT (the number of segments supported by the first LUT or the second LUT) available in the HW is given.
  • the computing device divides the entire input range of the target function by the size of the first LUT (num_lut1), and applies piecewise linear approximation to the target function in a direction of reducing an error between the target function and the approximation function (S1200).
  • the computing device calculates an error between the target function and the approximation function for each segment (S1204).
  • the number of areas (lut2_remained) in the second LUT not yet filled with values is set as the size of the second LUT (S1206).
  • the computing device selects the segment (S 1 ) having the largest error (E S1 ) among the segments of the first LUT (S1208).
  • the fact that the error is large indicates that the variation of the target function in the corresponding segment is large, and thus the difference in values between the target function and the approximation function is large.
  • the computing device checks whether the largest error (E S1 ) is smaller than the target, preset error threshold (E TH ) (S1210), and if so, dividing the corresponding section into small segments (S1212 to S1226). ), and if it is small, the process of dividing into small segments is terminated.
  • the computing device checks whether the currently selected segment is mapped to the second LUT (S1212), and if so, sets twice the number of segments mapped to the second LUT as num_segment_lut2_cur (S1214). If not mapped, the computing device sets num_segment_lut2_cur to 2 (S1216).
  • the computing device checks whether num_segment_lut2_cur is less than the number of empty spaces (lut2_remained) of currently available lut2 (S1218), and if not small, ends the process of dividing into small segments.
  • the computing device divides the currently selected segment into num_segment_lut2_cur, changes the mapping information to the second LUT so that it is linearly approximated, and subtracts the number of spaces of the second-stage LUT additionally used from the number of empty spaces of the second LUT. .
  • the computing device performs precise linear approximation on each of the small segments divided in two stages in a direction of reducing an error between the target function and the approximation function (S1220).
  • the computing device stores coefficients for the calculated slope and offset in the second LUT (S1222).
  • the computing device calculates an error between the target function and the approximation function for each small segment (S1224).
  • the computing device replaces the approximate error (E S1 ) for the section selected in the first LUT with the largest error among errors calculated for the second LUT (S1226).
  • the computing device operates the second LUT.
  • the mapping process (S1208 to S1226) to is repeated. Using this iterative process, a two-step function approximation result capable of minimizing an approximation error while satisfying the LUT size condition of a given HW can be obtained.
  • the computing device provides a method for generating a two-step LUT based on linear approximation, as illustrated in FIG. 12, for K LUTs included in the multi-step LUT, , k is a natural number from 1 to K-1) LUT and the (k+1) th LUT are repeatedly applied to generate a linear approximation-based multi-level LUT.
  • the present embodiment has been described for the application of the section-by-section linear approximation method, but the section-by-section polynomial approximation method can also be similarly applied.
  • the formula expressing each segment is , there are (P+1) coefficients stored for one section. Therefore, a LUT capable of storing (P+1) coefficients is used.
  • Table 1 shows the comparison results of the tanh and sigmoid functions, which are activation functions frequently used in neural networks.
  • Table 1 shows the LUT sizes (sizes of the first LUT and the second LUT) when the approximation error is similar between the case where the linear approximation by 64 segments is applied using the conventional method and the linear approximation by the two stages is applied. .
  • the proposed multi-level LUT method can approximate the target function with a similar approximation error using only LUTs ranging in size from 59.4% to 75%.
  • each process is sequentially executed, but is not necessarily limited thereto.
  • the flowchart is not limited to a time-series sequence.
  • a programmable system includes at least one programmable processor (which may be a special purpose processor) coupled to receive data and instructions from and transmit data and instructions to a storage system, at least one input device, and at least one output device. or may be a general-purpose processor).
  • Computer programs also known as programs, software, software applications or code
  • processor 132 processor
  • first LUT 208 number determination unit

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Nonlinear Science (AREA)
  • Image Processing (AREA)

Abstract

멀티레벨 룩업테이블을 이용한 함수근사 장치 및 방법에 관한 개시로서, 본 실시예는, 구간별 선형 근사(piecewise linear approximation) 또는 구간별 다항식 근사(piecewise polynomial approximation)를 기반으로 비선형 함수값을 근사함에 있어서, 근사 오차를 감소시키기 위해, 함수의 변화량에 따라 세그멘트(segment)의 길이가 상이하게 설정된 멀티레벨(multi-level) LUT(Look-up Table)를 이용하여, 함수에 대한 함수값을 다단계로 근사하는 함수근사 장치 및 방법을 제공한다.

Description

멀티레벨 룩업테이블을 이용한 함수근사 장치 및 방법
본 개시는 멀티레벨 룩업테이블을 이용한 함수근사 장치 및 방법에 관한 것이다.
이하에 기술되는 내용은 단순히 본 발명과 관련되는 배경 정보만을 제공할 뿐 종래기술을 구성하는 것이 아니다.
신경망(Neural Network)에서는, 다양한 비선형(non-linear) 함수들이 연산에 사용된다(예를 들어, exp, log, sqrt, tanh, sigmoid, mish, swish 등). 이러한 비선형 함수들에 대해, 정확한 함수값을 연산하기 위해서, 연산에 많은 시간이 소모되거나, HW로 구현하는 경우 큰 면적이 요구될 수 있다.
일반적으로, 비선형 함수를 HW로 구현하는 경우, 비선형 함수를 다수의 구간으로 분할한 후, 구간별 선형 근사(piecewise linear approximation) 또는 구간별 다항식 근사(piecewise polynomial approximation)를 적용함으로써, 비선형 함수에 대한 근사값을 연산할 수 있다. 이러한 구간별 근사를 적용할 때, 함수의 근사 오차(approximation error)를 감소시키기 위해 각 구간의 크기를 상이하게 분할하는 방식이 이용될 수 있다. 하지만, 각 구간의 범위가 상이할 경우, 입력 변수값(input variable value)이 어느 구간에 포함되어 있는지를 판단하기 위해, 모든 구간의 범위와 비교하는 과정이 선행되어야 한다. 즉, L(여기서, L은 자연수) 개의 임의의 크기의 구간이 존재하는 경우, 입력 변수값을 각 구간의 시작 또는 끝 값과 비교하기 위해, 최대 L+1 번의 비교가 필요하다. 이러한 비교 과정의 종료 후에, 해당 구간에 대한 선형 근사 또는 다항식 근사를 위한 상수(이하, '근사 계수(approximation coefficient)')를 획득하여 함수에 대한 근사값을 연산할 수 있다. 따라서, 신속한 연산을 위해서, L+1 개의 비교기(comparator) 및 각 구간의 경계값(boundary value)을 저장하기 위한 저장공간이 요구될 수 있으므로, 임의 구간에 기반하는 선형 근사 또는 다항식 근사는, HW(Hardware) 구현 측면에서 비효율적이라는 단점이 있다.
따라서, 구간별 선형 근사 또는 구간별 다항식 근사를 HW로 구현 시, 일반적으로 도 13에 예시된 바와 같이, 입력 변수의 범위를 균등한 크기의 세그멘트(segment)로 분할하되, 특히, 전체 구간의 수를 2N(여기서, N은 자연수)으로 설정하는, 균등 세그멘트에 기반하는 근사 방식이 이용된다. 2N 개의 균등한 세그멘트를 이용하는 경우, 복잡한 비교 과정이 없이도 입력 변수의 상위 N 비트만을 이용하여, 입력 변수가 어느 세그멘트에 포함되는지가 용이하게 판단될 수 있다. 또한, 메모리를 접근하기 위한 주소(address)로서 상위 N 비트가 사용될 수 있다. 균등 세그멘트에 기반하는 근사는, 상위 N 비트를 사용하여, 도 14에 예시된 바와 같은 LUT(Look-up Table, 룩업테이블)로부터, 해당되는 세그멘트에 대한 근사 계수를 읽어오는 것이 가능하다는 장점을 갖는다. 이때, 근사 계수는, 선형 근사의 경우, 기울기(slope) 및 오프셋(offset)을 포함한다.
한편, 도 13에 예시된 바와 같이, 전체 구간이 8 개로 분할된 경우, SA0, SA3, SA4, 및 SA7 구간에서는 주어진 함수의 변화량이 작아서, 선형 근사가 용이하다. 하지만, SA1과 SA6 구간에서는 함수의 모양이 곡선(curve)이므로, 선형 근사 시 오차가 발생하고, 특히 SA2와 SA5 구간에서는 곡률이 더욱 커져서, 선형 근사 시 다른 구간에 비해 큰 오차가 발생할 수 있다. 균등 세그멘트에 기반하는 근사는, 주어진 함수에 대해, 세그멘트의 수를 증가시킬수록 근사 오차를 감소시킬 수 있으나, 세그멘트의 수에 비례하여, 근사 계수를 저장하기 위한 LUT의 크기가 증대되므로 최대 세그멘트의 개수가 제한될 수 있다는 문제를 갖는다.
다른 종래 기술로서, NVIDIA에서 공개한 오픈 소스 AI 프로세서(open source Artificial Intelligence processor)인 NVDLA는, 근사 오차를 감소시키기 위해, 도 15 및 도 16에 예시된 바와 같이, 2 개의 LUT에 기반하는 선형 근사 방식을 이용한다('http://nvdla.org/hw/v1/ias/lut-programming.html'를 참조). 이 방식에서는, 제1 LUT가, 함수의 입력 구간 전체를 L 등분하여 주어진 함수를 선형 근사하고, 제2 LUT는, 더 정밀하게 계산하고 싶은 입력 구간을 J 등분하여 주어진 함수를 선형 근사한다.
예컨대, 도 15에 예시된 바와 같이, 제1 LUT는 주어진 전체 입력 구간을 8 개의 구간(SA0~SA7)으로 균등 분할하여 함수를 선형 근사하고, 제2 LUT는, 입력 구간 중 일부분을 20 개의 소구간(SB0~SB19)으로 균등 분할하여 함수를 근사한다. 그 결과, 도 13에 예시된, 한 세그멘트 내에서 보이는 함수의 변화량보다 도 15에 예시된, 한 소구간 내 함수의 변화량이 더 작아져서, 2 개의 LUT에 기반하는 선형 근사가 용이해질 수 있다.
도 15에 예시된 바와 같은 2 개의 LUT의 전체 크기(지원하는 세그멘트의 개수에 비례함)는, 도 16에 예시된 바와 같이, 총 28 개(8 + 20)의 세그멘트에 대한 근사 계수를 저장할 수 있는 크기이다.
NVDLA는, 주어진 입력 변수값에 대해, 먼저, 두 LUT를 이용하여 2 개의 값을 동시에 계산한다. 다음, 입력 변수값이 제2 LUT가 근사할 수 있는 범위에 포함되는 경우, 제2 LUT를 기반으로 연산된 값이 출력으로 선택되고, 범위에 포함되지 않는 경우, 제1 LUT를 기반으로 연산된 값이 출력으로 선택된다.
이러한 2 개의 LUT에 기반하는 구간별 선형 근사는, 주어진 함수의 전체 입력 구간 중, 변화가 심한 부분이 일부분에만 존재하는 경우, 근사 오차의 감소에 효과적이나, 변화가 심한 부분이 여러 부분 존재하는 경우 또는 일부분에 존재하더라도 그 변화가 매우 심한 경우, 근사 오차를 효과적으로 감소시킬 수 없다는 문제를 갖는다.
따라서, 다양한 특성을 갖는 비선형 함수에 대해 구간별 근사를 수행함에 있어서, 근사 오차를 효과적으로 감소시킬 수 있는, LUT의 구조 및 운용 방안이 필요하다.
본 개시는, 구간별 선형 근사(piecewise linear approximation) 또는 구간별 다항식 근사(piecewise polynomial approximation)를 기반으로 비선형 함수값을 근사함에 있어서, 근사 오차를 감소시키기 위해, 함수의 변화량에 따라 세그멘트(segment)의 길이가 상이하게 설정된 멀티레벨(multi-level) LUT(Look-up Table)를 이용하여, 함수에 대한 함수값을 다단계로 근사하는 함수근사 장치 및 방법을 제공하는 데 목적이 있다.
본 개시의 실시예에 따르면, 컴퓨팅 장치가 수행하는, 구간별(piecewise) 함수근사 방법에 있어서, 함수에 대해 입력 변수값을 획득하는 과정; 상기 입력 변수값을 기반으로 멀티레벨(multi-level) LUT(Look-up Table)를 이용하여 상기 함수에 대한 근사 계수를 추출하는 과정, 여기서, 상기 멀티레벨 LUT는 K(K는 2 이상의 자연수) 개의 LUT를 포함함; 및 상기 근사 계수를 이용하여 상기 입력 변수값에 대한 함수값을 연산하는 과정을 포함하되, 상기 K 개의 LUT 각각은, 지원하는 세그멘트의 크기가 상이하고, 제k(여기서, k는 1부터 K-1까지의 자연수) LUT가 지원하는 세그멘트의 크기가 제(k+1) LUT가 지원하는 세그멘트의 크기보다 크고, 상기 제k LUT가 제공하는 매핑 정보를 기반으로 상기 제(k+1) LUT를 접근하는 것을 특징으로 하는, 구간별 함수근사 방법을 제공한다.
본 개시의 다른 실시예에 따르면, 함수에 대해 입력 변수값을 획득하는 입력부; 멀티레벨(multi-level) LUT(Look-up Table)를 포함하는 메모리, 여기서, 상기 멀티레벨 LUT는 K(K는 2 이상의 자연수) 개의 LUT를 포함함; 상기 입력 변수값을 기반으로 상기 멀티레벨 LUT를 이용하여 상기 함수에 대한 근사 계수를 추출하는 계수추출부; 및 상기 근사 계수를 이용하여 상기 입력 변수값에 대한 함수값을 연산하는 함수값생성부를 포함하되, 상기 K 개의 LUT 각각은, 지원하는 세그멘트의 크기가 상이하고, 제k(여기서, k는 1부터 K-1까지의 자연수) LUT가 지원하는 세그멘트의 크기가 제(k+1) LUT가 지원하는 세그멘트의 크기보다 크고, 상기 제k LUT가 제공하는 매핑 정보를 기반으로 상기 제(k+1) LUT를 접근하는 것을 특징으로 하는, 구간별 함수근사 장치를 제공한다.
본 개시의 다른 실시예에 따르면, 명령어가 저장된, 컴퓨터로 읽을 수 있는 기록매체로서, 상기 명령어는 상기 컴퓨터에 의해 실행될 때 상기 컴퓨터로 하여금, 함수에 대해 입력 변수값을 획득하는 과정; 상기 입력 변수값을 기반으로 멀티레벨(multi-level) LUT(Look-up Table)를 이용하여 상기 함수에 대한 근사 계수를 추출하는 과정, 여기서, 상기 멀티레벨 LUT는 K(K는 2 이상의 자연수) 개의 LUT를 포함함; 및 상기 근사 계수를 이용하여 상기 입력 변수값에 대한 함수값을 연산하는 과정을 실행하도록 하되, 상기 K 개의 LUT 각각은, 지원하는 세그멘트의 크기가 상이하고, 제k(여기서, k는 1부터 K-1까지의 자연수) LUT가 지원하는 세그멘트의 크기가 제(k+1) LUT가 지원하는 세그멘트의 크기보다 크고, 상기 제k LUT가 제공하는 매핑 정보를 기반으로 상기 제(k+1) LUT를 접근하는 것을 특징으로 하는, 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
이상에서 설명한 바와 같이 본 실시예에 따르면, 비선형 함수의 변화량에 따라 세그멘트의 길이가 상이하게 설정된 멀티레벨 LUT를 이용하여, 함수에 대한 함수값을 다단계로 근사하는 함수근사 장치 및 방법을 제공함으로써, 작은 크기의 LUT를 이용하여 근사 오차를 감소시키는 것이 가능해지는 효과가 있다.
도 1은 본 개시의 일 실시예에 따른 함수근사 장치가 탑재되는 시스템에 대한 개략적인 블록도이다.
도 2는 본 개시의 일 실시예에 따른 함수근사 장치에 대한 개략적인 블록도이다.
도 3은 본 개시의 일 실시예에 따른 2단계 LUT를 이용하는 선형 함수 근사를 나타내는 예시도이다.
도 4는 본 개시의 일 실시예에 따른 2단계 LUT의 구조에 대한 예시도이다.
도 5는 본 개시의 일 실시예에 따른 하프프리시전(half-precision) FP 넘버의 구성을 나타내는 예시도이다.
도 6은 본 개시의 일 실시예에 따른, 두 번째 단계의 LUT의 매핑 정보의 표기를 나타내는 예시도이다.
도 7은 본 개시의 다른 실시예에 따른, 두 번째 단계의 LUT의 매핑 정보의 표기를 나타내는 예시도이다.
도 8은 본 개시의 다른 실시예에 따른, 두 번째 단계의 LUT의 매핑 정보의 표기를 나타내는 예시도이다.
도 9는 본 개시의 일 실시예에 따른 2단계 LUT에 기반하는 함수근사 방법에 대한 흐름도이다.
도 10은 본 개시의 일 실시예에 따른 멀티레벨 LUT에 기반하는 함수근사 장치에 대한 개략적인 블록도이다.
도 11은 본 개시의 일 실시예에 따른 멀티레벨 LUT에 기반하는 함수근사 방법에 대한 흐름도이다.
도 12은 본 개시의 일 실시예에 따른, 선형 근사 기반의 2단계 LUT를 생성하는 방법에 대한 흐름도이다.
도 13은 1 개의 LUT를 이용하는 선형 함수 근사를 나타내는 예시도이다.
도 14는 1 개의 LUT의 구조에 대한 예시도이다.
도 15은 2 개의 LUT를 이용하는 선형 함수 근사를 나타내는 예시도이다.
도 16은 2 개의 LUT의 구조에 대한 예시도이다.
이하, 본 발명의 실시예들을 예시적인 도면을 참조하여 상세하게 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 실시예들을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 실시예들의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
또한, 본 실시예들의 구성요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성요소를 다른 구성요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 '포함', '구비'한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 '…부', '모듈' 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
첨부된 도면과 함께 이하에 개시될 상세한 설명은 본 발명의 예시적인 실시형태를 설명하고자 하는 것이며, 본 발명이 실시될 수 있는 유일한 실시형태를 나타내고자 하는 것이 아니다.
본 실시예는 멀티레벨 룩업테이블을 이용한 함수근사 장치 및 방법에 관한 내용을 개시한다. 보다 자세하게는, 구간별 선형 근사(piecewise linear approximation) 또는 구간별 다항식 근사(piecewise polynomial approximation)를 기반으로 비선형 함수값을 근사함에 있어서, 근사 오차를 감소시키기 위해, 함수의 변화량에 따라 세그멘트(segment)의 길이가 상이하게 설정된 멀티레벨(multi-level) LUT(Look-up Table)를 이용하여, 함수에 대한 함수값을 다단계로 근사하는 함수근사 장치 및 방법을 제공한다.
신경망을 위한 HW 가속기(accelerator)는, 일반적으로, 콘볼루션(convolution) 연산과 같은 행렬 연산을 전용으로 수행하는 엔진; 활성화 함수(activation function)와 같은 비선형 함수(non-linear function), 또는 풀링(pooling) 기능을 수행하는 프로세서; 온칩 메모리(on-chip memory); 및 외부 메모리 접속을 위한 DMA(Direct Memory Access)를 포함한다. 본 실시예에 따른 함수근사 장치는, 이러한 구성요소 중 프로세서 상에 탑재되어 동작될 수 있다.
이하의 설명에서, 멀티레벨(multi-level, 이하, '다단계'와 호환하여 사용) LUT는, 다단계 LUT에 포함되는 모든 LUT를 통칭한다. 예컨대, 2단계 LUT는, 포함된 두 개의 LUT를 통칭하는 표현이다. 또한 다단계 LUT에서는, 전단 LUT의 출력을 이용하여 후단 LUT의 출력이 생성된다.
다단계 LUT에 포함된 각 LUT는 제1 LUT, 제2 LUT, ... 등으로 명칭된다.
전술한 바와 같은, NVDLA는 2 개의 LUT를 포함하나, 제1 LUT와 제2 LUT의 출력을 동시에 생성하므로, NVDLA에 포함된 LUT의 형태는 다단계 LUT에 해당하지 않는다.
이하, 구간별 근사의 대상이 되는 원래의 비선형 함수를 '대상 함수' 또는 '함수'로 나타낸다.
또한, 구간과 세그멘트는 동일한 의미로서 호환적으로 사용되고, 따라서 소구간과 소형 세그멘트도 동일한 의미로서 호환적으로 사용된다.
도 1은 본 개시의 일 실시예에 따른 함수근사 장치가 탑재되는 시스템에 대한 개략적인 블록도이다.
함수근사 장치가 탑재되는 시스템은, 데이터 메모리(110), 프로그램 메모리(120), 및 프로세서(130)를 포함한다. 데이터 메모리(110) 및 프로그램 메모리(120)를 이용하여 프로세서(130)는 대상 함수에 대한 함수근사를 수행할 수 있다.
프로세서(130)는, 제어부(132), 레지스터(register, 134), 연산부(calculation unit, 136), 및 메모리 접근부(memory access unit, 138)를 포함한다. 레지스터(134)는 연산부(136)의 연산 입출력이 저장되는 장소이고, 메모리 접근부(138)는 데이터 메모리(110) 및 프로그램 메모리(120)에 대한 접근을 수행하며, 제어부(132)는 프로세서(130)의 동작(예컨대, 파워 관리, 인터럽트 처리 등)을 통제한다. 연산부(136)는, 본 실시예에 따른 함수근사 장치를 탑재하여, 대상 함수에 대한 함수값을 다단계로 근사한다.
도 2는 본 개시의 일 실시예에 따른 함수근사 장치에 대한 개략적인 블록도이다.
함수근사 장치는 연산부(136)에 탑재되고, 구간별 선형 근사 또는 구간별 다항식 근사를 수행하기 위해, 멀티레벨 LUT를 이용하여, 함수에 대한 함수값을 다단계로 근사한다. 도 2에 예시된 바는 2단계 LUT를 이용하는 함수근사 장치를 나타낸다. 함수근사 장치는 입력부(202), 인덱스생성부(204), 제1 LUT(206), 숫자판정부(208), 제2 LUT(212), 및 함수값생성부(214)의 전부 또는 일부를 포함한다. 한편, 제1 LUT(206) 및 제2 LUT(212)는 함수근사 장치 내의 메모리(220)에 포함되고, 인덱스생성부(204) 및 숫자판정부(208)은 함수근사 장치 내의 계수추출부(230)에 포함될 수 있다.
도 2의 도시는, 본 실시예에 따른 예시적인 구성이며, 인덱스생성부의 동작, 멀티레벨 LUT의 구조, 함수값생성부의 동작, 및 메모리의 구성에 따라 다른 구성요소 또는 구성요소 간의 다른 연결을 포함하는 다양한 구현이 가능하다.
먼저, 도 3 및 도 4의 예시를 이용하여, 첫 번째 단계의 제1 LUT(206)와 두 번째 단계의 제2 LUT(212)의 구조, 및 이들의 연관 관계에 대해 설명한다.
전술한 바와 같이, 2N 개의 균등한 세그멘트를 이용하는 경우, 입력 변수의 상위 N 비트만을 이용하여 LUT에 접근할 수 있다. 도 3 및 도 4의 예시는, 제1 LUT(206)에 대해 N이 3인 경우이고, 제2 LUT(212)에 대해 N+1 번째 비트부터 m(여기서, m은 자연수) 개의 비트가 사용되되, m이 1 또는 2인 경우를 나타낸다. 한편, 도 3 및 도 4의 예시는 선형 함수 근사를 나타낸다.
도 3은 본 개시의 일 실시예에 따른 2단계 LUT를 이용하는 선형 함수 근사를 나타내는 예시도이다.
컴퓨팅 장치가 사전에 제2 LUT(212)를 생성하는 간략한 과정은 다음과 같다. 컴퓨팅 장치는 제1 LUT(206)를 이용하여 전체 입력 구간을 8 개(SA0~SA7)로 분할하고, 개별 구간에 대해 대상 함수에 대한 근사 계수를 생성하며, 근사 오차를 산정한다. 컴퓨팅 장치는, 근사 오차를 더 감소시키기 위해 근사 오차가 큰 세그멘트를 소형 세그멘트(SBa, SBb, SBc, SBd)로 분할하고, 개별 소형 세그멘트에 대해 근사 계수를 생성한다. 이때, 소형 세그멘트에 대한 선형 근사 계수는 제2 LUT(212)에 저장된다. 컴퓨팅 장치가 멀티레벨 LUT를 생성하는 자세한 과정은 추후 설명하기로 한다.
도 3의 예시에서는, 대상 함수의 변화량이 상대적으로 작은 SA1과 SA6 구간이 각각 2 개의 소구간(SBa0 SBa1, SBd0~SBd1)으로 세분화되고, 대상 함수의 변화량이 큰 SA2와 SA5 구간이 각각 4 개의 소구간(SBb0~SBb3, SBC0~SBC3)으로 세분화된다. 이때, 제1 LUT(206)는, 근사 계수를 대신하여, 세분화된 소구간 SA1, SA2, SA5, 및 SA6에 대한 데이터로서, 해당 구간이 몇 개의 소구간으로 세분화되는지에 대한 정보, 및 제2 LUT(212)의 어느 위치에 선형 근사 계수가 저장되는지에 대한 정보를 저장한다.
입력 변수값(x)이 주어졌을 때, 함수근사 장치는 이를 이용하여 제1 LUT(206)의 값을 읽고, 읽은 값이 선형 근사 계수인지 '두 번째 단계의 LUT에 대한 매핑 정보(이하, '매핑 정보'와 호환하여 사용)'인지를 판단한다. 매핑 정보이면, 함수근사 장치는 제2 LUT(212)의 해당 위치에서 입력 변수값에 해당하는 선형 근사 계수를 읽은 후, 근사값을 계산한다. 도 3에 예시된 바에 따르면, 2 개의 LUT의 전체 크기는 20(8 +(2 + 4+ 4+ 2))이다. 따라서, 본 실시예에 따른 함수근사 장치는, 도 16에 예시된 것보다 작은 크기의 LUT를 이용하여, 함수를 근사하는 것이 가능하다.
도 4는 본 개시의 일 실시예에 따른 2단계 LUT의 구조에 대한 예시도이다.
도 4에 예시된 바는, 다단계 LUT 방식을, 도 3의 예시와 같이 적용하는 경우, 각 LUT에 저장되는 값을 나타낸다. 전술한 바와 같이, 제1 LUT(206)는, 전체 입력 구간이 8 개로 분할된 경우, i) 개별 구간에 대해 선형 근사 계수를 저장하거나, ii) 두 번째 단계의 LUT에 대한 매핑 정보를 저장한다. 제2 LUT(212)는, 두 번째 단계의 LUT로 매핑된 개별 구간을 각각 필요한 크기의 소형 세그멘트로 분할하여 선형 근사할 경우, 해당되는 근사 계수를 저장한다.
제1 LUT(206)의 [0], [3], [4], 및 [7] 위치는 두 번째 단계의 LUT로 매핑되지 않는 구간이기 때문에, 해당구간에 대해 선형 근사를 위한 직선의 기울기와 오프셋에 대한 계수(도 4의 예시에서, A와 B)를 저장한다.
제1 LUT(206)의 [1]과 [6]의 위치는 해당 구간을 각각 2 개의 소구간으로 세분화하여 두 번째 단계의 LUT에 대한 매핑 정보(BaseIndex, NumSeg)를 저장한다. 여기서, BaseIndex(베이스 인덱스)는 제2 LUT(212)에서의 시작 위치이고, NumSeg(소형 세그멘트의 개수)는 시작 위치로부터의 소형 세그멘트의 개수를 나타낸다. 예컨대, 도 4의 예시에서, 제1 LUT(206)의 [1]은 (BaseIndex, NumSeg) = (0, 2)를 저장한다. 이 값에 따르면, 해당 구간 [1]이 2 개의 소형 세그멘트로 분할된 채로, 제2 LUT(212)의 [0]~[1]의 위치에 선형 근사 계수가 저장됨을 확인할 수 있다.
제1 LUT(206)의 [2]와 [5]의 위치는 해당 구간을 각각 4 개의 소구간으로 세분화하여 매핑 정보를 저장한다. 예컨대, 도 4의 예시에서, 제1 LUT(206)의 [2]는 (BaseIndex, NumSeg) = (2, 4)를 저장한다, 따라서, 해당 구간 [2]가 4 개의 소형 세그멘트로 세분화된 채로, 제2 LUT(212)의 [2]~[5]의 위치에 선형 근사 계수가 저장됨을 확인할 수 있다.
이상에서 설명한 바와 같이, 제1 LUT(206)와 제2 LUT(212)는 지원하는 세그멘트의 크기가 상이하고, 제1 LUT(206)가 지원하는 세그멘트의 크기가 제2 LUT(212)가 지원하는 세그멘트의 크기보다 크다. 또한, 함수근사 장치는, 제1 LUT(206)가 제공하는 매핑 정보를 기반으로 제2 LUT(212)를 접근할 수 있다.
이하, 함수근사 장치의 나머지 구성요소에 대해 설명한다.
입력부(202)는, 대상 함수에 대해 입력 변수(값) x를 획득한다. 여기서, 입력 변수는, 컴퓨팅 시스템에서 일반적으로 이용되는 플로팅포인트 넘버(floating point number, 이하 'FP 넘버')로 표현될 수 있다. FP 넘버 체계는 매우 넓은 범위의 크기를 표현하는 것이 가능하다.
하프프리시전(half-precision) FP 넘버(이하 'FP16', 즉, 16 비트 플로팅포인트 넘버)는, 도 5에 예시된 바와 같이, 1 비트의 부호(sign, S), 5 비트의 지수(exponent, E), 및 10 비트의 만티사(mantissa, M)로 구성된다. 이때, E 필드와 M 필드의 값에 따라서 일반적인 숫자(normalized number, +/-0)를 나타내거나, 특수한 값(NaN(Not a Number), +/-Inf(무한대), sub-normal number(부정규 넘버))을 나타낼 수 있다. 도 5의 예시에서, M2=10112인 경우, 숫자에 대해, '1.M2 = 1 + 1× (2-1) + 1×(2-3) + 1×(2-4)'를 나타내고, 부정규 넘버에 대해, '0.M2 = 0 + 1× (2-1) + 1×(2-3) + 1×(2-4)'를 나타낸다.
선형 근사를 위한 기울기와 오프셋에 해당하는 계수를 LUT에 저장할 때, normalized number와 +/-0, 또는 +/-Inf는 숫자로서 이용되나, NaN과 같은 코드는 사용되지 않는다. 따라서, 제1 LUT(206)에 두 가지 형태의 정보(선형 근사 계수 또는 두 번째 단계의 LUT에 대한 매핑 정보)를 저장할 때, FP 넘버 체계에서 숫자로 사용하지 않는 NaN과 같은 코드를 이용하여, 추가적인 오버헤드 없이 매핑 정보가 저장될 수 있다. 이렇게 함으로써, 제1 LUT(206)로부터 읽은 값이 선형 근사 계수 또는 매핑 정보 중 어느 것인지가 구분될 수 있다. 두 번째 단계의 LUT에 대한 매핑 정보를 NaN 코드에 매핑하는 방법은 추후 설명하기로 한다.
인덱스생성부(204)는, 입력 변수로부터, 제1 LUT(206)에 접근하기 위한 제1 인덱스를 생성한다. 제1 인덱스는, 제1 LUT(206)에서 입력 변수값을 포함하는 세그멘트에 대한 정보를 저장하는 위치를 지시할 수 있다.
입력 변수가 FP 넘버인 경우, FP 넘버를 정수로 변환한 후 상위 N 비트를 추출하여 N 비트의 제1 인덱스가 생성될 수 있다. 한편, 입력 변수가 정수 형태인 경우, 전술한 바와 같이, 입력 변수의 상위 N 비트를 추출하여 제1 인덱스가 생성될 수 있다.
함수근사 장치는 제1 인덱스를 기반으로 제1 LUT(206)의 출력을 추출한다. 전술한 바와 같이, 이 출력은 제1 LUT(206)가 지원하는 세그멘트에 대한 선형 근사 계수, 또는 제2 LUT(212)에 대한 매핑 정보일 수 있다.
숫자판정부(208)은 제1 LUT(206)의 출력이 플로팅포인트 넘버 체계 상의 숫자인지를 판정한다.
숫자인 경우, 제1 LUT(206)의 출력은 세그멘트에 대한 선형 근사 계수, 즉 기울기와 오프셋을 나타낸다.
반면, 숫자가 아닌 경우(예를 들어, NaN 코드), 제1 LUT(206)의 출력은 제2 LUT(212)에 대한 매핑 정보를 나타내고, 베이스 인덱스와 소형 세그멘트의 개수를 포함한다.
인덱스생성부(204)는, 입력 변수 및 매핑 정보로부터, 제2 LUT(212)에 접근하기 위한 제2 인덱스를 생성한다. 소형 세그멘트의 개수가 2m 인 경우, 제1 인덱스에 이용된 N 비트 이후의 m 개의 비트를 이용하여, 인덱스생성부(204)는 해당되는 소형 세그멘트의 위치를 계산한 후, 소형 세그멘트 위치에 베이스 인덱스를 더하여 제2 인덱스를 생성할 수 있다.
함수근사 장치는 제2 인덱스를 기반으로 제2 LUT(212)의 출력을 추출한다. 제2 LUT(212)의 출력은 소형 세그멘트에 대한 선형 근사 계수를 나타낸다.
함수값생성부(214)는 선형 근사 계수를 이용하여, 대상 함수에 대한 근사값을 생성한다. 여기서, 선형 근사 계수, 즉 기울기(A)와 오프셋(B)은 제1 LUT(206) 또는 제2 LUT(212)의 출력일 수 있다. 함수에 대한 근사값은, 입력 변수 x에 대해, y = Ax+B로 계산될 수 있다.
이하, 도 6 내지 도 8의 도시를 이용하여, 두 번째 단계의 LUT에 대한 매핑 정보를 FP 넘버 체계 상의 NaN 코드에 매핑하는 방법을 설명한다.
FP 넘버 체계에서 NaN은, 도 5에 예시된 바와 같이, E 필드의 모든 비트가 1이고 M 필드가 0이 아닌 경우를 나타낸다. 따라서, 두 번째 단계의 LUT에 대한 매핑 정보로서 0이 아닌 값을 NaN 코드의 M 필드에 저장하여, 제2 LUT(212)에 저장된 값이 매핑 정보인지의 여부를 구분할 수 있다.
매핑 정보 중 세그멘트의 수는 항상 0보다 큰 값을 갖는다는 점에 기초하여, NaN 코드가 매핑 정보로서 활용될 수 있다, 도 6의 예시에서는, 제1 LUT(206)로부터 읽은 값 중, B의 위치에 저장된 값에 대해, E 필드의 모든 비트값이 1이고 M 필드의 값이 0이 아닌 경우, 함수근사 장치는 B의 위치에 저장된 값을 두 번째 단계의 LUT에 대한 매핑 정보인 것으로 간주한다. 또한, 함수근사 장치는 A와 B 위치의 FP 넘버에서 M 필드에 저장된 값을 이용하여, 매핑 정보인 BaseIndex와 NumSeg를 확인한다.
한편, 도 6의 예시된 방식의 경우, 전술한 바와 같이, M 필드의 값이 0인지를 판단하기 위해, 이를 위한 HW 로직이 사용되어야 하는데, M 필드에 할당된 비트의 수가 증가할수록 로직에 따른 지연이 길어질 수 있다.
이러한 지연을 감소시켜 더 신속한 동작을 할 수 있도록, NaN 코드에 매핑 정보를 저장 시, M 필드 중 하나의 기설정된 위치의 비트값이 1로 고정될 수 있다. 도 7 및 도 8의 예시는, 제1 LUT(206)에 저장된 값 중 M 필드의 최상위 비트값을 1로 고정시킨 후, 두 번째 단계의 LUT에 대한 매핑 정보를 저장하는 방식을 나타낸다. 도 7의 예시에서는, A 위치에 저장된 값을 이용하여 매핑 정보의 포함 여부가 확인되고, 도 8의 예시에서는, B 위치에 저장된 값을 이용하여 매핑 정보의 포함 여부가 확인될 수 있다.
본 개시에 따른 다른 실시예에 있어서, FP 넘버 체계 상의 부정규 넘버(sub-normal number)가 근사 계수를 나타내기 위해 사용되지 않는 경우, 두 번째 단계의 LUT에 대한 매핑 정보는, 부정규 넘버 코드에 매핑될 수 있다.
FP 넘버 체계에서 부정규 넘버는, 도 5에 예시된 바와 같이, E 필드의 모든 비트가 0이고 M 필드가 0이 아닌 경우를 나타낸다. 따라서, 두 번째 단계의 LUT에 대한 매핑 정보로서 0이 아닌 값을 부정규 넘버 코드의 M 필드에 저장하여, 제2 LUT(212)에 저장된 값이 매핑 정보인지의 여부를 구분할 수 있다.
매핑 정보 중 세그멘트의 수는 항상 0보다 큰 값을 갖는다는 점에 기초하여, 부정규 넘버 코드가 매핑 정보로서 활용될 수 있다, 즉, 제1 LUT(206)로부터 읽은 값 중, B의 위치에 저장된 값에 대해, E 필드의 모든 비트값이 0이고 M 필드의 값이 0이 아닌 경우, 함수근사 장치는 B의 위치에 저장된 값을 두 번째 단계의 LUT에 대한 매핑 정보인 것으로 간주한다.
또한, 신속한 동작을 위해, 부정규 넘버 코드에 매핑 정보를 저장 시, M 필드 중 하나의 기설정된 위치의 비트값이 1로 고정될 수 있다.
한편, FP 넘버 체계에서 NaN 코드 또는 부정규 넘버 코드의 S 필드는 무관 조건(don't care condition)을 갖는다.
본 개시에 따른 다른 실시예에 있어서, 두 번째 단계의 LUT에 대한 매핑 정보가 NaN 코드 또는 부정규 넘버 코드에 저장되는 경우, 매핑 정보임을 나타내기 위해 해당 코드의 S 필드가 기설정된 값으로 설정될 수 있다. 예컨대, 사전에 설정된 규칙에 따라, S 필드가 1이면, M 필드가 매핑 정보를 나타낼 수 있다.
도 9는 본 개시의 일 실시예에 따른, 2단계 LUT에 기반하는 함수근사 방법에 대한 흐름도이다.
함수근사 장치는 대상 함수에 대해 입력 변수(값)를 획득한다(S900).
함수근사 장치는, 제1 LUT(206)에 접근하기 위해, 입력 변수로부터 제1 인덱스를 생성한다(S902). 제1 인덱스는, 제1 LUT(206)에서 입력 변수값을 포함하는 세그멘트에 대한 정보를 저장하는 위치를 지시할 수 있다.
함수근사 장치는, 제1 인덱스를 기반으로 제1 LUT(206)의 출력을 추출한다(S904). 전술한 바와 같이, 이 출력은 제1 LUT(206)가 지원하는 세그멘트에 대한 선형 근사 계수, 또는 제2 LUT(212)에 대한 매핑 정보일 수 있다.
함수근사 장치는, 제1 LUT(206)의 출력이 플로팅포인트 넘버 체계 상의 숫자인지를 판정한다(S906).
숫자인 경우, 제1 LUT(206)의 출력은 세그멘트에 대한 선형 근사 계수, 즉 기울기와 오프셋을 나타낸다.
반면, 숫자가 아닌 경우(예를 들어, NaN 코드), 제1 LUT(206)의 출력은 제2 LUT(212)에 대한 매핑 정보를 나타내고, 베이스 인덱스와 소형 세그멘트의 개수를 포함한다.
함수근사 장치는, 제2 LUT(212)에 접근하기 위해, 입력 변수 및 매핑 정보로부터, 제2 인덱스를 생성한다(S908).
함수근사 장치는, 제2 인덱스를 기반으로 제2 LUT(212)의 출력을 추출한다(S910). 제2 LUT(212)의 출력은 소형 세그멘트에 대한 선형 근사 계수를 나타낸다.
함수근사 장치는, 선형 근사 계수를 이용하여, 함수에 대한 근사값을 생성한다(S912). 여기서, 선형 근사 계수, 즉 기울기(A)와 오프셋(B)은 제1 LUT(206) 또는 제2 LUT(212)의 출력일 수 있다. 함수에 대한 근사값은, 입력 변수 x에 대해, y = Ax+B로 계산될 수 있다.
이상, 본 실시예에 대한 설명은 2단계 LUT에 기반하는 선형 근사에 대한 것이나, 본 실시예의 적용 범위가 반드시 이에 한정하는 것은 아니다. 본 개시의 따른 다른 실시예에 있어서, 함수근사 장치가 K(K는 자연수) 개의 LUT로 구성된 멀티레벨 LUT를 포함하는 경우, 도 2 및 도 9에 예시된 바와 같은, 제1 LUT(206)를 기반으로 제2 LUT(212)에 대한 매핑 정보를 생성하는 과정을 제3 LUT를 포함하는 이후의 모든 LUT에 동일하게 적용함으로써, 다단계 LUT에 기반하는 선형 근사를 구현할 수 있다.
도 10은 본 개시의 일 실시예에 따른 멀티레벨 LUT에 기반하는 함수근사 장치에 대한 개략적인 블록도이다.
멀티레벨 LUT에 기반하는 함수근사 장치는 연산부(136)에 탑재되어 도 2에 예시된 바와 동일하게 구현되되, 메모리(220)는 멀티레벨 LUT를 포함한다.
여기서, 멀티레벨 LUT는 K(K는 2 이상의 자연수) 개의 LUT를 포함한다. K 개의 LUT 각각은 지원하는 세그멘트의 크기가 상이하고, 제k(여기서, k는 1부터 K-1까지의 자연수) LUT가 지원하는 세그멘트의 크기가 제(k+1) LUT가 지원하는 세그멘트의 크기보다 크다. K 개의 LUT 각각은, 전술한 바와 같은, 플로팅포인트 넘버 체계로 표현될 수 있다.
함수근사 장치는, 제k LUT가 제공하는 매핑 정보를 기반으로 제(k+1) LUT를 접근할 수 있다. 따라서, 제k LUT는, 세그멘트에 대한 정보로서, 선형 근사 계수 또는 매핑 정보를 포함하고, 마지막 단계의 제K LUT는 세그멘트에 대한 정보로서, 선형 근사 계수를 포함한다.
매핑 정보는, 제k LUT에서 지원하는 전체 세그멘트 중 t(여기서, t는 자연수) 개의 세그멘트에 대해, t 개의 세그멘트 각각을 제(k+1) LUT에서 지원하는 소형 세그멘트로 분할하는 정보이다. 이때, t 개의 세그멘트 각각은 함수에 대한 근사 오차가 기설정된 임계치보다 큰 세그멘트이다. 소형 세그멘트의 개수는, t 개의 세그멘트 각각이 갖는, 함수에 대한 근사 오차의 크기에 따라 결정될 수 있다. 매핑 정보는, t 개의 세그멘트 각각에 대해, 제(k+1) LUT에서의 시작 위치인 베이스 인덱스, 및 소형 세그멘트의 개수를 포함할 수 있다.
한편, 플로팅포인트 넘버 체계상에서 매핑 정보를 정의하는 방법은, 도 5 내지 8을 기반으로 이미 기술되었으므로, 더 이상의 자세한 설명을 생략한다.
도 10의 예시에서, 입력부(202)는 대상 함수에 대해 입력 변수(값)를 획득한다.
계수추출부(230)는 입력 변수를 기반으로 멀티레벨 LUT를 이용하여 함수에 대한 선형 근사 계수를 추출한다.
먼저, 인덱스생성부(204)는 입력 변수 및 매핑 정보를 기반으로 제j(여기서, j는 1부터 K까지의 자연수) 인덱스를 생성한다. 여기서, 제1 인덱스는 입력 변수만을 기반으로 생성된다.
다음, 숫자판정부(208)은 제j 인덱스를 기반으로 제j LUT로부터 추출된 제j 출력이 숫자인지를 판단한다.
계수추출부(230)는 제j 출력이 플로팅포인트 넘버 체계 상의 숫자인 경우, 제j 출력을 선형 근사 계수로 추출하고, 제j 출력이 매핑 정보인 경우, 다음 단의 LUT를 기반으로 매핑 정보를 이용하여 선형 근사 계수를 다시 추출한다.
함수값생성부(214) 선형 근사 계수를 이용하여 입력 변수에 대한 함수값을 생성한다.
한편, 도 2 또는 도 10에 예시된, 다단계 LUT를 포함하는 메모리(220)는 다음과 같이 구현될 수 있다.
본 개시의 일 실시예에 있어서, 다단계 LUT에 포함된 각 LUT는 물리적으로 분리된 다른 메모리로 구현될 수 있다. 함수근사 장치는 각 LUT를 접근함에 있어서, 파이프라인 방식에 기반하여 분리된 메모리에 포함된 각 LUT를 접근할 수 있다. 이때, 숫자 판정부(208) 및 계수추출부(230)를 각 파이프라인 스테이지마다 배치하여 각 LUT에 접근하기 위한 인덱스를 생성함으로써, 함수 근사를 위한 연산 속도(throughput)가 증가될 수 있다.
본 개시에 따른 다른 실시예에 있어서, 함수 근사를 위한 HW의 면적을 감소시키기 위해, 다단계 LUT에 포함된 각 LUT가 논리적으로 구분된 채로, 다단계 LUT가 물리적으로 동일한 메모리에 저장될 수 있다. 함수근사 장치는 기저장된, 각 LUT에 대한 메모리 내 시작 위치를 기반으로 각 LUT에 접근하기 위한 인덱스를 생성할 수 있다.
도 11은 본 개시의 일 실시예에 따른 멀티레벨 LUT에 기반하는 함수근사 방법에 대한 흐름도이다.
함수근사 장치는, 입력 변수(값)를 획득하고, j(여기서, j는 1부터 K까지의 자연수)를 1로 초기화한다(S1100).
함수근사 장치는, 입력 변수 및 매핑 정보를 기반으로 제j 인덱스를 생성한다(S1102). 여기서, 제1 인덱스는 입력 변수만을 기반으로 생성된다.
함수근사 장치는, 제j 인덱스를 기반으로 제j LUT로부터 제j 출력을 생성한다(S1104). 제j 출력은 제j LUT가 지원하는 세그멘트에 대한 선형 근사 계수, 또는 다음 단의 LUT에 대한 매핑 정보일 수 있다.
함수근사 장치는, 제j 출력이 플로팅포인트 넘버 체계 상의 숫자인지를 판단한다(1106).
함수근사 장치는, 제j 출력이 매핑 정보인 경우, j를 1만큼 증가시킨 후(S1108), 매핑 정보를 이용하여 선형 근사 계수를 추출하는 과정(S1102 내지 S1106)을 반복한다. 함수근사 장치는, 제j 출력이 숫자인 경우, 제j 출력을 선형 근사 계수로 추출한다.
함수근사 장치는, 선형 근사 계수를 이용하여, 함수에 대한 근사값을 생성한다(S1110).
이하, 다단계 LUT 중 2단계 LUT를 이용하고, 각 단계에서 세그멘트의 개수가 2N으로 설정되는 선형 근사에 있어서, 컴퓨팅 장치가 2단계 LUT를 생성하는 방법을 설명한다.
도 12은 본 개시의 일 실시예에 따른, 선형 근사 기반의 2단계 LUT를 생성하는 방법에 대한 흐름도이다.
컴퓨팅 장치는, HW에서 사용할 수 있는 LUT의 크기(제1 LUT 또는 제2 LUT가 지원하는 세그멘트의 개수)가 주어진 것으로 가정한다.
컴퓨팅 장치는, 대상 함수의 전체 입력 범위를 제1 LUT의 크기(num_lut1)로 분할하여, 대상 함수와 근사 함수 간의 오차를 줄이는 방향으로, 대상 함수에 구간별 선형 근사를 적용한다(S1200).
컴퓨팅 장치는, 계산된 기울기와 오프셋에 대한 계수를 제1 LUT에 저장한다(S1202). 이때, 각각의 세그멘트가 제2 LUT로 매핑되지 않았음을 표시한다(link_info[].mapped = false).
컴퓨팅 장치는, 각 세그멘트에 대해, 대상 함수와 근사 함수 간의 오차를 계산한다(S1204).
제2 LUT에서 아직 값이 채워지지 않은 영역의 수(lut2_remained)를 제2 LUT의 크기로 설정한다(S1206).
컴퓨팅 장치는, 제1 LUT의 각 세그멘트 중에서 가장 큰 오차(ES1)를 갖는 세그멘트(S1)를 선택한다(S1208). 여기서, 오차가 크다는 것은, 해당 세그멘트에서 대상 함수의 변화량이 커서, 대상 함수와 근사 함수 간의 값의 차이가 크다는 것을 나타낸다.
컴퓨팅 장치는, 가장 큰 오차(ES1)가, 목표로 하는, 기설정된 오차 임계치(ETH)보다 작은지를 확인하여(S1210), 큰 경우, 해당 구간을 소형 세그멘트로 분할하는 과정(S1212 내지 S1226)을 수행하고, 작은 경우, 소형 세그멘트로 분할하는 과정을 종료한다.
컴퓨팅 장치는, 현재 선택된 세그멘트가 제2 LUT로 매핑되어 있는지를 확인하여(S1212), 매핑된 경우, 제2 LUT로 매핑된 세그멘트의 수의 2 배를 num_segment_lut2_cur로 설정한다(S1214). 매핑되지 않은 경우, 컴퓨팅 장치는, num_segment_lut2_cur를 2로 설정한다(S1216).
다음, 컴퓨팅 장치는, num_segment_lut2_cur가 현재 사용 가능한 lut2의 빈 공간의 수(lut2_remained)보다 적은지를 확인하여(S1218), 적지 않은 경우, 소형 세그멘트로 분할하는 과정을 종료한다.
컴퓨팅 장치는, 적은 경우, 현재 선택된 세그멘트를 num_segment_lut2_cur로 분할하여 선형 근사하도록 제2 LUT로의 매핑 정보를 바꾸어주고, 제2 LUT의 빈 공간의 수에서 추가로 사용한 2단계 LUT의 공간의 수를 감산한다.
컴퓨팅 장치는, 대상 함수와 근사 함수 간의 오차를 줄이는 방향으로, 2단계로 분할된 소형 세그멘트 각각에 대해 정밀한 선형 근사를 수행한다(S1220).
컴퓨팅 장치는, 계산된 기울기와 오프셋에 대한 계수를 제2 LUT에 저장한다(S1222).
컴퓨팅 장치는, 소형 세그멘트 각각에 대해, 대상 함수와 근사 함수 간의 오차를 계산한다(S1224).
컴퓨팅 장치는, 제2 LUT에 대해 계산된 오차 중 가장 큰 오차로, 제1 LUT에서 선택한 구간에 대한 근사 오차(ES1)를 대치한다(S1226).
전술한 바와 같이, 소형 세그멘트를 포함하는 전체 세그멘트의 근사 오차가 임계치(ETH)보다 작아지거나, 제2 LUT에서 사용 가능한 공간이 더 이상 충분히 남아 있게되지 않을 때까지, 컴퓨팅 장치는, 제2 LUT로의 매핑 과정(S1208 내지 S1226)을 반복한다. 이러한 반복 과정을 이용하여, 주어진 HW의 LUT 크기 조건을 만족하면서 근사 오차를 최소화할 수 있는 2단계 함수 근사 결과가 획득될 수 있다.
본 개시에 따른 다른 실시예에 있어서, 컴퓨팅 장치는, 다단계 LUT에 포함된 K 개의 LUT에 대해, 도 12에 예시된 바와 같은, 선형 근사 기반의 2단계 LUT를 생성하는 방법을, 제k(여기서, k는 1부터 K-1까지의 자연수) LUT와 제(k+1) LUT에 대해 반복하여 적용함으로써, 선형 근사 기반의 다단계 LUT를 생성할 수 있다.
이상에서 설명한 바와 같이 본 실시예는 구간별 선형 근사 방식의 적용에 대해 기술되었으나, 구간별 다항식 근사 방식도 유사하게 적용할 수 있다. 구간별 선형 근사의 경우, 각 세그멘트를 표현하는 수식이 y = Ax+B 이기 때문에 두 개의 계수를 저장할 수 있는 LUT를 사용한다. P차의 다항식으로 구간별 근사를 적용하는 경우, 각 세그멘트를 표현하는 수식이
Figure PCTKR2022010127-appb-img-000001
이므로, 한 구간에 대해 저장하는 계수가 (P+1) 개이다. 따라서, (P+1) 개의 계수를 저장할 수 있는 LUT를 사용한다.
도 6 내지 도 8의 예시는, 선형 근사를 나타내므로, 각 구간별로 존재하는 두 개의 계수를 표현함에 있어서, 예컨대, NaN 코드를 이용하여 다음 단의 LUT에 대한 매핑 정보를 어느 계수에 저장할지를 나타내고 있다. 다항식 근사에서는 (P+1) 개의 계수가 사용되므로, NaN 코드를 이용하는 방식을 유사하게 확장하여, 다음 단의 LUT에 대한 매핑 정보가, 이전 단의 (P+1)개의 계수 중 기설정된 위치에 저장될 수 있다.
이하, 본 실시예에 따른 다단계 방식 중, 2단계 구간별 선형 근사 방법과 기존의 1단계 구간별 선형 근사 방법 간의 성능을 비교한다. 신경망에서 자주 사용되는 활성화 함수(activation function)인 tanh 및 sigmoid 함수에 대한 비교 결과는 표 1에 나타낸 바와 같다.
Figure PCTKR2022010127-appb-img-000002
표 1은, 기존 방법으로 64 개의 구간별 선형 근사를 적용한 경우와 2단계 구간별 선형 근사를 적용한 경우의 근사 오차가 상호 비슷할 때, LUT 크기(제1 LUT와 제2 LUT의 크기)를 나타내고 있다. 기존 방식과 비교하여, 제안하는 다단계 LUT 방식은, 59.4 % ~ 75 % 크기의 LUT만을 사용하여, 비슷한 근사 오차를 가진 채로, 대상 함수에 대한 근사가 가능함을 알 수 있다.
본 실시예에 따른 각 순서도에서는 각각의 과정을 순차적으로 실행하는 것으로 기재하고 있으나, 반드시 이에 한정되는 것은 아니다. 다시 말해, 순서도에 기재된 과정을 변경하여 실행하거나 하나 이상의 과정을 병렬적으로 실행하는 것이 적용 가능할 것이므로, 순서도는 시계열적인 순서로 한정되는 것은 아니다.
본 명세서에 설명되는 시스템들 및 기법들의 다양한 구현예들은, 디지털 전자 회로, 집적 회로, FPGA(field programmable gate array), ASIC(application specific integrated circuit), 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 이들의 조합으로 실현될 수 있다. 이러한 다양한 구현예들은 프로그래밍가능 시스템 상에서 실행가능한 하나 이상의 컴퓨터 프로그램들로 구현되는 것을 포함할 수 있다. 프로그래밍가능 시스템은, 저장 시스템, 적어도 하나의 입력 디바이스, 그리고 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하고 이들에게 데이터 및 명령들을 전송하도록 결합되는 적어도 하나의 프로그래밍가능 프로세서(이것은 특수 목적 프로세서일 수 있거나 혹은 범용 프로세서일 수 있음)를 포함한다. 컴퓨터 프로그램들(이것은 또한 프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 혹은 코드로서 알려져 있음)은 프로그래밍가능 프로세서에 대한 명령어들을 포함하며 "컴퓨터가 읽을 수 있는 기록매체"에 저장된다.
이상의 설명은 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 실시예들은 본 실시예의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 실시예의 기술 사상의 범위가 한정되는 것은 아니다. 본 실시예의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 실시예의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
(부호의 설명)
130: 프로세서 132: 프로세서
134: 레지스터 136: 연산부
138: 메모리 접근부
202: 입력부 204: 인덱스생성부
206: 제1 LUT 208: 숫자판정부
212: 제2 LUT 214: 함수값생성부
200: 메모리 230: 계수추출부
CROSS-REFERENCE TO RELATED APPLICATION
본 특허출원은 2021년 7월 19일 한국에 출원한 특허출원번호 제10-2021-0094365 호에 대해 우선권을 주장하며, 그 모든 내용은 참고문헌으로 본 특허출원에 병합된다.

Claims (17)

  1. 컴퓨팅 장치가 수행하는, 구간별(piecewise) 함수근사 방법에 있어서,
    함수에 대해 입력 변수값을 획득하는 과정;
    상기 입력 변수값을 기반으로 멀티레벨(multi-level) LUT(Look-up Table)를 이용하여 상기 함수에 대한 근사 계수를 추출하는 과정, 여기서, 상기 멀티레벨 LUT는 K(K는 2 이상의 자연수) 개의 LUT를 포함함; 및
    상기 근사 계수를 이용하여 상기 입력 변수값에 대한 함수값을 연산하는 과정
    을 포함하되,
    상기 K 개의 LUT 각각은,
    지원하는 세그멘트의 크기가 상이하고, 제k(여기서, k는 1부터 K-1까지의 자연수) LUT가 지원하는 세그멘트의 크기가 제(k+1) LUT가 지원하는 세그멘트의 크기보다 크고, 상기 제k LUT가 제공하는 매핑 정보를 기반으로 상기 제(k+1) LUT를 접근하는 것을 특징으로 하는, 구간별 함수근사 방법.
  2. 제1항에 있어서,
    상기 매핑 정보는,
    상기 제k LUT에서 지원하는 전체 세그멘트 중 t(여기서, t는 자연수) 개의 세그멘트에 대해, 상기 t 개의 세그멘트 각각을 상기 제(k+1) LUT에서 지원하는 소형 세그멘트로 분할하는 정보인 것을 특징으로 하는, 구간별 함수근사 방법.
  3. 제2항에 있어서,
    상기 t 개의 세그멘트 각각은,
    상기 함수에 대한 근사 오차가 기설정된 임계치보다 큰 세그멘트이고, 상기 소형 세그멘트의 개수는, 상기 t 개의 세그멘트 각각이 갖는, 상기 근사 오차의 크기에 따라 결정되는 것을 특징으로 하는, 구간별 함수근사 방법.
  4. 제2항에 있어서,
    상기 매핑 정보는,
    상기 t 개의 세그멘트 각각에 대해, 상기 제(k+1) LUT에서의 시작 위치인 베이스 인덱스, 및 상기 소형 세그멘트의 개수를 포함하는 것을 특징으로 하는, 구간별 함수근사 방법.
  5. 제1항에 있어서,
    상기 제k LUT는, 세그멘트에 대한 정보로서, 상기 근사 계수 또는 상기 매핑 정보를 포함하고, 제K LUT는, 세그멘트에 대한 정보로서, 상기 근사 계수를 포함하는 것을 특징으로 하는, 구간별 함수근사 방법.
  6. 제1항에 있어서,
    상기 근사 계수를 추출하는 과정은,
    상기 입력 변수값 및 상기 매핑 정보를 기반으로 제j(여기서, j는 1부터 상기 K까지의 자연수) 인덱스를 생성하는 과정, 여기서, 상기 제1 인덱스는 상기 입력 변수값만을 기반으로 생성됨;
    상기 제j 인덱스를 이용하여 상기 제j LUT로부터 제j 출력을 추출하는 과정; 및
    상기 제j 출력이 상기 플로팅포인트 넘버 체계 상의 숫자인 경우, 상기 제j 출력을 상기 근사 계수로 추출하는 과정
    을 포함하되,
    상기 제j 출력이 상기 매핑 정보인 경우, 상기 매핑 정보를 이용하여 상기 근사 계수를 추출하는 과정을 반복하는 것을 특징으로 하는, 구간별 함수근사 방법.
  7. 제1항에 있어서,
    상기 K 개의 LUT 각각은,
    플로팅포인트 넘버 체계에서, 숫자로 이용하는 코드 영역에 상기 근사 계수를 할당하고, 상기 숫자로 이용하는 않는 코드 영역에 상기 매핑 정보를 할당하는 것을 특징으로 하는, 구간별 함수근사 방법.
  8. 제7항에 있어서,
    상기 K 개의 LUT 각각은,
    상기 근사 계수를 나타내기 위해 부정규 넘버(sub-normal number) 코드를 이용하지 않는 경우, 상기 부정규 넘버의 코드 영역에 상기 매핑 정보를 할당하는 것을 특징으로 하는, 구간별 함수근사 방법.
  9. 제8항에 있어서,
    상기 매핑 정보 중 상기 소형 세그멘트의 개수를 나타내는 플로팅포인트 넘버에 대해, 만티사 필드(mantissa)에 0이 아닌 값을 설정하여, 상기 매핑 정보임을 나타내는 것을 특징으로 하는, 구간별 함수근사 방법.
  10. 제8항에 있어서,
    상기 매핑 정보를 나타내는 플로팅포인트 넘버에 대해, 만티사 필드 중 하나의 기설정된 위치의 비트값을 1로 설정하여, 상기 매핑 정보임을 나타내는 것을 특징으로 하는, 구간별 함수근사 방법.
  11. 제8항에 있어서,
    상기 매핑 정보를 나타내는 플로팅포인트 넘버에 대해, 부호 필드에 기설정된 값을 설정하여, 상기 매핑 정보임을 나타내는 것을 특징으로 하는, 구간별 함수근사 방법.
  12. 함수에 대해 입력 변수값을 획득하는 입력부;
    멀티레벨(multi-level) LUT(Look-up Table)를 포함하는 메모리, 여기서, 상기 멀티레벨 LUT는 K(K는 2 이상의 자연수) 개의 LUT를 포함함;
    상기 입력 변수값을 기반으로 상기 멀티레벨 LUT를 이용하여 상기 함수에 대한 근사 계수를 추출하는 계수추출부; 및
    상기 근사 계수를 이용하여 상기 입력 변수값에 대한 함수값을 연산하는 함수값생성부
    를 포함하되,
    상기 K 개의 LUT 각각은,
    지원하는 세그멘트의 크기가 상이하고, 제k(여기서, k는 1부터 K-1까지의 자연수) LUT가 지원하는 세그멘트의 크기가 제(k+1) LUT가 지원하는 세그멘트의 크기보다 크고, 상기 제k LUT가 제공하는 매핑 정보를 기반으로 상기 제(k+1) LUT를 접근하는 것을 특징으로 하는, 구간별 함수근사 장치.
  13. 제12항에 있어서,
    상기 매핑 정보는,
    상기 제k LUT에서 지원하는 전체 세그멘트 중 t(여기서, t는 자연수) 개의 세그멘트에 대해, 상기 t 개의 세그멘트 각각을 상기 제(k+1) LUT에서 지원하는 소형 세그멘트로 분할하는 정보인 것을 특징으로 하는, 구간별 함수근사 장치.
  14. 제13항에 있어서,
    상기 t 개의 세그멘트 각각은,
    상기 함수에 대한 근사 오차가 기설정된 임계치보다 큰 세그멘트이고, 상기 소형 세그멘트의 개수는, 상기 t 개의 세그멘트 각각이 갖는, 상기 근사 오차의 크기에 따라 결정되는 것을 특징으로 하는, 구간별 함수근사 장치.
  15. 제12항에 있어서,
    상기 계수추출부는,
    상기 입력 변수값 및 상기 매핑 정보를 기반으로 제j(여기서, j는 1부터 K까지의 자연수) 인덱스를 생성하는 인덱스생성부, 여기서, 상기 제1 인덱스는 상기 입력 변수값만을 기반으로 생성됨; 및
    상기 제j 인덱스를 기반으로 상기 제j LUT로부터 추출된 제j 출력이 상기 플로팅포인트 넘버 체계 상의 숫자인지를 판단하는 숫자판정부
    를 포함하되,
    상기 제j 출력이 상기 숫자인 경우, 상기 제j 출력을 상기 근사 계수로 추출하고, 상기 제j 출력이 상기 매핑 정보인 경우, 상기 매핑 정보를 이용하여 상기 근사 계수를 다시 추출하는 것을 특징으로 하는, 구간별 함수근사 장치.
  16. 제12항에 있어서,
    상기 K 개의 LUT 각각은,
    플로팅포인트 넘버 체계에서, 숫자로 이용하는 코드 영역에 상기 근사 계수를 할당하고, 상기 숫자로 이용하는 않는 코드 영역에 상기 매핑 정보를 할당하는 것을 특징으로 하는, 구간별 함수근사 장치.
  17. 명령어가 저장된, 컴퓨터로 읽을 수 있는 기록매체로서, 상기 명령어는 상기 컴퓨터에 의해 실행될 때 상기 컴퓨터로 하여금,
    함수에 대해 입력 변수값을 획득하는 과정;
    상기 입력 변수값을 기반으로 멀티레벨(multi-level) LUT(Look-up Table)를 이용하여 상기 함수에 대한 근사 계수를 추출하는 과정, 여기서, 상기 멀티레벨 LUT는 K(K는 2 이상의 자연수) 개의 LUT를 포함함; 및
    상기 근사 계수를 이용하여 상기 입력 변수값에 대한 함수값을 연산하는 과정
    을 실행하도록 하되,
    상기 K 개의 LUT 각각은,
    지원하는 세그멘트의 크기가 상이하고, 제k(여기서, k는 1부터 K-1까지의 자연수) LUT가 지원하는 세그멘트의 크기가 제(k+1) LUT가 지원하는 세그멘트의 크기보다 크고, 상기 제k LUT가 제공하는 매핑 정보를 기반으로 상기 제(k+1) LUT를 접근하는 것을 특징으로 하는, 컴퓨터로 읽을 수 있는 기록매체.
PCT/KR2022/010127 2021-07-19 2022-07-12 멀티레벨 룩업테이블을 이용한 함수근사 장치 및 방법 WO2023003246A1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP22846116.6A EP4375855A1 (en) 2021-07-19 2022-07-12 Function approximation device and method using multi-level look-up table
CN202280050505.1A CN117859124A (zh) 2021-07-19 2022-07-12 使用多层级查找表的函数近似方法和装置
US18/579,212 US20240320301A1 (en) 2021-07-19 2022-07-12 Method and apparatus for function approximation using multi-level lookup table

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2021-0094365 2021-07-19
KR1020210094365A KR102529602B1 (ko) 2021-07-19 2021-07-19 멀티레벨 룩업테이블을 이용한 함수근사 장치 및 방법

Publications (1)

Publication Number Publication Date
WO2023003246A1 true WO2023003246A1 (ko) 2023-01-26

Family

ID=84979446

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2022/010127 WO2023003246A1 (ko) 2021-07-19 2022-07-12 멀티레벨 룩업테이블을 이용한 함수근사 장치 및 방법

Country Status (5)

Country Link
US (1) US20240320301A1 (ko)
EP (1) EP4375855A1 (ko)
KR (1) KR102529602B1 (ko)
CN (1) CN117859124A (ko)
WO (1) WO2023003246A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116432711A (zh) * 2023-02-13 2023-07-14 杭州菲数科技有限公司 SiLU激活函数的硬件实现方法、装置及计算设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040016366A (ko) * 2002-08-15 2004-02-21 한국전자통신연구원 구간별 차등 다항식을 이용한 사전 왜곡 방법 및 그를이용한 고전력 증폭기의 사전 왜곡 장치
JP2005208845A (ja) * 2004-01-21 2005-08-04 Toshiba Corp 関数近似値の演算器
KR20140077675A (ko) * 2012-12-14 2014-06-24 한국전자통신연구원 디지털 전치 왜곡 장치
KR101718224B1 (ko) * 2014-08-01 2017-03-20 인피니언 테크놀로지스 아게 세그먼트적 구분적 다항식 근사에 기초하는 디지털 전치 왜곡 및 후치 왜곡
KR20190037236A (ko) * 2016-07-29 2019-04-05 퀄컴 인코포레이티드 구분적 선형 근사화를 위한 시스템 및 방법
KR20210094365A (ko) 2020-01-21 2021-07-29 주식회사 케이티 객체의 움직임 정보에 기초하여 이상 상황을 판단하는 장치, 방법 및 컴퓨터 프로그램

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180081634A1 (en) * 2016-09-22 2018-03-22 Qualcomm Incorporated Piecewise polynomial evaluation instruction

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040016366A (ko) * 2002-08-15 2004-02-21 한국전자통신연구원 구간별 차등 다항식을 이용한 사전 왜곡 방법 및 그를이용한 고전력 증폭기의 사전 왜곡 장치
JP2005208845A (ja) * 2004-01-21 2005-08-04 Toshiba Corp 関数近似値の演算器
KR20140077675A (ko) * 2012-12-14 2014-06-24 한국전자통신연구원 디지털 전치 왜곡 장치
KR101718224B1 (ko) * 2014-08-01 2017-03-20 인피니언 테크놀로지스 아게 세그먼트적 구분적 다항식 근사에 기초하는 디지털 전치 왜곡 및 후치 왜곡
KR20190037236A (ko) * 2016-07-29 2019-04-05 퀄컴 인코포레이티드 구분적 선형 근사화를 위한 시스템 및 방법
KR20210094365A (ko) 2020-01-21 2021-07-29 주식회사 케이티 객체의 움직임 정보에 기초하여 이상 상황을 판단하는 장치, 방법 및 컴퓨터 프로그램

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116432711A (zh) * 2023-02-13 2023-07-14 杭州菲数科技有限公司 SiLU激活函数的硬件实现方法、装置及计算设备
CN116432711B (zh) * 2023-02-13 2023-12-05 杭州菲数科技有限公司 SiLU激活函数的硬件实现方法、装置及计算设备

Also Published As

Publication number Publication date
KR20230013515A (ko) 2023-01-26
CN117859124A (zh) 2024-04-09
US20240320301A1 (en) 2024-09-26
EP4375855A1 (en) 2024-05-29
KR102529602B1 (ko) 2023-05-08

Similar Documents

Publication Publication Date Title
WO2023003246A1 (ko) 멀티레벨 룩업테이블을 이용한 함수근사 장치 및 방법
WO2012015224A2 (en) Variable resister having resistance varying geometrically ratio and control method thereof
WO2017104934A1 (ko) Plc 제어 프로그램의 공용형식 변환장치 및 방법
EP3735662A1 (en) Method of performing learning of deep neural network and apparatus thereof
WO2023153821A1 (en) Method of compressing neural network model and electronic apparatus for performing the same
WO2016159518A1 (ko) 비선형 데이터의 평균 계산 장치
WO2016056856A1 (ko) 무결성 검증 데이터 생성 방법 및 시스템
WO2014189236A1 (ko) 무손실 이미지 압축 및 복원 방법과 이를 수행하는 장치
WO2020062615A1 (zh) 显示面板的伽马值调节方法、装置及显示设备
WO2023042989A1 (ko) 데이터 스케일을 고려한 덧셈 연산 방법 및 이를 위한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치
WO2014073747A1 (ko) 플래시 메모리의 소모 전력 감소 방법 및 그 장치
WO2023229094A1 (ko) 행동 예측 방법 및 장치
WO2012169675A1 (ko) 누적 이동 평균에 기반하여 다원 탐색 트리의 노드를 분할하는 방법 및 장치
WO2019124622A1 (ko) 줌 렌즈의 광축 보정 방법, 장치 및 컴퓨터 프로그램
WO2021246586A1 (ko) 하드웨어 가속기를 위한 파라미터를 메모리로부터 액세스하는 방법 및 이를 이용한 장치
WO2019132235A1 (ko) 메모리 장치 및 그 데이터 처리 방법
WO2023043108A1 (ko) 아키텍처 확장을 통한 신경망의 유효 정밀도 향상 방법 및 장치
WO2020213885A1 (en) Server and control method thereof
WO2017126715A1 (ko) 나눗셈 연산을 처리하는 방법, 장치 및 기록매체
WO2024014632A1 (ko) 신경망 설계방법 및 이를 위한 장치
WO2024005590A1 (ko) 이미지 스케일링 장치 및 이미지 스케일링 방법
WO2024106556A1 (ko) 부동 소수점 데이터 압축을 위한 방법 및 장치
WO2024014631A1 (ko) 데이터 스케일을 고려한 콘볼루션 데이터의 양자화 방법, 이를 위한 하드웨어 가속기, 및 이를 이용한 컴퓨팅 장치
WO2018030831A1 (ko) Plc 제어 프로그램을 구조체 데이터로 변환하는 장치 및 방법
WO2024167057A1 (ko) 클러스터를 이용한 딥러닝 뉴럴 네트워크 모델 가속화 방법 및 장치

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: 22846116

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 18579212

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 202280050505.1

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 2022846116

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: 2022846116

Country of ref document: EP

Effective date: 20240219