-
-
Save fabriciorsf/b911963d8b71987a236401c49f1b75d6 to your computer and use it in GitHub Desktop.
Theano and Keras setup on ubuntu with OpenCL on AMD card
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## install Catalyst proprietary | |
sudo ntfsfix /dev/sda2 | |
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.BAK | |
sudo apt-get remove --purge fglrx* | |
sudo apt-get install linux-headers-generic | |
sudo apt-get install fglrx xvba-va-driver libva-glx1 libva-egl1 vainfo | |
sudo amdconfig --initial | |
## install build essentials | |
sudo apt-get install g++ cmake | |
sudo apt-get update && sudo apt-get install build-essential | |
## install AMD APP SDK | |
tar -xvf AMD-APP-SDKInstaller-v3.0.130.136-GA-linux64.tar.bz2 | |
sudo ./AMD-APP-SDK-v3.0.130.136-GA-linux64.sh | |
## install libgpuarray | |
sudo apt-get install libssl0.9.8:i386 | |
sudo apt-get install libboost-all-dev | |
sudo apt-get install libgtest-dev | |
cd /usr/src/gtest | |
sudo cmake . | |
sudo make | |
sudo mv libg* /usr/lib/ | |
## download AMD acml library | |
mkdir /opt/programs/acml | |
tar -xvf acml-6.1.0.31-gfortran64.tgz -C /opt/programs/acml-6.1.0.31-gfortran64 | |
cd /opt/programs/ && ln -s acml-6.1.0.31-gfortran64 acml | |
echo 'export ACML_ROOT=/opt/programs/acml' >> /etc/profile.d/ACML.sh | |
echo 'export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:"${ACML_ROOT}/gfortran64/lib"' >> /etc/profile.d/ACML.sh | |
source /etc/profile.d/AMDAPPSDK.sh | |
source /etc/profile.d/ACML.sh | |
## clBlas | |
sudo apt-get install git | |
mkdir ~/git && cd ~/git | |
git clone https://github.com/clMathLibraries/clBLAS.git | |
## at file clBLAS/src/tests/correctness/blas-lapack.c, comment the lines 658, 673, 688 and 703 | |
cd clBLAS/ && mkdir build && cd build | |
sudo apt-cache search openblas | |
sudo apt-get install libopenblas-base libopenblas-dev | |
sudo apt-get install liblapack3gf liblapack-doc liblapack-dev | |
cmake ../src | |
make | |
sudo make install | |
## Prepare a separate python environment | |
## To to this, we recomend you install miniconda (we will use CONDA_ROOT to refer to the conda installation path) | |
conda create --name env_keras python=3 anaconda-client cython h5py nose numpy pip pytz pyyaml scipy | |
source activate env_keras | |
pip install dev | |
## libgpuarray | |
cd ~/git | |
git clone https://github.com/Theano/libgpuarray.git | |
cd libgpuarray | |
## here, maybe you must upgrade your cmake installation to version 3 | |
## to do this, run the commands commented bellow | |
#sudo add-apt-repository ppa:george-edison55/cmake-3.x | |
#sudo apt-get update && sudo apt-get upgrade cmake | |
mkdir Build && cd Build | |
cmake .. -DCMAKE_INSTALL_PREFIX=${CONDA_ROOT}/envs/env_keras/ -DCMAKE_BUILD_TYPE=Release -DOPENCL_INCLUDE_DIRS=${AMDAPPSDKROOT}/include | |
make | |
make install | |
cd .. | |
python setup.py build | |
sudo update-alternatives --set liblapack.so.3 /usr/lib/lapack/liblapack.so.3 | |
python setup.py install | |
## To test and check devices, run this commands | |
python -c "import pygpu; print(pygpu.init('opencl0:0').devname)" | |
python -c "import pygpu; print(pygpu.init('opencl0:1').devname)" | |
python -c "import pygpu; print(pygpu.init('opencl0:2').devname)" | |
## Theano | |
## here you also should run in a separate python environment | |
cd ~/git | |
pip install --upgrade --no-deps git+git://github.com/Theano/Theano.git | |
## An alternative method to install Theano is to clone the repository from GitHub and use the setup.py script | |
#git clone https://github.com/Theano/Theano | |
#cd Theano | |
#python setup.py install | |
## In order to get Theano (and Keras) to utilize our GPU rather than the CPU, we need to create a file named .theanorc in our home directory (if it does not already exist). | |
## This file stores various configurations for the Theano library. You can supply these values via command line argument with the THEANO_FLAGS variable; however, I find it more convenient to store global configurations inside the .theanorc file. | |
## With variable: THEANO_FLAGS=device=opencl0:0 python test.py | |
## With .theanorc file. | |
#nano ~/.theanorc | |
# [global] | |
# floatX = float32 | |
# device = opencl0:0 | |
## You can use Theano’s check1.py to check that OpenCL is available: | |
## http://deeplearning.net/software/theano/tutorial/using_gpu.html#id1 | |
## Only use CPU | |
THEANO_FLAGS=mode=FAST_RUN,device=cpu,floatX=float32 python check1.py | |
## CPU over OpenCL | |
THEANO_FLAGS=mode=FAST_RUN,device=opencl0:1,floatX=float32 python check1.py | |
## AMD GPU over OpenCL | |
THEANO_FLAGS=mode=FAST_RUN,device=opencl0:0,floatX=float32 python check1.py | |
## If you need help, see: | |
## https://www.robberphex.com/2016/05/521 | |
## http://www.pyimagesearch.com/2016/07/18/installing-keras-for-deep-learning/ | |
## https://github.com/Theano/libgpuarray/issues/203 | |
## https://github.com/Theano/Theano/issues/2936 | |
## Keras | |
pip install keras | |
## Maybe you have to change keras backend to use Theano (instead of TensorFlow). | |
## https://keras.io/backend/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment