# 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="https://819228986-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkzeiawY8SkBarQBDVm-659326392%2Fuploads%2Fgit-blob-1b1cbf47ce1a48ed036a0fe3c89d44bc7b8a669a%2Farchitecture-of-the-api-remoting-approach.png?alt=media" 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="https://819228986-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkzeiawY8SkBarQBDVm-659326392%2Fuploads%2Fgit-blob-d9c95c7863786d3b39674331bc1046f813e98daa%2Farchitecture-of-the-full-or-para-virtualization-approach.png?alt=media" 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="https://819228986-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MkzeiawY8SkBarQBDVm-659326392%2Fuploads%2Fgit-blob-a9ed865e36192703b82ec558c8645825d2405a60%2Farchitecture-of-the-hardware-supported-approach.png?alt=media" alt=""><figcaption><p>Architecture of the hardware-supported approach</p></figcaption></figure>
