Skip to content

Instantly share code, notes, and snippets.

@cmd-ntrf
Last active July 20, 2016 16:12
Show Gist options
  • Save cmd-ntrf/84b9525bfb0d425455927f7fed6ed6ba to your computer and use it in GitHub Desktop.
Save cmd-ntrf/84b9525bfb0d425455927f7fed6ed6ba to your computer and use it in GitHub Desktop.

Compile Bazel 0.2.3

module purge -f
module load compilers/gcc/4.8.5 compilers/java/1.8 apps/buildtools

cd /software-gpu/src/
mkdir bazel023_tensorflow0.8
cd bazel023_tensorflow0.8

wget https://github.com/bazelbuild/bazel/archive/0.2.3.tar.gz
tar xvf 0.2.3.tar.gz

cd bazel-0.2.3
# Path
cp tools/cpp/CROSSTOOL{,.orig}
for tool in gcc cpp gcov ar ld dwp nm objdump objcopy strip; do
  sed -i "s;/usr/bin/$tool;$(which $tool);g" tools/cpp/CROSSTOOL
done
GCC_PREFIX=$(dirname $(dirname $(which gcc)))
sed -i "\;linker_flag: \"-B/usr/bin/\";a \
\ \ linker_flag: \"-Wl,-rpath=$GCC_PREFIX/lib64\"" tools/cpp/CROSSTOOL
sed -i "\;linker_flag: \"-B/usr/bin/\";a \
\ \ linker_flag: \"-Wl,-rpath=$GCC_PREFIX/lib\"" tools/cpp/CROSSTOOL

# Include directory
for path in $(find $GCC_PREFIX -name include\*); do
  sed -i "\;cxx_builtin_include_directory: \"/usr/local/include\"; a \
  \ \ cxx_builtin_include_directory: \"$path\"" tools/cpp/CROSSTOOL
done 

# Replace "-B/usr/bin"
TOOLS_PREFIX=$(dirname $(which ar))
sed -i "s;-B/usr/bin;-B$TOOLS_PREFIX;g" tools/cpp/CROSSTOOL tools/cpp/cc_configure.bzl 

export MALLOC_ARENA_MAX=4
./compile.sh

Compile Tensorflow 0.8.0 with Bazel 0.2.3

module purge -f
module load compilers/gcc/4.8.5 compilers/java/1.8 apps/buildtools cuda/7.5 libs/cuDNN/5 compilers/swig apps/git

cd /software-gpu/src/
mkdir -p bazel023_tensorflow0.8
cd bazel023_tensorflow0.8

git clone --recurse-submodule [email protected]:tensorflow/tensorflow.git
cd tensorflow
git checkout v0.8.0

cp third_party/gpus/crosstool/CROSSTOOL{,.orig}
for tool in gcc cpp gcov ar ld dwp nm objdump objcopy strip; do
  sed -i "s;/usr/bin/$tool;$(which $tool);g" third_party/gpus/crosstool/CROSSTOOL
done

GCC_PREFIX=$(dirname $(dirname $(which gcc)))
sed -i "\;linker_flag: \"-B/usr/bin/\";a \
\ \ linker_flag: \"-Wl,-rpath=$GCC_PREFIX/lib64\"" third_party/gpus/crosstool/CROSSTOOL
sed -i "\;linker_flag: \"-B/usr/bin/\";a \
\ \ linker_flag: \"-Wl,-rpath=$GCC_PREFIX/lib\"" third_party/gpus/crosstool/CROSSTOOL

# Include directory
for path in $(find $GCC_PREFIX -name include\*); do
  sed -i "\;cxx_builtin_include_directory: \"/usr/local/include\"; a \
  \ \ cxx_builtin_include_directory: \"$path\"" third_party/gpus/crosstool/CROSSTOOL
done 

# Replace "-B/usr/bin"
TOOLS_PREFIX=$(dirname $(which ar))
sed -i "s;-B/usr/bin;-B$TOOLS_PREFIX;g" third_party/gpus/crosstool/CROSSTOOL


# Python deps
module load apps/python/2.7.10
virtualenv venv2
source venv2/bin/activate
pip install numpy argparse

# Configure
./configure
# Python - default
# with GPU : Y
# GCC - default
# CUDA version: 7.5
# CUDA path : /software-gpu/cuda/7.5.18
# cuDNN : 5
# cuDNN path : /software-gpu/libs/cuDNN/5_cuda7.5
# Compute capability : 3.5,3.7

# Swig wrapper patch
sed -i "1 s;^.*$;#!$VIRTUAL_ENV/bin/python;" third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc
sed -i "/cmd = 'PATH=' + PREFIX_DIR + ' ' + cmd/s/^/#/" third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc

# Patch wheel script for Bazel 0.2.3
sed -i 's;build_pip_package.runfiles;build_pip_package.runfiles/__main__;' tensorflow/tools/pip_package/build_pip_package.sh

export BAZEL_PREFIX=/software-gpu/src/bazel023_tensorflow0.8/bazel-0.2.3/output
export MALLOC_ARENA_MAX=4

$BAZEL_PREFIX/bazel build -c opt --config=cuda --copt="-I$VIRTUAL_ENV/include/python2.7" --copt="-I$VIRTUAL_ENV/lib/python2.7/site-packages/numpy/core/include" --copt='-fabi-version=6' --linkopt='-lrt'  //tensorflow/tools/pip_package:build_pip_package --verbose_failures --jobs 40
# compiling ...

# Creating wheel
mkdir dist
bazel-bin/tensorflow/tools/pip_package/build_pip_package $PWD/dist
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment