# GPU virtualization and scheduling methods: A comprehensive survey

## Metadata

Presented in [CSUR 2017](https://doi.org/10.1145/3068281).

Authors: Cheol-Ho Hong, Ivor Spence, Dimitrios S. Nikolopoulos (*Queen’s University Belfast*)

## Understanding the paper

GPU virtualization can be implemented on **three approaches**.

### **API remoting**

* **Library-level**.
* This approach provides **a GPU wrapper library** to guest OS to intercept GPU calls.
* The intercepted calls are forwarded to the host OS or a remote machine with GPUs.
* The requests will be processed remotely and the results are returned to the guest OS.
* The core difficulty is that **the GPU driver implementation is not open source**.

<figure><img src="/files/RFamMLDdRASQcVVmVddD" alt=""><figcaption><p>Architecture of the API remoting approach</p></figcaption></figure>

### **Para & full virtualization**

* **Drivel-level**.
* This approach uses **a custom GPU driver** based on **the available documentation** to realize GPU virtualization at the driver level.
* NVIDIA-related **reverse engineering** is required.

<figure><img src="/files/dA1h8G8S1KYUYr55Va5o" alt=""><figcaption><p>Architecture of the full or para virtualization approach</p></figcaption></figure>

### **Hardware-supported virtualization**

* **Hardware-level**.
* This approach requires that a guest OS is given direct access to GPUs with **hardware extension features**.
* For example, NVIDIA GRID allows some GPUs to be multiplexed.

<figure><img src="/files/vczCRyotDaj00Tm2Va9x" alt=""><figcaption><p>Architecture of the hardware-supported approach</p></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://paper.lingyunyang.com/reading-notes/journal/csur/csur-2017/gpu-virtualization-survey.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
