Download CMakeLists.txt from Sariel00/Ling-3.0-tiny-RKNN: direct link, hf CLI and curl.
- Browser
- Download file 6.91 kB
-
https://huggingface.co/Sariel00/Ling-3.0-tiny-RKNN/resolve/main/CMakeLists.txt
- Command line
-
hf download hf://Sariel00/Ling-3.0-tiny-RKNN/CMakeLists.txt
-
curl -L -o CMakeLists.txt https://huggingface.co/Sariel00/Ling-3.0-tiny-RKNN/resolve/main/CMakeLists.txt
6.91 kB
| cmake_minimum_required(VERSION 3.20) | |
| project(ling3_rknn VERSION 0.1.0 LANGUAGES CXX) | |
| option(LING3_WITH_RKNN "Build the direct RKNN backend" OFF) | |
| option(LING3_EXPERIMENTAL_MTP "Build experimental NEXTN/MTP probes (not production decoding)" OFF) | |
| option(LING3_TUNE_A76 "Tune release builds for Cortex-A76" ON) | |
| option(LING3_WITH_ICU "Use ICU for exact tokenizer normalization and splitting" ON) | |
| set(RKNN_ROOT "" CACHE PATH "Local RKNPU2 root from https://github.com/airockchip/rknpu2 (contains include/ and lib/)") | |
| add_library(ling3_core STATIC | |
| src/core_workers.cpp | |
| src/cpu_kernels.cpp | |
| src/decoder.cpp | |
| src/decoder_state.cpp | |
| src/execution_plan.cpp | |
| src/gdn_step.cpp | |
| src/layer0.cpp | |
| src/linear.cpp | |
| src/model_package.cpp | |
| src/mla_npu.cpp | |
| src/quantization.cpp | |
| src/rknn_backend.cpp | |
| src/router.cpp | |
| src/tokenizer.cpp | |
| src/w4_linear.cpp | |
| ) | |
| target_include_directories(ling3_core PUBLIC include) | |
| target_compile_features(ling3_core PUBLIC cxx_std_20) | |
| target_compile_options(ling3_core PRIVATE -Wall -Wextra -Wpedantic) | |
| target_compile_definitions(ling3_core PUBLIC LING3_WITH_RKNN=$<BOOL:${LING3_WITH_RKNN}>) | |
| target_compile_definitions(ling3_core PUBLIC LING3_EXPERIMENTAL_MTP=$<BOOL:${LING3_EXPERIMENTAL_MTP}>) | |
| if(LING3_WITH_ICU) | |
| find_package(ICU COMPONENTS uc i18n QUIET) | |
| endif() | |
| if(ICU_FOUND) | |
| target_compile_definitions(ling3_core PUBLIC LING3_WITH_ICU=1) | |
| target_link_libraries(ling3_core PUBLIC ICU::uc ICU::i18n) | |
| else() | |
| target_compile_definitions(ling3_core PUBLIC LING3_WITH_ICU=0) | |
| message(STATUS "ICU development files not found; tokenizer uses a non-production fallback") | |
| endif() | |
| if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)$" AND LING3_TUNE_A76) | |
| target_compile_options(ling3_core PRIVATE $<$<CONFIG:Release>:-mcpu=cortex-a76>) | |
| endif() | |
| if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)$") | |
| include(CheckLibraryExists) | |
| check_library_exists(mvec _ZGVnN4v_expf "" LING3_HAS_VECTOR_EXP) | |
| if(LING3_HAS_VECTOR_EXP) | |
| target_compile_definitions(ling3_core PRIVATE LING3_WITH_VECTOR_EXP=1) | |
| target_link_libraries(ling3_core PUBLIC mvec) | |
| endif() | |
| endif() | |
| if(LING3_WITH_RKNN) | |
| # Support both a flattened SDK tree and the official rknpu2 checkout: | |
| # runtime/Linux/librknn_api/{include,aarch64}. | |
| find_path(RKNN_INCLUDE_DIR rknn_api.h | |
| HINTS "${RKNN_ROOT}" | |
| PATH_SUFFIXES include runtime/Linux/librknn_api/include | |
| REQUIRED) | |
| find_library(RKNN_LIBRARY rknnrt | |
| HINTS "${RKNN_ROOT}" | |
| PATH_SUFFIXES lib aarch64 runtime/Linux/librknn_api/aarch64 | |
| REQUIRED) | |
| target_include_directories(ling3_core PRIVATE "${RKNN_INCLUDE_DIR}") | |
| target_link_libraries(ling3_core PUBLIC "${RKNN_LIBRARY}" pthread) | |
| if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)$") | |
| add_executable(ling3-quant-loss-probe EXCLUDE_FROM_ALL tools/quant_loss_probe.cpp) | |
| add_executable(ling3-linear-bridge-check EXCLUDE_FROM_ALL tools/linear_bridge_check.cpp) | |
| target_link_libraries(ling3-linear-bridge-check PRIVATE ling3_core) | |
| target_include_directories(ling3-quant-loss-probe PRIVATE third_party/nlohmann) | |
| target_link_libraries(ling3-quant-loss-probe PRIVATE ling3_core) | |
| add_executable(ling3-mla-npu-probe EXCLUDE_FROM_ALL tools/mla_npu_probe.cpp) | |
| target_include_directories(ling3-mla-npu-probe PRIVATE src third_party/nlohmann "${RKNN_INCLUDE_DIR}") | |
| target_compile_options(ling3-mla-npu-probe PRIVATE -O3 -mcpu=cortex-a76 -Wall -Wextra) | |
| target_link_libraries(ling3-mla-npu-probe PRIVATE ling3_core) | |
| endif() | |
| endif() | |
| set_target_properties(ling3_core PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE ON) | |
| add_executable(ling3-rknn | |
| src/main.cpp | |
| src/service.cpp | |
| ) | |
| target_link_libraries(ling3-rknn PRIVATE ling3_core) | |
| add_executable(mindnano-infer src/portable_main.cpp) | |
| target_include_directories(mindnano-infer PRIVATE third_party/nlohmann) | |
| target_link_libraries(mindnano-infer PRIVATE ling3_core) | |
| include(CTest) | |
| if(BUILD_TESTING) | |
| add_executable(ling3-decoder-state-test tests/decoder_state_test.cpp) | |
| target_link_libraries(ling3-decoder-state-test PRIVATE ling3_core) | |
| add_test(NAME ling3-decoder-state-test COMMAND ling3-decoder-state-test) | |
| add_executable(ling3-generation-control-test tests/generation_control_test.cpp) | |
| target_compile_features(ling3-generation-control-test PRIVATE cxx_std_20) | |
| target_include_directories(ling3-generation-control-test PRIVATE include third_party/nlohmann) | |
| target_link_libraries(ling3-generation-control-test PRIVATE pthread) | |
| add_test(NAME ling3-generation-control-test COMMAND ling3-generation-control-test) | |
| add_executable(ling3-precision-policy-test tests/precision_policy_test.cpp) | |
| target_link_libraries(ling3-precision-policy-test PRIVATE ling3_core) | |
| add_test(NAME ling3-precision-policy-test COMMAND ling3-precision-policy-test) | |
| if(LING3_WITH_RKNN) | |
| # Explicit model-backed test: run with MODEL.l3r, one model process at a time. | |
| add_executable(ling3-checkpoint-model-test tests/checkpoint_model_test.cpp) | |
| target_link_libraries(ling3-checkpoint-model-test PRIVATE ling3_core) | |
| add_executable(ling3-w4-workspace-test tests/w4_workspace_test.cpp) | |
| target_link_libraries(ling3-w4-workspace-test PRIVATE ling3_core) | |
| add_test(NAME ling3-w4-workspace-test COMMAND ling3-w4-workspace-test) | |
| set_tests_properties(ling3-w4-workspace-test PROPERTIES LABELS rknn_hardware) | |
| endif() | |
| add_executable(ling3-model-reclaim-test tests/model_reclaim_test.cpp) | |
| target_link_libraries(ling3-model-reclaim-test PRIVATE ling3_core) | |
| add_test(NAME ling3-model-reclaim-test COMMAND ling3-model-reclaim-test) | |
| add_executable(ling3-chat-protocol-test tests/chat_protocol_test.cpp) | |
| target_compile_features(ling3-chat-protocol-test PRIVATE cxx_std_20) | |
| target_include_directories(ling3-chat-protocol-test PRIVATE include third_party/nlohmann) | |
| add_test(NAME ling3-chat-protocol-test COMMAND ling3-chat-protocol-test) | |
| add_executable(ling3-router-test tests/router_test.cpp) | |
| target_link_libraries(ling3-router-test PRIVATE ling3_core) | |
| add_test(NAME ling3-router-test COMMAND ling3-router-test) | |
| add_executable(ling3-quantization-test tests/quantization_test.cpp) | |
| target_link_libraries(ling3-quantization-test PRIVATE ling3_core) | |
| add_test(NAME ling3-quantization-test COMMAND ling3-quantization-test) | |
| add_executable(ling3-activation-test tests/activation_test.cpp) | |
| target_link_libraries(ling3-activation-test PRIVATE ling3_core) | |
| add_test(NAME ling3-activation-test COMMAND ling3-activation-test) | |
| if(LING3_HAS_VECTOR_EXP) | |
| add_test(NAME ling3-vector-activation-test COMMAND ling3-activation-test) | |
| set_tests_properties(ling3-vector-activation-test PROPERTIES ENVIRONMENT "LING3_VECTOR_MATH=1") | |
| endif() | |
| endif() | |