18
18
# *******************************************************************************
19
19
20
20
# Build oneDNN for aarch64.
21
-
22
21
set -o errexit -o pipefail -o noclobber
23
22
24
23
SCRIPT_DIR=" $( dirname " $( readlink -f " $0 " ) " ) "
25
24
25
+
26
+ # Function to clone and install Eigen
27
+ install_eigen () {
28
+ local eigen_repo=" https://gitlab.com/libeigen/eigen.git"
29
+ local eigen_commit=" aa6964bf3a34fd607837dd8123bc42465185c4f8"
30
+
31
+ echo " Cloning Eigen repository..."
32
+ if ! git clone " $eigen_repo " --depth 1; then
33
+ echo " Error: Failed to clone Eigen repository."
34
+ return 1
35
+ fi
36
+
37
+ cd eigen
38
+
39
+ if ! git fetch --depth 1 origin " $eigen_commit " || ! git checkout " $eigen_commit " ; then
40
+ echo " Error: Failed to fetch or checkout commit."
41
+ return 1
42
+ fi
43
+
44
+ cd ..
45
+
46
+ mkdir -p eigen-build && cd eigen-build
47
+
48
+ if ! cmake -DCMAKE_INSTALL_PREFIX=" ${EIGEN_INSTALL_PATH} " " $EIGEN_PATH " ; then
49
+ echo " Error: CMake configuration failed."
50
+ return 1
51
+ fi
52
+
53
+ # Build and install Eigen
54
+ echo " Building and installing Eigen..."
55
+ if ! make -s -j install; then
56
+ echo " Error: Build or installation failed."
57
+ return 1
58
+ fi
59
+
60
+ echo " Eigen installed successfully!"
61
+ }
62
+
26
63
# Defines MP, CC, CXX and OS.
27
64
source ${SCRIPT_DIR} /common_aarch64.sh
28
65
@@ -36,16 +73,32 @@ if [[ "$OS" == "Darwin" ]]; then
36
73
ONEDNN_THREADING=SEQ
37
74
fi
38
75
39
- set -x
40
- cmake \
41
- -Bbuild -S. \
76
+ CMAKE_OPTIONS=" -Bbuild -S. \
42
77
-DDNNL_AARCH64_USE_ACL=ON \
43
78
-DONEDNN_BUILD_GRAPH=0 \
44
- -DDNNL_CPU_RUNTIME=$ONEDNN_THREADING \
45
79
-DONEDNN_WERROR=ON \
46
80
-DDNNL_BUILD_FOR_CI=ON \
47
- -DONEDNN_TEST_SET=$ONEDNN_TEST_SET \
48
- -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE
81
+ -DONEDNN_TEST_SET=${ONEDNN_TEST_SET} \
82
+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \
83
+ "
84
+
85
+ if [[ " $SCHEDULER " == ' TP' ]]; then
86
+ # install eigen
87
+ export EIGEN_INSTALL_PATH=${EIGEN_INSTALL_PATH:- " $PWD " }
88
+ export EIGEN_PATH=${EIGEN_PATH:- " $PWD /eigen" }
89
+ install_eigen
90
+
91
+ CMAKE_OPTIONS=" ${CMAKE_OPTIONS} -DDNNL_CPU_RUNTIME=THREADPOOL \
92
+ -D_DNNL_TEST_THREADPOOL_IMPL=EIGEN -DEigen3_DIR=${EIGEN_INSTALL_PATH} /share/eigen3/cmake"
93
+ elif [[ " $SCHEDULER " == " OMP" ] || [ " $SCHEDULER " == " SEQ" ]]; then
94
+ CMAKE_OPTIONS=" ${CMAKE_OPTIONS} -DDNNL_CPU_RUNTIME=OMP"
95
+ else
96
+ echo " Only OMP, TP, SEQ schedulers supported, $SCHEDULER requested"
97
+ exit 1
98
+ fi
99
+
100
+ set -x
101
+ cmake ${CMAKE_OPTIONS}
49
102
50
103
cmake --build build $MP
51
104
set +x
0 commit comments