在CUDA代码中表示粒子的最佳方法

时间:2012-01-05 07:19:57

标签: algorithm cuda

我有兴趣在GPU上使用CUDA实现粒子代码以进行流体模拟。

我的粒子需要有位置,质量,动量,位置和其他一些物理参数的信息。在我的所有模拟中,将具有N个粒子N> = 10 ^ 5

我的问题是,为这些粒子表示数据的最有效方法是什么?

我是否代表质量[N],动量[N],位置x [N]等几个阵列的物理量 ....或者我是否创建

struct particle 
{

mass M;

pressure p;
.
.

}

然后从这些结构中创建一个数组。请指教。

1 个答案:

答案 0 :(得分:4)

使用单独的数组比使用结构数组更受欢迎。对每个数量使用连续内存允许内存合并,而读取任意大小的结构则不允许。通常作为元组读取的一些量(比如位置或速度分量)可能最好使用GPU内部向量类型之一(float2,float4)存储,并在单个内存事务中读取。这将最大化内存吞吐量。