IP Library Granted Patent US 11,204,977
Granted Patent B2
US 11,204,977 · App. 16/913,800 · Granted Dec 21, 2021

Scalable sparse matrix multiply acceleration using systolic arrays with feedback inputs

Inventors: Subramaniam Maiyuran (Gold River, CA); Jorge Parra (El Dorado Hills, CA); Supratim Pal (Bangalore, IN); Ashutosh Garg (Folsom, CA); Shubra Marwaha (Folsom, CA); Chandra Gurram (Folsom, CA); Darin Starkey (Roseville, CA); Durgesh Borkar (Folsom, CA); Varghese George (Folsom, CA)
Assignee: Intel Corporation
G06F17/16G06F9/3001G06F9/30145G06F15/8046
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,204,977
App. No.
16/913,800
Granted
Dec 21, 2021
Kind
B2
Abstract

Described herein is an accelerator device including a host interface, a fabric interconnect coupled with the host interface, and one or more hardware tiles coupled with the fabric interconnect, the one or more hardware tiles including sparse matrix multiply acceleration hardware including a systolic array with feedback inputs.

Claims (41)

1. A parallel processor comprising:

a decode unit to decode an instruction into a decoded instruction, wherein the decoded instruction is an instruction to perform a parallel dot product operation; and

a pipelined systolic dot product unit to execute the decoded instruction via multiple pipeline stages of a systolic processing pipeline, wherein during execution of the decoded instruction, a dot product computed at a first pipeline stage is configured to be selectably written via output hardware to a location selected from one of output memory and a second pipeline stage and a dot product computed at a third pipeline stage is configured to be selectably written via output hardware to a location selected from one of the output memory and the first pipeline stage.

2. The parallel processor as in claim 1 , wherein the decoded instruction is associated with a first source operand and a second source operand, the first source operand is a reference to memory storing multiple data elements of a first matrix, and the second operand is a reference to memory storing multiple data elements of a second matrix.

3. The parallel processor as in claim 2 , further comprising hardware circuitry to:

read, based on the first source operand, the multiple data elements of the first matrix into memory of the systolic dot product unit; and

read, based on the second source operand, the multiple data elements of the second matrix into memory of the systolic dot product unit.

4. The parallel processor as in claim 3 , further comprising hardware circuitry to detect non-zero values within the multiple data elements of the second matrix and group detected non-zero values within the multiple data elements of the second matrix into a group including one or more data elements.

5. The parallel processor as in claim 4 , wherein the group includes a number of data elements that corresponds with a number of pipeline stages of the systolic processing pipeline.

6. The parallel processor as in claim 5 , further comprising hardware circuitry to:

provide a first data element of the group to the first pipeline stage; and

provide a second data element of the group to the second pipeline stage.

7. The parallel processor as in claim 6 , wherein the third pipeline stage is the second pipeline stage and the systolic processing pipeline includes two pipeline stages.

8. The parallel processor as in claim 6 , further comprising a fourth pipeline stage between the second pipeline stage and the third pipeline stage, wherein the systolic processing pipeline includes four pipeline stages.

9. The parallel processor as in claim 6 , further comprising hardware circuitry to:

provide a first set of multiple data elements of the first matrix to the first pipeline stage; and

provide a second set of multiple data elements of the second matrix to the second pipeline stage.

10. The parallel processor as in claim 1 , wherein the systolic processing pipeline is a first systolic processing pipeline and the pipelined systolic dot product unit includes a second systolic processing pipeline.

11. The parallel processor as in claim 10 , wherein each pipeline stage of the first systolic processing pipeline and the second systolic processing pipeline includes one or more processing elements, each processing element includes multiple parallel processor channels, and each parallel processor channel is configurable to perform operations on a vector of multiple data elements.

12. An accelerator device comprising:

a host interface;

a fabric interconnect coupled with the host interface; and

one or more hardware tiles coupled with the fabric interconnect, the one or more hardware tiles including sparse matrix multiply acceleration hardware including a modular systolic processing array with feedback inputs, the modular systolic processing array comprising multiple processing array modules, the multiple processing array modules including one or more processing array modules having a first number of pipeline paths, the first number of pipeline paths having a second number of pipeline stages, wherein a first pipeline stage is configurable to receive feedback output from a final pipeline stage and the one or more processing array modules include pipeline paths configured with shared hardware circuitry to read data elements associated with a first source input and separate hardware circuitry to read data elements associated with a second source input.

13. The accelerator device as in claim 12 , wherein the one or more processing array modules include pipeline paths configured with separate hardware circuitry to read data elements associated with a first source input and separate hardware circuitry to read data elements associated with a second source input.

14. The accelerator device as in claim 13 , wherein the one or more processing array modules include hardware circuitry configured to detect non-zero data elements in the second source input and selectively perform dot product operations based on the non-zero data elements of the second source input and data elements of the first source input that correspond with the non-zero data elements of the second input.

15. The accelerator device as in claim 14 , wherein the one or more processing array modules include a pipeline path including separate output hardware for each pipeline stage.

16. The accelerator device as in claim 15 , wherein the one or more processing array modules include a first pipeline path configurable to execute a first dot product instruction having a first set of inputs and a second pipeline path configurable to execute a second dot product instruction having a second set of inputs.

17. A method comprising:

decoding and instruction via a decode unit of a parallel processor, the instruction decoded into a decoded instruction, wherein the decoded instruction is an instruction to perform a parallel dot product operation; and

executing the decoded instruction via multiple pipeline stages of a systolic processing pipeline, wherein executing the decoded instruction includes:

computing a first dot product at a first pipeline stage;

selectably writing the first dot product via output hardware to a location selected from one of output memory and a second pipeline stage;

computing a second dot product at a third pipeline stage; and

selectably writing the second dot product via output hardware to a location selected from one of the output memory and the first pipeline stage.

18. The method as in claim 17 , wherein the decoded instruction is associated with a first source operand and a second source operand, the first source operand is a reference to memory storing multiple data elements of a first matrix, and the second operand is a reference to memory storing multiple data elements of a second matrix, and the method further comprises:

reading based on the first source operand, the multiple data elements of the first matrix into memory of the systolic dot product unit; and

reading, based on the second source operand, the multiple data elements of the second matrix into memory of the systolic dot product unit.

19. The method as in claim 18 , further comprising:

detecting, via hardware circuitry, non-zero values within the multiple data elements of the second matrix; and

grouping detected non-zero values within the multiple data elements of the second matrix into a group that includes a number of data elements that corresponds with a number of pipeline stages of the systolic processing pipeline.

20. The method as in claim 19 , further comprising providing a first data element of the group to the first pipeline stage and providing a second data element of the group to the second pipeline stage.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 25, 2020
From: MAIYURAN, SUBRAMANIAM; PARRA, JORGE; PAL, SUPRATIM; GARG, ASHUTOSH; MARWAHA, SHUBRA; GURRAM, CHANDRA; STARKEY, DARIN; BORKAR, DURGESH; GEORGE, VARGHESE
To: INTEL CORPORATION
Reel/Frame 054466/0294 →
Priority Claims (1)
IN 202041019059 · May 5, 2020 · national
Continuity (1)
Related Publication 20210349966A1 · Nov 11, 2021
Cited By (4)
US 12,229,554 US 12,230,353 US 12,608,175 US 12,639,398