IP Library Granted Patent US 12,112,175
Granted Patent B1
US 12,112,175 · App. 17/590,994 · Granted Oct 8, 2024

Method and apparatus for performing machine learning operations in parallel on machine learning hardware

Inventors: Ulf Hanebutte (Gig Harbor, WA); Avinash Sodani (San Jose, CA)
Assignee: Marvell Asia Pte Ltd
G06F9/3879G06F8/453G06F9/30174G06F9/3836G06F9/3851G06F9/3877G06F15/7807G06F17/16G06N20/00G06N20/10G06F9/3001G06F15/7864G06F15/8023G06F2212/602G06N5/04G06N20/20
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 12,112,175
App. No.
17/590,994
Granted
Oct 8, 2024
Kind
B1
Abstract

A method includes receiving a set of data. The set of data is divided into a plurality of data portions. The method includes transmitting the plurality of data portions to a plurality of processing tiles, wherein each data portion of the plurality of data portions is associated with a processing tile of a plurality of tiles. Each processing tile of the plurality of tiles performs at least one local operation on its respective data portion to form a local result. The method includes exchanging local results between the plurality of processing tiles. Moreover, the method includes calculating a global value based on the local results. The method further includes performing at least one local operation by each processing tile of the plurality of tiles on its respective data portion based on the global value to form a computed result.

Claims (81)

1. A computer implemented method, comprising:

receiving a set of data;

dividing the set of data into a plurality of data portions;

transmitting the plurality of data portions to a plurality of processing tiles, wherein each data portion of the plurality of data portions is associated with a processing tile of a plurality of tiles;

performing by each processing tile of the plurality of tiles at least one local operation on its respective data portion to form a local maxima;

exchanging local maximas between the plurality of processing tiles;

calculating a global maximum value based on the local maximas;

performing by each processing tile of the plurality of tiles a subtraction operation of the global maximum value from each data input its respective data portion to form a subtraction result;

performing by each processing tile of the plurality of tiles an exponential operation on the subtraction result to form exponential results;

forming a sum of the exponential results from the plurality of tiles; and

inverting the sum to form a scaled value.

2. The computer implemented method of claim 1 , wherein the at least one local operation that forms the final result is an elementwise multiplication of the scaled value and the exponential results.

3. The computer implemented method of claim 1 , wherein the plurality of processing tiles are within an inference engine of a machine learning hardware.

4. The computer implemented method of claim 1 , wherein the plurality of processing tiles operate simultaneously when performing the at least one local operation.

5. The computer implemented method of claim 1 , wherein the plurality of processing tiles operate simultaneously when calculating the global maximum value.

6. The computer implemented method of claim 1 , wherein the plurality of processing tiles operate simultaneously when performing the at least one local operation on its respective data portion based on the global maximum value to form the final result.

7. A computer implemented method, comprising:

receiving a set of data;

dividing the set of data into a plurality of data portions;

transmitting the plurality of data portions to a plurality of processing tiles, wherein each data portion of the plurality of data portions is associated with a processing tile of a plurality of tiles;

each processing tile of the plurality of tiles performing at least one operation on its respective data portion to form a computed result without exchanging data related to the at least one operation with other processing tiles of the plurality of tiles, wherein the at least one operation is finding a maximum value associated with the respective data portion;

performing by each processing tile of the plurality of tiles a subtraction operation of the maximum value from each data input its respective data portion to form a subtraction result;

performing an exponential operation on the subtraction result to form exponential results on each processing tile of the plurality of tiles;

forming a sum of the exponential results on each processing tile of the plurality of tiles; and

inverting the sum of exponential results to form a scaled value on each processing tile of the plurality of tiles.

8. The computer implemented method of claim 7 , wherein the at least one operation that forms the final result is an elementwise multiplication of the scaled value and the exponential results.

9. The computer implemented method of claim 7 , wherein the plurality of processing tiles are within an inference engine of a machine learning hardware.

10. The computer implemented method of claim 7 , wherein the plurality of processing tiles operate simultaneously when performing the at least one operation.

11. A system comprising:

a means for receiving a set of data;

a means for dividing the set of data into a plurality of data portions;

a means for transmitting the plurality of data portions to a plurality of processing tiles, wherein each data portion of the plurality of data portions is associated with a processing tile of a plurality of tiles;

a means for performing at least one local operation by each processing tile of the plurality of tiles on its respective data portion to form a local maxima;

