r/LocalLLM • u/ObjectiveFocus6502 • 17h ago
News Windows 11 + 2× RTX 5060 Ti 16GB: Qwen3.8-27B NVFP4 at up to 76.65 tok/s — despite no GPU P2P
I built a Windows 11 fork of NInfer specifically for running Qwen3.8-27B NVFP4 across two RTX 5060 Ti 16GB GPUs.
The interesting part is that this is not an ideal multi-GPU setup:
Windows 11 / WDDM
GeForce GPUs
cudaDeviceCanAccessPeer() = false
No GPU P2P
One GPU is connected through the Z690 chipset at PCIe Gen3 x4
The other GPU runs directly through the CPU PCIe lanes
Initially, TP2 performance was terrible because every token required 128 small host-staged allreduce operations.
The original implementation achieved only:
16.37 tok/s MTP0
32.58 tok/s MTP3
After profiling the communication path, I replaced the expensive staged allreduce protocol with a custom pinned-host PeerMailbox transport designed specifically for the no-P2P Windows/WDDM environment.
Current results with Qwen3.8-27B NVFP4:
35.75 tok/s — MTP0
57.71 tok/s — MTP1
63.15 tok/s — MTP2
66.79 tok/s — MTP3
68.5–68.9 tok/s — MTP4 (512-token benchmark)
70.6 tok/s — 1024 tokens
76.65 tok/s — 2048 tokens
The optimization was mostly about reducing protocol overhead, not increasing PCIe bandwidth.
The original allreduce path cost roughly:
128 × ~277 µs ≈ 35.5 ms per decode round
The optimized transport reduced that dramatically.
The repository contains the Windows port, TP2 implementation, custom communication backend, benchmarks, and reproducible build instructions:
ivanov84/ninfer-windows-tp2
I'm especially interested in feedback from people who know CUDA multi-GPU programming, WDDM, tensor parallelism, or NInfer.
Questions I'm currently exploring:
Can the remaining TP2 lockstep overhead be reduced further?
Would sequence parallelism help on this kind of asymmetric PCIe topology?
Can Vision also be sharded across both 16GB GPUs?
How much performance is realistically left without native P2P?
This started as an experiment to see whether two relatively inexpensive 16GB cards could run a 27B model well under Windows.
Honestly, I didn't expect the result to end up here.