IP Library Granted Patent US 10,324,689
Granted Patent B2
US 10,324,689 · App. 15/819,545 · Granted Jun 18, 2019

Scalable memory-optimized hardware for matrix-solve

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 10,324,689
App. No.
15/819,545
Granted
Jun 18, 2019
Kind
B2
Abstract

Systems and methods for matrix-solve applications include a memory-optimized hardware acceleration (HWA) solution with scalable architecture (i.e. specialized circuitry) for HWA matrix-solve operations. The matrix-solve solutions described herein may include a scalable hardware architecture with parallel processing (e.g., “within column” processing), which provides the ability to compute several output values in parallel. The HWA matrix-solve solutions described herein may include simultaneous multi-column processing, which provides a lower execution cycle count and a reduced total number of memory accesses. This HWA matrix-solve provides a low latency and energy-efficient matrix-solve solutions, which may be used to reduce energy consumption and improve performance in various matrix-based applications, such as computer vision, SLAM, AR/VR/mixed-reality, machine learning, data analytics, and other matrix-based applications.

Claims (152)

1. A hardware accelerated (HWA) matrix-solve system comprising:

a fetch-A block to retrieve and provide a portion of a matrix A; and

a matrix column computation block including:

an X-buffer block to fetch at least one value of a matrix X;

a within-column parallel compute block to generate a plurality of partial dot products based on the portion of the matrix A and on the at least one value of the matrix X; and

a serial compute block to generate a new element of matrix X based on the plurality of partial dot products, the new element of matrix X provided to the X-buffer block for storage in a memory.

2. The HWA matrix-solve system of claim 1 , the matrix column computation block including a fetch-B block to retrieve and provide a matrix B element to the parallel compute block.

3. The HWA matrix-solve system of claim 2 , the parallel compute block including a negation block to generate a negated matrix B element.

4. The HWA matrix-solve system of claim 3 , the serial compute block further to generate a matrix-solve difference value based on a sum of the negated matrix B element and the plurality of partial dot products.

5. The HWA matrix-solve system of claim 4 , wherein the serial compute block including a matrix multiplier block to generate the new element of matrix X by multiplying the matrix-solve difference value by a matrix A inverse, the matrix A inverse received from the parallel compute block at the serial compute block.

6. The HWA matrix-solve system of claim 5 , wherein:

the fetch-A block is further to retrieve and provide the matrix A inverse to the parallel compute block; and

the parallel compute block further to receive the matrix A inverse and provide the matrix A inverse to the serial compute block.

7. The HWA matrix-solve system of claim 2 , wherein the fetch-B block includes:

a fetch-B memory address register to send a memory address request for the matrix B element; and

a fetch-B memory data register FIFO buffer to store and provide the matrix B element.

8. The HWA matrix-solve system of claim 1 , wherein the fetch-A block includes:

a fetch-A memory address register to send a memory address request of the portion of matrix A; and

a fetch-A memory data register first-in-first-out (FIFO) buffer to store and provide the portion of matrix A.

9. The HWA matrix-solve system of claim 1 , wherein the determined value of the matrix X includes at least one of a forward substitution value and a backward substitution value.

10. The HWA matrix-solve system of claim 9 , wherein the forward substitution value is determined according to

X

pq

=

B

pq

-

i

=

0

p

-

1

A

pi

X

iq

A

pp

.

11. The HWA matrix-solve system of claim 9 , wherein the forward substitution value is determined according to

X

pq

=

B

pq

-

i

=

p

+

1

M

-

1

A

pi

X

iq

A

pp

.

12. The HWA matrix-solve system of claim 1 , further comprising a plurality of column compute blocks, each of the plurality of column compute blocks including a matrix column computation block.

13. A hardware accelerated (HWA) matrix-solve method comprising:

providing a portion of a matrix A at a fetch-A block to a matrix column computation block; and

generating a new element of matrix X at the matrix column computation block, including:

fetching at least one value of a matrix X at an X-buffer block within the matrix column computation block;

generating a plurality of partial dot products at a within-column parallel compute block within the matrix column computation block, the plurality of partial dot products determined based on the portion of the matrix A and on the at least one value of the matrix X; and

generating the new element of matrix X at a serial compute block within the matrix column computation block, the new element of matrix X determined based on the plurality of partial dot products.

14. The HWA matrix-solve method of claim 13 , further including:

