How can I use Theano with GPU on Ubuntu 16.04?
Question: I use the following script to test if GPU is working:

    
    
    #!/usr/bin/env python
    from theano import function, config, shared, sandbox
    import theano.tensor as T
    import numpy
    import time
    
    vlen = 10 * 30 * 768  # 10 x #cores x # threads per core
    iters = 1000
    
    rng = numpy.random.RandomState(22)
    x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
    f = function([], T.exp(x))
    print f.maker.fgraph.toposort()
    t0 = time.time()
    for i in xrange(iters):
        r = f()
    t1 = time.time()
    print 'Looping %d times took' % iters, t1 - t0, 'seconds'
    print 'Result is', r
    if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):
        print('Used the cpu')
    else:
        print('Used the gpu')
    

When I run it, I get:

<http://pastebin.com/wM9jaGMF>

The interesting part is at the end:

    
    
    ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: ('nvcc return status', 1, 'for cmd', 'nvcc -shared -O3 -m64 -Xcompiler -DCUDA_NDARRAY_CUH=c72d035fdf91890f3b36710688069b2e,-DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION,-fPIC,-fvisibility=hidden -Xlinker -rpath,/home/moose/.theano/compiledir_Linux-4.4--generic-x86_64-with-Ubuntu-16.04-xenial-x86_64-2.7.11+-64/cuda_ndarray -I/home/moose/.local/lib/python2.7/site-packages/theano/sandbox/cuda -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/include/python2.7 -I/home/moose/.local/lib/python2.7/site-packages/theano/gof -o /home/moose/.theano/compiledir_Linux-4.4--generic-x86_64-with-Ubuntu-16.04-xenial-x86_64-2.7.11+-64/cuda_ndarray/cuda_ndarray.so mod.cu -L/usr/lib -lcublas -lpython2.7 -lcudart')
    WARNING (theano.sandbox.cuda): CUDA is installed, but device gpu is not available  (error: cuda unavailable)
    

## My system

  * I use Ubuntu 16.04.
  * I've installed CUDA through the standard repos (`V7.5.17`). `nvcc --version` works.
  * I've installed Theano via pip
  * I have CuDNN 4 (works with TensorFlow)
  * I set `CUDA_ROOT=/usr/bin/` and `LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/` (I'm not sure if that is correct)

My `~/.theanorc` is

    
    
    [global]
    exception_verbosity=high
    device=gpu
    floatX=float32
    
    [cuda]
    root=/usr/bin/
    

## Paths

I think the installation from the standard repos might make things different
from a manual installation. Here are some paths which might uncover some
problems:

    
    
    /usr/bin/nvcc
    /usr/lib/x86_64-linux-gnu/libcuda.so
    /usr/lib/x86_64-linux-gnu/libcudart.so
    /usr/lib/nvidia-cuda-toolkit
    /usr/include/cudnn.h
    

## Question

How can I make it work?


Answer: I'm not exactly sure what solved the issue, but one or both of the following
([source](http://deeplearning.net/software/theano/install_ubuntu.html))

    
    
    sudo apt-get install python-numpy python-scipy python-dev python-pip python-nose g++ libopenblas-dev libblas-dev git
    echo -e "\n[nvcc]\nflags=-D_FORCE_INLINES\n" >> ~/.theanorc
    

