我正在使用一个远程机器,其中有2个GPU,以执行一个Python脚本,其中有CUDA代码。为了找到可以提高代码性能的地方,我尝试使用nvprof。
我已经设置了我的代码,我只想使用远程机器上的两个GPU中的一个,尽管在调用nvprof --profile-child-processes ./myscript.py时,每个GPU上都会启动一个ID相同的进程。
为了只使用一个GPU进行分析,我可以给nvprof提供任何论据吗?
发布于 2017-04-09 08:06:56
正如您已经指出的,只需让分析器运行python解释器,运行脚本,就可以使用CUDA分析器来分析python代码:
nvprof python ./myscript.py对于正在使用的GPU,可以使用CUDA环境变量 CUDA_VISIBLE_DEVICES来限制CUDA运行时API只使用特定的GPU。你可以这样做:
CUDA_VISIBLE_DEVICES="0" nvprof --profile-child-processes python ./myscript.py另外,nvprof是记录在案,也有通过nvprof --help提供的命令行帮助。查看命令行帮助,我看到一个--devices开关,它似乎限制了至少一些功能只使用特定的GPU。你可以试一试:
nvprof --devices 0 --profile-child-processes python ./myscript.py对于较新的GPU,nvprof可能不是最好的分析器选择。您应该能够以类似的方式使用nsight系统,例如:
nsys profile --stats=true python ....其他“较新”的分析器资源是链接这里。
https://stackoverflow.com/questions/43257296
复制相似问题