forked from PaddlePaddle/CINN
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.sh
executable file
·158 lines (133 loc) · 3.43 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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#!/bin/bash
set -ex
workspace=$PWD
build_dir=$workspace/build
JOBS=8
cuda_config=OFF
function gpu_on {
cuda_config=ON
}
function check_style {
export PATH=/usr/bin:$PATH
#pre-commit install
clang-format --version
if ! pre-commit run -a ; then
git diff
exit 1
fi
}
function prepare {
mkdir -p $build_dir
cd $build_dir
mkdir -p tests
mkdir -p cinn/backends
}
function prepare_llvm {
cd $workspace
clang++ -mavx2 -masm=intel -S -emit-llvm cinn/runtime/cinn_runtime.cc -I$PWD
cd -
export runtime_include_dir=$workspace/cinn/runtime/cuda
export PATH=${LLVM11_DIR}/bin:$PATH
}
function cmake_ {
prepare
mkdir -p $build_dir
cp $workspace/cmake/config.cmake $build_dir
echo "set(ISL_HOME /usr/local)" >> $build_dir/config.cmake
# To enable Cuda backend, set(WITH_CUDA ON)
echo "set(WITH_CUDA $cuda_config)" >> $build_dir/config.cmake
echo "set(WITH_MKL_CBLAS ON)" >> $build_dir/config.cmake
cd $build_dir
cmake .. -DLLVM_DIR=${LLVM11_DIR}/lib/cmake/llvm -DMLIR_DIR=${LLVM11_DIR}/lib/cmake/mlir
make GEN_LLVM_RUNTIME_IR_HEADER
# make the code generated compilable
sed -i 's/0git/0/g' $build_dir/cinn/backends/llvm/cinn_runtime_llvm_ir.h
}
function prepare_model {
cd $build_dir/thirds
if [[ ! -f "ResNet18.tar" ]]; then
wget http://paddle-inference-dist.bj.bcebos.com/CINN/ResNet18.tar
tar -xvf ResNet18.tar
fi
if [[ ! -f "MobileNetV2.tar" ]]; then
wget http://paddle-inference-dist.bj.bcebos.com/CINN/MobileNetV2.tar
tar -xvf MobileNetV2.tar
fi
if [[ ! -f "EfficientNet.tar" ]]; then
wget http://paddle-inference-dist.bj.bcebos.com/CINN/EfficientNet.tar
tar -xvf EfficientNet.tar
fi
python $workspace/python/tests/fake_model/naive_mul.py
python $workspace/python/tests/fake_model/naive_multi_fc.py
python $workspace/python/tests/fake_model/resnet_model.py
}
function build {
cd $build_dir
# build gtest first, it tends to broke the CI
make extern_gtest
make test01_elementwise_add_main -j $JOBS
make test02_matmul_main -j $JOBS
make test03_conv_main -j $JOBS
make test_codegen_c -j $JOBS
if [[ $cuda_config == "ON" ]]; then
make test_codegen_cuda_dev -j $JOBS
ctest -R test_codegen_cuda_dev
fi
ctest -R test01_elementwise_add_main
ctest -R test02_matmul_main
ctest -R test03_conv_main
ctest -R "test_codegen_c$"
make -j $JOBS
}
function run_test {
cd $build_dir
ctest --parallel 10 -V
}
function CI {
mkdir -p $build_dir
cd $build_dir
prepare_llvm
cmake_
build
prepare_model
run_test
}
function main {
# Parse command line.
for i in "$@"; do
case $i in
gpu_on)
gpu_on
shift
;;
check_style)
check_style
shift
;;
cmake)
cmake_
shift
;;
build)
build
shift
;;
test)
run_test
shift
;;
ci)
CI
shift
;;
prepare_model)
prepare_model
shift
;;
prepare_llvm)
prepare_llvm
;;
esac
done
}
main $@