IP Library › Granted Patent US 11,188,300
Granted Patent B1
US 11,188,300 · App. 17/351,250 · Granted Nov 30, 2021

Preparation and execution of quantized scaling on integrated circuitry

Inventors: Oleg Khavin (Tokyo, JP); Nikolay Nez (Tokyo, JP); Sakyasingha Dasgupta (Tokyo, JP); Antonio Tomas Nevado Vilchez (Tokyo, JP)
Assignee: EDGECORTIX PTE. LTD.
G06F5/012G06F17/17
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,188,300
App. No.
17/351,250
Granted
Nov 30, 2021
Kind
B1
Abstract

Preparation and execution of quantized scaling may be performed by operations including obtaining an original array and a scaling factor representing a ratio of a size of the original array to a size of a scaled array, determining, for each column of the scaled array, a horizontal coordinate of each of two nearest elements in the horizontal dimension of the original array, and, for each row of the scaled array, a vertical coordinate of each of two nearest elements in the vertical dimension of the original array, calculating, for each row of the scaled array and each column of the scaled array, a linear interpolation coefficient, converting each value of the original array from a floating point number into a quantized number, converting each linear interpolation coefficient from a floating point number into a fixed point number, storing, in a memory, the horizontal coordinates and vertical coordinates as integers, the values as quantized numbers, and the linear interpolation coefficients as fixed point numbers.

Claims (56)

1. A non-transitory computer readable medium comprising a computer program including instructions that are executable by a computer to cause the computer to perform operations comprising:

obtaining an original array and a scaling factor representing a ratio of a size of the original array to a size of a scaled array;

determining, for each column of the scaled array, a horizontal coordinate of each of two nearest elements in the horizontal dimension of the original array, and, for each row of the scaled array, a vertical coordinate of each of two nearest elements in the vertical dimension of the original array;

calculating, for each row of the scaled array and each column of the scaled array, a linear interpolation coefficient based on the scaling factor;

converting each value of the original array from a floating point number into a quantized number;

converting each linear interpolation coefficient from a floating point number into a fixed point number;

storing, in an external memory, the horizontal coordinates and vertical coordinates as integers, the values as quantized numbers, and the linear interpolation coefficients as fixed point numbers;

compiling instructions to scale the original array;

receiving the compiled instructions at an integrated circuit causing the integrated circuit to scale the original array, the integrated circuit in communication with the external memory;

wherein scaling the original array comprises calculating elements of at least a portion of the scaled array;

wherein the compiling includes:

determining a tile size based on a capacity of an onboard memory of the integrated circuit;

wherein the portion of the scaled array corresponds to the tile size, and the calculating elements of the at least a portion of the scaled array are repeated until each element of the scaled array has been calculated.

2. The non-transitory computer readable medium of claim 1 , further comprising: receiving the scaled array from the integrated circuit.

3. The non-transitory computer readable medium of claim 2 , wherein the instructions cause the integrated circuit to: read, from the memory: for each column of at least a portion of the scaled array, a predetermined horizontal coordinate integer for each of two nearest elements in the horizontal dimension of the original array and a horizontal linear interpolation coefficient fixed point number, and for each row of the portion of the scaled array, a predetermined vertical coordinate integer of each of two nearest elements in the vertical dimension of the original array and a vertical linear interpolation coefficient fixed point number, and for each combination of the predetermined horizontal coordinate integers and the predetermined vertical coordinate integers, a value quantized number of the original array; and calculate each element of the portion of the scaled array by applying linear interpolation to: value quantized numbers of the original array corresponding to the row of the element and the column of the element, the horizontal linear interpolation coefficient fixed point number corresponding to the column of the element, and the vertical linear interpolation coefficient fixed point number corresponding to the row of the element.

4. The non-transitory computer readable medium of claim 3 , wherein the compiling includes; determining a tile size based on a capacity of an onboard memory of the integrated circuit; wherein the portion of the scaled array corresponds to the tile size, and the read operations and the calculate operations are repeated until each element of the scaled array has been calculated.

5. The non-transitory computer readable medium of claim 3 , wherein the linear interpolation applied by the integrated circuit includes performing operations according to:

X C =X A +(( X A −X B )· X coeff )<< E coeff

where X C is a quantized interpolated value, X A and X B are quantized values, X coeff is an integer multiplier of a linear interpolation coefficient, and E coeff is an integer shift value.

6. The non-transitory computer readable medium of claim 4 , wherein the compiling further includes ordering the calculation of elements such that subsequent elements are selected based on overlapping linear interpolation operations, and the instructions cause the integrated circuit to line-cache interpolated values for use in calculating subsequent elements having overlapping linear interpolation operations.

7. The non-transitory computer readable medium of claim 1 , wherein converting each linear interpolation coefficient includes: determining a width for all fixed point numbers, and determining, for each fixed point number, an integer multiplier and an integer shift value, each integer multiplier having a size defined by the width.

8. The non-transitory computer readable medium of claim 1 , wherein converting each value of the original array includes: determining a scale coefficient and a zero point for all quantized numbers, and determining, for each quantized number, a quantized value.

9. The non-transitory computer readable medium of claim 1 , wherein the scaling factor includes a horizontal scaling factor and a vertical scaling factor, the horizontal scaling factor representing a ratio of a width of the original array to a width of a scaled array, and the vertical scaling factor representing a ratio of a height of the original array to a height of a scaled array.

