"请求的全局负载吞吐量"之间的区别是什么?和"全球负载吞吐量"在CUDA

时间:2014-12-15 08:05:56

标签: cuda

在CUDA中,有两个我不太清楚的指标,即“请求的全局负载吞吐量”和“全局负载吞吐量”。

来自What's the difference between "gld/st_throughput" and "dram_read/write_throughput" metrics?我知道全局负载吞吐量和dram负载吞吐量之间的区别,但究竟什么是“请求的全局负载吞吐量”?

如果我想告诉我的CUDA应用程序在全局内存访问中的表现有多好,我应该使用哪个指标?

1 个答案:

答案 0 :(得分:2)

请求的全局加载是程序员编写的加载。这是为了区分内存引擎执行的“有效”全局负载。

例如,当您从全局内存加载32个浮点数时,您请求一个32x4字节的全局加载。如果这32个浮点数在同一个128字节段内,则这32个负载将合并为128字节的单个内存事务。但是如果这些浮点数是分散的,则内存引擎可能必须执行多个事务才能加载所有32个浮点数。在最坏的情况下,所有浮点数彼此超过128个字节,内存引擎将为每个浮点发出1个事务:从全局内存中有效加载32x128个字节,而不是32x4请求。

在相关说明中,指标gld_efficiency定义为100 * gld_requested_throughput / gld_throughput。因此,当所有访问完全合并时,它会达到100%。您可能希望密切关注这些不同的指标,以了解您的应用程序的执行情况。