Investigating automatic vectorization for real-time 3D scene understanding
Simultaneous Localization And Mapping (SLAM) is the problem of building a representation of a geometric space while simultaneously updating the agent’s location within the space. While this seems to be a chicken-and-egg problem, several algorithms have appeared in recent years that approximately and iteratively solve this problem. SLAM algorithms are tailored to the available resources, hence aimed at balancing the precision of the map with the constraints that the computational platform imposes and the desire to obtain real-time results. Working with KinectFusion, an established SLAM implementation, we explore in this work the vectorization opportunities present in this scenario, with the goal of using the CPU to its full potential. Using ISPC, an automatic vectorization tool, we produce a partially vectorized version of KinectFusion. Along the way we explore a number of optimization strategies and their interaction with automatic vectorization, we introduce the notion of control locality and we explore vectorizing loops higher up in the control flow graph.