CUDA分析器使用四个指标报告内核实现的实际吞吐量:
CUDA C最佳实践指南将全局内存加载/存储吞吐量描述为实际吞吐量,并且没有具体说明DRAM读/写吞吐量。
CUPTI用户指南定义:
我理解DRAM读/写吞吐量,因为fb_subp *计数器报告了许多DRAM访问(对于32字节访问递增1)并且为所有SM收集。所以很明显,吞吐量是根据gputime和访问的字节数计算的。
我不了解全局内存吞吐量定义。没有global_load_hit和counter的定义。我不明白为什么在两种情况下都减去l1_cached_local_ld_misses。
在这种背景下,DRAM是否与全局内存不同?
如果我想知道我的内核的实际吞吐量应该使用DRAM还是全局内存吞吐量指标?
答案 0 :(得分:2)
全局内存吞吐量是来自全局地址空间的指令所请求的数据量。 global_load_hits是来自全局请求的L1缓存命中数(缓存行大小为128字节)。公式的其余部分通过计算对L2的所有访问来近似于错过L1的访问的全局吞吐量。
全局内存是一个虚拟内存空间,可以映射到设备内存和系统内存。
DRAM是物理设备存储器(例如卡上的GDDR5)。在L2未命中时访问DRAM。以下虚拟地址空间可以位于DRAM /设备内存中(全局,本地,常量,指令和纹理)。请注意,其中许多内存空间都是虚拟地址空间,最终数据可以驻留在DRAM或系统内存中。
答案 1 :(得分:0)
全局内存加载/存储通过缓存;他们中的一些人可能会发现打击或回写。这将避免访问DRAM。因此,全局内存吞吐量取决于加载/存储请求的数量以及缓存的命中/未命中率。
相比之下,DRAM吞吐量仅根据DRAM访问计算,而不考虑缓存的任何影响。
要测量您的内核吞吐量,您应该使用全局内存吞吐量,因为那些包括缓存效果。