IP Library Granted Patent US 10,262,390
Granted Patent B1
US 10,262,390 · App. 15/487,887 · Granted Apr 16, 2019

Managing access to a resource pool of graphics processing units under fine grain control

Inventors: Yifan Sun (Abington, MA); Layne Peng (Shanghai, CN); Robert A. Lincourt, Jr. (Pawtucket, RI); John Cardente (Milford, MA); Junping Zhao (Beijing, CN)
Assignee: EMC IP Holding Company LLC
G06T1/20G06F9/4881G06F9/5038G06F9/5077
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 10,262,390
App. No.
15/487,887
Granted
Apr 16, 2019
Kind
B1
Abstract

A graphics processing unit (GPU) service platform includes a control server, and a cluster of GPU servers each having one or more GPU devices. The control server receives a service request from a client system for GPU processing services, allocates multiple GPU servers nodes within the cluster to handle GPU processing tasks specified by the service request by logically binding the allocated GPU server nodes, and designating one of the at least two GPU servers as a master server, and send connection information to the client system to enable the client system to connect to the master server. The master GPU server node receives a block of GPU program code transmitted from the client system, which is associated with the GPU processing tasks specified by the service request, processes the block of GPU program code using the GPU devices of the logically bound GPU servers, and returns processing results to the client system.

Claims (57)

1. A method, comprising:

receiving, by a graphics processing unit (GPU) service platform, a service request from a client system for GPU processing services provided by the GPU service platform, wherein the GPU service platform comprises a server cluster of GPU server nodes, wherein each GPU server node within the server cluster comprises one or more GPU devices;

allocating, by the GPU service platform, at least two GPU server nodes within the cluster of GPU server nodes to handle GPU processing tasks specified by the service request, wherein allocating comprises logically binding the at least two GPU server nodes, and designating one of the at least two GPU server nodes as a master GPU server node;

sending, by the GPU service platform, connection information to the client system to enable the client system to establish a network connection to the master GPU server node;

receiving, by the master GPU server node, a block of GPU program code transmitted from the client system over the network connection, wherein the block of GPU program code is associated with the GPU processing tasks specified by the service request;

processing the block of GPU program code using the GPU devices of the logically bound GPU server nodes under the control of the master GPU server node; and

returning, by the master GPU server node, processing results to the client system over the network connection;

wherein each GPU server node within the server cluster comprises a queue-based GPU virtualization and management system;

wherein the queue-based GPU virtualization and management system of each GPU server node within the server cluster comprises (i) a task queue service module that is configured to enqueue GPU processing tasks in a task queue, and (ii) a task scheduler/dispatcher module that is configured to schedule execution times for GPU processing tasks that are enqueued in the task queue, and to dispatch the GPU processing tasks enqueued in the task queue to a server backend GPU worker process to handle execution of the GPU processing tasks at their scheduled times using the GPU devices of the GPU server node;

wherein logically binding the at least two GPU server nodes comprises logically binding the queue-based GPU virtualization and management systems of the at least two GPU server nodes to generate a single logical queue-based GPU virtualization and management system which is managed by the master server node to control queueing, dispatching and processing of the GPU processing tasks associated with the service request of the client system; and

wherein logically binding the queue-based GPU virtualization and management systems of the at least two GPU server nodes comprises logically establishing a single task queue, a single task queue service module, and a single task scheduler/dispatcher module, which are managed by the master server node to control queueing and dispatching of the GPU processing tasks associated with the service request of the client system, and to control the processing of the block of GPU program code using the GPU devices of the logically bound GPU server nodes.

2. The method of claim 1 , wherein allocating further comprises establishing peer-to-peer communication links between the at least two GPU server nodes that are allocated to handle the service request received from the client system.

3. The method of claim 1 , wherein the service request received from the client system specifies a number of GPU devices for handling the processing tasks specified by the service request, and wherein allocating comprises determining at least two GPU server nodes within the cluster of GPU server nodes having a combined number of available GPU devices that meet the specified number of GPU devices in the service request.

4. The method of claim 1 , wherein the service request received from the client system specifies one or more attributes associated with the GPU processing tasks specified by the service request, wherein the one or more attributes specify at least one of a quality of service (QoS) and a priority level for executing the GPU processing tasks, and wherein allocating comprises determining at least two GPU server nodes within the cluster of GPU server nodes having sufficient processing resources to satisfy the specified one or more attributes.

