如何使用并行nsight知道非合并读/写和库冲突的数量?
此外,当我使用nsight时,我应该注意什么是剖析器?可能导致我的程序变慢的重要字段是什么?
答案 0 :(得分:1)
我不使用NSight,但是您将使用分析器查看的典型字段基本上是:
更具体地说,使用CUDA,你会小心GPU的占用率 其他有趣的值是编译器设置局部变量的方式:寄存器或本地存储器。
最后,您将检查从GPU传输数据和从GPU传回数据所花费的时间,并将其与计算时间进行比较。
答案 1 :(得分:1)
对于银行冲突,您需要观看warp serialization
。请参阅here。
关于监控内存合并的here is a discussion< - 基本上您只需要观看Global Memory Loads/Stores - Coalesced/Uncoalesced
并标记Uncoalesced
。
答案 2 :(得分:0)
微米。 Tibbits基本上回答了你需要知道的银行冲突和非合并内存交易。
关于可能导致我的程序变慢的重要字段/事物(使用Nsight分析器时)的问题:
一个。 CPU绑定 - 您将看到没有发生内核或内存复制但您的应用程序线程(线程状态)为绿色的大区域
湾内存绑定 - 内存执行被阻止在内存上传输到设备或从设备传输。你可以通过查看Memory Row来看到这一点。如果您在Memory Copies中花费了大量时间,那么您应该考虑使用CUDA流来管理您的应用程序。这可以允许您重叠内存传输和内核。在更改代码之前,您应该比较传输和内核的持续时间,并确保获得性能提升。
℃。内核绑定 - 如果大部分应用程序时间都花在等待内核上完成那么你应该切换到“Profile”活动,重新运行你的应用程序,然后开始收集硬件计数器,看看你如何能够实现内核的实际执行时间快点。