gpt4 book ai didi

cuda - 哪些大小是普通加载并存储到 CUDA 原子中的全局内存?

转载 作者:行者123 更新时间:2023-12-02 00:02:03 27 4
gpt4 key购买 nike

在 CUDA 中对全局内存的一般读写是原子的,如果:

  • 这是一个 4 字节的指令? (我想是的)
  • 它是 8 字节还是 16 字节的指令? (我想是的)

至少在 Kepler 和 Fermi 通用 4 字节读取和写入到 Warp 级别上的全局内存原子或 8/16 字节指令在半/四分之一 Warp 级别上原子,如果:

  • 所有 warp 线程都访问同一个 32 字节 L2 事务 block ? (我想是的)
  • Warp 线程访问不同的 32 字节 L2 事务 block ,但所有 Warp 线程访问相同的 128 字节 L2 缓存行? (我假设没有)
  • 所有 warp 线程访问不同的 L2 缓存行? (我假设没有)

如果这些关于 warp 级别原子性的假设中有任何一个是正确的,是否有任何方法可以在不影响 future 计算能力的兼容性的情况下利用这些知识?

最佳答案

读取和写入通常与缓存有关。当事务被发布到全局内存时,CUDA 编程或内存模型中的原子性无法保证,除非使用 atomic 指令。

例如,假设线程 block 中的一个线程在 Kepler 上的 L2 中更新了一个 4 字节的数据。现在,在另一个 warp、threadblock、或 kernel 中的另一个线程可以在缓存行被逐出到全局内存之前更新 L2 中的这 4 个字节中的一个。当缓存行被驱逐到全局内存时,它可能不代表原始线程或什至第二个线程写入的内容(例如,如果出现第三次写入...)。

请记住,L2 是回写缓存,无法禁用,并且不会被全局读写绕过,原子 指令除外。

关于cuda - 哪些大小是普通加载并存储到 CUDA 原子中的全局内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20775033/

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