# US 10,372,497 B1 · Offloading GPU computations for computers and virtual machines

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,372,497 B1
- Document ID: US10372497B1
- Status: Granted
- Kind: B1
- Application number: 15/695,141
- Filed: 2017-09-05
- Granted: 2019-08-06
- Earliest claimed: 2017-09-05
- Assignees: Parallels International GmbH
- Applicants: Parallels International GmbH
- Inventors: Anton Zelenov; Nikolay Dobrovolskiy; Serguei M. Beloussov; Alexey Koryakin
- Web page: https://patentgrep.com/patent/US10372497B1

## CPC

- G06F 9/5011: {the resources being hardware resources other than CPUs, Servers and Terminals}
- G06F 9/5044: {considering hardware capabilities}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/4856: {resumption being on a different machine, e.g. task migration, virtual machine migration (G06F9/5088 takes precedence)}
- G06F 9/54: Interprogram communication
- G06F 2009/45562: {Creating, deleting, cloning virtual machine instances}
- G06F 2009/4557: {Distribution of virtual machine instances; Migration and load balancing}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system and method is provided for performing computations on a virtual machine without a special hardware computation unit, such as a discrete graphics processing unit (GPU). The described method uses a computation module to intercept requests from a user application executing in a virtual machine on a first physical computer. The intercepted requests may include requests to configure GPU computation grids, start and finish accelerated code execution, and transfer data to and from the special computation unit. The computation module offloads accelerated code to a second physical computer having a physical special hardware unit (e.g., discrete GPU).

## Claims

### Claim 1

A method for performing computations on a virtual machine without a special hardware computation unit, the method comprising:
intercepting, from a user application executing in the virtual machine, a request to load accelerated code prepared for the special hardware computation unit in the virtual machine, wherein the virtual machine is executing in a first physical computer;
transmitting the accelerated code comprised of special hardware computation unit instructions to a remote node executing on a second physical computer having a physical special hardware computation unit;
responsive to intercepting from the user application a request to start execution of the accelerated code by the special hardware computation unit of the virtual machine, transmitting to the second physical computer a request to execute the accelerated code using the physical special hardware computation unit of the second physical computer; and
responsive to intercepting from the user application a request to transfer results of the accelerated code execution, retrieving, by the virtual machine, results from the physical special hardware computation unit of the second physical computer, and loading the retrieved results into a memory of the virtual machine.

### Claim 2 (depends on 1)

The method of claim 1, wherein the special hardware computation unit is a discrete graphics processing unit (GPU), and wherein the accelerated code is a non-display GPU computation.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
responsive to intercepting from the user application a request to allocate special hardware computation unit resources of the virtual machines, configuring resources of the physical special hardware computation unit of the second physical computer.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
transferring an input data set for the accelerated code to a memory of the physical special hardware computation unit of the second physical computer.

### Claim 5 (depends on 1)

The method of claim 1, wherein the first physical computer lacks a discrete physical graphics processing unit (GPU).

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
providing to the user application a parallel computing application programming interface (API) configured to off-load the accelerated code to the second physical computer.

### Claim 7

A system for performing computations on a virtual machine without a special hardware computation unit, the system comprising:
a first physical computer having a CPU and a memory coupled to the CPU;
at least one virtual machine executing on the first physical computer;
a user application and a computation module executing in the virtual machine;
a second physical computer having a physical special hardware computation unit and a remote node;
wherein the computation module is configured to:
intercept, from the user application executing in the virtual machine, a request to load accelerated code in the virtual machine;
transmit the accelerated code comprised of special computation unit instructions to the remote node executing on the second physical computer;
responsive to intercepting from the user application a request to start execution of the accelerated code by the special hardware computation unit of the virtual machine, transmit to the second physical computer a request to execute the accelerated code using the physical special hardware computation unit of the second physical computer; and
responsive to intercepting from the user application a request to transfer results of the accelerated code execution, retrieve, by the virtual machine, results from the physical special hardware computation unit of the second physical computer, and load the retrieved results into a memory of the virtual machine.

### Claim 8 (depends on 7)

The system of claim 7, wherein the special hardware computation unit is a discrete graphics processing unit (GPU), and wherein the accelerated code is a non-display GPU computation.

### Claim 9 (depends on 7)

The system of claim 7, wherein the computation module is further configured to:
responsive to intercepting from the user application a request to allocate special hardware computation unit of the virtual machines, configure resources of the physical special hardware computation unit of the second physical computer.

### Claim 10 (depends on 7)

The system of claim 7, wherein the computation module is further configured to:
transfer an input data set for the accelerated code to a memory of the physical special hardware computation unit of the second physical computer.

### Claim 11 (depends on 7)

The system of claim 7, wherein the first physical computer lacks a discrete physical graphics processing unit (GPU).

### Claim 12 (depends on 7)

The system of claim 7, wherein the computation module is further configured to:
provide to the user application a parallel computing application programming interface (API) configured to off-load the accelerated code to the second physical computer.

### Claim 13

A non-transitory computer readable medium comprising computer executable instructions for performing computations on a virtual machine without a special hardware computation unit, including instructions for:
intercepting, from a user application executing in the virtual machine, a request to load accelerated code in the virtual machine, wherein the virtual machine is executing in a first physical computer;
transmitting the accelerated code comprised of special computation unit instructions to a remote node executing on a second physical computer having a physical special hardware computation unit;
responsive to intercepting from the user application a request to start execution of the accelerated code by the special hardware computation unit of the virtual machine, transmitting to the second physical computer a request to execute the accelerated code using the physical special hardware computation unit of the second physical computer; and
responsive to intercepting from the user application a request to transfer results of the accelerated code execution, retrieving, by the virtual machine, results from the physical special hardware computation unit of the second physical computer, and loading the retrieved results into a memory of the virtual machine.

### Claim 14 (depends on 13)

The non-transitory computer readable medium of claim 13, wherein the special hardware computation unit is a discrete graphics processing unit (GPU), and wherein the accelerated code is a non-display GPU computation.

### Claim 15 (depends on 13)

The non-transitory computer readable medium of claim 13, wherein the instructions further comprise instructions for:
responsive to intercepting from the user application a request to allocate special hardware computation unit resources of the virtual machines, configuring resources of the physical special hardware computation unit of the second physical computer.

### Claim 16 (depends on 13)

The non-transitory computer readable medium of claim 13, wherein the instructions further comprise instructions for:
transferring an input data set for the accelerated code to a memory of the physical special hardware computation unit of the second physical computer.

### Claim 17 (depends on 13)

The non-transitory computer readable medium of claim 13, wherein the first physical computer lacks a discrete physical graphics processing unit (GPU).

### Claim 18 (depends on 13)

The non-transitory computer readable medium of claim 13, wherein the instructions further comprise instructions for:
providing to the user application a parallel computing application programming interface (API) configured to off-load accelerated code to the second physical computer.
