在GPU中禁用一些SMX的任何可能性



在单个GPU(例如P100)中有56个SMS(流多处理器),并且不同的SMS可能几乎没有相关性。我想知道使用不同的SMS.的应用程序性能变化有任何方法可以禁用某些SMS的某个GPU。我知道CPU提供了相应的机制,但为GPU提供了一个很好的机制。谢谢!

没有CUDA提供的方法可以禁用SM(流多处理器)。由于难度和行为的不同程度,存在一些可能使用间接方法尝试此方法的可能性:

  1. 使用CUDA MPS,并通过仔细控制启动的块数量和这些块的资源利用来启动"完全占据"一个或多个SMS的应用程序。使用CUDA MPS,另一个应用程序可以在同一GPU上运行,并且可以同时运行内核,假设对其进行了足够的护理。这可能不允许对正在测试的应用程序代码进行直接修改(但需要额外的申请启动,以及MPS)。内核持续时间将需要"长",以便在测试的应用程序运行时占据SMS。

  2. 在您的应用程序代码中,通过与正在测试的代码相同的应用程序中启动"虚拟"内核,有效地重新创建了上面项目1中列出的行为,并具有虚拟内核"占用"一个或多个短信。然后测试的应用程序可以启动所需的内核。这应该允许没有MPS的内核并发。

  3. 在您的应用程序代码中,对于正在测试的内核中,修改内核块调度行为,可能会通过Inline PTX使用smid特殊寄存器,以使应用程序内核本身仅利用某些SMS,有效地减少使用的总数。

最新更新