我有一个应用程序,我想在多个进程之间共享一个 GPU。也就是说,这些进程中的每一个都将创建自己的 CUDA 或 OpenCL 上下文,以相同的 GPU 为目标。根据 Fermi 白皮书 [1],应用程序级别的上下文切换不到 25 微秒,但启动在 GPU 上启动时会被有效地序列化——因此 Fermi 不能很好地解决这个问题。根据 Kepler 白皮书 [2],有一种称为 Hyper-Q 的东西,它允许来自多个 CUDA 流、MPI 进程或进程中的线程的多达 32 个同时连接。
我的问题:有没有人在 Kepler GPU 上尝试过这个并验证了它的内核在从不同的进程调度时是同时运行的?这只是 CUDA 功能,还是也可以在 Nvidia GPU 上与 OpenCL 一起使用?AMD 的 GPU 是否支持类似的东西?
[2] http://www.nvidia.com/content/PDF/kepler/NVIDIA-Kepler-GK110-Architecture-Whitepaper.pdf