IP Library › Granted Patent US 11,210,089
Granted Patent B2
US 11,210,089 · App. 16/508,769 · Granted Dec 28, 2021

Vector send operation for message-based communication

Inventors: John L. Byrne (Palo Alto, CA); Harumi Kuno (Palo Alto, CA); Jeffrey Drummond (Palo Alto, CA)
Assignee: Hewlett Packard Enterprise Development LP
G06F9/30036G06F9/544G06F9/546G06F13/28G06F13/4027
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 11,210,089
App. No.
16/508,769
Granted
Dec 28, 2021
Kind
B2
Abstract

Methods and systems for conducting vector send operations are provided. The processor of a sender node receives a request to perform a collective send operation (e.g., MPI_Broadcast) from a user application, requesting a copy of data in one or more send buffers by sent to each of a plurality of destinations in a destination vector. The processor invokes a vector send operation from a software communications library, placing a remote enqueue atomic send command for each destination node of the destination vector in an entry of a transmit data mover (XDM) command queue in a single call. The processor executes all of the commands in the XDM command queue and writes the data in the one or more send buffers into each receive queue of each destination identified in the destination vector.

Claims (68)

1. A method comprising:

receiving, by a processor of a sender node, a request for a collective send operation from a user application, the collective send operation requesting a copy of data in one or more send buffers be sent to each of a plurality of destinations in a destination vector;

invoking, by the processor of the sender node, a vector send operation from a software communications library;

placing, by the processor of the sender node, a remote enqueue atomic send command for each destination node of the destination vector in an entry of a transmit data mover (XDM) command queue;

executing, by the processor of the sender node, all remote enqueue atomic send commands in the XDM command queue; and

writing, by the processor of the sender node, the data in the one or more send buffers in each receive queue of each destination node identified in the destination vector.

2. The method of claim 1 , wherein the destination vector comprises a list of identifiers for each receive queue of each destination address identified by the user application.

3. The method of claim 1 , wherein the destination vector comprises a list of identifiers for each receive queue of each destination address identified through a discovery phase.

4. The method of claim 1 , wherein receiving the request for the collective send operation comprises receiving, by the processor of the sender node, the destination vector and one or more send buffers from the user application.

5. The method of claim 1 , wherein the request for the collective send operation comprises an MPI_Broadcast call.

6. The method of claim 1 , further comprising:

determining, by the processor of the sender node, a send buffer size of one or more send buffers identified in the request from the user application;

comparing, by the processor of the sender node, if the send buffer size exceeds a buffer size threshold; and

in response to determining the send buffer size does exceed the buffer size threshold:

allocating additional command queue resources to use for the vector send operation;

breaking up the data in the one or more send buffers into a plurality of chunks; and

placing a remote enqueue atomic send command for each chunk of the plurality of chunks in an entry of a transmit data mover (XDM) command queue, wherein each destination node of the destination vector is associated with a plurality of entries equal to the plurality of chunks.

7. The method of claim 6 , further comprising in response to determining the send buffer size does not exceed the buffer size threshold, placing, by a direct memory access (DMA) engine of the sender node, a remote enqueue atomic send command for each destination node of the destination vector in an entry of the XDM command queue.

8. The method of claim 1 , further comprising:

determining, by the processor of the sender node, a data payload size of data associated with the one or more send buffers;

comparing the data payload size with an in-line message threshold; and

in response to determining the data payload size does exceed the in-line message threshold, sending the data associated with the one or more send buffers by a generic send operation.

9. The method of claim 8 , further comprising in response to determining the data payload size does not exceed the in-line message threshold:

determining a number of total destinations contained in the destination vector;

comparing the number of total destination and a destination threshold; and

in response to determining the number of total destinations exceeds the destination threshold, sending the data associated with the one or more send buffers by a vector send operation.

10. The method of claim 1 , further comprising:

determining, by a processor of a destination node, if the data from the sender node was received in the receive queue of the destination node; and

