@@ -59,247 +59,16 @@ jobs:
5959 uses : ilammy/msvc-dev-cmd@v1
6060
6161 - name : Prepare platform settings
62- run : |
63- case "${{ matrix.platform }}" in
64- linux-x86_64)
65- echo "TOOLCHAIN_ASSET=sycl_linux.tar.gz" >> "$GITHUB_ENV"
66- echo "TBB_ASSET=oneapi-tbb-2022.3.0-lin.tgz" >> "$GITHUB_ENV"
67- echo "SYCL_TARGETS=spir64" >> "$GITHUB_ENV"
68- echo "DEVICE_SELECTOR=opencl:cpu" >> "$GITHUB_ENV"
69- echo "ITLABAI_ENABLE_OPENCV_APPS=ON" >> "$GITHUB_ENV"
70- echo "ITLABAI_OPENCV_DIR=/usr/lib/x86_64-linux-gnu/cmake/opencv4" >> "$GITHUB_ENV"
71- ;;
72- windows-x86_64)
73- echo "TOOLCHAIN_ASSET=sycl_windows.tar.gz" >> "$GITHUB_ENV"
74- echo "TBB_ASSET=oneapi-tbb-2022.3.0-win.zip" >> "$GITHUB_ENV"
75- echo "OPENCV_ASSET=opencv-4.13.0-windows.exe" >> "$GITHUB_ENV"
76- echo "SYCL_TARGETS=spir64" >> "$GITHUB_ENV"
77- echo "DEVICE_SELECTOR=opencl:cpu" >> "$GITHUB_ENV"
78- echo "ITLABAI_ENABLE_OPENCV_APPS=ON" >> "$GITHUB_ENV"
79- ;;
80- *)
81- echo "Unsupported platform: ${{ matrix.platform }}" >&2
82- exit 1
83- ;;
84- esac
85-
86- - name : Install Linux prerequisites
87- if : runner.os == 'Linux'
88- run : |
89- sudo apt-get update
90- sudo apt-get install -y \
91- build-essential \
92- cmake \
93- git \
94- libopencv-dev \
95- libomp-dev \
96- ocl-icd-opencl-dev \
97- opencl-headers \
98- python3 \
99- zstd
100-
101- wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \
102- | gpg --dearmor \
103- | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
104- echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" \
105- | sudo tee /etc/apt/sources.list.d/oneAPI.list
106- sudo apt-get update
107- sudo apt-get install -y intel-oneapi-runtime-opencl
108-
109- - name : Select Intel OpenCL ICD
110- if : runner.os == 'Linux'
111- run : |
112- intel_icd_dir="$RUNNER_TEMP/intel-opencl-icd"
113- intel_icd_file="$(grep -il 'intel' /etc/OpenCL/vendors/*.icd | head -n 1 || true)"
114- if [[ -z "$intel_icd_file" ]]; then
115- echo "Unable to locate Intel OpenCL ICD file under /etc/OpenCL/vendors" >&2
116- ls -la /etc/OpenCL/vendors >&2
117- exit 1
118- fi
119-
120- mkdir -p "$intel_icd_dir"
121- cp "$intel_icd_file" "$intel_icd_dir/"
122- echo "OCL_ICD_VENDORS=$intel_icd_dir" >> "$GITHUB_ENV"
123-
124- - name : Download Intel SYCL toolchain binaries
125- run : |
126- if [[ "$RUNNER_OS" == "Windows" ]]; then
127- runner_temp_dir="$(cygpath -u "$RUNNER_TEMP")"
128- else
129- runner_temp_dir="$RUNNER_TEMP"
130- fi
131-
132- mkdir -p "$runner_temp_dir/intel-sycl"
133- curl -fsSL \
134- "https://github.com/intel/llvm/releases/download/${INTEL_LLVM_TAG}/${TOOLCHAIN_ASSET}" \
135- -o "$runner_temp_dir/${TOOLCHAIN_ASSET}"
136- tar -xzf "$runner_temp_dir/${TOOLCHAIN_ASSET}" \
137- -C "$runner_temp_dir/intel-sycl"
138-
139- sycl_root="$runner_temp_dir/intel-sycl"
140-
141- if [[ -d "$sycl_root/sycl_windows/bin" ]]; then
142- sycl_root="$sycl_root/sycl_windows"
143- elif [[ -d "$sycl_root/sycl_linux/bin" ]]; then
144- sycl_root="$sycl_root/sycl_linux"
145- fi
146-
147- echo "SYCL_ROOT=$sycl_root" >> "$GITHUB_ENV"
148-
149- - name : Download OpenCV release binaries
150- if : runner.os == 'Windows'
151- run : |
152- runner_temp_dir="$(cygpath -u "$RUNNER_TEMP")"
153- opencv_archive="$runner_temp_dir/${OPENCV_ASSET}"
154- opencv_extract_dir="$runner_temp_dir/opencv"
155-
156- curl -fsSL \
157- "https://github.com/opencv/opencv/releases/download/${OPENCV_TAG}/${OPENCV_ASSET}" \
158- -o "$opencv_archive"
159- 7z x -y "-o$opencv_extract_dir" "$opencv_archive"
160-
161- echo "ITLABAI_OPENCV_DIR=$(cygpath -m "$opencv_extract_dir/opencv/build/x64/vc16/lib")" >> "$GITHUB_ENV"
162- echo "$(cygpath -m "$opencv_extract_dir/opencv/build/x64/vc16/bin")" >> "$GITHUB_PATH"
163-
164- - name : Install Intel OpenCL CPU runtime
165- if : runner.os == 'Windows'
166- run : |
167- runner_temp_dir="$(cygpath -u "$RUNNER_TEMP")"
168- runtime_archive="$runner_temp_dir/intel-opencl-runtime.exe"
169- runtime_extract_dir="$runner_temp_dir/intel-opencl-runtime"
170- runtime_msi="$runtime_extract_dir/w_opencl_runtime_p_2025.3.1.762.msi"
171-
172- curl -fsSL "${INTEL_OPENCL_CPU_RUNTIME_URL}" -o "$runtime_archive"
173- 7z x -y "-o$runtime_extract_dir" "$runtime_archive"
174-
175- powershell -NoProfile -Command \
176- "Start-Process msiexec.exe -Wait -ArgumentList '/i', '$(cygpath -w "$runtime_msi")', '/qn', '/norestart'"
177-
178- - name : Download oneTBB release binaries
179- run : |
180- if [[ "$RUNNER_OS" == "Windows" ]]; then
181- runner_temp_dir="$(cygpath -u "$RUNNER_TEMP")"
182- tbb_archive="$runner_temp_dir/${TBB_ASSET}"
183- tbb_extract_dir="$runner_temp_dir/oneapi-tbb"
184-
185- curl -fsSL \
186- "https://github.com/uxlfoundation/oneTBB/releases/download/${TBB_TAG}/${TBB_ASSET}" \
187- -o "$tbb_archive"
188- 7z x -y "-o$tbb_extract_dir" "$tbb_archive"
189-
190- echo "ITLABAI_TBB_DIR=$(cygpath -m "$tbb_extract_dir/oneapi-tbb-2022.3.0")" >> "$GITHUB_ENV"
191- echo "$(cygpath -m "$tbb_extract_dir/oneapi-tbb-2022.3.0/redist/intel64/vc14")" >> "$GITHUB_PATH"
192- else
193- tbb_archive="$RUNNER_TEMP/${TBB_ASSET}"
194- tbb_extract_dir="$RUNNER_TEMP/oneapi-tbb"
195-
196- curl -fsSL \
197- "https://github.com/uxlfoundation/oneTBB/releases/download/${TBB_TAG}/${TBB_ASSET}" \
198- -o "$tbb_archive"
199- mkdir -p "$tbb_extract_dir"
200- tar -xzf "$tbb_archive" -C "$tbb_extract_dir"
201-
202- echo "ITLABAI_TBB_DIR=$tbb_extract_dir/oneapi-tbb-2022.3.0" >> "$GITHUB_ENV"
203- echo "LD_LIBRARY_PATH=$tbb_extract_dir/oneapi-tbb-2022.3.0/lib/intel64/gcc4.8:$LD_LIBRARY_PATH" >> "$GITHUB_ENV"
204- fi
205-
206- - name : Locate SYCL compiler
207- run : |
208- if [[ "$RUNNER_OS" == "Windows" ]]; then
209- if [[ -x "$SYCL_ROOT/bin/icx.exe" ]]; then
210- cc_path="$SYCL_ROOT/bin/icx.exe"
211- elif [[ -x "$SYCL_ROOT/bin/icx-cl.exe" ]]; then
212- cc_path="$SYCL_ROOT/bin/icx-cl.exe"
213- elif [[ -x "$SYCL_ROOT/bin/clang.exe" ]]; then
214- cc_path="$SYCL_ROOT/bin/clang.exe"
215- elif [[ -x "$SYCL_ROOT/bin/clang-cl.exe" ]]; then
216- cc_path="$SYCL_ROOT/bin/clang-cl.exe"
217- else
218- echo "Unable to locate a C compiler in $SYCL_ROOT/bin" >&2
219- exit 1
220- fi
221-
222- if [[ -x "$SYCL_ROOT/bin/icpx.exe" ]]; then
223- cxx_path="$SYCL_ROOT/bin/icpx.exe"
224- elif [[ -x "$SYCL_ROOT/bin/icx-cl.exe" ]]; then
225- cxx_path="$SYCL_ROOT/bin/icx-cl.exe"
226- elif [[ -x "$SYCL_ROOT/bin/clang++.exe" ]]; then
227- cxx_path="$SYCL_ROOT/bin/clang++.exe"
228- elif [[ -x "$SYCL_ROOT/bin/clang-cl.exe" ]]; then
229- cxx_path="$SYCL_ROOT/bin/clang-cl.exe"
230- else
231- echo "Unable to locate a C++ compiler in $SYCL_ROOT/bin" >&2
232- exit 1
233- fi
234-
235- echo "ITLABAI_CC=$(cygpath -m "$cc_path")" >> "$GITHUB_ENV"
236- echo "ITLABAI_CXX=$(cygpath -m "$cxx_path")" >> "$GITHUB_ENV"
237- echo "ITLABAI_CMAKE_PREFIX_PATH=$(cygpath -m "$SYCL_ROOT")" >> "$GITHUB_ENV"
238- echo "$(cygpath -m "$SYCL_ROOT/bin")" >> "$GITHUB_PATH"
239- else
240- if [[ -x "$SYCL_ROOT/bin/icx" ]]; then
241- echo "ITLABAI_CC=$SYCL_ROOT/bin/icx" >> "$GITHUB_ENV"
242- elif [[ -x "$SYCL_ROOT/bin/clang" ]]; then
243- echo "ITLABAI_CC=$SYCL_ROOT/bin/clang" >> "$GITHUB_ENV"
244- else
245- echo "Unable to locate a C compiler in $SYCL_ROOT/bin" >&2
246- exit 1
247- fi
248-
249- if [[ -x "$SYCL_ROOT/bin/icpx" ]]; then
250- echo "ITLABAI_CXX=$SYCL_ROOT/bin/icpx" >> "$GITHUB_ENV"
251- elif [[ -x "$SYCL_ROOT/bin/clang++" ]]; then
252- echo "ITLABAI_CXX=$SYCL_ROOT/bin/clang++" >> "$GITHUB_ENV"
253- else
254- echo "Unable to locate a C++ compiler in $SYCL_ROOT/bin" >&2
255- exit 1
256- fi
257-
258- echo "ITLABAI_CMAKE_PREFIX_PATH=$SYCL_ROOT" >> "$GITHUB_ENV"
259- echo "$SYCL_ROOT/bin" >> "$GITHUB_PATH"
260-
261- if [[ -d "$SYCL_ROOT/lib" ]]; then
262- echo "LD_LIBRARY_PATH=$SYCL_ROOT/lib:$LD_LIBRARY_PATH" >> "$GITHUB_ENV"
263- echo "DYLD_LIBRARY_PATH=$SYCL_ROOT/lib:$DYLD_LIBRARY_PATH" >> "$GITHUB_ENV"
264- fi
265-
266- if [[ -d "$SYCL_ROOT/lib64" ]]; then
267- echo "LD_LIBRARY_PATH=$SYCL_ROOT/lib64:$LD_LIBRARY_PATH" >> "$GITHUB_ENV"
268- echo "DYLD_LIBRARY_PATH=$SYCL_ROOT/lib64:$DYLD_LIBRARY_PATH" >> "$GITHUB_ENV"
269- fi
270- fi
62+ run : ./scripts/ci/sycl-x86-setup.sh "${{ matrix.platform }}"
27163
27264 - name : Configure
273- run : |
274- launcher_args=()
275- if [[ "$RUNNER_OS" != "Windows" ]]; then
276- launcher_args+=(
277- -DCMAKE_C_COMPILER_LAUNCHER=ccache
278- -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
279- )
280- fi
281-
282- cmake -S . -B build -G Ninja \
283- "${launcher_args[@]}" \
284- -DCMAKE_C_COMPILER="${ITLABAI_CC}" \
285- -DCMAKE_CXX_COMPILER="${ITLABAI_CXX}" \
286- -DCMAKE_BUILD_TYPE="${{ matrix.build_type }}" \
287- -DCMAKE_PREFIX_PATH="${ITLABAI_CMAKE_PREFIX_PATH}" \
288- -DITLABAI_ENABLE_OPENMP=OFF \
289- -DITLABAI_ENABLE_OPENCV_APPS="${ITLABAI_ENABLE_OPENCV_APPS}" \
290- -DITLABAI_BUILD_TESTS=ON \
291- -DITLABAI_OPENCV_DIR="${ITLABAI_OPENCV_DIR}" \
292- -DITLABAI_TBB_DIR="${ITLABAI_TBB_DIR}" \
293- -DITLABAI_ENABLE_SYCL=ON \
294- -DITLABAI_SYCL_TARGETS="${SYCL_TARGETS}"
65+ run : ./scripts/ci/sycl-configure.sh "${{ matrix.build_type }}" "${SYCL_TARGETS}" "${ITLABAI_ENABLE_OPENCV_APPS}"
29566
29667 - name : Build
29768 run : cmake --build build --parallel
29869
29970 - name : Test
300- run : |
301- ONEAPI_DEVICE_SELECTOR="${DEVICE_SELECTOR}" \
302- ctest --test-dir build --output-on-failure --parallel
71+ run : ./scripts/ci/sycl-test.sh "${DEVICE_SELECTOR}"
30372
30473 build-sycl-macos-arm64 :
30574 name : macos-arm64 / ${{ matrix.build_type }}
@@ -331,47 +100,13 @@ jobs:
331100 max-size : 2G
332101
333102 - name : Install macOS prerequisites
334- run : |
335- brew install adaptivecpp opencv tbb
336-
337- - name : Locate AdaptiveCpp compiler
338- run : |
339- adaptivecpp_prefix="$(brew --prefix adaptivecpp)"
340- opencv_prefix="$(brew --prefix opencv)"
341- tbb_prefix="$(brew --prefix tbb)"
342- echo "ITLABAI_CC=$(xcrun --find clang)" >> "$GITHUB_ENV"
343- echo "ITLABAI_CXX=$(command -v acpp)" >> "$GITHUB_ENV"
344- echo "ITLABAI_CMAKE_PREFIX_PATH=$adaptivecpp_prefix" >> "$GITHUB_ENV"
345- echo "ITLABAI_OPENCV_DIR=$opencv_prefix/lib/cmake/opencv4" >> "$GITHUB_ENV"
346- echo "ITLABAI_TBB_DIR=$tbb_prefix" >> "$GITHUB_ENV"
347- echo "$adaptivecpp_prefix/bin" >> "$GITHUB_PATH"
103+ run : ./scripts/ci/sycl-macos-setup.sh
348104
349105 - name : Configure
350- run : |
351- launcher_args=()
352- if [[ "$RUNNER_OS" != "Windows" ]]; then
353- launcher_args+=(
354- -DCMAKE_C_COMPILER_LAUNCHER=ccache
355- -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
356- )
357- fi
358-
359- cmake -S . -B build -G Ninja \
360- "${launcher_args[@]}" \
361- -DCMAKE_C_COMPILER="${ITLABAI_CC}" \
362- -DCMAKE_CXX_COMPILER="${ITLABAI_CXX}" \
363- -DCMAKE_BUILD_TYPE="${{ matrix.build_type }}" \
364- -DCMAKE_PREFIX_PATH="${ITLABAI_CMAKE_PREFIX_PATH}" \
365- -DITLABAI_ENABLE_OPENMP=OFF \
366- -DITLABAI_ENABLE_OPENCV_APPS=ON \
367- -DITLABAI_BUILD_TESTS=ON \
368- -DITLABAI_OPENCV_DIR="${ITLABAI_OPENCV_DIR}" \
369- -DITLABAI_TBB_DIR="${ITLABAI_TBB_DIR}" \
370- -DITLABAI_ENABLE_SYCL=ON \
371- -DITLABAI_SYCL_TARGETS=omp
106+ run : ./scripts/ci/sycl-configure.sh "${{ matrix.build_type }}" "${SYCL_TARGETS}" "${ITLABAI_ENABLE_OPENCV_APPS}"
372107
373108 - name : Build
374109 run : cmake --build build --parallel
375110
376111 - name : Test
377- run : ctest -- test-dir build --output-on-failure --parallel
112+ run : ./scripts/ci/sycl- test.sh
0 commit comments