### What this PR does / why we need it? This PR introduces the Ascend implementation of the `dispatch_ffn_combine` kernel and wires it into the vLLM-Ascend runtime, together with follow‑up fixes to ensure the kernel builds and runs correctly in CI. - Add full host and device implementation of the `dispatch_ffn_combine` kernel under `csrc/dispatch_ffn_combine`, including tiling logic, MOE routing helpers, and kernel utilities for quantized FFN dispatch. - Integrate the new kernel with the PyTorch binding (csrc/torch_binding.cpp, csrc/torch_binding_meta.cpp) and the Ascend runtime (vllm_ascend/ascend_forward_context.py, vllm_ascend/worker/model_runner_v1.py). - Extend fused MoE communication and token dispatch support in `vllm_ascend/ops/fused_moe`, adding methods/utilities needed by the new dispatch path. - Update quantization logic in vllm_ascend/quantization/w8a8_dynamic.py to support the new FFN dispatch flow. - Fix kernel build issues by adjusting `csrc/build_aclnn.sh`, CMake configuration, and include/namespace usage in the new kernel files. - Add an end‑to‑end nightly test `tests/e2e/nightly/ops/test_dispatch_ffn_combine.py` and helper utilities in `vllm_ascend/utils.py` to validate the new kernel. ### Does this PR introduce _any_ user-facing change? ### How was this patch tested? - vLLM version: v0.12.0 - vLLM main: https://github.com/vllm-project/vllm/commit/v0.12.0 --------- Signed-off-by: mojave2 <chenchen145@huawei.com> Co-authored-by: wangxiyuan <wangxiyuan1007@gmail.com>
67 lines
2.5 KiB
CMake
67 lines
2.5 KiB
CMake
# Copyright (c) 2025 Huawei Technologies Co., Ltd.
|
|
# This file is a part of the CANN Open Software.
|
|
# Licensed under CANN Open Software License Agreement Version 1.0 (the "License").
|
|
# Please refer to the License for details. You may not use this file except in compliance with the License.
|
|
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
|
|
# INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
|
|
# See LICENSE in the root of the software repository for the full text of the License.
|
|
# ======================================================================================================================
|
|
|
|
set(_DISPATCH_FFN_INC_OPTS)
|
|
if (EXISTS ${ASCEND_CANN_PACKAGE_PATH}/aarch64-linux/ascendc/include)
|
|
list(APPEND _DISPATCH_FFN_INC_OPTS -I${ASCEND_CANN_PACKAGE_PATH}/aarch64-linux/ascendc/include)
|
|
elseif (EXISTS ${ASCEND_CANN_PACKAGE_PATH}/arm64-linux/ascendc/include)
|
|
list(APPEND _DISPATCH_FFN_INC_OPTS -I${ASCEND_CANN_PACKAGE_PATH}/arm64-linux/ascendc/include)
|
|
elseif (EXISTS ${ASCEND_CANN_PACKAGE_PATH}/${CMAKE_SYSTEM_PROCESSOR}-linux/ascendc/include)
|
|
list(APPEND _DISPATCH_FFN_INC_OPTS -I${ASCEND_CANN_PACKAGE_PATH}/${CMAKE_SYSTEM_PROCESSOR}-linux/ascendc/include)
|
|
endif()
|
|
if (EXISTS ${CMAKE_SOURCE_DIR}/third_party/catlass/include)
|
|
list(APPEND _DISPATCH_FFN_INC_OPTS -I${CMAKE_SOURCE_DIR}/third_party/catlass/include)
|
|
endif()
|
|
|
|
add_ops_compile_options(
|
|
OP_NAME DispatchFFNCombine
|
|
OPTIONS --cce-auto-sync=on
|
|
-Wno-deprecated-declarations
|
|
-Werror
|
|
-DHCCL_COMM
|
|
${_DISPATCH_FFN_INC_OPTS}
|
|
)
|
|
|
|
target_sources(op_host_aclnnInner PRIVATE
|
|
dispatch_ffn_combine_def.cpp
|
|
)
|
|
|
|
target_sources(opapi PRIVATE
|
|
aclnn_dispatch_ffn_combine.cpp
|
|
)
|
|
|
|
if (NOT BUILD_OPEN_PROJECT)
|
|
target_sources(aclnn_ops_train PRIVATE
|
|
aclnn_dispatch_ffn_combine.cpp
|
|
)
|
|
|
|
target_sources(aclnn_ops_infer PRIVATE
|
|
aclnn_dispatch_ffn_combine.cpp
|
|
)
|
|
endif ()
|
|
|
|
target_sources(optiling PRIVATE
|
|
dispatch_ffn_combine_tiling.cpp
|
|
)
|
|
|
|
target_include_directories(optiling PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../op_kernel
|
|
)
|
|
|
|
target_sources(opsproto PRIVATE
|
|
dispatch_ffn_combine_proto.cpp
|
|
)
|
|
|
|
file(GLOB _GMM_Aclnn_header "${CMAKE_CURRENT_SOURCE_DIR}/aclnn_dispatch_ffn_combine.h")
|
|
|
|
install(FILES ${_GMM_Aclnn_header}
|
|
DESTINATION ${ACLNN_INC_INSTALL_DIR} OPTIONAL
|
|
)
|