testing Ubuntu 16.04 for CUDA development. Awesome integration!

Hi,

I am on a Kubuntu 16.04 LTS developer branch, currently having the nvidia-361-updates driver package installed.

What I like a lot is the seamless integration with the CUDA 7.0 toolkit (not 7.5). Everything can be installed via apt-get, the only exception being 32 bit libcudart runtime libraries for running the (unsupported) 32 bit CUDA ABI on a 64 bit Linux.

nvidia-361-updates                              install
nvidia-361-updates-dev                          install
nvidia-prime                                    install
nvidia-profiler                                 install
nvidia-settings                                 install
nvidia-visual-profiler                          install

libcuda1-361-updates                            install
libcudart7.0:amd64                              install
nvidia-cuda-dev                                 install
nvidia-cuda-doc                                 install
nvidia-cuda-gdb                                 install
nvidia-cuda-toolkit                             install

nvidia-opencl-dev:amd64                         install
nvidia-opencl-icd-361-updates                   install

I have started nvidia-smi while one of our applications ran. In earlier driver versions this would never show much detail information for consumer nVidia GPUs. However with the driver that ships with Ubuntu 16.04 I get it all.

Nice. Would anyone know which driver version has actually improved the nvidia-smi behavior with respect to consumer GPU devices? How far can you go back before you lose this feature?

+------------------------------------------------------+                       
| NVIDIA-SMI 361.28     Driver Version: 361.28         |                       
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 970     Off  | 0000:01:00.0      On |                  N/A |
| 31%   57C    P2    80W / 151W |   1362MiB /  4095MiB |     41%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0       961    G   /usr/lib/xorg/Xorg                             376MiB |
|    0      1390    G   kwin_x11                                        68MiB |
|    0      1395    G   /usr/bin/krunner                                17MiB |
|    0      1399    G   /usr/bin/plasmashell                            82MiB |
|    0      4181    G   /usr/lib/firefox/firefox                         2MiB |
|    0      8174  C+G   ...r/MR_dev_1.x64/optimized/src/.libs/lt-b4g   810MiB |
+-----------------------------------------------------------------------------+

And the awesome became more awesome. They’ve just upgraded all their packages to CUDA 7.5

Hi!

I have server machine with GPUs and I wonder which of these packages are required for server machine?
I mean that I don’t need graphics driver to use monitors on these machine. Are them nvidia-361-updates, nvidia-361-updates-dev, nvidia-prime, nvidia-visual-profiler? Or some else?

The nvidia graphics driver is required to provide the CUDA APIs, even if you’re running the machine in headless mode.

I cannot compile the samples (which I installed using the runfile). The error message is:

“/usr”/bin/nvcc -ccbin g++ -m64 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_52,code=compute_52 -o cdpSimplePrint cdpSimplePrint.o -lcudadevrt
nvlink error : Undefined reference to ‘cudaGetParameterBufferV2’ in ‘cdpSimplePrint.o’ (target: sm_35)
nvlink error : Undefined reference to ‘cudaLaunchDeviceV2’ in ‘cdpSimplePrint.o’ (target: sm_35)

Looks like libcudadevrt is missing.

Solution:

EXTRA_NVCCFLAGS="-L /usr/lib/x86_64-linux-gnu" make

I installed everything in your list via apt-get, except: libcudart7.0:amd64

You wrote: Everything can be installed via apt-get, the only exception being 32 bit libcudart runtime libraries for running the (unsupported) 32 bit CUDA ABI on a 64 bit Linux.

How did you install, or how can I install the libcudart runtime libraries?

I would think that it is now libcudart7.5:amd64

Also, apt-get install nvidia-367 installs the current driver. It fixes some bugs with nvidia-smi and other things.

I am having some trouble getting nvidia-367.

On my vanilla Kubuntu 16.04 installation apt-get won’t find the nvidia-367 package. Apparently there is an nvidia-367 package in the graphics drivers PPA here https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa

But trying to just install nvidia-367 via apt-get would remove all of the CUDA development packages due to dependency problems.

Can you outline the steps you took to install nvidia-367 without breaking CUDA development?

Okay, answering my own question from above. This should do the trick. Specifying libcuda1-367 in apt-get is important, otherwise we lose all CUDA related development packages.

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get install nvidia-367 libcuda1-367

Same goes for upgrading to 370 aparently…