IP Library Granted Patent US 11,113,051
Granted Patent B2
US 11,113,051 · App. 16/153,991 · Granted Sep 7, 2021

Processing core with metadata actuated conditional graph execution

Inventors: Ljubisa Bajic (Toronto, CA); Milos Trajkovic (Toronto, CA); Ivan Hamer (Toronto, CA); Lejla Bajic (Ontario, CA); Aleksandar Cejkov (Ontario, CA)
Assignee: Tenstorrent Inc.
G06F9/30003G06F16/9024G06N3/04G06N3/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 11,113,051
App. No.
16/153,991
Granted
Sep 7, 2021
Kind
B2
Abstract

A processing core and associated methods for the efficient execution of a directed graph are disclosed. A disclosed processing core comprises a memory and a first data tile stored in the memory. The first data tile includes a first set of data elements and metadata stored in association with the first set of data elements. The processing core also comprises a second data tile stored in the memory. The second data tile includes a second set of data elements. The processing core also comprises an arithmetic logic unit configured to conduct an arithmetic logic operation using data from the first set of data elements and the second set of data elements. The processing core also comprises a control unit configured to evaluate the metadata and control the arithmetic logic unit to conditionally execute the arithmetic logic operation based on the evaluation of the metadata.

Claims (84)

1. A computer-implemented method for a conditional execution of a directed graph comprising:

evaluating a set of output data from an execution engine;

generating metadata for a first data tile based on the evaluating of the set of output data;

storing, subsequent to the evaluating of the set of output data, a first data tile in a random access memory, wherein the set of output data is stored as a first set of data elements in the first data tile, wherein the first data tile includes a header, and wherein the metadata is stored in the header in the random access memory;

storing a second data tile in the random access memory, wherein the second data tile includes a second set of data elements;

fetching, subsequent to the storing of the first data tile and metadata in the random access memory, an instruction, for execution by the execution engine, wherein execution of the instruction requires an arithmetic logic operation using: (i) an arithmetic logic unit; (ii) a first data element in the first set of data elements; and (iii) a second data element in the second set of data elements;

evaluating the metadata from the header; and

conditionally executing the arithmetic logic operation based on the evaluating of the metadata;

wherein a conditionally executed output of the arithmetic logic unit resulting from the conditional execution of the arithmetic logic operation is not equal to a standard output of the arithmetic logic unit resulting from a standard execution of the arithmetic logic operation.

2. The computer-implemented method of claim 1 , further comprising:

compressing the set of output data from the arithmetic logic unit using a compression engine, wherein the compressed set of output data is subsequently stored as the first set of data elements in the first data tile;

evaluating a set of non-sparse data values in the set of output data during the compressing; and

generating the metadata for the first data tile based on the evaluating of the set of non-sparse data values.

3. The computer-implemented method of claim 2 , wherein:

the non-sparse data values are zeroes;

the metadata is a flag indicating the first set of data elements is all zeroes; and

conditionally executing the arithmetic logic operation based on the evaluating of the metadata involves suppressing the arithmetic logic operation.

4. The computer-implemented method of claim 2 , wherein:

the non-sparse data values are zeroes;

the metadata is a flag indicating the first set of data elements is all zeroes;

evaluating the metadata involves identifying the flag; and

conditionally executing the arithmetic logic operation based on the evaluating of the metadata involves suppressing the arithmetic logic operation and suppressing retrieval of the first set of data elements from memory.

5. The computer-implemented method of claim 1 , wherein:

the metadata includes at least two flags associated with at least two portions of the first data tile in a one-to-one correspondence.

6. The computer-implemented method of claim 5 , wherein:

the portions of the first data tile are each x-y planes of a three-dimensional tensor; and

the flags indicate if their corresponding x-y plane is all zero, wherein the flags and their corresponding x-y planes correspond according to the one-to-one correspondence.

7. The computer-implemented method of claim 1 , wherein:

the metadata is a flag indicating the first set of data elements are all zeroes; and

conditionally executing the arithmetic logic operation based on the evaluating of the metadata involves suppressing the arithmetic logic operation.

8. The computer-implemented method of claim 1 , wherein:

the instruction is part of an instruction sequence for a standard execution of the directed graph;

the first set of data elements are directed graph data elements of the directed graph;

the second set of data elements are directed graph data elements of the directed graph; and

the conditional execution is less computationally intensive than the standard execution.

9. The computer-implemented method of claim 8 , wherein:

the directed graph represents an artificial neural network;

the artificial neural network has a layer; and

the first and second data tiles have less data than the layer.

10. The computer-implemented method of claim 1 , further comprising:

