IP Library › Granted Patent US 12,335,372
Granted Patent B2
US 12,335,372 · App. 18/176,521 · Granted Jun 17, 2025

Common symmetric memory key for parallel processes

Inventors: Manjunath Gorentla Venkata (San Ramon, CA); Artem Yurievich Polyakov (San Francisco, CA); Subhadeep Bhattacharya (Santa Clara, CA); Gil Bloch (Zichron Yaakov, IL); William Ferrol Aderholdt (Brentwood, CA)
Assignee: Mellanox Technologies, Ltd.
H04L9/0819H04L9/14H04L2209/125
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 12,335,372
App. No.
18/176,521
Granted
Jun 17, 2025
Kind
B2
Abstract

In one embodiment, a parallel computing system includes a key manager to assign symmetric memory keys to parallel computing jobs including a first symmetric memory key to a first parallel computing job, and a plurality of server nodes to execute parallel computing processes of the first parallel computing job, and cause registration of host memory regions of the server nodes with the assigned first symmetric memory key in corresponding network interface controllers of the server nodes so that different ones of the host memory regions are accessible with the first symmetric memory key by remote ones of the server nodes using remote direct memory access.

Claims (136)

1. A parallel computing system, comprising:

a plurality of server nodes including respective processors configured to:

execute parallel computing processes of the first parallel computing job, symmetric memory keys being assigned by a key manager to parallel computing jobs including a first symmetric memory key to a first parallel computing job; and

cause registration of host memory regions of the server nodes with the assigned first symmetric memory key in corresponding network interface controllers of the server nodes so that different ones of the host memory regions are accessible with the first symmetric memory key by remote ones of the server nodes using remote direct memory access, wherein:

the server nodes include: a first server node including a first host memory and a first network interface controller; and a second server node including a second processor a second host memory, and a second interface controller;

the first network interface controller and the second interface controller are configured to provide network access to the first server node and the second server node, respectively;

the first network interface controller is configured to perform a first registration of a first memory region of the first host memory with the first symmetric memory key; and

the second network interface controller is configured to perform a second registration of a second memory region of the second host memory with the first symmetric memory key.

2. The system according to claim 1 , wherein the first server node includes a first processor being configured to access one of the host memory regions of the second server node using remote direct memory access with the first symmetric memory key.

3. The system according to claim 1 , wherein:

the first server node includes a first processor configured to:

execute a first parallel computing process of the first parallel computing job;

receive the first symmetric memory key;

select the first memory region of the first host memory; and

provide the first symmetric memory key and an identification of the first memory region to the first network interface controller;

the first network interface controller is configured to receive the first symmetric memory key and the identification of the first memory region;

the second server node includes a second processor is configured to:

execute a second parallel computing process of the first parallel computing job;

receive the first symmetric memory key;

select the second memory region of the second host memory; and

provide the first symmetric memory key and an identification of the second memory region to the second network interface controller; and

the second network interface controller is configured to receive the first symmetric memory key and the identification of the second memory region.

4. The system according to claim 3 , wherein:

the first network interface controller is configured to receive from a third parallel computing process of the first parallel computing job a first remote direct memory access request including the first symmetric memory key; and

the second network interface controller is configured to receive from a fourth parallel computing process of the first parallel computing job a second remote direct memory access request including the first symmetric memory key.

5. The system according to claim 3 , wherein:

the first network interface controller is configured to:

receive from a third parallel computing process of the first parallel computing job a first remote direct memory access request including the first symmetric memory key;

find the first memory region based on the first symmetric memory key included in the first remote direct memory access request and the first registration; and

write data to, or retrieve data from, the first memory region of the first host memory responsively to the found first memory region and the first remote direct memory access request; and

the second network interface controller is configured to:

receive from a fourth parallel computing process of the first parallel computing job a second remote direct memory access request including the first symmetric memory key;

find the second memory region based on the first symmetric memory key included in the second remote direct memory access request and the second registration; and

write data to, or retrieve data from, the second memory region of the second host memory responsively to the found second memory region and the second remote direct memory access request.

6. The system according to claim 3 , wherein:

the first parallel computing process includes a first parallel computing model and a first network library;

the first processor is configured to execute the first parallel computing model to: receive the first symmetric memory key; select the first memory region of the first host memory; and provide the first symmetric memory key and the identification of the first memory region to the first network library;

the first processor is configured to execute the first network library to provide the first symmetric memory key and the identification of the first memory region to the first network interface controller;

the second parallel computing process includes a second parallel computing model and a second network library;

the second processor is configured to execute the second parallel computing model is to: receive the first symmetric memory key; select the second memory region of the second host memory; and provide the first symmetric memory key and the identification of the second memory region to the second network library; and

the second processor is configured to execute the second network library to provide the first symmetric memory key and the identification of the second memory region to the second network interface controller.

