mirror of https://github.com/vllm-project/vllm.git
110 lines
3.1 KiB
Bash
110 lines
3.1 KiB
Bash
#!/bin/bash
|
|
# Usage: ./install_nixl.sh [--force]
|
|
|
|
FORCE=false
|
|
if [ "$1" == "--force" ]; then
|
|
FORCE=true
|
|
fi
|
|
|
|
SUDO=false
|
|
if command -v sudo >/dev/null 2>&1 && sudo -n true 2>/dev/null; then
|
|
SUDO=true
|
|
fi
|
|
|
|
ARCH=$(uname -m)
|
|
|
|
ROOT_DIR="/usr/local"
|
|
mkdir -p "$ROOT_DIR"
|
|
GDR_HOME="$ROOT_DIR/gdrcopy"
|
|
UCX_HOME="$ROOT_DIR/ucx"
|
|
NIXL_HOME="$ROOT_DIR/nixl"
|
|
CUDA_HOME=/usr/local/cuda
|
|
|
|
export PATH="$GDR_HOME/bin:$UCX_HOME/bin:$NIXL_HOME/bin:$PATH"
|
|
export LD_LIBRARY_PATH="$GDR_HOME/lib:$UCX_HOME/lib:$NIXL_HOME/lib/$ARCH-linux-gnu:$LD_LIBRARY_PATH"
|
|
|
|
TEMP_DIR="nixl_installer"
|
|
mkdir -p "$TEMP_DIR"
|
|
cd "$TEMP_DIR"
|
|
|
|
pip install meson ninja pybind11
|
|
|
|
if [ ! -e "/dev/gdrdrv" ] || [ "$FORCE" = true ]; then
|
|
echo "Installing gdrcopy\n"
|
|
wget https://github.com/NVIDIA/gdrcopy/archive/refs/tags/v2.5.tar.gz
|
|
tar xzf v2.5.tar.gz; rm v2.5.tar.gz
|
|
cd gdrcopy-2.5
|
|
make prefix=$GDR_HOME CUDA=$CUDA_HOME all install
|
|
|
|
if $SUDO; then
|
|
echo "Running insmod.sh with sudo"
|
|
sudo ./insmod.sh
|
|
else
|
|
echo "Skipping insmod.sh - sudo not available"
|
|
echo "Please run 'sudo ./gdrcopy-2.5/insmod.sh' manually if needed"
|
|
fi
|
|
|
|
cd ..
|
|
else
|
|
echo "Found /dev/gdrdrv. Skipping gdrcopy installation"
|
|
fi
|
|
|
|
if ! command -v ucx_info &> /dev/null || [ "$FORCE" = true ]; then
|
|
echo "Installing UCX"
|
|
wget https://github.com/openucx/ucx/releases/download/v1.18.0/ucx-1.18.0.tar.gz
|
|
tar xzf ucx-1.18.0.tar.gz; rm ucx-1.18.0.tar.gz
|
|
cd ucx-1.18.0
|
|
|
|
# Checking Mellanox NICs
|
|
MLX_OPTS=""
|
|
if lspci | grep -i mellanox > /dev/null || command -v ibstat > /dev/null; then
|
|
echo "Mellanox NIC detected, adding Mellanox-specific options"
|
|
MLX_OPTS="--with-rdmacm \
|
|
--with-mlx5-dv \
|
|
--with-ib-hw-tm"
|
|
fi
|
|
|
|
./configure --prefix=$UCX_HOME \
|
|
--enable-shared \
|
|
--disable-static \
|
|
--disable-doxygen-doc \
|
|
--enable-optimizations \
|
|
--enable-cma \
|
|
--enable-devel-headers \
|
|
--with-cuda=$CUDA_HOME \
|
|
--with-dm \
|
|
--with-gdrcopy=$GDR_HOME \
|
|
--with-verbs \
|
|
--enable-mt \
|
|
$MLX_OPTS
|
|
make -j
|
|
make -j install-strip
|
|
|
|
if $SUDO; then
|
|
echo "Running ldconfig with sudo"
|
|
sudo ldconfig
|
|
else
|
|
echo "Skipping ldconfig - sudo not available"
|
|
echo "Please run 'sudo ldconfig' manually if needed"
|
|
fi
|
|
|
|
cd ..
|
|
else
|
|
echo "Found existing UCX. Skipping UCX installation"
|
|
fi
|
|
|
|
if ! command -v nixl_test &> /dev/null || [ "$FORCE" = true ]; then
|
|
echo "Installing NIXL"
|
|
wget https://github.com/ai-dynamo/nixl/archive/refs/tags/0.2.0.tar.gz
|
|
tar xzf 0.2.0.tar.gz; rm 0.2.0.tar.gz
|
|
cd nixl-0.2.0
|
|
meson setup build --prefix=$NIXL_HOME -Ducx_path=$UCX_HOME
|
|
cd build
|
|
ninja
|
|
ninja install
|
|
|
|
cd ../..
|
|
else
|
|
echo "Found existing NIXL. Skipping NIXL installation"
|
|
fi
|