Patent ID: 7853937
Filing Date: 2010-12-14
Classification: G06F

Abstract:
1. Parallel programming method, script or visual, for performing parallel computations on plurality of processors of multi-processor computing hardware by means of plurality of program subroutines, creation of each of said subroutines comprising steps of: (a) indicating an exclusive zone, said exclusive zone being subset of instructions at the beginning of each said subroutine that only a single task can be executing at a given moment with the remaining part of same said subroutine being allowed to be executed by plurality of tasks, each said task being an instance of said subroutine running at the same time; (b) relying on a lock including a lock variable or data structure, automatically generated by the a compiler or manually assigned to one said subroutine or plurality of them, managing execution of said exclusive zone indicated in step (a) by allowing only one task to execute instructions within said exclusive zone at the same given moment while temporarily suspending and queuing or otherwise constraining other tasks attempting execution of said exclusive zone of any subroutine assigned to the same lock; whereby complex computing jobs are broken down into plurality of above described subroutines executing in parallel and synchronized through limited access to above described exclusive zone of each subroutine indicated in step (a); whereby synchronization with outside routines as well as safe access to contested or volatile resources is controlled locally by placing part of code of each subroutine within the exclusive zone indicated through above step (a) of said subroutine while unconstrained parallelism is achieved with instructions placed beyond said exclusive zone; whereby every call to the same said subroutine that defines any instructions past the exclusive zone of step (a) results in creating a new independent task running in parallel, once the initial constraint of having to pass through indicated in step (a) exclusive zone of said subroutine is overcome; whereby plurality of above described calls to same said subroutine, but with different parameters related to different items of data, is the intended means by which a complex computing job consisting of plurality of such items of data to be processed ends up being executed in parallel on all currently available processors, eliminating necessity to explicitly partition said plurality of items of data into chunks fed to different processors of said multi-processor hardware; whereby use of parallel processing resources can be directed from the lowest level of hierarchical design of digital computer's code thus allowing to make parallelism an inherent and natural part of any small component of digital computer's program as opposed to parallelism being an exception, a feature added at the top of non-parallel aware classical programming methods.