|
|
| SchurComplement (Hessian< T, S > &H) |
| |
|
void | build_structure (Graph< T, S > *graph, StreamPool &streams) |
| |
|
void | update_values (Graph< T, S > *graph, StreamPool &streams) |
| |
|
thrust::device_vector< T > & | get_b_Schur () |
| |
|
void | build_indices (Graph< T, S > *graph, StreamPool &streams) |
| |
|
template<typename I > |
| void | build_csc_structure (Graph< T, S > *graph, CSCMatrix< S, I > &matrix) |
| |
|
template<typename I > |
| void | update_csc_values (Graph< T, S > *graph, CSCMatrix< S, I > &matrix) |
| |
|
void | compute_landmark_update (Graph< T, S > *graph, StreamPool &streams, T *xl, T *xp) |
| |
|
void | setup_schur_vector_multiply (Graph< T, S > *graph, StreamPool &streams) |
| |
|
void | execute_schur_vector_multiply (Graph< T, S > *graph, StreamPool &streams, T *vec_out, const T *vec_in) |
| |
|
|
size_t | lowest_eliminated_block_col |
| |
|
size_t | pose_col_start |
| |
|
size_t | landmark_col_start |
| |
|
size_t | num_block_columns |
| |
|
size_t | pose_dim |
| |
|
size_t | landmark_dim |
| |
|
thrust::device_vector< S > | values |
| |
|
thrust::device_vector< P > | diagonal_values |
| |
|
Hessian< T, S > & | H |
| |
|
std::unordered_map< BlockCoordinates, size_t > | block_indices |
| |
|
std::unordered_map< BlockCoordinates, size_t > | diagonal_indices |
| |
|
std::unordered_map< size_t, std::vector< BlockCoordinates > > | diagonal_coords_by_dim |
| |
|
std::unordered_map< ProductDim, thrust::device_vector< ops::MulOp< S > > > | mul_ops |
| |
|
std::unordered_map< ProductDim, std::vector< ops::MulOp< S > > > | h_mul_ops |
| |
|
std::unordered_map< MatVecDim, thrust::device_vector< ops::HplMatVecOp > > | hpl_vec_ops |
| |
|
std::unordered_map< MatVecDim, std::vector< ops::HplMatVecOp > > | h_hpl_vec_ops |
| |
|
std::unordered_map< MatVecDim, thrust::device_vector< ops::HplMatVecOp > > | hplt_vec_ops |
| |
|
std::unordered_map< MatVecDim, std::vector< ops::HplMatVecOp > > | h_hplt_vec_ops |
| |
|
std::unordered_map< MatVecDim, thrust::device_vector< ops::HplMatVecOp > > | schur_vec_ops |
| |
|
std::unordered_map< MatVecDim, std::vector< ops::HplMatVecOp > > | h_schur_vec_ops |
| |
|
std::unordered_map< MatVecDim, thrust::device_vector< ops::HplMatVecOp > > | schur_vec_t_ops |
| |
|
std::unordered_map< MatVecDim, std::vector< ops::HplMatVecOp > > | h_schur_vec_t_ops |
| |
|
std::unordered_map< MatVecDim, thrust::device_vector< ops::BlockCopyOp > > | hpp_copy_ops |
| |
|
std::unordered_map< MatVecDim, std::vector< ops::BlockCopyOp > > | h_hpp_copy_ops |
| |
|
thrust::host_vector< P * > | A_ptrs |
| |
|
thrust::host_vector< P * > | Ainv_ptrs |
| |
|
std::unordered_map< size_t, thrust::device_vector< P * > > | A_ptrs_device_by_dim |
| |
|
std::unordered_map< size_t, thrust::device_vector< P * > > | Ainv_ptrs_device_by_dim |
| |
|
std::unordered_map< size_t, thrust::device_vector< int > > | info_by_dim |
| |
|
std::unordered_map< size_t, thrust::device_vector< size_t > > | diagonal_value_offsets_by_dim |
| |
|
std::unordered_map< size_t, thrust::device_vector< size_t > > | landmark_local_offsets_by_dim |
| |
|
thrust::host_vector< size_t > | h_block_col_pointers |
| |
|
thrust::host_vector< size_t > | h_block_row_indices |
| |
|
thrust::host_vector< size_t > | h_block_offsets |
| |
|
thrust::device_vector< size_t > | d_col_pointers |
| |
|
thrust::device_vector< size_t > | d_row_indices |
| |
|
thrust::device_vector< size_t > | d_offsets |
| |
|
thrust::device_vector< size_t > | d_schur_offsets |
| |
|
thrust::device_vector< size_t > | scalar_to_block_map |
| |
|
thrust::device_vector< T > | b_Schur |
| |
|
thrust::device_vector< T > | l_workspace |
| |
|
thrust::device_vector< T > | p_workspace |
| |
|
thrust::device_vector< T > | diagonal_workspace |
| |
|
thrust::device_vector< size_t > | d_pose_counts |
| |
|
thrust::device_vector< size_t > | d_pair_counts |
| |
|
thrust::device_vector< size_t > | d_pair_offsets |
| |
|
thrust::device_vector< BlockCoordinates > | d_pairs |
| |
|
thrust::host_vector< BlockCoordinates > | h_pairs |
| |
|
thrust::device_vector< ops::SchurMulTuple > | d_mul_tuples |
| |
|
thrust::host_vector< ops::SchurMulTuple > | h_mul_tuples |
| |
|
std::vector< size_t > | block_dims |
| |
|
thrust::host_vector< size_t > | h_diagonal_offsets |
| |
|
thrust::host_vector< size_t > | h_local_offsets |
| |
|
thrust::host_vector< size_t > | h_schur_offsets |
| |
|
std::vector< BlockCoordinates > | block_coords |
| |
|
cublasHandle_t | handle |
| |
|
|
void | build_schur_structure (Graph< T, S > *graph, StreamPool &streams) |
| |
|
void | setup_schur_multiplication (Graph< T, S > *graph, StreamPool &streams) |
| |
|
void | execute_Hpp_copy (Graph< T, S > *graph, StreamPool &streams) |
| |
|
void | setup_Hpp_copy (Graph< T, S > *graph, StreamPool &streams) |
| |
|
void | execute_schur_multiplication (Graph< T, S > *graph, StreamPool &streams) |
| |
|
void | setup_diagonal_inverse_multiply (Graph< T, S > *graph, StreamPool &streams) |
| |
|
void | execute_diagonal_inverse_multiply (Graph< T, S > *graph, StreamPool &streams, T *vec_out, T *vec_in) |
| |
|
void | setup_Hpl_vector_multiply (Graph< T, S > *graph, StreamPool &streams) |
| |
|
void | execute_Hpl_vector_multiply (Graph< T, S > *graph, StreamPool &streams, T *vec_out, T *vec_in) |
| |
|
void | setup_b_Schur_computation (Graph< T, S > *graph, StreamPool &streams) |
| |
|
void | execute_b_Schur_computation (Graph< T, S > *graph, StreamPool &streams, T *b_Schur) |
| |
|
void | setup_HplT_vector_multiply (Graph< T, S > *graph, StreamPool &streams) |
| |
|
void | execute_HplT_vector_multiply (Graph< T, S > *graph, StreamPool &streams, T *vec_out, T *vec_in) |
| |
|
void | build_diagonal_structure (Graph< T, S > *graph, StreamPool &streams) |
| |
|
void | setup_batched_inverse_buffers (StreamPool &streams) |
| |
|
void | execute_block_diagonal_inversion (Graph< T, S > *graph, StreamPool &streams) |
| |
template<typename T, typename S>
class graphite::SchurComplement< T, S >
Class for computing the explicit Schur complement.