Skip to content

Commit fe5616d

Browse files
committed
initialize Cutlass support
Add chunked prefill op
1 parent d3f063d commit fe5616d

File tree

4 files changed

+1139
-13
lines changed

4 files changed

+1139
-13
lines changed

CMakeLists.txt

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.19.2)
22
project(sgl_kernel)
33

44
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
5-
set(CMAKE_CXX_STANDARD 17)
5+
set(CMAKE_CXX_STANDARD 20)
66

77
# Torch
88
find_package(Python3 COMPONENTS Interpreter Development.Module ${SKBUILD_SABI_COMPONENT} REQUIRED)
@@ -27,20 +27,29 @@ include(${SGL_OPS_XPU_ROOT}/cmake/BuildFlags.cmake)
2727

2828
include(FetchContent)
2929

30-
# # cutlass
31-
# FetchContent_Declare(
32-
# repo-cutlass-sycl
33-
# GIT_REPOSITORY https://github.com/codeplaysoftware/cutlass-sycl.git
34-
# GIT_TAG ef9797f4327886ad231bfe853099ca022060c293
35-
# GIT_SHALLOW OFF
36-
# )
37-
# FetchContent_Populate(repo-cutlass-sycl)
30+
# SYCL support in cutlass
31+
add_compile_definitions(CUTLASS_ENABLE_SYCL)
32+
add_compile_definitions(SYCL_INTEL_TARGET)
33+
set(CUTLASS_ENABLE_SYCL ON CACHE BOOL "Enable SYCL in the cutlass" FORCE)
34+
set(CUTLASS_ENABLE_BENCHMARKS OFF CACHE BOOL "Remove benchmark to avoid cmake version issue in google benchmark" FORCE)
35+
set(CUTLASS_ENABLE_HEADERS_ONLY ON CACHE BOOL "Enable headers only mode in cutlass" FORCE)
36+
37+
# cutlass
38+
FetchContent_Declare(
39+
repo-cutlass-sycl
40+
GIT_REPOSITORY https://github.com/sunjiweiswift/cutlass-sycl.git
41+
GIT_TAG b15779b2d99bc392bfaa8209d547fbb8b2f5c807
42+
GIT_SHALLOW OFF
43+
)
44+
FetchContent_MakeAvailable(repo-cutlass-sycl)
45+
3846

3947
include_directories(
4048
${CMAKE_CURRENT_SOURCE_DIR}/include
4149
${CMAKE_CURRENT_SOURCE_DIR}/src
42-
# ${repo-cutlass-sycl_SOURCE_DIR}/include
43-
# ${repo-cutlass-sycl_SOURCE_DIR}/tools/util/include
50+
${repo-cutlass-sycl_SOURCE_DIR}/include
51+
${repo-cutlass-sycl_SOURCE_DIR}/tools/util/include
52+
${repo-cutlass-sycl_SOURCE_DIR}/applications
4453
)
4554

4655
add_subdirectory(${SGL_OPS_XPU_ROOT}/src)

cmake/BuildFlags.cmake

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ endfunction()
2626
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
2727
# # -- Host flags (SYCL_CXX_FLAGS)
2828
list(APPEND SYCL_HOST_FLAGS -fPIC)
29-
list(APPEND SYCL_HOST_FLAGS -std=c++17)
29+
list(APPEND SYCL_HOST_FLAGS -std=c++20)
3030
# SYCL headers warnings
3131
list(APPEND SYCL_HOST_FLAGS -Wno-deprecated-declarations)
3232
list(APPEND SYCL_HOST_FLAGS -Wno-deprecated)
@@ -71,6 +71,9 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
7171
set(SYCL_KERNEL_OPTIONS ${SYCL_KERNEL_OPTIONS} -fno-approx-func)
7272
set(SYCL_KERNEL_OPTIONS ${SYCL_KERNEL_OPTIONS} -Wno-absolute-value)
7373
set(SYCL_KERNEL_OPTIONS ${SYCL_KERNEL_OPTIONS} -no-ftz)
74+
set(SYCL_KERNEL_OPTIONS ${SYCL_KERNEL_OPTIONS} -fno-sycl-instrument-device-code)
75+
set(SYCL_KERNEL_OPTIONS ${SYCL_KERNEL_OPTIONS} -Xspirv-translator)
76+
set(SYCL_KERNEL_OPTIONS ${SYCL_KERNEL_OPTIONS} -spirv-ext=+SPV_INTEL_split_barrier)
7477

7578
if(CMAKE_BUILD_TYPE MATCHES Debug)
7679
set(SYCL_KERNEL_OPTIONS ${SYCL_KERNEL_OPTIONS} -g -O0 -Rno-debug-disables-optimization)
@@ -116,7 +119,7 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
116119
if(AOT_TARGETS STREQUAL "none")
117120
set(TORCH_XPU_ARCH_LIST "" PARENT_SCOPE)
118121
else()
119-
set(SYCL_TARGETS_OPTION -fsycl-targets=spir64_gen,spir64)
122+
set(SYCL_TARGETS_OPTION -fsycl-targets=spir64_gen)
120123
set(SYCL_KERNEL_OPTIONS ${SYCL_KERNEL_OPTIONS} ${SYCL_TARGETS_OPTION})
121124
set(SYCL_DEVICE_LINK_FLAGS ${SYCL_DEVICE_LINK_FLAGS} ${SYCL_TARGETS_OPTION})
122125
set(SYCL_OFFLINE_COMPILER_AOT_OPTIONS "-device ${AOT_TARGETS}")
@@ -126,6 +129,8 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
126129

127130
set(SYCL_FLAGS ${SYCL_FLAGS} ${SYCL_KERNEL_OPTIONS})
128131

132+
# set(SYCL_OFFLINE_COMPILER_CG_OPTIONS ${SYCL_OFFLINE_COMPILER_CG_OPTIONS} -fno-sycl-instrument-device-code)
133+
# set(SYCL_OFFLINE_COMPILER_CG_OPTIONS ${SYCL_OFFLINE_COMPILER_CG_OPTIONS} ${SYCL_LINK_FLAGS})
129134
set(SYCL_OFFLINE_COMPILER_FLAGS "${SYCL_OFFLINE_COMPILER_AOT_OPTIONS}${SYCL_OFFLINE_COMPILER_CG_OPTIONS}")
130135
else()
131136
message("Not compiling with XPU. Currently only support GCC compiler on Linux as CXX compiler.")

0 commit comments

Comments
 (0)