Skip to content
Snippets Groups Projects
Select Git revision
  • 8e5ea3fc992c05e6c39b511150d726cc7dfb3b10
  • master default protected
2 results

tensorflow-gpu.def

Blame
  • tensorflow-gpu.def 13.38 KiB
    Bootstrap: debootstrap
    MirrorURL: http://us.archive.ubuntu.com/ubuntu
    OSVersion: xenial
    
    %labels
    
        AUTHOR_NAME Marty Kandes
        AUTHOR_EMAIL mkandes@sdsc.edu
        APPLICATION_NAME tensorflow
        APPLICATION_VERSION 1.4
        APPLICATION_URL https://www.tensorflow.org/
        SYSTEM_NAME comet
        SYSTEM_SINGULARITY_VERSION 2.3.2
        SYSTEM_URL http://www.sdsc.edu/support/user_guides/comet.html
        VERSION 0.0.5
        LAST_UPDATED 20180108
    
    %setup
    
    %environment
    
    %post -c /bin/bash
    
        export LC_ALL=C
    
        apt-get -y install ubuntu-standard
        apt-get -y install ubuntu-server
    
        add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION} main"
        add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION} universe"
        add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION} multiverse"
        add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION} restricted"
    
        add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-updates main"
        add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-updates universe"
        add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-updates multiverse"
        add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-updates restricted"
    
        add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-backports main"
        add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-backports universe"
        add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-backports multiverse"
        add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-backports restricted"
    
        add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-security main"
        add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-security universe"
        add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-security multiverse"
        add-apt-repository -y "deb ${MIRRORURL} ${OSVERSION}-security restricted"
    
        apt-get -y update && apt-get -y upgrade
    
        mkdir /cvmfs /oasis /projects /scratch
    
        declare -r NVIDIA_ROOT_URL='http://developer.download.nvidia.com/compute'
        declare -r CUDA_REPO_URL="${NVIDIA_ROOT_URL}/cuda/repos/ubuntu1604/x86_64"
        declare -r ML_REPO_URL="${NVIDIA_ROOT_URL}/machine-learning/repos/ubuntu1604/x86_64/"
    
        apt-get -y install x11-common
        apt-get -y install xserver-xorg-core
        apt-get -y install cmake
        apt-get -y install make
        apt-get -y install dkms
        apt-get -y install linux-libc-dev
        apt-get -y install libc6-dev
        apt-get -y install lib32gcc1
        apt-get -y install libc6-i386
        apt-get -y install libgl1
        apt-get -y install libwayland-client0
        apt-get -y install libwayland-server0
        apt-get -y install pkg-config
        apt-get -y install screen-resolution-extra
        apt-get -y install libvdpau1
        apt-get -y install libatk1.0-0
        apt-get -y install libcairo-gobject2
        apt-get -y install libcairo2
        apt-get -y install libfontconfig1
        apt-get -y install libgdk-pixbuf2.0-0
        apt-get -y install libgtk-3-0
        apt-get -y install libgtk2.0-0
        apt-get -y install libjansson4
        apt-get -y install freeglut3-dev
        apt-get -y install libx11-dev
        apt-get -y install libxmu-dev
        apt-get -y install libxi-dev
        apt-get -y install libglu1-mesa
        apt-get -y install libglu1-mesa-dev
        apt-get -y install default-jre
    
        cd /opt
    
        wget --wait=10 "${CUDA_REPO_URL}/nvidia-367_367.48-0ubuntu1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/nvidia-367-dev_367.48-0ubuntu1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/nvidia-modprobe_367.48-0ubuntu1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/libcuda1-367_367.48-0ubuntu1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/nvidia-libopencl1-367_367.48-0ubuntu1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/nvidia-opencl-icd-367_367.48-0ubuntu1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/libxnvctrl0_367.48-0ubuntu1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/nvidia-settings_367.48-0ubuntu1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-drivers_367.48-1_amd64.deb"
    
        wget --wait=10 "${CUDA_REPO_URL}/cuda-license-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-misc-headers-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-core-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-cudart-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-driver-dev-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-cudart-dev-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-command-line-tools-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-nvrtc-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-nvrtc-dev-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-nvml-dev-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-nvgraph-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-nvgraph-dev-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-cusolver-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-cusolver-dev-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-cublas-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-cublas-dev-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-cufft-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-cufft-dev-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-curand-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-curand-dev-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-cusparse-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-cusparse-dev-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-npp-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-npp-dev-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-samples-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-documentation-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-visual-tools-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-toolkit-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-runtime-8-0_8.0.44-1_amd64.deb"
        wget --wait=10 "${CUDA_REPO_URL}/cuda-demo-suite-8-0_8.0.44-1_amd64.deb"
    
        wget --wait=10 "${ML_REPO_URL}/libcudnn6_6.0.21-1+cuda8.0_amd64.deb"
        wget --wait=10 "${ML_REPO_URL}/libcudnn6-dev_6.0.21-1+cuda8.0_amd64.deb"
    
        wget --wait=10 "${ML_REPO_URL}/libnccl2_2.1.2-1+cuda8.0_amd64.deb"
        wget --wait=10 "${ML_REPO_URL}/libnccl-dev_2.1.2-1+cuda8.0_amd64.deb"
    
        dpkg -i nvidia-367_367.48-0ubuntu1_amd64.deb
        dpkg -i nvidia-367-dev_367.48-0ubuntu1_amd64.deb
        dpkg -i nvidia-modprobe_367.48-0ubuntu1_amd64.deb
        dpkg -i libcuda1-367_367.48-0ubuntu1_amd64.deb
        dpkg -i nvidia-libopencl1-367_367.48-0ubuntu1_amd64.deb
        dpkg -i nvidia-opencl-icd-367_367.48-0ubuntu1_amd64.deb
        dpkg -i libxnvctrl0_367.48-0ubuntu1_amd64.deb
        dpkg -i nvidia-settings_367.48-0ubuntu1_amd64.deb
        dpkg -i cuda-drivers_367.48-1_amd64.deb
    
        dpkg -i cuda-license-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-misc-headers-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-core-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-cudart-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-driver-dev-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-cudart-dev-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-command-line-tools-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-nvrtc-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-nvrtc-dev-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-nvml-dev-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-nvgraph-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-nvgraph-dev-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-cusolver-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-cusolver-dev-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-cublas-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-cublas-dev-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-cufft-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-cufft-dev-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-curand-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-curand-dev-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-cusparse-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-cusparse-dev-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-npp-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-npp-dev-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-samples-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-documentation-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-visual-tools-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-toolkit-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-runtime-8-0_8.0.44-1_amd64.deb
        dpkg -i cuda-demo-suite-8-0_8.0.44-1_amd64.deb
    
        dpkg -i libcudnn6_6.0.21-1+cuda8.0_amd64.deb
        dpkg -i libcudnn6-dev_6.0.21-1+cuda8.0_amd64.deb
    
        dpkg -i libnccl2_2.1.2-1+cuda8.0_amd64.deb
        dpkg -i libnccl-dev_2.1.2-1+cuda8.0_amd64.deb
    
        export PATH="/usr/local/cuda-8.0/bin${PATH:+:${PATH}}"
        export LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
    
        #echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | tee /etc/apt/sources.list.d/bazel.list
        #curl https://bazel.build/bazel-release.pub.gpg | apt-key add -
    
        apt-get -y update
        apt-get -y install openjdk-8-jdk
        #apt-get -y install bazel
        apt-get -y install expect
        apt-get -y install python-dev
        apt-get -y install python3-numpy 
        apt-get -y install python3-dev 
        apt-get -y install python3-pip 
        apt-get -y install python3-wheel
        apt-get -y install libcupti-dev
        apt-get -y install zlib1g-dev
    
        wget https://github.com/bazelbuild/bazel/releases/download/0.8.1/bazel_0.8.1-linux-x86_64.deb
        dpkg -i bazel_0.8.1-linux-x86_64.deb
    
        git clone https://github.com/tensorflow/tensorflow 
        cd tensorflow
        git checkout r1.4
    
        echo '#!/usr/bin/expect -f' > configure.exp
        echo 'spawn ./configure' >> configure.exp
        echo 'expect "Please specify the location of python. \[Default is /usr/bin/python\]: "' >> configure.exp
        echo 'send "/usr/bin/python3\r"' >> configure.exp
        echo 'expect "Please input the desired Python library path to use.  Default is \[/usr/local/lib/python2.7/dist-packages\]\r"' >> configure.exp
        echo 'send "/usr/local/lib/python3.5/dist-packages\r"' >> configure.exp
        echo 'expect "Do you wish to build TensorFlow with jemalloc as malloc support? \[Y/n\]: "' >> configure.exp
        echo 'send "Y\r"' >> configure.exp
        echo 'expect "Do you wish to build TensorFlow with Google Cloud Platform support? \[Y/n\]: "' >> configure.exp
        echo 'send "N\r"' >> configure.exp
        echo 'expect "Do you wish to build TensorFlow with Hadoop File System support? \[Y/n\]: "' >> configure.exp
        echo 'send "N\r"' >> configure.exp
        echo 'expect "Do you wish to build TensorFlow with Amazon S3 File System support? \[Y/n\]: "' >> configure.exp
        echo 'send "N\r"' >> configure.exp
        echo 'expect "Do you wish to build TensorFlow with XLA JIT support? \[y/N\]: "' >> configure.exp
        echo 'send "N\r"' >> configure.exp
        echo 'expect "Do you wish to build TensorFlow with GDR support? \[y/N\]: "' >> configure.exp
        echo 'send "N\r"' >> configure.exp
        echo 'expect "Do you wish to build TensorFlow with VERBS support? \[y/N\]: "' >> configure.exp
        echo 'send "N\r"' >> configure.exp
        echo 'expect "Do you wish to build TensorFlow with OpenCL support? \[y/N\]: "' >> configure.exp
        echo 'send "N\r"' >> configure.exp
        echo 'expect "Do you wish to build TensorFlow with CUDA support? \[y/N\]: "' >> configure.exp
        echo 'send "Y\r"' >> configure.exp
        echo 'expect "Please specify the CUDA SDK version you want to use, e.g. 7.0. \[Leave empty to default to CUDA 8.0\]: "' >> configure.exp
        echo 'send "8.0\r"' >> configure.exp
        echo 'expect "Please specify the location where CUDA 8.0 toolkit is installed. Refer to README.md for more details. \[Default is /usr/local/cuda\]: "' >> configure.exp
        echo 'send "/usr/local/cuda\r"' >> configure.exp
        echo 'expect "Please specify the cuDNN version you want to use. \[Leave empty to default to cuDNN 6.0\]: "' >> configure.exp
        echo 'send "6.0.21\r"' >> configure.exp
        echo 'expect "Please specify the location where cuDNN 6.0.21 library is installed. Refer to README.md for more details. \[Default is /usr/local/cuda\]: "' >> configure.exp
        echo 'send "/usr/lib/x86_64-linux-gnu\r"' >> configure.exp
        echo 'expect "Please specify a list of comma-separated Cuda compute capabilities you want to build with.\r"' >> configure.exp
        echo 'expect "You can find the compute capability of your device at: https://developer.nvidia.com/cuda-gpus.\r"' >> configure.exp
        echo 'expect "Please note that each additional compute capability significantly increases your build time and binary size. \[Default is: 3.5,5.2\]"' >> configure.exp
        echo 'send "3.7,6.0\r"' >> configure.exp
        echo 'expect "Do you want to use clang as CUDA compiler? \[y/N\]: "' >> configure.exp
        echo 'send "N\r"' >> configure.exp
        echo 'expect "Please specify which gcc should be used by nvcc as the host compiler. \[Default is /usr/bin/gcc\]: "' >> configure.exp
        echo 'send "/usr/bin/gcc\r"' >> configure.exp
        echo 'expect "Do you wish to build TensorFlow with MPI support? \[y/N\]: "' >> configure.exp
        echo 'send "N\r"' >> configure.exp
        echo 'expect ": "' >> configure.exp
        echo 'send " -march=native\r"' >> configure.exp
        echo 'expect "> "' >> configure.exp
    
        chmod +x configure.exp
        ./configure.exp
    
        bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
        bazel-bin/tensorflow/tools/pip_package/build_pip_package /opt/tensorflow_pkg
    
        pip3 install /opt/tensorflow_pkg/tensorflow-1.4.1-cp35-cp35m-linux_x86_64.whl
    
        apt-get -y install python3-scipy
        
    %files
    
    %runscript
    
    %test
    
        time -p python3 /opt/tensorflow/tensorflow/examples/tutorials/mnist/mnist_deep.py