IP Library › Granted Patent US 11,562,047
Granted Patent B2
US 11,562,047 · App. 16/862,370 · Granted Jan 24, 2023

Accelerator for dense and sparse matrix computations

Inventors: Layali Rashid (Issaquah, WA); Saurabh M. Kulkarni (Redmond, WA); Marc Tremblay (Bellevue, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F17/16G06F9/3001G06F9/30036G06F9/30076G06F9/3836G06N3/063
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,562,047
App. No.
16/862,370
Granted
Jan 24, 2023
Kind
B2
Abstract

A method of increasing computer hardware efficiency of a matrix computation. The method comprises receiving at a computer processing device, digital signals encoding one or more operations of the matrix computation, each operation including one or more operands. The method further comprises, responsive to determining, by a sparse data check device of the computer processing machine, that an operation of the matrix computation includes all dense operands, forwarding the operation to a dense computation device of the computer processing machine configured to perform the operation of the matrix computation based on the dense operands. The method further comprises, responsive to determining, by the sparse data check device, that an operation of the matrix computation includes one or more sparse operands, forwarding the operation to a sparse computation device configured to perform the operation of the matrix computation.

Claims (31)

1. A method of increasing computer hardware efficiency of a matrix computation, comprising:

receiving, at a computer processing device, digital signals encoding one or more operations of the matrix computation, each operation including one or more operands;

responsive to determining, by a sparse data check device of the computer processing machine, that an operation of the matrix computation includes all dense operands, forwarding the operation to a dense computation device of the computer processing machine configured to perform the operation of the matrix computation based on the dense operands; and

responsive to determining, by the sparse data check device, that the operation of the matrix computation includes one or more sparse operands, forwarding the operation to a sparse computation device configured to perform the operation of the matrix computation.

2. The method of claim 1 , wherein the sparse data check device is configured to determine whether operands are sparse or dense based on determining a zero-valued operand to be sparse and a non-zero valued operand to be dense.

3. The method of claim 1 , wherein the sparse data check device is configured to determine whether operands are sparse or dense based on determining an operand to be dense if a value of the operand exceeds a pre-defined threshold and sparse if the value of the operand does not exceed the pre-defined threshold.

4. The method of claim 3 , wherein the pre-defined threshold is a hardware hyperparameter of the sparse data check device.

5. The method of claim 1 , wherein the matrix computation is a matrix multiplication.

6. The method of claim 1 , wherein the dense computation device is configured to perform a multiply-and-accumulate operation.

7. The method of claim 1 , wherein the matrix computation is a neural network computation.

8. The method of claim 1 , wherein the sparse computation device is configured to automatically save a sparse result value to a location derived from the operation of the matrix computation.

9. The method of claim 1 , wherein the sparse computation device is configured to replace an executable instruction of the operation with a no-op instruction.

10. The method of claim 1 , wherein forwarding the operation having all dense operands to the dense computation device includes enqueuing the operation having all dense operands into a lookahead dense instruction queue, wherein the dense computation device is configured to execute operations from the lookahead dense instruction queue in order.

11. The method of claim 10 , further comprising feeding the lookahead dense instruction queue in excess of a number of operations the dense computation device is configured to process in a subsequent cycle.

12. The method of claim 1 , wherein forwarding the operation having one or more sparse operands to the sparse computation device includes enqueuing the operation having one or more sparse operands into a lookahead sparse instruction queue.

13. The method of claim 12 , wherein the sparse computation device is configured to automatically store sparse result values from operations in the lookahead sparse instruction queue, in a program order of the operations in the lookahead sparse instruction queue.

14. The method of claim 12 , further comprising feeding the lookahead sparse instruction queue in excess of a number of operations the sparse computation device is configured to process in a subsequent cycle.

15. A computer system for performing matrix computations, including:

a sparse computation device configured to calculate a result of an operation having one or more sparse operands;

a dense computation device configured to calculate a result of an operation having all dense operands;

an instruction issue stage configured to receive digital signals encoding one or more operations of a matrix computation; and

a sparse data check device configured to forward an operation having one or more sparse operands to the sparse computation device, and to forward an operation having all dense operands to the dense computation device.

16. The computer system of claim 15 , wherein the sparse data check device is configured to determine an operand is dense if a value of the operand is greater than the pre-defined threshold, and configured to determine the operand is sparse if the value of the operand is less than the pre-defined threshold.

17. A computer system for performing matrix computations, including:

a sparse computation unit configured to perform a matrix computation on sparse data;

a dense computation unit configured to perform the matrix computation on dense data;

an instruction issue stage configured to receive a plurality of instructions including an instruction operating on sparse data and an instruction operating on dense data; and

a sparse data check device configured to distinguish between instructions operating on sparse data and instructions operating on dense data, wherein the sparse data check device is further configured to forward instructions determined to operate on sparse data to the sparse computation device and to forward instructions determined to operate on dense data to the dense computation device.

18. The computer system of claim 17 , wherein the sparse data check device is configured to detect a plurality of instructions operating on sparse data and enqueue the plurality of instructions operating on sparse data into a lookahead sparse instruction queue.

19. The computer system of claim 17 , wherein the sparse data check device is configured to detect a plurality of instructions operating on dense data and enqueue the plurality of instructions operating on dense data into a lookahead dense instruction queue.

20. The computer system of claim 17 , wherein the sparse computation device is configured to forward instruction identifiers to a sparse register identifier queue, and the sparse register identifier queue is configured to write corresponding results according to a program-order associated with the instruction identifiers.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2020
From: RASHID, LAYALI; KULKARNI, SAURABH M.; TREMBLAY, MARC
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 052530/0541 →
Continuity (2)
Provisional Application 62968867 · Jan 31, 2020
Related Publication 20210240797A1 · Aug 5, 2021