Jetson TK1 - modprobe: FATAL: Module nvidia not found.

I’ve installed PyCUDA on my TK1, but run into an error initializing the driver:

In [1]: import pycuda.driver as drv

In [2]: drv.init()
modprobe: FATAL: Module nvidia not found.

Running lsmod lists only one kernel module:

root@tegra-ubuntu:~# lsmod
Module                  Size  Used by
nvhost_vi               2940  0

Is nvhost_vi the nvidia module? Can I just create an alias for nvidia?

My observation is that the driver stack on the Tegra K1 is quite different from what we had on the earlier Carma and Kayla hardware, which were more like a typical x86 system. There doesn’t appear to be an “nvidia” kernel module, at least with the current OS distribution for Tegra K1 as installed out of the box. I also noted that the current OS rev doesn’t link up the NVIDIA libGL.so and other libs in place of the software-based Mesa in /usr/lib, and that the normal NVIDIA X11 utilities such as nvidia-settings and such are also missing. I conclude that the current Tegra K1 drivers are quite different, and they don’t seem to require so much integration with the X11 drivers. This may be a good thing for embedded folks, but it’s a little unusual for those of us accustomed to driver organization on x86. Hopefully someone from NVIDIA will chime in on these items.

Harmless error. To make it go away, do the following as root:

echo “alias nvidia nvhost_vi” >> /etc/modprobe.d/nvidia.conf

Following that, a “modprobe nvidia” should silently succeed, and you’ll no longer get the annoying warnings when you run CUDA code.

-Mark

Thanks John and Mark,

I was able to get it working with the alias as Mark detailed.

Thanks again!

Hello Fiver,

How did you managed to instal pycuda? (I cannot find python-pycuda in apt-get)

I don’t think this is the right fix. nvhost_vi is not the same as nvidia.
The problem also appears on Jetson R21.3 when running an application with cuda as root. (It doesn’t appear when you call it as normal user)

I think the modprobe to the nvidia module is a left-over from x86 code in the cuda library. The module is not needed at all on TK1 because the GPU functionality (in most cases) is statically compiled into the kernel.

I removed the message by adding the following config to modprobe.d/nviida.conf
install nvidia echo ignore > /dev/null

All my CUDA applications work fine and the message has disappeared.

hi Mark,why i haven’t the <nvidia.conf> under the /etc/modprobe.d/ ?
my platform is jetson tk1,thanks for you answer above!

The “/etc/modprobe.d/” directory is for customizing. Unless it was known ahead of time something will use nvhost_vi by name nvidia, this would have never been customized. In the command given above (with " >> " in it), the command will append to the file if it exists, and if the file does not exist, it will create the file. So it won’t matter if the file already existed or not.

Hello

@DJW24 I want to access Jetson TK1 GPU threads and grids using PyCuda.Is it possible to access GPU using PyCuda on Jetson TK1 board.