fetching a matrix B element at a fetch-B block within the matrix column computation block;

sending the matrix B element from the fetch-B block to the parallel compute block;

generating a negated matrix B element at a negation block within the parallel compute block; and

generating a matrix-solve difference value at the serial compute block, the matrix-solve difference value based on a sum of the negated matrix B element and the plurality of partial dot products.

15. The HWA matrix-solve method of claim 14 , further including receiving a matrix A inverse from the parallel compute block at the serial compute block, wherein generating the new element of matrix X includes multiplying the matrix-solve difference value by the matrix A inverse at a matrix multiplier block within the serial compute block.

16. At least one non-transitory machine-readable storage medium, comprising a plurality of instructions that, responsive to being executed with processor circuitry of a computer-controlled device, cause the computer-controlled device to:

provide a portion of a matrix A at a fetch-A block to a matrix column computation block; and

generate a new element of matrix X at the matrix column computation block, including instructions causing the computer controlled device to:

fetch at least one value of a matrix X at an X-buffer block within the matrix column computation block;

generate a plurality of partial dot products at a within-column parallel compute block within the matrix column computation block, the plurality of partial dot products determined based on the portion of the matrix A and on the at least one value of the matrix X; and

generate the new element of matrix X at a serial compute block within the matrix column computation block, the new element of matrix X determined based on the plurality of partial dot products.

17. The machine-readable storage medium of claim 16 , the instructions further causing the computer-controlled device to:

fetch a matrix B element at a fetch-B block within the matrix column computation block;

send the matrix B element from the fetch-B block to the parallel compute block;

generate a negated matrix B element at a negation block within the parallel compute block; and

generate a matrix-solve difference value at the serial compute block, the matrix-solve difference value based on a sum of the negated matrix B element and the plurality of partial dot products.

18. The machine-readable storage medium of claim 17 , the instructions further causing the computer-controlled device to receive a matrix A inverse from the parallel compute block at the serial compute block, wherein the instructions causing the computer-controlled device to generate the new element of matrix X includes instructions further causing the computer-controlled device to multiply the matrix-solve difference value by the matrix A inverse at a matrix multiplier block within the serial compute block.

19. The machine-readable storage medium of claim 18 , wherein the matrix multiplier block includes a multi-cycle-path multiplier block.

20. The machine-readable storage medium of claim 18 , wherein the instructions causing the computer-controlled device to receive a matrix A inverse from the parallel compute block at the serial compute block further include instructions causing the computer-controlled device to:

retrieve the matrix A inverse at the fetch-A block; and

send the matrix A inverse from the fetch-A block through the parallel compute block to the serial compute block.

21. The machine-readable storage medium of claim 17 , the instructions further causing the computer-controlled device to:

send a memory address request for the portion of matrix B from a fetch-B memory address register within the fetch-B block; and

store and provide the portion of matrix B at a fetch-B memory data register FIFO buffer within the fetch-B block.

22. The machine-readable storage medium of claim 16 , the instructions further causing the computer-controlled device to:

send a memory address request for the portion of matrix A from a fetch-A memory address register within the fetch-A block; and

store and provide the portion of matrix A at a fetch-A memory data register FIFO buffer within the fetch-A block.

23. The machine-readable storage medium of claim 16 , wherein the instructions causing the computer-controlled device to determine the value of the matrix X further includes instructions causing the computer-controlled device to determine at least one of a forward substitution value and a backward substitution value.

24. The machine-readable storage medium of claim 23 , wherein the forward substitution value is determined according to

X

pq

=

B

pq

-

i

=

0

p

-

1

A

pi

X

iq

A

pp

.

25. The machine-readable storage medium of claim 23 , wherein the forward substitution value is determined according to

X

pq

=

B

pq

-

i

=

p

+

1

M

-

1

A

pi

X

iq

A

pp

.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2021
From: INTEL IP CORPORATION
To: INTEL CORPORATION
Reel/Frame 056337/0609 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2018
From: KALSI, GURPREET SINGH; OMER, OM JI; KUMAR MANDAL, DIPAN; RETHINAGIRI, SANTHOSH KUMAR; NEELA, GOPI
To: INTEL IP CORPORATION
Reel/Frame 045185/0211 →
Cited By (3)
US 12,321,743 US 12,670,121 US 12,688,146