在单个GPU(如P100)中有56个SM(流式多处理器),不同的SM可能几乎没有相关性。我想知道不同SM的应用程序性能变化。所以有任何方法可以禁用某些SM某个GPU。我知道CPU提供了相应的机制,但是还是有一个很好的GPU。谢谢!
答案 0 :(得分:3)
没有CUDA提供的方法来禁用SM(流式多处理器)。由于存在不同程度的难度和行为,使用间接方法尝试这种方法有一些可能性:
使用CUDA MPS,启动一个"占用"完全一个或多个SM,通过仔细控制启动的块数和这些块的资源利用率。使用CUDA MPS,另一个应用程序可以在同一个GPU上运行,并且内核可以同时运行,前提是要充分注意它。这可能不允许直接修改测试中的应用程序代码(但需要额外的应用程序启动,以及MPS)。内核持续时间需要长#34;以便在被测应用程序运行时占用SM。
在您的应用程序代码中,通过启动" dummy"有效地重新创建上面第1项中列出的行为。内核来自与被测代码相同的应用程序,并具有虚拟内核"占用"一个或多个SM。然后,测试中的应用程序可以启动所需的内核。这应该允许在没有MPS的情况下实现内核并发。
在您的应用程序代码中,对于受测试的内核本身,修改内核块调度行为probably using the smid
special register via inline PTX,以使应用程序内核本身仅使用某些SM,从而有效地减少使用中的总数