IP Library Granted Patent US 12,229,105
Granted Patent B2
US 12,229,105 · App. 17/321,091 · Granted Feb 18, 2025

Indexing elements in a source array

Inventors: Aria Ahmadi (Hertfordshire, GB); Cagatay Dikici (Hertfordshire, GB)
Assignee: Imagination Technologies Limited
G06F16/2264G06F17/11
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 12,229,105
App. No.
17/321,091
Granted
Feb 18, 2025
Kind
B2
Abstract

A hardware-implemented method of indexing data elements in a source array is provided. The method comprises generating a number of shifted copy arrays; receiving indices for indexing the source array; and retrieving one or more data elements from the shifted copy arrays, according to the received indices. Also disclosed is a related processing system comprising a memory and hardware for indexing data elements in a source array in the memory.

Claims (48)

1. A hardware-implemented method of indexing data elements in a source array in a memory and interpolating between the data elements, the method comprising:

generating a plurality of shifted copy arrays based on the source array, each shifted copy array comprising the data elements of the source array at a respective shifted position;

receiving a plurality of indices for indexing the source array, each index of the plurality of indices indicating a target location in the source array; and

for each index of the plurality of indices:

retrieving a data element from each of the shifted copy arrays; and

gating the retrieved elements based on the index, to thereby generate an interpolated data element from the retrieved data elements.

2. The method of claim 1 , wherein generating the shifted copy arrays comprises convolving the source array with a set of filter kernels, each filter kernel generating a respective one of the shifted copy arrays.

3. The method of claim 1 , wherein gating the retrieved elements comprises defining a gating coefficient for each of the retrieved elements, wherein the gating coefficients for data elements other than neighbourhood data elements in a finite neighbourhood around the target location are zero.

4. The method of claim 3 , wherein the gating comprises multiplying the retrieved data elements by their respective gating coefficients, and summing the results.

5. The method of claim 3 , wherein defining the gating coefficients comprises calculating the gating coefficients, wherein the calculating comprises a linear summation, followed by a nonlinear activation function.

6. The method of claim 5 , wherein calculating the gating coefficients comprises, for an index z∈ 1 of the plurality of indices, in one dimension:

a first summation of the form y=x+b, b∈ s , where

b=[n, n−1, . . . ,0, . . . ,−n+1,−n],

n

=

[

S

-

1

2

]

and S is the number of shifts in the one dimension;

defining an activation function, which returns the value input to it, if that input value is between 0 and 1, and otherwise returns 0;

a first operation of the activation function, with the input (y+1), giving an output y 1 ;

a second operation of the activation function, with the input (y), giving an output 32 ; and

a second summation, operating on at least one value of 3/2, which returns z 2 =w 2 y 2 +b 2 , where w 2 =−1 and b 2 =1, wherein the gating coefficients are based on the result 1 of the first operation of the activation function and the result z 2 of the second summation.

7. The method of claim 6 , wherein the shifted positions comprise shifted positions in multiple dimensions and each index is an index x∈ N in respective multiple dimensions, and

wherein calculating the gating coefficients comprises repeating said calculating said gating coefficients for each dimension of the multiple dimensions, and calculating an outer product of the results.

8. The method of claim 3 , wherein the gating coefficient for at least one of the retrieved data elements is a floating point value.

9. The method of claim 1 , wherein the plurality of indices includes floating point indices.

10. The method of claim 1 , wherein the interpolating comprises linear or bilinear interpolation, or bicubic interpolation.

11. The method of claim 1 , used in a method of warping an image or feature map based on a motion vector field.

12. The method of claim 1 , wherein the method is implemented by hardware logic adapted to implement a neural network.

13. A processing system comprising a memory and hardware for indexing data elements in a source array in the memory and interpolating between the data elements, the system comprising:

a shift-generator block, configured to generate a plurality of shifted copy arrays based on the source array, each shifted copy array comprising the data elements of the source array at a respective shifted position; and

an indexing block, configured to receive a plurality of indices for indexing the source array, each index of the plurality of indices indicating a target position in the source array; and

for each index of the plurality of indices:

retrieve a data element from each of the shifted copy arrays;

wherein the indexing block comprises a gating unit configured to gate the retrieved elements to thereby generate an interpolated data element from the retrieved data elements.

14. The processing system of claim 13 , wherein the shift-generator block comprises a plurality of digital filters, wherein each digital filter is configured to generate a respective one of the shifted copy arrays, by convolving the source array with a respective filter kernel.

15. The processing system of claim 13 , wherein the processing system is embodied in hardware on an integrated circuit.

16. A non-transitory computer readable storage medium having stored thereon computer readable code configured to cause to be performed, when the code is run on at least one processor, a method of indexing data elements in a source array in a memory and interpolating between the data elements, the method comprising:

generating a plurality of shifted copy arrays based on the source array, each shifted copy array comprising the data elements of the source array at a respective shifted position;

receiving a plurality of indices for indexing the source array, each index of the plurality of indices indicating a target location in the source array; and

for each index of the plurality of indices:

retrieving a data element from each of the shifted copy arrays; and

gating the retrieved elements based on the index, to thereby generate an interpolated data element from the retrieved data elements.

17. A non-transitory computer readable storage medium having stored thereon an integrated circuit definition dataset that, when processed in an integrated circuit manufacturing system, configures the integrated circuit manufacturing system to manufacture a processing system as claimed in claim 13 .

Assignments (2)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 15, 2021
From: AHMADI, ARIA; DIKICI, CAGATAY
To: IMAGINATION TECHNOLOGIES LIMITED
Reel/Frame 056548/0954 →