是什么让GPU程序无法抢占?

时间:2014-04-25 20:06:05

标签: parallel-processing operating-system gpu gpgpu

现代操作系统不支持 GPU ,或多或少地将它们视为普通的I / O设备。在这些领域的一些研究试图管理 GPU 操作系统级别,但他们声称 GPU 程序不可抢占:一旦工作单元启动,就不可能在不破坏通道数据的情况下中断它。 / p>

  

所以我要问的是:

  • 这是不可预留的吗?
  • 如果它是不可预留的,那么它是不可预防的,是因为硬件 设计或原因是什么?
  • 如果它是不可预知的,我们需要使它成为可以预留的吗?

如果有人能给出明确的解释,我将非常感激。

2 个答案:

答案 0 :(得分:1)

GPU始终抢占自己,但只能使用来自同一内核的其他工作项。如果计算单元正在等待内存读取或写入,则它将执行其他工作项。它基本上是单指令多线程。但是,停止工作并切换到不同的工作是没有意义的。您需要跟踪大量的状态(与只有一个寄存器集的串行处理器不同,您可以将所有数量乘以计算单元的数量)。 GPU作业都设计为快速运行,因此通过系统循环作业可以更有效地在部分完成的作业之间切换。总而言之,一些现代GPU将硬件分开,可以同时处理不同的工作。

答案 1 :(得分:0)

存在过度简化的风险:

假设我在GPU中定义了一个实体对象。为简单起见,让我们说对象是一个立方体,GPU保持8个顶点(并且GPU非常慢)。

让我开始轮换。我在每个顶点做了矩阵乘法。我做了3个。然后我被抢先一步。

我的立方体不再是立方体。

如果您希望它成为可预测的,那么您需要某种事务处理与回滚(减慢速度)和硬件支持以提供可抢占的界面。