Replaces cherry-picked upstream_ref with complete source trees. xllm/ — Iluvatar official C++ inference engine (15MB, 1470 files) Complete: kernels → layers → models → runtime → scheduler → api Excluded: .git, binary images, third_party submodule checkouts ds_vllm/ — Iluvatar official vllm fork (8MB, 703 files) Included: csrc/ (ALL CUDA kernels), fused_moe/, qwen3_5 model, _custom_ops Excluded: tests, benchmarks, docs, examples (not needed for reference) Critical call chains now fully traceable: MoE: moe_topk_softmax_kernels.cuh → ixformer.h → fused_moe.cpp → layer GDN: qwen3_gated_delta_net_base.cpp → qwen3_5_gated_delta_net.cpp Attention: ixformer.h → xllm_paged_attention → attention.cpp
132 lines
3.9 KiB
Bash
132 lines
3.9 KiB
Bash
#!/bin/bash
|
|
|
|
# Color definitions
|
|
GREEN="\033[0;32m"
|
|
BLUE="\033[0;34m"
|
|
YELLOW="\033[0;33m"
|
|
RED="\033[0;31m"
|
|
NC="\033[0m" # No Color
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
|
INSTALL_PREFIX="/usr/local/yalantinglibs"
|
|
|
|
print_section() {
|
|
echo -e "\n${BLUE}=== $1 ===${NC}"
|
|
}
|
|
|
|
print_success() {
|
|
echo -e "${GREEN}✓ $1${NC}"
|
|
}
|
|
|
|
print_warning() {
|
|
echo -e "${YELLOW}$1${NC}"
|
|
}
|
|
|
|
print_error() {
|
|
echo -e "${RED}✗ ERROR: $1${NC}"
|
|
exit 1
|
|
}
|
|
|
|
run_or_die() {
|
|
local error_message="$1"
|
|
shift
|
|
"$@"
|
|
if [ $? -ne 0 ]; then
|
|
print_error "$error_message"
|
|
fi
|
|
}
|
|
|
|
ensure_dir() {
|
|
local dir_path="$1"
|
|
local error_message="$2"
|
|
if [ ! -d "${dir_path}" ]; then
|
|
run_or_die "${error_message}" mkdir -p "${dir_path}"
|
|
fi
|
|
}
|
|
|
|
remove_dir_if_exists() {
|
|
local dir_path="$1"
|
|
local dir_name="$2"
|
|
if [ -d "${dir_path}" ]; then
|
|
print_warning "${dir_name} directory already exists. Removing for fresh install..."
|
|
run_or_die "Failed to remove existing ${dir_name} directory" rm -rf "${dir_path}"
|
|
fi
|
|
}
|
|
|
|
patch_yalantinglibs_config() {
|
|
local config_file="$1"
|
|
if [ -f "${config_file}" ]; then
|
|
run_or_die \
|
|
"Failed to patch yalantinglibs config.cmake" \
|
|
sed -i \
|
|
'54s/target_link_libraries(${ylt_target_name} -libverbs)/target_link_libraries(${ylt_target_name} INTERFACE -libverbs)/' \
|
|
"${config_file}"
|
|
fi
|
|
}
|
|
|
|
patch_yalantinglibs_easylog() {
|
|
local easylog_header="$1"
|
|
if [ -f "${easylog_header}" ]; then
|
|
run_or_die \
|
|
"Failed to patch yalantinglibs easylog severity default" \
|
|
sed -i \
|
|
'/std::atomic<Severity> min_severity_ =/,/#endif/c\ std::atomic<Severity> min_severity_ = Severity::WARN;' \
|
|
"${easylog_header}"
|
|
fi
|
|
}
|
|
|
|
install_yalantinglibs() {
|
|
print_section "Installing yalantinglibs"
|
|
|
|
local thirdparties_dir="${REPO_ROOT}/third_party/Mooncake/thirdparties"
|
|
local yalanting_repo_url="https://gitcode.com/gh_mirrors/ya/yalantinglibs.git"
|
|
local yalanting_source_dir="${thirdparties_dir}/yalantinglibs"
|
|
local yalanting_build_dir="${yalanting_source_dir}/build"
|
|
local yalanting_config_file="${INSTALL_PREFIX}/lib/cmake/yalantinglibs/config.cmake"
|
|
local yalanting_easylog_header="${yalanting_source_dir}/include/ylt/easylog.hpp"
|
|
|
|
ensure_dir "${thirdparties_dir}" "Failed to create Mooncake/thirdparties directory"
|
|
remove_dir_if_exists "${yalanting_source_dir}" "yalantinglibs"
|
|
|
|
echo "Cloning yalantinglibs from ${yalanting_repo_url}"
|
|
run_or_die "Failed to clone yalantinglibs" git clone "${yalanting_repo_url}" "${yalanting_source_dir}"
|
|
|
|
echo "Checking out yalantinglibs version 0.5.5..."
|
|
run_or_die "Failed to checkout yalantinglibs version 0.5.5" git -C "${yalanting_source_dir}" checkout 0.5.5
|
|
|
|
patch_yalantinglibs_easylog "${yalanting_easylog_header}"
|
|
|
|
ensure_dir "${yalanting_build_dir}" "Failed to create build directory"
|
|
|
|
echo "Configuring yalantinglibs..."
|
|
run_or_die \
|
|
"Failed to configure yalantinglibs" \
|
|
cmake \
|
|
-S "${yalanting_source_dir}" \
|
|
-B "${yalanting_build_dir}" \
|
|
-DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \
|
|
-DBUILD_EXAMPLES=OFF \
|
|
-DBUILD_BENCHMARK=OFF \
|
|
-DBUILD_UNIT_TESTS=OFF \
|
|
-DYLT_ENABLE_IBV=ON
|
|
|
|
echo "Building yalantinglibs (using $(nproc) cores)..."
|
|
run_or_die "Failed to build yalantinglibs" cmake --build "${yalanting_build_dir}" -j"$(nproc)"
|
|
|
|
echo "Installing yalantinglibs..."
|
|
run_or_die "Failed to install yalantinglibs" cmake --install "${yalanting_build_dir}"
|
|
|
|
patch_yalantinglibs_config "${yalanting_config_file}"
|
|
print_success "yalantinglibs installed successfully to ${INSTALL_PREFIX}"
|
|
}
|
|
|
|
main() {
|
|
ensure_dir "${INSTALL_PREFIX}" "Failed to create install directory: ${INSTALL_PREFIX}"
|
|
echo -e "${YELLOW}Installing to: ${INSTALL_PREFIX}${NC}"
|
|
|
|
install_yalantinglibs
|
|
}
|
|
|
|
main "$@"
|