如何“SIMD-fy”搜索空间分层数据结构(如k-d-trees,octree等)的查询?

时间:2014-08-04 15:32:57

标签: optimization data-structures simd

有效实施基于CPU的空间数据结构的SIMD加速搜索查询的策略是什么?例如,一个光线查询,它返回存储(引用)球体的八叉树中所有相交球体的列表。这包括两个主要障碍:SIMD加速查找树中的哪些对象需要检查交叉点(例如,在八叉树中,检查八叉树的节点AABB),然后基于SIMD的实现与找到的对象进行交叉测试。给定要测试交集的对象列表,后一个问题似乎更容易解决(这是一个与所选数据结构没有任何关系的问题),但前者似乎是一个更难的问题。

在一个最佳情况下,我想(例如)检查与4(8,16等等)光线的交叉点,一次检查存储在数据结构中的任何光线。

这对我来说似乎很难,因为在这种情况下SIMD根据定义需要不同的查询元素(例如假设的8光线查询集中的每条光线)来执行相同的代码,但是分层数据结构都是关于使用的分支机构可以快速减少必要的测试集。它甚至可能吗?

或者,是否存在特别适合这种并行性的空间数据结构?

0 个答案:

没有答案