... PTX マニュアルに記載されています。それらが何に適しているか、またはどのように使用するかについてのヒントはありません。
誰かもっと知っていますか?共通の概念が欠けているだけですか?
バートのコメントは基本的に正しい。詳細については、PTX ISA 3.1 マニュアルに記載されているように、
一部の命令では、宛先オペランドはオプションです。アンダースコア ( ) で示される「ビット バケット」オペランド
_
は、デスティネーション レジスタの代わりに使用できます。
実際には、3.1 PTX 仕様にリストされて_
いる、有効な宛先である命令のクラスは 1 つだけですatom
。のセマンティクスは次のatom
とおりです。
位置 a の元の値をデスティネーション レジスタ d にアトミックに読み込み、オペランド b と位置 a の値を使用してリダクション演算を実行し、指定された演算の結果を位置 a に格納して、元の値を上書きします。
そして、メモがありatom
ます:
「ビット バケット」デスティネーション オペランド '<code>_' を使用して、単純なリダクションを指定できます。
したがって、例を作成できます。
atom.global.add.s32 _, [a], 4
これは、メモリ location の符号付き整数に 4 を加算し、レジスタ内a
の location の以前の値を返しません。a
したがって、以前の値が必要ない場合は、これを使用できます。コンパイラがこのコードに対してこれを生成すると仮定します
atomicAdd(&a, 4);
これは、atomicAdd の戻り値が変数に格納されていないためです。