IP Library Granted Patent US 9,742,855
Granted Patent B2
US 9,742,855 · App. 14/834,443 · Granted Aug 22, 2017

Hybrid tag matching

Inventors: Shahaf Shuler (Karkom, IL); Noam Bloch (Bat Shlomo, IL); Ofer Hayut (Kvutzat Yavne, IL); Richard Graham (Knoxville, TN); Ariel Shahar (Jerusalem, IL); Yossef Itigin (Ashdod, IL)
Assignee: MELLANOX TECHNOLOGIES, LTD.
H04L67/26H04L49/9068H04L67/10H04L67/1093H04L67/1097H04L69/06
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 9,742,855
App. No.
14/834,443
Granted
Aug 22, 2017
Kind
B2
Abstract

A method for communication includes posting, by a software process, a set of buffers in a memory of a host processor and creating in the memory a list of labels associated respectively with the buffers. The software process pushes a first part of the list to a network interface controller (NIC), while retaining a second part of the list in the memory under control of the software process. Upon receiving a message containing a label, sent over a network, the NIC compares the label to the labels in the first part of the list and, upon finding a match to the label, writes data conveyed by the message to a buffer in the memory. Upon a failure to find the match in the first part of the list, the NIC passes the message from the NIC to the software process for handling using the second part of the list.

Claims (33)

1. A method for communication, comprising:

establishing a connection, in accordance with a predefined data exchange protocol, via a network between a software process running on a host processor at a first node of the network and a peer process running on a second node of the network;

posting, by the software process, a set of buffers in a memory of the host processor and creating in the memory a list of labels associated respectively with the buffers in accordance with the protocol;

pushing a first part of the list to a network interface controller (NIC) that connects the host processor to the network, while retaining a second part of the list in the memory under control of the software process;

receiving in the NIC a message, containing a label, sent over the network by the peer process in accordance with the protocol;

comparing the label, in the NIC, to the labels in the first part of the list and, upon finding a match to the label, writing data conveyed by the message from the NIC to a buffer in the memory that is associated with the label and submitting a notification to the software process;

upon a failure to find the match in the first part of the list, passing the message from the NIC to the software process for handling; and

comparing the label, by the software process, to the labels in the second part of the list, and upon finding a match to the label, writing the data to the buffer in the memory that is associated with the label.

2. The method according to claim 1 , wherein pushing the first part of the list comprises submitting a head of the list to the NIC, and wherein comparing the label in the NIC comprises searching the labels in the head of the list.

3. The method according to claim 2 , wherein submitting the head of the list comprises, after the NIC has consumed one or more of the labels, pushing at least one further label from the list to the NIC.

4. The method according to claim 1 , and comprising, when the NIC finds the match to the label in the first part of the list, submitting a completion report from the NIC to the software process to indicate that the label has been consumed, and updating the list of the labels posted by the software process in response to the completion report.

5. The method according to claim 4 , wherein writing the data comprises, after finding the match in the NIC, performing an remote direct memory access (RDMA) operation by the NIC in order to retrieve the data from the second node, and after writing the retrieved data to the buffer, submitting a further completion report from the NIC to the software process to indicate that the data are available in the buffer.

6. The method according to claim 1 , wherein establishing the connection comprises communicating, in accordance with the data exchange protocol, between the software process running at the first node and a plurality of peer processes running on other nodes of the network, and

wherein posting the set of buffers and the list of labels comprises sharing the buffers and the labels among the plurality of the peer processes.

7. The method according to claim 6 , wherein comparing the label in the NIC comprises maintaining on the NIC a shared receive queue, for data packets received over the network from any of the plurality of the peer processes, and using the labels in the first part of the list to match to the data packets in the shared receive queue.

8. The method according to claim 1 , wherein the data exchange protocol comprises a Message Passing Interface (MPI) protocol, and wherein the labels associated with the buffers and contained in the received message comprise MPI tags.

