5

有没有一种方法可以在两个独立的支持 OpenCL 的程序之间共享 GPU,或者更具体地说,在两个同时需要 GPU 执行 OpenCL 内核的独立进程之间共享 GPU?如果是这样,这是如何完成的?

4

2 回答 2

4

这取决于你所说的共享。

通常,您可以在同一个 GPU 上创建 2 个创建 OpenCL 设备的进程。然后,驱动程序/操作系统/GPU 有责任确保一切正常。

也就是说,大多数实现都会对 GPU 执行进行时间切片以实现这一点(就像它发生在图形上一样)。

我觉得这不是你所追求的。您可以用用例扩展您的问题吗?

于 2010-08-05T11:06:15.867 回答
4

当前的 GPU(NVidia 的 Fermi 除外)不支持同时执行多个内核。此外,到目前为止,GPU 还不支持抢占式多任务处理;这是完全合作的!内核的执行不能暂停并在以后继续。因此,任何基于时间的 GPU 共享的粒度都取决于内核的执行时间。

如果您有多个需要 GPU 访问的程序正在运行,那么您应该确保您的内核具有较短的运行时间(经验法则是 < 100 毫秒),以便 GPU 时间可以在需要 GPU 周期的内核之间进行时间分割。这样做也很重要,否则主机系统的图形将变得非常迟钝,因为它们也需要 GPU 访问。这可能会导致无限或长循环中的内核显然会使系统崩溃。

于 2010-08-28T22:23:23.050 回答