[Pkg-opencl-devel] Bug#767367: nvidia-opencl-icd dependencies

Andreas Beckmann anbe at debian.org
Wed Dec 3 01:20:17 UTC 2014


On 2014-12-02 22:36, Rebecca N. Palmer wrote:
>> what would happen to
>> an Nvidia-hardware-only system with nvidia kernel module (which
>> blacklists the nouveau kernel module) + nouveau graphics userspace,
>> which under [nvidia-kernel-dkms Recommends: nvidia-driver | libcuda1]
>> would be the result of trying to install OpenCL on
>> a previously nouveau-using system.
> 
> Did you test this (i.e. "apt-get install nvidia-opencl-icd libcuda1"
> with Nvidia hardware but no already-installed *nvidia* packages)?
> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=751082#27 suggests the
> result is no graphics.
> 
> (Having it be a Recommends: nvidia-driver rather than a hard Depends
> already allows the "headless GPGPU" case, and cutting nvidia-opencl-icd
> -> libcuda1 is enough to fix the original "accidental nvidia-opencl-icd
> on inappropriate hardware" problem.)
> 
> _______________________________________________
> pkg-nvidia-devel mailing list
> pkg-nvidia-devel at lists.alioth.debian.org
> http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-nvidia-devel

# apt-get install --install-recommends nvidia-opencl-icd libcuda1
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  cpp-4.8 dkms gcc-4.8 glx-alternative-mesa glx-alternative-nvidia glx-diversions kmod libasan0 libgcc-4.8-dev libkmod2 libnvidia-compiler libnvidia-ml1 linux-compiler-gcc-4.8-x86 linux-headers-3.16.0-4-amd64
  linux-headers-3.16.0-4-common linux-headers-amd64 linux-kbuild-3.16 menu nvidia-alternative nvidia-installer-cleanup nvidia-kernel-common nvidia-kernel-dkms nvidia-modprobe nvidia-opencl-common nvidia-smi
  nvidia-support ocl-icd-libopencl1
Suggested packages:
  gcc-4.8-locales gcc-4.8-multilib gcc-4.8-doc libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan0-dbg libtsan0-dbg libquadmath0-dbg libgl1-mesa-glx libgl1 nvidia-driver nvidia-cuda-mps menu-l10n gksu
  kde-runtime ktsuss opencl-icd
Recommended packages:
  linux-image libcuda1-i386
The following NEW packages will be installed:
  cpp-4.8 dkms gcc-4.8 glx-alternative-mesa glx-alternative-nvidia glx-diversions kmod libasan0 libcuda1 libgcc-4.8-dev libkmod2 libnvidia-compiler libnvidia-ml1 linux-compiler-gcc-4.8-x86
  linux-headers-3.16.0-4-amd64 linux-headers-3.16.0-4-common linux-headers-amd64 linux-kbuild-3.16 menu nvidia-alternative nvidia-installer-cleanup nvidia-kernel-common nvidia-kernel-dkms nvidia-modprobe
  nvidia-opencl-common nvidia-opencl-icd nvidia-smi nvidia-support ocl-icd-libopencl1
0 upgraded, 29 newly installed, 0 to remove and 0 not upgraded.
Need to get 20.3 MB/37.4 MB of archives.
After this operation, 136 MB of additional disk space will be used.

@@@ doing this in a sid chroot ...

# update-alternatives --display nvidia 
nvidia - auto mode
  link currently points to /usr/lib/nvidia/current
/usr/lib/nvidia/current - priority 340
  slave nvidia--libcuda.so-x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/nvidia/current/libcuda.so
  slave nvidia--libcuda.so.1-x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/nvidia/current/libcuda.so.1
  slave nvidia--libnvidia-ml.so.1-x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/nvidia/current/libnvidia-ml.so.1
  slave nvidia--libnvidia-opencl.so.1-x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/nvidia/current/libnvidia-opencl.so.1
  slave nvidia--nvidia-modprobe.conf: /etc/nvidia/nvidia-modprobe.conf
  slave nvidia--nvidia-smi: /usr/lib/nvidia/current/nvidia-smi
  slave nvidia--nvidia-smi.1.gz: /usr/lib/nvidia/current/nvidia-smi.1.gz
Current 'best' version is '/usr/lib/nvidia/current'.

@@@ as expected

# update-alternatives --display glx
update-alternatives: error: no alternatives for glx

@@@ Oops, let's install X, too

# apt-get install --install-recommends xserver-xorg

# update-alternatives --display glx
glx - auto mode
  link currently points to /usr/lib/mesa-diverted
/usr/lib/mesa-diverted - priority 5
  slave glx--libEGL.so.1-x86_64-linux-gnu: /usr/lib/mesa-diverted/x86_64-linux-gnu/libEGL.so.1
  slave glx--libGL.so.1-x86_64-linux-gnu: /usr/lib/mesa-diverted/x86_64-linux-gnu/libGL.so.1
Current 'best' version is '/usr/lib/mesa-diverted'.

@@@ as expected

nouveau is not blacklisted ... the kernel module would probably get loaded by a cuda application


Interesting testcase, need to think more about it. For stretch :-)

There is a lever missing here to enable/disable nvidia.
/etc/modules-load.d/ may be useful :-)

And probably a new utility needs to be written to switch the system into any of these (proprietary) gpu modes:
* none (xorg,mesa only)
* nvidia native
* nvidia optimus
* fglrx native
* fglrx the-thing-that-is-equivalent-to-optimus
* bumblebee whatever

It must be possible to have *all* installed at the same time and to switch between them without package removal (since only one can be active at a time).
(and we have at least 2 different nvidia drivers available, more likely 3: current, 340xx, 304xx)


Andreas



More information about the Pkg-opencl-devel mailing list