gpt4 book ai didi

c - 我们是否需要考虑 CUDA 的缓存抖动?

转载 作者:太空宇宙 更新时间:2023-11-03 23:53:29 24 4
gpt4 key购买 nike

我不熟悉 GPU 内存缓存的工作原理,因此想知道与 CPU 相关的内存访问在时间和空间上接近的假设是否也适用于 GPU。也就是说,在 CUDA C 中编程,我是否需要考虑 C 的行优先数组存储格式以防止缓存抖动?

非常感谢。

最佳答案

是的,非常喜欢。

假设您要为每个线程获取 4 字节整数。

场景一

每个线程正在获取一个整数及其线程 ID 的索引。这意味着线程 0 正在获取 a[0],线程 1 正在获取 a[1] 等等......与 GPU 一样,它将获取 128 字节的缓存行。巧合的是,warp 是 32 个线程,因此 32*4 = 128 字节。这意味着对于一个 warp,它将一次从内存中提取请求。

场景二

如果线程以完全随机的顺序获取,索引之间的距离大于 128 字节。它必须发出 32 个 128 字节的内存请求。这意味着您将为每个 warp 填充缓存 32 倍的内存,如果您的问题很大,您的缓存将比场景一多 32 次失效。

这意味着,如果您在场景一中请求通常驻留在缓存中的内存,那么在场景二中,它很可能必须通过来自全局内存的另一个内存请求来解决。

关于c - 我们是否需要考虑 CUDA 的缓存抖动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14095397/

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