generating the metadata for the first data tile using a software controller; and

storing the metadata in a tile header of the first data tile;

wherein the conditional execution uses the metadata.

11. The computer-implemented method of claim 1 , further comprising:

setting a size of the first data tile using a software controller.

12. The computer-implemented method of claim 1 , wherein conditionally executing the arithmetic logic operation based on the evaluating of the metadata comprises:

determining that the metadata for the first data tile includes a flag; and

causing the arithmetic logic operation to be conditionally executed in response to determining that the metadata for the first data tile includes a flag.

13. The computer-implemented method of claim 1 , wherein conditionally executing the arithmetic logic operation using the metadata comprises:

entirely suppressing the arithmetic logic operation; and

providing a zero value in place of the conditionally executed output.

14. The computer-implemented method of claim 1 , further comprising:

storing the metadata in a register of a control unit of the arithmetic logic unit; and

evaluating the metadata involves the control unit checking a value in the register;

wherein conditionally executing the arithmetic logic operation based on evaluating of the metadata involves the control unit suppressing transmission of the operation to the arithmetic logic unit.

15. A processing core comprising:

a random access memory;

an execution engine;

a firmware controller configured to evaluate a set of output data from the execution engine and generate metadata for a first data tile based on the evaluating of the set of output data;

a first data tile stored in the random access memory, wherein the first data tile includes: (i) a first set of data elements; and (ii) a header storing the metadata;

a second data tile stored in the random access memory, wherein the second data tile includes a second set of data elements;

an arithmetic logic unit configured to conduct an arithmetic logic operation using data from the first set of data elements and the second set of data elements; and

a control unit configured to: (i) fetch an instruction for execution by the execution engine wherein execution of the instruction requires the arithmetic logic unit to conduct the arithmetic logic operation; (ii) evaluate the metadata from the header while executing the instruction; and (iii) control the arithmetic logic unit to conditionally execute the arithmetic logic operation based on the evaluation of the metadata.

16. The processing core of claim 15 , further comprising:

a compression engine configured to read a set of output data from a set of math accumulation buffers, and evaluate a set of non-sparse data values in the set of output data, wherein the set of math accumulation buffers are coupled to the arithmetic logic unit;

wherein the firmware controller is configured to generate the metadata for the first data tile based on the evaluation of the set of non-sparse data values in the set of output data conducted by the compression engine, and store the metadata in the header of the first data tile.

17. The processing core of claim 16 , wherein:

the non-sparse data values are zeroes;

the metadata is a flag indicating the first set of data elements is all zeroes; and

the control unit is configured to suppress the arithmetic logic operation when conditionally executing the arithmetic logic operation.

18. The processing core of claim 15 , wherein:

the arithmetic logic operation is required for a standard execution of a directed graph;

a conditionally executed output of the arithmetic logic unit resulting from conditional execution of the arithmetic logic operation is not equal to a standard output of the arithmetic logic unit resulting from a standard execution of the arithmetic logic operation;

the first set of data elements are directed graph data elements of the directed graph;

the second set of data elements are directed graph data elements of the directed graph; and

the conditional execution is less computationally intensive than the standard execution.

19. The processing core of claim 18 , wherein:

the directed graph represents an artificial neural network;

the artificial neural network has a layer; and

the first and second data tiles have less data than the layer.

20. The processing core of claim 18 , further comprising:

a register in the control unit that is provided with the metadata during the execution of the instruction;

wherein the control unit is configured to evaluate the metadata by checking a value in the register; and

wherein conditionally executing the arithmetic logic operation based on evaluating the metadata involves the control unit suppressing transmission of the operation to the arithmetic logic unit.

Assignments (4)
CHANGE OF NAME Recorded Feb 23, 2025
From: TENSTORRENT INC.
To: TENSTORRENT AI INC.
Reel/Frame 070298/0922 →
CHANGE OF NAME Recorded Feb 23, 2025
From: TENSTORRENT AI INC.
To: TENSTORRENT AI ULC
Reel/Frame 070298/0944 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 3, 2023
From: CEJKOV, ALEX
To: TENSTORRENT INC.
Reel/Frame 064489/0752 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 30, 2018
From: BAJIC, LJUBISA; TRAJKOVIC, MILOS; HAMER, IVAN; BAJIC, LEJLA; CEJKOV, ALEKSANDAR
To: TENSTORRENT INC.
Reel/Frame 047357/0204 →
Continuity (3)
Continuation In Part 15963315 · Apr 26, 2018
Provisional Application 62491767 · Apr 28, 2017
Related Publication 20190050224A1 · Feb 14, 2019