@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / d15afc1fd0
Fork 0

A high-throughput and memory-efficient inference and serving engine for LLMs

Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git

Synced Nov 13, 14:30 UTC

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

Signed-off-by: Abolfazl Shahbazi <12436063+ashahba@users.noreply.github.com>

Abolfazl Shahbazi committed Nov 7, 2025 at 22:17 UTC d15afc1fd05b696f3f5b7ab2961a87e844703c99
4 files changed +42 -45
CMakeLists.txt
+4 -4
@@ -241,7 +241,7 @@ if(VLLM_GPU_LANG STREQUAL "CUDA")
241 message(STATUS "Enabling cumem allocator extension.")
242 # link against cuda driver library
243 list(APPEND CUMEM_LIBS CUDA::cuda_driver)
244 - define_gpu_extension_target(
244 + define_extension_target(
245 cumem_allocator
246 DESTINATION vllm
247 LANGUAGE CXX
@@ -858,7 +858,7 @@ if (VLLM_GPU_LANG STREQUAL "HIP")
858 endif()
859
860 message(STATUS "Enabling C extension.")
861 -define_gpu_extension_target(
861 +define_extension_target(
862 _C
863 DESTINATION vllm
864 LANGUAGE ${VLLM_GPU_LANG}
@@ -973,7 +973,7 @@ if(VLLM_GPU_LANG STREQUAL "CUDA")
973 endif()
974
975 message(STATUS "Enabling moe extension.")
976 -define_gpu_extension_target(
976 +define_extension_target(
977 _moe_C
978 DESTINATION vllm
979 LANGUAGE ${VLLM_GPU_LANG}
@@ -994,7 +994,7 @@ if(VLLM_GPU_LANG STREQUAL "HIP")
994 "csrc/rocm/skinny_gemms.cu"
995 "csrc/rocm/attention.cu")
996
997 - define_gpu_extension_target(
997 + define_extension_target(
998 _rocm_C
999 DESTINATION vllm
1000 LANGUAGE ${VLLM_GPU_LANG}
cmake/cpu_extension.cmake
+2 -2
@@ -343,7 +343,7 @@ message(STATUS "CPU extension source files: ${VLLM_EXT_SRC}")
343 # Define extension targets
344 #
345
346 -define_gpu_extension_target(
346 +define_extension_target(
347 _C
348 DESTINATION vllm
349 LANGUAGE CXX
@@ -354,4 +354,4 @@ define_gpu_extension_target(
354 WITH_SOABI
355 )
356
357 -message(STATUS "Enabling C extension.")
\ No newline at end of file
357 +message(STATUS "Enabling C extension.")
cmake/external_projects/flashmla.cmake
+2 -2
@@ -92,7 +92,7 @@ if(FLASH_MLA_ARCHS)
92 SRCS "${FlashMLA_Extension_SOURCES}"
93 CUDA_ARCHS "${FLASH_MLA_ARCHS}")
94
95 - define_gpu_extension_target(
95 + define_extension_target(
96 _flashmla_C
97 DESTINATION vllm
98 LANGUAGE ${VLLM_GPU_LANG}
@@ -109,7 +109,7 @@ if(FLASH_MLA_ARCHS)
109 $<$<COMPILE_LANGUAGE:CUDA>:-UPy_LIMITED_API>
110 $<$<COMPILE_LANGUAGE:CXX>:-UPy_LIMITED_API>)
111
112 - define_gpu_extension_target(
112 + define_extension_target(
113 _flashmla_extension_C
114 DESTINATION vllm
115 LANGUAGE ${VLLM_GPU_LANG}
cmake/utils.cmake
+34 -37
@@ -453,21 +453,20 @@ macro(override_gpu_arches GPU_ARCHES GPU_LANG GPU_SUPPORTED_ARCHES)
453 endmacro()
454
455 #
456 -# Define a target named `GPU_MOD_NAME` for a single extension. The
456 +# Define a target named `MOD_NAME` for a single extension. The
457 # arguments are:
458 #
459 # DESTINATION <dest> - Module destination directory.
460 -# LANGUAGE <lang> - The GPU language for this module, e.g CUDA, HIP,
461 -# etc.
460 +# LANGUAGE <lang> - The language for this module, e.g. CUDA, HIP,
461 +# CXX, etc.
462 # SOURCES <sources> - List of source files relative to CMakeLists.txt
463 # directory.
464 #
465 # Optional arguments:
466 #
467 -# ARCHITECTURES <arches> - A list of target GPU architectures in cmake
468 -# format.
469 -# Refer `CMAKE_CUDA_ARCHITECTURES` documentation
470 -# and `CMAKE_HIP_ARCHITECTURES` for more info.
467 +# ARCHITECTURES <arches> - A list of target architectures in cmake format.
468 +# For GPU, refer to CMAKE_CUDA_ARCHITECTURES and
469 +# CMAKE_HIP_ARCHITECTURES for more info.
470 # ARCHITECTURES will use cmake's defaults if
471 # not provided.
472 # COMPILE_FLAGS <flags> - Extra compiler flags passed to NVCC/hip.
@@ -478,63 +477,61 @@ endmacro()
477 #
478 # Note: optimization level/debug info is set via cmake build type.
479 #
481 -function (define_gpu_extension_target GPU_MOD_NAME)
480 +function (define_extension_target MOD_NAME)
481 cmake_parse_arguments(PARSE_ARGV 1
483 - GPU
482 + ARG
483 "WITH_SOABI"
484 "DESTINATION;LANGUAGE;USE_SABI"
485 "SOURCES;ARCHITECTURES;COMPILE_FLAGS;INCLUDE_DIRECTORIES;LIBRARIES")
486
487 # Add hipify preprocessing step when building with HIP/ROCm.
489 - if (GPU_LANGUAGE STREQUAL "HIP")
490 - hipify_sources_target(GPU_SOURCES ${GPU_MOD_NAME} "${GPU_SOURCES}")
488 + if (ARG_LANGUAGE STREQUAL "HIP")
489 + hipify_sources_target(ARG_SOURCES ${MOD_NAME} "${ARG_SOURCES}")
490 endif()
491
493 - if (GPU_WITH_SOABI)
494 - set(GPU_WITH_SOABI WITH_SOABI)
492 + if (ARG_WITH_SOABI)
493 + set(SOABI_KEYWORD WITH_SOABI)
494 else()
496 - set(GPU_WITH_SOABI)
495 + set(SOABI_KEYWORD "")
496 endif()
497
499 - if (GPU_USE_SABI)
500 - Python_add_library(${GPU_MOD_NAME} MODULE USE_SABI ${GPU_USE_SABI} ${GPU_WITH_SOABI} "${GPU_SOURCES}")
498 + if (ARG_USE_SABI)
499 + Python_add_library(${MOD_NAME} MODULE USE_SABI ${ARG_USE_SABI} ${SOABI_KEYWORD} "${ARG_SOURCES}")
500 else()
502 - Python_add_library(${GPU_MOD_NAME} MODULE ${GPU_WITH_SOABI} "${GPU_SOURCES}")
501 + Python_add_library(${MOD_NAME} MODULE ${SOABI_KEYWORD} "${ARG_SOURCES}")
502 endif()
503
505 - if (GPU_LANGUAGE STREQUAL "HIP")
504 + if (ARG_LANGUAGE STREQUAL "HIP")
505 # Make this target dependent on the hipify preprocessor step.
507 - add_dependencies(${GPU_MOD_NAME} hipify${GPU_MOD_NAME})
506 + add_dependencies(${MOD_NAME} hipify${MOD_NAME})
507 # Make sure we include the hipified versions of the headers, and avoid conflicts with the ones in the original source folder
509 - target_include_directories(${GPU_MOD_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/csrc
510 - ${GPU_INCLUDE_DIRECTORIES})
508 + target_include_directories(${MOD_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/csrc
509 + ${ARG_INCLUDE_DIRECTORIES})
510 else()
512 - target_include_directories(${GPU_MOD_NAME} PRIVATE csrc
513 - ${GPU_INCLUDE_DIRECTORIES})
511 + target_include_directories(${MOD_NAME} PRIVATE csrc
512 + ${ARG_INCLUDE_DIRECTORIES})
513 endif()
514
516 - if (GPU_ARCHITECTURES)
517 - set_target_properties(${GPU_MOD_NAME} PROPERTIES
518 - ${GPU_LANGUAGE}_ARCHITECTURES "${GPU_ARCHITECTURES}")
515 + if (ARG_ARCHITECTURES)
516 + set_target_properties(${MOD_NAME} PROPERTIES
517 + ${ARG_LANGUAGE}_ARCHITECTURES "${ARG_ARCHITECTURES}")
518 endif()
519
520 + target_compile_options(${MOD_NAME} PRIVATE
521 + $<$<COMPILE_LANGUAGE:${ARG_LANGUAGE}>:${ARG_COMPILE_FLAGS}>)
522
522 - target_compile_options(${GPU_MOD_NAME} PRIVATE
523 - $<$<COMPILE_LANGUAGE:${GPU_LANGUAGE}>:${GPU_COMPILE_FLAGS}>)
523 + target_compile_definitions(${MOD_NAME} PRIVATE
524 + "-DTORCH_EXTENSION_NAME=${MOD_NAME}")
525
525 - target_compile_definitions(${GPU_MOD_NAME} PRIVATE
526 - "-DTORCH_EXTENSION_NAME=${GPU_MOD_NAME}")
527 -
528 -
529 - target_link_libraries(${GPU_MOD_NAME} PRIVATE torch ${GPU_LIBRARIES})
526 + target_link_libraries(${MOD_NAME} PRIVATE torch ${ARG_LIBRARIES})
527
528 # Don't use `TORCH_LIBRARIES` for CUDA since it pulls in a bunch of
529 # dependencies that are not necessary and may not be installed.
533 - if (GPU_LANGUAGE STREQUAL "CUDA")
534 - target_link_libraries(${GPU_MOD_NAME} PRIVATE CUDA::cudart CUDA::cuda_driver)
530 + if (ARG_LANGUAGE STREQUAL "CUDA")
531 + target_link_libraries(${MOD_NAME} PRIVATE torch CUDA::cudart CUDA::cuda_driver ${ARG_LIBRARIES})
532 else()
536 - target_link_libraries(${GPU_MOD_NAME} PRIVATE ${TORCH_LIBRARIES})
533 + target_link_libraries(${MOD_NAME} PRIVATE torch ${TORCH_LIBRARIES} ${ARG_LIBRARIES})
534 endif()
535
539 - install(TARGETS ${GPU_MOD_NAME} LIBRARY DESTINATION ${GPU_DESTINATION} COMPONENT ${GPU_MOD_NAME})
536 + install(TARGETS ${MOD_NAME} LIBRARY DESTINATION ${ARG_DESTINATION} COMPONENT ${MOD_NAME})
537 endfunction()