Why CUDA Stream Kernel Launches Cost More Than Graphs: QMD Construction and Tracking

mike64_t · x · 2026-10-22

Explaining why enqueuing kernel launches to a stream has more overhead than a CUDA graph, the author points to the stream path's need to construct QMDs (queue metadata) on the spot and maintain a tracking system for in-flight QMDs — the price of instant dispatch, since cuLaunchKernel must dispatch the QMD right then. He finds the design odd and says a dedicated cuStreamCommence() would have been preferable, but never got an answer from NVIDIA's Nicholas.

Even with a hypothetical cuLaunchKernel plus cuCommence API, a bad implementation would still build QMDs immediately into a staging buffer or FIFO, leaving dependent kernels unknown. Tracking launches in a different representation and paying QMD construction at commence time would avoid this.

Related event: NVIDIA veteran explains why CUDA Graphs have lower launch overhead than streams(5 posts)→

Original post →

More from Infra

Infra channel →