File size: 1,361 Bytes
d4c2896
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/env bash
# Reproducible Phase 0 environment (speculative decoding, RTX 4060 Ti 16 GB)
# Usage: source scripts/spec-env.sh  (from the repo root)
# Python (uv) + CUDA toolkit in user-space — no sudo.

set -euo pipefail
REPO="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"

# First time: syncs .venv from pyproject.toml + uv.lock
if [ ! -x "$REPO/.venv/bin/ruff" ]; then
  echo "[spec-env] uv sync ..."
  (cd "$REPO" && uv sync) || return 1
fi

# CUDA toolkit: runfile installed in $HOME/cuda (no sudo) — canonical path.
# Fallback: toolkit merged from the venv wheels (scripts/prepare-cuda.sh).
if [ -x "$HOME/cuda/bin/nvcc" ]; then
  export CUDA_HOME="$HOME/cuda"
else
  if [ ! -x "$REPO/.venv/cuda/bin/nvcc" ]; then
    echo "[spec-env] preparing merged CUDA toolkit (fallback) ..."
    bash "$REPO/scripts/prepare-cuda.sh" || return 1
  fi
  export CUDA_HOME="$REPO/.venv/cuda"
fi

export PATH="$REPO/.venv/bin:$PATH"
# The CUDA runfile installs the real libraries in targets/x86_64-linux/lib
export LD_LIBRARY_PATH="$CUDA_HOME/targets/x86_64-linux/lib:$CUDA_HOME/lib64:$CUDA_HOME/lib:${LD_LIBRARY_PATH:-}"
export LLAMA_CPP_HOME="${LLAMA_CPP_HOME:-$HOME/llama.cpp}"
export LLAMA_CPP_BIN="$LLAMA_CPP_HOME/build/bin"
echo "[spec-env] nvcc: $("$CUDA_HOME/bin/nvcc" --version | tail -2 | head -1)"
echo "[spec-env] llama.cpp bin: $LLAMA_CPP_BIN"