如果有四个并发的CUDA应用程序在单个GPU上竞争资源,它们可以将工作卸载到图形卡中,那会发生什么呢?Cuda编程指南3.1提到了某些异步方法:
- 内核启动 - 设备设备内存复制 - 小于64 KB的内存块的主机设备内存复制 - 以Async结尾的函数执行的内存复制 - 内存设置函数调用
此外,它还提到,具有计算能力2.0的设备能够同时执行多个内核,只要内核属于同一上下文即可。
这种并发类型是否仅适用于单个CUDA应用程序中的流,而不可能在完全不同的应用程序请求GPU资源时发生?
这是否意味着并发支持仅在1个应用程序(上下文?)中可用,并且4个应用程序将以方法可能被CPU上下文切换重叠的方式并发运行,但需要等待其他应用程序释放GPU?(例如,来自app1的内核启动等待来自app4的内核启动完成..)
如果是这种情况,这4个应用程序如何访问GPU资源而不会遭受长时间的等待时间?
- 内核启动 - 设备设备内存复制 - 小于64 KB的内存块的主机设备内存复制 - 以Async结尾的函数执行的内存复制 - 内存设置函数调用
此外,它还提到,具有计算能力2.0的设备能够同时执行多个内核,只要内核属于同一上下文即可。
这种并发类型是否仅适用于单个CUDA应用程序中的流,而不可能在完全不同的应用程序请求GPU资源时发生?
这是否意味着并发支持仅在1个应用程序(上下文?)中可用,并且4个应用程序将以方法可能被CPU上下文切换重叠的方式并发运行,但需要等待其他应用程序释放GPU?(例如,来自app1的内核启动等待来自app4的内核启动完成..)
如果是这种情况,这4个应用程序如何访问GPU资源而不会遭受长时间的等待时间?