/
build.sh
executable file
·94 lines (80 loc) · 2.98 KB
/
build.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/bin/bash
# This script setup an working environemnt for running glow tests and gtest driver.
# By default, we run with the enabled CPU backend and disabled OpenCL backend.
set -ex
export MAX_JOBS=8
install_pocl() {
sudo apt-get install -y ocl-icd-opencl-dev clinfo libhwloc-dev libclang-8-dev opencl-headers
git clone https://github.com/pocl/pocl.git
cd pocl && git checkout 368539f1b34ec84f94edd255961a39925b92066d && cd ../
mkdir build_pocl
cd build_pocl
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=/usr/bin/clang++-8 -DCMAKE_C_COMPILER=/usr/bin/clang-8 -DENABLE_ICD=ON ../pocl
make -j`nproc`
sudo make install
sudo mkdir -p /etc/OpenCL/vendors/
sudo cp /usr/local/etc/OpenCL/vendors/pocl.icd /etc/OpenCL/vendors/
clinfo
cd ../
}
# Install Glow dependencies
sudo apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main"
sudo apt-get update
sudo apt-get install -y llvm-8 clang-8 llvm-8-dev libpng-dev libgoogle-glog-dev
# Redirect clang
sudo ln -s /usr/bin/clang-8 /usr/bin/clang
sudo ln -s /usr/bin/clang++-8 /usr/bin/clang++
sudo ln -s /usr/bin/llvm-symbolizer-8 /usr/bin/llvm-symbolizer
sudo ln -s /usr/bin/llvm-config-8 /usr/bin/llvm-config-8.0
GLOW_DIR=$PWD
# Install ninja and (newest version of) cmake through pip
sudo pip install ninja cmake
hash cmake ninja
# Build glow
cd ${GLOW_DIR}
mkdir build && cd build
CMAKE_ARGS=("-DCMAKE_CXX_COMPILER=/usr/bin/clang++-8")
CMAKE_ARGS+=("-DCMAKE_C_COMPILER=/usr/bin/clang-8")
CMAKE_ARGS+=("-DCMAKE_CXX_COMPILER_LAUNCHER=sccache")
CMAKE_ARGS+=("-DCMAKE_C_COMPILER_LAUNCHER=sccache")
CMAKE_ARGS+=("-DCMAKE_CXX_FLAGS=-Werror")
CMAKE_ARGS+=("-DGLOW_WITH_CPU=ON")
CMAKE_ARGS+=("-DGLOW_WITH_HABANA=OFF")
if [[ "${CIRCLE_JOB}" == "ASAN" ]]; then
CMAKE_ARGS+=("-DGLOW_USE_SANITIZER='Address;Undefined'")
CMAKE_ARGS+=("-DGLOW_WITH_OPENCL=OFF")
CMAKE_ARGS+=("-DCMAKE_BUILD_TYPE=Release")
elif [[ "${CIRCLE_JOB}" == "TSAN" ]]; then
CMAKE_ARGS+=("-DGLOW_USE_SANITIZER='Thread'")
CMAKE_ARGS+=("-DGLOW_WITH_OPENCL=OFF")
elif [[ "$CIRCLE_JOB" == RELEASE_WITH_EXPENSIVE_TESTS ]]; then
# Download the models and tell cmake where to find them.
MODELS_DIR="$GLOW_DIR/downloaded_models"
DOWNLOAD_EXE="python $GLOW_DIR/utils/download_datasets_and_models.py --all-caffe2-models"
mkdir $MODELS_DIR
(
cd $MODELS_DIR
$DOWNLOAD_EXE
)
CMAKE_ARGS+=("-DGLOW_MODELS_DIR=$MODELS_DIR")
CMAKE_ARGS+=("-DGLOW_WITH_OPENCL=OFF")
CMAKE_ARGS+=("-DCMAKE_BUILD_TYPE=Release")
else
install_pocl
CMAKE_ARGS+=("-DCMAKE_BUILD_TYPE=Debug")
CMAKE_ARGS+=("-DGLOW_WITH_OPENCL=OFF")
if [[ "${CIRCLE_JOB}" == "SHARED" ]]; then
CMAKE_ARGS+=("-DBUILD_SHARED_LIBS=ON")
fi
fi
cmake -GNinja ${CMAKE_ARGS[*]} ../
ninja
# Build onnxifi test driver (Only for DEBUG mode)
if [[ "$CIRCLE_JOB" == DEBUG ]]; then
cd ${GLOW_DIR}
./tests/onnxifi/build_onnxifi_tests.sh
fi
# Report sccache hit/miss stats
if hash sccache 2>/dev/null; then
sccache --show-stats
fi