Skip to content

sfu-rsl/graphite

Repository files navigation

Graphite

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.

⚠️ Graphite is experimental. There may be several bugs, performance issues, and limitations. The interface and implementation may change over time.

For more details, refer to the paper.

Building

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

Examples

See the examples folder. There are two examples:

  • circle.cu - Optimizes noisy 2D points along the radius of a circle
  • bal.cu - Performs bundle adjustment

License

Graphite is released under the MIT License.

About

Graphite is a GPU-accelerated framework for non-linear optimization over graphs.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages