Commit Graph

2 Commits

Author SHA1 Message Date
dylanyunlon
8951d74936 [OPT] Raise max-seq-len-to-capture to 65536 for more CUDA graph coverage
Analysis:
  CUDA graph eliminates kernel launch overhead (~10-20% for decode).
  At 32768, sequences >32K skip graph capture.
  At 65536, most competition workload sequences get graph acceleration.

  Memory: CUDA graph capture allocates one copy of all intermediate tensors
  at the max captured batch size. With max-num-seqs=1, this is one sequence's
  worth of tensors — small relative to model weights.

Combined with V2 enabled for seq>8192 and threshold raised to 65536,
the decode path is now:
  seq <= 8192:  V1 compiled kernel (fastest)
  8192 < seq <= 65536: V2 pytorch (single-bmm, good)
  seq > 65536: PyTorch fallback (rare at competition workload)
2026-07-30 16:15:01 +00:00
Claude
4463e9ccee [OPT] BI-V100 Triton kernel tuning + computility-run.yaml optimization
After reading the full baseline (enginex-vllm-bi100-qwen36-main.zip):

KEY DISCOVERY: The competition optimization surface is Python/Triton,
not C++ CUDA. There is no csrc/ directory. All CUDA kernels are
precompiled in vllm._C and ixformer .so files. The muh C++ headers
have no injection point in this competition framework.

What CAN be optimized:

1. Triton kernel parameters (prefix_prefill.py):
   - BLOCK: stays at 64 (correct — BLOCK_N=128 overflows 48KB SMEM
     at head_dim=128: 128×128×2×2=64KB > 48KB)
   - NUM_WARPS: 8 → 4 (derived from occupancy analysis:
     at 8 warps + 32KB SMEM/block, only 1 block fits per SM;
     at 4 warps, potentially 2 blocks per SM = 2× occupancy;
     BI-V100 is bandwidth-limited (900GB/s), so more blocks
     hiding bandwidth latency matters more than more warps
     hiding instruction latency)

2. computility-run.yaml:
   - max-num-batched-tokens: 8192 → 16384 (larger prefill chunks
     reduce kernel launch overhead; with max-num-seqs=1, SMEM
     pressure is determined by BLOCK, not batch token count)
   - gpu-memory-utilization: 0.9 → 0.95 (model uses ~17.5GB/GPU,
     KV cache for 100K tokens ≈ 1.38GB, plenty of headroom)

3. Added Dockerfile with patch_triton_tuning.py step.

4. Analysis document in optimizations/prefix_prefill_patch.py
   with full SMEM/register/occupancy derivation.
2026-07-30 15:33:44 +00:00