IP Library Granted Patent US 12,099,396
Granted Patent B2
US 12,099,396 · App. 18/051,278 · Granted Sep 24, 2024

Techniques for optimizing neural networks for memoization using value localization

Inventors: Georgios Keramidas (Patras, GR); Iakovos Stamoulis (Patras, GR)
Assignee: Think Silicon Research and Technology Single Member S.A.
G06F1/3275G06F9/3832G06F9/3885G06F12/0808G06F12/0813G06F17/16G06N3/10G06V10/454
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,099,396
App. No.
18/051,278
Granted
Sep 24, 2024
Kind
B2
Abstract

A system and method for improving parallel processing utilizes increased cache hits in a value cache utilizing memoization. The method includes receiving an input matrix for a parallel processing circuitry, the parallel processing configured to process the input matrix with a second matrix; selecting a portion of the input matrix, the portion having a plurality of values in binary representation; adjusting a first value of the plurality of values to a value which is a power of two; adjusting a second value of the plurality of values based on a third value of the plurality of values; generating a new input matrix based on the input matrix and the adjusted first value; and configuring the parallel processing circuitry to process the new input matrix with the second matrix.

Claims (69)

1. A method for improving parallel processing utilizing increased cache hits in a value cache utilizing memoization, comprising:

receiving an input matrix for a parallel processing circuitry, the parallel processing circuitry configured to process the input matrix with a second matrix;

selecting a portion of the input matrix, the portion having a plurality of values in binary representation;

adjusting a first value of the plurality of values to a value which is a power of two;

adjusting a second value of the plurality of values based on a third value of the plurality of values;

generating a new input matrix based on the input matrix the adjusted first value and the adjusted second value;

configuring the parallel processing circuitry to process the new input matrix with the second matrix, wherein processing comprises:

retrieving an output value from a lookup table in response to determining that a value of the new input matrix and a value of the second matrix are stored as an input in the lookup table; and

replacing a multiplication operation between a value of the new input matrix and a value of the second matrix with at least a shift operation, in response to determining that the value of the new input matrix is a power of two value.

2. The method of claim 1 , wherein the third value is a power of two.

3. The method of claim 1 , further comprising:

determining a threshold value for comparing the second value to the third value.

4. The method of claim 3 , further comprising:

adjusting the second value of the plurality of values in response to determining that the third value of the plurality of values is within the threshold value from the second value.

5. The method of claim 3 , further comprising:

determining the threshold value based on a number of least significant bits (LSBs).

6. The method of claim 1 , further comprising:

adjusting a fourth value of the plurality of values based on a target function of a neural network.

7. The method of claim 1 , further comprising:

adjusting the first value of the plurality of values to the third value of the plurality of values.

8. The method of claim 7 , wherein the third value is a power of two.

9. The method of claim 1 , further comprising:

performing a depth test on the plurality of values; and

generating a threshold value for the portion of the input matrix based on a result of the depth test.

10. The method of claim 9 , further comprising:

adjusting the second value of the plurality of values in response to determining that the third value of the plurality of values is within the generated threshold value from the second value.

11. The method of claim 1 , wherein the input matrix is a kernel of a convolutional neural network (CNN), the kernel comprising a plurality of weight values.

12. The method of claim 1 , wherein the selected portion overlaps with a second portion of the input matrix, such that a value of the portion is also a value of the second portion.

13. The method of claim 1 , wherein the second matrix is any one of: a representation of an image, a fully connected layer of a CNN, and a convolutional layer of a CNN.

14. A non-transitory computer readable medium (CRM) having stored thereon instructions for causing a processing circuitry to execute a process, the process comprising:

receiving an input matrix for a parallel processing circuitry, the parallel processing circuitry configured to process the input matrix with a second matrix;

selecting a portion of the input matrix, the portion having a plurality of values in binary representation;

adjusting a first value of the plurality of values to a value which is a power of two;

adjusting a second value of the plurality of values based on a third value of the plurality of values;

generating a new input matrix based on the input matrix the adjusted first value and the adjusted second value;

configuring the parallel processing circuitry to process the new input matrix with the second matrix, wherein processing comprises:

