7

... PTX マニュアルに記載されています。それらが何に適しているか、またはどのように使用するかについてのヒントはありません。

誰かもっと知っていますか?共通の概念が欠けているだけですか?

4

1 に答える 1

8

バートのコメントは基本的に正しい。詳細については、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 の戻り値が変数に格納されていないためです。

于 2012-10-18T05:31:12.363 に答える