我正在尝试编写一个利用CUDA来执行粒子位置更新的简单粒子系统。现在我正在定义一个粒子,其中一个对象的位置由三个浮点值定义,而一个速度也由三个浮点值定义。当更新粒子时,我将为速度的Y分量添加一个常数值来模拟重力,然后将速度添加到当前位置以提供新位置。在内存管理方面,最好是维护两个单独的浮点数组来存储数据或以面向对象的方式进行构造。是这样的:如何在CUDA应用程序中构建数据以获得最佳速度
struct Vector
{
float x, y, z;
};
struct Particle
{
Vector position;
Vector velocity;
};
这似乎是数据的大小是用任一方法(每个浮子4个字节,每向量3个浮筒,每粒子共计24个字节总共2个载体)这似乎是OO相同方法将允许CPU和GPU之间更高效的数据传输,因为我可以使用单个内存复制语句而不是2个(并且从长远来看更多,因为还有其他一些关于粒子的信息,比如Age ,生命期,重量/质量,温度等)然后,这些也只是代码的简单易读性和易于处理它,这也使我倾向于面向对象方法。但是我看到的例子并没有利用结构化数据,所以它让我怀疑这是否是一个原因。
所以问题是哪个更好:单个数据或结构化对象数组?
Err ..为什么不尝试找出? – 2010-02-01 19:58:44
大家好。因为我对这个理论感兴趣,即使我发现一个比另一个更好,我仍然想知道为什么。 – 2010-02-01 20:07:25