retrieving an output value from a lookup table in response to determining that a value of the new input matrix and a value of the second matrix are stored as an input in the lookup table; and

replacing a multiplication operation between a value of the new input matrix and a value of the second matrix with at least a shift operation, in response to determining that the value of the new input matrix is a power of two value.

15. The CRM of claim 14 , wherein the third value is a power of two.

16. The CRM of claim 14 , wherein the CRM contains further instructions which when executed by the processing circuitry further configure a system to:

determine a threshold value for comparing the second value to the third value.

17. The CRM of claim 16 , wherein the CRM contains further instructions which when executed by the processing circuitry further configure the system to:

adjust the second value of the plurality of values in response to determining that the third value of the plurality of values is within the threshold value from the second value.

18. The CRM of claim 16 , wherein the CRM contains further instructions which when executed by the processing circuitry further configure the system to:

determine the threshold value based on a number of least significant bits (LSBs).

19. The CRM of claim 14 , wherein the CRM contains further instructions which when executed by the processing circuitry further configure a system to:

adjust a fourth value of the plurality of values based on a target function of a neural network.

20. The CRM of claim 14 , wherein the CRM contains further instructions which when executed by the processing circuitry further configure a system to:

adjust the first value of the plurality of values to the third value of the plurality of values.

21. The CRM of claim 20 , wherein the third value is a power of two.

22. The CRM of claim 14 , wherein the CRM contains further instructions which when executed by the processing circuitry further configure a system to:

perform a depth test on the plurality of values; and

generate a threshold value for the portion of the input matrix based on a result of the depth test.

23. The CRM of claim 22 , wherein the CRM contains further instructions which when executed by the processing circuitry further configure the system to:

adjust the second value of the plurality of values in response to determining that the third value of the plurality of values is within the generated threshold value from the second value.

24. The CRM of claim 14 , wherein the input matrix is a kernel of a convolutional neural network (CNN), the kernel comprising a plurality of weight values.

25. The CRM of claim 14 , wherein the selected portion overlaps with a second portion of the input matrix, such that a value of the portion is also a value of the second portion.

26. The CRM of claim 14 , wherein the second matrix is any one of: a representation of an image, a fully connected layer of a CNN, and a convolutional layer of a CNN.

27. A system for improving parallel processing utilizing increased cache hits in a value cache utilizing memoization, comprising:

a processing circuitry; and

a memory, the memory containing instructions that, when executed by the processing circuitry, configure the system to:

receive an input matrix for a parallel processing circuitry, the parallel processing circuitry configured to process the input matrix with a second matrix;

select a portion of the input matrix, the portion having a plurality of values in binary representation;

adjust a first value of the plurality of values to a value which is a power of two;

adjust a second value of the plurality of values based on a third value of the plurality of values;

generate a new input matrix based on the input matrix the adjusted first value and the adjusted second value;

configure the parallel processing circuitry to process the new input matrix with the second matrix, wherein processing comprises:

retrieving an output value from a lookup table in response to determining that a value of the new input matrix and a value of the second matrix are stored as an input in the lookup table; and

replacing a multiplication operation between a value of the new input matrix and a value of the second matrix with at least a shift operation, in response to determining that the value of the new input matrix is a power of two value.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 9, 2026
From: THINK SILICON SINGLE MEMBER P.C. AND APPLIED MATERIALS, INC.
To: QUALCOMM INCORPORATED
Reel/Frame 075735/0803 →
CHANGE OF NAME Recorded Mar 6, 2026
From: THINK SILICON RESEARCH AND TECHNOLOGY SINGLE MEMBER S.A.
To: THINK SILICON SINGLE MEMBER P.C.
Reel/Frame 075032/0035 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 31, 2022
From: KERAMIDAS, GEORGIOS; STAMOULIS, IAKOVOS
To: THINK SILICON RESEARCH AND TECHNOLOGY SINGLE MEMBER S.A.
Reel/Frame 061599/0126 →
Continuity (2)
Provisional Application 63278747 · Nov 12, 2021
Related Publication 20230140178A1 · May 4, 2023