Skip to content

[UR][HIP] Unbundle hip conformance test binaries #18184

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions unified-runtime/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ set(UR_EXTERNAL_DEPENDENCIES "" CACHE STRING
set(UR_DPCXX "" CACHE FILEPATH "Path of the DPC++ compiler executable")
set(UR_DPCXX_BUILD_FLAGS "" CACHE STRING "Build flags to pass to DPC++ when compiling device programs")
set(UR_DEVICE_CODE_EXTRACTOR "" CACHE PATH "Path to clang-offload-extract")
set(UR_DEVICE_BUNDLER "" CACHE PATH "Path to clang-offload-bundler")
set(UR_SYCL_LIBRARY_DIR "" CACHE PATH
"Path of the SYCL runtime library directory")
set(UR_CONFORMANCE_TARGET_TRIPLES "" CACHE STRING
Expand Down Expand Up @@ -147,6 +148,7 @@ endif()
if(NOT UR_STANDALONE_BUILD AND "${UR_DPCXX}" STREQUAL "")
set(UR_FOUND_DPCXX "$<TARGET_FILE:clang>")
set(UR_FOUND_DEVICE_CODE_EXTRACTOR "$<TARGET_FILE:clang-offload-extract>")
set(UR_FOUND_DEVICE_BUNDLER "$<TARGET_FILE:clang-offload-bundler>")
set(UR_DPCXX_DEPS "sycl-toolchain;")
else()
set(UR_FOUND_DPCXX "${UR_DPCXX}")
Expand All @@ -156,6 +158,12 @@ else()
cmake_path(GET UR_FOUND_DPCXX EXTENSION EXE)
cmake_path(REPLACE_FILENAME UR_FOUND_DPCXX "clang-offload-extract${EXE}" OUTPUT_VARIABLE UR_FOUND_DEVICE_CODE_EXTRACTOR)
endif()
if(UR_DEVICE_BUNDLER)
set(UR_FOUND_BUNDLER "${UR_DEVICE_BUNDLER}")
else()
cmake_path(GET UR_FOUND_DPCXX EXTENSION EXE)
cmake_path(REPLACE_FILENAME UR_FOUND_DPCXX "clang-offload-bundler${EXE}" OUTPUT_VARIABLE UR_FOUND_DEVICE_BUNDLER)
endif()
set(UR_DPCXX_DEPS "")
endif()

Expand Down
24 changes: 21 additions & 3 deletions unified-runtime/test/conformance/device_code/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -104,18 +104,36 @@ macro(add_device_binary SOURCE_FILE)
continue()
endif()

add_custom_command(OUTPUT ${BIN_PATH}
COMMAND LD_LIBRARY_PATH=${UR_SYCL_LIBRARY_DIR}:$ENV{LD_LIBRARY_PATH}
add_custom_command(OUTPUT ${EXE_PATH}
COMMAND LD_LIBRARY_PATH=${UR_SYCL_LIBRARY_DIR}:$ENV{LD_LIBRARY_PATH}
${UR_FOUND_DPCXX} -fsycl -fsycl-targets=${TRIPLE}
-fsycl-device-code-split=off ${AMD_TARGET_BACKEND}
${AMD_OFFLOAD_ARCH} ${AMD_NOGPULIB} ${DPCXX_BUILD_FLAGS_LIST}
${SOURCE_FILE} -o ${EXE_PATH}

COMMAND ${CMAKE_COMMAND} -E env ${EXTRA_ENV} ${UR_FOUND_DEVICE_CODE_EXTRACTOR} -q --stem="${TRIPLE}.bin" ${EXE_PATH}

WORKING_DIRECTORY "${DEVICE_BINARY_DIR}"
DEPENDS ${SOURCE_FILE} ${UR_DPCXX_DEPS}
)

if(${TRIPLE} MATCHES "amd")
add_custom_command(OUTPUT ${BIN_PATH}
COMMAND ${CMAKE_COMMAND} -E env ${EXTRA_ENV} ${UR_FOUND_DEVICE_CODE_EXTRACTOR} -q --stem="${TRIPLE}.bundle" ${EXE_PATH}

COMMAND ${CMAKE_COMMAND} -E env ${EXTRA_ENV} ${UR_FOUND_DEVICE_BUNDLER} --type=o --input=${TRIPLE}.bundle.0
-unbundle -targets=hipv4-${TRIPLE}--${AMD_ARCH} -output=${TRIPLE}.bin.0

WORKING_DIRECTORY "${DEVICE_BINARY_DIR}"
DEPENDS ${EXE_PATH}
)
else()
add_custom_command(OUTPUT ${BIN_PATH}
COMMAND ${CMAKE_COMMAND} -E env ${EXTRA_ENV} ${UR_FOUND_DEVICE_CODE_EXTRACTOR} -q --stem="${TRIPLE}.bin" ${EXE_PATH}

WORKING_DIRECTORY "${DEVICE_BINARY_DIR}"
DEPENDS ${EXE_PATH}
)
endif()
add_custom_target(generate_${KERNEL_NAME}_${TRIPLE} DEPENDS ${BIN_PATH})
add_dependencies(generate_device_binaries generate_${KERNEL_NAME}_${TRIPLE})
endforeach()
Expand Down