【问题标题】:What's the difference between "requested global load throughput" and "global load throughput" in CUDACUDA中“请求的全局负载吞吐量”和“全局负载吞吐量”有什么区别
【发布时间】:2015-02-13 07:00:17
【问题描述】:

在CUDA中,有两个指标我不是很明白,分别是“请求的全局负载吞吐量”和“全局负载吞吐量”。

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

如果我想知道我的 CUDA 应用程序在全局内存访问中的表现如何,我应该使用哪个指标?

【问题讨论】:

  • @ParkYoung-Bae 排在第二位。请把它写成答案。

标签: cuda


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-06-09
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 2023-03-24
    相关资源
    最近更新 更多