5. The method of claim 1 , wherein processing the block of GPU program code using the GPU devices of the logically bound GPU server nodes comprises coordinating, by the master server node, access to the GPU devices across the logically bound GPU server nodes.

6. The method of claim 1 , wherein allocating further comprises:

accessing a database of GPU server registration information which comprises registration information for each GPU server node within the server cluster which is registered with the GPU service platform, wherein the registration information for a given GPU server node specifies a number of available GPU devices residing on the given GPU server node; and

selecting two or more registered GPU server nodes which collectively comprise a total number of available GPU devices which is sufficient to handle the service request.

7. The method of claim 1 , wherein allocating further comprises:

accessing a database of policies maintained by the GPU service platform, wherein the policies are associated with different client systems or GPU processing tasks, wherein the policies specify GPU server nodes within the server cluster which can be allocated for handling service requests associated with the different client systems or GPU processing tasks based on locations of the GPU server nodes; and

selecting two or more GPU server nodes which reside in locations that correspond to a policy in the database of policies, which is associated with the client system or the GPU processing tasks specified by the service request received from the client system.

8. The method of claim 1 , wherein the cluster of GPU server nodes resides within a single data center.

9. The method of claim 1 , wherein the cluster of GPU server nodes is distributed over a plurality of different data centers or computing platforms.

10. An article of manufacture comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code is executable by one or more processors to implement a process comprising:

receiving, by a graphics processing unit (GPU) service platform, a service request from a client system for GPU processing services provided by the GPU service platform, wherein the GPU service platform comprises a server cluster of GPU server nodes, wherein each GPU server node within the server cluster comprises one or more GPU devices;

allocating, by the GPU service platform, at least two GPU server nodes within the cluster of GPU server nodes to handle GPU processing tasks specified by the service request, wherein allocating comprises logically binding the at least two GPU server nodes, and designating one of the at least two GPU server nodes as a master GPU server node;

sending, by the GPU service platform, connection information to the client system to enable the client system to establish a network connection to the master GPU server node;

receiving, by the master GPU server node, a block of GPU program code transmitted from the client system over the network connection, wherein the block of GPU program code is associated with the GPU processing tasks specified by the service request;

processing the block of GPU program code using the GPU devices of the logically bound GPU server nodes; and

returning, by the master GPU server node, processing results to the client system over the network connection;

wherein each GPU server node within the server cluster comprises a queue-based GPU virtualization and management system;

wherein the queue-based GPU virtualization and management system of each GPU server node within the server cluster comprises (i) a task queue service module that is configured to enqueue GPU processing tasks in a task queue, and (ii) a task scheduler/dispatcher module that is configured to schedule execution times for GPU processing tasks that are enqueued in the task queue, and to dispatch the GPU processing tasks enqueued in the task queue to a server backend GPU worker process to handle execution of the GPU processing tasks at their scheduled times using the GPU devices of the GPU server node;

wherein logically binding the at least two GPU server nodes comprises logically binding the queue-based GPU virtualization and management systems of the at least two GPU server nodes to generate a single logical queue-based GPU virtualization and management system which is managed by the master server node to control queueing, dispatching and processing of the GPU processing tasks associated with the service request of the client system; and

wherein logically binding the queue-based GPU virtualization and management systems of the at least two GPU server nodes comprises logically establishing a single task queue, a single task queue service module, and a single task scheduler/dispatcher module, which are managed by the master server node to control queueing and dispatching of the GPU processing tasks associated with the service request of the client system, and to control the processing of the block of GPU program code using the GPU devices of the logically bound GPU server nodes.

11. The article of manufacture of claim 10 , wherein allocating further comprises establishing peer-to-peer communication links between the at least two GPU server nodes that are allocated to handle the service request received from the client system.

12. The article of manufacture of claim 10 , wherein the service request received from the client system specifies a number of GPU devices for handling the processing tasks specified by the service request, and wherein allocating comprises determining at least two GPU server nodes within the cluster of GPU server nodes having a combined number of available GPU devices that meet the specified number of GPU devices in the service request.

13. The article of manufacture of claim 10 , wherein the cluster of GPU server nodes is distributed over a plurality of different data centers or computing platforms.