9. The method according to claim 8 , wherein receiving the message comprises receiving a ready-to-send (RTS) message from the peer process in accordance with a Rendezvous protocol, and wherein writing the data from the NIC comprises issuing, in response to the RTS message, an remote direct memory access (RDMA) read request from the NIC to the second node, and writing the data to the buffer upon receiving an RDMA read response containing the data from the second node.

10. Communication apparatus, comprising:

a memory;

a host processor, which is coupled to the memory and is configured to run a software process; and

a network interface controller (NIC), which connects the host processor to a network,

wherein the software process is configured to establish a connection, in accordance with a predefined data exchange protocol, via the network with a peer process running on a remote node of the network, and to post a set of buffers in the memory and create in the memory a list of labels associated respectively with the buffers in accordance with the protocol, and to push a first part of the list to the NIC, while retaining a second part of the list in the memory under control of the software process, and

wherein the NIC is configured to receive a message, containing a label, sent over the network by the peer process in accordance with the protocol and to compare the label to the labels in the first part of the list and, upon finding a match to the label, to write data conveyed by the message to a buffer in the memory that is associated with the label and to submit a notification to the software process, and upon a failure to find the match in the first part of the list, to pass the message to the software process for handling, and

wherein the software process is configured, upon receiving the message passed by the NIC, to compare the label to the labels in the second part of the list, and upon finding a match to the label, to write the data to the buffer in the memory that is associated with the label.

11. The apparatus according to claim 10 , wherein the first part of the list that is pushed to the NIC comprises a head of the list, and wherein the NIC is configured to search for the match in the head of the list.

12. The apparatus according to claim 11 , wherein the software process is configured to push at least one further label from the list to the NIC after the NIC has consumed one or more of the labels.

13. The apparatus according to claim 10 , wherein the NIC is configured, upon finding the match to the label in the first part of the list, to submit a completion report to the software process to indicate that the label has been consumed, and to update the list of the labels posted by the software process in response to the completion report.

14. The apparatus according to claim 13 , wherein the NIC is configured, after finding the match, to perform an RDMA operation in order to retrieve the data from the remote node, and after writing the retrieved data to the buffer, to submit a further completion report to the software process to indicate that the data are available in the buffer.

15. The apparatus according to claim 10 , wherein the software process is configured, in accordance with the data exchange protocol, to communicate with a plurality of peer processes running on other nodes of the network, and

wherein the buffers and the labels posted by the software process are shared among the plurality of the peer processes.

16. The apparatus according to claim 15 , wherein the NIC is configured to maintain a shared receive queue for data packets received over the network from any of the plurality of the peer processes, and to use the labels in the first part of the list to match to the data packets in the shared receive queue.

17. The apparatus according to claim 10 , wherein the data exchange protocol comprises a Message Passing Interface (MPI) protocol, and wherein the labels associated with the buffers and contained in the received message comprise MPI tags.

18. The apparatus according to claim 17 , wherein the message received from the peer process comprises a ready-to-send (RTS) message in accordance with a Rendezvous protocol, and wherein the NIC is configured to issue, in response to the RTS message, an remote direct memory access (RDMA) read request to the second node, and to write the data to the buffer upon receiving an RDMA read response containing the data from the second node.

Assignments (4)
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 37900/0720 Recorded Jul 13, 2018
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 046542/0792 →
PATENT SECURITY AGREEMENT Recorded Feb 24, 2016
From: MELLANOX TECHNOLOGIES, LTD.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 037900/0720 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 13, 2016
From: ITIGIN, YOSSEF
To: MELLANOX TECHNOLOGIES LTD.
Reel/Frame 037471/0704 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 25, 2015
From: SHULER, SHAHAF; BLOCH, NOAM; HAYUT, OFER; GRAHAM, RICHARD; SHAHAR, ARIEL
To: MELLANOX TECHNOLOGIES LTD.
Reel/Frame 036406/0793 →
Continuity (2)
Provisional Application 62045606 · Sep 4, 2014
Related Publication 20160072906A1 · Mar 10, 2016