Table Of Contents

This Page

Easy Installation of an optimized Theano on Ubuntu

These instruction was done for Ubuntu 11.04, 11.10 and 12.04. You can probably do something similar on older computer.

Note

It is possible to have a faster installation of Theano than the one these instructions will provide, but this will make the installation more complicated and/or may require that you buy software. This is a simple set of installation instructions that will leave you with a relatively well-optimized version that uses only free software. With more work or by investing money (i.e. buying a license to a proprietary BLAS implementation), it is possible to gain further performance.

Note

If you are behind a proxy, you must do some extra configuration steps before starting the installation. You must set the environment variable http_proxy to the proxy address. Using bash this is accomplished with the command export http_proxy="http://user:pass@my.site:port/" You can also provide the --proxy=[user:pass@]url:port parameter to pip. The [user:pass@] portion is optional.

Note

We use pip for 2 reasons. First, it allows “import module; module.test()” to work correctly. Second, the installation of NumPy 1.6 or 1.6.1 with easy_install raises an ImportError at the end of the installation. To my knowledge we can ignore this error, but this is not completely safe. easy_install with NumPy 1.5.1 does not raise this error.

Installation steps

Ubuntu 11.10/12.04/12.10:
  1. sudo apt-get install python-numpy python-scipy python-dev python-pip python-nose g++ libopenblas-dev git
  2. sudo pip install Theano
Ubuntu 11.04:
  1. sudo apt-get install python-numpy python-scipy python-dev python-pip python-nose g++ git libatlas3gf-base libatlas-dev
  2. sudo pip install Theano

Test the newly installed packages

  1. NumPy (~30s): python -c "import numpy; numpy.test()"
  2. SciPy (~1m): python -c "import scipy; scipy.test()"
  3. Theano (~30m): python -c "import theano; theano.test()"

Speed test Theano/BLAS

It is recommended to test your Theano/BLAS integration. There are many versions of BLAS that exist and there can be up to 10x speed difference between them. Also, having Theano link directly against BLAS instead of using NumPy/SciPy as an intermediate layer reduces the computational overhead. This is important for BLAS calls to ger, gemv and small gemm operations (automatically called when needed when you use dot()). To run the Theano/BLAS speed test:

python `python -c "import os, theano; print os.path.dirname(theano.__file__)"`/misc/check_blas.py

This will print a table with different versions of BLAS/numbers of threads on multiple CPUs and GPUs. It will also print some Theano/NumPy configuration information. Then, it will print the running time of the same benchmarks for your installation. Try to find a CPU similar to yours in the table, and check that the single-threaded timings are roughly the same.

Theano should link to a parallel version of Blas and use all cores when possible. By default it should use all cores. Set the environment variable “OMP_NUM_THREADS=N” to specify to use N threads.

Updating Theano

If you followed these installation instructions, you can execute this command to update only Theano:

sudo pip install --upgrade --no-deps theano

If you want to also installed NumPy/SciPy with pip instead of the system package, you can run this:

sudo pip install --upgrade theano

Bleeding edge

Do like in the section “Updating Theano”, but use git+git://github.com/Theano/Theano.git instead of theano.

Contributed GPU instruction

Basic configuration for the GPU Using the GPU.

Ubuntu 11.10/12.04 (probably work on 11.04 too):

sudo apt-add-repository ppa:ubuntu-x-swat/x-updates
sudo apt-get update
sudo apt-get install nvidia-current

Then you need to fetch latest CUDA tool kit (download ubuntu 11.04 32/64bit package) from here.

Then you install it like this:

chmod a+x XXX.sh
sudo ./XXX.sh

You probably need to change the default version of gcc as explained by Benjamin J. McCann:

sudo apt-get install nvidia-cuda-toolkit g++-4.4 gcc-4.4
# On Ubuntu 11.10 and 12.04, you probably need to change gcc-4.5 to gcc-4.6 on the next line.
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.5 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.4
sudo update-alternatives --config gcc

Test GPU configuration

THEANO_FLAGS=floatX=float32,device=gpu python /usr/lib/python2.*/site-packages/theano/misc/check_blas.py

Note

Ubuntu 10.04 LTS: default gcc version 4.4.3. gcc 4.1.2, 4.3.4 availables.

Ubuntu 11.04: default gcc version 4.5.2. gcc 4.4.5 availables.

Ubuntu 11.10: default gcc version 4.6.1. gcc 4.4.6 and 4.5.3 availables.

Ubuntu 12.04 LTS: default gcc version 4.6.3. gcc 4.4.7 and 4.5.3 availables.

Ubuntu 12.10: default gcc version 4.7.2. gcc 4.4.7, 4.5.4 and 4.6.3 availables.