Tools and methods for real-time dataflow programming language
First Claim
1. A method comprising:
- providing a development environment for a dataflow programming language allowing specifying of at least one matcher state machine that can perform pattern matching in a received input stream and generate output data, wherein the development environment comprises a plurality of tools to perform at least one of the following;
identifying a plurality of potential data streams;
identifying a set of reactive functions and parameters corresponding to patterns of data in the streams;
identifying a set of handling functions and parameters for transforming data matching declared patterns;
identifying a set of timed events against which patterns of data flow are compared;
creating a dataflow program from expressed intent which describes the identified streams, reactions, functions, and timed events;
providing the dataflow program as input to a two-phase translation tool comprising a first-phase translation tool incorporating a matcher generator for translating program statements to corresponding matchers, data flow topologies, functions, and related symbolic components, and a second-phase translation tool for generating optimized platform-specific hardware instructions corresponding to the translated statements for execution on a hardware platform; and
receiving the output of each phase of the translation tool.
3 Assignments
0 Petitions
Accused Products
Abstract
A dataflow programming language can be used to express reactive dataflow programs that can be used in pattern-driven real-time data analysis. One or more tools are provided for the dataflow programming language for checking syntactic and semantic correctness, checking logical correctness, debugging, translation of source code into a secure, portable format (e.g., packaged code), translation of source code (or packaged code) into platform-specific code, batch-mode interpretation, interactive interpretation, simulation and visualization of the dataflow environment, remote execution, monitoring, or any combination of these. These tools embody a method of developing, debugging, and deploying a dataflow graph device.
28 Citations
61 Claims
-
1. A method comprising:
-
providing a development environment for a dataflow programming language allowing specifying of at least one matcher state machine that can perform pattern matching in a received input stream and generate output data, wherein the development environment comprises a plurality of tools to perform at least one of the following; identifying a plurality of potential data streams; identifying a set of reactive functions and parameters corresponding to patterns of data in the streams; identifying a set of handling functions and parameters for transforming data matching declared patterns; identifying a set of timed events against which patterns of data flow are compared; creating a dataflow program from expressed intent which describes the identified streams, reactions, functions, and timed events; providing the dataflow program as input to a two-phase translation tool comprising a first-phase translation tool incorporating a matcher generator for translating program statements to corresponding matchers, data flow topologies, functions, and related symbolic components, and a second-phase translation tool for generating optimized platform-specific hardware instructions corresponding to the translated statements for execution on a hardware platform; and receiving the output of each phase of the translation tool. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26)
-
-
27. A system for dataflow programming development platform comprising:
-
a graphical user interface that is displayed on a screen of a computer; a declarations screen of the graphical user interface of the development platform where a user can specify declarations data types including streams, constants, functions, and patterns, wherein a pattern definition is used to specify a pattern to identify in a stream, and blocks representing the declarations data types are displayed on the screen so that the user can drag and drop the blocks into a desired position on the screen; a reactions screen of the graphical user interface of the development platform where the user can interconnect the blocks of the declarations data types into a graphical representation of a dataflow program, wherein in the reactions screen, the user can specify and alter interconnects between the different blocks; a compute block screen of the graphical user interface of the development platform where the user can view and specify an operation performed by a compute block, wherein the user can specify inputs to the compute block and computations on the inputs, and an output of the computer block; and a code view screen of the graphical user interface of the development platform where the user can view and edit a computer code representation of the operation graphically represented in the compute block screen, wherein the computer code is automatically generated by the development platform. - View Dependent Claims (28, 29, 30)
-
-
31. A method of developing a dataflow program comprising:
-
using a graphical user interface to specify a graphical representation of a dataflow program, the program comprising producer types, transducer types, and extractor types, wherein through the graphical user interface, the user can select and move the producer types, transducer types, and extractor types, represented using blocks, into various positions on a computer screen; using the graphical user interface, allowing the user to interconnect via interconnection links the blocks representing the producer types, transducer types, and extractor types; allowing the user to specify details of each of the blocks through the graphical user interface, wherein for a transducer type block, the user can specify an operation; automatically generating computer source code that corresponds to the dataflow program the user specified using the graphical user interface; allowing the user to view and edit the computer source code automatically generated in a textual interface; and allowing the user to specify generating of a computer package of code executable on a target hardware platform that is an implementation of the dataflow program specified by the user using the graphical user interface. - View Dependent Claims (32, 33, 34)
-
-
35. A method comprising:
-
providing a development environment for a dataflow programming language allowing specifying of at least one matcher state machine that can perform pattern matching in a received input stream and generate output data, wherein the development environment comprises a plurality of tools to perform at least one of the following; identifying a plurality of potential data streams; identifying a set of reactive functions and parameters corresponding to patterns of data in the streams; identifying a set of handling functions and parameters for transforming data matching declared patterns; identifying a set of timed events against which patterns of data flow are compared, wherein the timed events comprise at least one of an interval of time in which data is to be collected or discarded or a specific point in time before or after which data is to be collected or discarded; creating a dataflow program from expressed intent which describes the identified streams, reactions, functions, and timed events; providing the dataflow program as input to a two-phase translation tool comprising a first-phase translation tool incorporating a matcher generator for translating program statements to corresponding matchers, data flow topologies, functions, and related symbolic components, and a second-phase translation tool for generating optimized platform-specific hardware instructions corresponding to the translated statements for execution on a hardware; and receiving the output of each phase of the translation tool, wherein the development environment comprises a graphical user interface allowing a user to add one or more compute blocks, and each compute block comprises a state machine. - View Dependent Claims (36, 37)
-
-
38. A method comprising:
-
providing a development environment for a dataflow programming language allowing specifying of at least one matcher state machine that can perform pattern matching in a received input stream and generate output data, wherein the development environment comprises a plurality of tools to perform at least one of the following; identifying a plurality of potential data streams; identifying a set of reactive functions and parameters corresponding to patterns of data in the streams; identifying a set of handling functions and parameters for transforming data matching declared patterns; identifying a set of timed events against which patterns of data flow are compared, wherein the timed events comprise at least one of an interval of time in which data is to be collected or discarded or a specific point in time before or after which data is to be collected or discarded; creating a dataflow program from expressed intent which describes the identified streams, reactions, functions, and timed events; providing the dataflow program as input to a two-phase translation tool comprising a first-phase translation tool incorporating a matcher generator for translating program statements to corresponding matchers, data flow topologies, functions, and related symbolic components, and a second-phase translation tool for generating optimized platform-specific hardware instructions corresponding to the translated statements for execution on a hardware; and receiving the output of each phase of the translation tool, wherein the development environment comprises an interpreter component that uses the output of the first-phase translation tool comprising; an instruction interpreter which emulates the hardware platform in the execution of platform-specific hardware instructions; a dataflow simulator which emulates a streaming data environment, providing inputs to and collecting outputs from state machine streams; and a program execution flow controller to examine computations and data in-flight and drive computations back and forth.
-
-
39. A method comprising:
-
providing a development environment for a dataflow programming language allowing specifying of at least one matcher state machine that can perform pattern matching in a received input stream and generate output data, wherein the development environment comprises a plurality of tools to perform at least one of the following; identifying a plurality of potential data streams; identifying a set of reactive functions and parameters corresponding to patterns of data in the streams; identifying a set of handling functions and parameters for transforming data matching declared patterns; identifying a set of timed events against which patterns of data flow are compared, wherein the timed events comprise at least one of an interval of time in which data is to be collected or discarded or a specific point in time before or after which data is to be collected or discarded; creating a dataflow program from expressed intent which describes the identified streams, reactions, functions, and timed events; providing the dataflow program as input to a two-phase translation tool comprising a first-phase translation tool incorporating a matcher generator for translating program statements to corresponding matchers, data flow topologies, functions, and related symbolic components, and a second-phase translation tool for generating optimized platform-specific hardware instructions corresponding to the translated statements for execution on a hardware; and receiving the output of each phase of the translation tool, wherein the development environment comprises a live inspection component comprising; an inspection method that instruments and attaches to a live running program on a particular hardware program, providing insights into the shape of a data graph; and an inspection method, executing after attachment, then extracts the state of the dataflow computation of a running program which provides an extremely precise and direct insight into computation along with data in consideration.
-
-
40. A method comprising:
-
providing a development environment for a dataflow programming language allowing specifying of at least one matcher state machine that can perform pattern matching in a received input stream and generate output data, wherein the development environment comprises a plurality of tools to perform at least one of the following; identifying a plurality of potential data streams; identifying a set of reactive functions and parameters corresponding to patterns of data in the streams; identifying a set of handling functions and parameters for transforming data matching declared patterns; identifying a set of timed events against which patterns of data flow are compared, wherein the timed events comprise at least one of an interval of time in which data is to be collected or discarded or a specific point in time before or after which data is to be collected or discarded; creating a dataflow program from expressed intent which describes the identified streams, reactions, functions, and timed events; providing the dataflow program as input to a two-phase translation tool comprising a first-phase translation tool incorporating a matcher generator for translating program statements to corresponding matchers, data flow topologies, functions, and related symbolic components, and a second-phase translation tool for generating optimized platform-specific hardware instructions corresponding to the translated statements for execution on a hardware; and receiving the output of each phase of the translation tool, wherein the development environment comprises a visualization and dataflow simulation graphical-based component comprising; a graphical-based interface to allow a program to be authored or displayed or revised in a graphical fashion, thereby assisting a user to gain a more intuitive mental-model for streaming data analysis and thorough understanding of the action of the program; and a dataflow simulation to test-drive an authored graphical program by visually simulating the actual flow of data via animations and links, with external control by injecting a notion of time allowing the fluidity to go back and forth in data-flow computation. - View Dependent Claims (41, 42, 43)
-
-
44. A method comprising:
-
providing a development environment for a dataflow programming language allowing specifying of at least one matcher state machine that can perform pattern matching in a received input stream and generate output data, wherein the development environment comprises a plurality of tools to perform at least one of the following; identifying a plurality of potential data streams; identifying a set of reactive functions and parameters corresponding to patterns of data in the streams; identifying a set of handling functions and parameters for transforming data matching declared patterns; identifying a set of timed events against which patterns of data flow are compared, wherein the timed events comprise at least one of an interval of time in which data is to be collected or discarded or a specific point in time before or after which data is to be collected or discarded; creating a dataflow program from expressed intent which describes the identified streams, reactions, functions, and timed events; providing the dataflow program as input to a two-phase translation tool comprising a first-phase translation tool incorporating a matcher generator for translating program statements to corresponding matchers, data flow topologies, functions, and related symbolic components, and a second-phase translation tool for generating optimized platform-specific hardware instructions corresponding to the translated statements for execution on a hardware; and receiving the output of each phase of the translation tool, wherein the output of the first-phase translation tool may be used as an input to the second-phase translation tool, and the translation tool comprises; a hardware instruction generator which translates instructions from the intermediate representation to a form suitable for execution by the target hardware platform; a program organization module, which directs the generation of the output into a form suitable for use in a reactive program in a dataflow environment; and libraries of runtime support components that allow execution on the target hardware platform. - View Dependent Claims (45)
-
-
46. A method of developing a dataflow program comprising:
-
using a graphical user interface to specify a graphical representation of a dataflow program, the program comprising producer types, transducer types, and extractor types, wherein through the graphical user interface, a user can select and move the producer types, transducer types, and extractor types, represented using blocks, into various positions on a computer screen; using the graphical user interface, allowing the user to interconnect via interconnection links the blocks representing the producer types, transducer types, and extractor types; allowing the user to specify a specification of each of the blocks through the graphical user interface, wherein for a transducer type block, the user can specify an operation; automatically generating computer source code that corresponds to the dataflow program the user specified using the graphical user interface; allowing the user to view and edit the computer source code automatically generated in a textual interface; and allowing the user to specify generating of a computer package of code executable on a target hardware platform that is an implementation of the dataflow program specified by the user using the graphical user interface. - View Dependent Claims (47, 48, 49)
-
-
50. A method of developing a dataflow program comprising:
-
using a graphical user interface to specify a graphical representation of a dataflow program, the program comprising producer types, transducer types, and extractor types, wherein through the graphical user interface, a user can select and move the producer types, transducer types, and extractor types, represented using blocks, into various positions on a computer screen; using the graphical user interface, allowing the user to interconnect via interconnection links the blocks representing the producer types, transducer types, and extractor types; allowing the user to specify internals of each of the blocks through the graphical user interface, wherein for a transducer type block, the user can specify an operation; automatically generating computer source code that corresponds to the dataflow program the user specified using the graphical user interface; allowing the user to view and edit the computer source code automatically generated in a textual interface; and allowing the user to specify generating of a computer package of code executable on a target hardware platform that is an implementation of the dataflow program specified by the user using the graphical user interface. - View Dependent Claims (51, 52, 53)
-
-
54. A method of developing a dataflow program comprising:
-
using a graphical user interface to specify a graphical representation of a dataflow program, the program comprising producer types, transducer types, and extractor types, wherein through the graphical user interface, the user can select and move the producer types, transducer types, and extractor types, represented using blocks, into various positions on a computer screen; using the graphical user interface, allowing the user to interconnect via interconnection links the blocks representing the producer types, transducer types, and extractor types; allowing the user to specify contents of each of the blocks through the graphical user interface, wherein for a transducer type block, the user can specify an operation; automatically generating computer source code that corresponds to the dataflow program the user specified using the graphical user interface; allowing the user to view and edit the computer source code automatically generated in a textual interface; and allowing the user to specify generating of a computer package of code executable on a target hardware platform that is an implementation of the dataflow program specified by the user using the graphical user interface. - View Dependent Claims (55, 56, 57)
-
-
58. A method of developing a dataflow program comprising:
-
using a graphical user interface to specify a graphical representation of a dataflow program, the program comprising producer types, transducer types, and extractor types, wherein through the graphical user interface, the user can select and move the producer types, transducer types, and extractor types, represented using blocks, into various positions on a computer screen; using the graphical user interface, allowing the user to interconnect via interconnection links the blocks representing the producer types, transducer types, and extractor types; allowing the user to specify operations represented by each of the blocks through the graphical user interface, wherein for a transducer type block, the user can specify an operation; automatically generating computer source code that corresponds to the dataflow program the user specified using the graphical user interface; allowing the user to view and edit the computer source code automatically generated in a textual interface; and allowing the user to specify generating of a computer package of code executable on a target hardware platform that is an implementation of the dataflow program specified by the user using the graphical user interface. - View Dependent Claims (59, 60, 61)
-
Specification