These are good instructions here for getting CUDA libraries and updates. Here’s a summary of what I did.

Ubuntu Server 14.04 LTS AMI (g2.2xlarge)

This is a summary of the step that I took.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y build-essential git python-pip libfreetype6-dev libxft-dev libncurses-dev libopenblas-dev gfortran python-matplotlib libblas-dev liblapack-dev libatlas-base-dev python-dev python-pydot linux-headers-generic linux-image-extra-virtual unzip python-numpy swig python-pandas python-sklearn unzip wget pkg-config zip g++ zlib1g-dev
sudo pip install -U pip

Cuda Libraries

You can go to cuda-downloads. Or, if you’re doing this for ubuntu, you can just follow the steps below.

wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1504/x86_64/cuda-repo-ubuntu1504_7.5-18_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1504_7.5-18_amd64.deb
sudo apt-get update
sudo apt-get install cuda

CuDNN

You need to make sure all the libraries get installed. This includes CuDNN https://developer.nvidia.com/cudnn

I took a chance, and install v5. Note, v4 is recummended; however, I haven’t had and problems with v5.

tar -xzf cudnn-7.5-linux-x64-v5.0-rc.tgz
cd cuda
sudo cp ./lib64/* /usr/local/cuda/lib64/
sudo cp ./include/* /usr/local/include/

Environment variables

You should add the last two lines to your .bashrc

tail -n3 .bashrc
export PATH="/home/ubuntu/anaconda3/bin:$PATH"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
export CUDA_HOME=/usr/local/cuda

Anaconda

I also installed Anaconda Python 3.5 64bit

bash ./Anaconda3-4.0.0-Linux-x86_64.sh

After it’s installed, update anaconda

yes|conda update conda
yes|conda update anaconda

Tensorflow for Anaconda

You have to rename the tensorflow-0.x*-cp34-cp34m*.whl file. Note that cp34 and cp34m stands for the python version. If you’re running 3.5, you’ll need to change this. See the steps below..

# Download and rename the file
wget https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0-cp34-cp34m-linux_x86_64.whl
mv tensorflow-0.8.0-cp34-cp34m-linux_x86_64.whl tensorflow-0.8.0-cp35-cp35m-linux_x86_64.whl
#
pip install --ignore-installed --upgrade tensorflow-0.8.0-cp35-cp35m-linux_x86_64.whl

Test

>>> import tensorflow as tf
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcurand.so locally
>>

Jupyter

I also use Jupyter for a non-docker version as well… Here’s my setup file. I have a /kaggle directory where my source is kept. You’ll want to change this to whatever directory you use.

Docker Instructions

Take a look at install docker on ubuntu.

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

You have to create /etc/apt/sources.list.d/docker.list and add the following text

/etc/apt/sources.list.d/docker.list

deb https://apt.dockerproject.org/repo ubuntu-trusty main

Hence

cat /etc/apt/sources.list.d/docker.list
# You should see the following:
# deb https://apt.dockerproject.org/repo ubuntu-trusty main

Next, you’ve got to do a lot of updates…

sudo apt-get update
sudo apt-get purge lxc-docker
apt-cache policy docker-engine
sudo apt-get update
sudo apt-get install linux-image-extra-$(uname -r)
sudo apt-get install linux-image-generic-lts-trusty

# Yeah, you have to reboot
sudo reboot

sudo apt-get install docker-engine
sudo service docker start

# Test it
sudo docker run hello-world

TensorFlow

You’ll want to modify the docker_run_gpu.sh to allow access to the necessary ports. Or, you can just download the fixed docker_run_gpu.sh

# These are the changes I made to docker_run_gpu.sh
docker run -p 8888:8888 -p 6006:6006 -it $CUDA_SO $DEVICES "$@"

Once it’s modified, you’ll want to pull down the latest tensorflow gpu version.

./docker_run_gpu.sh gcr.io/tensorflow/tensorflow:latest-gpu

Check out the Tensorflow docs for more info on how to grab the docker image.