Nvidia Nsys是否有nvprof --profile-all-processes等价参数以并行分析多进程
nsys对多进程捕获的等价支持
NVIDIA Nsight Systems(nsys)从2021.1版本开始提供了--profile-all-processes(可简写为-a)参数,功能和nvprof的同名参数完全等价,可以同时捕获同一环境下所有CUDA进程的性能数据,无需分别生成报告再手动合并。
当前测试的结果说明
你现在得到的时间线结果属于正常情况:
- 你是在MPS关闭的状态下执行测试,CUDA默认对多进程采用GPU时间分片调度策略,不同进程的CUDA Kernel会串行执行,不会出现重叠,总耗时约为单进程执行耗时的2倍。
- 你参考的GTC分享中的并行Kernel效果是开启MPS后的执行表现,MPS会允许多个进程的CUDA上下文同时驻留GPU,支持Kernel并行调度。
操作优化建议
你手动合并多份报告的操作逻辑本身是可行的,但存在时间戳对齐误差的问题,更推荐用全局捕获的方式完成测试,步骤如下:
- 开启MPS服务:执行
nvidia-cuda-mps-control -d启动MPS控制进程,需要确保容器启动时已配置--ipc=host、--privileged权限,否则会启动失败。 - 编写多进程启动脚本,示例如下:
nvcc -o t1034 t1034.cu ./t1034 & ./t1034 wait
- 用nsys全局捕获模式执行脚本:
nsys profile -o mps_test -w true -t cuda,nvtx,osrt,cudnn,cublas -s none -f true -a ./<脚本文件名>.sh
捕获完成后生成的单份报告中会自动包含两个进程的全量性能数据,时间线天然对齐,可以直接看到两个进程Kernel并行执行的效果。
内容的提问来源于stack exchange,提问作者Blaizz
相关产品推荐
相关产品推荐

