Graphite: A GPU-Accelerated Mixed-Precision Graph Optimization Framework
Shishir Gopinath, Karthik Dantu, Steven Y. Ko
TL;DR
Nonlinear optimization in SLAM is compute- and memory-intensive, especially for large maps. Graphite addresses this by performing GPU-accelerated mixed-precision nonlinear optimization entirely on the GPU using a CUDA C++ interface that preserves user-defined types and enables in-place, batched updates with matrix-free Jacobians. The framework supports analytic and automatic differentiation, plus a mixed-precision solver, to balance accuracy, speed, and memory. Empirical results show Graphite achieves competitive performance to MegBA while using up to 78% less GPU memory, and delivers up to $59\times$ speedups on on-board or embedded GPUs for visual-inertial BA, enabling fast large-scale optimization on desktop and resource-constrained devices.
Abstract
We present Graphite, a GPU-accelerated nonlinear graph optimization framework. It provides a CUDA C++ interface to enable the sharing of code between a realtime application, such as a SLAM system, and its optimization tasks. The framework supports techniques to reduce memory usage, including in-place optimization, support for multiple floating point types and mixed-precision modes, and dynamically computed Jacobians. We evaluate Graphite on well-known bundle adjustment problems and find that it achieves similar performance to MegBA, a solver specialized for bundle adjustment, while maintaining generality and using less memory. We also apply Graphite to global visual-inertial bundle adjustment on maps generated from stereo-inertial SLAM datasets, and observe speed ups of up to 59x compared to a CPU baseline. Our results indicate that our solver enables faster large-scale optimization on both desktop and resource-constrained devices.
