Skip to content

Instantly share code, notes, and snippets.

@moeiscool
Forked from muendelezaji/build-tensorflow.sh
Created June 2, 2020 04:13
Show Gist options
  • Save moeiscool/ff32c777ee03ea94c2bab05b157ef70d to your computer and use it in GitHub Desktop.
Save moeiscool/ff32c777ee03ea94c2bab05b157ef70d to your computer and use it in GitHub Desktop.
Script to build TensorFlow from source. Platform is ARM64 (aka aarch64) with OpenCL support via Codeplay SYCL SDK
#!/bin/bash
# =============================================================
# UPDATE SOURCE
# =============================================================
# git clone https://github.com/tensorflow/tensorflow
# git checkout -- .
# git pull origin master
# TF_BRANCH=r1.8
TF_ROOT=/home/tensorflow
cd $TF_ROOT
for python_version in python2; do
echo "Build TensorFlow for Python version: ${python_version}"
# =============================================================
# CONFIGURATION
# =============================================================
export PYTHON_BIN_PATH=$(which ${python_version})
export PYTHON_LIB_PATH="$($PYTHON_BIN_PATH -c 'import site; print(site.getsitepackages()[0])')"
export PYTHONPATH=${TF_ROOT}/lib
export PYTHON_ARG=${TF_ROOT}/lib
export USE_DEFAULT_PYTHON_LIB_PATH=1
export TF_NEED_MKL=0
export TF_NEED_JEMALLOC=1
export TF_NEED_GCP=0
export TF_NEED_HDFS=0
export TF_ENABLE_XLA=0
export TF_NEED_OPENCL_SYCL=1
export TF_NEED_COMPUTECPP=1
export TF_USE_DOUBLE_SYCL=0
export TF_USE_HALF_SYCL=0
export COMPUTECPP_TOOLKIT_PATH=/home/compute-cpp/ComputeCpp-CE-0.9.0-Ubuntu-16.04-ARM_64
export TF_NEED_CUDA=0
export TF_NEED_VERBS=0
export TF_NEED_MPI=0
export TF_NEED_GDR=0
export TF_NEED_S3=0
export TF_NEED_KAFKA=0
export TF_DOWNLOAD_CLANG=0
export TF_SET_ANDROID_WORKSPACE=0
# export TF_SYCL_CROSS_TOOLCHAIN=$HOME/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu
# export TF_SYCL_CROSS_TOOLCHAIN_NAME=aarch64-linux-gnu
export TF_SYCL_BITCODE_TARGET=spirv64
export GCC_HOST_COMPILER_PATH=$(which gcc)
export HOST_C_COMPILER=$(which gcc)
export HOST_CXX_COMPILER=$(which g++)
export CC_OPT_FLAGS="-march=native"
# export CC_OPT_FLAGS="-march=armv8-a"
# =============================================================
# BUILD NEW VERSION
# =============================================================
# bazel clean
./configure
# Build TensorFlow (add -s to see executed commands)
# "--copt=" can be "-mavx -mavx2 -mfma -msse4.2 -mfpmath=both"
# Build python package (includes C library)
bazel build --config=sycl_arm -c opt --jobs=4 --verbose_failures --copt=-DNO_LOCAL_MEM--copt=-DEIGEN_DONT_VECTORIZE_SYCL --copt="-funsafe-math-optimizations" --copt="-ftree-vectorize" --copt="-fomit-frame-pointer" //tensorflow/tools/pip_package:build_pip_package
# Build C++ library
bazel build --config=sycl_arm -c opt --jobs=4 --verbose_failures --copt=-DNO_LOCAL_MEM--copt=-DEIGEN_DONT_VECTORIZE_SYCL --copt="-funsafe-math-optimizations" --copt="-ftree-vectorize" --copt="-fomit-frame-pointer" //tensorflow:libtensorflow_cc.so
# bazel build -c opt --copt="-funsafe-math-optimizations" --copt="-ftree-vectorize" --copt="-fomit-frame-pointer" --verbose_failures --jobs=4 //tensorflow:libtensorflow_cc.so
# Build TF pip package
bazel-bin/tensorflow/tools/pip_package/build_pip_package ${TF_ROOT}/pip/tensorflow_pkg
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment