IP Library Granted Patent US 9,898,795
Granted Patent B2
US 9,898,795 · App. 14/309,304 · Granted Feb 20, 2018

Host-based heterogeneous multi-GPU assignment

Inventor: Si Chen (San Jose, CA)
Assignee: VMware, Inc.
G06T1/20G06F9/45533G06F2009/45579
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,898,795
App. No.
14/309,304
Granted
Feb 20, 2018
Kind
B2
Abstract

Examples of the disclosure assign a plurality of graphics processing units (GPUs) to a plurality of virtual machines (VMs) or processes. A composite score is generated for each GPU. The composite score represents the normalized processing capabilities of the multiple GPUs. Based on a comparison between the composite scores and allocated quantum corresponding to a proportional amount of GPU resources to which each VM is entitled, each VM is assigned to at least one of the GPUs. Graphics commands from the VMs are scheduled for execution by the assigned GPUs.

Claims (38)

1. One or more non-transitory computer storage media embodying computer-executable instructions which, when executed, fairly share a plurality of graphics processing units (GPUs) among a plurality of virtual machines (VMs) by:

assigning shares to a user having one or more VMs associated therewith;

adjusting the assigned shares based on graphics command characteristics associated with the VMs;

allocating quantum among the VMs based on the adjusted, assigned shares;

generating a composite score for each of the plurality of GPUs, each composite score representing normalized processing capabilities of the GPU; and

assigning each of the VMs to at least one of the plurality of GPUs based on the allocated quantum and the composite scores, wherein each of the plurality of GPUs performs graphics commands from the assigned VMs.

2. The non-transitory computer storage media of claim 1 , further comprising normalizing the processing capabilities of each of the plurality of GPUs.

3. The non-transitory computer storage media of claim 1 , wherein generating the composite score for each of the plurality of GPUs comprises testing performance of the GPU handling different quantities of VMs.

4. The non-transitory computer storage media of claim 1 , wherein generating the composite score for each of the plurality of GPUs comprises adjusting a benchmark score based on application programming interface (API) compatibility.

5. The non-transitory computer storage media of claim 1 , wherein the graphics command characteristics indicate a type of graphics commands to be issued by the VMs.

6. The non-transitory computer storage media of claim 1 , wherein the graphics command characteristics describe a runtime behavior of the VMs.

7. The non-transitory computer storage media of claim 1 , wherein the graphics command characteristics indicate whether the VMs are configured to issue at least one of: two-dimensional graphics commands, three-dimensional graphics commands, surface mapping commands, shading commands, video encoding/decoding, or texture rendering commands.

8. The non-transitory computer storage media of claim 1 , wherein assigning the shares comprises assigning the shares based on at least one of: an amount of payment from the user to the cloud service, a service level agreement (SLA) between the user and the cloud service, or a quality of service (QoS) guarantee.

9. The non-transitory computer storage media of claim 1 , further comprising transmitting for each of the VMs, the allocated quantum and a GPU identifier associated with the assigned GPU to a GPU driver via an input/output control (IOCTL) command.

10. A method comprising:

assigning shares to a user having one or more VMs associated therewith;

adjusting the assigned shares based on graphics command characteristics associated with the VMs;

allocating quantum among the VMs based on the adjusted, assigned shares;

generating a composite score for each of the plurality of GPUs, each composite score representing normalized processing capabilities of the GPU; and

assigning each of the VMs to at least one of the plurality of GPUs based on the allocated quantum and the composite scores, wherein each of the plurality of GPUs performs graphics commands from the assigned VMs.

11. The method of claim 10 , further comprising normalizing the processing capabilities of each of the plurality of GPUs.

12. The method of claim 10 , wherein generating the composite score for each of the plurality of GPUs comprises testing performance of the GPU handling different quantities of VMs.

13. The method of claim 10 , wherein generating the composite score for each of the plurality of GPUs comprises adjusting a benchmark score based on application programming interface (API) compatibility.

14. The method of claim 10 , wherein the graphics command characteristics indicate a type of graphics commands to be issued by the VMs.

15. The method of claim 10 , wherein the graphics command characteristics describe a runtime behavior of the VMs.

16. The method of claim 10 , wherein the graphics command characteristics indicate whether the VMs are configured to issue at least one of: two-dimensional graphics commands, three-dimensional graphics commands, surface mapping commands, shading commands, video encoding/decoding, or texture rendering commands.

17. The method of claim 10 , wherein assigning the shares comprises assigning the shares based on at least one of: an amount of payment from the user to the cloud service, a service level agreement (SLA) between the user and the cloud service, or a quality of service (QoS) guarantee.

18. The method of claim 10 , further comprising transmitting for each of the VMs, the allocated quantum and a GPU identifier associated with the assigned GPU to a GPU driver via an input/output control (IOCTL) command.

19. A system for fairly sharing a plurality of graphics processing units (GPUs) among a plurality of virtual machines (VMs), the system comprising:

a plurality of graphics processing units (GPUs) and a plurality of virtual machines (VMs);

a memory area associated with the computing device, said memory area storing graphics commands; and

a processor programmed to:

assign shares to a user having one or more VMs associated therewith;

adjust the assigned shares based on graphics command characteristics associated with the VMs;

allocate quantum among the VMs based on the adjusted, assigned shares;

generate a composite score for each of the plurality of GPUs, each composite score representing normalized processing capabilities of the GPU; and

assign each of the VMs to at least one of the plurality of GPUs based on the allocated quantum and the composite scores, wherein each of the plurality of GPUs performs graphics commands from the assigned VMs.

20. The system of claim 19 , wherein the processor is further programmed to transmit for each of the VMs, the allocated quantum and a GPU identifier associated with the assigned GPU to a GPU driver via an input/output control (IOCTL) command.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 19, 2014
From: CHEN, SI
To: VMWARE, INC.
Reel/Frame 033141/0192 →
Continuity (1)
Related Publication 20150371355A1 · Dec 24, 2015