Skip to content

Commit 3c4e12e

Browse files
committed
[UR] Add debug subbuild on Windows
Using ExternalProject this commit adds a subbuild of UR in compiled in debug mode and with the `UR_USE_DEBUG_POSTFIX` option enabled. The resulting libraries are then copied to the `<build>/bin`/`<build>/lib` directories so they can be used in testing (not yet implemented). Additionally, they are also included in the `deploy-sycl-toolchain` install target alongside the normally named runtime libraries.
1 parent e8cb3de commit 3c4e12e

File tree

3 files changed

+106
-1
lines changed

3 files changed

+106
-1
lines changed

sycl/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ add_custom_target( sycl-toolchain ALL
405405
)
406406

407407
if (WIN32)
408-
add_dependencies(sycl-toolchain ur_win_proxy_loader)
408+
add_dependencies(sycl-toolchain ur_win_proxy_loader unified-runtimed)
409409
endif()
410410

411411
if("cuda" IN_LIST SYCL_ENABLE_BACKENDS)

sycl/cmake/modules/FetchUnifiedRuntime.cmake

+103
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,109 @@ if("native_cpu" IN_LIST SYCL_ENABLE_BACKENDS)
321321
endif()
322322
endif()
323323

324+
if(CMAKE_SYSTEM_NAME STREQUAL Windows)
325+
# On Windows, also build/install debug libraries with the d suffix that are
326+
# compiled with /MDd so users can link against these in debug builds.
327+
include(ExternalProject)
328+
set(URD_BINARY_DIR ${CMAKE_BINARY_DIR}/unified-runtimed)
329+
set(URD_INSTALL_DIR ${URD_BINARY_DIR}/install)
330+
331+
# This creates a subbuild which can be used in dependencies with the
332+
# unified-runtimed target. It invokes the install-unified-runtime-libraries
333+
# target to install the UR runtime libraries.
334+
ExternalProject_Add(unified-runtimed
335+
SOURCE_DIR ${UNIFIED_RUNTIME_SOURCE_DIR}
336+
BINARY_DIR ${URD_BINARY_DIR}
337+
INSTALL_DIR ${URD_INSTALL_DIR}
338+
INSTALL_COMMAND ${CMAKE_COMMAND}
339+
--build <BINARY_DIR>
340+
--target install-unified-runtime-libraries
341+
CMAKE_CACHE_ARGS
342+
-DCMAKE_BUILD_TYPE:STRING=Debug
343+
-DCMAKE_INSTALL_PREFIX:STRING=<INSTALL_DIR>
344+
# Enable d suffix on libraries
345+
-DUR_USE_DEBUG_POSTFIX:BOOL=ON
346+
# Don't build unnecessary targets in subbuild.
347+
-DUR_BUILD_EXAMPLES:BOOL=OFF
348+
-DUR_BUILD_TESTS:BOOL=OFF
349+
-DUR_BUILD_TOOLS:BOOL=OFF
350+
# Sanitizer layer is not supported on Windows.
351+
-DUR_ENABLE_SYMBOLIZER:BOOL=OFF
352+
# Inherit settings from parent build.
353+
-DUR_ENABLE_TRACING:BOOL=${UR_ENABLE_TRACING}
354+
-DUR_ENABLE_COMGR:BOOL=${UR_ENABLE_COMGR}
355+
-DUR_BUILD_ADAPTER_L0:BOOL=${UR_BUILD_ADAPTER_L0}
356+
-DUR_BUILD_ADAPTER_L0_V2:BOOL=${UR_BUILD_ADAPTER_L0_V2}
357+
-DUR_BUILD_ADAPTER_OPENCL:BOOL=${UR_BUILD_ADAPTER_OPENCL}
358+
-DUR_BUILD_ADAPTER_CUDA:BOOL=${UR_BUILD_ADAPTER_CUDA}
359+
-DUR_BUILD_ADAPTER_HIP:BOOL=${UR_BUILD_ADAPTER_HIP}
360+
-DUR_BUILD_ADAPTER_NATIVE_CPU:BOOL=${UR_BUILD_ADAPTER_NATIVE_CPU}
361+
-DUMF_BUILD_EXAMPLES:BOOL=${UMF_BUILD_EXAMPLES}
362+
-DUMF_BUILD_SAHRED_LIBRARY:BOOL=${UMF_BUILD_SHARED_LIBRARY}
363+
-DUMF_LINK_HWLOC_STATICALLY:BOOL=${UMF_LINK_HWLOC_STATICALLY}
364+
-DUMF_DISABLE_HWLOC:BOOL=${UMF_DISABLE_HWLOC}
365+
# TODO: Enable d suffix in UMF
366+
# -DUMF_USE_DEBUG_POSTFIX=ON
367+
)
368+
369+
# Copy the debug UR runtime libraries to <build>/bin & <build>/lib for use in
370+
# the partent build, e.g. integration testing.
371+
set(URD_COPY_FILES)
372+
macro(urd_copy_library_to_build library)
373+
list(APPEND URD_COPY_FILES
374+
${LLVM_BINARY_DIR}/bin/${library}.dll
375+
${LLVM_BINARY_DIR}/lib/${library}.lib
376+
)
377+
add_custom_command(
378+
OUTPUT
379+
${LLVM_BINARY_DIR}/bin/${library}.dll
380+
${LLVM_BINARY_DIR}/lib/${library}.lib
381+
COMMAND ${CMAKE_COMMAND} -E copy
382+
${URD_INSTALL_DIR}/bin/${library}.dll
383+
${LLVM_BINARY_DIR}/bin/${library}.dll
384+
COMMAND ${CMAKE_COMMAND} -E copy
385+
${URD_INSTALL_DIR}/lib/${library}.lib
386+
${LLVM_BINARY_DIR}/lib/${library}.lib
387+
)
388+
endmacro()
389+
390+
urd_copy_library_to_build(ur_loaderd)
391+
foreach(adatper ${SYCL_ENABLE_BACKENDS})
392+
urd_copy_library_to_build(ur_adapter_${adatper}d)
393+
endforeach()
394+
# TODO: Also copy umfd.dll/umfd.lib
395+
# urd_copy_library_to_build(umfd)
396+
397+
add_custom_target(unified-runtimed-copy-to-build DEPENDS ${URD_COPY_FILES})
398+
add_dependencies(unified-runtimed-copy-to-build unified-runtimed)
399+
400+
# Add the debug UR runtime libraries to the parent install.
401+
install(
402+
FILES ${URD_INSTALL_DIR}/bin/ur_loaderd.dll
403+
DESTINATION "bin" COMPONENT unified-runtime-loader)
404+
install(
405+
FILES ${URD_INSTALL_DIR}/lib/ur_loaderd.lib
406+
DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT unified-runtime-loader)
407+
408+
foreach(adapter ${SYCL_ENABLE_BACKENDS})
409+
install(
410+
FILES ${URD_INSTALL_DIR}/bin/ur_adapter_${adapter}d.dll
411+
DESTINATION "bin" COMPONENT ur_adapter_${adapter})
412+
install(
413+
FILES ${URD_INSTALL_DIR}/lib/ur_adapter_${adapter}d.lib
414+
DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT ur_adapter_${adapter})
415+
add_dependencies(install-sycl-ur-adapter-${adapter} unified-runtimed)
416+
endforeach()
417+
418+
# TODO: Also install umfd.dll/umfd.lib
419+
# install(
420+
# FILES ${URD_INSTALL_DIR}/bin/umfd.dll
421+
# DESTINATION "bin" COMPONENT unified-memory-framework)
422+
# install(
423+
# FILES ${URD_INSTALL_DIR}/lib/umfd.lib
424+
# DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT unified-memory-framework)
425+
endif()
426+
324427
install(TARGETS umf
325428
LIBRARY DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT unified-memory-framework
326429
ARCHIVE DESTINATION "lib${LLVM_LIBDIR_SUFFIX}" COMPONENT unified-memory-framework

unified-runtime/cmake/helpers.cmake

+2
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,9 @@ if(NOT TARGET install-unified-runtime-libraries)
234234
COMMAND ${CMAKE_COMMAND}
235235
-DCOMPONENT=unified-runtime
236236
-P ${CMAKE_BINARY_DIR}/cmake_install.cmake
237+
# TODO: Also install debug UMF runtime libraries component
237238
DEPENDS unified-runtime-libraries
239+
# TODO: Add dependency on building debug UMF libraries
238240
)
239241
endif()
240242

0 commit comments

Comments
 (0)