38,757
edits
(Updating to match new version of source page) |
(Updating to match new version of source page) |
||
Line 1: | Line 1: | ||
<languages /> | <languages /> | ||
This | This guide describes how to allocate GPU resources to a virtual machine (VM), installing the necessary drivers and checking whether the GPU can be used. | ||
To use a GPU within a VM, the instance needs to be deployed | == Supported flavors == | ||
To use a GPU within a VM, the instance needs to be deployed on one of the flavors listed below. The GPU will be available to the operating system via the PCI bus. | |||
* g2-c24-112gb-500 | * g2-c24-112gb-500 | ||
Line 11: | Line 12: | ||
* g1-c14-56gb | * g1-c14-56gb | ||
== Preparing a Debian 10 | == Preparing a Debian 10 instance == | ||
===== | To use the GPU via the PCI bus, the proprietary NVIDIA drivers are required. Due to Debian's policy, the drivers are available from the non-free pool only. | ||
Log in | |||
===== Enable the non-free pool ===== | |||
Log in using ssh and add the lines below to ''/etc/apt/sources.list'', if they are not already there. | |||
<pre> | <pre> | ||
Line 23: | Line 26: | ||
</pre> | </pre> | ||
===== | ===== Install the NVIDIA driver ===== | ||
The following command | |||
The following command: | |||
* updates the <code>apt</code> cache, so that <code>apt</code> will be aware of the new software pool sections, | |||
* updates the OS to the latest software versions, and | |||
* installs kernel headers, an NVIDIA driver, and <code>pciutils</code>, which will be required to list the devices connected to the PCI bus. | |||
<pre> | <pre> | ||
root@gpu2:~# apt-get update && apt-get -y dist-upgrade && apt-get -y install pciutils linux-headers-`uname -r` linux-headers-amd64 nvidia-driver | root@gpu2:~# apt-get update && apt-get -y dist-upgrade && apt-get -y install pciutils linux-headers-`uname -r` linux-headers-amd64 nvidia-driver | ||
</pre> | </pre> | ||
If this command finishes successfully, the NVIDIA driver will have been compiled and loaded. | |||
* Check if the GPU is exposed on the PCI bus | * Check if the GPU is exposed on the PCI bus | ||
Line 50: | Line 58: | ||
</pre> | </pre> | ||
* Check that the nvidia kernel module is loaded | * Check that the <code>nvidia</code> kernel module is loaded | ||
<pre> | <pre> | ||
root@gpu2:~# lsmod | grep nvidia | root@gpu2:~# lsmod | grep nvidia | ||
Line 57: | Line 65: | ||
</pre> | </pre> | ||
* Start <code>nvidia-persistenced</code>, which will create the necessary device files and make the GPU accessible in user space. | |||
<pre> | <pre> | ||
root@gpu2:~# service nvidia-persistenced restart | root@gpu2:~# service nvidia-persistenced restart | ||
root@gpu2:~# ls -al /dev/nvidia* | root@gpu2:~# ls -al /dev/nvidia* | ||
crw-rw-rw- 1 root root 195, 0 Mar 6 18:55 /dev/nvidia0 | crw-rw-rw- 1 root root 195, 0 Mar 6 18:55 /dev/nvidia0 | ||
Line 69: | Line 76: | ||
The GPU is now available within the user space and can be used. | The GPU is now available within the user space and can be used. | ||
== Preparing a CentOS 7 | == Preparing a CentOS 7 instance == | ||
To compile the module sources from the | NVIDIA provides repositories for various distributions, therefore the required software can be installed and maintained via these repositories. | ||
before the | To compile the module sources from the NVIDIA repository, it is necessary to install <code>dkms</code>. | ||
This will automatically build the modules on kernel updates, and therefore ensures that the GPU is still working after any update of the OS. | |||
<code>dkms</code> is provided in the EPEL repository. | |||
Kernel headers and the kernel source need to be installed before the NVIDIA driver can be set up. | |||
===== Enable the EPEL repository and install needed software ===== | |||
<pre> | <pre> | ||
[root@gpu-centos centos]# yum -y update && reboot | [root@gpu-centos centos]# yum -y update && reboot | ||
Line 82: | Line 92: | ||
</pre> | </pre> | ||
===== | ===== Add the NVIDIA repository and install the driver package ===== | ||
Install the | |||
Install the <code>yum</code> repository: | |||
<pre> | <pre> | ||
[root@gpu-centos centos]# yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo | [root@gpu-centos centos]# yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo | ||
Line 89: | Line 100: | ||
</pre> | </pre> | ||
NVIDIA uses its own GPG key to sign its packages. <code>yum</code> will ask to autoimport it. Reply "y" for "yes" when prompted. | |||
<pre> | <pre> | ||
Retrieving key from http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/7fa2af80.pub | Retrieving key from http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/7fa2af80.pub | ||
Line 100: | Line 110: | ||
</pre> | </pre> | ||
After | After installation, reboot the VM to properly load the module and create the NVIDIA device files. | ||
<pre> | <pre> | ||
[root@gpu-centos ~]# ls -al /dev/nvidia* | [root@gpu-centos ~]# ls -al /dev/nvidia* |