使用Nsight来确定银行冲突和合并

Using Nsight to determine bank conflicts and coalescing

本文关键字:冲突 合并 Nsight 使用      更新时间:2023-10-16

如何使用并行nsight知道非联合读/写和库冲突的数量
此外,当我使用nsight是探查器时,我应该看什么?哪些重要字段可能会导致我的程序速度减慢?

我不使用NSight,但您将使用探查器查看的典型字段基本上是:

  • 内存消耗
  • 在函数中花费的时间

更具体地说,使用CUDA,您将小心GPU的占用率
其他有趣的值是编译器设置本地变量的方式:在寄存器或本地内存中。

最后,您将检查在GPU之间来回传输数据所花费的时间,并将其与计算时间进行比较。

对于银行冲突,您需要监视warp serialization。请参见此处。

这里有一个关于监控记忆融合的讨论<——基本上,您只需要观看Global Memory Loads/Stores - Coalesced/Uncoalesced并标记Uncoalesced

M。Tibbits基本上回答了您需要了解的关于银行冲突和非合并内存事务的信息。

对于可能导致我的程序速度减慢的重要字段/内容(使用Nsight探查器时(的问题:

  1. 使用"应用程序"或"系统跟踪"来确定是CPU绑定、内存绑定还是内核绑定。这可以通过查看时间轴来完成

a。CPU绑定–您将看到没有内核或内存复制发生的大区域,但您的应用程序线程(线程状态(为绿色

b。内存绑定–内核执行在设备之间的内存传输中被阻止。您可以通过查看内存行来看到这一点。如果您在内存复制上花费了大量时间,那么您应该考虑使用CUDA流来传输应用程序。这可以使内存传输和内核重叠。在更改代码之前,您应该比较传输和内核的持续时间,并确保您将获得性能提升。

c。内核绑定–如果应用程序的大部分时间都花在等待内核完成上,那么您应该切换到"配置文件"活动,重新运行应用程序,并开始收集硬件计数器,看看如何加快内核的实际执行时间。