...在PTX manual中刚刚提到。没有任何暗示说明它们有什么好处或如何使用。

有谁知道更多吗?我只是缺少一个共同的概念吗?

最佳答案

巴特的评论基本上是正确的。更详细地,如PTX ISA 3.1 manual中所述,


对于某些指令,目标操作数是可选的。 “位桶”操作数
下划线(_)表示的符号可以代替目标寄存器使用。


在3.1 PTX规范中,实际上只有一类指令_是有效的目标:atom。以下是atom的语义:


将位置a的原始值原子加载到目标寄存器d中,对操作数b和位置a中的值执行归约运算,并将指定操作的结果存储在位置a中,覆盖原始值。


还有atom的注释:


可以通过使用“位存储桶”目标操作数“ _”来指定简单的缩减。


因此,我们可以构造一个示例:

atom.global.add.s32 _, [a], 4


这将在内存位置a处的有符号整数加4,而不在寄存器中返回位置a的先前值。因此,如果您不需要先前的值,则可以使用此值。我假设编译器将为此代码生成此代码

atomicAdd(&a, 4);


因为atomicAdd的返回值不会存储到变量中。

关于assembly - PTX“位桶”寄存器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12945991/

10-11 16:40