14. The article of manufacture of claim 10 , wherein the service request received from the client system specifies one or more attributes associated with the GPU processing tasks specified by the service request, wherein the one or more attributes specify at least one of a quality of service (QoS) and a priority level for executing the GPU processing tasks, and wherein allocating comprises determining at least two GPU server nodes within the cluster of GPU server nodes having sufficient processing resources to satisfy the specified one or more attributes.

15. A graphics processing unit (GPU) service platform, comprising:

a server cluster of GPU server nodes wherein each GPU server node within the server cluster comprises one or more GPU devices; and

a control server configured to:

receive a service request from a client system for GPU processing services provided by the GPU service platform;

allocate at least two GPU server nodes within the cluster of GPU server nodes to handle GPU processing tasks specified by the service request, wherein allocating comprises logically binding the at least two GPU server nodes, and designating one of the at least two GPU server nodes as a master GPU server node; and

send connection information to the client system to enable the client system to establish a network connection to the master GPU server node; and

wherein the master GPU server node is configured to:

receive a block of GPU program code transmitted from the client system over the network connection, wherein the block of GPU program code is associated with the GPU processing tasks specified by the service request;

process the block of GPU program code using the GPU devices of the logically bound GPU server nodes; and

return processing results to the client system over the network connection;

wherein each GPU server node within the server cluster comprises a queue-based GPU virtualization and management system;

wherein the queue-based GPU virtualization and management system of each GPU server node within the server cluster comprises (i) a task queue service module that is configured to enqueue GPU processing tasks in a task queue, and (ii) a task scheduler/dispatcher module that is configured to schedule execution times for GPU processing tasks that are enqueued in the task queue, and to dispatch the GPU processing tasks enqueued in the task queue to a server backend GPU worker process to handle execution of the GPU processing tasks at their scheduled times using the GPU devices of the GPU server node;

wherein logically binding the at least two GPU server nodes comprises logically binding the queue-based GPU virtualization and management systems of the at least two GPU server nodes to generate a single logical queue-based GPU virtualization and management system which is managed by the master server node to control queueing, dispatching and processing of the GPU processing tasks associated with the service request of the client system; and

wherein logically binding the queue-based GPU virtualization and management systems of the at least two GPU server nodes comprises logically establishing a single task queue, a single task queue service module, and a single task scheduler/dispatcher module, which are managed by the master server node to control queueing and dispatching of the GPU processing tasks associated with the service request of the client system, and to control the processing of the block of GPU program code using the GPU devices of the logically bound GPU server nodes.

16. The GPU service platform of claim 15 , wherein the control server is further configured cause the at least two GPU server nodes, which are allocated to handing the service request, to establish peer-to-peer communication links between the at least two GPU server nodes.

17. The GPU service platform of claim 15 , wherein the service request received from the client system specifies a number of GPU devices for handling the processing tasks specified by the service request, and wherein the control server is further configured to determine at least two GPU server nodes within the cluster of GPU server nodes having a combined number of available GPU devices that meet the specified number of GPU devices in the service request.

18. The GPU service platform of claim 15 , wherein the cluster of GPU server nodes resides within a single data center.

19. The GPU service platform of claim 15 , wherein the cluster of GPU server nodes is distributed over a plurality of different data centers or computing platforms.

20. The GPU service platform of claim 15 , wherein the service request received from the client system specifies one or more attributes associated with the GPU processing tasks specified by the service request, wherein the one or more attributes specify at least one of a quality of service (QoS) and a priority level for executing the GPU processing tasks, and wherein allocating comprises determining at least two GPU server nodes within the cluster of GPU server nodes having sufficient processing resources to satisfy the specified one or more attributes.

Assignments (10)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0466) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 060753/0486 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (042769/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 059803/0802 →
RELEASE OF SECURITY INTEREST AT REEL 042768 FRAME 0585 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058297/0536 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 15, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 050724/0466 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 17, 2017
From: SUN, YIFAN; PENG, LAYNE; LINCOURT, ROBERT A., JR.; CARDENTE, JOHN; ZHAO, JUNPING
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 044161/0780 →
PATENT SECURITY INTEREST (NOTES) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 042769/0001 →
PATENT SECURITY INTEREST (CREDIT) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 042768/0585 →
Cited By (6)
US 12,265,844 US 12,360,823 US 12,380,168 US 12,471,238 US 12,608,612 US 12,632,314