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



我有兴趣在GPU上使用CUDA实现粒子代码,用于一些流体模拟目的。

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

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

我是否表示几个数组上的物理量,如质量[N]、动量[N]、位置x[N]……还是创建

struct particle 
{
mass M;
pressure p;
.
.
}

然后用这些结构创建一个数组。请告知。

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

最新更新