Skip to content

Commit f5d4c1e

Browse files
authored
[UR] For non-standalone builds, use built DPCXX/Extractor (#18062)
If we are not a standalone build (that is, we are built as part of intel/llvm) and `UR_DPCXX` is not specified as part of the cmake options, we use the `clang` built by `intel/llvm` to generate device binaries. Likewise, if no `UR_DEVICE_CODE_EXTRACTOR` is specified and we are not standalone, the `clang-offload-extractor` from intel/llvm is used. This change should not affect CI, but does mean that the UR testing targets can be built in an intel/llvm local build.
1 parent af0e95b commit f5d4c1e

File tree

7 files changed

+27
-15
lines changed

7 files changed

+27
-15
lines changed

unified-runtime/CMakeLists.txt

+16
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ set(UR_EXTERNAL_DEPENDENCIES "" CACHE STRING
5959
"List of external CMake targets for executables/libraries to depend on")
6060
set(UR_DPCXX "" CACHE FILEPATH "Path of the DPC++ compiler executable")
6161
set(UR_DPCXX_BUILD_FLAGS "" CACHE STRING "Build flags to pass to DPC++ when compiling device programs")
62+
set(UR_DEVICE_CODE_EXTRACTOR "" CACHE PATH "Path to clang-offload-extract")
6263
set(UR_SYCL_LIBRARY_DIR "" CACHE PATH
6364
"Path of the SYCL runtime library directory")
6465
set(UR_CONFORMANCE_TARGET_TRIPLES "" CACHE STRING
@@ -143,6 +144,21 @@ if(NOT MSVC)
143144
endif()
144145
endif()
145146

147+
if(NOT UR_STANDALONE_BUILD AND "${UR_DPCXX}" STREQUAL "")
148+
set(UR_FOUND_DPCXX "$<TARGET_FILE:clang>")
149+
set(UR_FOUND_DEVICE_CODE_EXTRACTOR "$<TARGET_FILE:clang-offload-extract>")
150+
set(UR_DPCXX_DEPS "sycl-toolchain;")
151+
else()
152+
set(UR_FOUND_DPCXX "${UR_DPCXX}")
153+
if(UR_DEVICE_CODE_EXTRACTOR)
154+
set(UR_FOUND_DEVICE_CODE_EXTRACTOR "${UR_DEVICE_CODE_EXTRACTOR}")
155+
else()
156+
cmake_path(GET UR_FOUND_DPCXX EXTENSION EXE)
157+
cmake_path(REPLACE_FILENAME UR_FOUND_DPCXX "clang-offload-extract${EXE}" OUTPUT_VARIABLE UR_FOUND_DEVICE_CODE_EXTRACTOR)
158+
endif()
159+
set(UR_DPCXX_DEPS "")
160+
endif()
161+
146162
if(UR_ENABLE_TRACING)
147163
add_compile_definitions(UR_ENABLE_TRACING)
148164

unified-runtime/test/adapters/cuda/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# See LICENSE.TXT
44
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
55

6-
if(NOT UR_DPCXX)
6+
if(NOT UR_FOUND_DPCXX)
77
message(WARNING
88
"UR_DPCXX is not defined, skipping adapter-specific tests for Cuda")
99
return()

unified-runtime/test/adapters/hip/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# See LICENSE.TXT
44
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
55

6-
if(NOT UR_DPCXX)
6+
if(NOT UR_FOUND_DPCXX)
77
message(WARNING
88
"UR_DPCXX is not defined, skipping adapter-specific tests for HIP")
99
return()

unified-runtime/test/adapters/level_zero/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
55

66
function(add_adapter_tests adapter)
7-
if(NOT UR_DPCXX)
7+
if(NOT UR_FOUND_DPCXX)
88
# Tests that require kernels can't be used if we aren't generating
99
# device binaries
1010
message(WARNING

unified-runtime/test/adapters/level_zero/v2/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ add_adapter_test(level_zero_memory_residency
6363
)
6464

6565
if(NOT WIN32)
66-
if (NOT UR_DPCXX)
66+
if (NOT UR_FOUND_DPCXX)
6767
# Tests that require kernels can't be used if we aren't generating
6868
# device binaries
6969
message(WARNING

unified-runtime/test/conformance/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ set(TEST_SUBDIRECTORIES_DPCXX
117117
"usm"
118118
)
119119

120-
if(UR_DPCXX)
120+
if(UR_FOUND_DPCXX)
121121
add_custom_target(generate_device_binaries)
122122

123123
set(UR_CONFORMANCE_DEVICE_BINARIES_DIR

unified-runtime/test/conformance/device_code/CMakeLists.txt

+6-10
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@ else()
1616
set(NULDEV /dev/null)
1717
endif()
1818

19-
cmake_path(GET UR_DPCXX EXTENSION EXE)
20-
cmake_path(REPLACE_FILENAME UR_DPCXX "clang-offload-extract${EXE}" OUTPUT_VARIABLE DEFAULT_EXTRACTOR_NAME)
21-
set(UR_DEVICE_CODE_EXTRACTOR "${DEFAULT_EXTRACTOR_NAME}" CACHE PATH "Path to clang-offload-extract")
22-
2319
if("${AMD_ARCH}" STREQUAL "" AND "${TARGET_TRIPLES}" MATCHES "amd")
2420
find_package(RocmAgentEnumerator)
2521
if(NOT ROCM_AGENT_ENUMERATOR_FOUND)
@@ -110,23 +106,23 @@ macro(add_device_binary SOURCE_FILE)
110106

111107
add_custom_command(OUTPUT ${BIN_PATH}
112108
COMMAND LD_LIBRARY_PATH=${UR_SYCL_LIBRARY_DIR}:$ENV{LD_LIBRARY_PATH}
113-
${UR_DPCXX} -fsycl -fsycl-targets=${TRIPLE}
114-
-fsycl-device-code-split=off ${AMD_TARGET_BACKEND}
115-
${AMD_OFFLOAD_ARCH} ${AMD_NOGPULIB} ${DPCXX_BUILD_FLAGS_LIST}
109+
${UR_FOUND_DPCXX} -fsycl -fsycl-targets=${TRIPLE}
110+
-fsycl-device-code-split=off ${AMD_TARGET_BACKEND}
111+
${AMD_OFFLOAD_ARCH} ${AMD_NOGPULIB} ${DPCXX_BUILD_FLAGS_LIST}
116112
${SOURCE_FILE} -o ${EXE_PATH}
117113

118-
COMMAND ${CMAKE_COMMAND} -E env ${EXTRA_ENV} ${UR_DEVICE_CODE_EXTRACTOR} -q --stem="${TRIPLE}.bin" ${EXE_PATH}
114+
COMMAND ${CMAKE_COMMAND} -E env ${EXTRA_ENV} ${UR_FOUND_DEVICE_CODE_EXTRACTOR} -q --stem="${TRIPLE}.bin" ${EXE_PATH}
119115

120116
WORKING_DIRECTORY "${DEVICE_BINARY_DIR}"
121-
DEPENDS ${SOURCE_FILE}
117+
DEPENDS ${SOURCE_FILE} ${UR_DPCXX_DEPS}
122118
)
123119
add_custom_target(generate_${KERNEL_NAME}_${TRIPLE} DEPENDS ${BIN_PATH})
124120
add_dependencies(generate_device_binaries generate_${KERNEL_NAME}_${TRIPLE})
125121
endforeach()
126122

127123
set(IH_PATH "${DEVICE_BINARY_DIR}/${KERNEL_NAME}.ih")
128124
add_custom_command(OUTPUT "${IH_PATH}"
129-
COMMAND ${UR_DPCXX} -fsycl -fsycl-device-code-split=off
125+
COMMAND ${UR_FOUND_DPCXX} -fsycl -fsycl-device-code-split=off
130126
-fsycl-device-only -c -Xclang -fsycl-int-header="${IH_PATH}"
131127
${DPCXX_BUILD_FLAGS_LIST} ${SOURCE_FILE} -o ${NULDEV}
132128

0 commit comments

Comments
 (0)