10. A non-transitory computer readable medium comprising a computer program including instructions that are executable by a system to cause the system to perform operations comprising:

pre-processing, via a host processor, an original array and a scaling factor representing a ratio of a size of the original array to a size of a scaled array;

compiling instructions, via the host processor, to scale the original array;

receiving, at an integrated circuit, the compiled instructions to generate a scaled array from an original array, the integrated circuit in communication with the external memory;

reading by the integrated circuit from an external memory:

for each column of at least a portion of the scaled array, a predetermined horizontal coordinate integer for each of two nearest elements in the horizontal dimension of the original array and a horizontal linear interpolation coefficient fixed point number,

for each row of the portion of the scaled array, a predetermined vertical coordinate integer of each of two nearest elements in the vertical dimension of the original array and a vertical linear interpolation coefficient fixed point number, and

for each combination of the predetermined horizontal coordinate integers and the predetermined vertical coordinate integers, a value quantized number of the original array; and

calculating, by the integrated circuit, each element of the portion of the scaled array by applying linear interpolation to:

value quantized numbers of the original array corresponding to the row of the element and the column of the element,

the horizontal linear interpolation coefficient fixed point number corresponding to the column of the element, and

the vertical linear interpolation coefficient fixed point number corresponding to the row of the element;

wherein the compiling includes:

determining a tile size based on a capacity of an onboard memory of the integrated circuit, the portion of the scaled array corresponds to the tile size, and the read operations and calculate operations are repeated until each element of the scaled array has been calculated.

11. The non-transitory computer readable medium computer program of claim 10 , wherein the linear interpolation includes performing operations according to:

X C =X A +(( X A −X B )· X coeff )<< E coeff

where X C is a quantized interpolated value, X A and X B are quantized values, X coeff is an integer multiplier of a linear interpolation coefficient, and E coeff is an integer shift value.

12. The non-transitory computer readable medium of claim 10 , wherein the calculating includes: ordering the elements such that subsequent elements are selected based on overlapping linear interpolation operations, and line-caching interpolated values for use in calculating subsequent elements having overlapping linear interpolation operations.

13. The non-transitory computer readable medium of claim 10 , wherein the calculating further includes writing a calculated value of each element of the scaled array to the external memory.

14. A computer-implemented method comprising:

obtaining, by a host processor, an original array and a scaling factor representing a ratio of a size of the original array to a size of a scaled array;

determining by the host processor, for each column of the scaled array, a horizontal coordinate of each of two nearest elements in the horizontal dimension of the original array, and, for each row of the scaled array, a vertical coordinate of each of two nearest elements in the vertical dimension of the original array;

calculating by the host processor, for each row of the scaled array and each column of the scaled array, a linear interpolation coefficient; converting each value of the original array from a floating point number into a quantized number; converting each linear interpolation coefficient from a floating point number into a fixed point number;

storing, in an external memory, the horizontal coordinates and vertical coordinates as integers, the values as quantized numbers, and the linear interpolation coefficients as fixed point numbers;

compiling, by the host processor, instructions to scale the original array;

receiving the compiled instructions at an integrated circuit causing the integrated circuit to scale the original array, the integrated circuit in communication with the external memory;

wherein scaling the original array comprises calculating elements of at least a portion of the scaled array;

wherein the compiling includes:

determining a tile size based on a capacity of an onboard memory of the integrated circuit;

wherein the portion of the scaled array corresponds to the tile size, and the calculating elements of the at least a portion of the scaled array are repeated until each element of the scaled array has been calculated.

15. The computer-implemented method of claim 14 , further comprising: receiving the scaled array from the integrated circuit at the host processor.

16. The computer-implemented method of claim 14 , wherein the instructions cause the integrated circuit to: read, from the memory: for each column of at least a portion of the scaled array, a predetermined horizontal coordinate integer for each of two nearest elements in the horizontal dimension of the original array and a horizontal linear interpolation coefficient fixed point number, and for each row of the portion of the scaled array, a predetermined vertical coordinate integer of each of two nearest elements in the vertical dimension of the original array and a vertical linear interpolation coefficient fixed point number, and for each combination of the predetermined horizontal coordinate integers and the predetermined vertical coordinate integers, a value quantized number of the original array; and calculate each element of the portion of the scaled array by applying linear interpolation to: value quantized numbers of the original array corresponding to the row of the element and the column of the element, the horizontal linear interpolation coefficient fixed point number corresponding to the column of the element, and the vertical linear interpolation coefficient fixed point number corresponding to the row of the element.

17. The computer-implemented method of claim 16 , wherein the read operations and the calculate operations are repeated until each element of the scaled array has been calculated.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2023
From: EDGECORTIX PTE. LTD.
To: EDGECORTIX INC.
Reel/Frame 065056/0608 →
ASSIGNEE ADDRESS CHANGE Recorded Feb 28, 2023
From: EDGECORTIX PTE. LTD.
To: EDGECORTIX PTE. LTD.
Reel/Frame 062967/0881 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 18, 2021
From: KHAVIN, OLEG; NEZ, NIKOLAY; DASGUPTA, SAKYASINGHA; VILCHEZ, ANTONIO TOMAS NEVADO
To: EDGECORTIX PTE. LTD.
Reel/Frame 056581/0450 →
Priority Claims (1)
JP JP2020-174978 · Oct 16, 2020 · national