-
-
Save muendelezaji/5a0b7d343f8656021f0ab96e50dc5c65 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
This file contains hidden or 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
#!/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
Thanks for the detailed steps.
any idea how to build ComputeCPP support?
I'm trying to cross-compile tensorflow for arm64, I think we need to build computecpp for host isn't it? let me share the details about it.
Thanks.