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-runCLI。parse_and_plot.py:解析 ncu/nsys CSV 并绘制图表,提供bash-metric-parseCLI。methods/nsys_ncu_all/:全流程捕获与 Top-N 解析脚本(Python + Bash),提供bash-metric-capture-all与bash-metric-analyze-topkCLI。targets.tsv:默认目标列表示例,安装后可作为模板复制修改。fonts/:内置常用中文字体(若系统缺字形时自动注册)。
requirements.txt:与 pixi 默认环境一致的依赖清单,可供手工安装参考。out/:示例输出目录(包安装后不会自动创建,可通过环境变量自定义)。
依赖
建议使用 pixi 默认环境(python 3.10 + Nsight CLI)。如单独安装,可执行:
pip install bash-metric
运行时仍需确保系统已安装 nsys 与 ncu 并可在 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
WORKDIR或ENVS可留空(用-表示)。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/.md与figs/*.png。
运行阶段与进度打印
bash-metric-run 会将每个目标的执行划分为 6 个阶段,并打印进度:
- 准备目录与上下文
- nsys 采集
- nsys 导出 CSV
- 生成 TopN kernel 正则
- ncu 采集
- 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_FAST、NCU_SET、NSYS_TRACE、NSYS_CAPTURE_RANGE/NSYS_CAPTURE_RANGE_END、NSYS_DURATION、NSYS_QUIET。
- 相关开关:
- 缓存/频率控制:默认
--cache-control all --clock-control base以提高多次回放的一致性;若想保留“真实缓存状态”,可把cache-control改为none。
参考(命令出处)
- Nsight Systems 用户指南(
--capture-range/NVTX 捕获、TMPDIR、stats报表/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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49b1201dcc6fa424e1e6e39aa9820c2b68e724308ee02a4c3bce8219bf9bb5dc
|
|
| MD5 |
e411d8bc672fc2ae1cdc14296019d834
|
|
| BLAKE2b-256 |
5fb65a1e7e6dd1016a6988a5de0407cca5b1387513c970097c404c8c24f62201
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
039c983c86ab753251cfc24e32ab45b6f3d67e8805cf4537940b193e7301a0f6
|
|
| MD5 |
18549e61736ed366194143a2aebc28a7
|
|
| BLAKE2b-256 |
60a3a789b3b7b5219033aa73de619e2866db649ebcbe5ef87eae43cd443e00b9
|