Skip to main content

Nsight Systems + Nsight Compute profiling pipeline and analyzers.

Project description

ncu_nsys_profiler_pack(bash_metric 子仓库)

本子仓库提供一套以 Bash 为主的 Nsight Systems(nsys)+ Nsight Compute(ncu)采集与汇总流水线,适用于对深度学习推理/训练脚本进行端到端的 GPU 性能画像与瓶颈分析。

一键采集并汇总以下 GPU 性能指标:

  • 算力单元利用率(SM/Tensor/FP32)
  • Cache 命中率(L1/TEX/L2)
  • 内存带宽(DRAM 吞吐占峰值)
  • Warp 效率(Barrier/Short/Long Scoreboard stalls)
  • Kernel 耗时(来自 Nsight Systems cuda_gpu_kern_sum
  • 整体推理瓶颈(基于 SM/DRAM/Cache 的启发式:Compute / Memory / Mixed / Memory/Latency)

目录结构与作用

  • bash_metric/:Python 包源码
    • run_profiling.py:端到端采集(nsys + ncu)主流程,提供 bash-metric-run CLI。
    • parse_and_plot.py:解析 ncu/nsys CSV 并绘制图表,提供 bash-metric-parse CLI。
    • methods/nsys_ncu_all/:全流程捕获与 Top-N 解析脚本(Python + Bash),提供 bash-metric-capture-allbash-metric-analyze-topk CLI。
    • targets.tsv:默认目标列表示例,安装后可作为模板复制修改。
    • fonts/:内置常用中文字体(若系统缺字形时自动注册)。
  • requirements.txt:与 pixi 默认环境一致的依赖清单,可供手工安装参考。
  • out/:示例输出目录(包安装后不会自动创建,可通过环境变量自定义)。

依赖

建议使用 pixi 默认环境(python 3.10 + Nsight CLI)。如单独安装,可执行:

pip install bash-metric

运行时仍需确保系统已安装 nsysncu 并可在 PATH 中找到。

目标列表

编辑 targets.tsv(TSV 四列,使用 TAB 分隔): NAME<TAB>CMD<TAB>WORKDIR<TAB>ENVS

示例:

NAME	CMD	WORKDIR	ENVS
bert_inf	python infer.py --bs 8 --seq 128	./models	CUDA_VISIBLE_DEVICES=0
resnet_train	python train.py --epochs 1	./cv	CUDA_VISIBLE_DEVICES=0

WORKDIRENVS 可留空(用 - 表示)。ENVS 多个变量用逗号分隔,如 A=1,B=2;留空或 - 不会传给 env,避免破坏 PATH。

运行

推荐:安装后直接使用 CLI

bash-metric-run --targets /path/to/targets.tsv --topn 10

完成采集后,可单独解析历史结果:

bash-metric-parse /path/to/out_group --log /path/to/out_group/run.log

若只想执行捕获阶段或后处理阶段,可分别调用:

bash-metric-capture-all --targets xxx.tsv
bash-metric-analyze-topk --targets xxx.tsv

源码运行(任选)

python -m bash_metric.run_profiling
python -m bash_metric.parse_and_plot ./out --log ./out/run.log

运行后默认在 out/ 会看到:

  • nsys/<id>.nsys-rep<id>_cuda_gpu_kern_sum.csv(Kernel 耗时/占比);
  • ncu/<kernel>/*.ncu-rep*_ncu_raw.csv*_metrics_id.csv
  • profile_and_report.log:单一全局日志,记录所有目标的全部阶段输出,重复执行会覆盖重写;
  • summary_*.csv/.mdfigs/*.png

运行阶段与进度打印

bash-metric-run 会将每个目标的执行划分为 6 个阶段,并打印进度:

  1. 准备目录与上下文
  2. nsys 采集
  3. nsys 导出 CSV
  4. 生成 TopN kernel 正则
  5. ncu 采集
  6. ncu 导出 raw CSV

每步开始会打印 [STEP x/6] 开始:...,完成后打印 [STEP x/6] 完成:...;剩余 n 步,失败时打印 [STEP x/6] 失败:... 并依据 CONTINUE_ON_ERROR 决定是否继续。

日志记录与配置

  • 全局日志:out/profile_and_report.log(每次运行覆盖重写)。
  • 自定义路径:运行前设置 GLOBAL_LOG=/path/to/run.log
  • 自定义输出根目录:设置 OUT_DIR(默认 ./out)。
  • 自定义目标表路径:设置 TARGETS_TSV(默认读取脚本同目录的 targets.tsv)。
  • 查看运行过程:
    • tail -f out/profile_and_report.log
    • less +F out/profile_and_report.log

附加开关(方法脚本):

  • NCU_MULTI_RUN:1(默认)逐核运行,多份 .ncu-rep*_raw.csv;0 单次运行合并正则,生成一份 .ncu-rep*_raw.csv
  • BASH_BIN:指定 Bash 解析器(默认 /bin/bash),用于应用命令的 -lc 执行。

重要开关(健壮性与可重复)

  • NVTX 非强依赖:默认 CAPTURE_RANGE=none。若你给应用插了 NVTX,可设:
    • CAPTURE_RANGE=nvtx,并可选 NVTX_NAME="range@domain"(同 nsys -p)。
    • 若使用 NVTX 动态字符串,建议 export NSYS_NVTX_PROFILER_REGISTER_ONLY=0 以捕获非注册字符串。
  • 重复运行/覆盖输出nsys stats 已加 --force-export=true --force-overwrite=true,确保从最新的 .nsys-rep 重新导出并覆盖同名 CSV。
  • ncu 多进程:默认 --target-processes all。需要更强可比性时,可改用 --replay-mode application 与合适的 --app-replay-match
  • ncu 指标集:为兼容不同 ncu 版本,默认使用 --set speed-of-light(当 NCU_FAST=1)或 --set full,避免 section 名称差异造成错误。可通过 NCU_SET 覆盖。
    • 相关开关:NCU_FASTNCU_SETNSYS_TRACENSYS_CAPTURE_RANGE/NSYS_CAPTURE_RANGE_ENDNSYS_DURATIONNSYS_QUIET
  • 缓存/频率控制:默认 --cache-control all --clock-control base 以提高多次回放的一致性;若想保留“真实缓存状态”,可把 cache-control 改为 none

参考(命令出处)

  • Nsight Systems 用户指南(--capture-range/NVTX 捕获、TMPDIRstats 报表/CSV、--force-export--force-overwrite 等)。
  • Nsight Compute CLI 文档(--page raw --csv--import--metrics--kernel-name-base/--kernel-name--target-processes all--cache-control--clock-control、回放与匹配等)。

本子仓库即用于批量采集与汇总 GPU 指标,适合在 ncu_dir 环境中,对 YOLO 或其它脚本进行快速端到端画像。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bash_metric-0.4.0.tar.gz (12.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bash_metric-0.4.0-py3-none-any.whl (12.9 MB view details)

Uploaded Python 3

File details

Details for the file bash_metric-0.4.0.tar.gz.

File metadata

  • Download URL: bash_metric-0.4.0.tar.gz
  • Upload date:
  • Size: 12.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for bash_metric-0.4.0.tar.gz
Algorithm Hash digest
SHA256 49b1201dcc6fa424e1e6e39aa9820c2b68e724308ee02a4c3bce8219bf9bb5dc
MD5 e411d8bc672fc2ae1cdc14296019d834
BLAKE2b-256 5fb65a1e7e6dd1016a6988a5de0407cca5b1387513c970097c404c8c24f62201

See more details on using hashes here.

File details

Details for the file bash_metric-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: bash_metric-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 12.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for bash_metric-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 039c983c86ab753251cfc24e32ab45b6f3d67e8805cf4537940b193e7301a0f6
MD5 18549e61736ed366194143a2aebc28a7
BLAKE2b-256 60a3a789b3b7b5219033aa73de619e2866db649ebcbe5ef87eae43cd443e00b9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page