[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-deepstream-profile-pipeline":3,"mdc--7jn8cf-key":34,"related-repo-nvidia-deepstream-profile-pipeline":3381,"related-org-nvidia-deepstream-profile-pipeline":3485},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"deepstream-profile-pipeline","profile DeepStream pipelines","Profile a DeepStream pipeline with Nsight Systems and derive its configs from the measurement. Use when the user asks for an efficient, performant, or profiled pipeline — or to benchmark, tune, or measure FPS.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,19,20],{"name":13,"slug":14,"type":15},"Observability","observability","tag",{"name":17,"slug":18,"type":15},"Performance","performance",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"Engineering","engineering",2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-07-14T05:28:30.832331","CC-BY-4.0 AND Apache-2.0",281,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"AI agent skills published by NVIDIA","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fdeepstream-profile-pipeline","---\nname: \"deepstream-profile-pipeline\"\ndescription: \"Profile a DeepStream pipeline with Nsight Systems and derive its configs from the measurement. Use when the user asks for an efficient, performant, or profiled pipeline — or to benchmark, tune, or measure FPS.\"\nmetadata:\n  author: \"NVIDIA CORPORATION\"\n  tags:\n    - deepstream\n    - profiling\n    - nsight-systems\n    - nvtx\n    - nvidia-smi\n    - benchmarking\n  languages:\n    - bash\n    - python\n    - yaml\n  domain: video-analytics\n  team: deepstream-sdk\nowner: \"NVIDIA CORPORATION\"\nservice: \"deepstream\"\nversion: \"0.1.0\"\nreviewed: \"2026-04-24\"\nlicense: CC-BY-4.0 AND Apache-2.0\ncompatibility: >\n  DeepStream SDK 9.0 on Ubuntu 22.04 or 24.04, run from the\n  `nvcr.io\u002Fnvidia\u002Fdeepstream:9.0-triton-multiarch` container (the dev image; the slimmer\n  `samples-multiarch` variant strips the nsys NVTX injector and produces empty per-plugin\n  NVTX traces — do not use it for profiling). Requires `nsys` (Nsight Systems 2024+) and\n  `nvidia-smi` on PATH. No GUI dependency — the skill runs fully headless and uses only\n  `nsys profile` + `nsys stats`.\ndata_classification: \"internal\"\n---\n\n# DeepStream Profiling Skill\n\nProfile-driven pipeline creation. When the user indicates they want an efficient DeepStream\npipeline, this skill replaces guesswork with two measured numbers — **inference plateau\nbatch** and **HW ceiling** — and derives every other config from them. Then it profiles the\nE2E pipeline with Nsight Systems and reports per-plugin NVTX timings.\n\n**Model- and pipeline-agnostic.** The skill assumes only that the inference element is\n`nvinfer` or `nvinferserver` (so model dims, precision, and batch knobs are settable through\nthe standard config). It works for detection (with or without tracker), classification,\nsegmentation, VLM, and embedding pipelines. Source can be file, RTSP, USB camera, or any\nmix. The skill reads the user's actual config to discover model dims \u002F target FPS \u002F source\nproperties — it does NOT assume any particular model, codec, or resolution.\n\n> **Constraint.** Terminal only. Use `nsys profile` to capture and `nsys stats` to extract.\n> Do not depend on Nsight Lens or any GUI.\n\n## When to trigger\n\nActivate this skill **at pipeline creation time** when the user's ask carries efficiency\nintent. Concrete triggers:\n\n- \"build an **efficient** \u002F **fast** \u002F **performant** \u002F **optimized** pipeline\"\n- \"give me a pipeline that runs well on this GPU\"\n- \"benchmark \u002F profile \u002F measure \u002F tune \u002F optimize this pipeline\"\n- \"I want to run N streams at M FPS\"\n- \"how many streams can this GPU handle\"\n- user explicitly asks for `nsys` or Nsight\n\nFor plain \"build a pipeline\" \u002F \"display this video\" \u002F \"save this stream\" with no perf intent,\nhand off to the `deepstream-generate-pipeline` skill instead.\n\n## The 6-stage flow\n\nRun the stages in order. Stage 0 fires *before* the pipeline is generated, so the user\nstarts from a perf-tuned skeleton. Stages 1–5 measure and verify.\n\n## Stage 0 — Preset-apply (at pipeline-creation time)\n\nTrigger: any time the coding agent is about to generate a new DS pipeline AND the user's\nprompt carries efficiency intent (see \"When to trigger\" above).\n\nAction: pre-apply these defaults *without prompting*. The user does not need to know any of\nthem; they just get a pipeline that's already in the right shape.\n\n| Knob | Default value | Skip when |\n|---|---|---|\n| `nvinfer.network-mode` | `1` (INT8) if a calibration file is present at `int8-calib-file=\u003Cpath>`, else `2` (FP16). Never FP32. | Model has no INT8 calibration AND the user explicitly says \"FP32\". |\n| `nvinfer.model-engine-file` | Pre-built `.engine` path | Always set. Force a one-shot prebuild before measurement. |\n| `nvinfer.infer-dims` | `3;\u003CH>;\u003CW>` matching the model's native input | Always set, even for static-shape ONNX (harmless). |\n| `nvstreammux.batch-size` | `min(N_streams, 16)` until microbench refines it | — |\n| `nvstreammux.width \u002F height` | model's native input dims (read from the nvinfer config's `infer-dims=3;H;W`) | User explicitly asks for native source resolution at the muxer. |\n| `nvstreammux.batched-push-timeout` | `1e6 \u002F source_fps` µs (33333 for 30 fps) | — |\n| `nvstreammux.nvbuf-memory-type` | `0` (NVMM) | — |\n| Decoder `num-extra-surfaces` | `min(batch_size, 5)` | — |\n| Decoder `cudadec-memtype` | `0` (NVMM) | — |\n| Sink | `fakesink sync=False` for the benchmark variant | User asked for on-screen display or on-disk recording (then keep OSD\u002Ftiler\u002Fencoder\u002Fsink and produce TWO variants). |\n| OSD + tiler | omit | User asked for visible output. |\n| Tracker `ll-config-file` | `config_tracker_NvDCF_max_perf.yml` (perf-tuned NvDCF preset shipped with DS 9.0) | Tracker not present. |\n| Tracker `tracker-width \u002F height` | 480 \u002F 288 | — |\n| Tracker `enable-batch-process` (in linked YAML) | `1` | — |\n| Queue between source and pgie | `max-size-buffers = batch_size × 4` | No queue requested (rare). |\n| Kafka\u002Fmessage queue | `max-size-buffers=2, leaky=2` | No Kafka. |\n| Decode-side `PerfMonitor` | attach (in addition to pgie-side) | Pipeline is `nvurisrcbin → pgie` direct without intermediate queue. |\n\n**Why Stage 0 exists:** without it, every newly generated pipeline starts from\ndisplay-first defaults and Stages 1–5 spend cycles fixing avoidable issues. Stage 0 is the\n\"don't write a bad pipeline in the first place\" gate.\n\nThe student \u002F API user never sees these knobs. The skill's response back to the user is in\nplain English (FPS, stream count, observed bottleneck), not knob names.\n\n## The verification flow (Stages 1–5)\n\nRun the stages in order. Do not skip a stage — later stages depend on earlier ones' outputs.\n\n### Stage 1 — NVTX coverage check\n\nDeepStream plugins emit NVTX ranges natively; custom plugins and plain GStreamer-core\nelements (`queue`, `tee`, `h264parse`, etc.) do not. Before profiling, list the elements the\npipeline uses and classify each.\n\n- Read the pipeline definition (gst-launch string or `pipeline.py`).\n- For each element, look it up in [references\u002Fnvtx-coverage.md](references\u002Fnvtx-coverage.md).\n- Classify **COVERED** (emits NVTX in this DS \u002F image \u002F nsys combo) or **UNINSTRUMENTED**.\n- **MVP rule:** the skill *prefers* per-plugin NVTX as confirmation but does not require it.\n  Decode-bound diagnosis works from microbench shape + `nvidia-smi dmon`; compute-bound from\n  CUDA kernel mix; memcpy from `cuda_gpu_mem_time_sum`. NVTX is a bonus.\n- For UNINSTRUMENTED elements, the skill reports \"not directly measurable in this build\" and\n  still applies the closed-form R1–R6 knobs (which are derived from inputs, not from\n  per-plugin profile data).\n- Auto-injecting NVTX for uninstrumented elements is **out of scope** for this version —\n  flag it as follow-up in the final report.\n\nOutput of Stage 1: a short coverage table, e.g.\n\n```text\nnvurisrcbin       COVERED\nnvstreammux       COVERED\nnvinfer           COVERED\nnvtracker         COVERED\nqueue_src         UNINSTRUMENTED — not re-tuned\nfakesink          UNINSTRUMENTED — not re-tuned\n```\n\n### Stage 2 — HW discovery\n\nRun `nvidia-smi` and derive theoretical ceilings for the host GPU. Minimum queries:\n\n```bash\n# Identity + memory + compute\nnvidia-smi --query-gpu=name,compute_cap,memory.total,memory.free,\\\nclocks.max.sm,clocks.max.memory,utilization.gpu \\\n--format=csv,noheader,nounits\n\n# NVDEC \u002F NVENC utilization (per-engine)\nnvidia-smi --query-gpu=utilization.decoder,utilization.encoder \\\n--format=csv,noheader,nounits\n\n# PCIe link width\u002Fgen (for H2D memcpy ceiling)\nnvidia-smi --query-gpu=pcie.link.gen.current,pcie.link.width.current \\\n--format=csv,noheader,nounits\n```\n\nDerive from those numbers:\n\n- **Decode ceiling (fps)**: NVDEC_count × per-unit H265\u002FH264 fps for the source resolution\n  (table in [references\u002Fhw-ceiling-formulas.md](references\u002Fhw-ceiling-formulas.md)).\n- **Compute ceiling (TOPS)**: SM count × clock × ops-per-clock at the target precision. Gives\n  an upper bound — real models hit 30–60% of this.\n- **Memory-bandwidth ceiling (GB\u002Fs)**: memory clock × bus width. Model weight reads +\n  activations should fit well under this.\n- **Memcpy ceiling (GB\u002Fs)**: PCIe gen × width × 0.8 practical. Only relevant if NVMM is\n  broken and H2D\u002FD2H transfers appear in Stage 5.\n\nStore the derived ceilings — they drive the Stage 5 \"actual vs. theoretical\" section.\n\nFull formulas and the per-codec NVDEC throughput table:\n[references\u002Fhw-ceiling-formulas.md](references\u002Fhw-ceiling-formulas.md).\n\n### Stage 3 — Inference-only micro-benchmark\n\nRun **only the inference stage** (source → streammux → nvinfer → fakesink), sweeping\n`batch-size` to find the plateau. This isolates the model's true peak FPS from everything\nelse, and answers \"how many streams fit into a single batch without FPS dropping?\".\n\nSweep: `batch-size ∈ {1, 2, 4, 8, 16, 32}` (cap at `N_streams` and at GPU memory).\n\nFor each batch size:\n\n- Set `nvstreammux.batch-size = nvinfer.batch-size = B`.\n- Set `nvstreammux.width\u002Fheight` = the model's native `infer-dims` (read from the nvinfer config).\n- `fakesink sync=False` as the only branch.\n- Run 30 s; measure FPS from `measure_fps_probe` (console) or DS `PerfMonitor`.\n- Record `(B, fps)`.\n\n**Plateau batch** = the smallest B where increasing to 2×B yields \u003C 5% FPS gain. That is the\ntarget batch for the full pipeline.\n\nIf the user's N_streams ≤ plateau batch, set final batch = N_streams. Otherwise set final\nbatch = plateau batch and note that the pipeline will process streams in multiple batches\nper tick.\n\n### Stage 4 — Derive configs\n\nFrom `(plateau_batch, HW_ceilings, N_streams, source_res, source_fps)`, set every tunable\nknob at once. Do not tune one knob at a time — the derivation rules are closed-form.\n\nKnobs to set, in order:\n\n1. **Streammux**: `batch-size = final_batch`, `width\u002Fheight = min(source_res, infer_dims)`,\n   `batched-push-timeout = 1e6 \u002F source_fps` µs, `nvbuf-memory-type = 0`.\n2. **Inference**: `batch-size = final_batch`, `network-mode = 1 (INT8) if calib file exists\n   else 2 (FP16)`, `interval = 0`, `infer-dims = model's native dims`, `model-engine-file =\n   pre-built .engine path`.\n3. **Decoder** (on `nvurisrcbin` \u002F `nvmultiurisrcbin` \u002F `nvv4l2decoder`):\n   `num-extra-surfaces = min(final_batch, 5)`, `cudadec-memtype = 0`, `nvbuf-memory-type = 0`.\n4. **Tracker** (if present): `enable-batch-process = 1`, tracker res 480×288, point\n   `ll-config-file` at `config_tracker_NvDCF_max_perf.yml`.\n5. **Queues** (if present between decoder and streammux, or streammux and nvinfer):\n   `max-size-buffers = final_batch × 2`. Kafka\u002Fmessage branches: `leaky=2,\n   max-size-buffers=2`.\n\nFull derivation table with each formula and a one-line \"why\":\n[references\u002Fconfig-derivation-rules.md](references\u002Fconfig-derivation-rules.md).\n\nWrite the derived values into the user's config files (`pgie_config.yml`,\n`tracker_config.yml`, `pipeline.py` source properties, any `deepstream-app` `.txt`). Always\n`Read` before `Edit`. Keep edits surgical — do not reformat unrelated lines.\n\n### Stage 5 — E2E profile + report\n\nRun the E2E pipeline under `nsys profile` and extract per-plugin timings via `nsys stats`.\n\nCapture:\n\n```bash\nTS=$(date +%Y%m%d_%H%M%S)\nOUT=\u002Ftmp\u002Fds_profile_${TS}\nnsys profile \\\n  --trace=cuda,nvtx,osrt \\\n  --gpu-metrics-devices=all \\\n  --cuda-memory-usage=true \\\n  --force-overwrite=true \\\n  --duration=30 \\\n  --output=${OUT} \\\n  \u003Cyour-pipeline-launch-command>\n```\n\nExtract:\n\n```bash\n# Per-kernel GPU time (top 10)\nnsys stats --report cuda_gpu_kern_sum --format csv ${OUT}.nsys-rep | head -20\n\n# Per-NVTX-range time (top 10) — this is the DS per-plugin breakdown\nnsys stats --report nvtx_sum --format csv ${OUT}.nsys-rep | head -20\n\n# Memcpy totals\nnsys stats --report cuda_gpu_mem_time_sum --format csv ${OUT}.nsys-rep\n\n# GPU metrics (SM activity, DRAM throughput) — requires --gpu-metrics-devices\nnsys stats --report gpu_metric_gpu_util_sum --format csv ${OUT}.nsys-rep\n```\n\nFull command reference: [references\u002Fnsys-cli-recipes.md](references\u002Fnsys-cli-recipes.md).\n\nReport (Markdown, to stdout — no external UI):\n\n```markdown\n## Profile summary\n\n**Hardware**: \u003Cname>, \u003Cmem_total> GB, SM x\u003Csm>, NVDEC x\u003Cnvdec>, PCIe Gen\u003Cg> x\u003Cw>\n**Ceilings**: decode \u003CX> fps, compute ~\u003CY> TOPS @ INT8, memory \u003CZ> GB\u002Fs\n\n**Inference plateau**: batch=\u003CB>, peak=\u003CF> fps per batch → \u003CF × B> fps aggregate\n\n**E2E measured**: \u003Cactual> fps  (=\u003Cpct>% of inference plateau)\n\n### Per-plugin time (from NVTX) — only for plugins emitting NVTX in this build\n\n| Plugin          | Share of wall time | GPU \u002F CPU | Notes |\n|-----------------|--------------------|-----------|-------|\n| nvinfer         | \u003Cpct>%             | GPU       | (always emitted; if absent, NVTX injection is broken) |\n| nvdsosd         | \u003Cpct>%             | GPU       | (when in pipeline) |\n| ...             | ...                | ...       | (other plugins as the verification probe shows) |\n\n(Numbers above are illustrative — fill in from `nsys stats --report nvtx_sum`. Plugins\nthat don't emit NVTX in your DS \u002F image combo simply don't appear; that's not a bug, it's\nthe limit of what NVTX captures here. See `references\u002Fnvtx-coverage.md`.)\n\n### Applied configs (sample shape; values come from R1–R6 + Stage 3 measurements)\n\n- `nvstreammux.batch-size = \u003Cplateau_batch>`\n- `nvinfer.network-mode = 1 (INT8)` if calibration available, else `2 (FP16)`\n- decoder `num-extra-surfaces = min(plateau_batch, 5)`\n- queue between source and pgie, `max-size-buffers = plateau_batch × 4`\n- ... (full list per the user's pipeline shape)\n\n### Uninstrumented (skipped re-tune)\n\nList the elements that didn't emit NVTX in this build (typically the closed-source binary\nplugins — see `references\u002Fnvtx-coverage.md`) plus plain GStreamer-core helpers. Report\nthem so the user knows what wasn't directly measurable.\n```\n\nKeep the summary terse. Raw `nsys stats` CSV goes into the temp file, not the response.\n\n## Reference documents\n\n| Document | Use when |\n|----------|----------|\n| [references\u002Fnvtx-coverage.md](references\u002Fnvtx-coverage.md) | Stage 1 — classifying each pipeline element as COVERED or UNINSTRUMENTED. |\n| [references\u002Fhw-ceiling-formulas.md](references\u002Fhw-ceiling-formulas.md) | Stage 2 — turning `nvidia-smi` output into decode \u002F compute \u002F memory ceilings. |\n| [references\u002Fconfig-derivation-rules.md](references\u002Fconfig-derivation-rules.md) | Stage 4 — per-knob formula keyed to `(plateau_batch, HW, N_streams, source_res, source_fps)`. |\n| [references\u002Fnsys-cli-recipes.md](references\u002Fnsys-cli-recipes.md) | Stages 3 & 5 — exact `nsys profile` \u002F `nsys stats` invocations. |\n\n## Non-goals (this version)\n\n- **No Nsight Lens \u002F no GUI.** Terminal only.\n- **No NVTX auto-injection** for uninstrumented plugins. MVP skips their knobs. Future work.\n- **No iterative tune-measure-tune loop.** Stage 4 derives configs once from closed-form\n  rules; Stage 5 measures and reports. If the user wants to keep tuning, they can re-invoke\n  the skill with updated inputs.\n\n## Related skills\n\n- `deepstream-generate-pipeline` — upstream pipeline generation. This skill\n  assumes a pipeline already exists or is about to be generated.\n- `deepstream-byovm` — HF → TensorRT engine building. Run first if the user\n  brought a new model; come here after.\n\n## Notes\n\n- Lives in `skills\u002Fdeepstream-profile-pipeline\u002F` alongside the other DS skills, per\n  the repo convention in `CLAUDE.md`.\n- For ground-truth on **any** plugin's properties (types, defaults, ranges) and pad caps,\n  query the loaded binary inside the DS container:\n  ```bash\n  gst-inspect-1.0 nvinfer\n  gst-inspect-1.0 nvstreammux\n  gst-inspect-1.0 nvurisrcbin   # works on closed-source binary plugins too\n  gst-inspect-1.0 | grep ^nv    # list every NVIDIA-specific element this build ships\n  ```\n  Plugin naming convention: any element prefixed `nv*` is NVIDIA DeepStream-specific\n  (NVMM-capable, may emit NVTX); everything else is upstream GStreamer-core (no NVMM,\n  never emits DS NVTX). Use this prefix as the first-pass classifier when triaging an\n  unfamiliar pipeline.\n- The open-source subset of plugin code lives under\n  `\u002Fopt\u002Fnvidia\u002Fdeepstream\u002Fdeepstream\u002Fsources\u002Fgst-plugins\u002F` if you need to read the\n  implementation (only some plugins are open — closed ones must be inspected via\n  `gst-inspect-1.0` and behaviour observed at runtime).\n\n\u003C!-- Signing refresh marker. -->\n",{"data":35,"body":55},{"name":4,"description":6,"metadata":36,"owner":37,"service":39,"version":51,"reviewed":52,"license":26,"compatibility":53,"data_classification":54},{"author":37,"tags":38,"languages":45,"domain":49,"team":50},"NVIDIA CORPORATION",[39,40,41,42,43,44],"deepstream","profiling","nsight-systems","nvtx","nvidia-smi","benchmarking",[46,47,48],"bash","python","yaml","video-analytics","deepstream-sdk","0.1.0","2026-04-24","DeepStream SDK 9.0 on Ubuntu 22.04 or 24.04, run from the `nvcr.io\u002Fnvidia\u002Fdeepstream:9.0-triton-multiarch` container (the dev image; the slimmer `samples-multiarch` variant strips the nsys NVTX injector and produces empty per-plugin NVTX traces — do not use it for profiling). Requires `nsys` (Nsight Systems 2024+) and `nvidia-smi` on PATH. No GUI dependency — the skill runs fully headless and uses only `nsys profile` + `nsys stats`.\n","internal",{"type":56,"children":57},"root",[58,67,88,115,145,152,164,233,246,252,265,271,276,288,785,795,800,806,811,818,846,943,948,960,966,978,1123,1128,1177,1182,1192,1198,1217,1238,1243,1319,1329,1334,1340,1353,1358,1553,1564,1622,1628,1646,1651,1843,1848,2118,2129,2134,3033,3045,3051,3160,3166,3199,3205,3229,3235,3375],{"type":59,"tag":60,"props":61,"children":63},"element","h1",{"id":62},"deepstream-profiling-skill",[64],{"type":65,"value":66},"text","DeepStream Profiling Skill",{"type":59,"tag":68,"props":69,"children":70},"p",{},[71,73,79,81,86],{"type":65,"value":72},"Profile-driven pipeline creation. When the user indicates they want an efficient DeepStream\npipeline, this skill replaces guesswork with two measured numbers — ",{"type":59,"tag":74,"props":75,"children":76},"strong",{},[77],{"type":65,"value":78},"inference plateau\nbatch",{"type":65,"value":80}," and ",{"type":59,"tag":74,"props":82,"children":83},{},[84],{"type":65,"value":85},"HW ceiling",{"type":65,"value":87}," — and derives every other config from them. Then it profiles the\nE2E pipeline with Nsight Systems and reports per-plugin NVTX timings.",{"type":59,"tag":68,"props":89,"children":90},{},[91,96,98,105,107,113],{"type":59,"tag":74,"props":92,"children":93},{},[94],{"type":65,"value":95},"Model- and pipeline-agnostic.",{"type":65,"value":97}," The skill assumes only that the inference element is\n",{"type":59,"tag":99,"props":100,"children":102},"code",{"className":101},[],[103],{"type":65,"value":104},"nvinfer",{"type":65,"value":106}," or ",{"type":59,"tag":99,"props":108,"children":110},{"className":109},[],[111],{"type":65,"value":112},"nvinferserver",{"type":65,"value":114}," (so model dims, precision, and batch knobs are settable through\nthe standard config). It works for detection (with or without tracker), classification,\nsegmentation, VLM, and embedding pipelines. Source can be file, RTSP, USB camera, or any\nmix. The skill reads the user's actual config to discover model dims \u002F target FPS \u002F source\nproperties — it does NOT assume any particular model, codec, or resolution.",{"type":59,"tag":116,"props":117,"children":118},"blockquote",{},[119],{"type":59,"tag":68,"props":120,"children":121},{},[122,127,129,135,137,143],{"type":59,"tag":74,"props":123,"children":124},{},[125],{"type":65,"value":126},"Constraint.",{"type":65,"value":128}," Terminal only. Use ",{"type":59,"tag":99,"props":130,"children":132},{"className":131},[],[133],{"type":65,"value":134},"nsys profile",{"type":65,"value":136}," to capture and ",{"type":59,"tag":99,"props":138,"children":140},{"className":139},[],[141],{"type":65,"value":142},"nsys stats",{"type":65,"value":144}," to extract.\nDo not depend on Nsight Lens or any GUI.",{"type":59,"tag":146,"props":147,"children":149},"h2",{"id":148},"when-to-trigger",[150],{"type":65,"value":151},"When to trigger",{"type":59,"tag":68,"props":153,"children":154},{},[155,157,162],{"type":65,"value":156},"Activate this skill ",{"type":59,"tag":74,"props":158,"children":159},{},[160],{"type":65,"value":161},"at pipeline creation time",{"type":65,"value":163}," when the user's ask carries efficiency\nintent. Concrete triggers:",{"type":59,"tag":165,"props":166,"children":167},"ul",{},[168,200,205,210,215,220],{"type":59,"tag":169,"props":170,"children":171},"li",{},[172,174,179,181,186,187,192,193,198],{"type":65,"value":173},"\"build an ",{"type":59,"tag":74,"props":175,"children":176},{},[177],{"type":65,"value":178},"efficient",{"type":65,"value":180}," \u002F ",{"type":59,"tag":74,"props":182,"children":183},{},[184],{"type":65,"value":185},"fast",{"type":65,"value":180},{"type":59,"tag":74,"props":188,"children":189},{},[190],{"type":65,"value":191},"performant",{"type":65,"value":180},{"type":59,"tag":74,"props":194,"children":195},{},[196],{"type":65,"value":197},"optimized",{"type":65,"value":199}," pipeline\"",{"type":59,"tag":169,"props":201,"children":202},{},[203],{"type":65,"value":204},"\"give me a pipeline that runs well on this GPU\"",{"type":59,"tag":169,"props":206,"children":207},{},[208],{"type":65,"value":209},"\"benchmark \u002F profile \u002F measure \u002F tune \u002F optimize this pipeline\"",{"type":59,"tag":169,"props":211,"children":212},{},[213],{"type":65,"value":214},"\"I want to run N streams at M FPS\"",{"type":59,"tag":169,"props":216,"children":217},{},[218],{"type":65,"value":219},"\"how many streams can this GPU handle\"",{"type":59,"tag":169,"props":221,"children":222},{},[223,225,231],{"type":65,"value":224},"user explicitly asks for ",{"type":59,"tag":99,"props":226,"children":228},{"className":227},[],[229],{"type":65,"value":230},"nsys",{"type":65,"value":232}," or Nsight",{"type":59,"tag":68,"props":234,"children":235},{},[236,238,244],{"type":65,"value":237},"For plain \"build a pipeline\" \u002F \"display this video\" \u002F \"save this stream\" with no perf intent,\nhand off to the ",{"type":59,"tag":99,"props":239,"children":241},{"className":240},[],[242],{"type":65,"value":243},"deepstream-generate-pipeline",{"type":65,"value":245}," skill instead.",{"type":59,"tag":146,"props":247,"children":249},{"id":248},"the-6-stage-flow",[250],{"type":65,"value":251},"The 6-stage flow",{"type":59,"tag":68,"props":253,"children":254},{},[255,257,263],{"type":65,"value":256},"Run the stages in order. Stage 0 fires ",{"type":59,"tag":258,"props":259,"children":260},"em",{},[261],{"type":65,"value":262},"before",{"type":65,"value":264}," the pipeline is generated, so the user\nstarts from a perf-tuned skeleton. Stages 1–5 measure and verify.",{"type":59,"tag":146,"props":266,"children":268},{"id":267},"stage-0-preset-apply-at-pipeline-creation-time",[269],{"type":65,"value":270},"Stage 0 — Preset-apply (at pipeline-creation time)",{"type":59,"tag":68,"props":272,"children":273},{},[274],{"type":65,"value":275},"Trigger: any time the coding agent is about to generate a new DS pipeline AND the user's\nprompt carries efficiency intent (see \"When to trigger\" above).",{"type":59,"tag":68,"props":277,"children":278},{},[279,281,286],{"type":65,"value":280},"Action: pre-apply these defaults ",{"type":59,"tag":258,"props":282,"children":283},{},[284],{"type":65,"value":285},"without prompting",{"type":65,"value":287},". The user does not need to know any of\nthem; they just get a pipeline that's already in the right shape.",{"type":59,"tag":289,"props":290,"children":291},"table",{},[292,316],{"type":59,"tag":293,"props":294,"children":295},"thead",{},[296],{"type":59,"tag":297,"props":298,"children":299},"tr",{},[300,306,311],{"type":59,"tag":301,"props":302,"children":303},"th",{},[304],{"type":65,"value":305},"Knob",{"type":59,"tag":301,"props":307,"children":308},{},[309],{"type":65,"value":310},"Default value",{"type":59,"tag":301,"props":312,"children":313},{},[314],{"type":65,"value":315},"Skip when",{"type":59,"tag":317,"props":318,"children":319},"tbody",{},[320,365,395,423,451,481,508,535,562,588,612,630,660,682,709,731,753],{"type":59,"tag":297,"props":321,"children":322},{},[323,333,360],{"type":59,"tag":324,"props":325,"children":326},"td",{},[327],{"type":59,"tag":99,"props":328,"children":330},{"className":329},[],[331],{"type":65,"value":332},"nvinfer.network-mode",{"type":59,"tag":324,"props":334,"children":335},{},[336,342,344,350,352,358],{"type":59,"tag":99,"props":337,"children":339},{"className":338},[],[340],{"type":65,"value":341},"1",{"type":65,"value":343}," (INT8) if a calibration file is present at ",{"type":59,"tag":99,"props":345,"children":347},{"className":346},[],[348],{"type":65,"value":349},"int8-calib-file=\u003Cpath>",{"type":65,"value":351},", else ",{"type":59,"tag":99,"props":353,"children":355},{"className":354},[],[356],{"type":65,"value":357},"2",{"type":65,"value":359}," (FP16). Never FP32.",{"type":59,"tag":324,"props":361,"children":362},{},[363],{"type":65,"value":364},"Model has no INT8 calibration AND the user explicitly says \"FP32\".",{"type":59,"tag":297,"props":366,"children":367},{},[368,377,390],{"type":59,"tag":324,"props":369,"children":370},{},[371],{"type":59,"tag":99,"props":372,"children":374},{"className":373},[],[375],{"type":65,"value":376},"nvinfer.model-engine-file",{"type":59,"tag":324,"props":378,"children":379},{},[380,382,388],{"type":65,"value":381},"Pre-built ",{"type":59,"tag":99,"props":383,"children":385},{"className":384},[],[386],{"type":65,"value":387},".engine",{"type":65,"value":389}," path",{"type":59,"tag":324,"props":391,"children":392},{},[393],{"type":65,"value":394},"Always set. Force a one-shot prebuild before measurement.",{"type":59,"tag":297,"props":396,"children":397},{},[398,407,418],{"type":59,"tag":324,"props":399,"children":400},{},[401],{"type":59,"tag":99,"props":402,"children":404},{"className":403},[],[405],{"type":65,"value":406},"nvinfer.infer-dims",{"type":59,"tag":324,"props":408,"children":409},{},[410,416],{"type":59,"tag":99,"props":411,"children":413},{"className":412},[],[414],{"type":65,"value":415},"3;\u003CH>;\u003CW>",{"type":65,"value":417}," matching the model's native input",{"type":59,"tag":324,"props":419,"children":420},{},[421],{"type":65,"value":422},"Always set, even for static-shape ONNX (harmless).",{"type":59,"tag":297,"props":424,"children":425},{},[426,435,446],{"type":59,"tag":324,"props":427,"children":428},{},[429],{"type":59,"tag":99,"props":430,"children":432},{"className":431},[],[433],{"type":65,"value":434},"nvstreammux.batch-size",{"type":59,"tag":324,"props":436,"children":437},{},[438,444],{"type":59,"tag":99,"props":439,"children":441},{"className":440},[],[442],{"type":65,"value":443},"min(N_streams, 16)",{"type":65,"value":445}," until microbench refines it",{"type":59,"tag":324,"props":447,"children":448},{},[449],{"type":65,"value":450},"—",{"type":59,"tag":297,"props":452,"children":453},{},[454,463,476],{"type":59,"tag":324,"props":455,"children":456},{},[457],{"type":59,"tag":99,"props":458,"children":460},{"className":459},[],[461],{"type":65,"value":462},"nvstreammux.width \u002F height",{"type":59,"tag":324,"props":464,"children":465},{},[466,468,474],{"type":65,"value":467},"model's native input dims (read from the nvinfer config's ",{"type":59,"tag":99,"props":469,"children":471},{"className":470},[],[472],{"type":65,"value":473},"infer-dims=3;H;W",{"type":65,"value":475},")",{"type":59,"tag":324,"props":477,"children":478},{},[479],{"type":65,"value":480},"User explicitly asks for native source resolution at the muxer.",{"type":59,"tag":297,"props":482,"children":483},{},[484,493,504],{"type":59,"tag":324,"props":485,"children":486},{},[487],{"type":59,"tag":99,"props":488,"children":490},{"className":489},[],[491],{"type":65,"value":492},"nvstreammux.batched-push-timeout",{"type":59,"tag":324,"props":494,"children":495},{},[496,502],{"type":59,"tag":99,"props":497,"children":499},{"className":498},[],[500],{"type":65,"value":501},"1e6 \u002F source_fps",{"type":65,"value":503}," µs (33333 for 30 fps)",{"type":59,"tag":324,"props":505,"children":506},{},[507],{"type":65,"value":450},{"type":59,"tag":297,"props":509,"children":510},{},[511,520,531],{"type":59,"tag":324,"props":512,"children":513},{},[514],{"type":59,"tag":99,"props":515,"children":517},{"className":516},[],[518],{"type":65,"value":519},"nvstreammux.nvbuf-memory-type",{"type":59,"tag":324,"props":521,"children":522},{},[523,529],{"type":59,"tag":99,"props":524,"children":526},{"className":525},[],[527],{"type":65,"value":528},"0",{"type":65,"value":530}," (NVMM)",{"type":59,"tag":324,"props":532,"children":533},{},[534],{"type":65,"value":450},{"type":59,"tag":297,"props":536,"children":537},{},[538,549,558],{"type":59,"tag":324,"props":539,"children":540},{},[541,543],{"type":65,"value":542},"Decoder ",{"type":59,"tag":99,"props":544,"children":546},{"className":545},[],[547],{"type":65,"value":548},"num-extra-surfaces",{"type":59,"tag":324,"props":550,"children":551},{},[552],{"type":59,"tag":99,"props":553,"children":555},{"className":554},[],[556],{"type":65,"value":557},"min(batch_size, 5)",{"type":59,"tag":324,"props":559,"children":560},{},[561],{"type":65,"value":450},{"type":59,"tag":297,"props":563,"children":564},{},[565,575,584],{"type":59,"tag":324,"props":566,"children":567},{},[568,569],{"type":65,"value":542},{"type":59,"tag":99,"props":570,"children":572},{"className":571},[],[573],{"type":65,"value":574},"cudadec-memtype",{"type":59,"tag":324,"props":576,"children":577},{},[578,583],{"type":59,"tag":99,"props":579,"children":581},{"className":580},[],[582],{"type":65,"value":528},{"type":65,"value":530},{"type":59,"tag":324,"props":585,"children":586},{},[587],{"type":65,"value":450},{"type":59,"tag":297,"props":589,"children":590},{},[591,596,607],{"type":59,"tag":324,"props":592,"children":593},{},[594],{"type":65,"value":595},"Sink",{"type":59,"tag":324,"props":597,"children":598},{},[599,605],{"type":59,"tag":99,"props":600,"children":602},{"className":601},[],[603],{"type":65,"value":604},"fakesink sync=False",{"type":65,"value":606}," for the benchmark variant",{"type":59,"tag":324,"props":608,"children":609},{},[610],{"type":65,"value":611},"User asked for on-screen display or on-disk recording (then keep OSD\u002Ftiler\u002Fencoder\u002Fsink and produce TWO variants).",{"type":59,"tag":297,"props":613,"children":614},{},[615,620,625],{"type":59,"tag":324,"props":616,"children":617},{},[618],{"type":65,"value":619},"OSD + tiler",{"type":59,"tag":324,"props":621,"children":622},{},[623],{"type":65,"value":624},"omit",{"type":59,"tag":324,"props":626,"children":627},{},[628],{"type":65,"value":629},"User asked for visible output.",{"type":59,"tag":297,"props":631,"children":632},{},[633,644,655],{"type":59,"tag":324,"props":634,"children":635},{},[636,638],{"type":65,"value":637},"Tracker ",{"type":59,"tag":99,"props":639,"children":641},{"className":640},[],[642],{"type":65,"value":643},"ll-config-file",{"type":59,"tag":324,"props":645,"children":646},{},[647,653],{"type":59,"tag":99,"props":648,"children":650},{"className":649},[],[651],{"type":65,"value":652},"config_tracker_NvDCF_max_perf.yml",{"type":65,"value":654}," (perf-tuned NvDCF preset shipped with DS 9.0)",{"type":59,"tag":324,"props":656,"children":657},{},[658],{"type":65,"value":659},"Tracker not present.",{"type":59,"tag":297,"props":661,"children":662},{},[663,673,678],{"type":59,"tag":324,"props":664,"children":665},{},[666,667],{"type":65,"value":637},{"type":59,"tag":99,"props":668,"children":670},{"className":669},[],[671],{"type":65,"value":672},"tracker-width \u002F height",{"type":59,"tag":324,"props":674,"children":675},{},[676],{"type":65,"value":677},"480 \u002F 288",{"type":59,"tag":324,"props":679,"children":680},{},[681],{"type":65,"value":450},{"type":59,"tag":297,"props":683,"children":684},{},[685,697,705],{"type":59,"tag":324,"props":686,"children":687},{},[688,689,695],{"type":65,"value":637},{"type":59,"tag":99,"props":690,"children":692},{"className":691},[],[693],{"type":65,"value":694},"enable-batch-process",{"type":65,"value":696}," (in linked YAML)",{"type":59,"tag":324,"props":698,"children":699},{},[700],{"type":59,"tag":99,"props":701,"children":703},{"className":702},[],[704],{"type":65,"value":341},{"type":59,"tag":324,"props":706,"children":707},{},[708],{"type":65,"value":450},{"type":59,"tag":297,"props":710,"children":711},{},[712,717,726],{"type":59,"tag":324,"props":713,"children":714},{},[715],{"type":65,"value":716},"Queue between source and pgie",{"type":59,"tag":324,"props":718,"children":719},{},[720],{"type":59,"tag":99,"props":721,"children":723},{"className":722},[],[724],{"type":65,"value":725},"max-size-buffers = batch_size × 4",{"type":59,"tag":324,"props":727,"children":728},{},[729],{"type":65,"value":730},"No queue requested (rare).",{"type":59,"tag":297,"props":732,"children":733},{},[734,739,748],{"type":59,"tag":324,"props":735,"children":736},{},[737],{"type":65,"value":738},"Kafka\u002Fmessage queue",{"type":59,"tag":324,"props":740,"children":741},{},[742],{"type":59,"tag":99,"props":743,"children":745},{"className":744},[],[746],{"type":65,"value":747},"max-size-buffers=2, leaky=2",{"type":59,"tag":324,"props":749,"children":750},{},[751],{"type":65,"value":752},"No Kafka.",{"type":59,"tag":297,"props":754,"children":755},{},[756,767,772],{"type":59,"tag":324,"props":757,"children":758},{},[759,761],{"type":65,"value":760},"Decode-side ",{"type":59,"tag":99,"props":762,"children":764},{"className":763},[],[765],{"type":65,"value":766},"PerfMonitor",{"type":59,"tag":324,"props":768,"children":769},{},[770],{"type":65,"value":771},"attach (in addition to pgie-side)",{"type":59,"tag":324,"props":773,"children":774},{},[775,777,783],{"type":65,"value":776},"Pipeline is ",{"type":59,"tag":99,"props":778,"children":780},{"className":779},[],[781],{"type":65,"value":782},"nvurisrcbin → pgie",{"type":65,"value":784}," direct without intermediate queue.",{"type":59,"tag":68,"props":786,"children":787},{},[788,793],{"type":59,"tag":74,"props":789,"children":790},{},[791],{"type":65,"value":792},"Why Stage 0 exists:",{"type":65,"value":794}," without it, every newly generated pipeline starts from\ndisplay-first defaults and Stages 1–5 spend cycles fixing avoidable issues. Stage 0 is the\n\"don't write a bad pipeline in the first place\" gate.",{"type":59,"tag":68,"props":796,"children":797},{},[798],{"type":65,"value":799},"The student \u002F API user never sees these knobs. The skill's response back to the user is in\nplain English (FPS, stream count, observed bottleneck), not knob names.",{"type":59,"tag":146,"props":801,"children":803},{"id":802},"the-verification-flow-stages-15",[804],{"type":65,"value":805},"The verification flow (Stages 1–5)",{"type":59,"tag":68,"props":807,"children":808},{},[809],{"type":65,"value":810},"Run the stages in order. Do not skip a stage — later stages depend on earlier ones' outputs.",{"type":59,"tag":812,"props":813,"children":815},"h3",{"id":814},"stage-1-nvtx-coverage-check",[816],{"type":65,"value":817},"Stage 1 — NVTX coverage check",{"type":59,"tag":68,"props":819,"children":820},{},[821,823,829,831,837,838,844],{"type":65,"value":822},"DeepStream plugins emit NVTX ranges natively; custom plugins and plain GStreamer-core\nelements (",{"type":59,"tag":99,"props":824,"children":826},{"className":825},[],[827],{"type":65,"value":828},"queue",{"type":65,"value":830},", ",{"type":59,"tag":99,"props":832,"children":834},{"className":833},[],[835],{"type":65,"value":836},"tee",{"type":65,"value":830},{"type":59,"tag":99,"props":839,"children":841},{"className":840},[],[842],{"type":65,"value":843},"h264parse",{"type":65,"value":845},", etc.) do not. Before profiling, list the elements the\npipeline uses and classify each.",{"type":59,"tag":165,"props":847,"children":848},{},[849,862,875,893,926,931],{"type":59,"tag":169,"props":850,"children":851},{},[852,854,860],{"type":65,"value":853},"Read the pipeline definition (gst-launch string or ",{"type":59,"tag":99,"props":855,"children":857},{"className":856},[],[858],{"type":65,"value":859},"pipeline.py",{"type":65,"value":861},").",{"type":59,"tag":169,"props":863,"children":864},{},[865,867,873],{"type":65,"value":866},"For each element, look it up in ",{"type":59,"tag":868,"props":869,"children":871},"a",{"href":870},"references\u002Fnvtx-coverage.md",[872],{"type":65,"value":870},{"type":65,"value":874},".",{"type":59,"tag":169,"props":876,"children":877},{},[878,880,885,887,892],{"type":65,"value":879},"Classify ",{"type":59,"tag":74,"props":881,"children":882},{},[883],{"type":65,"value":884},"COVERED",{"type":65,"value":886}," (emits NVTX in this DS \u002F image \u002F nsys combo) or ",{"type":59,"tag":74,"props":888,"children":889},{},[890],{"type":65,"value":891},"UNINSTRUMENTED",{"type":65,"value":874},{"type":59,"tag":169,"props":894,"children":895},{},[896,901,903,908,910,916,918,924],{"type":59,"tag":74,"props":897,"children":898},{},[899],{"type":65,"value":900},"MVP rule:",{"type":65,"value":902}," the skill ",{"type":59,"tag":258,"props":904,"children":905},{},[906],{"type":65,"value":907},"prefers",{"type":65,"value":909}," per-plugin NVTX as confirmation but does not require it.\nDecode-bound diagnosis works from microbench shape + ",{"type":59,"tag":99,"props":911,"children":913},{"className":912},[],[914],{"type":65,"value":915},"nvidia-smi dmon",{"type":65,"value":917},"; compute-bound from\nCUDA kernel mix; memcpy from ",{"type":59,"tag":99,"props":919,"children":921},{"className":920},[],[922],{"type":65,"value":923},"cuda_gpu_mem_time_sum",{"type":65,"value":925},". NVTX is a bonus.",{"type":59,"tag":169,"props":927,"children":928},{},[929],{"type":65,"value":930},"For UNINSTRUMENTED elements, the skill reports \"not directly measurable in this build\" and\nstill applies the closed-form R1–R6 knobs (which are derived from inputs, not from\nper-plugin profile data).",{"type":59,"tag":169,"props":932,"children":933},{},[934,936,941],{"type":65,"value":935},"Auto-injecting NVTX for uninstrumented elements is ",{"type":59,"tag":74,"props":937,"children":938},{},[939],{"type":65,"value":940},"out of scope",{"type":65,"value":942}," for this version —\nflag it as follow-up in the final report.",{"type":59,"tag":68,"props":944,"children":945},{},[946],{"type":65,"value":947},"Output of Stage 1: a short coverage table, e.g.",{"type":59,"tag":949,"props":950,"children":955},"pre",{"className":951,"code":953,"language":65,"meta":954},[952],"language-text","nvurisrcbin       COVERED\nnvstreammux       COVERED\nnvinfer           COVERED\nnvtracker         COVERED\nqueue_src         UNINSTRUMENTED — not re-tuned\nfakesink          UNINSTRUMENTED — not re-tuned\n","",[956],{"type":59,"tag":99,"props":957,"children":958},{"__ignoreMap":954},[959],{"type":65,"value":953},{"type":59,"tag":812,"props":961,"children":963},{"id":962},"stage-2-hw-discovery",[964],{"type":65,"value":965},"Stage 2 — HW discovery",{"type":59,"tag":68,"props":967,"children":968},{},[969,971,976],{"type":65,"value":970},"Run ",{"type":59,"tag":99,"props":972,"children":974},{"className":973},[],[975],{"type":65,"value":43},{"type":65,"value":977}," and derive theoretical ceilings for the host GPU. Minimum queries:",{"type":59,"tag":949,"props":979,"children":982},{"className":980,"code":981,"language":46,"meta":954,"style":954},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Identity + memory + compute\nnvidia-smi --query-gpu=name,compute_cap,memory.total,memory.free,\\\nclocks.max.sm,clocks.max.memory,utilization.gpu \\\n--format=csv,noheader,nounits\n\n# NVDEC \u002F NVENC utilization (per-engine)\nnvidia-smi --query-gpu=utilization.decoder,utilization.encoder \\\n--format=csv,noheader,nounits\n\n# PCIe link width\u002Fgen (for H2D memcpy ceiling)\nnvidia-smi --query-gpu=pcie.link.gen.current,pcie.link.width.current \\\n--format=csv,noheader,nounits\n",[983],{"type":59,"tag":99,"props":984,"children":985},{"__ignoreMap":954},[986,998,1013,1028,1037,1047,1056,1073,1081,1089,1098,1115],{"type":59,"tag":987,"props":988,"children":991},"span",{"class":989,"line":990},"line",1,[992],{"type":59,"tag":987,"props":993,"children":995},{"style":994},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[996],{"type":65,"value":997},"# Identity + memory + compute\n",{"type":59,"tag":987,"props":999,"children":1001},{"class":989,"line":1000},2,[1002,1007],{"type":59,"tag":987,"props":1003,"children":1005},{"style":1004},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1006],{"type":65,"value":43},{"type":59,"tag":987,"props":1008,"children":1010},{"style":1009},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1011],{"type":65,"value":1012}," --query-gpu=name,compute_cap,memory.total,memory.free,\\\n",{"type":59,"tag":987,"props":1014,"children":1016},{"class":989,"line":1015},3,[1017,1022],{"type":59,"tag":987,"props":1018,"children":1019},{"style":1009},[1020],{"type":65,"value":1021},"clocks.max.sm,clocks.max.memory,utilization.gpu",{"type":59,"tag":987,"props":1023,"children":1025},{"style":1024},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1026],{"type":65,"value":1027}," \\\n",{"type":59,"tag":987,"props":1029,"children":1031},{"class":989,"line":1030},4,[1032],{"type":59,"tag":987,"props":1033,"children":1034},{"style":1024},[1035],{"type":65,"value":1036},"--format=csv,noheader,nounits\n",{"type":59,"tag":987,"props":1038,"children":1040},{"class":989,"line":1039},5,[1041],{"type":59,"tag":987,"props":1042,"children":1044},{"emptyLinePlaceholder":1043},true,[1045],{"type":65,"value":1046},"\n",{"type":59,"tag":987,"props":1048,"children":1050},{"class":989,"line":1049},6,[1051],{"type":59,"tag":987,"props":1052,"children":1053},{"style":994},[1054],{"type":65,"value":1055},"# NVDEC \u002F NVENC utilization (per-engine)\n",{"type":59,"tag":987,"props":1057,"children":1059},{"class":989,"line":1058},7,[1060,1064,1069],{"type":59,"tag":987,"props":1061,"children":1062},{"style":1004},[1063],{"type":65,"value":43},{"type":59,"tag":987,"props":1065,"children":1066},{"style":1009},[1067],{"type":65,"value":1068}," --query-gpu=utilization.decoder,utilization.encoder",{"type":59,"tag":987,"props":1070,"children":1071},{"style":1024},[1072],{"type":65,"value":1027},{"type":59,"tag":987,"props":1074,"children":1076},{"class":989,"line":1075},8,[1077],{"type":59,"tag":987,"props":1078,"children":1079},{"style":1024},[1080],{"type":65,"value":1036},{"type":59,"tag":987,"props":1082,"children":1084},{"class":989,"line":1083},9,[1085],{"type":59,"tag":987,"props":1086,"children":1087},{"emptyLinePlaceholder":1043},[1088],{"type":65,"value":1046},{"type":59,"tag":987,"props":1090,"children":1092},{"class":989,"line":1091},10,[1093],{"type":59,"tag":987,"props":1094,"children":1095},{"style":994},[1096],{"type":65,"value":1097},"# PCIe link width\u002Fgen (for H2D memcpy ceiling)\n",{"type":59,"tag":987,"props":1099,"children":1101},{"class":989,"line":1100},11,[1102,1106,1111],{"type":59,"tag":987,"props":1103,"children":1104},{"style":1004},[1105],{"type":65,"value":43},{"type":59,"tag":987,"props":1107,"children":1108},{"style":1009},[1109],{"type":65,"value":1110}," --query-gpu=pcie.link.gen.current,pcie.link.width.current",{"type":59,"tag":987,"props":1112,"children":1113},{"style":1024},[1114],{"type":65,"value":1027},{"type":59,"tag":987,"props":1116,"children":1118},{"class":989,"line":1117},12,[1119],{"type":59,"tag":987,"props":1120,"children":1121},{"style":1024},[1122],{"type":65,"value":1036},{"type":59,"tag":68,"props":1124,"children":1125},{},[1126],{"type":65,"value":1127},"Derive from those numbers:",{"type":59,"tag":165,"props":1129,"children":1130},{},[1131,1147,1157,1167],{"type":59,"tag":169,"props":1132,"children":1133},{},[1134,1139,1141,1146],{"type":59,"tag":74,"props":1135,"children":1136},{},[1137],{"type":65,"value":1138},"Decode ceiling (fps)",{"type":65,"value":1140},": NVDEC_count × per-unit H265\u002FH264 fps for the source resolution\n(table in ",{"type":59,"tag":868,"props":1142,"children":1144},{"href":1143},"references\u002Fhw-ceiling-formulas.md",[1145],{"type":65,"value":1143},{"type":65,"value":861},{"type":59,"tag":169,"props":1148,"children":1149},{},[1150,1155],{"type":59,"tag":74,"props":1151,"children":1152},{},[1153],{"type":65,"value":1154},"Compute ceiling (TOPS)",{"type":65,"value":1156},": SM count × clock × ops-per-clock at the target precision. Gives\nan upper bound — real models hit 30–60% of this.",{"type":59,"tag":169,"props":1158,"children":1159},{},[1160,1165],{"type":59,"tag":74,"props":1161,"children":1162},{},[1163],{"type":65,"value":1164},"Memory-bandwidth ceiling (GB\u002Fs)",{"type":65,"value":1166},": memory clock × bus width. Model weight reads +\nactivations should fit well under this.",{"type":59,"tag":169,"props":1168,"children":1169},{},[1170,1175],{"type":59,"tag":74,"props":1171,"children":1172},{},[1173],{"type":65,"value":1174},"Memcpy ceiling (GB\u002Fs)",{"type":65,"value":1176},": PCIe gen × width × 0.8 practical. Only relevant if NVMM is\nbroken and H2D\u002FD2H transfers appear in Stage 5.",{"type":59,"tag":68,"props":1178,"children":1179},{},[1180],{"type":65,"value":1181},"Store the derived ceilings — they drive the Stage 5 \"actual vs. theoretical\" section.",{"type":59,"tag":68,"props":1183,"children":1184},{},[1185,1187,1191],{"type":65,"value":1186},"Full formulas and the per-codec NVDEC throughput table:\n",{"type":59,"tag":868,"props":1188,"children":1189},{"href":1143},[1190],{"type":65,"value":1143},{"type":65,"value":874},{"type":59,"tag":812,"props":1193,"children":1195},{"id":1194},"stage-3-inference-only-micro-benchmark",[1196],{"type":65,"value":1197},"Stage 3 — Inference-only micro-benchmark",{"type":59,"tag":68,"props":1199,"children":1200},{},[1201,1202,1207,1209,1215],{"type":65,"value":970},{"type":59,"tag":74,"props":1203,"children":1204},{},[1205],{"type":65,"value":1206},"only the inference stage",{"type":65,"value":1208}," (source → streammux → nvinfer → fakesink), sweeping\n",{"type":59,"tag":99,"props":1210,"children":1212},{"className":1211},[],[1213],{"type":65,"value":1214},"batch-size",{"type":65,"value":1216}," to find the plateau. This isolates the model's true peak FPS from everything\nelse, and answers \"how many streams fit into a single batch without FPS dropping?\".",{"type":59,"tag":68,"props":1218,"children":1219},{},[1220,1222,1228,1230,1236],{"type":65,"value":1221},"Sweep: ",{"type":59,"tag":99,"props":1223,"children":1225},{"className":1224},[],[1226],{"type":65,"value":1227},"batch-size ∈ {1, 2, 4, 8, 16, 32}",{"type":65,"value":1229}," (cap at ",{"type":59,"tag":99,"props":1231,"children":1233},{"className":1232},[],[1234],{"type":65,"value":1235},"N_streams",{"type":65,"value":1237}," and at GPU memory).",{"type":59,"tag":68,"props":1239,"children":1240},{},[1241],{"type":65,"value":1242},"For each batch size:",{"type":59,"tag":165,"props":1244,"children":1245},{},[1246,1258,1278,1288,1307],{"type":59,"tag":169,"props":1247,"children":1248},{},[1249,1251,1257],{"type":65,"value":1250},"Set ",{"type":59,"tag":99,"props":1252,"children":1254},{"className":1253},[],[1255],{"type":65,"value":1256},"nvstreammux.batch-size = nvinfer.batch-size = B",{"type":65,"value":874},{"type":59,"tag":169,"props":1259,"children":1260},{},[1261,1262,1268,1270,1276],{"type":65,"value":1250},{"type":59,"tag":99,"props":1263,"children":1265},{"className":1264},[],[1266],{"type":65,"value":1267},"nvstreammux.width\u002Fheight",{"type":65,"value":1269}," = the model's native ",{"type":59,"tag":99,"props":1271,"children":1273},{"className":1272},[],[1274],{"type":65,"value":1275},"infer-dims",{"type":65,"value":1277}," (read from the nvinfer config).",{"type":59,"tag":169,"props":1279,"children":1280},{},[1281,1286],{"type":59,"tag":99,"props":1282,"children":1284},{"className":1283},[],[1285],{"type":65,"value":604},{"type":65,"value":1287}," as the only branch.",{"type":59,"tag":169,"props":1289,"children":1290},{},[1291,1293,1299,1301,1306],{"type":65,"value":1292},"Run 30 s; measure FPS from ",{"type":59,"tag":99,"props":1294,"children":1296},{"className":1295},[],[1297],{"type":65,"value":1298},"measure_fps_probe",{"type":65,"value":1300}," (console) or DS ",{"type":59,"tag":99,"props":1302,"children":1304},{"className":1303},[],[1305],{"type":65,"value":766},{"type":65,"value":874},{"type":59,"tag":169,"props":1308,"children":1309},{},[1310,1312,1318],{"type":65,"value":1311},"Record ",{"type":59,"tag":99,"props":1313,"children":1315},{"className":1314},[],[1316],{"type":65,"value":1317},"(B, fps)",{"type":65,"value":874},{"type":59,"tag":68,"props":1320,"children":1321},{},[1322,1327],{"type":59,"tag":74,"props":1323,"children":1324},{},[1325],{"type":65,"value":1326},"Plateau batch",{"type":65,"value":1328}," = the smallest B where increasing to 2×B yields \u003C 5% FPS gain. That is the\ntarget batch for the full pipeline.",{"type":59,"tag":68,"props":1330,"children":1331},{},[1332],{"type":65,"value":1333},"If the user's N_streams ≤ plateau batch, set final batch = N_streams. Otherwise set final\nbatch = plateau batch and note that the pipeline will process streams in multiple batches\nper tick.",{"type":59,"tag":812,"props":1335,"children":1337},{"id":1336},"stage-4-derive-configs",[1338],{"type":65,"value":1339},"Stage 4 — Derive configs",{"type":59,"tag":68,"props":1341,"children":1342},{},[1343,1345,1351],{"type":65,"value":1344},"From ",{"type":59,"tag":99,"props":1346,"children":1348},{"className":1347},[],[1349],{"type":65,"value":1350},"(plateau_batch, HW_ceilings, N_streams, source_res, source_fps)",{"type":65,"value":1352},", set every tunable\nknob at once. Do not tune one knob at a time — the derivation rules are closed-form.",{"type":59,"tag":68,"props":1354,"children":1355},{},[1356],{"type":65,"value":1357},"Knobs to set, in order:",{"type":59,"tag":1359,"props":1360,"children":1361},"ol",{},[1362,1402,1445,1497,1528],{"type":59,"tag":169,"props":1363,"children":1364},{},[1365,1370,1372,1378,1379,1385,1387,1393,1395,1401],{"type":59,"tag":74,"props":1366,"children":1367},{},[1368],{"type":65,"value":1369},"Streammux",{"type":65,"value":1371},": ",{"type":59,"tag":99,"props":1373,"children":1375},{"className":1374},[],[1376],{"type":65,"value":1377},"batch-size = final_batch",{"type":65,"value":830},{"type":59,"tag":99,"props":1380,"children":1382},{"className":1381},[],[1383],{"type":65,"value":1384},"width\u002Fheight = min(source_res, infer_dims)",{"type":65,"value":1386},",\n",{"type":59,"tag":99,"props":1388,"children":1390},{"className":1389},[],[1391],{"type":65,"value":1392},"batched-push-timeout = 1e6 \u002F source_fps",{"type":65,"value":1394}," µs, ",{"type":59,"tag":99,"props":1396,"children":1398},{"className":1397},[],[1399],{"type":65,"value":1400},"nvbuf-memory-type = 0",{"type":65,"value":874},{"type":59,"tag":169,"props":1403,"children":1404},{},[1405,1410,1411,1416,1417,1423,1424,1430,1431,1437,1438,1444],{"type":59,"tag":74,"props":1406,"children":1407},{},[1408],{"type":65,"value":1409},"Inference",{"type":65,"value":1371},{"type":59,"tag":99,"props":1412,"children":1414},{"className":1413},[],[1415],{"type":65,"value":1377},{"type":65,"value":830},{"type":59,"tag":99,"props":1418,"children":1420},{"className":1419},[],[1421],{"type":65,"value":1422},"network-mode = 1 (INT8) if calib file exists else 2 (FP16)",{"type":65,"value":830},{"type":59,"tag":99,"props":1425,"children":1427},{"className":1426},[],[1428],{"type":65,"value":1429},"interval = 0",{"type":65,"value":830},{"type":59,"tag":99,"props":1432,"children":1434},{"className":1433},[],[1435],{"type":65,"value":1436},"infer-dims = model's native dims",{"type":65,"value":830},{"type":59,"tag":99,"props":1439,"children":1441},{"className":1440},[],[1442],{"type":65,"value":1443},"model-engine-file = pre-built .engine path",{"type":65,"value":874},{"type":59,"tag":169,"props":1446,"children":1447},{},[1448,1453,1455,1461,1462,1468,1469,1475,1477,1483,1484,1490,1491,1496],{"type":59,"tag":74,"props":1449,"children":1450},{},[1451],{"type":65,"value":1452},"Decoder",{"type":65,"value":1454}," (on ",{"type":59,"tag":99,"props":1456,"children":1458},{"className":1457},[],[1459],{"type":65,"value":1460},"nvurisrcbin",{"type":65,"value":180},{"type":59,"tag":99,"props":1463,"children":1465},{"className":1464},[],[1466],{"type":65,"value":1467},"nvmultiurisrcbin",{"type":65,"value":180},{"type":59,"tag":99,"props":1470,"children":1472},{"className":1471},[],[1473],{"type":65,"value":1474},"nvv4l2decoder",{"type":65,"value":1476},"):\n",{"type":59,"tag":99,"props":1478,"children":1480},{"className":1479},[],[1481],{"type":65,"value":1482},"num-extra-surfaces = min(final_batch, 5)",{"type":65,"value":830},{"type":59,"tag":99,"props":1485,"children":1487},{"className":1486},[],[1488],{"type":65,"value":1489},"cudadec-memtype = 0",{"type":65,"value":830},{"type":59,"tag":99,"props":1492,"children":1494},{"className":1493},[],[1495],{"type":65,"value":1400},{"type":65,"value":874},{"type":59,"tag":169,"props":1498,"children":1499},{},[1500,1505,1507,1513,1515,1520,1522,1527],{"type":59,"tag":74,"props":1501,"children":1502},{},[1503],{"type":65,"value":1504},"Tracker",{"type":65,"value":1506}," (if present): ",{"type":59,"tag":99,"props":1508,"children":1510},{"className":1509},[],[1511],{"type":65,"value":1512},"enable-batch-process = 1",{"type":65,"value":1514},", tracker res 480×288, point\n",{"type":59,"tag":99,"props":1516,"children":1518},{"className":1517},[],[1519],{"type":65,"value":643},{"type":65,"value":1521}," at ",{"type":59,"tag":99,"props":1523,"children":1525},{"className":1524},[],[1526],{"type":65,"value":652},{"type":65,"value":874},{"type":59,"tag":169,"props":1529,"children":1530},{},[1531,1536,1538,1544,1546,1552],{"type":59,"tag":74,"props":1532,"children":1533},{},[1534],{"type":65,"value":1535},"Queues",{"type":65,"value":1537}," (if present between decoder and streammux, or streammux and nvinfer):\n",{"type":59,"tag":99,"props":1539,"children":1541},{"className":1540},[],[1542],{"type":65,"value":1543},"max-size-buffers = final_batch × 2",{"type":65,"value":1545},". Kafka\u002Fmessage branches: ",{"type":59,"tag":99,"props":1547,"children":1549},{"className":1548},[],[1550],{"type":65,"value":1551},"leaky=2, max-size-buffers=2",{"type":65,"value":874},{"type":59,"tag":68,"props":1554,"children":1555},{},[1556,1558,1563],{"type":65,"value":1557},"Full derivation table with each formula and a one-line \"why\":\n",{"type":59,"tag":868,"props":1559,"children":1561},{"href":1560},"references\u002Fconfig-derivation-rules.md",[1562],{"type":65,"value":1560},{"type":65,"value":874},{"type":59,"tag":68,"props":1565,"children":1566},{},[1567,1569,1575,1576,1582,1583,1588,1590,1596,1598,1604,1606,1612,1614,1620],{"type":65,"value":1568},"Write the derived values into the user's config files (",{"type":59,"tag":99,"props":1570,"children":1572},{"className":1571},[],[1573],{"type":65,"value":1574},"pgie_config.yml",{"type":65,"value":1386},{"type":59,"tag":99,"props":1577,"children":1579},{"className":1578},[],[1580],{"type":65,"value":1581},"tracker_config.yml",{"type":65,"value":830},{"type":59,"tag":99,"props":1584,"children":1586},{"className":1585},[],[1587],{"type":65,"value":859},{"type":65,"value":1589}," source properties, any ",{"type":59,"tag":99,"props":1591,"children":1593},{"className":1592},[],[1594],{"type":65,"value":1595},"deepstream-app",{"type":65,"value":1597}," ",{"type":59,"tag":99,"props":1599,"children":1601},{"className":1600},[],[1602],{"type":65,"value":1603},".txt",{"type":65,"value":1605},"). Always\n",{"type":59,"tag":99,"props":1607,"children":1609},{"className":1608},[],[1610],{"type":65,"value":1611},"Read",{"type":65,"value":1613}," before ",{"type":59,"tag":99,"props":1615,"children":1617},{"className":1616},[],[1618],{"type":65,"value":1619},"Edit",{"type":65,"value":1621},". Keep edits surgical — do not reformat unrelated lines.",{"type":59,"tag":812,"props":1623,"children":1625},{"id":1624},"stage-5-e2e-profile-report",[1626],{"type":65,"value":1627},"Stage 5 — E2E profile + report",{"type":59,"tag":68,"props":1629,"children":1630},{},[1631,1633,1638,1640,1645],{"type":65,"value":1632},"Run the E2E pipeline under ",{"type":59,"tag":99,"props":1634,"children":1636},{"className":1635},[],[1637],{"type":65,"value":134},{"type":65,"value":1639}," and extract per-plugin timings via ",{"type":59,"tag":99,"props":1641,"children":1643},{"className":1642},[],[1644],{"type":65,"value":142},{"type":65,"value":874},{"type":59,"tag":68,"props":1647,"children":1648},{},[1649],{"type":65,"value":1650},"Capture:",{"type":59,"tag":949,"props":1652,"children":1654},{"className":980,"code":1653,"language":46,"meta":954,"style":954},"TS=$(date +%Y%m%d_%H%M%S)\nOUT=\u002Ftmp\u002Fds_profile_${TS}\nnsys profile \\\n  --trace=cuda,nvtx,osrt \\\n  --gpu-metrics-devices=all \\\n  --cuda-memory-usage=true \\\n  --force-overwrite=true \\\n  --duration=30 \\\n  --output=${OUT} \\\n  \u003Cyour-pipeline-launch-command>\n",[1655],{"type":59,"tag":99,"props":1656,"children":1657},{"__ignoreMap":954},[1658,1687,1719,1735,1747,1759,1771,1783,1795,1820],{"type":59,"tag":987,"props":1659,"children":1660},{"class":989,"line":990},[1661,1666,1672,1677,1682],{"type":59,"tag":987,"props":1662,"children":1663},{"style":1024},[1664],{"type":65,"value":1665},"TS",{"type":59,"tag":987,"props":1667,"children":1669},{"style":1668},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1670],{"type":65,"value":1671},"=$(",{"type":59,"tag":987,"props":1673,"children":1674},{"style":1004},[1675],{"type":65,"value":1676},"date",{"type":59,"tag":987,"props":1678,"children":1679},{"style":1009},[1680],{"type":65,"value":1681}," +%Y%m%d_%H%M%S",{"type":59,"tag":987,"props":1683,"children":1684},{"style":1668},[1685],{"type":65,"value":1686},")\n",{"type":59,"tag":987,"props":1688,"children":1689},{"class":989,"line":1000},[1690,1695,1700,1705,1710,1714],{"type":59,"tag":987,"props":1691,"children":1692},{"style":1024},[1693],{"type":65,"value":1694},"OUT",{"type":59,"tag":987,"props":1696,"children":1697},{"style":1668},[1698],{"type":65,"value":1699},"=",{"type":59,"tag":987,"props":1701,"children":1702},{"style":1009},[1703],{"type":65,"value":1704},"\u002Ftmp\u002Fds_profile_",{"type":59,"tag":987,"props":1706,"children":1707},{"style":1668},[1708],{"type":65,"value":1709},"${",{"type":59,"tag":987,"props":1711,"children":1712},{"style":1024},[1713],{"type":65,"value":1665},{"type":59,"tag":987,"props":1715,"children":1716},{"style":1668},[1717],{"type":65,"value":1718},"}\n",{"type":59,"tag":987,"props":1720,"children":1721},{"class":989,"line":1015},[1722,1726,1731],{"type":59,"tag":987,"props":1723,"children":1724},{"style":1004},[1725],{"type":65,"value":230},{"type":59,"tag":987,"props":1727,"children":1728},{"style":1009},[1729],{"type":65,"value":1730}," profile",{"type":59,"tag":987,"props":1732,"children":1733},{"style":1024},[1734],{"type":65,"value":1027},{"type":59,"tag":987,"props":1736,"children":1737},{"class":989,"line":1030},[1738,1743],{"type":59,"tag":987,"props":1739,"children":1740},{"style":1009},[1741],{"type":65,"value":1742},"  --trace=cuda,nvtx,osrt",{"type":59,"tag":987,"props":1744,"children":1745},{"style":1024},[1746],{"type":65,"value":1027},{"type":59,"tag":987,"props":1748,"children":1749},{"class":989,"line":1039},[1750,1755],{"type":59,"tag":987,"props":1751,"children":1752},{"style":1009},[1753],{"type":65,"value":1754},"  --gpu-metrics-devices=all",{"type":59,"tag":987,"props":1756,"children":1757},{"style":1024},[1758],{"type":65,"value":1027},{"type":59,"tag":987,"props":1760,"children":1761},{"class":989,"line":1049},[1762,1767],{"type":59,"tag":987,"props":1763,"children":1764},{"style":1009},[1765],{"type":65,"value":1766},"  --cuda-memory-usage=true",{"type":59,"tag":987,"props":1768,"children":1769},{"style":1024},[1770],{"type":65,"value":1027},{"type":59,"tag":987,"props":1772,"children":1773},{"class":989,"line":1058},[1774,1779],{"type":59,"tag":987,"props":1775,"children":1776},{"style":1009},[1777],{"type":65,"value":1778},"  --force-overwrite=true",{"type":59,"tag":987,"props":1780,"children":1781},{"style":1024},[1782],{"type":65,"value":1027},{"type":59,"tag":987,"props":1784,"children":1785},{"class":989,"line":1075},[1786,1791],{"type":59,"tag":987,"props":1787,"children":1788},{"style":1009},[1789],{"type":65,"value":1790},"  --duration=30",{"type":59,"tag":987,"props":1792,"children":1793},{"style":1024},[1794],{"type":65,"value":1027},{"type":59,"tag":987,"props":1796,"children":1797},{"class":989,"line":1083},[1798,1803,1807,1811,1816],{"type":59,"tag":987,"props":1799,"children":1800},{"style":1009},[1801],{"type":65,"value":1802},"  --output=",{"type":59,"tag":987,"props":1804,"children":1805},{"style":1668},[1806],{"type":65,"value":1709},{"type":59,"tag":987,"props":1808,"children":1809},{"style":1024},[1810],{"type":65,"value":1694},{"type":59,"tag":987,"props":1812,"children":1813},{"style":1668},[1814],{"type":65,"value":1815},"}",{"type":59,"tag":987,"props":1817,"children":1818},{"style":1024},[1819],{"type":65,"value":1027},{"type":59,"tag":987,"props":1821,"children":1822},{"class":989,"line":1091},[1823,1828,1833,1838],{"type":59,"tag":987,"props":1824,"children":1825},{"style":1668},[1826],{"type":65,"value":1827},"  \u003C",{"type":59,"tag":987,"props":1829,"children":1830},{"style":1009},[1831],{"type":65,"value":1832},"your-pipeline-launch-comman",{"type":59,"tag":987,"props":1834,"children":1835},{"style":1024},[1836],{"type":65,"value":1837},"d",{"type":59,"tag":987,"props":1839,"children":1840},{"style":1668},[1841],{"type":65,"value":1842},">\n",{"type":59,"tag":68,"props":1844,"children":1845},{},[1846],{"type":65,"value":1847},"Extract:",{"type":59,"tag":949,"props":1849,"children":1851},{"className":980,"code":1850,"language":46,"meta":954,"style":954},"# Per-kernel GPU time (top 10)\nnsys stats --report cuda_gpu_kern_sum --format csv ${OUT}.nsys-rep | head -20\n\n# Per-NVTX-range time (top 10) — this is the DS per-plugin breakdown\nnsys stats --report nvtx_sum --format csv ${OUT}.nsys-rep | head -20\n\n# Memcpy totals\nnsys stats --report cuda_gpu_mem_time_sum --format csv ${OUT}.nsys-rep\n\n# GPU metrics (SM activity, DRAM throughput) — requires --gpu-metrics-devices\nnsys stats --report gpu_metric_gpu_util_sum --format csv ${OUT}.nsys-rep\n",[1852],{"type":59,"tag":99,"props":1853,"children":1854},{"__ignoreMap":954},[1855,1863,1928,1935,1943,1999,2006,2014,2059,2066,2074],{"type":59,"tag":987,"props":1856,"children":1857},{"class":989,"line":990},[1858],{"type":59,"tag":987,"props":1859,"children":1860},{"style":994},[1861],{"type":65,"value":1862},"# Per-kernel GPU time (top 10)\n",{"type":59,"tag":987,"props":1864,"children":1865},{"class":989,"line":1000},[1866,1870,1875,1880,1885,1890,1895,1900,1904,1908,1913,1918,1923],{"type":59,"tag":987,"props":1867,"children":1868},{"style":1004},[1869],{"type":65,"value":230},{"type":59,"tag":987,"props":1871,"children":1872},{"style":1009},[1873],{"type":65,"value":1874}," stats",{"type":59,"tag":987,"props":1876,"children":1877},{"style":1009},[1878],{"type":65,"value":1879}," --report",{"type":59,"tag":987,"props":1881,"children":1882},{"style":1009},[1883],{"type":65,"value":1884}," cuda_gpu_kern_sum",{"type":59,"tag":987,"props":1886,"children":1887},{"style":1009},[1888],{"type":65,"value":1889}," --format",{"type":59,"tag":987,"props":1891,"children":1892},{"style":1009},[1893],{"type":65,"value":1894}," csv",{"type":59,"tag":987,"props":1896,"children":1897},{"style":1668},[1898],{"type":65,"value":1899}," ${",{"type":59,"tag":987,"props":1901,"children":1902},{"style":1024},[1903],{"type":65,"value":1694},{"type":59,"tag":987,"props":1905,"children":1906},{"style":1668},[1907],{"type":65,"value":1815},{"type":59,"tag":987,"props":1909,"children":1910},{"style":1009},[1911],{"type":65,"value":1912},".nsys-rep",{"type":59,"tag":987,"props":1914,"children":1915},{"style":1668},[1916],{"type":65,"value":1917}," |",{"type":59,"tag":987,"props":1919,"children":1920},{"style":1004},[1921],{"type":65,"value":1922}," head",{"type":59,"tag":987,"props":1924,"children":1925},{"style":1009},[1926],{"type":65,"value":1927}," -20\n",{"type":59,"tag":987,"props":1929,"children":1930},{"class":989,"line":1015},[1931],{"type":59,"tag":987,"props":1932,"children":1933},{"emptyLinePlaceholder":1043},[1934],{"type":65,"value":1046},{"type":59,"tag":987,"props":1936,"children":1937},{"class":989,"line":1030},[1938],{"type":59,"tag":987,"props":1939,"children":1940},{"style":994},[1941],{"type":65,"value":1942},"# Per-NVTX-range time (top 10) — this is the DS per-plugin breakdown\n",{"type":59,"tag":987,"props":1944,"children":1945},{"class":989,"line":1039},[1946,1950,1954,1958,1963,1967,1971,1975,1979,1983,1987,1991,1995],{"type":59,"tag":987,"props":1947,"children":1948},{"style":1004},[1949],{"type":65,"value":230},{"type":59,"tag":987,"props":1951,"children":1952},{"style":1009},[1953],{"type":65,"value":1874},{"type":59,"tag":987,"props":1955,"children":1956},{"style":1009},[1957],{"type":65,"value":1879},{"type":59,"tag":987,"props":1959,"children":1960},{"style":1009},[1961],{"type":65,"value":1962}," nvtx_sum",{"type":59,"tag":987,"props":1964,"children":1965},{"style":1009},[1966],{"type":65,"value":1889},{"type":59,"tag":987,"props":1968,"children":1969},{"style":1009},[1970],{"type":65,"value":1894},{"type":59,"tag":987,"props":1972,"children":1973},{"style":1668},[1974],{"type":65,"value":1899},{"type":59,"tag":987,"props":1976,"children":1977},{"style":1024},[1978],{"type":65,"value":1694},{"type":59,"tag":987,"props":1980,"children":1981},{"style":1668},[1982],{"type":65,"value":1815},{"type":59,"tag":987,"props":1984,"children":1985},{"style":1009},[1986],{"type":65,"value":1912},{"type":59,"tag":987,"props":1988,"children":1989},{"style":1668},[1990],{"type":65,"value":1917},{"type":59,"tag":987,"props":1992,"children":1993},{"style":1004},[1994],{"type":65,"value":1922},{"type":59,"tag":987,"props":1996,"children":1997},{"style":1009},[1998],{"type":65,"value":1927},{"type":59,"tag":987,"props":2000,"children":2001},{"class":989,"line":1049},[2002],{"type":59,"tag":987,"props":2003,"children":2004},{"emptyLinePlaceholder":1043},[2005],{"type":65,"value":1046},{"type":59,"tag":987,"props":2007,"children":2008},{"class":989,"line":1058},[2009],{"type":59,"tag":987,"props":2010,"children":2011},{"style":994},[2012],{"type":65,"value":2013},"# Memcpy totals\n",{"type":59,"tag":987,"props":2015,"children":2016},{"class":989,"line":1075},[2017,2021,2025,2029,2034,2038,2042,2046,2050,2054],{"type":59,"tag":987,"props":2018,"children":2019},{"style":1004},[2020],{"type":65,"value":230},{"type":59,"tag":987,"props":2022,"children":2023},{"style":1009},[2024],{"type":65,"value":1874},{"type":59,"tag":987,"props":2026,"children":2027},{"style":1009},[2028],{"type":65,"value":1879},{"type":59,"tag":987,"props":2030,"children":2031},{"style":1009},[2032],{"type":65,"value":2033}," cuda_gpu_mem_time_sum",{"type":59,"tag":987,"props":2035,"children":2036},{"style":1009},[2037],{"type":65,"value":1889},{"type":59,"tag":987,"props":2039,"children":2040},{"style":1009},[2041],{"type":65,"value":1894},{"type":59,"tag":987,"props":2043,"children":2044},{"style":1668},[2045],{"type":65,"value":1899},{"type":59,"tag":987,"props":2047,"children":2048},{"style":1024},[2049],{"type":65,"value":1694},{"type":59,"tag":987,"props":2051,"children":2052},{"style":1668},[2053],{"type":65,"value":1815},{"type":59,"tag":987,"props":2055,"children":2056},{"style":1009},[2057],{"type":65,"value":2058},".nsys-rep\n",{"type":59,"tag":987,"props":2060,"children":2061},{"class":989,"line":1083},[2062],{"type":59,"tag":987,"props":2063,"children":2064},{"emptyLinePlaceholder":1043},[2065],{"type":65,"value":1046},{"type":59,"tag":987,"props":2067,"children":2068},{"class":989,"line":1091},[2069],{"type":59,"tag":987,"props":2070,"children":2071},{"style":994},[2072],{"type":65,"value":2073},"# GPU metrics (SM activity, DRAM throughput) — requires --gpu-metrics-devices\n",{"type":59,"tag":987,"props":2075,"children":2076},{"class":989,"line":1100},[2077,2081,2085,2089,2094,2098,2102,2106,2110,2114],{"type":59,"tag":987,"props":2078,"children":2079},{"style":1004},[2080],{"type":65,"value":230},{"type":59,"tag":987,"props":2082,"children":2083},{"style":1009},[2084],{"type":65,"value":1874},{"type":59,"tag":987,"props":2086,"children":2087},{"style":1009},[2088],{"type":65,"value":1879},{"type":59,"tag":987,"props":2090,"children":2091},{"style":1009},[2092],{"type":65,"value":2093}," gpu_metric_gpu_util_sum",{"type":59,"tag":987,"props":2095,"children":2096},{"style":1009},[2097],{"type":65,"value":1889},{"type":59,"tag":987,"props":2099,"children":2100},{"style":1009},[2101],{"type":65,"value":1894},{"type":59,"tag":987,"props":2103,"children":2104},{"style":1668},[2105],{"type":65,"value":1899},{"type":59,"tag":987,"props":2107,"children":2108},{"style":1024},[2109],{"type":65,"value":1694},{"type":59,"tag":987,"props":2111,"children":2112},{"style":1668},[2113],{"type":65,"value":1815},{"type":59,"tag":987,"props":2115,"children":2116},{"style":1009},[2117],{"type":65,"value":2058},{"type":59,"tag":68,"props":2119,"children":2120},{},[2121,2123,2128],{"type":65,"value":2122},"Full command reference: ",{"type":59,"tag":868,"props":2124,"children":2126},{"href":2125},"references\u002Fnsys-cli-recipes.md",[2127],{"type":65,"value":2125},{"type":65,"value":874},{"type":59,"tag":68,"props":2130,"children":2131},{},[2132],{"type":65,"value":2133},"Report (Markdown, to stdout — no external UI):",{"type":59,"tag":949,"props":2135,"children":2139},{"className":2136,"code":2137,"language":2138,"meta":954,"style":954},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","## Profile summary\n\n**Hardware**: \u003Cname>, \u003Cmem_total> GB, SM x\u003Csm>, NVDEC x\u003Cnvdec>, PCIe Gen\u003Cg> x\u003Cw>\n**Ceilings**: decode \u003CX> fps, compute ~\u003CY> TOPS @ INT8, memory \u003CZ> GB\u002Fs\n\n**Inference plateau**: batch=\u003CB>, peak=\u003CF> fps per batch → \u003CF × B> fps aggregate\n\n**E2E measured**: \u003Cactual> fps  (=\u003Cpct>% of inference plateau)\n\n### Per-plugin time (from NVTX) — only for plugins emitting NVTX in this build\n\n| Plugin          | Share of wall time | GPU \u002F CPU | Notes |\n|-----------------|--------------------|-----------|-------|\n| nvinfer         | \u003Cpct>%             | GPU       | (always emitted; if absent, NVTX injection is broken) |\n| nvdsosd         | \u003Cpct>%             | GPU       | (when in pipeline) |\n| ...             | ...                | ...       | (other plugins as the verification probe shows) |\n\n(Numbers above are illustrative — fill in from `nsys stats --report nvtx_sum`. Plugins\nthat don't emit NVTX in your DS \u002F image combo simply don't appear; that's not a bug, it's\nthe limit of what NVTX captures here. See `references\u002Fnvtx-coverage.md`.)\n\n### Applied configs (sample shape; values come from R1–R6 + Stage 3 measurements)\n\n- `nvstreammux.batch-size = \u003Cplateau_batch>`\n- `nvinfer.network-mode = 1 (INT8)` if calibration available, else `2 (FP16)`\n- decoder `num-extra-surfaces = min(plateau_batch, 5)`\n- queue between source and pgie, `max-size-buffers = plateau_batch × 4`\n- ... (full list per the user's pipeline shape)\n\n### Uninstrumented (skipped re-tune)\n\nList the elements that didn't emit NVTX in this build (typically the closed-source binary\nplugins — see `references\u002Fnvtx-coverage.md`) plus plain GStreamer-core helpers. Report\nthem so the user knows what wasn't directly measurable.\n","markdown",[2140],{"type":59,"tag":99,"props":2141,"children":2142},{"__ignoreMap":954},[2143,2156,2163,2291,2366,2373,2458,2465,2521,2528,2541,2548,2593,2602,2646,2688,2732,2740,2768,2777,2803,2811,2824,2832,2856,2895,2921,2947,2960,2968,2981,2989,2998,3024],{"type":59,"tag":987,"props":2144,"children":2145},{"class":989,"line":990},[2146,2151],{"type":59,"tag":987,"props":2147,"children":2148},{"style":1668},[2149],{"type":65,"value":2150},"## ",{"type":59,"tag":987,"props":2152,"children":2153},{"style":1004},[2154],{"type":65,"value":2155},"Profile summary\n",{"type":59,"tag":987,"props":2157,"children":2158},{"class":989,"line":1000},[2159],{"type":59,"tag":987,"props":2160,"children":2161},{"emptyLinePlaceholder":1043},[2162],{"type":65,"value":1046},{"type":59,"tag":987,"props":2164,"children":2165},{"class":989,"line":1015},[2166,2172,2178,2182,2186,2191,2197,2202,2206,2210,2215,2219,2224,2228,2233,2237,2242,2246,2251,2255,2260,2264,2269,2273,2278,2282,2287],{"type":59,"tag":987,"props":2167,"children":2169},{"style":2168},"--shiki-light:#39ADB5;--shiki-light-font-weight:bold;--shiki-default:#89DDFF;--shiki-default-font-weight:bold;--shiki-dark:#89DDFF;--shiki-dark-font-weight:bold",[2170],{"type":65,"value":2171},"**",{"type":59,"tag":987,"props":2173,"children":2175},{"style":2174},"--shiki-light:#E53935;--shiki-light-font-weight:bold;--shiki-default:#F07178;--shiki-default-font-weight:bold;--shiki-dark:#F07178;--shiki-dark-font-weight:bold",[2176],{"type":65,"value":2177},"Hardware",{"type":59,"tag":987,"props":2179,"children":2180},{"style":2168},[2181],{"type":65,"value":2171},{"type":59,"tag":987,"props":2183,"children":2184},{"style":1024},[2185],{"type":65,"value":1371},{"type":59,"tag":987,"props":2187,"children":2188},{"style":1668},[2189],{"type":65,"value":2190},"\u003C",{"type":59,"tag":987,"props":2192,"children":2194},{"style":2193},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[2195],{"type":65,"value":2196},"name",{"type":59,"tag":987,"props":2198,"children":2199},{"style":1668},[2200],{"type":65,"value":2201},">",{"type":59,"tag":987,"props":2203,"children":2204},{"style":1024},[2205],{"type":65,"value":830},{"type":59,"tag":987,"props":2207,"children":2208},{"style":1668},[2209],{"type":65,"value":2190},{"type":59,"tag":987,"props":2211,"children":2212},{"style":2193},[2213],{"type":65,"value":2214},"mem_total",{"type":59,"tag":987,"props":2216,"children":2217},{"style":1668},[2218],{"type":65,"value":2201},{"type":59,"tag":987,"props":2220,"children":2221},{"style":1024},[2222],{"type":65,"value":2223}," GB, SM x",{"type":59,"tag":987,"props":2225,"children":2226},{"style":1668},[2227],{"type":65,"value":2190},{"type":59,"tag":987,"props":2229,"children":2230},{"style":2193},[2231],{"type":65,"value":2232},"sm",{"type":59,"tag":987,"props":2234,"children":2235},{"style":1668},[2236],{"type":65,"value":2201},{"type":59,"tag":987,"props":2238,"children":2239},{"style":1024},[2240],{"type":65,"value":2241},", NVDEC x",{"type":59,"tag":987,"props":2243,"children":2244},{"style":1668},[2245],{"type":65,"value":2190},{"type":59,"tag":987,"props":2247,"children":2248},{"style":2193},[2249],{"type":65,"value":2250},"nvdec",{"type":59,"tag":987,"props":2252,"children":2253},{"style":1668},[2254],{"type":65,"value":2201},{"type":59,"tag":987,"props":2256,"children":2257},{"style":1024},[2258],{"type":65,"value":2259},", PCIe Gen",{"type":59,"tag":987,"props":2261,"children":2262},{"style":1668},[2263],{"type":65,"value":2190},{"type":59,"tag":987,"props":2265,"children":2266},{"style":2193},[2267],{"type":65,"value":2268},"g",{"type":59,"tag":987,"props":2270,"children":2271},{"style":1668},[2272],{"type":65,"value":2201},{"type":59,"tag":987,"props":2274,"children":2275},{"style":1024},[2276],{"type":65,"value":2277}," x",{"type":59,"tag":987,"props":2279,"children":2280},{"style":1668},[2281],{"type":65,"value":2190},{"type":59,"tag":987,"props":2283,"children":2284},{"style":2193},[2285],{"type":65,"value":2286},"w",{"type":59,"tag":987,"props":2288,"children":2289},{"style":1668},[2290],{"type":65,"value":1842},{"type":59,"tag":987,"props":2292,"children":2293},{"class":989,"line":1030},[2294,2298,2303,2307,2312,2316,2321,2325,2330,2334,2339,2343,2348,2352,2357,2361],{"type":59,"tag":987,"props":2295,"children":2296},{"style":2168},[2297],{"type":65,"value":2171},{"type":59,"tag":987,"props":2299,"children":2300},{"style":2174},[2301],{"type":65,"value":2302},"Ceilings",{"type":59,"tag":987,"props":2304,"children":2305},{"style":2168},[2306],{"type":65,"value":2171},{"type":59,"tag":987,"props":2308,"children":2309},{"style":1024},[2310],{"type":65,"value":2311},": decode ",{"type":59,"tag":987,"props":2313,"children":2314},{"style":1668},[2315],{"type":65,"value":2190},{"type":59,"tag":987,"props":2317,"children":2318},{"style":2193},[2319],{"type":65,"value":2320},"X",{"type":59,"tag":987,"props":2322,"children":2323},{"style":1668},[2324],{"type":65,"value":2201},{"type":59,"tag":987,"props":2326,"children":2327},{"style":1024},[2328],{"type":65,"value":2329}," fps, compute ~",{"type":59,"tag":987,"props":2331,"children":2332},{"style":1668},[2333],{"type":65,"value":2190},{"type":59,"tag":987,"props":2335,"children":2336},{"style":2193},[2337],{"type":65,"value":2338},"Y",{"type":59,"tag":987,"props":2340,"children":2341},{"style":1668},[2342],{"type":65,"value":2201},{"type":59,"tag":987,"props":2344,"children":2345},{"style":1024},[2346],{"type":65,"value":2347}," TOPS @ INT8, memory ",{"type":59,"tag":987,"props":2349,"children":2350},{"style":1668},[2351],{"type":65,"value":2190},{"type":59,"tag":987,"props":2353,"children":2354},{"style":2193},[2355],{"type":65,"value":2356},"Z",{"type":59,"tag":987,"props":2358,"children":2359},{"style":1668},[2360],{"type":65,"value":2201},{"type":59,"tag":987,"props":2362,"children":2363},{"style":1024},[2364],{"type":65,"value":2365}," GB\u002Fs\n",{"type":59,"tag":987,"props":2367,"children":2368},{"class":989,"line":1039},[2369],{"type":59,"tag":987,"props":2370,"children":2371},{"emptyLinePlaceholder":1043},[2372],{"type":65,"value":1046},{"type":59,"tag":987,"props":2374,"children":2375},{"class":989,"line":1049},[2376,2380,2385,2389,2394,2398,2403,2407,2412,2416,2421,2425,2430,2434,2438,2444,2449,2453],{"type":59,"tag":987,"props":2377,"children":2378},{"style":2168},[2379],{"type":65,"value":2171},{"type":59,"tag":987,"props":2381,"children":2382},{"style":2174},[2383],{"type":65,"value":2384},"Inference plateau",{"type":59,"tag":987,"props":2386,"children":2387},{"style":2168},[2388],{"type":65,"value":2171},{"type":59,"tag":987,"props":2390,"children":2391},{"style":1024},[2392],{"type":65,"value":2393},": batch=",{"type":59,"tag":987,"props":2395,"children":2396},{"style":1668},[2397],{"type":65,"value":2190},{"type":59,"tag":987,"props":2399,"children":2400},{"style":2193},[2401],{"type":65,"value":2402},"B",{"type":59,"tag":987,"props":2404,"children":2405},{"style":1668},[2406],{"type":65,"value":2201},{"type":59,"tag":987,"props":2408,"children":2409},{"style":1024},[2410],{"type":65,"value":2411},", peak=",{"type":59,"tag":987,"props":2413,"children":2414},{"style":1668},[2415],{"type":65,"value":2190},{"type":59,"tag":987,"props":2417,"children":2418},{"style":2193},[2419],{"type":65,"value":2420},"F",{"type":59,"tag":987,"props":2422,"children":2423},{"style":1668},[2424],{"type":65,"value":2201},{"type":59,"tag":987,"props":2426,"children":2427},{"style":1024},[2428],{"type":65,"value":2429}," fps per batch → ",{"type":59,"tag":987,"props":2431,"children":2432},{"style":1668},[2433],{"type":65,"value":2190},{"type":59,"tag":987,"props":2435,"children":2436},{"style":2193},[2437],{"type":65,"value":2420},{"type":59,"tag":987,"props":2439,"children":2441},{"style":2440},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[2442],{"type":65,"value":2443}," ×",{"type":59,"tag":987,"props":2445,"children":2446},{"style":2440},[2447],{"type":65,"value":2448}," B",{"type":59,"tag":987,"props":2450,"children":2451},{"style":1668},[2452],{"type":65,"value":2201},{"type":59,"tag":987,"props":2454,"children":2455},{"style":1024},[2456],{"type":65,"value":2457}," fps aggregate\n",{"type":59,"tag":987,"props":2459,"children":2460},{"class":989,"line":1058},[2461],{"type":59,"tag":987,"props":2462,"children":2463},{"emptyLinePlaceholder":1043},[2464],{"type":65,"value":1046},{"type":59,"tag":987,"props":2466,"children":2467},{"class":989,"line":1075},[2468,2472,2477,2481,2485,2489,2494,2498,2503,2507,2512,2516],{"type":59,"tag":987,"props":2469,"children":2470},{"style":2168},[2471],{"type":65,"value":2171},{"type":59,"tag":987,"props":2473,"children":2474},{"style":2174},[2475],{"type":65,"value":2476},"E2E measured",{"type":59,"tag":987,"props":2478,"children":2479},{"style":2168},[2480],{"type":65,"value":2171},{"type":59,"tag":987,"props":2482,"children":2483},{"style":1024},[2484],{"type":65,"value":1371},{"type":59,"tag":987,"props":2486,"children":2487},{"style":1668},[2488],{"type":65,"value":2190},{"type":59,"tag":987,"props":2490,"children":2491},{"style":2193},[2492],{"type":65,"value":2493},"actual",{"type":59,"tag":987,"props":2495,"children":2496},{"style":1668},[2497],{"type":65,"value":2201},{"type":59,"tag":987,"props":2499,"children":2500},{"style":1024},[2501],{"type":65,"value":2502}," fps  (=",{"type":59,"tag":987,"props":2504,"children":2505},{"style":1668},[2506],{"type":65,"value":2190},{"type":59,"tag":987,"props":2508,"children":2509},{"style":2193},[2510],{"type":65,"value":2511},"pct",{"type":59,"tag":987,"props":2513,"children":2514},{"style":1668},[2515],{"type":65,"value":2201},{"type":59,"tag":987,"props":2517,"children":2518},{"style":1024},[2519],{"type":65,"value":2520},"% of inference plateau)\n",{"type":59,"tag":987,"props":2522,"children":2523},{"class":989,"line":1083},[2524],{"type":59,"tag":987,"props":2525,"children":2526},{"emptyLinePlaceholder":1043},[2527],{"type":65,"value":1046},{"type":59,"tag":987,"props":2529,"children":2530},{"class":989,"line":1091},[2531,2536],{"type":59,"tag":987,"props":2532,"children":2533},{"style":1668},[2534],{"type":65,"value":2535},"### ",{"type":59,"tag":987,"props":2537,"children":2538},{"style":1004},[2539],{"type":65,"value":2540},"Per-plugin time (from NVTX) — only for plugins emitting NVTX in this build\n",{"type":59,"tag":987,"props":2542,"children":2543},{"class":989,"line":1100},[2544],{"type":59,"tag":987,"props":2545,"children":2546},{"emptyLinePlaceholder":1043},[2547],{"type":65,"value":1046},{"type":59,"tag":987,"props":2549,"children":2550},{"class":989,"line":1117},[2551,2556,2561,2565,2570,2574,2579,2583,2588],{"type":59,"tag":987,"props":2552,"children":2553},{"style":1668},[2554],{"type":65,"value":2555},"|",{"type":59,"tag":987,"props":2557,"children":2558},{"style":1024},[2559],{"type":65,"value":2560}," Plugin          ",{"type":59,"tag":987,"props":2562,"children":2563},{"style":1668},[2564],{"type":65,"value":2555},{"type":59,"tag":987,"props":2566,"children":2567},{"style":1024},[2568],{"type":65,"value":2569}," Share of wall time ",{"type":59,"tag":987,"props":2571,"children":2572},{"style":1668},[2573],{"type":65,"value":2555},{"type":59,"tag":987,"props":2575,"children":2576},{"style":1024},[2577],{"type":65,"value":2578}," GPU \u002F CPU ",{"type":59,"tag":987,"props":2580,"children":2581},{"style":1668},[2582],{"type":65,"value":2555},{"type":59,"tag":987,"props":2584,"children":2585},{"style":1024},[2586],{"type":65,"value":2587}," Notes ",{"type":59,"tag":987,"props":2589,"children":2590},{"style":1668},[2591],{"type":65,"value":2592},"|\n",{"type":59,"tag":987,"props":2594,"children":2596},{"class":989,"line":2595},13,[2597],{"type":59,"tag":987,"props":2598,"children":2599},{"style":1668},[2600],{"type":65,"value":2601},"|-----------------|--------------------|-----------|-------|\n",{"type":59,"tag":987,"props":2603,"children":2605},{"class":989,"line":2604},14,[2606,2610,2615,2619,2624,2628,2633,2637,2642],{"type":59,"tag":987,"props":2607,"children":2608},{"style":1668},[2609],{"type":65,"value":2555},{"type":59,"tag":987,"props":2611,"children":2612},{"style":1024},[2613],{"type":65,"value":2614}," nvinfer         ",{"type":59,"tag":987,"props":2616,"children":2617},{"style":1668},[2618],{"type":65,"value":2555},{"type":59,"tag":987,"props":2620,"children":2621},{"style":1024},[2622],{"type":65,"value":2623}," \u003Cpct>%             ",{"type":59,"tag":987,"props":2625,"children":2626},{"style":1668},[2627],{"type":65,"value":2555},{"type":59,"tag":987,"props":2629,"children":2630},{"style":1024},[2631],{"type":65,"value":2632}," GPU       ",{"type":59,"tag":987,"props":2634,"children":2635},{"style":1668},[2636],{"type":65,"value":2555},{"type":59,"tag":987,"props":2638,"children":2639},{"style":1024},[2640],{"type":65,"value":2641}," (always emitted; if absent, NVTX injection is broken) ",{"type":59,"tag":987,"props":2643,"children":2644},{"style":1668},[2645],{"type":65,"value":2592},{"type":59,"tag":987,"props":2647,"children":2649},{"class":989,"line":2648},15,[2650,2654,2659,2663,2667,2671,2675,2679,2684],{"type":59,"tag":987,"props":2651,"children":2652},{"style":1668},[2653],{"type":65,"value":2555},{"type":59,"tag":987,"props":2655,"children":2656},{"style":1024},[2657],{"type":65,"value":2658}," nvdsosd         ",{"type":59,"tag":987,"props":2660,"children":2661},{"style":1668},[2662],{"type":65,"value":2555},{"type":59,"tag":987,"props":2664,"children":2665},{"style":1024},[2666],{"type":65,"value":2623},{"type":59,"tag":987,"props":2668,"children":2669},{"style":1668},[2670],{"type":65,"value":2555},{"type":59,"tag":987,"props":2672,"children":2673},{"style":1024},[2674],{"type":65,"value":2632},{"type":59,"tag":987,"props":2676,"children":2677},{"style":1668},[2678],{"type":65,"value":2555},{"type":59,"tag":987,"props":2680,"children":2681},{"style":1024},[2682],{"type":65,"value":2683}," (when in pipeline) ",{"type":59,"tag":987,"props":2685,"children":2686},{"style":1668},[2687],{"type":65,"value":2592},{"type":59,"tag":987,"props":2689,"children":2691},{"class":989,"line":2690},16,[2692,2696,2701,2705,2710,2714,2719,2723,2728],{"type":59,"tag":987,"props":2693,"children":2694},{"style":1668},[2695],{"type":65,"value":2555},{"type":59,"tag":987,"props":2697,"children":2698},{"style":1024},[2699],{"type":65,"value":2700}," ...             ",{"type":59,"tag":987,"props":2702,"children":2703},{"style":1668},[2704],{"type":65,"value":2555},{"type":59,"tag":987,"props":2706,"children":2707},{"style":1024},[2708],{"type":65,"value":2709}," ...                ",{"type":59,"tag":987,"props":2711,"children":2712},{"style":1668},[2713],{"type":65,"value":2555},{"type":59,"tag":987,"props":2715,"children":2716},{"style":1024},[2717],{"type":65,"value":2718}," ...       ",{"type":59,"tag":987,"props":2720,"children":2721},{"style":1668},[2722],{"type":65,"value":2555},{"type":59,"tag":987,"props":2724,"children":2725},{"style":1024},[2726],{"type":65,"value":2727}," (other plugins as the verification probe shows) ",{"type":59,"tag":987,"props":2729,"children":2730},{"style":1668},[2731],{"type":65,"value":2592},{"type":59,"tag":987,"props":2733,"children":2735},{"class":989,"line":2734},17,[2736],{"type":59,"tag":987,"props":2737,"children":2738},{"emptyLinePlaceholder":1043},[2739],{"type":65,"value":1046},{"type":59,"tag":987,"props":2741,"children":2743},{"class":989,"line":2742},18,[2744,2749,2754,2759,2763],{"type":59,"tag":987,"props":2745,"children":2746},{"style":1024},[2747],{"type":65,"value":2748},"(Numbers above are illustrative — fill in from ",{"type":59,"tag":987,"props":2750,"children":2751},{"style":1668},[2752],{"type":65,"value":2753},"`",{"type":59,"tag":987,"props":2755,"children":2756},{"style":1009},[2757],{"type":65,"value":2758},"nsys stats --report nvtx_sum",{"type":59,"tag":987,"props":2760,"children":2761},{"style":1668},[2762],{"type":65,"value":2753},{"type":59,"tag":987,"props":2764,"children":2765},{"style":1024},[2766],{"type":65,"value":2767},". Plugins\n",{"type":59,"tag":987,"props":2769,"children":2771},{"class":989,"line":2770},19,[2772],{"type":59,"tag":987,"props":2773,"children":2774},{"style":1024},[2775],{"type":65,"value":2776},"that don't emit NVTX in your DS \u002F image combo simply don't appear; that's not a bug, it's\n",{"type":59,"tag":987,"props":2778,"children":2780},{"class":989,"line":2779},20,[2781,2786,2790,2794,2798],{"type":59,"tag":987,"props":2782,"children":2783},{"style":1024},[2784],{"type":65,"value":2785},"the limit of what NVTX captures here. See ",{"type":59,"tag":987,"props":2787,"children":2788},{"style":1668},[2789],{"type":65,"value":2753},{"type":59,"tag":987,"props":2791,"children":2792},{"style":1009},[2793],{"type":65,"value":870},{"type":59,"tag":987,"props":2795,"children":2796},{"style":1668},[2797],{"type":65,"value":2753},{"type":59,"tag":987,"props":2799,"children":2800},{"style":1024},[2801],{"type":65,"value":2802},".)\n",{"type":59,"tag":987,"props":2804,"children":2806},{"class":989,"line":2805},21,[2807],{"type":59,"tag":987,"props":2808,"children":2809},{"emptyLinePlaceholder":1043},[2810],{"type":65,"value":1046},{"type":59,"tag":987,"props":2812,"children":2814},{"class":989,"line":2813},22,[2815,2819],{"type":59,"tag":987,"props":2816,"children":2817},{"style":1668},[2818],{"type":65,"value":2535},{"type":59,"tag":987,"props":2820,"children":2821},{"style":1004},[2822],{"type":65,"value":2823},"Applied configs (sample shape; values come from R1–R6 + Stage 3 measurements)\n",{"type":59,"tag":987,"props":2825,"children":2827},{"class":989,"line":2826},23,[2828],{"type":59,"tag":987,"props":2829,"children":2830},{"emptyLinePlaceholder":1043},[2831],{"type":65,"value":1046},{"type":59,"tag":987,"props":2833,"children":2835},{"class":989,"line":2834},24,[2836,2841,2846,2851],{"type":59,"tag":987,"props":2837,"children":2838},{"style":1668},[2839],{"type":65,"value":2840},"-",{"type":59,"tag":987,"props":2842,"children":2843},{"style":1668},[2844],{"type":65,"value":2845}," `",{"type":59,"tag":987,"props":2847,"children":2848},{"style":1009},[2849],{"type":65,"value":2850},"nvstreammux.batch-size = \u003Cplateau_batch>",{"type":59,"tag":987,"props":2852,"children":2853},{"style":1668},[2854],{"type":65,"value":2855},"`\n",{"type":59,"tag":987,"props":2857,"children":2859},{"class":989,"line":2858},25,[2860,2864,2868,2873,2877,2882,2886,2891],{"type":59,"tag":987,"props":2861,"children":2862},{"style":1668},[2863],{"type":65,"value":2840},{"type":59,"tag":987,"props":2865,"children":2866},{"style":1668},[2867],{"type":65,"value":2845},{"type":59,"tag":987,"props":2869,"children":2870},{"style":1009},[2871],{"type":65,"value":2872},"nvinfer.network-mode = 1 (INT8)",{"type":59,"tag":987,"props":2874,"children":2875},{"style":1668},[2876],{"type":65,"value":2753},{"type":59,"tag":987,"props":2878,"children":2879},{"style":1024},[2880],{"type":65,"value":2881}," if calibration available, else ",{"type":59,"tag":987,"props":2883,"children":2884},{"style":1668},[2885],{"type":65,"value":2753},{"type":59,"tag":987,"props":2887,"children":2888},{"style":1009},[2889],{"type":65,"value":2890},"2 (FP16)",{"type":59,"tag":987,"props":2892,"children":2893},{"style":1668},[2894],{"type":65,"value":2855},{"type":59,"tag":987,"props":2896,"children":2898},{"class":989,"line":2897},26,[2899,2903,2908,2912,2917],{"type":59,"tag":987,"props":2900,"children":2901},{"style":1668},[2902],{"type":65,"value":2840},{"type":59,"tag":987,"props":2904,"children":2905},{"style":1024},[2906],{"type":65,"value":2907}," decoder ",{"type":59,"tag":987,"props":2909,"children":2910},{"style":1668},[2911],{"type":65,"value":2753},{"type":59,"tag":987,"props":2913,"children":2914},{"style":1009},[2915],{"type":65,"value":2916},"num-extra-surfaces = min(plateau_batch, 5)",{"type":59,"tag":987,"props":2918,"children":2919},{"style":1668},[2920],{"type":65,"value":2855},{"type":59,"tag":987,"props":2922,"children":2924},{"class":989,"line":2923},27,[2925,2929,2934,2938,2943],{"type":59,"tag":987,"props":2926,"children":2927},{"style":1668},[2928],{"type":65,"value":2840},{"type":59,"tag":987,"props":2930,"children":2931},{"style":1024},[2932],{"type":65,"value":2933}," queue between source and pgie, ",{"type":59,"tag":987,"props":2935,"children":2936},{"style":1668},[2937],{"type":65,"value":2753},{"type":59,"tag":987,"props":2939,"children":2940},{"style":1009},[2941],{"type":65,"value":2942},"max-size-buffers = plateau_batch × 4",{"type":59,"tag":987,"props":2944,"children":2945},{"style":1668},[2946],{"type":65,"value":2855},{"type":59,"tag":987,"props":2948,"children":2950},{"class":989,"line":2949},28,[2951,2955],{"type":59,"tag":987,"props":2952,"children":2953},{"style":1668},[2954],{"type":65,"value":2840},{"type":59,"tag":987,"props":2956,"children":2957},{"style":1024},[2958],{"type":65,"value":2959}," ... (full list per the user's pipeline shape)\n",{"type":59,"tag":987,"props":2961,"children":2963},{"class":989,"line":2962},29,[2964],{"type":59,"tag":987,"props":2965,"children":2966},{"emptyLinePlaceholder":1043},[2967],{"type":65,"value":1046},{"type":59,"tag":987,"props":2969,"children":2971},{"class":989,"line":2970},30,[2972,2976],{"type":59,"tag":987,"props":2973,"children":2974},{"style":1668},[2975],{"type":65,"value":2535},{"type":59,"tag":987,"props":2977,"children":2978},{"style":1004},[2979],{"type":65,"value":2980},"Uninstrumented (skipped re-tune)\n",{"type":59,"tag":987,"props":2982,"children":2984},{"class":989,"line":2983},31,[2985],{"type":59,"tag":987,"props":2986,"children":2987},{"emptyLinePlaceholder":1043},[2988],{"type":65,"value":1046},{"type":59,"tag":987,"props":2990,"children":2992},{"class":989,"line":2991},32,[2993],{"type":59,"tag":987,"props":2994,"children":2995},{"style":1024},[2996],{"type":65,"value":2997},"List the elements that didn't emit NVTX in this build (typically the closed-source binary\n",{"type":59,"tag":987,"props":2999,"children":3001},{"class":989,"line":3000},33,[3002,3007,3011,3015,3019],{"type":59,"tag":987,"props":3003,"children":3004},{"style":1024},[3005],{"type":65,"value":3006},"plugins — see ",{"type":59,"tag":987,"props":3008,"children":3009},{"style":1668},[3010],{"type":65,"value":2753},{"type":59,"tag":987,"props":3012,"children":3013},{"style":1009},[3014],{"type":65,"value":870},{"type":59,"tag":987,"props":3016,"children":3017},{"style":1668},[3018],{"type":65,"value":2753},{"type":59,"tag":987,"props":3020,"children":3021},{"style":1024},[3022],{"type":65,"value":3023},") plus plain GStreamer-core helpers. Report\n",{"type":59,"tag":987,"props":3025,"children":3027},{"class":989,"line":3026},34,[3028],{"type":59,"tag":987,"props":3029,"children":3030},{"style":1024},[3031],{"type":65,"value":3032},"them so the user knows what wasn't directly measurable.\n",{"type":59,"tag":68,"props":3034,"children":3035},{},[3036,3038,3043],{"type":65,"value":3037},"Keep the summary terse. Raw ",{"type":59,"tag":99,"props":3039,"children":3041},{"className":3040},[],[3042],{"type":65,"value":142},{"type":65,"value":3044}," CSV goes into the temp file, not the response.",{"type":59,"tag":146,"props":3046,"children":3048},{"id":3047},"reference-documents",[3049],{"type":65,"value":3050},"Reference documents",{"type":59,"tag":289,"props":3052,"children":3053},{},[3054,3070],{"type":59,"tag":293,"props":3055,"children":3056},{},[3057],{"type":59,"tag":297,"props":3058,"children":3059},{},[3060,3065],{"type":59,"tag":301,"props":3061,"children":3062},{},[3063],{"type":65,"value":3064},"Document",{"type":59,"tag":301,"props":3066,"children":3067},{},[3068],{"type":65,"value":3069},"Use when",{"type":59,"tag":317,"props":3071,"children":3072},{},[3073,3088,3110,3132],{"type":59,"tag":297,"props":3074,"children":3075},{},[3076,3083],{"type":59,"tag":324,"props":3077,"children":3078},{},[3079],{"type":59,"tag":868,"props":3080,"children":3081},{"href":870},[3082],{"type":65,"value":870},{"type":59,"tag":324,"props":3084,"children":3085},{},[3086],{"type":65,"value":3087},"Stage 1 — classifying each pipeline element as COVERED or UNINSTRUMENTED.",{"type":59,"tag":297,"props":3089,"children":3090},{},[3091,3098],{"type":59,"tag":324,"props":3092,"children":3093},{},[3094],{"type":59,"tag":868,"props":3095,"children":3096},{"href":1143},[3097],{"type":65,"value":1143},{"type":59,"tag":324,"props":3099,"children":3100},{},[3101,3103,3108],{"type":65,"value":3102},"Stage 2 — turning ",{"type":59,"tag":99,"props":3104,"children":3106},{"className":3105},[],[3107],{"type":65,"value":43},{"type":65,"value":3109}," output into decode \u002F compute \u002F memory ceilings.",{"type":59,"tag":297,"props":3111,"children":3112},{},[3113,3120],{"type":59,"tag":324,"props":3114,"children":3115},{},[3116],{"type":59,"tag":868,"props":3117,"children":3118},{"href":1560},[3119],{"type":65,"value":1560},{"type":59,"tag":324,"props":3121,"children":3122},{},[3123,3125,3131],{"type":65,"value":3124},"Stage 4 — per-knob formula keyed to ",{"type":59,"tag":99,"props":3126,"children":3128},{"className":3127},[],[3129],{"type":65,"value":3130},"(plateau_batch, HW, N_streams, source_res, source_fps)",{"type":65,"value":874},{"type":59,"tag":297,"props":3133,"children":3134},{},[3135,3142],{"type":59,"tag":324,"props":3136,"children":3137},{},[3138],{"type":59,"tag":868,"props":3139,"children":3140},{"href":2125},[3141],{"type":65,"value":2125},{"type":59,"tag":324,"props":3143,"children":3144},{},[3145,3147,3152,3153,3158],{"type":65,"value":3146},"Stages 3 & 5 — exact ",{"type":59,"tag":99,"props":3148,"children":3150},{"className":3149},[],[3151],{"type":65,"value":134},{"type":65,"value":180},{"type":59,"tag":99,"props":3154,"children":3156},{"className":3155},[],[3157],{"type":65,"value":142},{"type":65,"value":3159}," invocations.",{"type":59,"tag":146,"props":3161,"children":3163},{"id":3162},"non-goals-this-version",[3164],{"type":65,"value":3165},"Non-goals (this version)",{"type":59,"tag":165,"props":3167,"children":3168},{},[3169,3179,3189],{"type":59,"tag":169,"props":3170,"children":3171},{},[3172,3177],{"type":59,"tag":74,"props":3173,"children":3174},{},[3175],{"type":65,"value":3176},"No Nsight Lens \u002F no GUI.",{"type":65,"value":3178}," Terminal only.",{"type":59,"tag":169,"props":3180,"children":3181},{},[3182,3187],{"type":59,"tag":74,"props":3183,"children":3184},{},[3185],{"type":65,"value":3186},"No NVTX auto-injection",{"type":65,"value":3188}," for uninstrumented plugins. MVP skips their knobs. Future work.",{"type":59,"tag":169,"props":3190,"children":3191},{},[3192,3197],{"type":59,"tag":74,"props":3193,"children":3194},{},[3195],{"type":65,"value":3196},"No iterative tune-measure-tune loop.",{"type":65,"value":3198}," Stage 4 derives configs once from closed-form\nrules; Stage 5 measures and reports. If the user wants to keep tuning, they can re-invoke\nthe skill with updated inputs.",{"type":59,"tag":146,"props":3200,"children":3202},{"id":3201},"related-skills",[3203],{"type":65,"value":3204},"Related skills",{"type":59,"tag":165,"props":3206,"children":3207},{},[3208,3218],{"type":59,"tag":169,"props":3209,"children":3210},{},[3211,3216],{"type":59,"tag":99,"props":3212,"children":3214},{"className":3213},[],[3215],{"type":65,"value":243},{"type":65,"value":3217}," — upstream pipeline generation. This skill\nassumes a pipeline already exists or is about to be generated.",{"type":59,"tag":169,"props":3219,"children":3220},{},[3221,3227],{"type":59,"tag":99,"props":3222,"children":3224},{"className":3223},[],[3225],{"type":65,"value":3226},"deepstream-byovm",{"type":65,"value":3228}," — HF → TensorRT engine building. Run first if the user\nbrought a new model; come here after.",{"type":59,"tag":146,"props":3230,"children":3232},{"id":3231},"notes",[3233],{"type":65,"value":3234},"Notes",{"type":59,"tag":165,"props":3236,"children":3237},{},[3238,3258,3355],{"type":59,"tag":169,"props":3239,"children":3240},{},[3241,3243,3249,3251,3257],{"type":65,"value":3242},"Lives in ",{"type":59,"tag":99,"props":3244,"children":3246},{"className":3245},[],[3247],{"type":65,"value":3248},"skills\u002Fdeepstream-profile-pipeline\u002F",{"type":65,"value":3250}," alongside the other DS skills, per\nthe repo convention in ",{"type":59,"tag":99,"props":3252,"children":3254},{"className":3253},[],[3255],{"type":65,"value":3256},"CLAUDE.md",{"type":65,"value":874},{"type":59,"tag":169,"props":3259,"children":3260},{},[3261,3263,3268,3270,3345,3347,3353],{"type":65,"value":3262},"For ground-truth on ",{"type":59,"tag":74,"props":3264,"children":3265},{},[3266],{"type":65,"value":3267},"any",{"type":65,"value":3269}," plugin's properties (types, defaults, ranges) and pad caps,\nquery the loaded binary inside the DS container:\n",{"type":59,"tag":949,"props":3271,"children":3273},{"className":980,"code":3272,"language":46,"meta":954,"style":954},"gst-inspect-1.0 nvinfer\ngst-inspect-1.0 nvstreammux\ngst-inspect-1.0 nvurisrcbin   # works on closed-source binary plugins too\ngst-inspect-1.0 | grep ^nv    # list every NVIDIA-specific element this build ships\n",[3274],{"type":59,"tag":99,"props":3275,"children":3276},{"__ignoreMap":954},[3277,3290,3302,3319],{"type":59,"tag":987,"props":3278,"children":3279},{"class":989,"line":990},[3280,3285],{"type":59,"tag":987,"props":3281,"children":3282},{"style":1004},[3283],{"type":65,"value":3284},"gst-inspect-1.0",{"type":59,"tag":987,"props":3286,"children":3287},{"style":1009},[3288],{"type":65,"value":3289}," nvinfer\n",{"type":59,"tag":987,"props":3291,"children":3292},{"class":989,"line":1000},[3293,3297],{"type":59,"tag":987,"props":3294,"children":3295},{"style":1004},[3296],{"type":65,"value":3284},{"type":59,"tag":987,"props":3298,"children":3299},{"style":1009},[3300],{"type":65,"value":3301}," nvstreammux\n",{"type":59,"tag":987,"props":3303,"children":3304},{"class":989,"line":1015},[3305,3309,3314],{"type":59,"tag":987,"props":3306,"children":3307},{"style":1004},[3308],{"type":65,"value":3284},{"type":59,"tag":987,"props":3310,"children":3311},{"style":1009},[3312],{"type":65,"value":3313}," nvurisrcbin",{"type":59,"tag":987,"props":3315,"children":3316},{"style":994},[3317],{"type":65,"value":3318},"   # works on closed-source binary plugins too\n",{"type":59,"tag":987,"props":3320,"children":3321},{"class":989,"line":1030},[3322,3326,3330,3335,3340],{"type":59,"tag":987,"props":3323,"children":3324},{"style":1004},[3325],{"type":65,"value":3284},{"type":59,"tag":987,"props":3327,"children":3328},{"style":1668},[3329],{"type":65,"value":1917},{"type":59,"tag":987,"props":3331,"children":3332},{"style":1004},[3333],{"type":65,"value":3334}," grep",{"type":59,"tag":987,"props":3336,"children":3337},{"style":1009},[3338],{"type":65,"value":3339}," ^nv",{"type":59,"tag":987,"props":3341,"children":3342},{"style":994},[3343],{"type":65,"value":3344},"    # list every NVIDIA-specific element this build ships\n",{"type":65,"value":3346},"\nPlugin naming convention: any element prefixed ",{"type":59,"tag":99,"props":3348,"children":3350},{"className":3349},[],[3351],{"type":65,"value":3352},"nv*",{"type":65,"value":3354}," is NVIDIA DeepStream-specific\n(NVMM-capable, may emit NVTX); everything else is upstream GStreamer-core (no NVMM,\nnever emits DS NVTX). Use this prefix as the first-pass classifier when triaging an\nunfamiliar pipeline.",{"type":59,"tag":169,"props":3356,"children":3357},{},[3358,3360,3366,3368,3373],{"type":65,"value":3359},"The open-source subset of plugin code lives under\n",{"type":59,"tag":99,"props":3361,"children":3363},{"className":3362},[],[3364],{"type":65,"value":3365},"\u002Fopt\u002Fnvidia\u002Fdeepstream\u002Fdeepstream\u002Fsources\u002Fgst-plugins\u002F",{"type":65,"value":3367}," if you need to read the\nimplementation (only some plugins are open — closed ones must be inspected via\n",{"type":59,"tag":99,"props":3369,"children":3371},{"className":3370},[],[3372],{"type":65,"value":3284},{"type":65,"value":3374}," and behaviour observed at runtime).",{"type":59,"tag":3376,"props":3377,"children":3378},"style",{},[3379],{"type":65,"value":3380},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3382,"total":3484},[3383,3398,3412,3426,3438,3455,3470],{"slug":3384,"name":3384,"fn":3385,"description":3386,"org":3387,"tags":3388,"stars":23,"repoUrl":24,"updatedAt":3397},"accelerated-computing-cudf","accelerate data processing with cuDF","Official NVIDIA-authored guidance for NVIDIA cuDF GPU DataFrames, pandas acceleration, dask-cuDF, ETL, joins, groupby, CSV\u002FParquet I\u002FO, nullable semantics, and multi-GPU DataFrame workloads.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3389,3392,3395,3396],{"name":3390,"slug":3391,"type":15},"Data Analysis","data-analysis",{"name":3393,"slug":3394,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},"2026-07-14T05:28:43.176466",{"slug":3399,"name":3399,"fn":3400,"description":3401,"org":3402,"tags":3403,"stars":23,"repoUrl":24,"updatedAt":3411},"aiq-deploy","deploy and manage NVIDIA AI-Q infrastructure","Use when asked to install, deploy, run, validate, troubleshoot, or stop NVIDIA AI-Q Blueprint infrastructure.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3404,3407,3410],{"name":3405,"slug":3406,"type":15},"Deployment","deployment",{"name":3408,"slug":3409,"type":15},"Infrastructure","infrastructure",{"name":9,"slug":8,"type":15},"2026-07-14T05:29:06.667109",{"slug":3413,"name":3413,"fn":3414,"description":3415,"org":3416,"tags":3417,"stars":23,"repoUrl":24,"updatedAt":3425},"aiq-research","conduct deep research with AI-Q","Use when asked to run deep research or AI-Q research through a reachable NVIDIA AI-Q Blueprint backend.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3418,3421,3422],{"name":3419,"slug":3420,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":3423,"slug":3424,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":3427,"name":3427,"fn":3428,"description":3429,"org":3430,"tags":3431,"stars":23,"repoUrl":24,"updatedAt":3437},"amc-run-sample-calibration","run AMC sample dataset calibration","Run end-to-end calibration on the shipped sample dataset (sdg_08_2_sample_data_010926.zip) against a running AMC microservice. Use when user says 'test sample dataset', 'run sample calibration', 'verify AMC install', or 'launch and test'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3432,3433,3434],{"name":3390,"slug":3391,"type":15},{"name":9,"slug":8,"type":15},{"name":3435,"slug":3436,"type":15},"Testing","testing","2026-07-17T05:29:03.913266",{"slug":3439,"name":3439,"fn":3440,"description":3441,"org":3442,"tags":3443,"stars":23,"repoUrl":24,"updatedAt":3454},"amc-run-video-calibration","calibrate video datasets with AutoMagicCalib","Calibrate a new dataset from pre-recorded video files via the AutoMagicCalib REST API. Use when user has local MP4s and says 'calibrate my videos', 'run AMC on these videos', or similar. For RTSP\u002Flive streams, use amc-run-rtsp-calibration instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3444,3447,3450,3451],{"name":3445,"slug":3446,"type":15},"Automation","automation",{"name":3448,"slug":3449,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":3452,"slug":3453,"type":15},"Video","video","2026-07-17T05:28:53.905004",{"slug":3456,"name":3456,"fn":3457,"description":3458,"org":3459,"tags":3460,"stars":23,"repoUrl":24,"updatedAt":3469},"amc-setup-calibration-stack","deploy AutoMagicCalib microservice with Docker","Launch AutoMagicCalib microservice and web UI from NGC release images via Docker Compose. Use when user says 'deploy auto calibration', 'launch auto calibration', 'launch AMC', 'start MS+UI', or 'set up auto-magic-calib'. Requires NGC API key.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3461,3462,3465,3466],{"name":3405,"slug":3406,"type":15},{"name":3463,"slug":3464,"type":15},"Docker","docker",{"name":9,"slug":8,"type":15},{"name":3467,"slug":3468,"type":15},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":3471,"name":3471,"fn":3472,"description":3473,"org":3474,"tags":3475,"stars":23,"repoUrl":24,"updatedAt":3483},"cudaq-guide","develop quantum applications with CUDA-Q","CUDA-Q onboarding guide for installation, test programs, GPU simulation, QPU hardware, and quantum applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3476,3477,3480],{"name":9,"slug":8,"type":15},{"name":3478,"slug":3479,"type":15},"Quantum Computing","quantum-computing",{"name":3481,"slug":3482,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",305,{"items":3486,"total":3636},[3487,3505,3520,3531,3543,3557,3570,3584,3595,3604,3618,3627],{"slug":3488,"name":3488,"fn":3489,"description":3490,"org":3491,"tags":3492,"stars":3502,"repoUrl":3503,"updatedAt":3504},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3493,3496,3499],{"name":3494,"slug":3495,"type":15},"Documentation","documentation",{"name":3497,"slug":3498,"type":15},"MCP","mcp",{"name":3500,"slug":3501,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":3506,"name":3506,"fn":3507,"description":3508,"org":3509,"tags":3510,"stars":3517,"repoUrl":3518,"updatedAt":3519},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3511,3514,3515],{"name":3512,"slug":3513,"type":15},"Containers","containers",{"name":3405,"slug":3406,"type":15},{"name":3516,"slug":47,"type":15},"Python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":3521,"name":3521,"fn":3522,"description":3523,"org":3524,"tags":3525,"stars":3517,"repoUrl":3518,"updatedAt":3530},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3526,3529],{"name":3527,"slug":3528,"type":15},"CI\u002FCD","ci-cd",{"name":3405,"slug":3406,"type":15},"2026-07-14T05:25:59.97109",{"slug":3532,"name":3532,"fn":3533,"description":3534,"org":3535,"tags":3536,"stars":3517,"repoUrl":3518,"updatedAt":3542},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3537,3538,3539],{"name":3527,"slug":3528,"type":15},{"name":3405,"slug":3406,"type":15},{"name":3540,"slug":3541,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":3544,"name":3544,"fn":3545,"description":3546,"org":3547,"tags":3548,"stars":3517,"repoUrl":3518,"updatedAt":3556},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3549,3552,3553],{"name":3550,"slug":3551,"type":15},"Debugging","debugging",{"name":3540,"slug":3541,"type":15},{"name":3554,"slug":3555,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":3558,"name":3558,"fn":3559,"description":3560,"org":3561,"tags":3562,"stars":3517,"repoUrl":3518,"updatedAt":3569},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3563,3566],{"name":3564,"slug":3565,"type":15},"Best Practices","best-practices",{"name":3567,"slug":3568,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":3571,"name":3571,"fn":3572,"description":3573,"org":3574,"tags":3575,"stars":3517,"repoUrl":3518,"updatedAt":3583},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3576,3579,3582],{"name":3577,"slug":3578,"type":15},"Machine Learning","machine-learning",{"name":3580,"slug":3581,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":3585,"name":3585,"fn":3586,"description":3587,"org":3588,"tags":3589,"stars":3517,"repoUrl":3518,"updatedAt":3594},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3590,3593],{"name":3591,"slug":3592,"type":15},"QA","qa",{"name":3435,"slug":3436,"type":15},"2026-07-14T05:25:53.673039",{"slug":3596,"name":3596,"fn":3597,"description":3598,"org":3599,"tags":3600,"stars":3517,"repoUrl":3518,"updatedAt":3603},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3601,3602],{"name":3405,"slug":3406,"type":15},{"name":3408,"slug":3409,"type":15},"2026-07-14T05:25:49.362534",{"slug":3605,"name":3605,"fn":3606,"description":3607,"org":3608,"tags":3609,"stars":3517,"repoUrl":3518,"updatedAt":3617},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3610,3613,3614],{"name":3611,"slug":3612,"type":15},"Code Review","code-review",{"name":3540,"slug":3541,"type":15},{"name":3615,"slug":3616,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":3619,"name":3619,"fn":3620,"description":3621,"org":3622,"tags":3623,"stars":3517,"repoUrl":3518,"updatedAt":3626},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3624,3625],{"name":3591,"slug":3592,"type":15},{"name":3435,"slug":3436,"type":15},"2026-07-14T05:25:54.928983",{"slug":3628,"name":3628,"fn":3629,"description":3630,"org":3631,"tags":3632,"stars":3517,"repoUrl":3518,"updatedAt":3635},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3633,3634],{"name":3445,"slug":3446,"type":15},{"name":3527,"slug":3528,"type":15},"2026-07-30T05:29:03.275638",496]