...在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/