@@ -11,6 +11,7 @@ include(cmake/utils/FindVulkan.cmake)
1111include (cmake/utils/FindLLVM.cmake)
1212include (cmake/utils/FindROCM.cmake)
1313include (cmake/utils/FindEthosN.cmake)
14+ include (cmake/utils/FindSYCL.cmake)
1415
1516if (EXISTS ${CMAKE_CURRENT_BINARY_DIR} /config.cmake)
1617 include (${CMAKE_CURRENT_BINARY_DIR} /config.cmake)
@@ -28,6 +29,8 @@ tvm_option(USE_CUDA "Build with CUDA" OFF)
2829tvm_option(USE_OPENCL "Build with OpenCL" OFF )
2930tvm_option(USE_OPENCL_GTEST "Path to OpenCL specific gtest version for runtime cpp tests." /path /to/opencl/gtest)
3031tvm_option(USE_VULKAN "Build with Vulkan" OFF )
32+ tvm_option(USE_SYCL "Build with SYCL" OFF )
33+ # tvm_option(USE_SYCL_GTEST "Path to SYCL specific gtest version for runtime cpp tests." "/home/wzy/app/googletest-build-release-1.10")
3134
3235
3336# Whether to use spirv-tools.and SPIRV-Headers from Khronos github or gitlab.
@@ -474,6 +477,7 @@ include(cmake/modules/Metal.cmake)
474477include (cmake/modules/ROCM.cmake)
475478include (cmake/modules/LLVM.cmake)
476479include (cmake/modules/Micro.cmake)
480+ include (cmake/modules/SYCL.cmake)
477481include (cmake/modules/contrib/EthosN.cmake)
478482include (cmake/modules/contrib/CMSISNN.cmake)
479483include (cmake/modules/contrib/EthosU.cmake)
@@ -524,7 +528,20 @@ add_library(tvm_objs OBJECT ${COMPILER_SRCS})
524528add_library (tvm_runtime_objs OBJECT ${RUNTIME_SRCS} )
525529add_library (tvm_libinfo_objs OBJECT ${LIBINFO_FILE} )
526530
527- add_library (tvm SHARED $<TARGET_OBJECTS:tvm_objs> $<TARGET_OBJECTS:tvm_runtime_objs> $<TARGET_OBJECTS:tvm_libinfo_objs>)
531+ # add_library(tvm SHARED $<TARGET_OBJECTS:tvm_objs> $<TARGET_OBJECTS:tvm_runtime_objs> $<TARGET_OBJECTS:tvm_libinfo_objs>)
532+
533+ if (USE_SYCL)
534+ if (USE_SYCL_CUDA)
535+ set (CMAKE_CXX_FLAGS "-fsycl -fsycl-targets=nvptx64-nvidia-cuda ${CMAKE_CXX_FLAGS} " )
536+ elseif (USE_SYCL_HIP)
537+ set (CMAKE_CXX_FLAGS "-fsycl -fsycl-targets=amdgcn-amd-amdhsa -Xsycl-target-backend --offload-arch=gfx908 ${CMAKE_CXX_FLAGS} " )
538+ endif ()
539+ add_library (tvm_sycl_runtime_objs OBJECT ${SYCL_RUNTIME_SRCS} )
540+ add_library (tvm SHARED $<TARGET_OBJECTS:tvm_objs> $<TARGET_OBJECTS:tvm_runtime_objs> $<TARGET_OBJECTS:tvm_sycl_runtime_objs> $<TARGET_OBJECTS:tvm_libinfo_objs>)
541+ else ()
542+ add_library (tvm SHARED $<TARGET_OBJECTS:tvm_objs> $<TARGET_OBJECTS:tvm_runtime_objs> $<TARGET_OBJECTS:tvm_libinfo_objs>)
543+ endif ()
544+
528545target_include_directories (tvm PUBLIC "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >" )
529546set_property (TARGET tvm APPEND PROPERTY LINK_OPTIONS "${TVM_NO_UNDEFINED_SYMBOLS} " )
530547set_property (TARGET tvm APPEND PROPERTY LINK_OPTIONS "${TVM_VISIBILITY_FLAG} " )
@@ -537,7 +554,11 @@ if(BUILD_STATIC_RUNTIME)
537554 add_custom_command (TARGET tvm_runtime POST_BUILD
538555 COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --yellow --bold ${NOTICE} )
539556else ()
540- add_library (tvm_runtime SHARED $<TARGET_OBJECTS:tvm_runtime_objs> $<TARGET_OBJECTS:tvm_libinfo_objs>)
557+ if (USE_SYCL)
558+ add_library (tvm_runtime SHARED $<TARGET_OBJECTS:tvm_runtime_objs> $<TARGET_OBJECTS:tvm_sycl_runtime_objs> $<TARGET_OBJECTS:tvm_libinfo_objs>)
559+ else ()
560+ add_library (tvm_runtime SHARED $<TARGET_OBJECTS:tvm_runtime_objs> $<TARGET_OBJECTS:tvm_libinfo_objs>)
561+ endif ()
541562 set_property (TARGET tvm_runtime APPEND PROPERTY LINK_OPTIONS "${TVM_NO_UNDEFINED_SYMBOLS} " )
542563endif ()
543564target_include_directories (tvm_runtime PUBLIC "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >" )
@@ -630,6 +651,20 @@ if(USE_OPENCL AND DEFINED USE_OPENCL_GTEST AND EXISTS ${USE_OPENCL_GTEST})
630651 message (STATUS "Found OpenCL gtest at ${USE_OPENCL_GTEST} " )
631652endif ()
632653
654+ if (USE_SYCL AND DEFINED USE_SYCL_GTEST AND EXISTS ${USE_SYCL_GTEST} )
655+ include (FetchContent)
656+ FetchContent_Declare(googletest SOURCE_DIR "${USE_SYCL_GTEST} " )
657+ set (gtest_force_shared_crt ON CACHE BOOL "" FORCE)
658+ FetchContent_MakeAvailable(googletest)
659+ target_include_directories (tvm_runtime PRIVATE "${USE_SYCL_GTEST} /lib" )
660+ target_include_directories (tvm PRIVATE "${GTEST_LIBS} /lib" )
661+ target_link_libraries (tvm_runtime PUBLIC gtest gtest_main)
662+ target_link_libraries (tvm PUBLIC gtest gtest_main)
663+ include_directories ("${USE_SYCL_GTEST} /include" )
664+ message (STATUS "Using SYCL gtest include at ${USE_SYCL_GTEST} /include" )
665+ message (STATUS "Using SYCL gtest library at ${USE_SYCL_GTEST} /lib" )
666+ endif ()
667+
633668# Set flags for clang
634669include (cmake/modules/ClangFlags.cmake)
635670set (CRC16_INCLUDE_PATH "3rdparty/libcrc/include" )
0 commit comments