diff --git a/cmake/BuildFlags.cmake b/cmake/BuildFlags.cmake index ec9aaccb20..5ecedda78d 100644 --- a/cmake/BuildFlags.cmake +++ b/cmake/BuildFlags.cmake @@ -72,6 +72,8 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" # gcc ${CMAKE_HOST_FLAGS} host.cpp -o host.o # 4. Linkage: # gcc -shared host.o kernel.o device-code.o -o libxxx.so + set(SYCL_TARGETS_OPTION -fsycl-targets=spir64_gen,spir64) + set(SYCL_KERNEL_OPTIONS ${SYCL_KERNEL_OPTIONS} ${SYCL_TARGETS_OPTION}) set(SYCL_KERNEL_OPTIONS ${SYCL_KERNEL_OPTIONS} -fno-sycl-unnamed-lambda) set(SYCL_KERNEL_OPTIONS ${SYCL_KERNEL_OPTIONS} -sycl-std=2020) if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") @@ -103,6 +105,8 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" or a Native API failed error.") endif() + set(SYCL_FLAGS ${SYCL_FLAGS} ${SYCL_KERNEL_OPTIONS}) + set(TORCH_XPU_OPS_FLAGS ${SYCL_HOST_FLAGS}) # -- SYCL device object linkage flags @@ -133,16 +137,12 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" if(AOT_TARGETS STREQUAL "none") set(TORCH_XPU_ARCH_LIST "" PARENT_SCOPE) else() - set(SYCL_TARGETS_OPTION -fsycl-targets=spir64_gen,spir64) - set(SYCL_KERNEL_OPTIONS ${SYCL_KERNEL_OPTIONS} ${SYCL_TARGETS_OPTION}) set(SYCL_DEVICE_LINK_FLAGS ${SYCL_DEVICE_LINK_FLAGS} ${SYCL_TARGETS_OPTION}) set(SYCL_OFFLINE_COMPILER_AOT_OPTIONS "-device ${AOT_TARGETS}") set(TORCH_XPU_ARCH_LIST ${AOT_TARGETS} PARENT_SCOPE) endif() message(STATUS "Compile Intel GPU AOT Targets for ${AOT_TARGETS}") - set(SYCL_FLAGS ${SYCL_FLAGS} ${SYCL_KERNEL_OPTIONS}) - set(SYCL_OFFLINE_COMPILER_FLAGS "${SYCL_OFFLINE_COMPILER_AOT_OPTIONS}${SYCL_OFFLINE_COMPILER_CG_OPTIONS}") else() message("Not compiling with XPU. Currently only support GCC compiler on Linux and MSVC compiler on Windows as CXX compiler.") diff --git a/cmake/Modules/FindSYCL.cmake b/cmake/Modules/FindSYCL.cmake index 86457ba362..cff568512b 100644 --- a/cmake/Modules/FindSYCL.cmake +++ b/cmake/Modules/FindSYCL.cmake @@ -383,7 +383,7 @@ macro(SYCL_LINK_DEVICE_OBJECTS output_file sycl_target) set(SYCL_device_link_flags ${link_type_flag} ${important_host_flags} - ${SYCL_FLAGS} + ${SYCL_LINK_FLAGS} ${SYCL_DEVICE_LINK_FLAGS}) file(RELATIVE_PATH output_file_relative_path "${CMAKE_BINARY_DIR}" "${output_file}")