Skip to content

Commit c9a05d1

Browse files
authored
[Feat] Implementation of BufferManager and KvProtocol. (#991)
## Purpose Implement BufferManager for slot-based memory management with IndexPool, and unify SQE packing/CQE unpacking into a single KvProtocol abstraction with comprehensive request validation and full integration testing. ## Modifications 1. Add BufferManager with IndexPool-based slot allocation, supporting HOST, HOST_PINNED, and ASCEND_DEVICE memory types via AscendBuffer. 2. Unify Sqe/Cqe into KvProtocol base class with PackSqe/UnpackCqe, replacing separate SqeManager and CqeManager. 3. Add ValidateRequest to check Request fields before packing, including bit-field overflow, alignment, key length, and batch number validation with actual values in error messages and [[unlikely]] hints. 4. Add ProtocolManager to manage send_buffer and flag_buffer instances, with PackRequest, UnpackResponse, and PollResponseCid interfaces. 5. Use protocol-specific max batch numbers per SSU spec: BatchStore/ BatchRetrieve=110, Delete=254, Exist=256. ## Test BufferManagerTest (19 cases), KvProtocolPackTest (38 cases), and ProtocolManagerTest (13 integration cases) all passed. Total: 70 tests.
1 parent b640de7 commit c9a05d1

13 files changed

Lines changed: 2695 additions & 1321 deletions
Lines changed: 45 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,50 @@
1-
file(GLOB ASU_TRANSPORT_SOURCES CONFIGURE_DEPENDS trans/src/*.cpp)
2-
add_library(asu_transport SHARED ${ASU_TRANSPORT_SOURCES})
3-
target_include_directories(asu_transport
4-
PUBLIC
5-
${CMAKE_CURRENT_SOURCE_DIR}/trans/include
6-
PRIVATE
7-
${CMAKE_CURRENT_SOURCE_DIR}/common
8-
${CMAKE_CURRENT_SOURCE_DIR}/trans/src
9-
${UCM_ROOT_DIR}/ucm/shared/infra
10-
)
11-
target_link_libraries(asu_transport PUBLIC infra_logger pthread)
1+
if(RUNTIME_ENVIRONMENT STREQUAL "ascend")
2+
file(GLOB ASU_TRANSPORT_SOURCES CONFIGURE_DEPENDS trans/src/*.cpp)
3+
add_library(asu_transport SHARED ${ASU_TRANSPORT_SOURCES})
4+
target_include_directories(asu_transport
5+
PUBLIC
6+
${CMAKE_CURRENT_SOURCE_DIR}/trans/include
7+
PRIVATE
8+
${CMAKE_CURRENT_SOURCE_DIR}/common
9+
${CMAKE_CURRENT_SOURCE_DIR}/trans/src
10+
${UCM_ROOT_DIR}/ucm/shared/infra
11+
)
12+
target_link_libraries(asu_transport PUBLIC infra_logger pthread)
1213

13-
file(GLOB ASU_CLIENT_SOURCES CONFIGURE_DEPENDS client/src/*.cpp)
14-
add_library(asu_client SHARED ${ASU_CLIENT_SOURCES})
15-
target_include_directories(asu_client
16-
PUBLIC
17-
${CMAKE_CURRENT_SOURCE_DIR}/client/include
18-
)
19-
target_include_directories(asu_client
20-
PRIVATE
21-
${CMAKE_CURRENT_SOURCE_DIR}/common
22-
${CMAKE_CURRENT_SOURCE_DIR}/client/src
23-
${UCM_ROOT_DIR}/ucm/shared/infra
24-
)
25-
target_link_libraries(asu_client PUBLIC asu_transport kv_common pthread)
14+
target_link_libraries(asu_transport PUBLIC trans)
2615

27-
if(BUILD_UNIT_TESTS)
28-
target_compile_definitions(asu_transport PRIVATE ASU_BUILD_TESTS)
29-
include(GoogleTest)
30-
file(GLOB_RECURSE ASU_TEST_SOURCE_FILES CONFIGURE_DEPENDS test/case/*.cc)
31-
file(GLOB_RECURSE ASU_CLIENT_TEST_SOURCE_FILES CONFIGURE_DEPENDS client/test/*.cpp)
32-
list(APPEND ASU_TEST_SOURCE_FILES ${ASU_CLIENT_TEST_SOURCE_FILES})
33-
add_executable(asu.test ${ASU_TEST_SOURCE_FILES})
34-
target_compile_definitions(asu.test PRIVATE ASU_BUILD_TESTS)
35-
target_include_directories(asu.test PRIVATE
36-
${CMAKE_CURRENT_SOURCE_DIR}/common
37-
${CMAKE_CURRENT_SOURCE_DIR}/client/src
38-
${CMAKE_CURRENT_SOURCE_DIR}/trans/src
39-
${UCM_ROOT_DIR}/ucm/shared/infra
16+
file(GLOB ASU_CLIENT_SOURCES CONFIGURE_DEPENDS client/src/*.cpp)
17+
add_library(asu_client SHARED ${ASU_CLIENT_SOURCES})
18+
target_include_directories(asu_client
19+
PUBLIC
20+
${CMAKE_CURRENT_SOURCE_DIR}/client/include
4021
)
41-
target_link_libraries(asu.test PRIVATE
42-
asu_client
43-
gtest_main gtest
22+
target_include_directories(asu_client
23+
PRIVATE
24+
${CMAKE_CURRENT_SOURCE_DIR}/common
25+
${CMAKE_CURRENT_SOURCE_DIR}/client/src
26+
${UCM_ROOT_DIR}/ucm/shared/infra
4427
)
45-
gtest_discover_tests(asu.test)
28+
target_link_libraries(asu_client PUBLIC asu_transport kv_common pthread)
29+
30+
if(BUILD_UNIT_TESTS)
31+
target_compile_definitions(asu_transport PRIVATE ASU_BUILD_TESTS)
32+
include(GoogleTest)
33+
file(GLOB_RECURSE ASU_TEST_SOURCE_FILES CONFIGURE_DEPENDS test/case/*.cc)
34+
file(GLOB_RECURSE ASU_CLIENT_TEST_SOURCE_FILES CONFIGURE_DEPENDS client/test/*.cpp)
35+
list(APPEND ASU_TEST_SOURCE_FILES ${ASU_CLIENT_TEST_SOURCE_FILES})
36+
add_executable(asu.test ${ASU_TEST_SOURCE_FILES})
37+
target_compile_definitions(asu.test PRIVATE ASU_BUILD_TESTS)
38+
target_include_directories(asu.test PRIVATE
39+
${CMAKE_CURRENT_SOURCE_DIR}/common
40+
${CMAKE_CURRENT_SOURCE_DIR}/client/src
41+
${CMAKE_CURRENT_SOURCE_DIR}/trans/src
42+
${UCM_ROOT_DIR}/ucm/shared/infra
43+
)
44+
target_link_libraries(asu.test PRIVATE
45+
asu_client
46+
gtest_main gtest
47+
)
48+
gtest_discover_tests(asu.test)
49+
endif()
4650
endif()

0 commit comments

Comments
 (0)