Graphite is a GPU-accelerated graph optimization framework based on CUDA. It lets you define an optimization problem in terms of unary, binary, and n-ary constraints, using types defined in C++, which may be useful for applications in robotics and computer vision such as SLAM. It also supports configurable floating point precisions as well as mixed-precision solving.
For more details, refer to the paper.
You need a recent version of the CUDA Toolkit (e.g. >= 12.0), and Eigen3 if you are building examples. Graphite can be built using CMake. A Dockerfile for development is also included, which can be used to create a devcontainer for VS Code (requires the NVIDIA Container Toolkit).
See the examples folder. There are two examples:
circle.cu- Optimizes noisy 2D points along the radius of a circlebal.cu- Performs bundle adjustment
Graphite is released under the MIT License.