a means for exchanging local maximas between the plurality of processing tiles;

a means for calculating a global maximum value based on the local maximas;

a means for performing by each processing tile of the plurality of tiles a subtraction operation of the global maximum value from each data input its respective data portion to form a subtraction result;

a means for performing by each processing tile of the plurality of tiles an exponential operation on the subtraction result to form exponential results;

a means for forming a sum of the exponential results from the plurality of tiles; and

a means for inverting the sum to form a scaled value.

12. A system, comprising:

a plurality of processing tiles within an inference engine, wherein a set of received data is divided into a plurality of data portions, and wherein the plurality of data portions is transmitted to the plurality of processing tiles, wherein each data portion of the plurality of data portions is associated with a processing tile of a plurality of tiles, and wherein each processing tile of the plurality of processing tiles is configured to:

perform at least one local operation on its respective data portion to form a local maxima;

exchange local maximas with processing tiles within the plurality of processing tiles;

calculate a global maximum value based on the local maximas;

perform a subtraction operation of the global maximum value from each data input its respective data portion to form a subtraction result;

performing an exponential operation on the subtraction result to form exponential results;

form a sum of the exponential results from the plurality of tiles; and

invert the sum to form a scaled value.

13. A system, comprising:

a first processing tile and a first on-chip memory (OCM); and

a second processing tile and a second OCM;

wherein a set of received data is divided into a first data portion and a second data portion, wherein the first data portion is transmitted to the first processing tile and the first OCM and wherein the second data portion is transmitted to the second processing and the second OCM,

wherein the first processing tile is configured to perform a local operation on the first data portion to form a first local maxima, and wherein the second processing tile is configured to perform a local operation on the second data portion to form a second local maxima,

and wherein the first processing tile and the second processing tile are configured to exchange their respective local maximas with one another and to calculate a global maximum value based on the first and the second local maximas,

and wherein the first processing tile and the second processing tile are configured to perform a subtraction operation of the global maximum value from each data input its respective data portion to form a subtraction result,

and wherein the first processing tile and the second processing tile are configured to perform an exponential operation on the subtraction result to form exponential results,

and wherein the first processing tile and the second processing tile are configured to form a sum of the exponential results from the plurality of tiles; and

and wherein the first processing tile and the second processing tile are configured to invert the sum to form a scaled value.

14. A computer implemented method, comprising:

receiving a set of data;

dividing the set of data into a plurality of data portions;

transmitting the plurality of data portions to a plurality of processing tiles, wherein each data portion of the plurality of data portions is associated with a processing tile of a plurality of tiles;

performing by each processing tile of the plurality of tiles at least one local operation on its respective data portion to form a local maxima;

exchanging local maximas between the plurality of processing tiles;

calculating a global maximum value based on the local maximas;

negating the global maximum value to form a negative global maximum value;

performing by each processing tile of the plurality of tiles an addition operation of the negative global maximum value and each data input its respective data portion to form an addition result;

performing by each processing tile of the plurality of tiles an exponential operation on the addition result to form exponential results;

forming a sum of the exponential results from the plurality of tiles; and

inverting the sum to form a scaled value.

15. A computer implemented method, comprising:

receiving a set of data;

dividing the set of data into a plurality of data portions;

transmitting the plurality of data portions to a plurality of processing tiles, wherein each data portion of the plurality of data portions is associated with a processing tile of a plurality of tiles;

performing by each processing tile of the plurality of tiles at least one local operation on its respective data portion to form a local maxima;

exchanging local maximas between the plurality of processing tiles;

calculating a global maximum value based on the local maximas;

performing by each processing tile of the plurality of tiles a subtraction operation of the global maximum value from each data input its respective data portion to form a subtraction result;

performing by each processing tile of the plurality of tiles an exponential operation on the subtraction result to form exponential results;

forming a sum of the exponential results from the plurality of tiles; and

divide each exponential result of the exponential results by the sum of the exponential results.

Continuity (8)
Continuation In Part 17511111 · Oct 26, 2021
Continuation In Part 17248045 · Jan 6, 2021
Continuation 16226508 · Dec 19, 2018
Provisional Application 63282557 · Nov 23, 2021
Provisional Application 63105861 · Oct 26, 2020
Provisional Application 62675076 · May 22, 2018
Provisional Application 62644352 · Mar 16, 2018
Provisional Application 62628130 · Feb 8, 2018
Cited By (1)
US 12,561,114