9#include <gtsam/nonlinear/NonlinearFactorGraph.h>
10#include <gtsam_points/factors/nonlinear_factor_gpu.hpp>
11#include <gtsam_points/optimizers/linearization_hook.hpp>
15namespace gtsam_points {
29 int size()
const override {
return factors.size(); }
34 void clear()
override { factors.clear(); }
58 bool add(gtsam::NonlinearFactor::shared_ptr factor)
override;
64 void add(
const gtsam::NonlinearFactorGraph& factors)
override;
70 void linearize(
const gtsam::Values& linearization_point)
override;
76 void error(
const gtsam::Values& values)
override;
83 std::vector<gtsam::GaussianFactor::shared_ptr>
calc_linear_factors(
const gtsam::Values& linearization_point)
override;
91 DeviceBuffer(
const DeviceBuffer&) =
delete;
92 DeviceBuffer& operator=(
const DeviceBuffer&) =
delete;
94 void resize(
size_t size, CUstream_st* stream);
95 unsigned char* data() {
return buffer; }
96 const unsigned char* data()
const {
return buffer; }
99 unsigned char* buffer;
105 int num_linearizations;
108 std::vector<NonlinearFactorGPU::shared_ptr> factors;
110 std::vector<unsigned char, Eigen::aligned_allocator<unsigned char>> linearization_input_buffer_cpu;
111 std::vector<unsigned char, Eigen::aligned_allocator<unsigned char>> linearization_output_buffer_cpu;
112 std::unique_ptr<DeviceBuffer> linearization_input_buffer_gpu;
113 std::unique_ptr<DeviceBuffer> linearization_output_buffer_gpu;
115 std::vector<unsigned char, Eigen::aligned_allocator<unsigned char>> evaluation_input_buffer_cpu;
116 std::vector<unsigned char, Eigen::aligned_allocator<unsigned char>> evaluation_output_buffer_cpu;
117 std::unique_ptr<DeviceBuffer> evaluation_input_buffer_gpu;
118 std::unique_ptr<DeviceBuffer> evaluation_output_buffer_gpu;
This class holds a set of GPU-based NonlinearFactors and manages their linearization and cost evaluat...
Definition nonlinear_factor_set_gpu.hpp:20
bool add(gtsam::NonlinearFactor::shared_ptr factor) override
Add a factor to the GPU factor set if it is a GPU-based one.
void clear() override
Remove all factors.
Definition nonlinear_factor_set_gpu.hpp:34
std::vector< gtsam::GaussianFactor::shared_ptr > calc_linear_factors(const gtsam::Values &linearization_point) override
Calculate linearized factors.
int size() const override
Number of GPU factors in this set.
Definition nonlinear_factor_set_gpu.hpp:29
void error(const gtsam::Values &values) override
Compute all GPU-based cost evaluation tasks.
void add(const gtsam::NonlinearFactorGraph &factors) override
Add all GPU-based factors in a factor graph to the GPU factor set.
int evaluation_count() const override
Number of issued cost evaluation tasks.
Definition nonlinear_factor_set_gpu.hpp:51
void linearize(const gtsam::Values &linearization_point) override
Compute all GPU-based linearization tasks.
int linearization_count() const override
Number of issued linearization tasks.
Definition nonlinear_factor_set_gpu.hpp:45
void clear_counts() override
Reset linearization and cost evaluation counts.