"...git@developer.sourcefind.cn:2222/OpenDAS/vllm_cscc.git" did not exist on "02b0d6bacabc817391a2cc2aba76878190bb287b"
Unverified Commit d15afc1f authored by Abolfazl Shahbazi's avatar Abolfazl Shahbazi Committed by GitHub
Browse files

Refactor CPU/GPU extension targets for CMake build (#28026)


Signed-off-by: default avatarAbolfazl Shahbazi <12436063+ashahba@users.noreply.github.com>
parent 934a9c3b
...@@ -241,7 +241,7 @@ if(VLLM_GPU_LANG STREQUAL "CUDA") ...@@ -241,7 +241,7 @@ if(VLLM_GPU_LANG STREQUAL "CUDA")
message(STATUS "Enabling cumem allocator extension.") message(STATUS "Enabling cumem allocator extension.")
# link against cuda driver library # link against cuda driver library
list(APPEND CUMEM_LIBS CUDA::cuda_driver) list(APPEND CUMEM_LIBS CUDA::cuda_driver)
define_gpu_extension_target( define_extension_target(
cumem_allocator cumem_allocator
DESTINATION vllm DESTINATION vllm
LANGUAGE CXX LANGUAGE CXX
...@@ -858,7 +858,7 @@ if (VLLM_GPU_LANG STREQUAL "HIP") ...@@ -858,7 +858,7 @@ if (VLLM_GPU_LANG STREQUAL "HIP")
endif() endif()
message(STATUS "Enabling C extension.") message(STATUS "Enabling C extension.")
define_gpu_extension_target( define_extension_target(
_C _C
DESTINATION vllm DESTINATION vllm
LANGUAGE ${VLLM_GPU_LANG} LANGUAGE ${VLLM_GPU_LANG}
...@@ -973,7 +973,7 @@ if(VLLM_GPU_LANG STREQUAL "CUDA") ...@@ -973,7 +973,7 @@ if(VLLM_GPU_LANG STREQUAL "CUDA")
endif() endif()
message(STATUS "Enabling moe extension.") message(STATUS "Enabling moe extension.")
define_gpu_extension_target( define_extension_target(
_moe_C _moe_C
DESTINATION vllm DESTINATION vllm
LANGUAGE ${VLLM_GPU_LANG} LANGUAGE ${VLLM_GPU_LANG}
...@@ -994,7 +994,7 @@ if(VLLM_GPU_LANG STREQUAL "HIP") ...@@ -994,7 +994,7 @@ if(VLLM_GPU_LANG STREQUAL "HIP")
"csrc/rocm/skinny_gemms.cu" "csrc/rocm/skinny_gemms.cu"
"csrc/rocm/attention.cu") "csrc/rocm/attention.cu")
define_gpu_extension_target( define_extension_target(
_rocm_C _rocm_C
DESTINATION vllm DESTINATION vllm
LANGUAGE ${VLLM_GPU_LANG} LANGUAGE ${VLLM_GPU_LANG}
......
...@@ -343,7 +343,7 @@ message(STATUS "CPU extension source files: ${VLLM_EXT_SRC}") ...@@ -343,7 +343,7 @@ message(STATUS "CPU extension source files: ${VLLM_EXT_SRC}")
# Define extension targets # Define extension targets
# #
define_gpu_extension_target( define_extension_target(
_C _C
DESTINATION vllm DESTINATION vllm
LANGUAGE CXX LANGUAGE CXX
...@@ -354,4 +354,4 @@ define_gpu_extension_target( ...@@ -354,4 +354,4 @@ define_gpu_extension_target(
WITH_SOABI WITH_SOABI
) )
message(STATUS "Enabling C extension.") message(STATUS "Enabling C extension.")
\ No newline at end of file
...@@ -92,7 +92,7 @@ if(FLASH_MLA_ARCHS) ...@@ -92,7 +92,7 @@ if(FLASH_MLA_ARCHS)
SRCS "${FlashMLA_Extension_SOURCES}" SRCS "${FlashMLA_Extension_SOURCES}"
CUDA_ARCHS "${FLASH_MLA_ARCHS}") CUDA_ARCHS "${FLASH_MLA_ARCHS}")
define_gpu_extension_target( define_extension_target(
_flashmla_C _flashmla_C
DESTINATION vllm DESTINATION vllm
LANGUAGE ${VLLM_GPU_LANG} LANGUAGE ${VLLM_GPU_LANG}
...@@ -109,7 +109,7 @@ if(FLASH_MLA_ARCHS) ...@@ -109,7 +109,7 @@ if(FLASH_MLA_ARCHS)
$<$<COMPILE_LANGUAGE:CUDA>:-UPy_LIMITED_API> $<$<COMPILE_LANGUAGE:CUDA>:-UPy_LIMITED_API>
$<$<COMPILE_LANGUAGE:CXX>:-UPy_LIMITED_API>) $<$<COMPILE_LANGUAGE:CXX>:-UPy_LIMITED_API>)
define_gpu_extension_target( define_extension_target(
_flashmla_extension_C _flashmla_extension_C
DESTINATION vllm DESTINATION vllm
LANGUAGE ${VLLM_GPU_LANG} LANGUAGE ${VLLM_GPU_LANG}
......
...@@ -453,21 +453,20 @@ macro(override_gpu_arches GPU_ARCHES GPU_LANG GPU_SUPPORTED_ARCHES) ...@@ -453,21 +453,20 @@ macro(override_gpu_arches GPU_ARCHES GPU_LANG GPU_SUPPORTED_ARCHES)
endmacro() endmacro()
# #
# Define a target named `GPU_MOD_NAME` for a single extension. The # Define a target named `MOD_NAME` for a single extension. The
# arguments are: # arguments are:
# #
# DESTINATION <dest> - Module destination directory. # DESTINATION <dest> - Module destination directory.
# LANGUAGE <lang> - The GPU language for this module, e.g CUDA, HIP, # LANGUAGE <lang> - The language for this module, e.g. CUDA, HIP,
# etc. # CXX, etc.
# SOURCES <sources> - List of source files relative to CMakeLists.txt # SOURCES <sources> - List of source files relative to CMakeLists.txt
# directory. # directory.
# #
# Optional arguments: # Optional arguments:
# #
# ARCHITECTURES <arches> - A list of target GPU architectures in cmake # ARCHITECTURES <arches> - A list of target architectures in cmake format.
# format. # For GPU, refer to CMAKE_CUDA_ARCHITECTURES and
# Refer `CMAKE_CUDA_ARCHITECTURES` documentation # CMAKE_HIP_ARCHITECTURES for more info.
# and `CMAKE_HIP_ARCHITECTURES` for more info.
# ARCHITECTURES will use cmake's defaults if # ARCHITECTURES will use cmake's defaults if
# not provided. # not provided.
# COMPILE_FLAGS <flags> - Extra compiler flags passed to NVCC/hip. # COMPILE_FLAGS <flags> - Extra compiler flags passed to NVCC/hip.
...@@ -478,63 +477,61 @@ endmacro() ...@@ -478,63 +477,61 @@ endmacro()
# #
# Note: optimization level/debug info is set via cmake build type. # Note: optimization level/debug info is set via cmake build type.
# #
function (define_gpu_extension_target GPU_MOD_NAME) function (define_extension_target MOD_NAME)
cmake_parse_arguments(PARSE_ARGV 1 cmake_parse_arguments(PARSE_ARGV 1
GPU ARG
"WITH_SOABI" "WITH_SOABI"
"DESTINATION;LANGUAGE;USE_SABI" "DESTINATION;LANGUAGE;USE_SABI"
"SOURCES;ARCHITECTURES;COMPILE_FLAGS;INCLUDE_DIRECTORIES;LIBRARIES") "SOURCES;ARCHITECTURES;COMPILE_FLAGS;INCLUDE_DIRECTORIES;LIBRARIES")
# Add hipify preprocessing step when building with HIP/ROCm. # Add hipify preprocessing step when building with HIP/ROCm.
if (GPU_LANGUAGE STREQUAL "HIP") if (ARG_LANGUAGE STREQUAL "HIP")
hipify_sources_target(GPU_SOURCES ${GPU_MOD_NAME} "${GPU_SOURCES}") hipify_sources_target(ARG_SOURCES ${MOD_NAME} "${ARG_SOURCES}")
endif() endif()
if (GPU_WITH_SOABI) if (ARG_WITH_SOABI)
set(GPU_WITH_SOABI WITH_SOABI) set(SOABI_KEYWORD WITH_SOABI)
else() else()
set(GPU_WITH_SOABI) set(SOABI_KEYWORD "")
endif() endif()
if (GPU_USE_SABI) if (ARG_USE_SABI)
Python_add_library(${GPU_MOD_NAME} MODULE USE_SABI ${GPU_USE_SABI} ${GPU_WITH_SOABI} "${GPU_SOURCES}") Python_add_library(${MOD_NAME} MODULE USE_SABI ${ARG_USE_SABI} ${SOABI_KEYWORD} "${ARG_SOURCES}")
else() else()
Python_add_library(${GPU_MOD_NAME} MODULE ${GPU_WITH_SOABI} "${GPU_SOURCES}") Python_add_library(${MOD_NAME} MODULE ${SOABI_KEYWORD} "${ARG_SOURCES}")
endif() endif()
if (GPU_LANGUAGE STREQUAL "HIP") if (ARG_LANGUAGE STREQUAL "HIP")
# Make this target dependent on the hipify preprocessor step. # Make this target dependent on the hipify preprocessor step.
add_dependencies(${GPU_MOD_NAME} hipify${GPU_MOD_NAME}) add_dependencies(${MOD_NAME} hipify${MOD_NAME})
# Make sure we include the hipified versions of the headers, and avoid conflicts with the ones in the original source folder # Make sure we include the hipified versions of the headers, and avoid conflicts with the ones in the original source folder
target_include_directories(${GPU_MOD_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/csrc target_include_directories(${MOD_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/csrc
${GPU_INCLUDE_DIRECTORIES}) ${ARG_INCLUDE_DIRECTORIES})
else() else()
target_include_directories(${GPU_MOD_NAME} PRIVATE csrc target_include_directories(${MOD_NAME} PRIVATE csrc
${GPU_INCLUDE_DIRECTORIES}) ${ARG_INCLUDE_DIRECTORIES})
endif() endif()
if (GPU_ARCHITECTURES) if (ARG_ARCHITECTURES)
set_target_properties(${GPU_MOD_NAME} PROPERTIES set_target_properties(${MOD_NAME} PROPERTIES
${GPU_LANGUAGE}_ARCHITECTURES "${GPU_ARCHITECTURES}") ${ARG_LANGUAGE}_ARCHITECTURES "${ARG_ARCHITECTURES}")
endif() endif()
target_compile_options(${MOD_NAME} PRIVATE
$<$<COMPILE_LANGUAGE:${ARG_LANGUAGE}>:${ARG_COMPILE_FLAGS}>)
target_compile_options(${GPU_MOD_NAME} PRIVATE target_compile_definitions(${MOD_NAME} PRIVATE
$<$<COMPILE_LANGUAGE:${GPU_LANGUAGE}>:${GPU_COMPILE_FLAGS}>) "-DTORCH_EXTENSION_NAME=${MOD_NAME}")
target_compile_definitions(${GPU_MOD_NAME} PRIVATE target_link_libraries(${MOD_NAME} PRIVATE torch ${ARG_LIBRARIES})
"-DTORCH_EXTENSION_NAME=${GPU_MOD_NAME}")
target_link_libraries(${GPU_MOD_NAME} PRIVATE torch ${GPU_LIBRARIES})
# Don't use `TORCH_LIBRARIES` for CUDA since it pulls in a bunch of # Don't use `TORCH_LIBRARIES` for CUDA since it pulls in a bunch of
# dependencies that are not necessary and may not be installed. # dependencies that are not necessary and may not be installed.
if (GPU_LANGUAGE STREQUAL "CUDA") if (ARG_LANGUAGE STREQUAL "CUDA")
target_link_libraries(${GPU_MOD_NAME} PRIVATE CUDA::cudart CUDA::cuda_driver) target_link_libraries(${MOD_NAME} PRIVATE torch CUDA::cudart CUDA::cuda_driver ${ARG_LIBRARIES})
else() else()
target_link_libraries(${GPU_MOD_NAME} PRIVATE ${TORCH_LIBRARIES}) target_link_libraries(${MOD_NAME} PRIVATE torch ${TORCH_LIBRARIES} ${ARG_LIBRARIES})
endif() endif()
install(TARGETS ${GPU_MOD_NAME} LIBRARY DESTINATION ${GPU_DESTINATION} COMPONENT ${GPU_MOD_NAME}) install(TARGETS ${MOD_NAME} LIBRARY DESTINATION ${ARG_DESTINATION} COMPONENT ${MOD_NAME})
endfunction() endfunction()
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment