0

このプロジェクトは、3D グリッド (ステンシル シミュレーション) を使用してシミュレートされる流体シミュレーションに関するものです。

各ステップで、1 つの面から値を読み取り、計算して 2 番目の面に保存しています。問題は、各ステップでサーフェスへのポインタを交換する必要があるということです (最初の反復では 1 番目のサーフェスから読み取り、2 番目に書き込み、2 番目の反復では 2 番目のサーフェスから読み取り、1 番目に書き込みたいなど)。 )。動的な方法でそれを行うことは可能ですか?今、私はいくつかのif節を使用しています。

たとえば、2D シミュレーションの場合、2 つのレイヤーで 2DlayeredSurface を使用でき、使用するサーフェスを指定できますが、残念ながら 3DlayeredSurface は存在しません。

タイプの配列を作成し、それを index で指すことは可能ですか?

4

1 に答える 1

1

あなたが説明した方法でそれを行うことはできませんが、あなたが話している少数の命令については、予測はうまく機能します。両方のサーフェスをバインドしてから、if ステートメントを記述して、どちらのサーフェスを読み書きするかを決定します。コンパイラは述語命令を発行し、アクティブになるのは 1 つだけです。

同様の戦略を使用して、次のファイルで >2^27 テクスチャ要素を参照します (最大 4 つのテクスチャからの読み取りを予測することにより): https://github.com/ArchaeaSoftware/cudahandbook/blob/master/texturing/tex1dfetch_big.cu

于 2013-01-31T01:55:56.450 に答える