#!/usr/bin/env bash set -euo pipefail git submodule update --init --recursive VENV_ROOT="$(pwd)" echo "[VENV_ROOT]: $VENV_ROOT" NVSHMEM_ROOT="$VENV_ROOT/.venv/lib/python3.12/site-packages/nvidia/nvshmem" NVSHMEM_LIB_DIR="$NVSHMEM_ROOT/lib" echo "[NVSHMEM_ROOT]: $NVSHMEM_ROOT" echo "[NVSHMEM_LIB_DIR]: $NVSHMEM_LIB_DIR" if [[ ! -d "$NVSHMEM_LIB_DIR" ]]; then echo "ERROR: NVSHMEM lib dir not found: $NVSHMEM_LIB_DIR" exit 1 fi cd "$NVSHMEM_LIB_DIR" if [[ -L "libnvshmem_host.so" ]]; then echo "[INFO] libnvshmem_host.so is a symlink, removing it" rm -f "libnvshmem_host.so" elif [[ -e "libnvshmem_host.so" ]]; then echo "[INFO] libnvshmem_host.so exists and is not a symlink, keeping it" else echo "[INFO] libnvshmem_host.so does not exist, will create it" fi if [[ ! -e "libnvshmem_host.so" ]]; then if [[ -e "libnvshmem_host.so.3" ]]; then ln -s "libnvshmem_host.so.3" "libnvshmem_host.so" echo "[INFO] linked libnvshmem_host.so -> libnvshmem_host.so.3" else target="$(find . -maxdepth 1 -type f -name 'libnvshmem_host.so.*' | sort | head -n 1 | sed 's|^\./||')" if [[ -n "${target:-}" ]]; then ln -s "$target" "libnvshmem_host.so" echo "[INFO] linked libnvshmem_host.so -> $target" else echo "ERROR: no libnvshmem_host.so.* found in $NVSHMEM_LIB_DIR" exit 1 fi fi fi echo "[INFO] current host libs:" ls -l libnvshmem_host.so* cd "$VENV_ROOT/thirdparty/DeepEP" unset TORCH_CUDA_ARCH_LIST export TORCH_CUDA_ARCH_LIST="9.0" unset DISABLE_SM90_FEATURES rm -rf build find . -name '*.so' -delete 2>/dev/null || true export NVSHMEM_DIR="$NVSHMEM_ROOT" export LD_LIBRARY_PATH="$NVSHMEM_LIB_DIR:${LD_LIBRARY_PATH:-}" echo "[INFO] TORCH_CUDA_ARCH_LIST=$TORCH_CUDA_ARCH_LIST" echo "[INFO] NVSHMEM_DIR=$NVSHMEM_DIR" echo "[INFO] LD_LIBRARY_PATH=$LD_LIBRARY_PATH" python setup.py install python -c "import deep_ep; print('<<< deep_ep import ok >>>')"