Optimization “我怎么能?”;SIMD fy“;对空间分层数据结构(如k-d树、八叉树等)的搜索查询?

Optimization “我怎么能?”;SIMD fy“;对空间分层数据结构(如k-d树、八叉树等)的搜索查询?,optimization,data-structures,simd,Optimization,Data Structures,Simd,对于基于CPU的空间数据结构的SIMD加速搜索查询的高效实现,有哪些策略?例如,一个光线查询,返回存储(引用)球体的八叉树中所有相交球体的列表。这包括两个主要障碍:SIMD加速查找树中哪些对象需要进行交叉检查的过程(例如,在八叉树中,对照八叉树的节点AABBs进行检查),然后基于SIMD使用找到的对象实施实际交叉测试。给定一个要测试相交的对象列表,后一个问题似乎更容易解决(这是一个与所选数据结构无关的问题),但前一个问题似乎更难解决 在最佳情况下,我只想(例如)根据数据结构中存储的任何内容,立即

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

在最佳情况下,我只想(例如)根据数据结构中存储的任何内容,立即检查4条(8、16等)光线的交点

这对我来说似乎很困难,因为根据定义,在本例中SIMD需要不同的查询元素(例如,假设的8射线查询集中的每个射线)来执行相同的代码,但分层数据结构都是关于使用分支来快速减少必要的测试集。有可能吗


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

您几乎可以肯定地“SSE fy”单独检查。例如,一个点有4个分量(如果使用第4个1表示点而不是向量),一个平面有4个分量(有4个常数与平面方程关联)。您可以对这两个值进行点选,以获得从标准化平面方程到平面的距离,对于非标准化平面方程,您可以获得一个不等式。点积可以是“SSE fyed”。在每个对象级别上应该有其他类似的SSE优化。@Apriori是的,我刚刚注意到问题中的一个错误。我想讨论的实际问题是如何简化查找需要检查相交对象的过程,例如检查光线集与八叉树的AABBs的相交。我希望能够同时使用多条射线来实现这一点。