
- 使用
cudaEvent_t来进行计量
- 预热,先跑10到20次,将GPU从待机状态提高到最高性能状态
- 多次迭代,取总时间的平均值
- 通过
nvidia-smi -lgc 1500锁定频率(可以写在shell脚本中。)
- L2缓存污染排查,如果重复使用一个数据,可能导致L2缓存命中率偏高。最好是每次迭代时访问不同的内存区域,或者在迭代间隙flush缓存
- 如果在循环内部写了
cudaDeviceSynchronize(),你测到的是“Kernel 运行时间 + 驱动调度时间 + CPU 唤醒时间”,这会导致结果偏小。