40 "Points i should have the same device as the linear system.");
44 "Points j should have the same device as the linear system.");
48 "Normals i should have the same device as the linear system.");
53 Ri_normal_ps, i, j, threshold);
56 #ifdef BUILD_CUDA_MODULE
58 FillInRigidAlignmentTermCUDA(AtA, Atb, residual, Ti_ps, Tj_qs,
59 Ri_normal_ps, i, j, threshold);
100 "Points i should have the same device as the linear system.");
104 "Points j should have the same device as the linear system.");
106 if (Ri_normal_ps.
GetDevice() != device) {
108 "Normals i should have the same device as the linear system.");
113 Ri_normal_ps, RjT_Ri_normal_ps, cgrid_idx_ps,
114 cgrid_idx_qs, cgrid_ratio_ps, cgrid_ratio_qs,
117 }
else if (AtA.
IsCUDA()) {
118 #ifdef BUILD_CUDA_MODULE
120 FillInSLACAlignmentTermCUDA(AtA, Atb, residual, Ti_ps, Tj_qs, normal_ps,
121 Ri_normal_ps, RjT_Ri_normal_ps,
122 cgrid_idx_ps, cgrid_idx_qs, cgrid_ratio_ps,
123 cgrid_ratio_qs, i, j, n, threshold);
155 grid_nbs_mask, positions_init,
156 positions_curr, weight, n, anchor_idx);
158 }
else if (AtA.
IsCUDA()) {
159 #ifdef BUILD_CUDA_MODULE
161 FillInSLACRegularizerTermCUDA(
162 AtA, Atb, residual, grid_idx, grid_nbs_idx, grid_nbs_mask,
163 positions_init, positions_curr, weight, n, anchor_idx);
#define AssertTensorDtype(tensor,...)
When CUDA is not enabled, this is a dummy class.
Device GetDevice() const override
void FillInRigidAlignmentTerm(core::Tensor &AtA, core::Tensor &Atb, core::Tensor &residual, const core::Tensor &Ti_ps, const core::Tensor &Tj_qs, const core::Tensor &Ri_normal_ps, int i, int j, float threshold)
void FillInSLACAlignmentTermCPU(core::Tensor &AtA, core::Tensor &Atb, core::Tensor &residual, const core::Tensor &Ti_qs, const core::Tensor &Tj_qs, const core::Tensor &normal_ps, const core::Tensor &Ri_normal_ps, const core::Tensor &RjT_Ri_normal_ps, const core::Tensor &cgrid_idx_ps, const core::Tensor &cgrid_idx_qs, const core::Tensor &cgrid_ratio_qs, const core::Tensor &cgrid_ratio_ps, int i, int j, int n, float threshold)
void FillInSLACRegularizerTermCPU(core::Tensor &AtA, core::Tensor &Atb, core::Tensor &residual, const core::Tensor &grid_idx, const core::Tensor &grid_nbs_idx, const core::Tensor &grid_nbs_mask, const core::Tensor &positions_init, const core::Tensor &positions_curr, float weight, int n, int anchor_idx)
void FillInSLACRegularizerTerm(core::Tensor &AtA, core::Tensor &Atb, core::Tensor &residual, const core::Tensor &grid_idx, const core::Tensor &grid_nbs_idx, const core::Tensor &grid_nbs_mask, const core::Tensor &positions_init, const core::Tensor &positions_curr, float weight, int n, int anchor_idx)
void FillInSLACAlignmentTerm(core::Tensor &AtA, core::Tensor &Atb, core::Tensor &residual, const core::Tensor &Ti_ps, const core::Tensor &Tj_qs, const core::Tensor &normal_ps, const core::Tensor &Ri_normal_ps, const core::Tensor &RjT_Ri_normal_ps, const core::Tensor &cgrid_idx_ps, const core::Tensor &cgrid_idx_qs, const core::Tensor &cgrid_ratio_qs, const core::Tensor &cgrid_ratio_ps, int i, int j, int n, float threshold)
void FillInRigidAlignmentTermCPU(core::Tensor &AtA, core::Tensor &Atb, core::Tensor &residual, const core::Tensor &Ti_qs, const core::Tensor &Tj_qs, const core::Tensor &Ri_normal_ps, int i, int j, float threshold)
Generic file read and write utility for python interface.