以下是一个示例代码,显示了我要测量的内容。这里我使用 time.perf_counter() 来测量时间。在这种情况下,这是衡量执行时间的正确方法吗?如果不是,正确的方法是什么?我担心的是,GPU 评估是异步的,当 ExecTime 在下面测量时,GPU 执行可能无法完成。
import torch
import torch.nn.functional as F
import time
Device = torch.device("cuda:0")
ProblemSize = 100
NumChannels = 5
NumFilters = 96
ClassType = torch.float32
X = torch.rand(1, NumChannels, ProblemSize, ProblemSize, dtype=ClassType).to(Device)
weights = torch.rand(NumFilters, NumChannels, 10, 10, dtype=ClassType).to(Device)
#warm up
Y = F.conv2d(X, weights)
Y = F.conv2d(X, weights)
#time
t = time.perf_counter()
Y = F.conv2d(X, weights)
ExecTime = time.perf_counter() - t
最佳答案
我认为您正在寻找 pyotrch 的 bottleneck剖析器。
关于python-3.x - 测量在 GPU 上运行的 pytorch 函数的总执行时间的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59596483/