如果有四个并发的 CUDA 应用程序在一个 GPU 中竞争资源以便他们可以将工作卸载到显卡上会发生什么?Cuda Programming Guide 3.1 提到有些方法是异步的:
- 内核启动
- 设备设备内存副本
- 64 KB 或更小的内存块的主机设备内存副本
- 由后缀为 Async 的函数执行的内存复制
- 内存集函数调用
它还提到,只要内核属于同一上下文,具有计算能力 2.0 的设备就能够同时执行多个内核。
这种类型的并发是否仅适用于单个 cuda 应用程序中的流,但在有完全不同的应用程序请求 GPU 资源时是不可能的?
这是否意味着并发支持仅在 1 个应用程序(上下文???)中可用,并且 4 个应用程序将仅以并发方式运行,方法可能因 CPU 中的上下文切换而重叠,但 4 个应用程序需要等待直到 GPU 被其他应用程序释放?(即从 app4 启动内核会等到从 app1 启动内核完成..)
如果是这样,这 4 个应用程序如何访问 GPU 资源而不需要长时间等待?