现代操作系统不支持 GPU ,或多或少地将它们视为普通的I / O设备。在这些领域的一些研究试图管理 GPU 操作系统级别,但他们声称 GPU 程序不可抢占:一旦工作单元启动,就不可能在不破坏通道数据的情况下中断它。 / p>
所以我要问的是:
如果有人能给出明确的解释,我将非常感激。
答案 0 :(得分:1)
GPU始终抢占自己,但只能使用来自同一内核的其他工作项。如果计算单元正在等待内存读取或写入,则它将执行其他工作项。它基本上是单指令多线程。但是,停止工作并切换到不同的工作是没有意义的。您需要跟踪大量的状态(与只有一个寄存器集的串行处理器不同,您可以将所有数量乘以计算单元的数量)。 GPU作业都设计为快速运行,因此通过系统循环作业可以更有效地在部分完成的作业之间切换。总而言之,一些现代GPU将硬件分开,可以同时处理不同的工作。
答案 1 :(得分:0)
存在过度简化的风险:
假设我在GPU中定义了一个实体对象。为简单起见,让我们说对象是一个立方体,GPU保持8个顶点(并且GPU非常慢)。
让我开始轮换。我在每个顶点做了矩阵乘法。我做了3个。然后我被抢先一步。
我的立方体不再是立方体。
如果您希望它成为可预测的,那么您需要某种事务处理与回滚(减慢速度)和硬件支持以提供可抢占的界面。