Asynchronous callback driven messaging request completion notification
First Claim
1. A process comprising the following steps:
- a user-mode thread X of an application which has multiple threads in a multithreaded computer system making a non-blocking request to a message passing interface library which is limited in at least one of the following ways;
(a) all calls to the message passing interface library from the application must come from thread X, (b) all application calls to the message passing interface library are serialized and therefore no other thread of the application may call the message passing library while thread X is calling the message passing library;
deterministically associating in a memory of the multithreaded computer system a callback routine with the non-blocking request as an asynchronous callback to the thread X, the associating step being deterministic in that the callback will be executed by the thread X that made the non-blocking request rather than being executed by some other thread of the application;
the thread X transitioning from a closed state in which the thread X will not process an asynchronous callback to an open state in which the thread X will process an asynchronous callback; and
a thread other than thread X detecting that the request is complete, and then queueing the callback routine for execution by thread X.
2 Assignments
0 Petitions
Accused Products
Abstract
Through an asynchronous callback enhancement, a thread makes a non-blocking request (e.g., send, receive, I/O) to a message passing interface library, and a callback routine is associated with the request as an asynchronous callback to the thread. The callback is queued for execution in the requesting thread and so has a deterministic execution context. Callback queuing may occur in response to another thread detecting that the request is complete. Further control over callback execution is provided by state transitions which determine whether the thread is open to processing (e.g., executing) an asynchronous callback. Callback association is done by a broad or by narrow association routines. An application which has processes organized in ranks, each including a communication thread with associated callback(s), and multiple worker threads. Interruptible wait enhancements may also be present.
40 Citations
20 Claims
-
1. A process comprising the following steps:
-
a user-mode thread X of an application which has multiple threads in a multithreaded computer system making a non-blocking request to a message passing interface library which is limited in at least one of the following ways;
(a) all calls to the message passing interface library from the application must come from thread X, (b) all application calls to the message passing interface library are serialized and therefore no other thread of the application may call the message passing library while thread X is calling the message passing library;deterministically associating in a memory of the multithreaded computer system a callback routine with the non-blocking request as an asynchronous callback to the thread X, the associating step being deterministic in that the callback will be executed by the thread X that made the non-blocking request rather than being executed by some other thread of the application; the thread X transitioning from a closed state in which the thread X will not process an asynchronous callback to an open state in which the thread X will process an asynchronous callback; and a thread other than thread X detecting that the request is complete, and then queueing the callback routine for execution by thread X. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A computer-readable storage medium configured with data and with instructions that when executed cause one or more processors to perform a process for asynchronous callback driven messaging request completion notification, the process comprising the steps of:
-
a user-mode communication thread of an application making a non-blocking request to a message passing interface library which is limited in at least one of the following ways;
(a) all application calls to the message passing interface library must come from the user-mode communication thread, (b) all application calls to the message passing interface library are serialized;associating a callback routine with the non-blocking request as an asynchronous callback to the user-mode communication thread; a user-mode worker thread detecting that the non-blocking request is complete; queueing the callback routine for execution by the user-mode communication thread which made the non-blocking request, wherein the queuing step occurs in response to the user-mode worker detecting that the non-blocking request is complete; and the user-mode communication thread transitioning to an open state in which the user-mode communication thread is open to processing asynchronous callbacks, and then executing the callback asynchronously in the user-mode communication thread. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A computer system comprising:
-
at least one logical processor, each logical processor in operable communication with a memory; at least two threads of an application, the threads residing in the memory; an MPI (message passing interface) messaging request residing in the memory and having a requesting thread identifier which identifies one of the threads, the messaging request also having a completion indicator configured to indicate whether the messaging request has completed; an asynchronous callback residing in the memory and having a deterministic thread callback context which associates the callback with the thread identified in the messaging request, thereby determining the callback will execute in the thread identified in the messaging request; a message passing interface library which resides in the memory and is limited in at least one of the following ways;
(a) all application calls to the message passing interface library must come from the thread identified in the messaging request, (b) all application calls to the message passing interface library are serialized;wherein the message passing interface library is configured to process the messaging request and to set the completion indicator to indicate that the messaging request has completed, and wherein the deterministic thread callback context comprises a queue in which the callback is queued for execution by the thread identified in the messaging request; and wherein the thread identified in the messaging request is a user mode thread and also has a state indicator which indicates one of the following when the user mode thread identified in the messaging request is executing;
a closed state in which the user mode thread identified in the messaging request will not execute asynchronous callbacks, an open state in which the user mode thread identified in the messaging request will execute asynchronous callbacks. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification