Graphite: A GPU-Accelerated Mixed-Precision Graph Optimization Framework
About
We present Graphite, a GPU-accelerated nonlinear least squares graph optimization framework. It provides a CUDA C++ interface to enable the sharing of code between a real-time 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 framework enables faster large-scale optimization on both desktop and resource-constrained devices.
Related benchmarks
| Task | Dataset | Result | Rank | |
|---|---|---|---|---|
| Full-inertial Bundle Adjustment | TUM-VI outdoors1 | Final chi^22.9112 | 10 | |
| Full-inertial Bundle Adjustment | TUM-VI outdoors3 | Final χ²1.9439 | 10 | |
| Full-inertial Bundle Adjustment | TUM-VI outdoors2 | Final χ²3.3731 | 10 | |
| Bundle Adjustment | BAL Dubrovnik 16 | MSE0.43 | 7 | |
| Bundle Adjustment | BAL Trafalgar 21 | MSE1.67 | 7 | |
| Bundle Adjustment | BAL Venice 1778 | MSE0.67 | 7 | |
| Bundle Adjustment | BAL Final-4585 | MSE1.13 | 7 | |
| Bundle Adjustment | BAL Ladybug-49 | MSE0.85 | 7 | |
| Bundle Adjustment | BAL Final-13682 | MSE1.5 | 5 |