GLM-5.3 Optimizations, Part 2: PCP, DCP, and Hybrid HiSparse on 16 H200s A technical blog post details how Prefill Context Parallelism (PCP), Decode Context Parallelism (DCP) and Hybrid HiSparse let GLM-5.3 serve 1M-token agentic contexts on 16 H200 GPUs split into one prefill node and one decode node. On the AgentX workload, PCP8 × DCP8 prefill with Hybrid HiSparse decode delivered 1.7–3.2× the per-user speed of a data-parallel deployment at the same throughput and was the only tested configuration that served 1M-token contexts. PCP shards each prompt across eight GPUs by token using 16 chunks paired front-to-back for load balance, while DCP shards the prefill engine's KV cache by token so a 1M context fits on the prefill node. GLM-5.3 Optimizations, Part 2: PCP, DCP, and Hybrid HiSparse on 16 H200s TL;DR: Long agentic contexts push GLM-5.3 against two limits on H200s: KV cache memory and prefill speed. We address both on 16 H200s, split into one prefill node and one decode node: - Prefill Context Parallelism PCP splits each prompt across GPUs by token instead of by head, which suits GLM-5.3’s sparse attention far better than tensor parallelism. - Decode Context Parallelism DCP shards the prefill engine’s KV cache by token, so a 1M context fits on the prefill node. - Hybrid HiSparse lets decode keep KV in host memory, so a 1M-token request fits. - On AgentX, PCP8 × DCP8 prefill with Hybrid HiSparse decode gives 1.7–3.2× the per-user speed of a data-parallel deployment at the same throughput, and it is the only configuration we tested that serves 1M-token contexts. Serving long contexts in memory-constrained deployments Agentic workloads have long contexts that grow with every turn, which puts pressure on both GPU memory and prefill. On H200s, GLM-5.3’s weights take up most of each GPU’s memory, leaving little room for the KV cache of those long contexts. And because every turn adds more tool output and file contents to prefill, under load the prefill engines can become the bottleneck for the whole deployment. Part 1 https://vllm-project.github.io/blog/2026-09-08-glm53-part1-hybrid-sparse-offloading showed how Hybrid HiSparse lets long contexts fit in an aggregated deployment on a single 8× H200 node. Prefill/decode disaggregation takes more than that. On the prefill node, we use PCP to speed up long prompts by parallelizing across the prompt’s tokens. With MLA, however, this leaves every PCP rank holding a full copy of the KV cache, so we combine it with DCP to remove that replication. On the decode node, Hybrid HiSparse allows higher concurrency at long contexts. vLLM’s new modular core Model Runner V2 https://vllm-project.github.io/blog/2026-03-24-mrv2 makes composing all of this much easier. Why not TP or DP? Two standard ways to run GLM-5.3 prefill on an 8× H200 node are DP8 and TP8: - DP8 assigns each prompt to a single GPU, so its attention cannot use the other seven. This limits time to first token TTFT for long prompts, and the prompt’s KV cache must fit in that GPU’s memory. - TP8 partitions the attention heads across GPUs. Because MLA’s latent KV is shared by all 64 heads, every GPU stores the full cache and reads it to serve only 8 heads. The indexer, which scores every earlier token to select the 2,048 that sparse MLA attends to, is not partitioned at all, so its quadratic cost is repeated on every GPU. Neither scheme spreads one long prompt’s attention work across the eight GPUs without also keeping its whole KV on each GPU that serves it. The next two sections address each half. PCP splits a prompt’s queries across GPUs, and DCP splits its KV. PCP: split the tokens, not the heads In our 8× H200 prefill engine, PCP splits each prompt across the eight GPUs by token: every GPU computes the queries for one eighth of the prompt, with all 64 heads. A naive split would be unbalanced. Under causal attention a token attends to every token before it, so the GPU holding the end of the prompt would do far more work than the one holding the start. PCP instead cuts the prompt into 16 chunks and pairs them up: GPU $r$ takes chunk $r$ from the front and chunk $15 − r$ from the back, so every GPU gets the same mix of cheap and expensive tokens Figure 3 shows this as a V-shaped pattern across the eight GPUs . This is the load-balanced sharding from Context Parallelism for Scalable Million-Token Inference https://arxiv.org/abs/2411.01783 . Finally, each GPU’s new KV is all-gathered, so every query can still attend to the full context. Figure 1. One prefill on 8 GPUs under TP8 and PCP8, shaded by the GPU that owns each piece. The bars show sparse MLA's arithmetic intensity; the line marks where the H200 becomes compute-bound in BF16. Figure 1 compares the two splits. PCP fixes both problems. Each GPU indexes only its own tokens, so the indexer is no longer replicated on every GPU and each GPU does an eighth of it. And each KV row read from memory now serves all 64 heads instead of 8, raising sparse MLA from about 26 to about 191 FLOPs per byte moved,