由于GPU上的一些初始化工作,第一个cudaMalloc调用很慢(如0.2秒).是否有任何单独进行初始化的功能,以便我可以分开时间?cudaSetDevice似乎将时间缩短到0.15秒,但仍然没有消除所有init开销.
启动CUDA运行时需要一定的时间来协调设备和主机的UVM存储器映射; 看到:
现在,有人建议我使用持久模式可以显着减轻这种现象.以什么方式?我的意思是,当启用持久性模式时,会发生什么,或者不会发生什么,并且存在使用CUDA的进程?
文件说:
持久性模式是用户可设置的驱动程序属性的术语,即使没有客户端连接到目标GPU,也会保持目标GPU的初始化.
但是 - "保持初始化"是什么意思?稍后,关于持久性守护进程的部分(与持久性模式不同)说:
只要一个或多个客户端打开设备文件,GPU状态就会保持在驱动程序中.一旦所有客户端关闭了设备文件,除非启用持久性模式,否则将卸载GPU状态.
究竟什么是卸载?到哪里卸货?它与内存大小有什么关系?如果在系统上没有发生任何重大事件,为什么需要花费这么多时间来加载它呢?