IP Library Granted Patent US 8,732,229
Granted Patent B2
US 8,732,229 · App. 12/985,611 · Granted May 20, 2014

Completion processing for data communications instructions

Inventors: Michael A. Blocksome (Rochester, MN); Sameer Kumar (White Plains, NY); Jeffrey J. Parker (Rochester, MN)
Assignee: International Business Machines Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,732,229
App. No.
12/985,611
Granted
May 20, 2014
Kind
B2
Abstract

Completion processing of data communications instructions in a distributed computing environment, including receiving, in an active messaging interface (‘AMI’) data communications instructions, at least one instruction specifying a callback function; injecting into an injection FIFO buffer of a data communication adapter, an injection descriptor, each slot in the injection FIFO buffer having a corresponding slot in a pending callback list; listing in the pending callback list any callback function specified by an instruction, incrementing a pending callback counter for each listed callback function; transferring payload data as per each injection descriptor, incrementing a transfer counter upon completion of each transfer; determining from counter values whether the pending callback list presently includes callback functions whose data transfers have been completed; calling by the AMI any such callback functions from the pending callback list, decrementing the pending callback counter for each callback function called.

Claims (28)

1. Apparatus for completion processing of data communications instructions in a distributed computing environment, the distributed computing environment including a plurality of computers coupled for data communications through communications adapters and an active messaging interface (‘AMI’), the computers comprising computer processors operatively coupled to computer memory having disposed within it computer program instructions that, when executed by the computer processors, cause the computers in the distributed computing environment to function by:

receiving, in the AMI from an application executing on a computer in the distributed computing environment, a sequence of data communications instructions, each instruction specifying a transfer of payload data among computers in the distributed computing environment, at least one of the instructions specifying a callback function;

injecting, by the AMI for each data communications instruction into a slot in an injection FIFO buffer of a data communication adapter, an injection descriptor specifying to the communications adapter the transfer of payload data, the slot in the injection FIFO buffer having a corresponding slot in a pending callback list;

listing, by the AMI in the corresponding slot in the pending callback list for each data communications instruction, any callback function specified by that instruction, incrementing a pending callback counter for each listed callback function;

transferring payload data by the communications adapter in accordance with each injection descriptor in the injection FIFO buffer, incrementing a transfer counter upon completion of each transfer;

determining from counter values whether the pending callback list presently includes callback functions for which transfers of payload data have been completed; and

calling by the AMI any callback functions in the pending callback list for which transfers of payload data have been completed, decrementing the pending callback counter for each callback function called.

2. The apparatus of claim 1 wherein receiving a sequence of data communications instructions further comprises receiving the sequence of data communications instructions through non-blocking calls from the application to the AMI.

3. The apparatus of claim 1 wherein injecting an injection descriptor further comprises incrementing a tail pointer of the injection FIFO buffer to point to an open slot in the injection FIFO buffer.

4. The apparatus of claim 1 wherein transferring payload data further comprises incrementing, upon completion of each transfer, a head pointer of the injection FIFO buffer to point to a next injection descriptor to be processed by the communications adapter.

5. The apparatus of claim 1 further comprising computer program instructions that, when executed by the computer processors, cause the computers in the distributed computing environment to function by determining by the AMI for each data communications instruction that space is available in the injection FIFO buffer of the communications adapter for that instruction's injection descriptor, including determining that a slot is open in the injection FIFO buffer and that a corresponding slot contains a null value in the pending callback list.

6. The apparatus of claim 1 wherein:

the apparatus further comprises computer program instructions that, when executed by the computer processors, cause the computers in the distributed computing environment to function by storing the present value of the of the transfer counter immediately before determining whether the pending callback list presently includes callback functions for which transfers of payload data have been completed; and

determining from counter values whether the pending callback list presently includes callback functions for which transfers of payload data have been completed, further comprises determining whether the present value of the pending callback counter is greater than zero and determining whether the stored value of the transfer counter is greater than a previously-stored value of the transfer counter.

7. A computer program product for completion processing for data communications instructions in a distributed computing environment, the distributed computing environment including a plurality of computers coupled for data communications through communications adapters and an active messaging interface (‘AMI’), the computer program product including a computer readable storage medium, wherein the computer readable storage medium is not a signal, the computer program product comprising computer program instructions that, when installed and executed, cause the parallel computer to function by:

receiving, in the AMI from an application executing on a computer in the distributed computing environment, a sequence of data communications instructions, each instruction specifying a transfer of payload data among computers in the distributed computing environment, at least one of the instructions specifying a callback function;

injecting, by the AMI for each data communications instruction into a slot in an injection FIFO buffer of a data communication adapter, an injection descriptor specifying to the communications adapter the transfer of payload data, the slot in the injection FIFO buffer having a corresponding slot in a pending callback list;

listing, by the AMI in the corresponding slot in the pending callback list for each data communications instruction, any callback function specified by that instruction, incrementing a pending callback counter for each listed callback function;

transferring payload data by the communications adapter in accordance with each injection descriptor in the injection FIFO buffer, incrementing a transfer counter upon completion of each transfer;

determining from counter values whether the pending callback list presently includes callback functions for which transfers of payload data have been completed; and

calling by the AMI any callback functions in the pending callback list for which transfers of payload data have been completed, decrementing the pending callback counter for each callback function called.

8. The computer program product of claim 7 wherein receiving a sequence of data communications instructions further comprises receiving the sequence of data communications instructions through non-blocking calls from the application to the AMI.

9. The computer program product of claim 7 wherein injecting an injection descriptor further comprises incrementing a tail pointer of the injection FIFO buffer to point to an open slot in the injection FIFO buffer.

10. The computer program product of claim 7 wherein transferring payload data further comprises incrementing, upon completion of each transfer, a head pointer of the injection FIFO buffer to point to a next injection descriptor to be processed by the communications adapter.

11. The computer program product of claim 7 further comprising computer program instructions that, when installed and executed, cause the parallel computer to function by determining by the AMI for each data communications instruction that space is available in the injection FIFO buffer of the communications adapter for that instruction's injection descriptor, including determining that a slot is open in the injection FIFO buffer and that a corresponding slot contains a null value in the pending callback list.

12. The computer program product of claim 7 wherein:

the computer program product further comprises computer program instructions that, when installed and executed, cause the parallel computer to function by storing the present value of the of the transfer counter immediately before determining whether the pending callback list presently includes callback functions for which transfers of payload data have been completed; and

determining from counter values whether the pending callback list presently includes callback functions for which transfers of payload data have been completed, further comprises determining whether the present value of the pending callback counter is greater than zero and determining whether the stored value of the transfer counter is greater than a previously-stored value of the transfer counter.

Assignments (2)
CONFIRMATORY LICENSE Recorded May 12, 2011
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: U.S. DEPARTMENT OF ENERGY
Reel/Frame 026265/0311 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 6, 2011
From: BLOCKSOME, MICHAEL A.; KUMAR, SAMEER; PARKER, JEFFREY J.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 025595/0017 →
Continuity (1)
Related Publication 20120179736A1 · Jul 12, 2012