Method for executing a sequential program in parallel with automatic fault tolerance
AssigneeIndian Institute of Information Technology
InventorsAbhinav Jalan, Retesh Chadha
Life of this patent
Estimating the term…
Abstract
The present invention provides system and methods for executing a sequential in parallel. Parallel procedures, specified in the program, are executed as parallel slave processes. A process when actually accessing a ‘synchronous object’ that does not contain the data value same as in program's sequential run gets blocked till the right value is received. Object value transfer takes place through an ownership queue. Synchronization over referred objects along with run-time alterations in the linkage structure of the objects is also supported. In the event of a fault, aborted processes are rescheduled and redundancy in data storage is avoided.
Claims25
A method for executing a sequential program in parallel on a system containing a plurality of processing nodes connected through an interconnection network, comprising the steps of:
- segmenting the sequential program into multiple processes that are to be executed in parallel on different processing nodes,
- establishing dynamic master slave relationships between processes to be executed in parallel based on the program flow requirements,
- creating a job corresponding to each relation between a master and slave process,
- creating and forwarding synchronous objects as arguments to each job, wherein said synchronous objects enable blocking of the master process only when the object is being accessed by the slave process and allow access by the master process at intermediate points of execution when the object is not being accessed by the slave process,
- scheduling the job along with values of said arguments on a processing node and executing said job as a slave process on the processing node, and
- receiving result of the job execution from the slave process on completion.
A system for executing a sequential program in parallel on a system containing a plurality of processing nodes connected through an interconnection network, comprising:
- a central processing unit,
- a system bus
- a communication unit connected to the system bus, and
- a memory connected to the system bus, containing:
- means for segmenting the sequential program into multiple processes that are to be executed in parallel on different processing nodes,
- means for establishing dynamic master slave relationships between processes to be executed in parallel based on the program flow requirements,
- means for creating a job corresponding to each relation between a master and slave process,
- means for creating and forwarding synchronous objects as arguments to each job, wherein said synchronous objects enable blocking of the master process only when the object is being accessed by the slave process and allow access by the master process at intermediate points of execution when the object is not being accessed by the slave process,
- means for scheduling the job along with values of said arguments on a processing node and executing said job as a slave process on the processing node, and
- means for receiving result of the job execution from the slave process on completion.
The system as claimed in claim 22 further comprising means for providing automatic fault tolerance in the event of failure of a slave process, node or network by rescheduling the slave process on the same or different processing node.
A computer program product comprising computer readable program code stored on computer readable storage medium embodied therein for executing a sequential program in parallel on a system containing a plurality of processing nodes connected through an interconnection network, comprising:
- computer readable program code means configured for segmenting the sequential program into multiple processes that are to be executed in parallel on different processing nodes,
- computer readable program code means configured for establishing dynamic master slave relationships between processes to be executed in parallel based on the program flow requirements,
- computer readable program code means configured for creating a job corresponding to each relation between a master and slave process,
- computer readable program code means configured for creating and forwarding synchronous objects as arguments to each job, wherein said synchronous objects enable blocking of the master process only when the object is being accessed by the slave process and allow access by the master process at intermediate points of execution when the object is not being accessed by the slave process,
- computer readable program code means configured for scheduling the job along with values of said arguments on a processing node and executing said job as a slave process on the processing node, and
- computer readable program code means configured for receiving result of the job execution from the slave process on completion.
Dependencies are inferred from the claim text.