64 lines
1.9 KiB
CMake
64 lines
1.9 KiB
CMake
# Copyright 2026 The xLLM Authors. All Rights Reserved.
|
|
# Layerwise split KV cache — migrated from upstream PR #2260
|
|
# Adapted for Iluvatar BI-V100 + Qwen3.5 (Qwen3.6-35B-A3B)
|
|
|
|
cmake_minimum_required(VERSION 3.18)
|
|
project(layerwise_split_kv_cache LANGUAGES CXX)
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
|
|
find_package(PkgConfig REQUIRED)
|
|
pkg_check_modules(GLOG REQUIRED IMPORTED_TARGET libglog)
|
|
find_package(GTest QUIET)
|
|
|
|
# ---------- layerwise split KV cache library ----------
|
|
add_library(layerwise_split_kv STATIC
|
|
# Upstream-migrated files
|
|
framework/config/parallel_config.cpp
|
|
framework/kv_cache/kv_cache_estimation.cpp
|
|
# BI-V100 adaptation files
|
|
config/parallel_config_layerwise.cpp
|
|
framework/kv_cache/kv_cache_layerwise.cpp
|
|
framework/kv_cache/kv_cache_estimation_layerwise.cpp
|
|
framework/parallel_state/mapping_ilu.cpp
|
|
distributed_runtime/layerwise_split_engine_ext.cpp
|
|
distributed_runtime/layerwise_split_master.cpp
|
|
runtime/worker_layerwise_init.cpp
|
|
)
|
|
|
|
target_include_directories(layerwise_split_kv PUBLIC
|
|
${CMAKE_CURRENT_SOURCE_DIR}/..
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
)
|
|
|
|
target_link_libraries(layerwise_split_kv PUBLIC
|
|
gflags
|
|
PkgConfig::GLOG
|
|
)
|
|
|
|
# Iluvatar BI-V100 build: define USE_ILU
|
|
if(USE_ILU)
|
|
target_compile_definitions(layerwise_split_kv PUBLIC USE_ILU)
|
|
endif()
|
|
|
|
# ---------- tests ----------
|
|
if(BUILD_TESTING)
|
|
if(NOT GTest_FOUND)
|
|
find_library(GTEST_LIB gtest)
|
|
find_library(GTEST_MAIN_LIB gtest_main)
|
|
endif()
|
|
|
|
add_executable(test_layerwise_split
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../tests/core/test_layerwise_split_kv_cache.cpp
|
|
)
|
|
|
|
if(GTest_FOUND)
|
|
target_link_libraries(test_layerwise_split PRIVATE
|
|
layerwise_split_kv GTest::gtest_main gflags PkgConfig::GLOG)
|
|
else()
|
|
target_link_libraries(test_layerwise_split PRIVATE
|
|
layerwise_split_kv ${GTEST_LIB} ${GTEST_MAIN_LIB} gflags PkgConfig::GLOG pthread)
|
|
endif()
|
|
|
|
add_test(NAME LayerwiseSplitKVTests COMMAND test_layerwise_split)
|
|
endif()
|