You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安培、霍珀架构下多线程写入全局内存同一int地址的结果疑问

安培(Ampere)与霍珀架构下多线程写全局内存int地址的原子性问题

结论

在安培和霍珀架构中,多个线程向全局内存同一地址写入32位int类型值时,最终存储的必然是某一个线程写入的完整int值,绝不会出现像[byte1, byte2, byte7, byte8]这样的混合字节情况。

原理

这两种NVIDIA架构对32位对齐的全局内存写操作提供硬件级的原子性保障:每个32位写操作是不可分割的原子操作,要么完整写入某一线程的int值,要么完全不生效。在多线程竞态写的场景下,最终只会有一个线程的写操作完整覆盖目标地址,不会出现部分字节被不同线程写入的情况。

注意事项

  • 上述保障仅针对对齐的32位访问:如果int数据未对齐,或者写入的是更大宽度的类型(比如64位long long),则必须使用CUDA原子操作函数(如atomicExch)来确保操作原子性,否则可能出现部分字节覆盖的问题。
  • 原子性不保证写操作的顺序:最终哪个线程的值被保留是不确定的,完全由硬件调度的竞态结果决定,但可以确定的是结果一定是完整的单个int值。

内容的提问来源于stack exchange,提问作者lei hu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 18:05:59