nvidia-modprobe creates the /dev/nvidia-uvm device node and loads the
nvidia_uvm module for a normal user, on demand.

Using clinfo as an example since it is in the archive, small, and wasn't
compiled against anything Nvidia (it is built against ocl-icd-
libopencl1).  See LP: #1499996 for the relationship between ocl-icd-
libopencl1 (an OpenCL ICD loader) and nvidia-opencl-icd-352 (an OpenCL
ICD).

Without nvidia-modprobe installed, clinfo reports no devices:

$ ls -l /dev/nv*
crw-rw-rw- 1 root root 195,   0 Oct 12 17:41 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Oct 12 17:41 /dev/nvidiactl

$ lsmod | grep nvidia
nvidia              10563584  41
drm                   356352  3 nvidia

$ clinfo
Number of platforms                               0

Without nvidia-modprobe installed, but running as root, clinfo finds the
device:

$ sudo clinfo
Number of platforms                               1
Platform Name                                   NVIDIA CUDA
<snip>

$ ls -l /dev/nv*
crw-rw-rw- 1 root root 195,   0 Oct 12 17:41 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Oct 12 17:41 /dev/nvidiactl
crw-rw-rw- 1 root root 247,   0 Oct 12 17:45 /dev/nvidia-uvm

$ lsmod | grep nvidia
nvidia_uvm             36864  0
nvidia              10563584  42 nvidia_uvm
drm                   356352  3 nvidia

So the Nvidia OpenCL ICD is also capable of creating the device node and
loading the nvidia_uvm module, provided it is run as root on its first
run.

With nvidia-modprobe installed, it "just works" for the user:

$ ls -l /dev/nv*
crw-rw-rw- 1 root root 195,   0 Oct 12 16:59 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Oct 12 16:59 /dev/nvidiactl

$ lsmod | grep nvidia
nvidia              10563584  41
drm                   356352  3 nvidia

$ clinfo
Number of platforms                               1
Platform Name                                   NVIDIA CUDA
<snip>

$ ls -l /dev/nv*
crw-rw-rw- 1 root root 195,   0 Oct 12 16:59 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Oct 12 16:59 /dev/nvidiactl
crw-rw-rw- 1 root root 247,   0 Oct 12 17:38 /dev/nvidia-uvm

$ lsmod | grep nvidia
nvidia_uvm             36864  0
nvidia              10563584  42 nvidia_uvm
drm                   356352  3 nvidia

Running strace on clinfo shows that the Nvidia OpenCL ICD does the following:
- check if the nvidia_uvm module is loaded, if not, run '/sbin/modprobe' if we 
are root, otherwise run '/usr/bin/nvidia-modprobe'.
- check if /dev/nvidia-uvm exists, if it does not, try to create it, and if 
that fails run '/usr/bin/nvidia-modprobe' again.

The same is true of CUDA applications that are linked to libcuda or
libcudart.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1421209

Title:
  [MIR] nvidia-modprobe

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/nvidia-modprobe/+bug/1421209/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to