我正在尝试计算三角网格的每个点周围的某个统计量。执行计算的函数本身接受一个点(6个浮点数:x,y,z坐标; nx,ny,nz正常)和10个网格邻居的数组作为输入。 目前,我正在以非常简单的方式将这些数据传递给GPU:点坐标的一维数组[x,y,z,x1,y1,z1,x2,y2,z2,..](坐标为每个点后跟其10个邻居的坐标)和另一个法线的1D阵列,以相同的方式排列。
通过对这两个数组的简单指针算法来访问特定线程要处理的数据。
显然,这是低效的内存和计算方式。 在'vanilla'非CUDA实现中,我将使用填充了点结构的稀疏邻接矩阵。 是否有可能与CUDA做类似的事情?
答案 0 :(得分:1)
您可以传递一个结构数组,其中一个结构存储一个点的x,y,z和nx,ny,nz坐标。然后数组将存储一个点及其邻居的相应内容。如果我是对的,CUDA非常喜欢AOS(结构阵列)。