Runspace method, system and apparatus
Abstract
The present invention, known as runspace, relates to the field of computing system management, data processing and data communications, and specifically to synergistic methods and systems which provide resource-efficient computation, especially for decomposable many-component tasks executable on multiple processing elements, by using a metric space representation of code and data locality to direct allocation and migration of code and data, by performing analysis to mark code areas that provide opportunities for runtime improvement, and by providing a low-power, local, secure memory management system suitable for distributed invocation of compact sections of code accessing local memory. Runspace provides mechanisms supporting hierarchical allocation, optimization, monitoring and control, and supporting resilient, energy efficient large-scale computing.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 .- 9 . (canceled)
10 . A method for pursuing user or system defined goals for a computer program execution in a dataflow processing system, the method comprising:
a) decomposing the computer program into a set of abstract modules, wherein an abstract module comprises of one or more of following members: a codelet, a set of cooperating codelets, a set of cooperating abstract modules, or data shared by at least some of the other members of an abstract module; b) defining relations of proximity so as to pursue maximizing proximity of the members of the abstract module in memory space or execution time; c) by a runtime system of the dataflow processing system, performing at least one of the following: i) initially placing data or starting execution of codelets of within an abstract module in a coordinated manner, or ii) when beneficial in pursuing the user or system defined goal, migrating members of abstract modules in a coordinated manner, a) wherein the placing or the migrating is done based at least in part on the relations of proximity.
11 . The method of claim 10 , wherein the decomposing comprises decomposing the computer program to minimize dependencies among the abstract modules.
12 . The method of claim 10 , further comprising determining a set of dependencies among the abstract modules.
13 . A method for pursuing user or system defined goals of a computer program in a dataflow processing system, the method comprising:
a) decomposing the computer program into a set of abstract modules, wherein an abstract module comprises of one or more of following: a codelet, a set of cooperating codelets, a set of cooperating abstract modules, and data shared by at least some of the other members of an abstract module; b) obtaining program run-time information regarding the abstract modules, performance and resource utilization associated with the program; and c) using the program run-time information to guide subsequent placement or execution scheduling of the abstract modules on an ongoing or a subsequent run of at least portions of said computer program in the dataflow processing system.
14 . The method of claim 13 , wherein the decomposing comprises decomposing the computer program to minimize dependencies among the abstract modules.
15 . The method of claim 13 , further comprising determining a set of dependencies among the abstract modules.
16 . The method of claim 13 , further comprising migrating elements of an abstract module containing an executing or soon-to-execute codelet, based at least in part on a criterion of improving locality of the elements of the abstract module.
17 . The method of claim 13 , further comprising migrating elements of an abstract module, based on a criterion selected from a group consisting of: to improve global allocation of resources, to allow a processing resource to be attenuated for energy saving, to allow a processing resource to be powered-down, and to use processing resources better suited for a given processing task.
18 . A method for allocating data processing resources to data processing tasks comprising:
a) at compile time, analyzing potential code and data allocations to identify one or more opportunities for an action selected from a group consisting of: codelet migration and data migration; and b) at run time, migrating codelets or data to exercise opportunities presented by actual code and data allocations.
19 . The method of claim 18 , wherein the migrating includes moving codelets to underutilized processors.
20 . The method of claim 18 , further comprising making copies of at least some data from one locale to another, in anticipation of migrating at least one codelet.
21 . The method of claim 18 , further comprising providing security marking for a codelet, wherein said marking indicates restrictions or privileges to be considered in treatment of said codelet by the method.
22 . A method for partitioning execution of at least a segment of a software application, including:
a) querying a runtime system to discover a quantity of processing cores available for the application segment; b) determining a maximum quantity of processing units into which the segment is divisible; and c) based on the quantities determined in a) and b), dividing the segment into an optimal number of processing units.
23 . A method for compiling and running a computer program to improve resource-efficient program execution, the method comprising of:
a) at a program compile-time, determining an optimal efficiency execution environment for codelets of the program; and b) at a program run-time, placing and scheduling codelets according to their optimal efficiency execution environments, based at least in part on said determining.
24 . (canceled)
25 . A system for optimally locating a set of codelets in a dataflow processing system, including:
a) means for exchanging information among a set of processing resources in the dataflow processing system regarding metrics relevant to optimal placement of the set of codelets among the processing resources; b) means for determining to which of the processing resources to locate one or more codelets among said set; and c) means for mapping the one or more codelets to one or more processing resources according to said determining.
26 . (canceled)
27 . A computer program product, in a dataflow processing system comprising multiple nodes, the computer program product comprising a storage medium having stored thereon computer program code designed for execution on at least one of said nodes, which upon executed results in the implementation of operations according to the method of claim 10 .
28 . A computer program product, in a dataflow processing system comprising multiple nodes, the computer program product comprising a storage medium having stored thereon computer program code designed for execution on at least one of said nodes, which upon executed results in the implementation of operations according to the method of claim 13 .
29 . A computer program product, in a dataflow processing system comprising multiple nodes, the computer program product comprising a storage medium having stored thereon computer program code designed for execution on at least one of said nodes, which upon executed results in the implementation of operations according to the method of claim 18 .
30 . A computer program product, in a dataflow processing system comprising multiple nodes, the computer program product comprising a storage medium having stored thereon computer program code designed for execution on at least one of said nodes, which upon executed results in the implementation of operations according to the method of claim 22 .
31 . A computer program product, in a dataflow processing system comprising multiple nodes, the computer program product comprising a storage medium having stored thereon computer program code designed for execution on at least one of said nodes, which upon execution results in the implementation of operations according to the method of claim 23 .
32 . (canceled)
33 . A computer program product, in a dataflow processing system comprising a computer usable storage medium or network accessible storage medium, and having executable program code stored thereon, wherein at least in a portion of said program code, upon execution, results in the implementation of operations according to the method of claim 10 .
34 . A computer usable storage media or network accessible storage medium having executable program code stored thereon, wherein at least a portion of said program code, upon execution, results in the implementation of operations according to the method of claim 13 .
35 . A computer usable storage media or network accessible storage medium having executable program code stored thereon, wherein at least a portion of said program code, upon execution, results in the implementation of operations according to the method of claim 18 .
36 . A computer usable storage media or network accessible storage medium having executable program code stored thereon, wherein at least a portion of said program code, upon execution, results in the implementation of operations according to the method of claim 22 .
37 . A computer usable storage media or network accessible storage medium having executable program code stored thereon, wherein at least a portion of said program code, upon execution, results in the implementation of operations according to the method of claim 23 .Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.