This description relates to generation for sub-graph interfaces for dynamically linked sub-graphs.
Many software applications exist for processing data. Some of these software applications are specified as dataflow graphs. Dataflow graphs typically include a number of data processing components, which are interconnected by links, sometimes referred to as “flows.”
In operation, data (e.g., a dataset) is received by a dataflow graph from a database or from some other data storage system. The received data advances through the dataflow graph by propagating through the flows and into the components according to dependencies defined by the interconnection of the components and flows. Each component processes data that it receives according to a predetermined function associated with the component before providing the processed data as output data via one or more flows. At the output of the dataflow graph the processed data is, for example, stored in another data storage system, provided to another downstream system, or presented to a user.
A developer of a dataflow graph generally specifies the graph by dragging blocks representing components onto a graphical working area (or “canvas”) provided by a graphical development environment (GDE) and interconnecting the components with links representing data flows such that the dataflow graph implements a desired functionality. Once the developer is satisfied with their implementation of the dataflow graph they can save the dataflow graph to storage for later use. In general, if the developer needs to alter the their implementation of the dataflow graph at a later time, they cause the GDE to read the saved dataflow graph from storage, make changes to the dataflow graph, and then re-save the altered dataflow graph to storage.
In some examples, the components of a dataflow graph are themselves implemented using dataflow graphs which are referred to as “sub-graphs.” To alter a sub-graph of a component that is used in a given dataflow graph, the dataflow graph is read from disk, the sub-graph component is opened such that its sub-graph can be edited, changes to the sub-graph are made, and the dataflow graph itself is re-saved to storage, thereby embedding the changes to the sub-graph in the saved dataflow graph.
In a general aspect, a method includes receiving a specification including a description of a first directed graph including a first number of components interconnected by a first set of one or more directed links, forming a graph interface for the first number of components including, forming a first interface element of the graph interface, the first interface element being associated with a first port of a first component of the first number of components, and configuring one or more properties of the first interface element such that the first port of the first component is consistent with the one or more properties of the first interface element, forming a first implementation of the graph interface including the first number of components, the forming including forming a first correspondence between the first interface element and the first port of the first component of the first number of components, and storing the first implementation of the graph interface in a data storage system.
Aspects may include one or more of the following features.
The method may include storing, in the data storage system, a specification including a description of a second directed graph including a second number of components interconnected by a second set of one or more directed links, identifying an instance of the first number of components interconnected by the first set of one or more directed links of the first directed graph in the second directed graph, and replacing the identified instance of the first number of components interconnected by the first set of one or more directed links in the second directed graph with the graph interface. Configuring the one or more properties of the first interface element may include determining one or more descriptors of data or computational characteristics associated with the first port of the first component and configuring the one or more properties of the first interface element based on the determined one or more descriptors.
Configuring the one or more properties of the first interface element based on the determined one or more descriptors may include determining a direction of propagation of one or more descriptors of data or computational characteristics associated with the first port of the first component and configuring the one or more properties of the first interface element based on the determined direction of propagation.
Determining a direction of propagation of one or more descriptors of data or computational characteristics associated with the first port of the first component may include identifying the first port as a port that propagates descriptors of data or computational characteristics to the first interface element and assigning an outward direction of propagation to the first interface element based on the identification. Determining the direction of propagation of one or more descriptors of data or computational characteristics associated with the first port of the first component may include identifying the first port as a port that does not propagate descriptors of data or computational characteristics to the first interface element and assigning an inward direction of propagation to the first interface element based on the identification.
Forming the graph interface may include forming a second interface element of the graph interface, the second interface element being associated with a second port of a second component of the first number of components, determining a direction of propagation of one or more descriptors of data or computational characteristics associated with the second port of the second component including identifying the second port as a port that does not propagate descriptors of data or computational characteristics to the second interface element and assigning an inward direction of propagation to the second interface element based on the identification, and identifying a relationship between the one or more descriptors of data or computational characteristics associated with the first port of the first component and the one or more descriptors of data or computational characteristics associated with the second port of the second component and forming a representation of the identified relationship between the first interface element and the second interface element.
The representation of the relationship may includes a constraint indicating that one or more descriptors of data or computational characteristics associated with the first interface element are the same as one or more descriptors of data or computational characteristics associated with the second interface element. The method may include modifying the one or more properties of the first interface element such that ports of one or more other components conform to the one or more properties of the first interface element. Modifying the one or more properties of the first interface element may include receiving user input and modifying the one or more properties of the first interface element based on the user input. Modifying the one or more properties of the first interface element may include analyzing the one or more other components to determine one or more descriptors of data or computational characteristics associated with the ports of the one or more other components and modifying the one or more properties of the first interface element based on the determined one or more descriptors of data or computational characteristics associated with the ports of the one or more other components.
Modifying the one or more properties of the first interface element may include analyzing the one or more other components to determine a direction of propagation of one or more descriptors of data or computational characteristics associated with the ports of the one or more other components and modifying the one or more properties of the first interface element based on the determined direction of propagation. Forming the graph interface may include identifying a parameter associated with the first number of components and adding an interface element associated with the parameter to the graph interface. The method may include identifying a parameter value corresponding to the parameter and configuring the graph interface to use the identified parameter value as a default value.
The method may include preparing the second directed graph for execution including reading the first implementation of the graph interface from the data storage system, and inserting the first implementation into the second directed graph including establishing a directed link between the first port of the first component of the first number of components in the first implementation of the graph interface and the first interface element of the graph interface based on the first correspondence between the first interface element and the first port of the first component of the first number of components in the first implementation of the graph interface. The method may include preparing the second directed graph for execution including reading a second implementation of the graph interface, different from the first implementation of the graph interface, from the data storage system, and inserting the second implementation into the second directed graph including establishing a directed link between a port of a component in the second implementation of the graph interface and the first interface element of the graph interface based on a second correspondence between the first interface element and the port of the component in the second implementation of the graph interface.
The first interface element may include a flow junction for joining a directed link connected to the first port of the first component of the first number of components to a port of another component not included in the first number of components.
In another general aspect, software stored in a non-transitory form on a computer-readable medium includes instructions for causing a computing system to receive a specification including a description of a first directed graph including a first number of components interconnected by a first set of one or more directed links, form a graph interface for the first number of components including, forming a first interface element of the graph interface, the first interface element being associated with a first port of a first component of the first number of components, and configuring one or more properties of the first interface element such that the first port of the first component is consistent with the one or more properties of the first interface element, form a first implementation of the graph interface including the first number of components, the forming including forming a first correspondence between the first interface element and the first port of the first component of the first number of components, and store the first implementation of the graph interface in the data storage system.
In another general aspect, a computing system includes an input device configured to receive a specification including a description of a first directed graph including a first number of components interconnected by a first set of one or more directed links, and at least one processor configured to process the specification. The processing includes forming a graph interface for the first number of components including, forming a first interface element of the graph interface, the first interface element being associated with a first port of a first component of the first number of components, and configuring one or more properties of the first interface element such that the first port of the first component is consistent with the one or more properties of the first interface element, forming a first implementation of the graph interface including the first number of components, the forming including forming a first correspondence between the first interface element and the first port of the first component of the first number of components, and storing the first implementation of the graph interface in the data storage system.
In another general aspect, a computing system includes means for receiving a specification including a description of a first directed graph including a first number of components interconnected by a first set of one or more directed links, and means for processing the specification. The processing includes forming a graph interface for the first number of components including, forming a first interface element of the graph interface, the first interface element being associated with a first port of a first component of the first number of components, and configuring one or more properties of the first interface element such that the first port of the first component is consistent with the one or more properties of the first interface element, forming a first implementation of the graph interface including the first number of components, the forming including forming a first correspondence between the first interface element and the first port of the first component of the first number of components, and storing the first implementation of the graph interface in the data storage system.
In another general aspect, a method for determining a graph interface includes receiving a specification including a description of a first directed graph including a number of components interconnected by directed links, and forming a graph interface for the first directed graph including: analyzing the first directed graph to identify information for forming one or more interface elements of the graph interface, each of at least some interface elements of the one or more interface elements being associated with one or more properties including at least one of a metadata descriptor property or a direction of metadata propagation property, and for each of at least some interface elements of the one or more interface elements, analyzing the first directed graph to determine whether a value of the metadata descriptor property associated with the interface element is propagated to the interface element from the first directed graph or is propagated to the interface element from a second directed graph that is a container graph in which the graph interface is utilized, and configuring the direction of metadata propagation property for the interface element based on a result of the analysis.
Aspects may include one or more of the following features.
The metadata descriptor property associated with the interface element may include a data characteristic of data transferred via the interface element or a computational characteristic of one or more of the number of components. The data characteristic may include a format of fields of records within the transferred data. The computational characteristic may include a degree of parallelism of execution of a computation represented by one or more of the number of components. Forming a graph interface for the first directed graph may include, for each of at least some interface elements of the one or more interface elements, analyzing the first directed graph to determine that the one or more properties associated with the interface element specify that the interface element is configured to transfer a parameter value through the graph interface. Determining whether the value of the metadata descriptor property associated with the interface element is propagated to the interface element from the first directed graph or is propagated to the interface element from the second directed graph may include determining that the value of the metadata descriptor property associated with the interface element is propagated to the interface element from the first directed graph based on an identification of a component of the number of components that propagates a value of the metadata descriptor property to the interface element.
Determining whether the value of the metadata descriptor property associated with the interface element is propagated to the interface element from the first directed graph or is propagated to the interface element from the second directed graph may include determining that the value of the metadata descriptor property associated with the interface element is propagated to the interface element from the second directed graph based on a determination that no component of the number of components propagates a value of the metadata descriptor property to the interface element. Forming the graph interface for the first directed graph may include determining that two or more of the interface elements are each necessarily associated with a same property. The method may include storing, in a data storage system, a representation of the graph interface and a representation of the first directed graph. At least some of the one or more interface elements may include a flow junction for joining a directed link connected to a port of a component of the number of components to a port of another component not included in the number of components.
In another general aspect, software stored in a non-transitory form on a computer-readable medium, for determining a graph interface includes instructions for causing a computing system to receive a specification including a description of a first directed graph including a number of components interconnected by directed links, and form a graph interface for the first directed graph including: analyzing the first directed graph to identify information for forming one or more interface elements of the graph interface, each of at least some interface elements of the one or more interface elements being associated with one or more properties including at least one of a metadata descriptor property or a direction of metadata propagation property, and for each of at least some interface elements of the one or more interface elements, analyzing the first directed graph to determine whether a value of the metadata descriptor property associated with the interface element is propagated to the interface element from the first directed graph or is propagated to the interface element from a second directed graph that is a container graph in which the graph interface is utilized, and configuring the direction of metadata propagation property for the interface element based on a result of the analysis.
In another general aspect, a computing system for determining a graph interface includes an input device configured to receive a specification including a description of a first directed graph including a number of components interconnected by directed links, and at least one processor configured to process the specification, the processing including forming a graph interface for the first directed graph including: analyzing the first directed graph to identify information for forming one or more interface elements of the graph interface, each of at least some interface elements of the one or more interface elements being associated with one or more properties including at least one of a metadata descriptor property or a direction of metadata propagation property, and for each of at least some interface elements of the one or more interface elements, analyzing the first directed graph to determine whether a value of the metadata descriptor property associated with the interface element is propagated to the interface element from the first directed graph or is propagated to the interface element from a second directed graph that is a container graph in which the graph interface is utilized, and configuring the direction of metadata propagation property for the interface element based on a result of the analysis.
In another general aspect, a computing system for determining a graph interface includes means for receiving a specification including a description of a first directed graph including a number of components interconnected by directed links, and means for processing the specification, the processing including forming a graph interface for the first directed graph including: analyzing the first directed graph to identify information for forming one or more interface elements of the graph interface, each of at least some interface elements of the one or more interface elements being associated with one or more properties including at least one of a metadata descriptor property or a direction of metadata propagation property, and for each of at least some interface elements of the one or more interface elements, analyzing the first directed graph to determine whether a value of the metadata descriptor property associated with the interface element is propagated to the interface element from the first directed graph or is propagated to the interface element from a second directed graph that is a container graph in which the graph interface is utilized, and configuring the direction of metadata propagation property for the interface element based on a result of the analysis.
Aspects can include one or more of the following advantages.
In the context of dataflow graph software development, there is a need for the ability to convert statically linked sub-graphs to dynamically linked sub-graphs, including a sub-graph interface and a corresponding implementation sub-graph. In some examples, doing so is challenging because once a statically linked sub-graph has been excised from its container graph, significant obstacles to metadata propagation may arise.
For example, when an implementation of a sub-graph interface is instantiated in a container graph, the metadata propagation process treats the implementation sub-graph as if all of its vertices are native graph vertices. When the metadata propagation process propagates metadata into the implementation sub-graph, the metadata from the container graph is mixed with the metadata from the implementation sub-graph, which may yield unexpected results. This mixing is exacerbated in the case of layout metadata because the layout algorithm depends in a complex way on a global consideration of weights to assign layouts. Layout metadata specifies computational characteristics such as degree of parallelism, for example, by specifying a number of instances of a component that may be executed (e.g., a maximum number that may be executed, and/or a minimum number that need to be executed), and optionally other information such as specific hosts on which one or more instances will be executed.
Furthermore, multiple different container graphs and implementation sub-graphs can use any given sub-graph interface, each potentially propagating differently through the sub-graph interface. Thus, it is useful to separate properties inherent in the implementation sub-graph(s) from those that happen to be true in any one container or implementation sub-graph.
To do so, aspects described herein automatically generate a sub-graph interface from a specified sub-graph and then allow a user to tighten or loosen metadata constraints associated with the automatically generated sub-graph interface.
Among other advantages, aspects facilitate the creation of dynamically linked sub-graph interfaces that conform to a number of container graphs and sub-graph implementations, resulting in more versatile and reusable sub-graph interfaces.
Aspects guide users through a number of easy to follow steps which result in creation of a dynamically linked sub-graph including a reusable sub-graph interface.
Other features and advantages of the invention will become apparent from the following description, and from the claims.
The pre-processing module 106 reads one or more dataflow graphs 114 from a data storage system 116 and prepares the dataflow graphs for execution by the execution module 112. Part of this preparation process in some cases includes dynamically linking any implementation sub-graphs that conform to any sub-graph interfaces within the dataflow graphs 114. This dynamic linking typically includes metadata propagation. Any sub-graph interfaces that have been automatically generated using the techniques described herein will include elements (called ‘interface elements’) such as flow junctions or parameters, whose properties have been configured to facilitate this metadata propagation, as described in greater detail below. The pre-processing module 106 then loads a particular dynamically-linked implementation sub-graph that “conforms to” (i.e., is consistent with) a sub-graph interface within a container dataflow graph into that container dataflow graph just before its execution by the execution module 112. For example, a conforming implementation sub-graph should have ports that are consistent with flow junctions on the sub-graph interface, and should have parameter values that are consistent with parameters associated with the sub-graph interface.
The execution environment 104 can receive data from a variety of types of systems that may embody the data source 102, including different forms of database systems. The data may be organized as records having values for respective fields (also called “attributes” or “columns”), including possibly null values. When first reading data from a data source, the execution module 112 typically starts with some initial format information about records in that data source. In some circumstances, the record structure of the data source may not be known initially and may instead be determined after analysis of the data source or the data. The initial information about records can include, for example, the number of bits that represent a distinct value, the order of fields within a record, and the type of value (e.g., string, signed/unsigned integer) represented by the bits.
Storage devices providing the data source 102 may be local to the execution environment 104, for example, being stored on a storage medium connected to a computer hosting the execution environment 104 (e.g., hard drive 108), or may be remote to the execution environment 104, for example, being hosted on a remote system (e.g., mainframe 110) in communication with a computer hosting the execution environment 104, over a remote connection (e.g., provided by a cloud computing infrastructure).
The execution module 112 processes the data prepared by the pre-processing module 106 to generate output data. The output data may be stored back in the data source 102 or in the data storage system 116 accessible to the execution environment 104, or otherwise used.
The data storage system 116 is also accessible to a development environment 118. A developer 120 can use the development environment 118 to develop applications as dataflow graphs that include vertices (representing data processing components or datasets) connected by directed links (representing flows of work elements, i.e., data) between the vertices. For example, such an environment is described in more detail in U.S. Publication No. 2007/0011668, titled “Managing Parameters for Graph-Based Applications,” incorporated herein by reference. A system for executing such graph-based computations is described in U.S. Pat. No. 5,966,072, titled “EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS,” incorporated herein by reference. Dataflow graphs made in accordance with this system provide methods for getting information into and out of individual processes represented by graph components, for moving information between the processes, and for defining a running order for the processes. This system includes algorithms that choose interprocess communication methods from any available methods (for example, communication paths according to the links of the graph can use TCP/IP or UNIX domain sockets, or use shared memory to pass data between the processes).
In some examples, the development environment 118 includes a dynamic sub-graph generator 121 for generating dynamic sub-graphs from conventional sub-graphs, as is described in greater detail below.
1 Dynamically Linked Sub-Graphs
One specific type of dataflow graph that can be developed in the development environment 118 is referred to as a “dynamically-linked sub-graph.” In general, a dynamically-linked sub-graph includes two separate but related components: a sub-graph interface and an implementation sub-graph that conforms to the sub-graph interface. The sub-graph interface includes one or more “flow junctions,” which define a point of connection between a flow in the container graph and the sub-graph associated with the sub-graph interface. Each flow junction represents a connection (or “junction”) between a flow of data to or from a port on a component of the first dataflow graph and a flow of data to or from a port on a component of the second dataflow graph.
When developing a dataflow graph, the developer can use the sub-graph interface as a placeholder for the implementation sub-graph in the dataflow graph. In some examples, a dataflow graph that includes a sub-graph interface is referred to as a “container dataflow graph,” or simply a “container graph.”
Referring to
Referring to
At some time after development of the container dataflow graph 200 (e.g., just prior to running the container dataflow graph 200), the dataflow graph is prepared for execution. One step in preparing the dataflow graph for execution includes linking the implementation sub-graph 201 into the container dataflow graph 200, thereby forming a combined dataflow graph by replacing the sub-graph interface 210 in the container dataflow graph 200 with the implementation sub-graph 201.
For example, referring to
The above description of dynamically linked sub-graphs is intended to serve as a primer on the subject and not an exhaustive description of the subject. A more detailed description of dynamically linked sub-graphs can be found in U.S. patent application Ser. No. 14/561,494, titled “MANAGING INTERFACES FOR SUB-GRAPHS,” incorporated herein by reference.
2 Dynamically Linked Sub-Graph Generation
In some examples, such as those described in U.S. patent application Ser. No. 14/561,494, titled “MANAGING INTERFACES FOR SUB-GRAPHS,” sub-graph interfaces are user-specified and users write implementation sub-graphs that conform to the sub-graph interfaces. In other examples, there is a need to generate sub-graph interfaces and implementation sub-graphs from existing, conventional (i.e., statically linked) sub-graphs.
For example, referring to
2.1 Specified Sub-Graph Overview
In this example, a block diagram of the specified sub-graph 400 is configured to process data received from a first input port, 304A and a second input port, 304B using a number of components 302A-302C and to write the processed data to a first output port, 304C, a second output port, 304D, and a third output port, 304E. The sub-graph 400 includes a first component 302A, a second component 302B, a third component 302C, and a fourth component 302D. Each of the components has one or both of input ports for receiving input data and output ports for providing output data (e.g. ports 304F-304N). In general, each component applies one or more computations to the input data flowing into its input port(s) and provides the result of the computation(s) as output via its output port(s). It is noted that certain types of components (e.g., the third component 302C) may include only input ports or only output ports.
The input and output ports of the sub-graph 400 are interconnected by flows 306A-306G which define how data propagates between the ports and components of the sub-graph 400. Specifically, the first input port 304A included on the boundary of the sub-graph 400 is connected to a third input port 304F included on the first component 302A by a first flow 306A. The second input port 304B included on the boundary of the sub-graph 400 is connected to a fourth input port 304G included on the second component 302B by a second flow 306B. A fourth output port 304H included on the first component 302A is connected to a fifth input port 304J included on the fourth component 302D by a third flow 306C. A fifth output port 304I included on the second component 302B is connected to a sixth input port 304K included on the fourth component 302D by a fourth flow 306D.
A sixth output port 304N included on the third component 302C is connected to the third output port 304E on the boundary of the sub-graph 400 by a fifth flow 306E. A seventh output port 304L included on the fourth component 302D is connected to the first output port 304C on the boundary of the sub-graph 400 by a sixth flow 306F. An eighth output port 304M included on the fourth component 302D is connected to the second output port 304D on the boundary of the sub-graph 400 by a seventh flow 306G. The third component 302C is configurable by a parameter, P1.
2.2 Dynamic Sub-Graph Generator
Referring to
In some examples, for at least some of the modifications made to the sub-graph interface 126, the sub-graph interface refinement module 128 also makes corresponding modifications to the implementation sub-graph 124. In some examples, no implementation sub-graph 124 is generated, and the sub-graph interface 130 is used on its own for potential future development of one or more implementation sub-graphs.
2.2.1 Automatic Dynamic Sub-Graph Generator
Referring to
2.2.1.1 Implementation Sub-Graph Formation
The implementation sub-graph formation module 132 processes the specified sub-graph 400 to generate the implementation sub-graph 124, which is passed out of the dynamic sub-graph generator 122 as output. In some examples, the implementation sub-graph 124 is formed by first making a copy of the specified sub-graph 400. Then, as is described above, for at least some modifications made to the sub-graph interface 126, the sub-graph interface refinement module 128 also makes corresponding modifications to the copy of the specified sub-graph 400 to form the implementation sub-graph 124. For example, flow junctions marked as “inward” propagating on the sub-graph interface 126 may also be marked as “inward” propagating on the implementation sub-graph 124. Furthermore, certain edits to the internal structure of the implementation sub-graph 124 may need to be made to support the designated propagation direction.
2.2.1.2 Metadata Propagation Direction Identification
The metadata propagation direction identification module 134 forms an initial sub-graph interface by identifying flow junctions corresponding to ports on the boundary of the specified sub-graph and determines a direction of metadata propagation for each of the identified flow junctions.
Before describing the operation of the metadata propagation direction identification module 134, a brief primer on metadata propagation is presented. In dataflow graphs, it is important that metadata associated with the ports of components in the dataflow graph and/or metadata associated with the components themselves is managed. In some examples, metadata includes a descriptor of data (e.g., a record format for a port including a sequence of fields and data types of records flowing into or out of a port) or a computational characteristic (e.g., a partitioning or a layout for a component). In other examples, metadata may include an amount of memory a component may use, which computing resources a component may use, sortedness, compression method, character set, binary representation (e.g., big-endian, little-endian), or data transformations.
Metadata management can be accomplished manually, automatically, or by using a combination of manual and automatic metadata management. For manual metadata management, metadata is supplied, for example, by a graph developer or by a graph user. For automatic metadata management, metadata is propagated from portions of the graph with known (i.e., explicitly defined) metadata to portions of the graph with unknown metadata. Metadata propagation is necessary when metadata for a given port or component is not directly supplied by a graph user or developer. In such a case, the metadata for the given port or component must be derived from other ports or components in the graph. The term metadata propagation as is used herein refers to this derivation process.
In a conventional dataflow graph including conventional components and datasets this propagation of explicitly defined metadata through the dataflow graph results in metadata being associated with all components in the dataflow graph. Any conflicts arising in metadata propagation are generally flagged for developer intervention. However, metadata propagation for dataflow graphs including a sub-graph interface is generally handled differently than metadata propagation for dataflow graphs including only conventional components. In particular, metadata may be propagated in two stages: an edit-time metadata propagation stage and a link-time metadata resolution stage.
This two stage approach is used since, at edit-time, the container graph (i.e., the graph including a sub-graph interface as a component) and the implementation sub-graph (i.e., the sub-graph which conforms to the sub-graph interface) that will be linked in place of the sub-graph interface are not aware of each other's metadata information. Without access to this information, conventional metadata propagation has no way of knowing whether metadata should be propagated in a direction “inward” into the implementation sub-graph (i.e., the container graph acts as a source of metadata for the implementation sub-graph) or in a direction “outward” from the implementation sub-graph (i.e., the container graph acts as a sink for metadata from the implementation sub-graph).
Thus, to make metadata propagation in a dataflow graph including a sub-graph interface possible, each flow junction of the sub-graph interface specifies a direction of metadata propagation. In some examples, the set of possible directions of metadata propagation includes “inward” propagation and “outward” propagation.
When a flow junction on the sub-graph interface is declared as having a metadata propagation direction of “inward,” metadata propagation in the container graph supplies a metadata definition via the flow connected to the flow junction (and eventually to a port connected to a flow in the implementation sub-graph). That is, in the container graph, edit-time metadata propagation treats the flow junction as a metadata sink.
When a flow junction on the sub-graph interface is declared as having a metadata propagation direction of “outward,” metadata propagation in the implementation sub-graph supplies a metadata definition for the flow junction to the container graph. That is, in the container graph, edit-time metadata propagation treats the flow junction as a metadata source even though an edit-time definition for the metadata is not present (since the definition is only available from the implementation sub-graph at link-time).
The metadata propagation direction identification module 134 identifies known sources (e.g., ports) of metadata in the specified sub-graph 400 and performs a metadata propagation process originating from the identified sources to determine a direction of metadata propagation for ports on the boundary of the specified sub-graph 400 and their corresponding flow junctions on the initial sub-graph interface 126.
Referring to
The metadata propagation direction identification module 134 then identifies the fourth output port 304H included on the first component 302A of the specified sub-graph 400 and the sixth output port 304N included on the third component 302C of the specified sub-graph 400 as known sources of metadata (e.g., by analyzing characteristics of the ports). In
With the known sources of metadata identified, the metadata propagation direction identification module 134 performs an edit-time metadata propagation process for both of the known sources of metadata.
In doing so, the metadata propagation direction identification module 134 propagates M1 from the fourth output port 304H in an upstream direction (i.e., in a direction toward the first flow junction, i0 644) and in a downstream direction (i.e., in a direction toward the third flow junction, o0 648 and the fourth flow junction, o1 650).
In the upstream direction, the edit-time metadata propagation process determines that the first component 302A does not apply any transformation to the metadata and therefore propagates the metadata, M1 through the component 302A and associates it with the third input port 304F on the first component 302A. In some examples, this association is represented by an arrow (sometimes referred to as a “same as” arrow) pointing from the port where the metadata was propagated to and ending at the port where the metadata originated from (e.g., an arrow pointing from the third input port 304f to the fourth output port 304H). M1 is then propagated from the third input port 304F to the first input port 304A on the boundary of the specified sub-graph 400 (resulting in a “same as” arrow pointing from the first input port 304a to the fourth output port 304H) and to the first flow junction, i0 644 associated with the first input port 304A. The first flow junction, i0 644 is assigned a metadata propagation direction of “outward” since metadata (i.e., M1) is propagated from a known source of metadata to the flow junction 644.
In the downstream direction, the edit-time metadata propagation process propagates M1 from the fourth output port 304H on the first component 302A to the fifth input port 304J on the fourth component 302D (resulting in a “same as” arrow pointing from the fifth input port 304J to the fourth output port 304H). The edit-time metadata propagation process determines that the fourth component 302D does apply a transformation to the metadata and therefore does not propagate M1 any further in the downstream direction.
The edit-time metadata propagation process also propagates M2 from the sixth output port 304N on the third component 302C to the third output port 304E on the boundary of the specified sub-graph 400 and to the fifth flow junction, o2 652 associated with the third output port 304E (resulting in a “same as” arrow pointing from the third output port 304E to the sixth output port 304N). The fifth flow junction, o2 652 is assigned a metadata propagation direction of “outward” since metadata (i.e., M2) is propagated from a known source of metadata to the flow junction 652.
At the conclusion of the edit-time metadata propagation process, any flow junctions that are not marked as having a metadata propagation direction of “outward” (i.e., have not received propagated metadata) are marked as having a metadata propagation direction of “inward.” Referring to
2.2.1.3 Metadata Rule Identification
With the direction of metadata propagation for all flow junctions on the initial sub-graph interface 126 determined, the initial sub-graph interface 126 and the specified sub-graph 400 are provided to the metadata rule identification module 136 which analyzes the specified sub-graph 400 to determine metadata rules for inclusion in the initial sub-graph interface 126.
To do so, the metadata rule identification module 136 assigns placeholder values to each of the flow junctions with an “inward” direction of metadata propagation and performs another edit-time metadata propagation process to discover relationships that exist between the ports on the boundary of the specified sub-graph 400. The metadata rule identification module 136 uses any relationships that are discovered to assign metadata rules to the flow junctions of the initial sub-graph interface 126. For example, referring to
The metadata rule identification module 136 propagates D1 from the second input port 304B on the boundary of the specified sub-graph 400 to the fourth input port 304G on the second component 302B (resulting in a “same as” arrow pointing from the fourth input port 304G to the second input port 304B). The edit-time metadata propagation process determines that the second component 302B doesn't apply any transformation to the metadata and therefore propagates D1 through the second component 302B to the fifth output port 304I (resulting in a “same as” arrow pointing from the fifth output port 304I to the second input port 304B).
The metadata rule identification module 136 also propagates D2 from the first output port 304C to the seventh output port 304L (resulting in a “same as” arrow pointing from the first output port 304C to the seventh output port 304L). The edit-time metadata propagation process determines that the fourth component 302D applies a transformation to the metadata, D2 and therefore doesn't propagate D2 any further.
The metadata rule identification module 136 propagates D3 from the second output port 304D to the eighth output port 304M (resulting in a “same as” arrow pointing from the eighth output port 304M to the second output port 304D). The edit-time metadata propagation process determines that the fourth component 302D doesn't apply any transformation to the metadata, D3 and therefore propagates D3 to through the fourth component 302D and to the sixth input port 304K (resulting in a “same as” arrow pointing from the sixth input port 304k to the second output port 304D).
With metadata propagated from all of the ports marked as having an “inward” propagation direction, the metadata rule identification module 136 determines, based on the propagation of D1 and D3, that any metadata associated with the second input port 304B must be equal to the metadata associated with the second output port 304D. Referring to
2.2.1.4 Parameter Identification
Referring again to
Referring to
Referring to
It is noted that, in some examples, the various steps of the automatic dynamic sub-graph generator 122 are performed in an order other than the exemplary order described above.
2.2.2 Sub-Graph Interface Refinement
Referring again to
In some examples, the sub-graph interface refinement module 128 is implemented as a “wizard” that includes a number of screens that facilitate user refinement of the initial sub-graph interface 126.
Referring to
Checking a check box corresponding to a given flow junction in the second column 1266 indicates that that the given flow junction is a “required” flow junction on the final graph interface 130. Unchecking a check box corresponding to a given flow junction indicates that the given flow junction is not required, or “optional,” on the final graph interface 130. Very generally, a flow junction on a sub-graph interface that is “required” must be connected to a flow in a container graph before the container graph can be compiled and executed. A flow junction on a sub-graph interface that is “optional” may or may not be connected to a flow in a container graph and the container graph will compile and execute regardless of whether the optional flow junction is connected to a flow in the container graph.
Checking a check box corresponding to a given flow junction in the third column 1270 indicates that the given flow junction is allowed to “fan-in” if the flow junction is associated with an input port in the implementation sub-graph or “fan-out” if the flow junction is associated with an output port in the implementation sub-graph. Unchecking the checkbox corresponding to a given flow junction in the third column 1270 indicates that the given flow junction is not allowed to “fan-in” or “fan-out.”
In the example of
When the user is satisfied with their configuration of the flow junctions, they click the “OK” button 1274 in the wizard 1260, causing the wizard 1260 to advance to a propagation rule configuration screen of the wizard 1260.
Referring to
For example, in
The second table 1378 includes two groups, a third group 1384 including the first flow junction, i0 644 and a fourth group 1386 including the fifth flow junction, o2 652.
A user of the wizard can use the propagation rule configuration screen 1375 to configure the metadata propagation rules by, for example, merging groups to form “copy” metadata propagation rules or by splitting groups to remove “copy” metadata propagation rules. For example, if a user did not want the “copy” metadata propagation rule specified by the second group 1382 to be included on the final sub-graph interface 130, they would split the second group 1382 into two different groups, one including the second flow junction, i1 646 and another including the fourth flow junction, o1 650.
When the user is satisfied with the configuration of the propagation rules for the sub-graph interface, they click the “OK” button 1374 in the wizard 1260, causing the wizard 1260 to advance to a layout configuration screen of the wizard 1260.
Referring to
In
When the user is satisfied with the configuration of the layout for the sub-graph interface 130, they click the “OK” button 1474 in the wizard 1260, causing the wizard 1260 to advance to a parameter configuration screen of the wizard 1260.
Referring to
In the example of
When the user is satisfied with the configuration of the sub-graph interface parameters for the sub-graph interface 130, they click the “OK” button 1574 in the wizard 1260, causing the wizard 1260 to complete and output the final sub-graph interface 130.
Referring to
The final sub-graph interface 130 can be used in container graphs in the same manner that the sub-graph interface 210 of
3 Alternatives
In some examples, rather than specifying a sub-graph on disk, a user can select a set of components in a pre-existing dataflow graph for generation of a dynamically linked sub-graph. Upon completion of dynamically linked sub-graph generation, the selected set of components are replaced by the sub-graph interface of the generated dynamically linked sub-graph in the dataflow graph.
4 Implementations
The sub-graph interface generation approach described above can be implemented, for example, using a programmable computing system executing suitable software instructions or it can be implemented in suitable hardware such as a field-programmable gate array (FPGA) or in some hybrid form. For example, in a programmed approach the software may include procedures in one or more computer programs that execute on one or more programmed or programmable computing system (which may be of various architectures such as distributed, client/server, or grid) each including at least one processor, at least one data storage system (including volatile and/or non-volatile memory and/or storage elements), at least one user interface (for receiving input using at least one input device or port, and for providing output using at least one output device or port). The software may include one or more modules of a larger program, for example, that provides services related to the design, configuration, and execution of dataflow graphs. The modules of the program (e.g., elements of a dataflow graph) can be implemented as data structures or other organized data conforming to a data model stored in a data repository.
The software may be stored in non-transitory form, such as being embodied in a volatile or non-volatile storage medium, or any other non-transitory medium, using a physical property of the medium (e.g., surface pits and lands, magnetic domains, or electrical charge) for a period of time (e.g., the time between refresh periods of a dynamic memory device such as a dynamic RAM). In preparation for loading the instructions, the software may be provided on a tangible, non-transitory medium, such as a CD-ROM or other computer-readable medium (e.g., readable by a general or special purpose computing system or device), or may be delivered (e.g., encoded in a propagated signal) over a communication medium of a network to a tangible, non-transitory medium of a computing system where it is executed. Some or all of the processing may be performed on a special purpose computer, or using special-purpose hardware, such as coprocessors or field-programmable gate arrays (FPGAs) or dedicated, application-specific integrated circuits (ASICs). The processing may be implemented in a distributed manner in which different parts of the computation specified by the software are performed by different computing elements. Each such computer program is preferably stored on or downloaded to a computer-readable storage medium (e.g., solid state memory or media, or magnetic or optical media) of a storage device accessible by a general or special purpose programmable computer, for configuring and operating the computer when the storage device medium is read by the computer to perform the processing described herein. The inventive system may also be considered to be implemented as a tangible, non-transitory medium, configured with a computer program, where the medium so configured causes a computer to operate in a specific and predefined manner to perform one or more of the processing steps described herein.
A number of embodiments of the invention have been described. Nevertheless, it is to be understood that the foregoing description is intended to illustrate and not to limit the scope of the invention, which is defined by the scope of the following claims. Accordingly, other embodiments are also within the scope of the following claims. For example, various modifications may be made without departing from the scope of the invention. Additionally, some of the steps described above may be order independent, and thus can be performed in an order different from that described.
This application claims priority to U.S. Application Ser. No. 62/270,163, filed on Dec. 21, 2015, incorporated herein by reference.
Number | Name | Date | Kind |
---|---|---|---|
3662343 | Goldstein et al. | May 1972 | A |
3662401 | Collins et al. | May 1972 | A |
4228496 | Katzman et al. | Oct 1980 | A |
4922418 | Dolecek | May 1990 | A |
4972314 | Getzinger et al. | Nov 1990 | A |
5127104 | Dennis | Jun 1992 | A |
5276899 | Neches | Jan 1994 | A |
5280619 | Wang | Jan 1994 | A |
5301336 | Kodosky | Apr 1994 | A |
5323452 | Dickman et al. | Jun 1994 | A |
5333319 | Silen | Jul 1994 | A |
5357632 | Pian et al. | Oct 1994 | A |
5418888 | Alden | May 1995 | A |
5432942 | Trainer | Jul 1995 | A |
5495590 | Comfort et al. | Feb 1996 | A |
5504900 | Raz | Apr 1996 | A |
5630047 | Wang | May 1997 | A |
5692168 | McMahan | Nov 1997 | A |
5701400 | Amardo | Dec 1997 | A |
5712971 | Stanfill et al. | Jan 1998 | A |
5745778 | Alfieri | Apr 1998 | A |
5799266 | Hayes | Aug 1998 | A |
5802267 | Shirakihara et al. | Sep 1998 | A |
5805462 | Poirot et al. | Sep 1998 | A |
5857204 | Lordi et al. | Jan 1999 | A |
5890997 | Roth | Apr 1999 | A |
5923832 | Shirakihara et al. | Jul 1999 | A |
5924095 | White | Jul 1999 | A |
5930794 | Linenbach et al. | Jul 1999 | A |
5933640 | Dion | Aug 1999 | A |
5966072 | Stanfill et al. | Oct 1999 | A |
5999729 | Tabloski, Jr. et al. | Dec 1999 | A |
6006242 | Poole et al. | Dec 1999 | A |
6012094 | Leyman | Jan 2000 | A |
6014670 | Zamanian et al. | Jan 2000 | A |
6016516 | Horikiri | Jan 2000 | A |
6032158 | Mukhopadhyay et al. | Feb 2000 | A |
6038558 | Powers et al. | Mar 2000 | A |
6044211 | Jain | Mar 2000 | A |
6044374 | Nesamoney et al. | Mar 2000 | A |
6044394 | Cadden et al. | Mar 2000 | A |
6088716 | Stanfill et al. | Jul 2000 | A |
6145017 | Ghaffari | Nov 2000 | A |
6173276 | Kant et al. | Jan 2001 | B1 |
6208345 | Sheard et al. | Mar 2001 | B1 |
6256637 | Venkatesh et al. | Jul 2001 | B1 |
6259988 | Galkowski et al. | Jul 2001 | B1 |
6272650 | Meyer et al. | Aug 2001 | B1 |
6301601 | Hellard | Oct 2001 | B1 |
6314114 | Coyle et al. | Nov 2001 | B1 |
6324437 | Frankel et al. | Nov 2001 | B1 |
6330008 | Razdow et al. | Dec 2001 | B1 |
6332212 | Organ et al. | Dec 2001 | B1 |
6339775 | Zamanian et al. | Jan 2002 | B1 |
6400996 | Hoffberg et al. | Jun 2002 | B1 |
6401216 | Meth et al. | Jun 2002 | B1 |
6437796 | Sowizral et al. | Aug 2002 | B2 |
6449711 | Week | Sep 2002 | B1 |
6480876 | Rehg et al. | Nov 2002 | B2 |
6496961 | Gupta et al. | Dec 2002 | B2 |
6538651 | Hayman et al. | Mar 2003 | B1 |
6584581 | Stanfill et al. | Jun 2003 | B1 |
6608628 | Ross et al. | Aug 2003 | B1 |
6611862 | Reisman | Aug 2003 | B2 |
6651234 | Gupta et al. | Nov 2003 | B2 |
6654907 | Stanfill et al. | Nov 2003 | B2 |
6658464 | Reisman | Dec 2003 | B2 |
6715145 | Bowman-Amuah | Mar 2004 | B1 |
6728879 | Atkinson | Apr 2004 | B1 |
6760903 | Morshed et al. | Jul 2004 | B1 |
6813761 | Das et al. | Nov 2004 | B1 |
6816825 | Ashar et al. | Nov 2004 | B1 |
6832369 | Kryka et al. | Dec 2004 | B1 |
6848100 | Wu et al. | Jan 2005 | B1 |
6879946 | Rong et al. | Apr 2005 | B2 |
6951013 | Lozins | Sep 2005 | B1 |
7062483 | Ferrari et al. | Jun 2006 | B2 |
7082604 | Schneiderman | Jul 2006 | B2 |
7085426 | August | Aug 2006 | B2 |
7103597 | McGovern | Sep 2006 | B2 |
7103620 | Kunz et al. | Sep 2006 | B2 |
7130484 | August | Oct 2006 | B2 |
7137116 | Parkes et al. | Nov 2006 | B2 |
7164422 | Wholey, III | Jan 2007 | B1 |
7165030 | Yi et al. | Jan 2007 | B2 |
7167850 | Stanfill | Jan 2007 | B2 |
7287246 | Tan et al. | Oct 2007 | B2 |
7292537 | Charcranoon | Nov 2007 | B2 |
7316001 | Gold et al. | Jan 2008 | B2 |
7356819 | Ricart et al. | Apr 2008 | B1 |
7398514 | Ulrich et al. | Jul 2008 | B2 |
7412658 | Gilboa | Aug 2008 | B2 |
7417645 | Beda et al. | Aug 2008 | B2 |
7457984 | Kutan | Nov 2008 | B2 |
7467383 | Inchingolo et al. | Dec 2008 | B2 |
7505975 | Luo | Mar 2009 | B2 |
7577628 | Stanfill | Aug 2009 | B2 |
7594220 | Kodosky et al. | Sep 2009 | B2 |
7636699 | Stanfill | Dec 2009 | B2 |
7716630 | Wholey et al. | May 2010 | B2 |
7840949 | Schumacher et al. | Nov 2010 | B2 |
7870556 | Wholey et al. | Jan 2011 | B2 |
7877350 | Stanfill et al. | Jan 2011 | B2 |
8281297 | Dasu | Oct 2012 | B2 |
8396886 | Tsimelzon et al. | Mar 2013 | B1 |
8429631 | Schumacher et al. | Apr 2013 | B2 |
8566641 | Douros et al. | Oct 2013 | B2 |
8997040 | Zinkovsky et al. | Mar 2015 | B2 |
9165029 | Bhoovaraghavan et al. | Oct 2015 | B2 |
9323650 | Pasala et al. | Apr 2016 | B2 |
9886241 | Stevens | Feb 2018 | B2 |
9977659 | Larson et al. | May 2018 | B2 |
20010055019 | Sowizral et al. | Dec 2001 | A1 |
20020080181 | Razdow et al. | Jun 2002 | A1 |
20020087921 | Rodriguez | Jul 2002 | A1 |
20020091747 | Rehg et al. | Jul 2002 | A1 |
20020091748 | Rehg et al. | Jul 2002 | A1 |
20020111876 | Rudraraju et al. | Aug 2002 | A1 |
20020129340 | Tuttle | Sep 2002 | A1 |
20020147745 | Houben et al. | Oct 2002 | A1 |
20020184616 | Chessell et al. | Dec 2002 | A1 |
20030004771 | Yaung | Jan 2003 | A1 |
20030016246 | Singh | Jan 2003 | A1 |
20030023413 | Srinivasa | Jan 2003 | A1 |
20030033432 | Simpson et al. | Feb 2003 | A1 |
20030091055 | Craddock et al. | May 2003 | A1 |
20030126240 | Vosseler | Jul 2003 | A1 |
20030130821 | Anslow | Jul 2003 | A1 |
20030204804 | Petri et al. | Oct 2003 | A1 |
20040006745 | Van Heldan et al. | Jan 2004 | A1 |
20040024573 | Allen | Feb 2004 | A1 |
20040041838 | Adusumilli et al. | Mar 2004 | A1 |
20040073529 | Stanfill | Apr 2004 | A1 |
20040093559 | Amaru et al. | May 2004 | A1 |
20040098452 | Brown et al. | May 2004 | A1 |
20040107414 | Bronicki et al. | Jun 2004 | A1 |
20040111469 | Manion et al. | Jun 2004 | A1 |
20040148373 | Childress et al. | Jul 2004 | A1 |
20040177099 | Ganesh et al. | Sep 2004 | A1 |
20040205726 | Chedgey et al. | Oct 2004 | A1 |
20040207665 | Mathur | Oct 2004 | A1 |
20040210831 | Feng et al. | Oct 2004 | A1 |
20040225657 | Sarkar | Nov 2004 | A1 |
20040260590 | Golani et al. | Dec 2004 | A1 |
20050021689 | Marvin et al. | Jan 2005 | A1 |
20050033720 | Verma et al. | Feb 2005 | A1 |
20050034112 | Stanfill | Feb 2005 | A1 |
20050039176 | Fournie | Feb 2005 | A1 |
20050059046 | Labrenz et al. | Mar 2005 | A1 |
20050086360 | Mamou et al. | Apr 2005 | A1 |
20050097515 | Ribling | May 2005 | A1 |
20050097561 | Schumacher et al. | May 2005 | A1 |
20050102670 | Bretl et al. | May 2005 | A1 |
20050144277 | Flurry et al. | Jun 2005 | A1 |
20050144596 | McCullough et al. | Jun 2005 | A1 |
20050149935 | Benedetti | Jul 2005 | A1 |
20050172268 | Kuturianu et al. | Aug 2005 | A1 |
20050177531 | Bracewell | Aug 2005 | A1 |
20050193056 | Schaefer et al. | Sep 2005 | A1 |
20050216421 | Barry et al. | Sep 2005 | A1 |
20050240621 | Robertson et al. | Oct 2005 | A1 |
20050262470 | Gavrilov | Nov 2005 | A1 |
20050289527 | Illowsky et al. | Dec 2005 | A1 |
20060085462 | Todd | Apr 2006 | A1 |
20060095722 | Biles et al. | May 2006 | A1 |
20060098017 | Tarditi et al. | May 2006 | A1 |
20060130041 | Pramanick et al. | Jun 2006 | A1 |
20060190105 | Hsu et al. | Aug 2006 | A1 |
20060206872 | Krishnaswamy | Sep 2006 | A1 |
20060282474 | MacKinnon | Dec 2006 | A1 |
20060294015 | Stanfill et al. | Dec 2006 | A1 |
20060294150 | Stanfill | Dec 2006 | A1 |
20060294459 | Davis et al. | Dec 2006 | A1 |
20070011668 | Wholey | Jan 2007 | A1 |
20070022077 | Stanfill | Jan 2007 | A1 |
20070035543 | David et al. | Feb 2007 | A1 |
20070094211 | Sun et al. | Apr 2007 | A1 |
20070118839 | Berstis et al. | May 2007 | A1 |
20070139441 | Lucas et al. | Jun 2007 | A1 |
20070143360 | Harris et al. | Jun 2007 | A1 |
20070150429 | Huelsman et al. | Jun 2007 | A1 |
20070174185 | McGoveran | Jul 2007 | A1 |
20070179923 | Stanfill | Aug 2007 | A1 |
20070198971 | Dasu et al. | Aug 2007 | A1 |
20070239766 | Papaefstathiou et al. | Oct 2007 | A1 |
20070271381 | Wholey et al. | Nov 2007 | A1 |
20070271562 | Schumacher et al. | Nov 2007 | A1 |
20070279494 | Aman et al. | Dec 2007 | A1 |
20070285440 | MacInnis et al. | Dec 2007 | A1 |
20080049022 | Sherb et al. | Feb 2008 | A1 |
20080126755 | Wu et al. | May 2008 | A1 |
20080134138 | Chamieh | Jun 2008 | A1 |
20080244524 | Kelso | Oct 2008 | A1 |
20080250049 | Chakra et al. | Oct 2008 | A1 |
20080288608 | Johnson | Nov 2008 | A1 |
20080288856 | Goranson | Nov 2008 | A1 |
20080294615 | Furuya et al. | Nov 2008 | A1 |
20090030863 | Stanfill et al. | Jan 2009 | A1 |
20090064147 | Beckerle et al. | Mar 2009 | A1 |
20090083313 | Stanfill et al. | Mar 2009 | A1 |
20090113196 | Jan et al. | Apr 2009 | A1 |
20090182728 | Anderson | Jul 2009 | A1 |
20090193391 | Miller et al. | Jul 2009 | A1 |
20090193417 | Kahlon | Jul 2009 | A1 |
20090224941 | Kansal et al. | Sep 2009 | A1 |
20090235267 | McKinney et al. | Sep 2009 | A1 |
20090245426 | Ratnakar et al. | Oct 2009 | A1 |
20090313625 | Sharoff | Dec 2009 | A1 |
20090327196 | Studer et al. | Dec 2009 | A1 |
20100042976 | Hines | Feb 2010 | A1 |
20100070955 | Kahlon | Mar 2010 | A1 |
20100079460 | Breeds | Apr 2010 | A1 |
20100169137 | Jastrebski et al. | Jul 2010 | A1 |
20100174694 | Staebler et al. | Jul 2010 | A1 |
20100180344 | Malyshev et al. | Jul 2010 | A1 |
20100211953 | Wakeling et al. | Aug 2010 | A1 |
20100218031 | Agarwal et al. | Aug 2010 | A1 |
20100281462 | Festa | Nov 2010 | A1 |
20100281488 | Krishnamurthy et al. | Nov 2010 | A1 |
20110078500 | Douros et al. | Mar 2011 | A1 |
20110093433 | Stanfill et al. | Apr 2011 | A1 |
20110179014 | Schechter et al. | Jul 2011 | A1 |
20110307897 | Atterbury et al. | Dec 2011 | A1 |
20120023508 | Flores et al. | Jan 2012 | A1 |
20120036498 | Akirekadu et al. | Feb 2012 | A1 |
20120054255 | Buxbaum | Mar 2012 | A1 |
20120102029 | Larson et al. | Apr 2012 | A1 |
20120151419 | Kent et al. | Jun 2012 | A1 |
20120216176 | Gaikwad et al. | Aug 2012 | A1 |
20120222017 | Hinkle et al. | Aug 2012 | A1 |
20120233599 | Valdiviezo et al. | Sep 2012 | A1 |
20120284255 | Schechter et al. | Nov 2012 | A1 |
20130124392 | Achanta et al. | May 2013 | A1 |
20130167241 | Siman | Jun 2013 | A1 |
20130239089 | Eksten et al. | Sep 2013 | A1 |
20130290928 | Johnson | Oct 2013 | A1 |
20140068566 | Coronado et al. | Mar 2014 | A1 |
20140143760 | Buxbaum et al. | May 2014 | A1 |
20140229846 | Abaya | Aug 2014 | A1 |
20150160926 | Larson et al. | Jun 2015 | A1 |
20150160927 | Stevens | Jun 2015 | A1 |
20160261466 | Daniel | Sep 2016 | A1 |
Number | Date | Country |
---|---|---|
2014262225 | Dec 2014 | AU |
103069385 | Apr 2013 | CN |
0834810 | Apr 1998 | EP |
64-013189 | Jan 1989 | JP |
H01094431 | Apr 1989 | JP |
06-236276 | Aug 1994 | JP |
H08106540 | Apr 1996 | JP |
08-278892 | Oct 1996 | JP |
08-305576 | Nov 1996 | JP |
63-231613 | Sep 1998 | JP |
11-184766 | Jul 1999 | JP |
2000089955 | Mar 2000 | JP |
2000-99317 | Apr 2000 | JP |
2006-504160 | Feb 2006 | JP |
2006268409 | Oct 2006 | JP |
9800791 | Jan 1998 | WO |
2002011344 | Feb 2002 | WO |
2005001687 | Jan 2005 | WO |
2005086906 | Sep 2005 | WO |
2008124319 | Oct 2008 | WO |
2009039352 | Mar 2009 | WO |
2014011708 | Jan 2014 | WO |
Entry |
---|
U.S. Appl. No. 09/627,252 U.S. Pat. No. 7,164,422, filed Jul. 28, 2000 Jan. 16, 2007, Parameterized Graphs With Conditional Components. |
U.S. Appl. No. 10/268,509 U.S. Pat. No. 7,167,850, filed Oct. 10, 2002 Jan. 23, 2007, Startup and Control of Graph-Based Computation. |
U.S. Appl. No. 11/467,724 U.S. Pat. No. 7,577,628, filed Aug. 28, 2006 Aug. 18, 2009, Startup and Control of Graph-Based Computation. |
U.S. Appl. No. 11/733,579 U.S. Pat. No. 7,636,699, filed Apr. 10, 2007 Dec. 22, 2009, Processing Transactions Using Graph-Based Computations Including Instances of Computation Graphs Associated With the Transactions. |
U.S. Appl. No. 11/169,014 U.S. Pat. No. 7,716,630, filed Jun. 27, 2005 May 11, 2010, Managing Parameters for Graph-Based Computations. |
U.S. Appl. No. 11/167,902 U.S. Pat. No. 7,877,350, filed Jun. 27, 2005 Jan. 25, 2011, Managing Metadata for Graph-Based Computations. |
U.S. Appl. No. 12/977,545 U.S. Pat. No. 8,484,159, filed Dec. 23, 2010 Jul. 9, 2013, Managing Metadata for Graph-Based Computations. |
U.S. Appl. No. 11/836,349, filed Aug. 9, 2007, Distributing Services in Graph-Based Computations. |
U.S. Appl. No. 12/180,141, filed Jul. 25, 2008, Transactional Graph-Based Computation With Error Handling. |
U.S. Appl. No. 12/704,998, filed Feb. 12, 2010, Managing Task Execution. |
U.S. Appl. No. 13/161,010, filed Jun. 15, 2011, Dynamically Loading Graph-Based Computations. |
U.S. Appl. No. 12/638,588, filed Dec. 15, 2009, Processing Transactions in Graph-Based Applications. |
U.S. Appl. No. 13/678,921, filed Nov. 16, 2012, Dynamic Graph Performance Monitoring. |
U.S. Appl. No. 13/678,928, filed Nov. 16, 2012, Dynamic Component Performance Monitoring. |
U.S. Appl. No. 13/733,403, filed Jan. 3, 2013, Configurable Testing of Computer Programs. |
U.S. Appl. No. 14/165,698, filed Jan. 28, 2014, Configurable Testing of Computer Programs. |
U.S. Appl. No. 14/561,435, filed Dec. 5, 2014, Managing Interfaces for Sub-Graphs. |
U.S. Appl. No. 14/561,494, filed Dec. 5, 2014, Managing Interfaces for Sub-Graphs. |
Babaoglu, O et al., “Mapping parallel computations onto distributed systems in Paralex” Compuero '91. Advanced Computer Technology, Reliable Systems and Applications. 5th Annual European Computer Conference. Proceedings. Bologna, Italy May 13-16, 1991, Los Alamitos, CA, USA, IEEE Comput. Soc, US, May 13, 1991, pp. 123-130. |
Baer, J.L. et al., “Legality and Other Properties of Graph Models of Computations.” Journal of the Association for Computing Machinery, vol. 17, No. 3, Jul. 1970, pp. 543-554. |
Bernstein and Newcomer, “Principles of Transaction Processing, 2nd Edition”, Morgan Kaufmann, XP002739946 (Jul. 24, 2009). |
Bookstein, A. et al., “Modeling Word Occurrences for the Compression of Concordances.” ACM Transactions on Information Systems, vol. 15, No. 3, Jul. 1997, pp. 254-290. |
Burch, J.R. et al., “Sequential circuit verification using symbolic model checking.” In Design Automation Conference, 1990, Proceedings of the 27th ACM/IEEE. Jun. 24-28, 1990, pp. 46-51. |
Control-M; New Dimension Software. User Manual. New Dimension Software Ltd., 1999. |
Cytron, Ron et al., “Efficiently Computing Static Single Assignment Form and the Control Dependence Graph.” ACM Transactions on Programming Languages and Systems, vol. 13, No. 4, Oct. 1991, pp. 451-490. |
Dillon, Laura K., et al., “Inference Graphs: A Computational Structure Supporting Generation of Customizable and Correct Analysis Components,” IEEE Transactions on Software Engineering, vol. 29, No. 2, Feb. 2003, pp. 133-150. |
Ebert, Jurgen et al., “A Declarative Approach to Graph-Based Modeling.” Workshop on Graph-Theoretic Concepts in Computer Science, 1994, pp. 1-19. |
Evripidou, Pamskevas, et al., “Incorporating input/output operations into dynamic data-flow graphs,” Parallel Computing 21 (1995) 1285-1311. |
Frankl, Phyllis G., et al., “An Applicable Family of Data Flow Testing Criteria,” IEEE Transactions on Sofrware Engineering, vol. 14, No. 10, Oct. 1988, pp. 1483-1498. |
Gamma et al. “Design Patterns: Elements of Reusable Object-Oriented Software”, Sep. 1999. |
Guyer et al., “Finding Your Cronies: Static Analysis for Dynamic Object Colocation.” Oct. 2004, ACM, pp. 237-250. |
Grove et al., “A Framework for Call Graph Construction Algorithms.” Nov. 2001, ACM TOPLAS, vol. 23, Issue 6, pp. 685-746. |
Herniter, Marc E., “Schematic Capture with MicroSim PSpice,” 2nd Edition, Prentice Hall, Upper Saddle River, N.J., 1996, pp. 51-52, 255-280, 292-297. |
IBM: “Concepts and Architecture—Version 3.6,” Internet citation, http://publibfp.boulder.ibm.com.epubs/pdf/h1262857, retrieved Apr. 19, 2007. |
Jawadi, Ramamohanrao et al., “A Graph-based Transaction Model for Active Databases and its Parallel Implementation.” U. Florida Tech. Rep TR94-0003, 1994, pp. 1-29. |
Just et al., “Review and Analysis of Synthetic Diversity for Breaking Monocultures.” Oct. 2004, ACM, pp. 23-32. |
Karasawa, K.; Iwata, M.; and Terada, H.—“Direct generation of data-driven program for stream oriented processing”—Published in: Parallel Architectures and Compilation Techniques., 1997. Proceedings., 1997 International Conference on; Nov. 10-14, 1997 San Francisco, CA—pp. 295-306. |
Kebschull, U. et al., “Efficient Graph-Based Computation and Manipulation of Functional Decision Diagrams.” University of Tubingen, 1993 IEEE, pp. 278-282. |
Krahmer et al., “Graph-Based Generation of Referring Expressions.” Mar. 2003, MIT Press, vol. 29, No. 1, pp. 53-72. |
Krsul, Ivan et al., “VMPlants: Providing and Managing Virtual Machine Execution Environments for Grid Computing.” Proceedings of the ACM/IEEE SC2004 Conference on Supercomputing, 2001, Nov. 6-12, 2004, 12 pages. |
Li, Xiqing et al., “A Practical External Sort for Shared Disk MPPs.” Proceedings of Supercomputing '93, 1993, 24 pages. |
Martin, David et al., “Models of Computations and Systems—Evaluation of Vertex Probabilities in Graph Models of Computations.” Journal of the Association for Computing Machinery, vol. 14, No. 2, Apr. 1967, pp. 281-299. |
Mattson et al., “Patterns for Parallel Programming,” Addison-Wesley Professional ISBN: 0-321-22811-1 (2004). |
“Modular programming” Wikipedia, retrieved Feb. 10, 2009 (2 pages). |
National Instruments LABVIEW User Manual, Apr. 2003 Edition National Instruments Corporation, Austin TX (349 pages). |
Ou, Chao-Wei et al., “Architecture-Independent Locality-Improving Transformations of Computational Graphs Embedded in k-Dimensions.” Proceedings of the 9th International Conference on Supercomputing, 1995, pp. 289-298. |
Rajesh K. Gupta and Giovanni de Micheli—“A co-synthesis approach to embedded system design automation” Design Automation for Embedded Systems, vol. 1, issue 1-2,69-120. |
“RASSP Data Flow Graph Design Application Note.” International Conference on Parallel Processing, Dec. 2000, Retrieved from Internet <http://www.atl.external.lmco .com/projects/rassp/RASSP_legacy/appnotes/FLOW/APNOTE_FLOW_02 >, 5 pages. |
Romberg, M., “UNICORE: Beyond Web-based Job-Submission,” Proceedings of the 42nd Cray User Group Conference, Noordwijk (May 22-26, 2000). |
Russell, Nick, et al., “Workflow Control-Flow Patterns a Revised View,” Workflow Patterns Initiative, 2006, pp. 1-134. |
Shoten, Iwanami, “Encyclopedic Dictionary of Computer Science,” (with English Translation), May 25, 1990, p. 741. |
Stanfill, Craig, “Massively Parallel Information Retrieval for Wide Area Information Servers.” 1991 IEEE International Conference on Systems, Man and Cybernetics, Oct. 1991, pp. 679-682. |
Stanfill, Craig et al., “Parallel Free-Text Search on the Connection Machine System.” Communications of the ACM, vol. 29, No. 12, Dec. 1986, pp. 1229-1239. |
Stanfill, Craig, “The Marriage of Parallel Computing and Information Retrieval.” IEE Colloquium on Parallel Techniques for Information Retrieval, Apr. 1989, 5 pages. |
“System integration” Wikipedia, retrieved Jan. 25, 2009 (3 pages). |
“Topological sorting,” Wikipedia, accessed Dec. 10, 2012, 2 pages. |
“Unicenter AutoSys Job Management,” Computer Associates, Copyright 2001. |
Vajracharya, Suvas et al., “Asynchronous Resource Management.” Proceedings of the 15th International Parallel and Distributed Processing Symposium, Apr. 2001, 10 pages. |
van der Aalst, W.M.P., et al., “Workflow Patterns,” Distributed and Parallel Databases, 14, 5-51, 2003. |
“Visual Lint: Squash Bugs Early with Interactive C/C++, C# and Java Code Analysis for Microsoft Visual Studio and Eclipse,” [ retrieved from the internet Dec. 3, 2012: www.riverblade.co.uk/products/visual_lint.] (2 pages). |
Wah, B.W. et al., “Report on Workshop on High Performance Computing and Communications for Grand Challenge Applications: Computer Vision, Speech and Natural Language Processing, and Artificial Intelligence.” IEEE Transactions on Knowledge and Data Engineering, vol. 5, No. 1, Feb. 1993, 138-154. |
Whiting, Paul G., et al., “A History of Data-Flow Languages,” IEEE Annals of the History of Computing, vol. 16, No. 4, 1994, pp. 38-59. |
Number | Date | Country | |
---|---|---|---|
20170177740 A1 | Jun 2017 | US |
Number | Date | Country | |
---|---|---|---|
62270163 | Dec 2015 | US |