in response to determining the data from the sender node was received in the receive queue, reading by the processor of the destination node the data from the receive queue.

11. The method of claim 10 , further comprising, in response to determining the data from the sender node was not received in the receive queue:

generating, by the processor of the destination node, a failure notification; and

sending the failure notification to the sender node.

12. A system comprising:

a sender node and a plurality of destination nodes communicatively coupled over a networking fabric;

the sender node configured to:

receive, by a processor of the sender node, a request for a collective send operation from a user application, the collective send operation requesting a copy of data in one or more send buffers be sent to each of a plurality of destinations in a destination vector;

invoke, by the processor of the sender node, a vector send operation from a software communications library;

place, by the processor of the sender node, a remote enqueue atomic send command for each destination node of the destination vector in an entry of a transmit data mover (XDM) command queue;

execute, by the processor of the sender node, all remote enqueue atomic send commands in the XDM command queue; and

write, by the processor of the sender node, the data in the one or more send buffers in each receive queue of each destination node identified in the destination vector;

each of the destination nodes of the plurality of destination nodes configured to:

determine, by a processor of the destination node, if the data from the sender node was received in the receive queue of the destination node; and

in response to determining the data from the sender node was received in the receive queue, read by the processor of the destination node the data from the receive queue.

13. The system of claim 12 , wherein the destination vector comprises a list of identifiers for each receive queue of each destination address identified by the user application.

14. The system of claim 12 , wherein the destination vector comprises a list of identifiers for each receive queue of each destination address identified through a discovery phase.

15. The system of claim 12 , wherein receiving the request for the collective send operation comprises receiving, by the processor of the sender node, the destination vector and one or more send buffers from the user application.

16. The system of claim 12 , further comprising:

determine, by the processor of the sender node, a send buffer size of one or more send buffers identified in the request from the user application;

compare, by the processor of the sender node, if the send buffer size exceeds a buffer size threshold; and

in response to determining the send buffer size does exceed the buffer size threshold:

allocate additional send command queue resources to use for the vector send operation;

break up the data in the one or more send buffers into a plurality of chunks; and

place a remote enqueue atomic send command for each chunk of the plurality of chunks in an entry of a transmit data mover (XDM) command queue, wherein each destination node of the destination vector is associated with a plurality of entries equal to the plurality of chunks.

17. The system of claim 12 , further comprising:

determine, by the processor of the sender node, a data payload size of data associated with the one or more send buffers;

compare the data payload size with an in-line message threshold; and

in response to determining the data payload size does exceed the in-line message threshold, send the data associated with the one or more send buffers by a generic send operation.

18. The system of claim 17 , further comprising in response to determining the data payload size does not exceed the in-line message threshold:

determine a number of total destinations contained in the destination vector;

compare the number of total destination and a destination threshold; and

in response to determining the number of total destinations exceeds the destination threshold, send the data associated with the one or more send buffers by a vector send operation.

19. The system of claim 12 , wherein the sender node further comprises a sender node bridge, the destination node further comprises a destination node bridge, and the sender node and the destination node are communicatively coupled over the network fabric through the sender node bridge and the destination node bridge.

20. A non-transitory machine-readable storage medium storing thereon instructions that when executed by a processor of a sender node causes the processor of the sender node to:

receive a request for a collective send operation from a user application, the collective send operation requesting a copy of data in one or more send buffers be sent to each of a plurality of destinations in a destination vector;

invoke a vector send operation from a software communications library;

place a remote enqueue atomic send command for each destination node of the destination vector in an entry of a transmit data mover (XDM) command queue;

execute all remote enqueue atomic send commands in the XDM command queue; and

write the data in the one or more send buffers in each receive queue of each destination node identified in the destination vector.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 11, 2019
From: BYRNE, JOHN L.; KUNO, HARUMI; DRUMMOND, JEFFREY
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 049727/0230 →
Continuity (1)
Related Publication 20210011720A1 · Jan 14, 2021