如何使用parallel nsight了解非合并读/写和存储体冲突的数量?
此外,当我使用nsight is a profiler时,我应该看什么?有哪些重要的字段可能会导致我的程序变慢?
发布于 2011-07-05 06:26:50
我不使用NSight,但是您将使用分析器查看的典型字段基本上是:
在functions中使用的
更具体地说,使用CUDA,您将小心您的GPU的占用。
其他有趣的值是编译器设置本地变量的方式:在寄存器中或在本地内存中。
最后,您将检查与GPU来回传输数据所花费的时间,并将其与计算时间进行比较。
发布于 2011-07-05 10:54:27
对于银行冲突,你需要关注warp serialization。参见here。
关于监控内存合并的here is a discussion <--基本上你只需要观察Global Memory Loads/Stores - Coalesced/Uncoalesced并标记Uncoalesced。
发布于 2011-07-07 16:45:26
M.Tibbits基本上回答了你需要知道的关于库冲突和非合并内存事务的问题。
关于(使用Nsight分析器时)需要查看哪些重要字段/内容可能会导致我的程序变慢的问题:
a. CPU限制-您将看到没有发生内核或内存复制的大区域,但您的应用程序线程(线程状态)为绿色
b.内存限制-内存传输到设备或从设备传输时被阻止的内核执行。您可以通过查看内存行来查看这一点。如果您在内存副本上花费了大量时间,那么您应该考虑使用CUDA streams来流水线您的应用程序。这可以让你重叠内存传输和内核。在更改代码之前,您应该比较传输和内核的持续时间,并确保您将获得性能提升。
c.内核绑定-如果应用程序的大部分时间都花在等待内核完成上,那么您应该切换到“配置文件”活动,重新运行您的应用程序,并开始收集硬件计数器,看看如何才能使内核的实际执行时间更快。
https://stackoverflow.com/questions/6574814
复制相似问题