Intel Arc Pro B60 Dual 48GB ("Battlematrix") PCIe x8/x8 Bifurcation Audit & vLLM-XPU Launcher (launch-b60-dual-battlematrix-vllm.sh)
Verifies that motherboard PCIe x8/x8 bifurcation exposes both BMG-G21 dies per Arc Pro B60 Dual 48GB card, checks 32GB Resizable BAR apertures and /dev/dri render nodes, and launches intel/llm-scaler-vllm with Tensor Parallelism.
Intel Arc Pro B60 Dual 48GB ("Battlematrix") PCIe x8/x8 Bifurcation Audit & vLLM-XPU Launcher
Verifies that motherboard PCIe x8/x8 bifurcation exposes both BMG-G21 dies per Arc Pro B60 Dual 48GB card, checks 32GB Resizable BAR apertures and /dev/dri render nodes, and launches intel/llm-scaler-vllm with Tensor Parallelism.
#!/usr/bin/env bash
# Tinker AI — Intel Arc Pro B60 Dual 48GB ("Battlematrix") x8/x8 Audit & vLLM-XPU Launcher (Guide #45)
set -euo pipefail
MODEL="Qwen/Qwen3.5-35B-A3B-Instruct"
TP="2"
MASK="0,1"
PORT="8000"
echo "=== [1/4] Auditing PCIe x8/x8 Bifurcation & Enumerated Intel BMG-G21 GPUs ==="
GPU_COUNT=$(lspci -nn | grep -icE "(VGA|Display|3D).*8086:(e20b|e20c|e211|e212)" || true)
lspci -nn | grep -iE "(VGA|Display|3D).*8086" || true
echo "-> Detected Intel Arc Xe2 GPU dies: $GPU_COUNT (Expect 2 per Arc Pro B60 Dual 48GB card!)"
if [ "$GPU_COUNT" -lt "$TP" ]; then
echo "[WARN] Enumerated GPU dies ($GPU_COUNT) < requested TP_SIZE ($TP)!"
echo " Enter motherboard BIOS -> PCIe Slot Configuration -> Set slot from [Auto/x16] to [x8/x8] (or [x8/x8/x8/x8])."
fi
echo "=== [2/4] Verifying Above 4G Decoding & >=32GB Resizable BAR (BAR2) Aperture ==="
sudo lspci -vv -d 8086: | grep -E "Region 2: Memory|LnkSta:" | head -n 8 || true
ls -la /dev/dri/renderD*
echo "=== [3/4] Checking Host IOMMU P2P Passthrough (iommu=pt recommended on WRX90 / Xeon) ==="
grep -o "iommu=[^ ]*" /proc/cmdline || echo "Note: Add iommu=pt to GRUB_CMDLINE_LINUX_DEFAULT if multi-die AllReduce stalls."
echo "=== [4/4] Launching intel/llm-scaler-vllm (TP=$TP, ZE_AFFINITY_MASK=$MASK, Port=$PORT) ==="
docker run --rm -it \
--device /dev/dri \
--group-add video --group-add render \
--shm-size=32g \
--ipc=host \
-p "$PORT:8000" \
-v "$HOME/.cache/huggingface:/root/.cache/huggingface" \
-e ZE_AFFINITY_MASK="$MASK" \
-e SYCL_CACHE_PERSISTENT=1 \
-e SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1 \
intel/llm-scaler-vllm:latest \
--model "$MODEL" \
--tensor-parallel-size "$TP" \
--quantization fp8 \
--max-model-len 65536 \
--gpu-memory-utilization 0.90 \
--trust-remote-code
Customizable Parameter Reference for launch-b60-dual-battlematrix-vllm.sh
This SH artifact exposes 4 template variables compiled client-side in your browser.
| Template Token | Parameter Description | Verified Default | Example Format |
|---|---|---|---|
{{HF_MODEL_ID}} | HuggingFace / Local Model Path | Qwen/Qwen3.5-35B-A3B-Instruct | Qwen/Qwen3.5-35B-A3B-Instruct |
{{TP_SIZE}} | Tensor Parallel Size (2 = 1 Dual Card 48GB, 4 = 2 Cards 96GB) | 2 | 2 |
{{ZE_AFFINITY}} | ZE_AFFINITY_MASK (Intel Level Zero GPU IDs) | 0,1 | 0,1 |
{{API_PORT}} | OpenAI-Compatible HTTP Port | 8000 | 8000 |
Verified Environment for "High-VRAM Non-CUDA Workstations for 70B–122B Local LLMs: Intel Arc Pro B60 Dual 48GB ("Battlematrix" x8/x8 Bifurcation · up to 192GB) vs Tenstorrent QuietBox 2 (Blackhole 128GB) & Intel Crescent Island (160GB/480GB Xe3P)"
Measured on: 2× Maxsun Intel Arc Pro B60 Dual 48G Turbo (4× BMG-G21 dies = 96GB GDDR6 · PCIe 5.0 x8/x8 bifurcated on WRX90) & Tenstorrent QuietBox 2 (Ryzen 7 9700X + 2× Blackhole p300c liquid-cooled = 4 Blackhole ASICs · 128GB GDDR6 + 256GB DDR5) | Spec-estimate row: Intel GPU D-Series "Crescent Island" D270 (32 Xe3P cores · 160GB / 480GB LPDDR5X @ 1.5 TB/s · 350W)
Once Docker images (`intel/llm-scaler-vllm` or `tt-inference-server`) and local HuggingFace/GGUF weights are cached on NVMe, zero internet connectivity is required.
- **Mandatory PCIe `x8/x8` Bifurcation on Arc Pro B60 Dual 48GB:** To hit an aggressive sub-$1,300 street price, partner Dual B60 48GB cards (Maxsun Turbo / Sparkle) **omit an onboard PLX PCIe switch chip**. Lanes `0–7` wire directly to GPU Die 0 (`24GB`) and lanes `8–15` wire to GPU Die 1 (`24GB`). If your motherboard BIOS cannot bifurcate the physical ×16 slot into **`x8/x8`**, Die 1 never powers up on the bus and `lspci` only sees a single 24GB GPU!
- **Above 4G Decoding + >=32GB Resizable BAR Per Die:** Each BMG-G21 die exposes a 24GB VRAM aperture (`Region 2` BAR2 = `32GB` power-of-two window). Installing two Dual B60 cards (`4 dies = 96GB`) or four Dual B60 cards (`8 dies = 192GB`) requires **128GB–256GB of contiguous 64-bit MMIO address space**—consumer boards with buggy UEFI MMIO tables may hang at POST unless `Above 4G Decoding` and `MMIO High Base` (`>= 512G` on WRX90/Xeon) are enabled.
- **Intel "Crescent Island" (GPU D-Series) rows are SPEC-DERIVED ESTIMATES:** Crescent Island (`Xe3P` with 16-deep systolic XMX and 160GB/480GB LPDDR5X @ `1.5 TB/s`) strips out all display/ray-tracing silicon for pure datacenter/server inference; figures in Table 1 for Crescent Island are modeled from published `1.5 TB/s` bandwidth (`× 0.65` efficiency) rather than lab-measured.
3-Step Verification Checklist After Deploying launch-b60-dual-battlematrix-vllm.sh
- Set motherboard PCIe slot bifurcation to `x8/x8` (or `x8/x8` across multiple workstation slots) and confirmed `lspci` enumerates `2 × physical cards` BMG-G21 GPUs.
- Enabled `Above 4G Decoding` + `Resizable BAR` in BIOS and verified `Region 2: Memory ... [size=32G]` in `sudo lspci -vv` for every Intel GPU die.
- Configured `--shm-size=32g`, `SYCL_CACHE_PERSISTENT=1`, and `SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1` in the `intel/llm-scaler-vllm` Docker launch.