IP Library Patent Application 16855927
Patent Application
App. No. 16/855,927

MAPPING CONVOLUTION TO CONNECTED PROCESSING ELEMENTS USING DISTRIBUTED PIPELINED SEPARABLE CONVOLUTION OPERATIONS

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 None
App. No.
16/855,927
Abstract

A processor system comprises a plurality of dot product processor units and element-wise multiplication units. The dot product processor units perform a depthwise convolution of a data matrix with a separate depthwise convolution weight matrix for each data matrix channel. Each dot product processor unit performs at least a portion of the depthwise convolution for one or more data matrix channels. The element-wise multiplication units perform multiplication operations of a pointwise convolution. Each element-wise multiplication unit applies to each depthwise convolution partial result element received from one or more of the dot product processor units a corresponding data element from each of a plurality of pointwise convolution weight filters to determine element-wise multiplication unit results. The processor system sums together different groups of data elements from the element-wise multiplication unit results to at least in part calculate different data elements of a result of the pointwise convolution.

Claims (38)

1 . A processor system, comprising:

a plurality of dot product processor units configured to perform a depthwise convolution of a data matrix having a plurality of channels with a plurality of depthwise convolution weight matrices including a separate depthwise convolution weight matrix for each of the plurality of channels, wherein each of the dot product processor units is configured to perform at least a portion of the depthwise convolution for one or more channels included in the plurality of channels; and

a plurality of element-wise multiplication units configured to at least in part perform multiplication operations of a pointwise convolution, wherein each of the element-wise multiplication units is configured to apply to each depthwise convolution partial result element received from one or more of the dot product processor units a corresponding data element from each of a plurality of pointwise convolution weight filters to determine element-wise multiplication unit results;

wherein the processor system is configured to sum together different groups of data elements from the element-wise multiplication unit results from the plurality of element-wise multiplication units to at least in part calculate different data elements of a result of the pointwise convolution.

2 . The system of claim 1 , wherein the plurality of element-wise multiplication units is configured to at least in part perform the multiplication operations of the pointwise convolution prior to a completion of the depthwise convolution.

3 . The system of claim 1 , wherein the processor system is configured to sum together the different groups of the data elements from the element-wise multiplication unit results at least in part in parallel.

4 . The system of claim 1 , wherein each of the dot product processor units includes a plurality of calculation units.

5 . The system of claim 4 , wherein each calculation unit of the plurality of calculation units includes a vector multiply unit and a vector adder unit.

6 . The system of claim 5 , wherein the vector adder unit includes an adder tree.

7 . The system of claim 1 , wherein the data matrix is a three-dimensional machine learning data matrix.

8 . The system of claim 1 , wherein the separate depthwise convolution weight matrix and each of the plurality of pointwise convolution weight filters are machine learning weight matrices.

9 . The system of claim 1 , wherein the separate depthwise convolution weight matrix is a 3 x 3 matrix.

10 . The system of claim 1 , wherein the separate depthwise convolution weight matrix is a 3×3, 5×5, 7×7, 9×9, or 11×11 matrix.

11 . The system of claim 1 , wherein each of the plurality of pointwise convolution weight filters has a channel depth that corresponds to a count of the plurality of channels of the data matrix.

12 . The system of claim 1 , further comprising:

a plurality of reduction units;

is a plurality of point-to-point connections, wherein each point-to-point connection of the plurality of point-to-point connections is configured to provide a result of a first reduction unit of the plurality of reduction units to a second reduction unit of the plurality of reduction units; and

a communication bus connecting together the plurality of dot product processor units.

13 . The system of claim 12 , wherein the first reduction unit includes an adder configured to perform vector addition operations.

14 . The system of claim 12 , wherein each of the plurality of dot product processor units is configured to receive a depthwise convolution operation instruction via the communication bus.

15 . The system of claim 12 , wherein each of the plurality of element-wise multiplication units is configured to receive a pointwise convolution operation instruction via the communication bus.

16 . The system of claim 12 , wherein the second reduction unit of the plurality of reduction units is configured to add together a local result of an element-wise multiplication unit of the plurality of element-wise multiplication units with a reduced result of the first reduction unit of the plurality of reduction units to determine a reduction unit result.

17 . The system of claim 16 , wherein the second reduction unit is further configured to provide the reduction unit result to a third reduction unit of the plurality of reduction units via a point-to-point connection of the plurality of point-to-point connections.

18 . A method comprising:

determining a vector of depthwise convolution partial result elements using a dot product engine of a first processing element, wherein the vector of depthwise convolution partial result elements corresponds to a matrix slice from an assigned channel of a three-dimensional data matrix and a separate depthwise convolution weight matrix;

providing the vector of depthwise convolution partial result elements to an element-wise multiplication unit of the first processing element;

determining element-wise multiplication results for each element of the vector of depthwise convolution partial result elements by performing multiplication operations of a pointwise convolution using the each element and corresponding data elements from a channel of a plurality of pointwise convolution weight filters;

providing the element-wise multiplication results for each element of the vector of depthwise convolution partial result elements to a reduction unit of the first processing element;

receiving upstream results from a second processing element via a first point-to-point connection;

summing together the upstream results with the corresponding element-wise multiplication results to determine reduction unit results; and

sending the reduction unit results to a third processing element via a second point-to-point connection.

19 . The method of claim 18 , wherein the upstream results are at least in part determined using corresponding data elements from corresponding channels of the plurality of pointwise convolution weight filters.

20 . A processing element system, comprising:

a dot product processor unit configured to perform a depthwise convolution using a two-dimensional matrix slice of a three-dimensional data matrix with a depthwise convolution weight matrix of a plurality of depthwise convolution weight matrices;

an element-wise multiplication unit configured to at least in part perform multiplication operations of a pointwise convolution by applying to each depthwise convolution partial result element received from the dot product processor unit a corresponding data element from each of a plurality of pointwise convolution weight filters to determine local element-wise multiplication unit results;

a first point-to-point connection configured to receive an upstream result from an upstream processing element;

a reduction unit configured to sum together the received upstream result and the determined local element-wise multiplication unit results to determine a reduction unit result; and

a second point-to-point connection configured to provide the determined reduction unit result to a downstream processing element.

Assignments (2)
CHANGE OF NAME Recorded Nov 19, 2021
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058214/0351 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 9, 2020
From: KOMURAVELLI, RAKESH; NAIR, KRISHNAKUMAR NARAYANAN; DIRIL, ABDULKADIR UTKU; ZADEH, EHSAN KHISH ARDESTANI; HAO, YUCHEN; SCHATZ, MARTIN; ULRICH, THOMAS MARK; WU, OLIVIA; KADKOL, ANUP RAMESH; FIROOZSHAHIAN, AMIN
To: FACEBOOK, INC.
Reel/Frame 052880/0688 →