在cuda编程中,发现调用cuda文件总耗时一百多ms,而纯kernel计算时间才3ms。
时间都去哪了?
查资料,trouble shooting,最后才发现这多出来的时间,就是第一次调用cuda api的时间:隐式cuda初始化,加载上下文…
目前还没找到什么好方法,只能提前做好初始化,把这段时间给隐藏掉(实际在整个代码执行中仍然存在):
- 调用.cu文件前提前初始化
cudaSetDevice(0);
cudaFree(0);
2.Linux下将驱动加载的默认模式改成“持久保存”
以 root 模式运行:
nvidia-smi -pm 1
参考文献
[1] CUDA runtime API 第一次启动时,缓慢的问题
[2] cudamalloc 比 cudamemcpy 慢吗?
[3] 空闲状态下 NVIDIA-SMI的GPU使用率异常