IP Library Granted Patent US 11,853,256
Granted Patent B2
US 11,853,256 · App. 16/004,799 · Granted Dec 26, 2023

Method, apparatus, and computer-readable medium for parallelization of a computer program on a plurality of computing cores

Inventors: Solomon Harsha (Los Gatos, CA); Paul Master (Sunnyvale, CA)
Assignee: CORNAMI, INC.
G06F15/8046G06F8/45G06Q40/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,853,256
App. No.
16/004,799
Granted
Dec 26, 2023
Kind
B2
Abstract

An apparatus, computer-readable medium, and computer-implemented method for parallelization of a computer program on a plurality of computing cores includes receiving a computer program comprising a plurality of commands, decomposing the plurality of commands into a plurality of node networks, each node network corresponding to a command in the plurality of commands and including one or more nodes corresponding to execution dependencies of the command, mapping the plurality of node networks to a plurality of systolic arrays, each systolic array comprising a plurality of cells and each non-data node in each node network being mapped to a cell in the plurality of cells, and mapping each cell in each systolic array to a computing core in the plurality of computing cores.

Claims (29)

1. A computer processing unit comprising:

at least one systolic array, each of said at least one systolic array including a plurality of cores, each core including multiple processing elements and each core being adapted to execute functions;

an interconnection network coupled to the plurality of cores, the interconnection network configured to provide interconnections between the plurality of cores and between the processing elements within each respective core;

a controller coupled to the plurality of cores to manage the execution of functions by the plurality of cores by configuring the connections between the processing elements of the interconnection network at run-time.

2. The computer processing unit of claim 1 , wherein the processing elements are arithmetic processing elements.

3. The computer processing unit of claim 2 , wherein the controller is an event-driven controller.

4. The computer processing unit of claim 3 , wherein the controller configures the function of at least one of the processing elements at run-time.

5. The computer processing unit of claim 3 , wherein the controller configures connections between the processing elements at run-time.

6. The computer processing unit of claim 3 , wherein there are a plurality of systolic arrays and the interconnection network configures interconnections between the plurality of systolic arrays at runtime.

7. The computer processing unit of claim 6 , wherein the controller configures the function of at least one of the processing elements at run-time.

8. The computer processing unit of claim 6 , wherein the interconnection network comprises a Network on a Chip (NOC).

9. The computer processing unit of claim 6 , wherein the controller comprises an event-driven memory controller fed by a memory that is external to the systolic array.

10. The computer processing unit of claim 1 , wherein the systolic arrays are implemented as field-programmable gate arrays (FPGAs).

11. The computer processing unit of claim 3 , wherein there are a plurality of systolic arrays and the interconnection network configures interconnections between the plurality of systolic arrays at compile-time.

12. The computer processing unit of claim 3 , wherein the controller configures the function of at least one of the processing elements at com pile-time.

13. A method of configuring a computer processing unit including at least one systolic array, each of said at least one systolic array including a plurality of cores, each core including multiple processing elements and each core being adapted to execute functions, the method comprising:

providing an interconnection network coupled to the plurality of cores, the interconnection network configured to provide interconnections between the plurality of cores and between the processing elements within each respective core; and

configuring the connections between the processing elements of the interconnection network at run-time by a controller coupled to the plurality of cores to thereby manage the execution of functions by the plurality of cores.

14. The method of claim 13 , wherein the processing elements are arithmetic processing elements.

15. The method of claim 14 , wherein the controller is an event- driven controller.

16. The method of claim 15 , further comprising the controller configuring the functions of the processing elements at run-time.

17. The method of claim 15 , wherein the configuring step comprises configuring connections between the processing elements at run-time.

18. The method of claim 15 , wherein there are a plurality of systolic arrays and the interconnection network configures interconnections between the plurality of systolic arrays at runtime.

19. The method of claim 18 , wherein the configuring step comprises the controller configuring the function of at least one of the processing elements at run-time.

20. The method of claim 18 , wherein the interconnection network comprises a Network on a Chip (NOC).

21. The method of claim 18 , wherein the controller comprises an event-driven memory controller fed by a memory that is external to the systolic array.

22. The method of claim 13 , wherein the systolic arrays are implemented as field-programmable gate arrays (FPGAs).

23. The method of claim 15 , wherein there are a plurality of systolic arrays and further comprising the interconnection network configuring interconnections between the plurality of systolic arrays at compile-time.

24. The method of claim 15 , wherein the configuring step comprises the controller configuring the function of at least one of the processing elements at compile-time.

Assignments (4)
CHANGE OF NAME Recorded Oct 7, 2024
From: SVIRAL, INC.
To: CORNAMI, INC.
Reel/Frame 069118/0595 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 7, 2024
From: HARSHA, SOLOMON
To: FISSIONSTREAM TECHNOLOGIES, INC.
Reel/Frame 068814/0451 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 7, 2024
From: MASTER, PAUL
To: SVIRAL, INC.
Reel/Frame 068819/0181 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 7, 2024
From: FISSIONSTREAM TECHNOLOGIES, INC.
To: SVIRAL, INC.
Reel/Frame 068819/0264 →
Continuity (6)
Continuation 15480411 · Apr 6, 2017
Continuation 15296681 · Oct 18, 2016
Continuation 14483086 · Sep 10, 2014
Provisional Application 61877267 · Sep 12, 2013
Provisional Application 61876213 · Sep 10, 2013
Related Publication 20180293206A1 · Oct 11, 2018