Method and apparatus for a general-purpose multiple-core system for implementing stream-based computations
First Claim
1. A system to convert stream-based computer source code to efficiently operate a multi-core computer system to perform runtime operations, the conversion system comprising:
- a plurality of coresa memory device storing the stream-based computer source code, wherein the source code includes one or more module definitions for creating tasks running on the plurality of cores, each module definition having a list of input streams, a list of output streams, and a body, the body including code for executing a task on at least one of the plurality of cores;
a conversion system including at least one of the plurality of cores, the conversion system creating and assigning a collection of tasks for execution on one or more of the plurality of processing cores from the stream-based computer source code, wherein each task is an executable version of a module definition with a stream expression in the source code, the stream expression containing module input streams and output streams and the stream expression further defining how output-stream data values are computed from input-stream data values, each task further having input streams and output streams corresponding to the input streams and output streams of the source-code module definition wherein at least one of the input streams has an output stream of another task of the collection of tasks as a stream source and at least one of the output streams has an input stream of another task of the collection of tasks as a stream destination, wherein at least one task consumes an array of multiple separate streams by conveying data elements from each respective stream in the array concurrently to input streams of the at least one task.
3 Assignments
0 Petitions
Accused Products
Abstract
A method and system of efficient use and programming of a multi-processing core device. The system includes a programming construct that is based on stream-domain code. A programmable core based computing device is disclosed. The computing device includes a plurality of processing cores coupled to each other. A memory stores stream-domain code including a stream defining a stream destination module and a stream source module. The stream source module places data values in the stream and the stream conveys data values from the stream source module to the stream destination module. A runtime system detects when the data values are available to the stream destination module and schedules the stream destination module for execution on one of the plurality of processing cores.
7 Citations
20 Claims
-
1. A system to convert stream-based computer source code to efficiently operate a multi-core computer system to perform runtime operations, the conversion system comprising:
-
a plurality of cores a memory device storing the stream-based computer source code, wherein the source code includes one or more module definitions for creating tasks running on the plurality of cores, each module definition having a list of input streams, a list of output streams, and a body, the body including code for executing a task on at least one of the plurality of cores; a conversion system including at least one of the plurality of cores, the conversion system creating and assigning a collection of tasks for execution on one or more of the plurality of processing cores from the stream-based computer source code, wherein each task is an executable version of a module definition with a stream expression in the source code, the stream expression containing module input streams and output streams and the stream expression further defining how output-stream data values are computed from input-stream data values, each task further having input streams and output streams corresponding to the input streams and output streams of the source-code module definition wherein at least one of the input streams has an output stream of another task of the collection of tasks as a stream source and at least one of the output streams has an input stream of another task of the collection of tasks as a stream destination, wherein at least one task consumes an array of multiple separate streams by conveying data elements from each respective stream in the array concurrently to input streams of the at least one task. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A method to convert stream-based computer source code to efficiently operate a multi-core computer system including a plurality of processing cores to perform runtime operations, the method comprising:
-
storing a stream-based computer source code in a memory device, wherein the source code includes one or more module definitions for creating tasks running on the plurality of cores, each module definition having a list of input streams, a list of output streams, and a body, the body including code for executing a task on at least one of the plurality of cores; creating and assigning a collection of tasks for execution on one or more of a plurality of processing cores from the stream-based computer source code, wherein each task is an executable version of a module definition with a stream expression in the source code, the stream expression containing module input streams and output streams and the stream expression further defining how output-stream data values are computed from input-stream data values, each task further having input streams and output streams corresponding to the input streams and output streams of the source-code module definition, wherein at least one of the input streams has an output stream of another task of the collection of tasks as a stream source and at least one of the output streams has an input stream of another task of the collection of tasks as a stream destination, wherein at least one task consumes an array of multiple separate streams by conveying data elements from each respective stream in the array concurrently to input streams of the at least one task; and executing the collection of tasks on the plurality of processing cores to perform runtime operations. - View Dependent Claims (14, 15, 16, 17, 18, 19)
-
-
20. A programmable computing device comprising:
-
a plurality of processing cores; a memory device storing the stream-based computer source code, wherein the source code includes one or more module definitions for creating tasks running on the plurality of processing cores, each module definition having a list of input streams, a list of output streams, and a body, the body including code for executing a task on at least one of the plurality of processing cores; a converter coupled to the memory device, the converter creating and assigning a collection of tasks for execution on one or more of the plurality of processing cores from the stream-based computer source code, wherein each task is an executable version of a module definition with a stream expression in the source code, the stream expression containing module input streams and output streams and the stream expression further defining how output-stream data values are computed from input-stream data values, each task further having input streams and output streams corresponding to the input streams and output streams of the source-code module definition, wherein at least one of the input streams has an output stream of another task of the collection of tasks as a stream source and at least one of the output streams has an input stream of another task of the collection of tasks as a stream destination, wherein at least one task consumes an array of multiple separate streams by conveying data elements from each respective stream in the array by concurrently to input streams of the at least one task; and wherein the converter selects one of the plurality of processing cores for each of the collection of tasks, and the plurality of cores executes the collection of tasks in parallel to perform a runtime operation.
-
Specification