torch.cuda.synchronize()# synchronize 等待所有 GPU 任务处理完才返回 CPU 主线程
starter, ender = torch.cuda.Event(enable_timing=True), torch.cuda.Event(enable_timing=True)# 设置用于测量时间的 cuda Event, 这是PyTorch 官方推荐的接口
starter.record()
preds = self.voxel_decoder(mlvl_feats, img_metas=img_metas)
ender.record()
torch.cuda.synchronize() # 等待GPU任务完成
use_time = starter.elapsed_time(ender) # 从 starter 到 ender 用时 单位ms
torch.cuda.synchronize()# synchronize 等待所有 GPU 任务处理完才返回 CPU 主线程
t0 = time.time()
preds = self.voxel_decoder(mlvl_feats, img_metas=img_metas)
t1 = time.time()
torch.cuda.synchronize() # 等待GPU任务完成
use_time = t1-t0 # 从 start 到 end 用时 单位s
- 上述两种方式结果基本一样,注意要使用torch.cuda.synchronize()才准确。