是否有可能在GPU中禁用某些SMX?

时间:2017-12-25 12:49:35

标签: linux cuda gpu nvidia

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

1 个答案:

答案 0 :(得分:3)

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

  1. 使用CUDA MPS,启动一个"占用"完全一个或多个SM,通过仔细控制启动的块数和这些块的资源利用率。使用CUDA MPS,另一个应用程序可以在同一个GPU上运行,并且内核可以同时运行,前提是要充分注意它。这可能不允许直接修改测试中的应用程序代码(但需要额外的应用程序启动,以及MPS)。内核持续时间需要长#34;以便在被测应用程序运行时占用SM。

  2. 在您的应用程序代码中,通过启动" dummy"有效地重新创建上面第1项中列出的行为。内核来自与被测代码相同的应用程序,并具有虚拟内核"占用"一个或多个SM。然后,测试中的应用程序可以启动所需的内核。这应该允许在没有MPS的情况下实现内核并发。

  3. 在您的应用程序代码中,对于受测试的内核本身,修改内核块调度行为probably using the smid special register via inline PTX,以使应用程序内核本身仅使用某些SM,从而有效地减少使用中的总数