112

For TensorFlow I would like to install cuda and CuDNN. How do I do that on Ubuntu 16.04?

2
  • 4
    Warning: if you're trying to run tensorflow and need cudnn, make sure to install 5.1 and not 6.0 for now. Apr 18, 2017 at 5:50
  • @wordsforthewise CuDNN 6.0 is now supported (for TF 1.4 at least). Nov 26, 2017 at 21:56

8 Answers 8

151

Step 0: Install cuda from the standard repositories. (See How can I install CUDA on Ubuntu 16.04?)

Step 1: Register an nvidia developer account and download cudnn here (about 80 MB)

Step 2: Check where your cuda installation is. For the installation from the repository it is /usr/lib/... and /usr/include. Otherwise, it will be /usr/local/cuda/ or /usr/local/cuda-<version>. You can check it with which nvcc or ldconfig -p | grep cuda

Step 3: Copy the files:

Repository installation:

$ cd folder/extracted/contents
$ sudo cp -P include/cudnn.h /usr/include
$ sudo cp -P lib64/libcudnn* /usr/lib/x86_64-linux-gnu/
$ sudo chmod a+r /usr/lib/x86_64-linux-gnu/libcudnn*

Runfile installation:

$ cd folder/extracted/contents
$ sudo cp include/cudnn.h /usr/local/cuda/include
$ sudo cp lib64/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
10
  • 15
    Adding -P retains the symbolic links, i.e. sudo cp -P lib64/libcudnn* /usr/lib/x86_64-linux-gnu/, and avoids the message: /sbin/ldconfig.real: /usr/lib/x86_64-linux-gnu/libcudnn.so.5 is not a symbolic link
    – Max Gordon
    Jun 26, 2016 at 8:56
  • 1
    Update from here: "Download cuDNN v4 (v5 is currently a release candidate and is only supported when installing TensorFlow from sources)." Sep 4, 2016 at 23:06
  • 38
    For Tensorflow to find everything, I had to copy include/cudnn.h and the libraries in lib64/ to /usr/local/cuda-8.0/include and /usr/local/cuda-8.0/lib64 (using CUDA 8.0, Ubuntu 14.04, Tensorflow 0.12.0rc0) - maybe this is helpful for somebody. Dec 9, 2016 at 12:16
  • @MaxGordon Hi, does it matter if I use the runtime library for ubuntu16.04 power8 or the library for linux? Jun 15, 2017 at 16:17
  • 1
    Another tip - make sure you install cuda before you install cudnn. Otherwise the cuda installers won't overwrite any /usr/local/cuda directories you may have created.
    – kevins
    Dec 8, 2017 at 10:32
46

From 5.1 onwards you can't install according to what @Martin mentioned. Download libcudnn6_6.0.21-1+cuda8.0_amd64.deb, libcudnn6-dev_6.0.21-1+cuda8.0_amd64.deb, libcudnn6-doc_6.0.21-1+cuda8.0_amd64.deb from nvidia site and install one by one follwing way.

 sudo dpkg -i <library_name>.deb

Edit: You must first install runtime (libcudnn6_6.0.21-1+cuda8.0_amd64.deb) because dev depends on the runtime (Thanks @tinmarino)

3
  • 1
    Thanks. I have fallen into this problem multiple times. Let's just establish a thumb rule. When things don't work, stick to installing using .deb packages. Aug 17, 2017 at 11:45
  • 9
    When compiling Tensorflow from source it is good to know that the cuDNN library installation path is /usr/lib/x86_64-linux-gnu/ Dec 11, 2017 at 11:59
  • 3
    You must first install runtime decause dev depends on it
    – Tinmarino
    Feb 10, 2019 at 14:15
13
  1. Register on NVidia's website. It may take a day, or two before they'll get your account approved. At least that used to be the case back when I registered.
  2. Download and Install latest CUDA from NVidia, or the latest version that fits the software you'll be working with, if any, in this case your version of T-Flow.

    Note, that installing via ubuntu's standard package manager via clicking probably won't work appropriately.

    Instead, you'll probably have to follow these instructions in the terminal to install .deb pakage. After that you'll have to add a few lines to .bashrc, or wherever appropriate in your case. For example, if you're configuring a server, it's probably going to be a different place, maybe somewhere prior to your app's autolaunch, as .bashrc will probably not get executed in that case.

  3. Download CuDNN from NVidia

    I used the "Library for Linux" version, didn't have much luck with .deb packages.

  4. You can find where CUDA is located via which nvcc. Usually /usr/local/cuda/ will be a symbolic link to your currently installed version.

  5. Open CuDNN archive and copy appropriate contents into appropriate places within CUDA installation folder (cuda/lib64/ and cuda/include/). I usually sudo nautilus and do it from there visually.
