首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪些大小是普通负载并以CUDA原子存储到全局内存?

哪些大小是普通负载并以CUDA原子存储到全局内存?
EN

Stack Overflow用户
提问于 2013-12-25 17:03:21
回答 1查看 541关注 0票数 3

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

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

至少在开普勒和费米通用的4字节读取和写入全局内存原子的翘曲级或8/16字节指令原子在半/四分之一翘曲级别:

  • 所有的翘曲线程都访问相同的32字节L2事务块?(我想是的)
  • Warp线程访问不同的32字节L2事务块,但是所有的翘曲线程都访问相同的128字节L2缓存行?(我想不是吧)
  • 所有的翘曲线程都访问不同的L2缓存行?(我想不是吧)

如果那些关于经纱水平上原子性的假设是正确的,那么有什么方法可以利用这些知识而不冒将来计算能力的风险呢?

EN

回答 1

Stack Overflow用户

发布于 2013-12-25 17:35:18

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

例如,假设线程块中的一个线程在开普勒上更新L2中的4字节数量。现在,另一个线程,在另一个翘曲、线程块或内核中,可以只更新L2中这4个字节中的一个,然后这个缓存就会被驱逐到全局内存中。当cacheline被逐出到全局内存时,它可能不代表原始线程甚至是第二个线程所写的内容(例如,如果有第三个写.)。

请记住,L2是一个写回缓存,不能禁用,并且不会被全局读写所绕过,除非是atomic指令。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20775033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档