IP Library Granted Patent US 7,797,445
Granted Patent B2
US 7,797,445 · App. 12/147,058 · Granted Sep 14, 2010

Dynamic network link selection for transmitting a message between compute nodes of a parallel computer

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 7,797,445
App. No.
12/147,058
Granted
Sep 14, 2010
Kind
B2
Abstract

Methods, apparatus, and products are disclosed for dynamic network link selection for transmitting a message between nodes of a parallel computer. The nodes are connected using a data communications network. Each node connects to adjacent nodes in the data communications network through a plurality of network links. Each link provides a different data communication path through the network between the nodes of the parallel computer. Such dynamic link selection includes: identifying, by an origin node, a current message for transmission to a target node; determining, by the origin node, whether transmissions of previous messages to the target node have completed; selecting, by the origin node from the plurality of links for the origin node, a link in dependence upon the determination and link characteristics for the plurality of links for the origin node; and transmitting, by the origin node, the current message to the target node using the selected link.

Claims (52)

1. A method of dynamic network link selection for transmitting a message between compute nodes of a parallel computer, the compute nodes connected using a data communications network, each compute node connected to adjacent compute nodes in the data communications network through a plurality of network links, each network link providing a different data communication path through the network between the compute nodes of the parallel computer, the method comprising:

identifying, by an origin compute node, a current message for transmission to a target compute node;

determining, by the origin compute node, whether transmissions of previous messages to the target compute node have completed;

selecting, by the origin compute node from the plurality of network links for the origin compute node, a network link in dependence upon the determination and link characteristics for the plurality of network links for the origin compute node; and

transmitting, by the origin compute node, the current message to the target compute node using the selected network link.

2. The method of claim 1 wherein:

selecting, by the origin compute node from the plurality of network links for the origin compute node, a network link in dependence upon the determination and link characteristics for the plurality of network links for the origin compute node further comprises selecting a previous network link used to transmit the previous messages if transmissions of previous messages to the target compute node have not completed; and

transmitting, by the origin compute node, the current message to the target compute node using the selected network link further comprises transmitting the current message to the target compute node using the previous network link.

3. The method of claim 1 wherein:

selecting, by the origin compute node from the plurality of network links for the origin compute node, a network link in dependence upon the determination and link characteristics for the plurality of network links for the origin compute node further comprises selecting a new network link if transmissions of previous messages to the target compute node have completed; and

transmitting, by the origin compute node, the current message to the target compute node using the selected network link further comprises transmitting the current message to the target compute node using the new network link.

4. The method of claim 1 wherein determining, by the origin compute node, whether transmissions of previous messages to the target compute node have completed further comprises determining whether a value of a Direct Memory Access (‘DMA’) counter has reached a predetermined value.

5. The method of claim 4 wherein transmitting, by the origin compute node, the current message to the target compute node using the selected network link further comprises incrementing the value of the DMA counter.

6. The method of claim 4 further comprising:

performing, by a DMA engine of the origin compute node in response to transmitting the current message to the target compute node, a remote get operation to retrieve data from the target compute node;

receiving, by the DMA engine of the origin compute node, the data from the target compute node; and

decrementing, by the DMA engine of the origin compute node, the value of the DMA counter in response to receiving the data from the target compute node.

7. The method of claim 1 wherein the parallel computer is comprised of a plurality of compute nodes, the plurality of compute nodes connected together using a plurality of data communications networks, at least one of the data communications network optimized for collective operations, and at least one of the data communications networks optimized for point to point operations.

8. An origin compute node capable of dynamic network link selection for transmitting a message between compute nodes of a parallel computer, the compute nodes connected using a data communications network, each compute node connected to adjacent compute nodes in the data communications network through a plurality of network links, each network link providing a different data communication path through the network between the compute nodes of the parallel computer, the origin compute node comprising one or more computer processors and computer memory operatively coupled to the computer processors, the computer memory having disposed within it computer program instructions capable of:

identifying a current message for transmission to a target compute node;

determining whether transmissions of previous messages to the target compute node have completed;

selecting, from the plurality of network links for the origin compute node, a network link in dependence upon the determination and link characteristics for the plurality of network links for the origin compute node; and

transmitting the current message to the target compute node using the selected network link.

9. The origin compute node of claim 8 wherein:

