IP Library Granted Patent US 10,198,401
Granted Patent B2
US 10,198,401 · App. 15/395,786 · Granted Feb 5, 2019

Max pooling in a matrix processing architecture

Inventors: Horace Lau (Mountain View, CA); Tony L. Werner (Los Altos, CA)
Assignee: Intel Corporation
G06F17/16G06N3/08
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,198,401
App. No.
15/395,786
Granted
Feb 5, 2019
Kind
B2
Abstract

In one embodiment, an apparatus comprises a multi-dimensional memory and a plurality of processing elements to perform a matrix operation, wherein the matrix operation comprises a max pooling operation on one or more matrix operands. The plurality of processing elements comprises one or more matrix processors, and the plurality of processing elements is configured to: receive matrix data from the multi-dimensional memory, wherein the matrix data is associated with the one or more matrix operands; extract the one or more matrix operands from the matrix data; perform the max pooling operation using the one or more matrix operands; and obtain a result of the max pooling operation.

Claims (62)

1. An apparatus, comprising:

a multi-dimensional memory;

a plurality of processing elements to perform a matrix operation, wherein:

the plurality of processing elements comprises one or more matrix processors; and

the matrix operation comprises a backward pooling operation on one or more matrix operands, wherein the one or more matrix operands comprise a max value matrix associated with an original matrix, and wherein the backward pooling operation comprises an operation to create a reconstructed matrix by partially reconstructing the original matrix using the max value matrix;

wherein the plurality of processing elements is configured to:

receive matrix data from the multi-dimensional memory, wherein the matrix data is associated with the one or more matrix operands;

extract the one or more matrix operands from the matrix data;

perform the backward pooling operation using the one or more matrix operands, wherein the plurality of processing elements configured to perform the backward pooling operation is further configured to:

identify a max value entry from the max value matrix;

create a partial matrix based on the max value entry, wherein the partial matrix comprises a portion of the reconstructed matrix;

determine that one or more elements of the partial matrix will not be modified; and

write the one or more elements of the partial matrix to the multi-dimensional memory; and

obtain a result of the backward pooling operation.

2. The apparatus of claim 1 , wherein the plurality of processing elements is further configured to perform a forward pooling operation.

3. The apparatus of claim 2 , wherein the forward pooling operation is associated with a forward propagation operation in a neural network.

4. The apparatus of claim 2 , wherein the forward pooling operation comprises an operation to reduce a size of a matrix operand.

5. The apparatus of claim 1 , wherein the max value entry comprises a maximum value and an index.

6. The apparatus of claim 1 , further comprising a FIFO memory to store one or more elements of the reconstructed matrix.

7. The apparatus of claim 6 , wherein the FIFO memory comprises one or more status bits to track whether one or more entries in the FIFO memory have been modified.

8. The apparatus of claim 1 , wherein the max value matrix is an output of a forward pooling operation.

9. The apparatus of claim 1 , wherein the max value matrix comprises one or more value-index pairs, wherein the one or more value-index pairs each comprise a maximum value and an index.

10. The apparatus of claim 1 , wherein the backward pooling operation is associated with a backward propagation operation in a neural network.

11. A method, comprising:

performing a matrix operation, wherein the matrix operation comprises a backward pooling operation on one or more matrix operands, wherein the one or more matrix operands comprise a max value matrix associated with an original matrix, wherein the backward pooling operation comprises an operation to create a reconstructed matrix by partially reconstructing the original matrix using the max value matrix, and wherein performing the matrix operation comprises:

receiving matrix data from a multi-dimensional memory, wherein the matrix data is associated with the one or more matrix operands;

extracting the one or more matrix operands from the matrix data;

performing the backward pooling operation using the one or more matrix operands, wherein performing the backward pooling operation comprises:

identifying a max value entry from the max value matrix;

creating a partial matrix based on the max value entry, wherein the partial matrix comprises a portion of the reconstructed matrix;

determining that one or more elements of the partial matrix will not be modified; and

writing the one or more elements of the partial matrix to the multi-dimensional memory; and

obtaining a result of the backward pooling operation.

12. The method of claim 11 , further comprising storing one or more elements of the reconstructed matrix in a FIFO memory, wherein the FIFO memory comprises one or more status bits to track whether one or more entries in the FIFO memory have been modified.

13. A system, comprising:

a plurality of memory elements, wherein the plurality of memory elements comprises a multi-dimensional memory; and

a plurality of processing elements to perform a matrix operation, wherein:

the plurality of processing elements comprises a host processor and one or more matrix processing chips; and

the matrix operation comprises a backward pooling operation on one or more matrix operands, wherein the one or more matrix operands comprise a max value matrix associated with an original matrix, and wherein the backward pooling operation comprises an operation to create a reconstructed matrix by partially reconstructing the original matrix using the max value matrix;

wherein the plurality of processing elements is configured to:

receive matrix data from the multi-dimensional memory, wherein the matrix data is associated with the one or more matrix operands;

extract the one or more matrix operands from the matrix data;

perform the backward pooling operation using the one or more matrix operands, wherein the plurality of processing elements configured to perform the backward pooling operation is further configured to:

identify a max value entry from the max value matrix;

create a partial matrix based on the max value entry, wherein the partial matrix comprises a portion of the reconstructed matrix;

determine that one or more elements of the partial matrix will not be modified; and

write the one or more elements of the partial matrix to the plurality of memory elements; and

obtain a result of the backward pooling operation.

14. The system of claim 13 , wherein each matrix processing chip comprises a plurality of matrix processing clusters.

15. The system of claim 14 , wherein each matrix processing cluster comprises a plurality of matrix processing units.

16. The system of claim 14 , wherein each matrix processing cluster comprises a plurality of memory resource blocks.

17. At least one non-transitory machine accessible storage medium having instructions stored thereon, the instructions, when executed on a machine, cause the machine to:

perform a matrix operation, wherein the matrix operation comprises a backward pooling operation on one or more matrix operands, wherein the one or more matrix operands comprise a max value matrix associated with an original matrix, wherein the backward pooling operation comprises an operation to create a reconstructed matrix by partially reconstructing the original matrix using the max value matrix, and wherein the instructions that cause the machine to perform the matrix operation further cause the machine to:

receive matrix data from a multi-dimensional memory, wherein the matrix data is associated with the one or more matrix operands;

extract the one or more matrix operands from the matrix data;

perform the backward pooling operation using the one or more matrix operands, wherein the instructions that cause the machine to perform the backward pooling operation further cause the machine to:

identify a max value entry from the max value matrix;

create a partial matrix based on the max value entry, wherein the partial matrix comprises a portion of the reconstructed matrix;

determine that one or more elements of the partial matrix will not be modified; and

write the one or more elements of the partial matrix to the multi-dimensional memory; and

obtain a result of the backward pooling operation.

18. The storage medium of claim 17 , wherein the instructions further cause the machine to store one or more elements of the reconstructed matrix in a FIFO memory, wherein the FIFO memory comprises one or more status bits to track whether one or more entries in the FIFO memory have been modified.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 30, 2016
From: LAU, HORACE; WERNER, TONY L.
To: INTEL CORPORATION
Reel/Frame 040811/0562 →
Continuity (1)
Related Publication 20180189238A1 · Jul 5, 2018