GPU耗时测量
GPU耗时测量
|2025-4-20|最后更新: 2025-4-20
type
status
date
slug
summary
tags
category
icon
password
很多情况下,我们需要对GPU执行某段指令的时间进行测量。由于GPU内部指令的执行是异步的,所以我们需要使用CUDA同步来解决这个问题,即:
 
对于这段代码,可能会产生几个问题:
  • 为什么要使用torch.cuda.synchronize()?
可以理解为,对于每个需要cuda执行的操作,它执行到该行代码时,仅仅是把对应的操作加入到了等待队列之中,而并没有真正执行,所以我们需要该方法等待队列中的操作全部执行完毕
  • record()方法实际上是执行了什么操作?
record对应的操作从等待队列中被调用执行时,会给对应的事件加上真正的时间戳,这样就可以在后面elapsed_time()中被计算了
  • 为什么我们要在测量前后都加上synchronize()?
这样可以保证队列的“干净”,测量时队列中只有record和待测量的操作,并在最后等待所有的操作完成。如果不加入synchronize,那么在执行elapsed_time时,record指令可能并没有被真正执行,也就是你拿到了一个假的时间戳(可能是默认值0.0),这样就产生了错误
书生·浦语灵笔2.5-OL调研强化学习自学笔记
Loading...