selecting, from the plurality of network links for the origin compute node, a network link in dependence upon the determination and link characteristics for the plurality of network links for the origin compute node further comprises selecting a previous network link used to transmit the previous messages if transmissions of previous messages to the target compute node have not completed; and

transmitting the current message to the target compute node using the selected network link further comprises transmitting the current message to the target compute node using the previous network link.

10. The origin compute node of claim 8 wherein:

selecting, from the plurality of network links for the origin compute node, a network link in dependence upon the determination and link characteristics for the plurality of network links for the origin compute node further comprises selecting a new network link if transmissions of previous messages to the target compute node have completed; and

transmitting the current message to the target compute node using the selected network link further comprises transmitting the current message to the target compute node using the new network link.

11. The origin compute node of claim 8 wherein:

determining whether transmissions of previous messages to the target compute node have completed further comprises determining whether a value of a Direct Memory Access (‘DMA’) counter has reached a predetermined value;

transmitting the current message to the target compute node using the selected network link further comprises incrementing the value of the DMA counter; and

the computer memory has disposed within it computer program instructions capable of: performing, by a DMA engine of the origin compute node in response to transmitting the current message to the target compute node, a remote get operation to retrieve data from the target compute node; receiving, by the DMA engine of the origin compute node, the data from the target compute node; and

decrementing, by the DMA engine of the origin compute node, the value of the DMA counter in response to receiving the data from the target compute node.

12. A computer program product for dynamic network link selection for transmitting a message between compute nodes of a parallel computer, the compute nodes connected using a data communications network, each compute node connected to adjacent compute nodes in the data communications network through a plurality of network links, each network link providing a different data communication path through the network between the compute nodes of the parallel computer, the computer program product disposed upon a computer readable recordable medium, the computer program product comprising computer program instructions capable of:

identifying, by an origin compute node, a current message for transmission to a target compute node;

determining, by the origin compute node, whether transmissions of previous messages to the target compute node have completed;

selecting, by the origin compute node from the plurality of network links for the origin compute node, a network link in dependence upon the determination and link characteristics for the plurality of network links for the origin compute node; and

transmitting, by the origin compute node, the current message to the target compute node using the selected network link.

13. The computer program product of claim 12 wherein:

selecting, by the origin compute node from the plurality of network links for the origin compute node, a network link in dependence upon the determination and link characteristics for the plurality of network links for the origin compute node further comprises selecting a previous network link used to transmit the previous messages if transmissions of previous messages to the target compute node have not completed; and

transmitting, by the origin compute node, the current message to the target compute node using the selected network link further comprises transmitting the current message to the target compute node using the previous network link.

14. The computer program product of claim 12 wherein:

selecting, by the origin compute node from the plurality of network links for the origin compute node, a network link in dependence upon the determination and link characteristics for the plurality of network links for the origin compute node further comprises selecting a new network link if transmissions of previous messages to the target compute node have completed; and

transmitting, by the origin compute node, the current message to the target compute node using the selected network link further comprises transmitting the current message to the target compute node using the new network link.

15. The computer program product of claim 12 wherein determining, by the origin compute node, whether transmissions of previous messages to the target compute node have completed further comprises determining whether a value of a Direct Memory Access (‘DMA’) counter has reached a predetermined value.

16. The computer program product of claim 15 wherein transmitting, by the origin compute node, the current message to the target compute node using the selected network link further comprises incrementing the value of the DMA counter.

17. The computer program product of claim 15 further comprising computer program instructions capable of:

performing, by a DMA engine of the origin compute node in response to transmitting the current message to the target compute node, a remote get operation to retrieve data from the target compute node;

receiving, by the DMA engine of the origin compute node, the data from the target compute node; and

decrementing, by the DMA engine of the origin compute node, the value of the DMA counter in response to receiving the data from the target compute node.

18. The computer program product of claim 12 wherein the parallel computer is comprised of a plurality of compute nodes, the plurality of compute nodes connected together using a plurality of data communications networks, at least one of the data communications network optimized for collective operations, and at least one of the data communications networks optimized for point to point operations.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2015
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: LINKEDIN CORPORATION
Reel/Frame 035201/0479 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 28, 2009
From: ARCHER, CHARLES J.; BLOCKSOME, MICHAEL A.; SMITH, BRIAN E.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 022605/0310 →