# US 2013/0159448 A1 · Optimized Data Communications In A Parallel Computer

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2013/0159448 A1
- Document ID: US20130159448A1
- Status: Published application
- Kind: A1
- Application number: 13/325,440
- Filed: 2011-12-14
- Published: 2013-06-20
- Earliest claimed: 2011-12-14
- Assignees: International Business Machines Corporation
- Inventors: Daniel A. Faraj
- Web page: https://patentgrep.com/patent/US20130159448A1

## CPC

- G06F 15/1735: {Network adapters, e.g. SCI, Myrinet (protocol engines H04L69/12)}
- G06F 15/167: using a common memory, e.g. mailbox
- G06F 15/17387: {Three dimensional, e.g. hypercubes}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A parallel computer includes nodes that include a network adapter that couples the node in a point-to-point network and supports communications in opposite directions of each dimension. Optimized communications include: receiving, by a network adapter of a receiving compute node, a packet—from a source direction—that specifies a destination node and deposit hints. Each hint is associated with a direction within which the packet is to be deposited. If a hint indicates the packet to be deposited in the opposite direction: the adapter delivers the packet to an application on the receiving node; forwards the packet to a next node in the opposite direction if the receiving node is not the destination; and forwards the packet to a node in a direction of a subsequent dimension if the hints indicate that the packet is to be deposited in the direction of the subsequent dimension.

## Claims

### Claim at position 1

1-6. (canceled)

### Claim 7

An apparatus for optimized data communications in a parallel computer, the parallel computer comprising a plurality of compute nodes, each compute node comprising a network adapter, the network adapters coupling the compute nodes in a multi-dimension point-to-point network for data communications, each network adapter supporting communications in opposite directions of each dimension, the apparatus comprising a computer processor, a computer memory operatively coupled to the computer processor, the computer memory having disposed within it computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of:
receiving, by a network adapter of a receiving compute node, a data communications packet from a source direction of a source dimension, the packet specifying a compute node as a destination of the packet and specifying one or more deposit hints, each separate deposit hint associated uniquely with a direction of a dimension of the point-to-point network and each deposit hint indicating that the packet is to be deposited at each compute node in the associated direction on a path to the destination compute node;
if a deposit hint indicates that the packet is to be deposited at compute nodes in the opposite direction of the source direction in the source dimension:
delivering, by the network adapter, the packet to an application executing on the receiving compute node;
forwarding the packet to a next compute node in the opposite direction of the source dimension only if the packet does not specify the receiving compute node as the destination of the packet; and
forwarding the packet to a next compute node in a direction of a subsequent dimension only if the deposit hints indicate that the packet is to be deposited at compute nodes in the direction of the subsequent dimension.

### Claim 8 (depends on 7)

The apparatus of claim 7, wherein forwarding the packet to a next compute node in the opposite direction of the source dimension and forwarding the packet to a next compute node in a direction of subsequent dimension are carried out in parallel.

### Claim 9 (depends on 7)

The apparatus of claim 7, wherein delivering, by the network adapter, the packet to an application executing on the receiving compute node further comprises storing, by the network adapter, the packet directly in the application's allocated memory space.

### Claim 10 (depends on 7)

The apparatus of claim 7, wherein delivering, by the network adapter, the packet to an application executing on the receiving compute node further comprises delivering, by the network adapter, to a Direct Memory Access (‘DMA’) engine, the packet, wherein the DMA engine is configured to store the packet through one or more DMA operations in the application's allocated memory space.

### Claim 11 (depends on 7)

The apparatus of claim 7, wherein each deposit hint comprises a binary bit having a value of one in a bit pattern, where all other bits of the bit pattern have a value of zero.

### Claim 12 (depends on 11)

The apparatus of claim 11, wherein forwarding the packet to a next compute node in a direction of a subsequent dimension further comprises:
identifying the direction of the subsequent dimension by identifying a next bit in the bit pattern to have a value of one and determining the direction and dimension represented by the bit.

### Claim 13

A computer program product for optimized data communications in a parallel computer, the parallel computer comprising a plurality of compute nodes, each compute node comprising a network adapter, the network adapters coupling the compute nodes in a multi-dimension point-to-point network for data communications, each network adapter supporting communications in opposite directions of each dimension, the computer program product disposed upon a computer readable medium, the computer program product comprising computer program instructions that, when executed, cause a computer to carry out the steps of:
receiving, by a network adapter of a receiving compute node, a data communications packet from a source direction of a source dimension, the packet specifying a compute node as a destination of the packet and specifying one or more deposit hints, each separate deposit hint associated uniquely with a direction of a dimension of the point-to-point network and each deposit hint indicating that the packet is to be deposited at each compute node in the associated direction on a path to the destination compute node;
if a deposit hint indicates that the packet is to be deposited at compute nodes in the opposite direction of the source direction in the source dimension:
delivering, by the network adapter, the packet to an application executing on the receiving compute node;
forwarding the packet to a next compute node in the opposite direction of the source dimension only if the packet does not specify the receiving compute node as the destination of the packet; and
forwarding the packet to a next compute node in a direction of a subsequent dimension only if the deposit hints indicate that the packet is to be deposited at compute nodes in the direction of the subsequent dimension.

### Claim 14 (depends on 13)

The computer program product of claim 13, wherein forwarding the packet to a next compute node in the opposite direction of the source dimension and forwarding the packet to a next compute node in a direction of subsequent dimension are carried out in parallel.

### Claim 15 (depends on 13)

The computer program product of claim 13, wherein delivering, by the network adapter, the packet to an application executing on the receiving compute node further comprises storing, by the network adapter, the packet directly in the application's allocated memory space.

### Claim 16 (depends on 13)

The computer program product of claim 13, wherein delivering, by the network adapter, the packet to an application executing on the receiving compute node further comprises delivering, by the network adapter, to a Direct Memory Access (‘DMA’) engine, the packet, wherein the DMA engine is configured to store the packet through one or more DMA operations in the application's allocated memory space.

### Claim 17 (depends on 13)

The computer program product of claim 13, wherein each deposit hint comprises a binary bit having a value of one in a bit pattern, where all other bits of the bit pattern have a value of zero.

### Claim 18 (depends on 17)

The computer program product of claim 17, wherein forwarding the packet to a next compute node in a direction of a subsequent dimension further comprises:
identifying the direction of the subsequent dimension by identifying a next bit in the bit pattern to have a value of one and determining the direction and dimension represented by the bit.

### Claim 19 (depends on 13)

The computer program product of claim 13, wherein the computer readable comprises a storage medium.

### Claim 20 (depends on 13)

The computer program product of claim 13, wherein the computer readable comprises a signal medium.
