PTX"位桶"寄存器

Dud*_*ude 7 assembly cuda gpgpu ptx

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

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

har*_*ism 8

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

对于某些指令,目标操作数是可选的._可以使用用下划线()表示的"比特桶"操作数来代替目的地寄存器.

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

原子在加载位置的原始值到目的地寄存器d,执行与操作数B和在位置a的值归约运算,并存储在一个位置指定操作的结果,覆盖原始值.

还有一个说明atom:

可以使用"位桶"目标操作数' _' 指定简单的减少.

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

atom.global.add.s32 _, [a], 4
Run Code Online (Sandbox Code Playgroud)

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

atomicAdd(&a, 4);
Run Code Online (Sandbox Code Playgroud)

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