Dynamic seamless reconfiguration of executing parallel software -> Monitor Keywords
Fresh Patents
Monitor Patents Patent Organizer How to File a Provisional Patent Browse Inventors Browse Industry Browse Agents Browse Locations
     new ** File a Provisional Patent ** 
site info Site News  |  monitor Monitor Keywords  |  monitor archive Monitor Archive  |  organizer Organizer  |  account info Account Info  |  
06/22/06 | 42 views | #20060136503 | Prev - Next | USPTO Class 707 | About this Page  707 rss/xml feed  monitor keywords

Dynamic seamless reconfiguration of executing parallel software

USPTO Application #: 20060136503
Title: Dynamic seamless reconfiguration of executing parallel software
Abstract: A method is described for dynamic stitching of a new module of executable code in a parallel processing environment, where access to a data object is shared by the new module and another module previously loaded. A new data object is created for shared access by the new module and by the other module; a data freshness indicator is updated in accordance therewith. A pointer value for the data pointer associated with the other module is modified, thereby terminating reference to an old data object previously accessed and substituting reference to the new data object. A second data freshness indicator is updated in accordance with access by the other module to the new data object. The old data object is deleted when a comparison between freshness indicators shows that access to the old data object is no longer required.
(end of abstract)
Agent: Jay H. Anderson International Business Machines Corporation - Hopewell Junction, NY, US
Inventors: Peter C. Elmendorf, Unmesh A. Ballal, Harry J. Beatty, Qi Yan
USPTO Applicaton #: 20060136503 - Class: 707200000 (USPTO)
Related Patent Categories: Data Processing: Database And File Management Or Data Structures, File Or Database Maintenance
The Patent Description & Claims data below is from USPTO Patent Application 20060136503.
Brief Patent Description - Full Patent Description - Patent Application Claims  monitor keywords



RELATED APPLICATIONS

[0001] This application is related to application Ser. Nos. 09/597,523, 09/597,524 and 09/597,525, all filed Jun. 20, 2000. All of these related applications are assigned to the same assignee as the present application. The disclosures of all these related applications are incorporated herein by reference.

FIELD OF THE INVENTION

[0002] This invention relates to parallel computer processing, and more particularly to the management of a parallel processing environment in which software is dynamically loaded, unloaded or modified.

BACKGROUND OF THE INVENTION

[0003] In parallel computer processing, a single program can simultaneously run different threads (that is, independent flows of control) managed by the program. An important feature of parallel processing is dynamic loading and unloading of executable modules which are portions of an executing program. This dynamic loading and unloading is performed by support code generally called the "runtime library." The runtime library is designed to minimize the interruption of the execution of the previously loaded software while adding a new module or removing an existing module.

[0004] A typical parallel processing system is shown schematically in FIG. 1. Processors 11-1, 11-2, 11-3, . . . 11-n are each connected to a main memory 100, which holds the runtime library 101 and the driver application 102. The runtime library is physically separate from the driver application, but is linked thereto. Modules of executable code 103-1, 103-2, 103-3, . . . 103-n, provide services used by the driver application and are loaded in the main memory when needed. A module load can consist of a single module (as shown in FIG. 1) or a module tree.

[0005] A schematic representation of a single-threaded computing environment is shown in FIG. 2. A thread in combination with a specific set of data, for execution of a particular computation, is referred to as a "context." As shown schematically in FIG. 2, the driver application 102 issues commands to create a context 200 having module trees 201-203, resulting in the modules 103-1-103-9 being loaded in the context. It is noteworthy that a given module (e.g. 103-6) may be shared between module trees. The format of the modules is monitored and updated by the runtime library 101. Execution in this environment proceeds sequentially through module trees 201, 202 and 203.

[0006] Modules in a context are loaded into main memory and "stitched" together for efficient execution. It is desirable, of course, that stitching of new modules to previously loaded modules be performed dynamically (that is, with minimum interruption of execution).

[0007] A "system context" is a context which the runtime library uses to perform certain functions, such as module loading, garbage collection (preparing old data for deletion) and dynamic stitching. The runtime library, which can run on any context simultaneously, creates and manages the system contexts and system threads.

[0008] A parallel execution environment consists of two or more contexts with threads running independently, accessing thread-specific data or accessing locally or globally shared data. A schematic representation of a parallel computing environment is shown in FIG. 3. The environment of FIG. 3 has two contexts 301, 302 with module trees 311-313 and 321-323 respectively. Certain modules (e.g. 103-11, 103-12) may be shared between the contexts. A parallel environment is thus characterized by a plurality of contexts (threads and module trees; see FIG. 3) running on a plurality of processors (see FIG. 1). However, there need not be a one-to-one correspondence between the contexts and processors.

