{
  "site": "https://gpu.l-jh.net",
  "generated": "2026-08-07T10:05:46.324Z",
  "count": 2,
  "categories": [
    "启动开销",
    "并发与调度"
  ],
  "cases": [
    {
      "slug": "stream-hw-queue-contention",
      "title": "多 stream 却不并发 —— 逻辑 stream 抢占物理硬件队列",
      "category": "并发与调度",
      "severity": "high",
      "symptom": "代码里开了很多 CUDA stream，但 Nsight 时间线上 kernel 首尾相接、几乎没有重叠，多流优化完全没有收益",
      "cause": "CUDA stream 是逻辑概念，真正下发要经过数量有限的硬件工作队列。逻辑 stream 多于可用队列时会被复用到同一条队列上，彼此产生假依赖而串行",
      "tools": [
        "Nsight Systems",
        "nvidia-smi"
      ],
      "metrics": [
        "sm__throughput.avg.pct_of_peak_sustained_elapsed",
        "gpu__time_duration.sum"
      ],
      "keywords": [
        "stream",
        "hardware queue",
        "CUDA_DEVICE_MAX_CONNECTIONS",
        "假依赖",
        "并发",
        "串行",
        "抢占"
      ],
      "date": "2026-08-07",
      "url": "https://gpu.l-jh.net/cases/stream-hw-queue-contention.html"
    },
    {
      "slug": "small-kernel-launch-overhead",
      "title": "小 kernel 过多，launch 开销主导整体耗时",
      "category": "启动开销",
      "severity": "medium",
      "symptom": "GPU 利用率看起来不低，但时间线上密密麻麻全是几微秒的小 kernel，kernel 之间有稳定间隙，总耗时远大于各 kernel 耗时之和",
      "cause": "单次 kernel launch 有固定的 CPU 侧下发与 GPU 侧调度成本。当 kernel 本体只有几微秒时，这部分固定开销占比超过实际计算",
      "tools": [
        "Nsight Systems",
        "Nsight Compute"
      ],
      "metrics": [
        "gpu__time_duration.sum",
        "launch__grid_size"
      ],
      "keywords": [
        "kernel launch",
        "CUDA Graph",
        "kernel fusion",
        "启动开销",
        "小算子",
        "overhead"
      ],
      "date": "2026-08-06",
      "url": "https://gpu.l-jh.net/cases/small-kernel-launch-overhead.html"
    }
  ]
}
