Method and apparatus for a compiler and related components for stream-based computations for a general-purpose, multiple-core system
First Claim
1. A method of converting a source code program including stream domain code having multiple parallel computing construct program streams and thread domain code for execution on a multiple node computing device, called functions, and a ping stream expression, comprising machine executable code which when executed by at least one machine, causes the machine to:
- convert the source code program to a converted program including object modules, object module instances and executables;
receive a data structure containing source modules, source module instances and source code for called functions and for each operation and for each function call;
create or retrieve a separate source module that includes;
identical input streams to the inputs of the operation or function;
a single output stream with the same type as the output of the operation or function; and
thread-domain code that;
consumes a single ping value from each input stream and supplies those ping values to an instance of the operation or a function call;
puts the ping value resulting from the operation or function call into the module output stream;
sends an appropriate forward acknowledgement to the destination stream;
sends an appropriate backward acknowledgement to an output port, wherein only the forward and backward acknowledgements are sent;
read a first and a second object module instance converted from the source code program including stream domain code and thread domain code, wherein the first object module instance is a stream source of a program stream of the multiple parallel computing construct program streams and the second object module instance is at least one stream destination of the program stream, wherein the program stream conveys ping values from the stream source to the at least one stream destination; and
match the object module instances to at least one of a plurality of cores on the multiple core computing device.
3 Assignments
0 Petitions
Accused Products
Abstract
A method and system of compiling and linking source stream programs for efficient use of multi-node devices. The system includes a compiler, a linker, a loader and a runtime component. The process converts a source code stream program to a compiled object code that is used with a programmable node based computing device having a plurality of processing nodes coupled to each other. The programming modules include stream statements for input values and output values in the form of sources and destinations for at least one of the plurality of processing nodes and stream statements that determine the streaming flow of values for the at least one of the plurality of processing nodes. The compiler converts the source code stream based program to object modules, object module instances and executables. The linker matches the object module instances to at least one of the multiple cores. The loader loads the tasks required by the object modules in the nodes and configure the nodes matched with the object module instances. The runtime component runs the converted program.
-
Citations
15 Claims
-
1. A method of converting a source code program including stream domain code having multiple parallel computing construct program streams and thread domain code for execution on a multiple node computing device, called functions, and a ping stream expression, comprising machine executable code which when executed by at least one machine, causes the machine to:
-
convert the source code program to a converted program including object modules, object module instances and executables; receive a data structure containing source modules, source module instances and source code for called functions and for each operation and for each function call; create or retrieve a separate source module that includes; identical input streams to the inputs of the operation or function; a single output stream with the same type as the output of the operation or function; and thread-domain code that; consumes a single ping value from each input stream and supplies those ping values to an instance of the operation or a function call; puts the ping value resulting from the operation or function call into the module output stream; sends an appropriate forward acknowledgement to the destination stream; sends an appropriate backward acknowledgement to an output port, wherein only the forward and backward acknowledgements are sent; read a first and a second object module instance converted from the source code program including stream domain code and thread domain code, wherein the first object module instance is a stream source of a program stream of the multiple parallel computing construct program streams and the second object module instance is at least one stream destination of the program stream, wherein the program stream conveys ping values from the stream source to the at least one stream destination; and match the object module instances to at least one of a plurality of cores on the multiple core computing device. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A system to convert a source code stream based program including multiple parallel computing construct program streams to execute on a multiple node computing device, the system comprising:
-
a compiler executing on a hardware controller of the system to convert the source code stream based program to a converted program including object modules, object module instances and executables, at least one object module instance being a stream source of one program stream of the multiple parallel computing construct program streams and at least one object module instance being at least one stream destination of the program stream, wherein the program stream conveys a ping from the stream source to the at least one stream destination and wherein the compiler receives a data structure containing source modules, source module instances and source code for called functions and for each operation and for each function call, and wherein the compiler creates or retrieves a separate source module that includes; identical input streams to the inputs of the operation or function; a single output stream with the same type as the output of the operation or function; a thread-domain code that; consumes a ping value from each input stream and supplies those ping values to an instance of the operation or a function call; puts the ping value resulting from the operation or function call into the module output stream; sends an appropriate forward acknowledgement to the destination stream; and sends an appropriate backward acknowledgement to an output port, wherein only the forward and backward acknowledgements are sent; a linker executing on a hardware controller of the system to match the object module instances of the program stream to at least one of the multiple nodes; a loader executing on a hardware controller of the system to load tasks required by the object modules in the nodes and configure cores of the multiple node computing device matched with the object module instances; and a runtime component to run the converted program on the multiple core computing device. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A non-transitory, machine-readable medium having stored thereon instructions for converting a source code program including stream domain code having multiple parallel computing construct program streams and thread domain code for execution on a multiple node computing device, called functions, and a ping stream expression, comprising machine executable code which when executed by at least one machine, causes the machine to:
-
convert the source code program to a converted program including object modules, object module instances and executables; receive a data structure containing source modules, source module instances and source code for called functions and for each operation and for each function call; and create or retrieve a separate source module that includes; identical input streams to the inputs of the operation or function; a single output stream with the same type as the output of the operation or function; and thread-domain code that; consumes a single ping value from each input stream and supplies those ping values to an instance of the operation or a function call; puts the ping value resulting from the operation or function call into the module output stream; sends an appropriate forward acknowledgement to the destination stream; sends an appropriate backward acknowledgement to an output port, wherein only the forward and backward acknowledgements are sent; read a first and a second object module instance converted from the source code program including stream domain code and thread domain code, wherein the first object module instance is a stream source of a program stream of the multiple parallel computing construct program streams and the second object module instance is at least one stream destination of the program stream, wherein the program stream conveys ping values from the stream source to the at least one stream destination; and match the object module instances to at least one of a plurality of cores on the multiple core computing device.
-
Specification