7

...只是在PTX 手册中提到。没有关于它们有什么好处或如何使用它们的提示。

有人知道更多吗?我只是错过了一个共同的概念吗?

4

1 回答 1

8

巴特的评论基本上是对的。更详细地说,如PTX ISA 3.1 手册中所述,

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

实际上,在 3.1 PTX 规范中只列出了一类指令,它_是有效目的地:atom. 以下是 的语义atom

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

并且有一个注释atom

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

所以,我们可以构造一个例子:

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

这会将 4 添加到内存位置的有符号整数a,而不是返回a寄存器中位置的先前值。所以如果你不需要之前的值,你可以使用这个。我假设编译器会为此代码生成这个

atomicAdd(&a, 4);

因为 atomicAdd 的返回值没有存储到变量中。

于 2012-10-18T05:31:12.363 回答