Running Theano

Theano is available on HCC resources via the modules system.  CPU versions are available on Tusker; both CPU and GPU versions are available on Crane.  Additionally, installs for both Python 2.7 and 3.6 are provided.

Initial Setup

Theano attempts to write to a ~/.theano directory in some circumstances, which can cause errors as the /home filesystem is read-only on HCC machines.  As a workaround, create the directory on /work and make a symlink from /home:

Create & symlink .theano directory
mkdir -p $WORK/.theano
ln -s $WORK/.theano $HOME/.theano

This only needs to be done once on each HCC machine.

Running the CPU version

To use the CPU version, simply load the module and run your Python code.  You can choose between the Python 2.7, 3.5 or 3.6 environments:

Python 2.7 version
module load theano/py27/1.0
python my_python2_script.py

or

Python 3.5 version
module load theano/py35/1.0
python my_python3_script.py

or

Python 3.6 version
module load theano/py36/1.0
python my_python3_script.py

Running the GPU version

To use the GPU version, first create a ~/.theanorc file with the following contents (or append to an existing file as needed):

~/.theanorc
[global]
device = cuda

Next, load the theano module:

Load the theano module
module load theano/py27/0.9

To test the GPU support, start an interactive job on a GPU node and import the theano module within the Python interpreter.  You should see output similar to the following:

GPU support test
Python 2.7.15 | packaged by conda-forge | (default, May  8 2018, 14:46:53)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-15)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import theano
Using cuDNN version 7005 on context None
Mapped name None to device cuda: Tesla K20m (0000:03:00.0)