7. The system according to claim 1 , further comprising the key manager is configured to: maintain a list of which of the symmetric memory keys are unassigned to active parallel computing jobs and which of the symmetric memory keys are assigned to the active parallel computing jobs; and assign one of the unassigned symmetric memory keys to the first parallel computing job.

8. The system according to claim 7 , further comprising a resource manager configured to:

establish the parallel computing processes of the first parallel computing job on the server nodes;

request an unassigned symmetric memory key from the key manager for the first parallel computing job;

receive the first symmetric memory key from the key manager for the first parallel computing job; and

provide the first symmetric memory key to the parallel computing processes of the first parallel computing job running on the server nodes, wherein the key manager is configured to indicate in the list that the first symmetric memory key is assigned to the first parallel computing job.

9. The system according to claim 1 , wherein the key manager is configured to assign the same symmetric memory key to two different parallel computing jobs which do not use one or more common ones of the network interface controllers.

10. The system according to claim 1 , wherein the key manager is configured to assign multiple symmetric memory keys to the first parallel computing job, wherein each of the server nodes is to cause registration of the multiple memory keys with corresponding multiple memory regions in a corresponding one of the network interface controllers.

11. A server node device, comprising:

a network interface controller to send and receive packets over a network; and

a host memory; and

a processor to:

execute a first parallel computing process of a parallel computing job;

receive a symmetric memory key from a key manager;

cause registration of a host memory region of the host memory with the symmetric memory key in the network interface controller so that the host memory region is accessible via the network interface controller by different remote server nodes with the symmetric memory key using remote direct memory access;

send a first remote direct memory access request including the symmetric memory key to access a host memory of a first remote server node executing a second parallel computing process of the parallel computing job with the symmetric memory key; and

send a second remote direct memory access request including the symmetric memory key to access a host memory of a second remote server node executing a third parallel computing process of the parallel computing job with the symmetric memory key.

12. The device according to claim 11 , wherein:

the processor is to:

select the memory region of the host memory; and

provide the symmetric memory key and an identification of the memory region to the network interface controller; and

the network interface controller is to:

receive the symmetric memory key and the identification of the memory region; and

perform the registration of the memory region with the symmetric memory key.

13. The device according to claim 12 , wherein the first parallel computing process includes a first parallel computing model and a first network library.

14. The device according to claim 13 , wherein the processor is configured to execute:

the first parallel computing model to:

receive the symmetric memory key;

select the memory region of the host memory; and

provide the symmetric memory key and the identification of the memory region to the first network library; and

the first network library to provide the symmetric memory key and the identification of the memory region to the network interface controller.

15. A parallel computing method, comprising:

assigning symmetric memory keys to parallel computing jobs including a first symmetric memory key to a first parallel computing job;

executing parallel computing processes of the first parallel computing job;

causing registration of host memory regions of server nodes with the assigned first symmetric memory key in corresponding network interface controllers of the server nodes so that different ones of the host memory regions are accessible with the first symmetric memory key by remote ones of the server nodes using remote direct memory access;

providing network access by a first network interface controller to a first server node;

providing network access by a second network interface controller to a second server node;

performing, by the first network interface controller, a first registration of a first memory region of a first host memory of the first server node with the first symmetric memory key; and

performing, by the second network interface controller, a second registration of a second memory region of a second host memory of the second server node with the first symmetric memory key.

16. The method according to claim 15 , further comprising accessing, by a first server node, a host memory region of a second server node using remote direct memory access with the first symmetric memory key.

17. The method according to claim 15 , further comprising:

by a first server node:

executing a first parallel computing process of the first parallel computing job;

receiving the first symmetric memory key;

selecting the first memory region of a first host memory of the first server node; and

providing the first symmetric memory key and an identification of the first memory region to a first network interface controller of the first server node;

by the first network interface controller receiving the first symmetric memory key and the identification of the first memory region;

by a second server node:

executing a second parallel computing process of the first parallel computing job;

receiving the first symmetric memory key;

selecting the second memory region of a second host memory of the second server node; and

providing the first symmetric memory key and an identification of the second memory region to a second network interface controller of the second server node; and

by the second network interface controller receiving the first symmetric memory key and the identification of the second memory region.

18. The method according to claim 17 , further comprising:

receiving, by the first network interface controller, from a third parallel computing process of the first parallel computing job a first remote direct memory access request including the first symmetric memory key; and

receiving, by the second network interface controller, from a fourth parallel computing process of the first parallel computing job a second remote direct memory access request including the first symmetric memory key.

19. The method according to claim 17 , further comprising:

by the first network interface controller:

receiving from a third parallel computing process of the first parallel computing job a first remote direct memory access request including the first symmetric memory key;

