2012-01-05 5 views
1

私は、流体シミュレーションの目的でCUDAを使用してGPUにパーティクルコードを実装することに興味があります。CUDAコードでパーティクルを表現する最良の方法

私のパーティクルには、位置、質量、運動量、位置、その他の物理的パラメータなどの情報が必要です。私のシミュレーションではN個のパーティクルがありますN> = 10^5

私の質問は、これらのパーティクルのデータを表現する最も効率的な方法は何ですか?

Iは、[N]の質量のようないくつかのアレイ上の物理量を表す運動量[N]、positionx [N] ....またはI

struct particle 
{ 

mass M; 

pressure p; 
. 
. 

} 

を作成してアレイを作成しますかこれらの構造体のうちの1つ。お知らせ下さい。

答えて

4

構造体の配列を使用するよりも、別々の配列を使用する方が適しています。それぞれの量に連続したメモリを使用すると、メモリの合体​​が可能になります。通常、タプル(位置や速度成分など)として読み取られる量は、GPUの固有のベクトル型(float2、float4)のいずれかを使用して保存し、単一のメモリトランザクションで読み取るのが最適です。これにより、メモリスループットが最大化されます。

関連する問題