9

Fast forward 2018 and NVIDIA now provides cuDNN 7.x for download. The installation steps are still similar with those described by @GPrathap. But if you want to replace the old cuDNN version with the newer one, you need to remove it first prior to the installation.

To recap:

Step 0. Verify that you already have installed CUDA toolkit. Proceed with CUDA toolkit installation if you haven't.

Step 1. Go to NVIDIA developer portal https://developer.nvidia.com/cudnn and download cuDNN.

Step 2. If you have previously installed cuDNN, remove it

sudo dpkg -r <old-cudnn-runtime>.deb
sudo dpkg -r <old-cudnn-dev>.deb

Step 3. Install the cuDNN library (runtime, dev, doc) using dpkg

sudo dpkg -i <new-cudnn-runtime>.deb
sudo dpkg -i <new-cudnn-dev>.deb
sudo ldconfig

Step 4. If you want to find where the library was installed you can update the locate index and then find the library location.

sudo updatedb
locate libcudnn

If you are specifically installing cuDNN 7.x against CUDA toolkit 9.1, this article provides more elaboration that can be of some help: http://tech.amikelive.com/node-679/quick-tip-installing-cuda-deep-neural-network-7-cudnn-7-x-library-for-cuda-toolkit-9-1-on-ubuntu-16-04/

3
  • Thanks @Mike, do you know what the difference is between using the deb files and the ordinary .tar file? which one is recommended and why? (By the way I myself used to install CUDA using the runfile and also use the .tar package for cuDNN in ubuntu)
    – Hossein
    Apr 6, 2018 at 19:21
  • According to the relevant installation documents from Nvidia, what you say about having to remove the old versions is not correct: cuDNN v7 can coexist with previous versions of cuDNN, such as v5 or v6.
    – n1k31t4
    Apr 30, 2018 at 23:13
  • Please provide any relevant affiliations given with your answer. Note: askubuntu.com/help/promotion
    – andrew.46
    Dec 1, 2023 at 8:15
3

Also, you can download the deb packages for Debian based distributions.

From the NVIDIA web page, for the developer profile are available the next files :

  • cuDNN v5.1 Runtime Library for Linux (Deb)
  • cuDNN v5.1 Developer Library for Linux (Deb)
  • cuDNN v5.1 Code Samples and User Guide Linux (Deb)

I tested this, over my machine with Debian (Stretch) and TensorFlow is working !

1
2

Adding an important detail to the still valid answers by @Martin Thoma and @Íhor Mé: After copying the libcudnn files to the cuda directories, you must update your .bashrc file:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda

You must then add the include directory to any config file that uses it. Caffe e.g. has a config file which you must edit before compiling with make. For this, edit caffe/Makefile.config to add the paths to these config variables(add whitespace between paths):

INCLUDE_DIRS: /usr/local/caffe/cuda/include/ 
LIBRARY_DIRS: /usr/local/cuda/lib64/

For every current terminal window you want these changes to be effective, don't forget to execute the file once!

. ~/.bashrc
0

the answer is correct but for cuDNN 5.1 some names have been changed. So if you use this version after extracting the cuDNN file you will find two folder: lib and include. change the name of *.h file in include folder to cudnn.h and then follow https://askubuntu.com/a/767270/641589. this change is needed if you wanted to use cuDNN for Caffe!

1
  • Please edit your answer and add the reference, 'the instruction above'.
    – sudodus
    Jan 12, 2017 at 18:42
0

In 16.04 if you are installing CUDA directly from Nvidia's website and you are also building Tensorflow from source then you can specificy the directory you want to indicate as being Cudnn. By default it is :

/usr/include/x86_64-linux-gnu

When you are building Tensorflow it will ask you which version you want to indicate you are using for Cudnn. Then after that it will ask where is it located. Just indicate the directory above and it will work fine. It should create a wheel file at that point and you can install it with pip.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .