前天实验室老铁突然给我发来消息
原来是之前在服务器跑的一个程序cpu占比超过了1000%,明显就是有操作在cpu耗时太大,.并且肉眼检查了code之后,发现模型运算都是在gpu中运行的,于是上网搜索了一下,看到了下面了工具,mark一下:
查看你定义操作的时间花销,autograd 的 profiler 提供内视每个操作在GPU和CPU的花销,对于CPU通过profile, 基于nvprof通过使用emit_nvtx
from torch.autograd import Variable
import torch
x = Variable(torch.randn(1, 1), requires_grad=True)
with torch.autograd.profiler.profile() as prof:
y = x ** 2
y.backward()
# NOTE: some columns were removed for brevity
print(prof)
结果如下(没有使用gpu):
但是我用上述方法的时候,即使在gpu上运行,发现CUDA时间也是0.000us,在论坛上搜到了下面的回答:
于是我在with torch.autograd.profiler.profile(uascuda=True) as prof:加了use_cuda=True,结果如下:
希望大家可以用这个工具帮助分析。