Skip to content

Commit bfb79bf

Browse files
committed
Use compiler-driven Intel SYCL flow
1 parent 2980a81 commit bfb79bf

4 files changed

Lines changed: 44 additions & 8 deletions

File tree

CMakeLists.txt

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ option(ITLABAI_ENABLE_SYCL "Build SYCL example and helper targets" OFF)
77
option(ITLABAI_ENABLE_OPENCV_APPS "Build OpenCV-dependent apps" ON)
88
option(ITLABAI_BUILD_TESTS "Build unit tests" ON)
99
set(ITLABAI_SYCL_IMPLEMENTATION "" CACHE STRING
10-
"SYCL implementation package to use: IntelSYCL or AdaptiveCpp")
10+
"SYCL implementation to use: IntelLLVM or AdaptiveCpp")
1111
set_property(CACHE ITLABAI_SYCL_IMPLEMENTATION PROPERTY STRINGS
12-
IntelSYCL AdaptiveCpp)
12+
IntelLLVM AdaptiveCpp)
1313
set(ITLABAI_SYCL_TARGETS "" CACHE STRING
14-
"Optional SYCL targets; forwarded to AdaptiveCpp as ACPP_TARGETS")
14+
"Optional SYCL targets; forwarded to AdaptiveCpp as ACPP_TARGETS or IntelLLVM as -fsycl-targets")
1515

1616
option(ENABLE_STATISTIC_TENSORS "Enable statistic tensors" OFF)
1717

@@ -54,7 +54,7 @@ if(ITLABAI_ENABLE_SYCL)
5454
if(NOT ITLABAI_SYCL_IMPLEMENTATION)
5555
message(FATAL_ERROR
5656
"ITLABAI_ENABLE_SYCL=ON requires ITLABAI_SYCL_IMPLEMENTATION "
57-
"to be set to IntelSYCL or AdaptiveCpp")
57+
"to be set to IntelLLVM or AdaptiveCpp")
5858
endif()
5959

6060
if(ITLABAI_SYCL_IMPLEMENTATION STREQUAL "AdaptiveCpp")
@@ -63,8 +63,39 @@ if(ITLABAI_ENABLE_SYCL)
6363
"AdaptiveCpp targets" FORCE)
6464
endif()
6565
find_package(AdaptiveCpp CONFIG REQUIRED)
66-
elseif(ITLABAI_SYCL_IMPLEMENTATION STREQUAL "IntelSYCL")
67-
find_package(IntelSYCL CONFIG REQUIRED)
66+
function(itlabai_add_sycl_to_target)
67+
add_sycl_to_target(${ARGN})
68+
endfunction()
69+
elseif(ITLABAI_SYCL_IMPLEMENTATION STREQUAL "IntelLLVM")
70+
function(itlabai_add_sycl_to_target)
71+
set(options)
72+
set(one_value_keywords TARGET)
73+
set(multi_value_keywords SOURCES)
74+
cmake_parse_arguments(ITLABAI_SYCL
75+
"${options}"
76+
"${one_value_keywords}"
77+
"${multi_value_keywords}"
78+
${ARGN}
79+
)
80+
81+
if(NOT ITLABAI_SYCL_TARGET)
82+
message(FATAL_ERROR "itlabai_add_sycl_to_target requires TARGET")
83+
endif()
84+
85+
target_compile_options(${ITLABAI_SYCL_TARGET} PRIVATE
86+
$<$<COMPILE_LANGUAGE:CXX>:-fsycl>
87+
)
88+
target_link_options(${ITLABAI_SYCL_TARGET} PRIVATE -fsycl)
89+
90+
if(ITLABAI_SYCL_TARGETS)
91+
target_compile_options(${ITLABAI_SYCL_TARGET} PRIVATE
92+
$<$<COMPILE_LANGUAGE:CXX>:-fsycl-targets=${ITLABAI_SYCL_TARGETS}>
93+
)
94+
target_link_options(${ITLABAI_SYCL_TARGET} PRIVATE
95+
-fsycl-targets=${ITLABAI_SYCL_TARGETS}
96+
)
97+
endif()
98+
endfunction()
6899
else()
69100
message(FATAL_ERROR
70101
"Unsupported ITLABAI_SYCL_IMPLEMENTATION="

app/SYCL/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ add_executable(SYCL_Example
33
sycl_kernel.cpp
44
)
55
target_link_libraries(SYCL_Example PRIVATE layers_lib)
6-
add_sycl_to_target(TARGET SYCL_Example SOURCES
6+
itlabai_add_sycl_to_target(TARGET SYCL_Example SOURCES
77
sycl_example.cpp
88
sycl_kernel.cpp
99
)

scripts/ci/sycl_configure.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ def main() -> None:
4444
if acpp_targets:
4545
cmake_args.append(f"-DACPP_TARGETS={acpp_targets}")
4646

47+
itlabai_sycl_targets = os.environ.get("ITLABAI_SYCL_TARGETS", "")
48+
if itlabai_sycl_targets:
49+
cmake_args.append(f"-DITLABAI_SYCL_TARGETS={itlabai_sycl_targets}")
50+
4751
run(
4852
[
4953
"cmake",

scripts/ci/sycl_x86_setup.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ def configure_platform(platform: str) -> None:
4141
write_env("TOOLCHAIN_ASSET", settings["toolchain_asset"])
4242
write_env("DEVICE_SELECTOR", settings["device_selector"])
4343
write_env("ITLABAI_ENABLE_OPENCV_APPS", settings["opencv_apps"])
44-
write_env("ITLABAI_SYCL_IMPLEMENTATION", "IntelSYCL")
44+
write_env("ITLABAI_SYCL_IMPLEMENTATION", "IntelLLVM")
45+
write_env("ITLABAI_SYCL_TARGETS", "spir64")
4546

4647

4748
def setup_linux_runtime() -> None:

0 commit comments

Comments
 (0)