1

我正在尝试围绕三角网格的每个点计算某个统计数据。执行计算的函数本身接受一个点(6 个浮点数:x,y,z 坐标;nx,ny,nz normal )和一个由 10 个网格邻居组成的数组作为输入。目前,我以一种非常简单的方式将这些数据传递给 GPU:点坐标 [x,y,z,x1,y1,z1,x2,y2,z2,..] 的一维数组(坐标每个点后面跟着它的 10 个邻居的坐标)和另一个用于法线的一维数组,以相同的方式排列。

通过对这两个数组进行简单的指针运算来访问要由特定线程处理的数据。

显然,这在内存和计算方面效率低下。在“香草”非 CUDA 实现中,我将使用填充点结构的稀疏邻接矩阵。是否可以用 CUDA 做类似的事情?

4

1 回答 1

1

您可以传递一个结构数组,其中一个结构存储一个点的 x、y、z 和 nx、ny、nz 坐标。然后数组将存储一个点及其邻居的相应内容。如果我是对的,CUDA 非常喜欢 AOS(结构数组)。

于 2013-06-16T09:12:54.550 回答