IP Library › Granted Patent US 11,210,594
Granted Patent B1
US 11,210,594 · App. 16/526,916 · Granted Dec 28, 2021

Processor compiler

Inventors: Jonathan Alexander Ross (Palo Alto, CA); Gregory M. Thorson (Palo Alto, CA)
Assignee: Groq, Inc.
G06N5/022G06N20/00
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,210,594
App. No.
16/526,916
Granted
Dec 28, 2021
Kind
B1
Abstract

A system receives a predictive model and receives one or more runtime constraints. The system generates a directed acyclic graph (DAG) of the predictive model indicating dependencies. The system compiles the predictive model into first instructions for a first processor based on the one or more runtime constraints and the DAG. The system packages first instructions, the one or more runtime constraints, and the DAG of the predictive model in a first binary. The system recompiles the predictive model into second instructions for a second processor based on the runtime constraints and the DAG stored in the first processor. The system packages the second instructions, the DAG, and the runtime constraints in a second binary.

Claims (28)

1. A method, comprising:

determining, by a compiler, a functional unit of a processor to execute an instruction, the processor comprising a plurality of separate functional units;

selecting, a memory location for operands of the instruction based on the functional unit that is determined to execute the instruction, the memory location selected to reduce an access delay by the functional unit of the operands from the memory location during execution of the instruction, the memory location indicating a physical memory address within a memory unit associated with the functional unit; and

compiling the instruction into a binary, the binary including an indication of the memory location from which to load operands and store results from the instruction.

2. The method of claim 1 , wherein the memory location is further selected such that an energy usage constraint is met when the instruction is executed by the processor.

3. The method of claim 1 , wherein the memory location is further selected such that a combination of an energy usage constraint and a latency constraint is met when the instruction is executed by the processor.

4. The method of claim 1 , wherein the memory location is further selected based on an availability of resources of the processor.

5. The method of claim 1 , wherein the memory location is further selected based on an availability of the functional unit for execution of the instruction.

6. The method of claim 1 , wherein the memory location is further selected based on a capability of the functional unit to execute the instruction.

7. The method of claim 1 , further comprising selecting the functional unit to execute the instruction based on a relative memory location selected for the operands of the instruction.

8. The method of claim 1 , wherein the functional unit is the memory unit.

9. The method of claim 1 , wherein the processor comprises a plurality of memory units, each memory unit including a plurality of memory locations.

10. The method of claim 1 , further comprising determining one or more memory locations for each instruction of a plurality of instructions such that the access delay to the one or more memory locations during execution of the plurality of instructions by the processor is reduced.

11. The method of claim 10 , wherein the instruction, when executed by the processor, does not cause the processor to exceed a power usage threshold value.

12. The method of claim 1 , wherein the compiler generates a plurality of compiled binaries, and wherein the processor executes a selected binary of the plurality of compiled binaries based on different runtime constraints.

13. A system, comprising:

a compiler configured to:

determine a functional unit of a processor to execute an instruction, the processor comprising a plurality of separate functional units;

select, a memory location for operands of the instruction based on the functional unit that is determined to execute the instruction, the memory location selected to reduce an access delay by the functional unit of the operands from the memory location during execution of the instruction, the memory location indicating a physical memory address within a memory unit associated with the functional unit; and

compile the instruction into a binary, the binary including an indication of the memory location from which to load operands and store results from the instruction; and

the processor to execute the binary.

14. The system of claim 13 , wherein the memory location is further selected such that an energy usage constraint is met when the instruction is executed by the processor.

15. The system of claim 13 , wherein the memory location is further selected such that a combination of an energy usage constraint and a latency constraint is met when the instruction is executed by the processor.

16. The system of claim 13 , wherein the memory location is further selected based on an availability of the functional unit for execution of the instruction.

17. The system of claim 13 , wherein the compiler is further configured to select the functional unit to execute the instruction based on a relative memory location selected for the operands of the instruction.

18. The system of claim 13 , wherein the compiler is further configured to determine one or more memory locations for each instruction of a plurality of instructions such that the access delay to the one or more memory locations during execution of the plurality of instructions by the processor is reduced.

19. The system of claim 18 , wherein the instruction, when executed by the processor, does not cause the processor to exceed a power usage threshold value.

20. The system of claim 13 , wherein the compiler is further configured to generate a plurality of compiled binaries, and wherein the processor executes a selected binary of the plurality of compiled binaries based on different runtime constraints.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 13, 2019
From: ROSS, JONATHAN ALEXANDER; THORSON, GREGORY M.
To: GROQ, INC.
Reel/Frame 050363/0852 →
Continuity (2)
Continuation 16132102 · Sep 14, 2018
Provisional Application 62561516 · Sep 21, 2017
Cited By (5)
US 12,222,894 US 12,223,436 US 12,271,339 US 12,340,300 US 12,411,762