[0009] The modules and module trees loaded in one context are generally not visible to other contexts. A problem therefore arises when it is desired to modify the software (specifically, add or remove modules) while multiple, parallel threads are executing. For example, if a loaded module is removed while a thread is executing code contained in that module, the execution will fail (or at best yield unreliable results). Similarly, if a group of modules is to be added to a running system, this should be performed in a controlled manner in order to prevent executing threads from accessing an incomplete configuration of the added modules.

[0010] One possible way to avoid this problem is to suspend the execution of all the threads whenever a module is to be added or deleted. This approach adds to the complexity of the driver application by requiring startup, pause and shutdown routines. Furthermore, system performance is degraded as the number of threads increases.

[0011] There is a need for a software design which provides for dynamic loading and unloading of modules in a parallel computing environment, wherein sections of the software may be modified in a multithreaded system while actively running.

SUMMARY OF THE INVENTION

[0012] The present invention addresses the above-described need by providing a method for performing dynamic stitching of a new module of executable code in a parallel processing environment. Access to a data object is shared by the new module and another module previously loaded; this access is performed using a data pointer, having a pointer value, associated with each module.

[0013] In accordance with one aspect of the invention, when the new module is loaded a new data object is created for shared access by the new module and by the previously loaded module (with the previously loaded module accessing the new data object in place of an old data object). A first data freshness indicator is updated in accordance with creation of the new data object. A value of the first freshness indicator is associated with the old data object (thus serving as a "freshness stamp" on the old data object). A pointer value is established for a data pointer associated with the new module, to permit access to the new data object by the new module. The pointer value for the data pointer associated with the other module is modified, thereby terminating reference to the old data object previously accessed by the other module and substituting reference to the new data object. A second data freshness indicator is updated in accordance with access by the other module to the new data object. The old data object is deleted when a comparison of the second data freshness indicator with the value associated with the old data object indicates that access to the old data object is no longer required.

[0014] In a preferred embodiment of the invention, the first and second pointer values are atomic data, and the second pointer value is modified in a atomic operation.

[0015] A list ("garbage list") of old data objects subject to deletion may be established. An old data object is added to this list after creation of the new data object.

[0016] A plurality of previously loaded modules may share access to the new data object with the new module. Furthermore, the modules may comprise a plurality of contexts, with a freshness indicator being associated with each context. The old data object may be deleted after the context freshness indicators have been updated so that all such indicators are not less than the value associated with the old data object.

[0017] In accordance with another aspect of the invention, a method is provided for dynamic stitching of a new module in a parallel processing environment, where the new module and another previously loaded module include accessing code which, when executed, causes access to a data object. In this method, an instruction is first received to load the new module. New access to the data object is then prevented; however, continued access to the data object, already in progress when the instruction is received, is permitted to continue. The new module is loaded after this continued access is concluded. Initiation of access to the data object (invocation of the accessing code) is again permitted after the loading is performed. The loading may further include modification of the data object.

[0018] This method may further include establishing a usage counter associated with the data object, which is incremented and decremented in accordance with initiation and conclusion, respectively, of access to the data object. The value of the usage counter is changed to its own negative when an instruction to load a new module is received. This negative value is then incremented when each continued access is concluded. The value of the usage counter is compared with a predetermined value; the usage counter is reset when all continued access to the data object is concluded.

[0019] A negative value of the usage counter indicates that new access (invocation of the accessing code) is to be prevented; a value equal to the predetermined value (e.g. -1) indicates that new access may be resumed. Loading of the new module, and new access to the data object, are performed after the resetting of the usage counter.

[0020] In a preferred embodiment of this method, the value of the usage counter and the predetermined value are atomic data, so that the above-described incrementing, decrementing, changing comparing and resetting operations are atomic operations.

Continue reading...
Full patent description for Dynamic seamless reconfiguration of executing parallel software

Brief Patent Description - Full Patent Description - Patent Application Claims
Click on the above for other options relating to this Dynamic seamless reconfiguration of executing parallel software patent application.
###
monitor keywords

How KEYWORD MONITOR works... a FREE service from FreshPatents
1. Sign up (takes 30 seconds). 2. Fill in the keywords to be monitored.
3. Each week you receive an email with patent applications related to your keywords.  
Start now! - Receive info on patent apps like Dynamic seamless reconfiguration of executing parallel software or other areas of interest.
###


Previous Patent Application:
System and method for reusing project engineering data
Next Patent Application:
Method and apparatus for saving and restoring parameter values set with user commands
Industry Class:
Data processing: database and file management or data structures

###

FreshPatents.com Support
Thank you for viewing the Dynamic seamless reconfiguration of executing parallel software patent info.
IP-related news and info


Results in 0.30741 seconds


Other interesting Feshpatents.com categories:
Electronics: Semiconductor Audio Illumination Connectors Crypto