在CUDA中,有两个度量标准我不太清楚,那就是“请求的全局负载吞吐量”和“全局负载吞吐量”。
从throughput" metrics?中我知道全局负载吞吐量和dram负载吞吐量之间的区别,但是“请求的全局负载吞吐量”到底是什么呢?
如果我想知道我的CUDA应用程序在全局内存访问中的表现有多好,我应该使用哪一种度量?
发布于 2014-12-15 14:48:55
所请求的全局负载是您作为程序员编写的负载。这是为了区别于内存引擎执行的“有效”全局负载。
例如,当您从全局内存加载32块浮点数时,您请求的是32x4字节的全局加载。如果这32个浮动位于相同的128个字节段中,那么这32个负载将合并成128个字节的单个内存事务。但是,如果这些浮点数是分散的,内存引擎可能需要执行几个事务来加载所有32个浮点数。在最坏的情况下,所有浮点数都超过128个字节,内存引擎将在每个浮点数上发出一个事务:从全局内存中有效加载32x128字节,而不是请求32x4。
相关的一点是,度量gld_efficiency被定义为100 * gld_requested_throughput / gld_throughput。因此,当您的所有访问都完美地结合在一起时,它将达到100%。您可能希望关注这些不同的度量标准,以查看应用程序的性能。
https://stackoverflow.com/questions/27479688
复制相似问题