Skip to content

Commit 51f48d8

Browse files
authored
Merge pull request #1525 from cen121212/csx-main-fix
【WIP】main分支适配NPU
2 parents d7ab3b4 + 7636e86 commit 51f48d8

File tree

72 files changed

+17546
-6045
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+17546
-6045
lines changed

config.json

Whitespace-only changes.

csrc/balance_serve/CMakeLists.txt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,23 @@
1+
option(KTRANSFORMERS_USE_NPU "ktransformers: use NPU" OFF)
2+
if(KTRANSFORMERS_USE_NPU)
3+
add_definitions(-DKTRANSFORMERS_USE_NPU=1)
4+
endif()
5+
6+
if(KTRANSFORMERS_USE_NPU)
7+
set(ASCEND_HOME_PATH "$ENV{ASCEND_HOME_PATH}")
8+
message(STATUS "ASCEND_HOME_PATH is ${ASCEND_HOME_PATH}")
9+
include_directories(${ASCEND_HOME_PATH}/include)
10+
11+
link_directories(${TORCH_INSTALL_PREFIX}/../torch.libs)
12+
# find torch_npu
13+
execute_process(
14+
COMMAND python -c "import torch; import torch_npu; print(torch_npu.__path__[0])"
15+
OUTPUT_VARIABLE TORCH_NPU_PATH
16+
OUTPUT_STRIP_TRAILING_WHITESPACE
17+
)
18+
message(STATUS "Found PTA at: ${TORCH_NPU_PATH}")
19+
find_library(PTA_LIBRARY torch_npu PATH "${TORCH_NPU_PATH}/lib")
20+
endif()
121

222
cmake_minimum_required(VERSION 3.21)
323
find_program(GCC_COMPILER NAMES g++-13 g++-12 g++-11 g++ REQUIRED)

csrc/balance_serve/kvc2/CMakeLists.txt

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,19 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../third_party)
7373

7474
# include_directories(/usr/include/tbb)
7575
# link_directories(/usr/lib64)
76+
option(KTRANSFORMERS_USE_NPU "ktransformers: use NPU" OFF)
77+
if(KTRANSFORMERS_USE_NPU)
78+
add_definitions(-DKTRANSFORMERS_USE_NPU=1)
79+
endif()
7680
find_package(TBB REQUIRED)
77-
find_package(CUDA REQUIRED)
81+
82+
if(KTRANSFORMERS_USE_NPU)
83+
# NPU 构建
84+
# find_package(CUDA REQUIRED) # NPU 情况不需要 CUDA
85+
else()
86+
# GPU 构建
87+
find_package(CUDA REQUIRED)
88+
endif()
7889

7990
# find_package(prometheus-cpp CONFIG REQUIRED)
8091
if(NOT TARGET prometheus-cpp::pull)
@@ -83,18 +94,29 @@ else()
8394
message(STATUS "prometheus Found!")
8495
endif()
8596

86-
if(CUDA_FOUND)
87-
message(STATUS "CUDA Found!")
88-
message(STATUS "CUDA Version: ${CUDA_VERSION_STRING}")
89-
message(STATUS "CUDA Toolkit Root: ${CUDA_TOOLKIT_ROOT_DIR}")
97+
if(KTRANSFORMERS_USE_NPU)
98+
# NPU 情况下不检查 CUDA
9099
else()
91-
message(FATAL_ERROR "CUDA not found!")
100+
if(CUDA_FOUND)
101+
message(STATUS "CUDA Found!")
102+
message(STATUS "CUDA Version: ${CUDA_VERSION_STRING}")
103+
message(STATUS "CUDA Toolkit Root: ${CUDA_TOOLKIT_ROOT_DIR}")
104+
else()
105+
message(FATAL_ERROR "CUDA not found!")
106+
endif()
92107
endif()
93108

94109
add_subdirectory(src)
95110

96111
if(BUILD_TEST)
97-
add_subdirectory(test)
112+
if(KTRANSFORMERS_USE_NPU)
113+
message(STATUS "Build test...")
114+
set(THIRD_PARTY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../third_party)
115+
add_subdirectory(${THIRD_PARTY_DIR}/spdlog ${CMAKE_CURRENT_SOURCE_DIR}/../build/third_party/spdlog)
116+
add_subdirectory(test)
117+
else()
118+
add_subdirectory(test)
119+
endif()
98120
endif()
99121

100122
message(STATUS "BUILD_PYTHON_EXT: ${BUILD_PYTHON_EXT}")
@@ -126,7 +148,12 @@ endif()
126148

127149
set(PHOTON_CXX_STANDARD 14 CACHE INTERNAL "C++ standard")
128150

