在双GPU环境下如何为Nvidia Visual Profiler指定nvprof的devices选项?
我太懂这种麻烦了——双GPU环境下,nvprof因为认不出那块老的NVS 315直接卡壳,还要拆硬件或者禁用设备,完全没必要!用nvprof的设备指定参数就能轻松搞定,不用动任何硬件或设备管理器设置,步骤超简单:
第一步:确认目标GPU的设备ID
先打开命令提示符(CMD)或者PowerShell,运行下面的命令查看所有GPU的信息:nvidia-smi
输出里会列出每块GPU的详情,找到你的GTX 1060对应的设备ID(通常是GPU 0或GPU 1这样的标识,数字就是ID)。比如你可能会看到:
GPU 0: GeForce GTX 1060 6GB (UUID: GPU-xxxxxx)
GPU 1: NVS 315 (UUID: GPU-yyyyyy)
那这里GTX 1060的ID就是0。
第二步:用--devices参数指定GPU运行nvprof
不管你是直接用命令行 profiling,还是通过Nvidia Visual Profiler启动,都可以指定只分析支持的GPU:
命令行方式
把你原来的nvprof命令加上--devices参数,替换成刚才找到的GTX 1060的设备ID就行。比如原本的命令是:nvprof your_cuda_application.exe
修改后变成:nvprof --devices 0 your_cuda_application.exe
图形界面(Nvidia Visual Profiler)方式
如果习惯用可视化工具,在创建新的profiling会话时,找到Devices配置项,只勾选GTX 1060,取消勾选NVS 315,然后再启动分析就可以了。
为什么这个方法能解决问题?
你的问题根源在于:nvprof默认会尝试检测系统里的所有GPU,但NVS 315是比较老旧的型号,CUDA Toolkit 9.0对应的nvprof版本不支持它,导致整个profiling流程直接中断。通过指定设备,nvprof只会聚焦在你选中的、兼容的GTX 1060上,完全跳过不支持的NVS 315,自然就能正常完成性能分析了。
内容的提问来源于stack exchange,提问作者Tyson Hilmer

