3
在大學項目中,我的小組的任務是在CUDA上實施Mesh Based Surface Tracking。爲此,我們需要三角形網格的拓撲數據結構。
在CPU實現中,我會使用類似於半邊或winged-edge數據結構的東西,但在CUDA中,這會導致隨機跳過全局內存,這非常緩慢。 網格的拓撲結構會經常發生變化,所以數據結構也需要能夠動態改變。CUDA網格的高效拓撲數據結構?
CUDA的數據結構是否滿足這些要求?
在大學項目中,我的小組的任務是在CUDA上實施Mesh Based Surface Tracking。爲此,我們需要三角形網格的拓撲數據結構。
在CPU實現中,我會使用類似於半邊或winged-edge數據結構的東西,但在CUDA中,這會導致隨機跳過全局內存,這非常緩慢。 網格的拓撲結構會經常發生變化,所以數據結構也需要能夠動態改變。CUDA網格的高效拓撲數據結構?
CUDA的數據結構是否滿足這些要求?
不是專門針對CUDA的,但是this blog post討論瞭如何實現'矢量託管'半邊數據結構。 這實質上只是一個使用向量實現的半邊數據結構,但是向量緩衝區中的未使用元素標記爲「已死」,並且這些已死的條目與空閒列表鏈接在一起,從而在找到並重新使用死條目時很簡單需要。 空閒列表使您可以避免爲元素節點分配一般內存,並且它在向量中全部「託管」的事實可確保將內容保存在內存中。