Patent ID: 8104029

Claim:
A computer implemented method for processing message passing interface (MPI) calls for a MPI application calling routines from a MPI library, the method comprising identifying blocking MPI-calls, wherein the blocking MPI-calls comprise a MPI-send and a MPI-receive; separating the blocking MPI-calls from non-blocking MPI-calls; splitting the blocking MPI-calls into a new non-blocking MPI-call, wherein the new non-blocking MPI-calls are tagged as an MPI-icall, and wherein the MPI-icall comprises a MPI-isend and a MPI-ireceive, the MPI-icall being different from a MPI-call, and an additional MPI-wait call associated with the new non-blocking MPI-call; collating all the MPI-wait calls, by capturing all the MPI-wait calls; determining a buffer in use by matching the new non-blocking MPI-calls with the MPI-wait calls; checking if the MPI application following the MPI-wait call uses the buffer; sinking the MPI-wait call before the use of the buffer, thereby allowing larger number of instructions to be processed before the MPI-wait call in the buffer; and sinking the MPI-wait call such that it never crosses a defined loop boundary if the MPI-wait call is invoked in a loop.