PTX“位桶”寄存器

时间:2012-10-18 01:55:02

标签: assembly cuda gpgpu ptx

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

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

1 个答案:

答案 0 :(得分:8)

巴特的评论基本上是正确的。更详细地说,如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的返回值没有存储到变量中。