# Long-context matrix for SGLang vs vLLM on DeepSeek-V4-Flash (H200, TP=8).
# Input lengths: 64k, 128k, 256k
# Output lengths: 256, 1k, 4k
# Concurrency: 25 for 64k; 10, 5, 2 for 128k and 256k

EXPERIMENT="dsv4_h200_long_context_matrix"
MODEL_NAME="DeepSeek-V4-Flash"
MODEL_PATH="/data/models/DeepSeek-V4-Flash"
SERVED_MODEL_NAME="deepseek-v4-flash"

SGLANG_PORT="${SGLANG_PORT:-30006}"
VLLM_PORT="${VLLM_PORT:-30005}"
DSPARK_PORT="${DSPARK_PORT:-30013}"

VENV_SGLANG="${VENV_SGLANG:-/data/user1/yy/envs/sglang}"
VENV_VLLM="${VENV_VLLM:-/data/user1/yy/envs/vllm}"
VENV_VLLM_DSPARK="${VENV_VLLM_DSPARK:-/data/user1/yy/envs/vllm-dspark}"

# DSpark uses a separate model checkpoint and speculative decoding.
DSPARK_MODEL_NAME="DeepSeek-V4-Flash-DSpark"
DSPARK_MODEL_PATH="/data/models/DeepSeek-V4-Flash-DSpark"

export CUDA_VISIBLE_DEVICES="0,1,2,3,4,5,6,7"
TP=8

# Per-context server settings. Each group is run with its own server start.
# Format: "input_label max_model_len max_concurrency"
declare -a CONTEXT_GROUPS=(
  "64k  80000  25"
  "128k 140000 10"
  "256k 270000 10"
)

# Scenarios per group: "concurrency input_len output_len num_prompts"
# Following docs/EXPERIMENT_GUIDE.md: num_prompts = concurrency * 5.
# NOTE: long-context scenarios are expensive; these counts follow the 5x rule.
declare -a SCENARIOS_64K=(
  "25 65536  256  125"
  "25 65536  1024 125"
  "25 65536  4096 125"
)

declare -a SCENARIOS_128K=(
  "10 131072 256  50"
  "5  131072 256  25"
  "2  131072 256  10"
  "10 131072 1024 50"
  "5  131072 1024 25"
  "2  131072 1024 10"
  "10 131072 4096 50"
  "5  131072 4096 25"
  "2  131072 4096 10"
)

declare -a SCENARIOS_256K=(
  "10 262144 256  50"
  "5  262144 256  25"
  "2  262144 256  10"
  "10 262144 1024 50"
  "5  262144 1024 25"
  "2  262144 1024 10"
  "10 262144 4096 50"
  "5  262144 4096 25"
  "2  262144 4096 10"
)

VENV_CLIENT="${VENV_CLIENT:-$VENV_SGLANG}"

SGLANG_START_SCRIPT="${SCRIPT_DIR:-.}/start_sglang.sh"
VLLM_START_SCRIPT="${SCRIPT_DIR:-.}/start_vllm.sh"
DSPARK_START_SCRIPT="${SCRIPT_DIR:-.}/start_dspark.sh"