129-
set(CMAKE_CXX_FLAGS "-O3 -march=native")
151+
if(KTRANSFORMERS_USE_NPU)
152+
set(CMAKE_CXX_FLAGS "-O3 -march=armv8.2-a")
153+
else()
154+
set(CMAKE_CXX_FLAGS "-O3 -march=native")
155+
endif()
156+
130157
message(STATUS "CMAKE_CXX_FLAGS of PhotonLibOS: ${CMAKE_CXX_FLAGS}")
131158

132159
add_subdirectory(${THIRD_PARTY_DIR}/PhotonLibOS ${THIRD_PARTY_BUILD_DIR}/PhotonLibOS)

csrc/balance_serve/kvc2/src/CMakeLists.txt

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,24 +23,46 @@ target_link_libraries(cache_entry PUBLIC gpu_cache)
2323

2424
add_library(gpu_cache gpu_cache.cpp)
2525
add_third_party_includes(gpu_cache)
26-
target_link_libraries(gpu_cache PUBLIC xxHash::xxhash ${TORCH_LIBRARIES} cuda_stream_manager)
2726

27+
# gpu_cache
28+
if(KTRANSFORMERS_USE_NPU)
29+
target_include_directories(gpu_cache PUBLIC ${TORCH_NPU_PATH}/include)
30+
find_package(Python COMPONENTS Interpreter Development REQUIRED)
31+
message("python include location: " ${Python_INCLUDE_DIRS} " lib location: " ${Python_LIBRARIES})
32+
target_link_libraries(gpu_cache PUBLIC xxHash::xxhash "${TORCH_LIBRARIES}" "${TORCH_PYTHON_LIBRARY}" "${PTA_LIBRARY}" ${Python_LIBRARIES} cuda_stream_manager)
33+
else()
34+
target_link_libraries(gpu_cache PUBLIC xxHash::xxhash ${TORCH_LIBRARIES} cuda_stream_manager)
35+
endif()
36+
37+
# kvc2
2838
add_library(kvc2 prefix.cpp)
2939
target_include_directories(kvc2 PRIVATE ${THIRD_PARTY_DIR}/nlohmann/single_include)
3040
add_third_party_includes(kvc2)
31-
target_link_libraries(kvc2 PUBLIC TBB::tbb xxHash::xxhash cache_entry cuda_stream_manager page_aligned_memory_pool ${TORCH_LIBRARIES} prometheus-cpp::pull kvc2_metrics)
41+
if(KTRANSFORMERS_USE_NPU)
42+
target_link_libraries(kvc2 PUBLIC TBB::tbb xxHash::xxhash cache_entry cuda_stream_manager page_aligned_memory_pool prometheus-cpp::pull kvc2_metrics)
43+
else()
44+
target_link_libraries(kvc2 PUBLIC TBB::tbb xxHash::xxhash cache_entry cuda_stream_manager page_aligned_memory_pool ${TORCH_LIBRARIES} prometheus-cpp::pull kvc2_metrics)
45+
endif()
3246

3347
message(STATUS "CMAKE_SOURCE_DIR: " ${CMAKE_SOURCE_DIR})
48+
49+
# async_store
3450
add_library(async_store async_store.cpp)
3551
target_include_directories(async_store PRIVATE ${THIRD_PARTY_DIR}/nlohmann/single_include)
36-
target_include_directories(async_store PRIVATE ${THIRD_PARTY_DIR}/PhotonLibOS/include)
3752
target_include_directories(async_store PRIVATE ${THIRD_PARTY_DIR}/spdlog/include)
53+
target_include_directories(async_store PRIVATE ${THIRD_PARTY_DIR}/PhotonLibOS/include)
3854
target_link_libraries(async_store PUBLIC photon_static pthread)
3955

40-
41-
56+
# cuda_stream_manager
4257
add_library(cuda_stream_manager cuda_stream_manager.cpp)
4358
target_include_directories(cuda_stream_manager PUBLIC ${THIRD_PARTY_DIR}/nlohmann/single_include)
4459
target_include_directories(cuda_stream_manager PUBLIC ${THIRD_PARTY_DIR}/spdlog/include)
45-
target_include_directories(cuda_stream_manager PUBLIC ${CUDAToolkit_INCLUDE_DIRS})
46-
target_link_libraries(cuda_stream_manager PUBLIC CUDA::cudart)
60+
if(KTRANSFORMERS_USE_NPU)
61+
set(ASCEND_HOME_PATH "$ENV{ASCEND_HOME_PATH}")
62+
target_include_directories(cuda_stream_manager PUBLIC ${ASCEND_HOME_PATH}/include)
63+
target_link_directories(cuda_stream_manager PUBLIC ${ASCEND_HOME_PATH}/lib64)
64+
target_link_libraries(cuda_stream_manager PUBLIC ascendcl)
65+
else()
66+
target_include_directories(cuda_stream_manager PUBLIC ${CUDAToolkit_INCLUDE_DIRS})
67+
target_link_libraries(cuda_stream_manager PUBLIC CUDA::cudart)
68+
endif()

0 commit comments

Comments
 (0)