在大学项目中,我的小组的任务是在CUDA上实施Mesh Based Surface Tracking。 为此,我们需要一个三角网格的拓扑数据结构 在CPU实现中,我会使用类似于半边缘或winged-edge数据结构的东西,但是在CUDA上,这导致随机跳过全局内存,这非常慢。 网格拓扑将经常变化,因此数据结构也需要能够动态变化。
是否有满足这些要求的CUDA数据结构?
答案 0 :(得分:1)
不是专门针对CUDA,而是this blog post谈论如何实施托管的“#”矢量'半边数据结构。 这基本上只是用向量实现的半边数据结构,但是向量缓冲区中未使用的元素被标记为“死”,并且这些死对象以自由列表的形式链接在一起。在需要时很容易找到并重用死表项。 空闲列表使您可以避免元素节点的一般内存分配,以及它全部被托管的事实。在向量中确保东西保存在内存附近。