finding the first memory region based on the first symmetric memory key included in the first remote direct memory access request and the first registration; and

writing data to, or retrieving data from, the first memory region of the first host memory responsively to the found first memory region and the first remote direct memory access request; and

by the second network interface controller:

receiving from a fourth parallel computing process of the first parallel computing job a second remote direct memory access request including the first symmetric memory key;

finding the second memory region based on the first symmetric memory key included in the second remote direct memory access request and the second registration; and

writing data to, or retrieving data from, the second memory region of the second host memory responsively to the found second memory region and the second remote direct memory access request.

20. The method according to claim 17 , wherein the first parallel computing process includes a first parallel computing model and a first network library, the second parallel computing process including a second parallel computing model and a second network library, the method further comprising:

by the first parallel computing model: receiving the first symmetric memory key; selecting the first memory region of the first host memory; and providing the first symmetric memory key and the identification of the first memory region to the first network library;

providing, by the first network library, the first symmetric memory key and the identification of the first memory region to the first network interface controller;

by the second parallel computing model: receiving the first symmetric memory key; selecting the second memory region of the second host memory; and providing the first symmetric memory key and the identification of the second memory region to the second network library; and

providing, by the second network library, the first symmetric memory key and the identification of the second memory region to the second network interface controller.

21. The method according to claim 17 , further comprising:

maintaining a list of which of the symmetric memory keys are unassigned to active parallel computing jobs and which of the symmetric memory keys are assigned to the active parallel computing jobs; and

assigning one of the unassigned symmetric memory keys to the first parallel computing job.

22. The method according to claim 21 , further comprising:

establishing the parallel computing processes of the first parallel computing job on the server nodes;

requesting an unassigned symmetric memory key from a key manager for the first parallel computing job;

receiving the first symmetric memory key from the key manager for the first parallel computing job;

providing the first symmetric memory key to the parallel computing processes of the first parallel computing job running on the server nodes; and

indicating in the list that the first symmetric memory key is assigned to the first parallel computing job.

23. The method according to claim 15 , further comprising assigning the same symmetric memory key to two different parallel computing jobs which do not use one or more common ones of the network interface controllers.

24. The method according to claim 15 , further comprising:

assigning multiple symmetric memory keys to the first parallel computing job; and

causing registration of the multiple memory keys with corresponding multiple memory regions in a corresponding one of the network interface controllers.

25. A parallel computing method, comprising:

sending and receiving packets over a network;

executing a first parallel computing process of a parallel computing job;

receiving a symmetric memory key from a key manager;

causing registration of a host memory region of a host memory with the symmetric memory key in a network interface controller so that the host memory region is accessible via the network interface controller by different remote server nodes with the symmetric memory key using remote direct memory access;

sending a first remote direct memory access request including the symmetric memory key to access a host memory of a first remote server node executing a second parallel computing process of the parallel computing job with the symmetric memory key; and

sending a second remote direct memory access request including the symmetric memory key to access a host memory of a second remote server node executing a third parallel computing process of the parallel computing job with the symmetric memory key.

26. The method according to claim 25 , further comprising:

selecting the memory region of the host memory;

providing the symmetric memory key and an identification of the memory region to the network interface controller;

receiving, by the network interface controller, the symmetric memory key and the identification of the memory region; and

performing the registration of the memory region with the symmetric memory key.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 1, 2023
From: VENKATA, MANJUNATH GORENTLA; POLYAKOV, ARTEM YURIEVICH; BHATTACHARYA, SUBHADEEP; BLOCH, GIL; ADERHOLDT, WILLIAM FERROL
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 062837/0981 →
Continuity (1)
Related Publication 20240297781A1 · Sep 5, 2024
References Cited (8)
US 11792003B2 · Zheng · 2023 [cited by examiner]
US 20130185381A1 · Aho · 2013 [cited by examiner]
US 20160239430A1 · Tsirkin · 2016 [cited by examiner]
US 20190384923A1 · Leitao · 2019 [cited by examiner]
US 20200242258A1 · Smith · 2020 [cited by examiner]
Taranov, Konstantin, et al. “{sRDMA}—Efficient {NIC-based} Authentication and Encryption for Remote Direct Memory Access.” 2020 USENIX Annual Technical Conference (USENIX ATC 20). (Year: 2020). [cited by examiner]
Schuh, Henry N., et al. “Xenic: SmartNIC-accelerated distributed transactions.” Proceedings of the ACM SIGOPS 28th Symposium on Operating Systems Principles. (Year: 2021). [cited by examiner]
Diamond, Noah, Scott Graham, and Gilbert Clark. “Securing InfiniBand traffic with BlueField-2 data processing units.” International Conference on Critical Infrastructure Protection. Cham: Springer Nature Switzerland. (Y… [cited by examiner]