Parallelization and instrumentation in a producer graph oriented programming framework
First Claim
1. A computer implemented method for executing an application program, the method comprising:
- instantiating a producer whose output is currently of interest, wherein object-oriented source code of the application program includes methods and producer dependency declarations, wherein a producer is a runtime instantiatable construct that includes at least an instance of a class and a method which is of that class, wherein each of the producer dependency declarations is for a specific method and was added by a programmer to identify at run time a set of zero or more producers through identification at run time of at least the instance of the class for each of the set of zero or more producers;
responsive to said instantiating, adding the producer of interest as part of a producer graph;
attempting to automatically generate a remainder of the producer graph through linking, and instantiation as necessary, of other producers based on the producer dependency declarations of the methods of the producers already in the producer graph; and
executing the producers in the producer graph to determine the current output for the producer of interest, wherein said executing comprisesparallelizing execution of at least two of the producers in the producer graph, using the runtime, based on dependencies between the producers in the producer graph.
3 Assignments
0 Petitions
Accused Products
Abstract
Embodiments of parallelization and/or instrumentation in a producer graph oriented programming framework have been presented. In one embodiment, a request to run an application program is received, wherein object-oriented source code of the application program includes methods and producer dependency declarations, wherein the producer dependency declaration for a given method identifies a set of zero or more producers with outputs that are an input to the given method, wherein a producer is at least an instance and a method associated with that instance. Further, execution of the application program may be parallelized based on dependency between producers of the application program using the runtime. In some embodiments, the application program is instrumented using the runtime.
121 Citations
53 Claims
-
1. A computer implemented method for executing an application program, the method comprising:
-
instantiating a producer whose output is currently of interest, wherein object-oriented source code of the application program includes methods and producer dependency declarations, wherein a producer is a runtime instantiatable construct that includes at least an instance of a class and a method which is of that class, wherein each of the producer dependency declarations is for a specific method and was added by a programmer to identify at run time a set of zero or more producers through identification at run time of at least the instance of the class for each of the set of zero or more producers; responsive to said instantiating, adding the producer of interest as part of a producer graph; attempting to automatically generate a remainder of the producer graph through linking, and instantiation as necessary, of other producers based on the producer dependency declarations of the methods of the producers already in the producer graph; and executing the producers in the producer graph to determine the current output for the producer of interest, wherein said executing comprises parallelizing execution of at least two of the producers in the producer graph, using the runtime, based on dependencies between the producers in the producer graph. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A computer implemented method for executing an application program, the method comprising:
-
instantiating a producer whose output is currently of interest, wherein object-oriented source code of the application program includes methods and producer dependency declarations, wherein a producer is a runtime instantiable constant that includes at least an instance of a class and a method which is of that class, wherein each of the producer dependency declarations is for a specific method and was added by a programmer to identify at run time a set of zero or more producers through identification at run time of at least the instance of the class for each of the set of zero or more producers; responsive to said instantiating, adding the producer of interest as part of a producer graph; attempting to automatically generate a remainder of the producer graph through linking, and instantiation as necessary, of other producers based on the producer dependency declarations of the methods of the producers already in the producer graph; and instrumenting the application program based on the producer graph using a runtime with producer graph oriented programming support. - View Dependent Claims (12, 13, 14, 15, 16)
-
-
17. An apparatus comprising:
a computer with a runtime arranged to execute an application program, wherein object-oriented source code of the application program includes producer dependency declarations for methods and execution mode settings for the methods, wherein a producer is a runtime instantiatable construct that includes at least an instance of a class and a method which is of that class, wherein each of the producer dependency declarations is for a specific method and was added by a programmer to identify at run time a set of zero or more producers through identification at run time of at least the instance of the class for each of the set of zero or more producers, and wherein said runtime includes; an automated producer graph generation module to receive a designation of a producer of interest, to add the producer of interest as part of a producer graph, and to automatically generate a remainder of the producer graph through linking, and instantiation as necessary, of other producers based on the producer dependency declarations of the methods of the producers already in the producer graph; and an automated producer graph execution module to execute the producers in the producer graph in the order indicated by the producer graph to determine an output of the producer of interest, wherein execution of each producer results in the method of the producer being executed on the instance of the producer, and the automated producer graph execution module comprises, a parallelization module arranged to cause at least two of the plurality of producers to be executed in parallel. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
29. An apparatus comprising:
a computer with a runtime arranged to execute an application program, wherein object-oriented source code of the application program includes producer dependency declarations for methods and execution mode settings for the methods, wherein a producer is a runtime instantiatable construct that includes at least an instance of a class and a method which is of that class, wherein each of the producer dependency declarations is for a specific method and was added by a programmer to identify at run time a set of zero or more producers through identification at run time of at least the instance of the class for each of the set of zero or more producers, and wherein said runtime includes; an automated producer graph generation module to receive a designation of a producer of interest, to add the producer of interest as part of a producer graph, and to automatically generate a remainder of the producer graph through linking, and instantiation as necessary, of other producers based on the producer dependency declarations of the methods of the producers already in the producer graph; and an automated producer graph execution module to execute the producers in the producer graph in the order indicated by the producer graph to determine an output of the producer of interest, wherein execution of each producer results in the method of the producer being executed on the instance of the producer, and the automated producer graph execution module comprises, a metrics acquisition module arranged to acquire metrics related to execution of the plurality of producers on a producer by producer basis if instrumentation is requested. - View Dependent Claims (30, 31)
-
32. A non-transitory machine-readable storage medium comprising:
object-oriented source code including, a plurality of class definitions each including, a set of one or more fields, a set of one or more methods, a producer dependency declaration for each method of said set of methods, wherein a producer is a runtime instantiatable construct that includes at least an instance of one of the plurality of classes at run time and a method associated with that instance, wherein the producer dependency declaration for a given one of said methods was added by a programmer to identify at run time a set of zero or more producers through identification at run time of at least the instance of the class for each of the set of zero or more producers, and wherein the runtime is operable to automatically generate a producer graph for a designated producer of interest through linking, and instantiation as necessary, of other producers based on the producer dependency declarations of the methods of the other producers, and to automatically execute at least two of the producers in the producer graph substantially in parallel based on dependencies between the producers as indicated in the producer graph. - View Dependent Claims (33, 34, 35, 36, 37, 38, 39, 40, 41, 42)
-
43. A non-transitory machine-readable storage medium comprising:
an application program compiled from object oriented source code, the object oriented source code including, a plurality of class definitions each including, a set of one or more fields, a set of one or more methods, a producer dependency declaration for each method of said set of methods, wherein a producer is a runtime instantiable construct that includes at least an instance of one of the plurality of classes at run time and a method associated with that instance, wherein the producer dependency declaration for a given one of said methods was added by a programmer to identify at run time a set of zero or more producers through identification at run time of at least the instance of the class for each of the set of zero or more producers, and wherein the runtime, executing the application program, is operable to automatically generate a producer graph for a designated producer of interest through linking, and instantiation as necessary, of other producers based on the producer dependency declarations of the methods of the other producers, and to automatically execute at least two of the producers in the producer graph substantially in parallel based on dependencies between the producers as indicated in the producer graph. - View Dependent Claims (44, 45, 46, 47, 48, 49, 50, 51, 52, 53)
Specification