来源:
1. Chranos/ixformer (GitHub) → ixformer_sdk/ (230 files, 70K lines)
- inference/functions/vllm.py: vllm_moe_topk_softmax 完整实现 (2033 lines)
- inference/functions/moe.py: MoE ops 完整实现 (1380 lines)
- contrib/vllm_flash_attn/: FA2 Python 接口 (1018 lines)
- contrib/tgi/fused_moe.py: TGI fused MoE (429 lines)
- csrc/include/ixformer/: C++ kernel headers + cmake
2. Deep-Spark/xllm (GitHub) → upstream_ref/xllm_latest/ (+15 files)
- npu_torch/qwen3_5_decoder_layer_impl.cpp/.h
- npu_torch/qwen3_5_gated_delta_net.cpp/.h
- npu_torch/qwen3_next_*.cpp/.h (6 files)
- npu_torch/attention.cpp/.h + fused_moe.cpp/.h + CMakeLists.txt
- models/llm/qwen3_5.h + qwen3_5_mtp.h + qwen3_next.h
- models/vlm/qwen3_5.h
调用链完整性:
ixformer_sdk/inference/functions/vllm.py
→ ops.infer.moe_topk_softmax() (C++ 层)
→ 这就是 base 镜像 libixformer.so 里的实现
upstream_ref/xllm_latest/core/layers/ilu/fused_moe.cpp
→ ixformer::infer::topk_softmax() (直接 C++ 调用)
→ ixformer::infer::group_gemm() → 完整 7-step MoE pipeline
41 lines
1.3 KiB
CMake
41 lines
1.3 KiB
CMake
# use python to find ixformer libs and include
|
|
if (CMAKE_VERSION VERSION_LESS 3.18)
|
|
set(DEV_MODULE Development)
|
|
else()
|
|
set(DEV_MODULE Development.Module)
|
|
endif()
|
|
|
|
find_package(Python COMPONENTS Interpreter ${DEV_MODULE} REQUIRED)
|
|
|
|
# find ixformer
|
|
set(IXFORMER_FOUND FALSE)
|
|
|
|
if("${Python_FOUND}" STREQUAL "TRUE")
|
|
execute_process(
|
|
COMMAND ${Python_EXECUTABLE} -c "import os, ixformer; print(os.path.dirname(ixformer.__file__))"
|
|
OUTPUT_VARIABLE IXFORMER_PYDIR
|
|
ERROR_VARIABLE PYTHON_ERROR
|
|
RESULT_VARIABLE PYTHON_RESULT
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
if ("${IXFORMER_PYDIR}" STREQUAL "")
|
|
message("-- Not found ixFormer")
|
|
else ()
|
|
message("-- Found ixFormer: ${IXFORMER_PYDIR}")
|
|
set(IXFORMER_FOUND TRUE)
|
|
endif ()
|
|
endif()
|
|
|
|
set(IXFORMER_COMM_LIBS "ixformer_comm")
|
|
set(IXFORMER_KERNEL_LIBS "ixformer_kernels")
|
|
set(IXFORMER_LIBS "${IXFORMER_COMM_LIBS} ${IXFORMER_KERNEL_LIBS}")
|
|
set(IXFORMER_INCLUDE "")
|
|
set(IXFORMER_DIR "")
|
|
|
|
if("${IXFORMER_FOUND}" STREQUAL "TRUE")
|
|
set(IXFORMER_INCLUDE "${IXFORMER_PYDIR}/csrc/include")
|
|
set(IXFORMER_DIR "${IXFORMER_PYDIR}")
|
|
message("-- ixFormer LIBS: ${IXFORMER_LIBS}, INCLUDE: ${IXFORMER_INCLUDE}")
|
|
endif ()
|