Improve to TF build image and scripts incl AVX2 support #83

This commit is contained in:
Michael Mayer 2019-06-27 03:22:09 +02:00
parent 1e6f1795c2
commit 852d13797a
4 changed files with 37 additions and 25 deletions

View file

@ -11,14 +11,10 @@ build --action_env TF_CUDA_CLANG="0"
build --action_env TF_CUDA_VERSION="10"
build --action_env GCC_HOST_COMPILER_PATH="/usr/bin/gcc-4.8"
build --verbose_failures
build:opt --copt=-march=core-avx-i
build:opt --copt=-Wno-sign-compare
build:opt --conlyopt=-std=c11
# build:opt --conlyopt=-D_XOPEN_SOURCE=600
build:opt --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0"
build:opt --host_copt=-march=core-avx-i
build:opt --host_conlyopt=-std=c11
# build:opt --host_conlyopt=-D_XOPEN_SOURCE=600
build:opt --host_cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0"
build:opt --host_copt=-Wno-sign-compare
build:opt --define with_default_optimizations=true

View file

@ -49,19 +49,16 @@ RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 10 && \
# Download Bazel & TensorFlow
WORKDIR "/home/tensorflow"
RUN wget https://github.com/tensorflow/tensorflow/archive/v1.14.0.tar.gz
RUN wget https://github.com/bazelbuild/bazel/releases/download/0.24.1/bazel-0.24.1-dist.zip
RUN tar -xzf v1.14.0.tar.gz
# Build Bazel
WORKDIR "/home/tensorflow/bazel-0.24.1"
RUN unzip ../bazel-0.24.1-dist.zip
RUN bash ./compile.sh
RUN cp output/bazel /usr/local/bin/bazel
# Install Bazel
RUN wget https://github.com/bazelbuild/bazel/releases/download/0.24.1/bazel-0.24.1-linux-x86_64
RUN mv bazel-0.24.1-linux-x86_64 /usr/local/bin/bazel && chmod 755 /usr/local/bin/bazel
# Configure TensorFlow
WORKDIR "/home/tensorflow/tensorflow-1.14.0"
COPY /docker/tensorflow/*.sh .
COPY /docker/tensorflow/*.diff .
COPY /docker/tensorflow/*.sh ./
COPY /docker/tensorflow/*.diff ./
COPY /docker/tensorflow/.tf_configure.bazelrc .tf_configure.bazelrc
COPY /docker/tensorflow/Makefile Makefile
RUN make patch

View file

@ -1,19 +1,18 @@
TF_VERSION=1.14.0
all: libtensorflow static archive
# -march see https://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/i386-and-x86-64-Options.html
all: libtensorflow libtensorflow-avx libtensorflow-avx2
patch:
git apply tensorflow-$(TF_VERSION).diff
libtensorflow:
bazel build --jobs 2 --config=opt //tensorflow:libtensorflow.so
bazel build --jobs 2 --config=opt //tensorflow:libtensorflow.so --copt=-march=i686 --host_copt=-i686
./create_archive.sh linux-i686 $(TF_VERSION)
libtensorflow-avx:
bazel build --jobs 2 --config=opt //tensorflow:libtensorflow.so --copt=-march=core-avx-i --host_copt=-march=core-avx-i
./create_archive.sh linux-avx $(TF_VERSION)
libtensorflow-avx2:
bazel build --jobs 2 --config=opt //tensorflow:libtensorflow.so --copt=-march=core-avx2 --host_copt=-march=core-avx2
./create_archive.sh linux-avx2 $(TF_VERSION)
static:
env JOB_COUNT=2 ARCH=core-avx-i ./build_static.sh
archive:
rm -rf tmp
mkdir -p tmp/lib/
mkdir -p tmp/include/tensorflow/c/eager/
cp bazel-bin/tensorflow/libtensorflow.so.$(TF_VERSION) tmp/lib/libtensorflow.so
cp bazel-bin/tensorflow/libtensorflow_framework.so.$(TF_VERSION) tmp/lib/libtensorflow_framework.so
cp tensorflow/c/eager/c_api.h tmp/include/tensorflow/c/eager/
cp tensorflow/c/c_api.h tensorflow/c/c_api_experimental.h LICENSE tmp/include/tensorflow/c/
(cd tmp && tar -czf ../libtensorflow-linux-avx-$(TF_VERSION).tar.gz .)
du -h libtensorflow-linux-avx-$(TF_VERSION).tar.gz
env JOB_COUNT=2 ARCH=i686 ./build_static.sh

View file

@ -0,0 +1,20 @@
#!/usr/bin/env bash
if [[ -z $1 ]] || [[ -z $2 ]]; then
echo "Usage: $0 [platform] [tf-version]" 1>&2
exit 1
fi
echo "Creating 'libtensorflow-$1-$2.tar.gz'...";
rm -rf tmp
mkdir -p tmp/lib/
mkdir -p tmp/include/tensorflow/c/eager/
cp bazel-bin/tensorflow/libtensorflow.so.$2 tmp/lib/libtensorflow.so
cp bazel-bin/tensorflow/libtensorflow_framework.so.$2 tmp/lib/libtensorflow_framework.so
cp tensorflow/c/eager/c_api.h tmp/include/tensorflow/c/eager/
cp tensorflow/c/c_api.h tensorflow/c/c_api_experimental.h LICENSE tmp/include/tensorflow/c/
(cd tmp && tar -czf ../libtensorflow-$1-$2.tar.gz .)
du -h libtensorflow-$1-$2.tar.gz
echo "Done"