Distributed matrix multiplication for neural networks

US10169296B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10169296-B2
Application numberUS-201615395527-A
CountryUS
Kind codeB2
Filing dateDec 30, 2016
Priority dateDec 30, 2016
Publication dateJan 1, 2019
Grant dateJan 1, 2019

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

In one embodiment, a matrix operation associated with a plurality of input matrices may be performed. The plurality of input matrices may be partitioned into a plurality of input partitions, wherein the plurality of input matrices is partitioned based on a number of available processing elements. The plurality of input partitions may be distributed among a plurality of processing elements, wherein each input partition is distributed to a particular processing element of the plurality of processing elements. A plurality of partial matrix operations may be performed using the plurality of processing elements, and partial matrix data may be transmitted between the plurality of processing elements while performing the plurality of partial matrix operations. A result of the matrix operation may be determined based on the plurality of partial matrix operations.

First claim

Opening claim text (preview).

What is claimed is: 1. An apparatus, comprising: a plurality of memory elements to store matrix data, wherein the matrix data comprises a plurality of input matrices; and a plurality of processing elements to perform a matrix operation associated with the plurality of input matrices, wherein the plurality of processing elements is configured to: partition the plurality of input matrices into a plurality of input partitions, wherein the plurality of input matrices is partitioned based on a number of available processing elements; distribute the plurality of input partitions among the plurality of processing elements, wherein each input partition is distributed to a particular processing element of the plurality of processing elements; perform a plurality of partial matrix operations using the plurality of processing elements; transmit partial matrix data between the plurality of processing elements while performing the plurality of partial matrix operations; and determine a result of the matrix operation based on the plurality of partial matrix operations. 2. The apparatus of claim 1 , wherein the matrix operation comprises one or more matrix multiplication operations. 3. The apparatus of claim 1 , wherein: the plurality of processing elements is configured in a hierarchical arrangement comprising a plurality of processing levels; and the plurality of processing elements is further configured to distribute the matrix operation across the plurality of processing levels. 4. The apparatus of claim 3 , wherein the plurality of processing elements comprises: a plurality of matrix processing chips; and a plurality of matrix processing clusters associated with each matrix processing chip. 5. The apparatus of claim 1 , wherein the plurality of processing elements is further configured to partition the plurality of input matrices based on a number of rows of the plurality of input matrices. 6. The apparatus of claim 1 , wherein: the plurality of processing elements is configured in a cyclic arrangement such that each processing element is communicatively coupled to a plurality of neighbor processing elements; and the plurality of neighbor processing elements of each processing element comprises a first neighbor processing element and a second neighbor processing element. 7. The apparatus of claim 6 , wherein the plurality of processing elements is further configured to: perform the plurality of partial matrix operations in a plurality of stages; and transmit a portion of the partial matrix data from each processing element to one or more of the neighbor processing elements while performing a particular stage of the partial matrix operations. 8. The apparatus of claim 7 , wherein the plurality of processing elements is further configured to transmit the portion of the partial matrix data from each processing element to the first neighbor processing element and the second neighbor processing element. 9. The apparatus of claim 8 , wherein the partial matrix data comprises a partial input matrix, wherein the partial input matrix is to be used by a first processing element in a particular stage of the partial matrix operations, and wherein the partial input matrix is to be used by a second processing element in a subsequent stage of the partial matrix operations. 10. The apparatus of claim 9 , wherein the matrix operation is associated with a forward propagation operation in a neural network. 11. The apparatus of claim 9 , wherein the matrix operation is associated with a weight update operation in a neural network. 12. The apparatus of claim 7 , wherein the partial matrix data comprises a partial result matrix determined by a first processing element in a particular stage of the partial matrix operations, and wherein the partial result matrix is to be used by a second processing element in a subsequent stage of the partial matrix operations. 13. The apparatus of claim 12 , wherein the matrix operation is associated with a backward propagation operation in a neural network. 14. A method, comprising: performing a matrix operation associated with a plurality of input matrices, wherein performing the matrix operation comprises: partitioning the plurality of input matrices into a plurality of input partitions, wherein the plurality of input matrices is partitioned based on a number of available processing elements; distributing the plurality of input partitions among a plurality of processing elements, wherein each input partition is distributed to a particular processing element of the plurality of processing elements; performing a plurality of partial matrix operations using the plurality of processing elements; transmitting partial matrix data between the plurality of processing elements while performing the plurality of partial matrix operations; and determining a result of the matrix operation based on the plurality of partial matrix operations. 15. The method of claim 14 , wherein the plurality of input matrices is further partitioned based on a number of rows of the plurality of input matrices. 16. The method of claim 14 , wherein: the plurality of processing elements is configured in a cyclic arrangement such that each processing element is communicatively coupled to a plurality of neighbor processing elements; and the plurality of neighbor processing elements of each processing element comprises a first neighbor processing element and a second neighbor processing element. 17. The method of claim 16 , wherein the plurality of partial matrix operations is performed in a plurality of stages, and wherein each processing element transmits a portion of the partial matrix data to one or more of the neighbor processing elements while performing a particular stage of the partial matrix operations. 18. The method of claim 17 , wherein the portion of the partial matrix data is transmitted from each processing element to the first neighbor processing element and the second neighbor processing element. 19. A system, comprising: a plurality of memory elements to store matrix data, wherein the matrix data comprises a plurality of input matrices; a plurality of processing elements to perform a matrix operation associated with the plurality of input matrices, wherein the plurality of processing elements comprises: a host processor; one or more matrix processing chips; a plurality of matrix processors associated with the one or more matrix processing chips; wherein the plurality of processing elements is configured to: partition the plurality of input matrices into a plurality of input partitions, wherein the plurality of input matrices is partitioned based on a number of available processing elements; distribute the plurality of input partitions among the plurality of processing elements, wherein each input partition is distributed to a particular processing element of the plurality of processing elements; perform a plurality of partial matrix operations using the plurality of processing elements; transmit partial matrix data between the plurality of processing elements while performing the plurality of partial matrix operations; and determine a result of the matrix operation based on the plurality of partial matrix operations. 20. The system of claim 19 , further comprising a communication interface to communicate with one or more remote matrix processing chips over a communication network. 21. At least one non-transitory machine accessible storage medium having instructio

Assignees

Inventors

Classifications

  • Combinations of networks · CPC title

  • Backpropagation, e.g. using gradient descent · CPC title

  • G06F17/16Primary

    Matrix or vector computation {, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization (matrix transposition G06F7/78)} · CPC title

  • Supervised learning · CPC title

  • Convolutional networks [CNN, ConvNet] · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10169296B2 cover?
In one embodiment, a matrix operation associated with a plurality of input matrices may be performed. The plurality of input matrices may be partitioned into a plurality of input partitions, wherein the plurality of input matrices is partitioned based on a number of available processing elements. The plurality of input partitions may be distributed among a plurality of processing elements, wher…
Who is the assignee on this patent?
Intel Corp
What technology area does this patent fall under?
Primary CPC classification G06F17/16. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jan 01 2019 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 5 related publications on this page (citations in our corpus or others sharing the same primary CPC).