Table of Contents
Fetching ...

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.

Graphite: A GPU-Accelerated Mixed-Precision Graph Optimization Framework

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 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.

Paper Structure

This paper contains 14 sections, 8 equations, 1 figure, 4 tables.

Figures (1)

  • Figure 1: A CUDA thread calculates $\frac{\partial f}{\partial x_3}(\vec{x})$ by replacing the input with a vector of dual numbers and writes it to the corresponding Jacobian column.