gpt4 book ai didi

c - 确定变量访问的次数

转载 作者:行者123 更新时间:2023-11-30 15:44:10 25 4
gpt4 key购买 nike

我正在优化 CUDA 内核中的共享内存,因此我需要确定哪些变量是存储在共享内存中的最佳候选者(即最常访问的变量)。我知道我可以翻阅代码并计算每个变量被访问的次数,但内核相当复杂,所以我希望有一种方法可以自动执行此操作。我可以让 GDB 计算在通用 CPU 代码中或具体在 cuda-gdb 中访问每个变量的次数吗?或者还有其他有用的分析/调试工具吗?

谢谢。

最佳答案

我不知道有任何性能指标能够计算相关线程访问特定变量的次数。也许您应该查看反汇编的微代码(通过 cuobjdump--dump-sass 选项)来确定这种情况发生了多少次。

不过,请考虑一下,在现代架构(例如 Fermi 和 Kepler)中,共享内存可以被视为“受控的 L1 缓存”,因此如果变量没有从 L1 中逐出,则可能没有必要使用它。要了解全局内存变量从 L1 缓存中逐出的频率,如果您不想手动计算访问次数,可以查看 nvprof 的一些性能指标。例如,您可以考虑 global_cache_replay_overheadgld_efficiencygst_efficiency 等。您可以在 Metrics Reference 找到性能指标的完整列表。 .

最后,正如 @talonmies 所建议的,您可能希望考虑使用寄存器而不是共享内存来存储一些经常使用的变量,以获得更快的访问速度。

关于c - 确定变量访问的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19613208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com