Download include/colmap/lib/PBA/ProgramCU.h from camenduru/ceres-solver: direct link, hf CLI and curl.
- Browser
- Download file 6.58 kB
-
https://huggingface.co/camenduru/ceres-solver/resolve/main/include/colmap/lib/PBA/ProgramCU.h
- Command line
-
hf download hf://camenduru/ceres-solver/include/colmap/lib/PBA/ProgramCU.h
-
curl -L -o ProgramCU.h https://huggingface.co/camenduru/ceres-solver/resolve/main/include/colmap/lib/PBA/ProgramCU.h
6.58 kB
| //////////////////////////////////////////////////////////////////////////// | |
| // File: ProgramCU.h | |
| // Author: Changchang Wu | |
| // Description : interface for the ProgramCU classes. | |
| // It is basically a wrapper around all the CUDA kernels | |
| // | |
| // Copyright (c) 2011 Changchang Wu (ccwu@cs.washington.edu) | |
| // and the University of Washington at Seattle | |
| // | |
| // This library is free software; you can redistribute it and/or | |
| // modify it under the terms of the GNU General Public | |
| // License as published by the Free Software Foundation; either | |
| // Version 3 of the License, or (at your option) any later version. | |
| // | |
| // This library is distributed in the hope that it will be useful, | |
| // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| // General Public License for more details. | |
| // | |
| //////////////////////////////////////////////////////////////////////////////// | |
| class CuTexImage; | |
| namespace pba { | |
| namespace ProgramCU { | |
| int SetCudaDevice(int device); | |
| size_t GetCudaMemoryCap(); | |
| int CheckErrorCUDA(const char* location); | |
| void FinishWorkCUDA(); | |
| void ClearPreviousError(); | |
| void ResetCurrentDevice(); | |
| void GetBlockConfiguration(unsigned int nblock, unsigned int& bw, | |
| unsigned int& bh); | |
| ////////////////////////////////////////////////////////// | |
| void ComputeSQRT(CuTexImage& tex); | |
| void ComputeRSQRT(CuTexImage& tex); | |
| void ComputeVXY(CuTexImage& texX, CuTexImage& texY, CuTexImage& result, | |
| unsigned int part = 0, unsigned int skip = 0); | |
| void ComputeSAXPY(float a, CuTexImage& texX, CuTexImage& texY, | |
| CuTexImage& result); | |
| void ComputeSAX(float a, CuTexImage& texX, CuTexImage& result); | |
| void ComputeSXYPZ(float a, CuTexImage& texX, CuTexImage& texY, CuTexImage& texZ, | |
| CuTexImage& result); | |
| float ComputeVectorMax(CuTexImage& vector, CuTexImage& buf); | |
| float ComputeVectorSum(CuTexImage& vector, CuTexImage& buf, int skip); | |
| double ComputeVectorNorm(CuTexImage& vector, CuTexImage& buf); | |
| double ComputeVectorNormW(CuTexImage& vector, CuTexImage& weight, | |
| CuTexImage& buf); | |
| double ComputeVectorDot(CuTexImage& vector1, CuTexImage& vector2, | |
| CuTexImage& buf); | |
| ////////////////////////////////////////////////////////////////////////// | |
| void UncompressCamera(int ncam, CuTexImage& camera0, CuTexImage& result); | |
| void CompressCamera(int ncam, CuTexImage& camera0, CuTexImage& result); | |
| void UpdateCameraPoint(int ncam, CuTexImage& camera, CuTexImage& point, | |
| CuTexImage& delta, CuTexImage& new_camera, | |
| CuTexImage& new_point, int mode = 0); | |
| ///////////////////////////////////////////////////////////////////////// | |
| void ComputeJacobian(CuTexImage& camera, CuTexImage& point, CuTexImage& jc, | |
| CuTexImage& jp, CuTexImage& proj_map, CuTexImage& sj, | |
| CuTexImage& meas, CuTexImage& cmlist, bool intrinsic_fixed, | |
| int radial_distortion, bool shuffle); | |
| void ComputeProjection(CuTexImage& camera, CuTexImage& point, CuTexImage& meas, | |
| CuTexImage& proj_map, CuTexImage& proj, int radial); | |
| void ComputeProjectionX(CuTexImage& camera, CuTexImage& point, CuTexImage& meas, | |
| CuTexImage& proj_map, CuTexImage& proj, int radial); | |
| bool ShuffleCameraJacobian(CuTexImage& jc, CuTexImage& map, CuTexImage& result); | |
| ///////////////////////////////////////////////////////////// | |
| void ComputeDiagonal(CuTexImage& jc, CuTexImage& cmap, CuTexImage& jp, | |
| CuTexImage& pmap, CuTexImage& cmlist, CuTexImage& jtjd, | |
| CuTexImage& jtjdi, bool jc_transpose, int radial, | |
| bool add_existing_diagc); | |
| void MultiplyBlockConditioner(int ncam, int npoint, CuTexImage& blocks, | |
| CuTexImage& vector, CuTexImage& result, | |
| int radial, int mode = 0); | |
| //////////////////////////////////////////////////////////////////////////////// | |
| void ComputeProjectionQ(CuTexImage& camera, CuTexImage& qmap, CuTexImage& qw, | |
| CuTexImage& proj, int offset); | |
| void ComputeJQX(CuTexImage& x, CuTexImage& qmap, CuTexImage& wq, CuTexImage& sj, | |
| CuTexImage& jx, int offset); | |
| void ComputeJQtEC(CuTexImage& pe, CuTexImage& qlist, CuTexImage& wq, | |
| CuTexImage& sj, CuTexImage& result); | |
| void ComputeDiagonalQ(CuTexImage& qlistw, CuTexImage& sj, CuTexImage& diag); | |
| ////////////////////////////////////////////////////////////////////////// | |
| void ComputeJX(int point_offset, CuTexImage& x, CuTexImage& jc, CuTexImage& jp, | |
| CuTexImage& jmap, CuTexImage& result, int mode = 0); | |
| void ComputeJtE(CuTexImage& pe, CuTexImage& jc, CuTexImage& cmap, | |
| CuTexImage& cmlist, CuTexImage& jp, CuTexImage& pmap, | |
| CuTexImage& jte, bool jc_transpose, int mode = 0); | |
| void ComputeDiagonalBlock(float lambda, bool dampd, CuTexImage& jc, | |
| CuTexImage& cmap, CuTexImage& jp, CuTexImage& pmap, | |
| CuTexImage& cmlist, CuTexImage& diag, | |
| CuTexImage& blocks, int radial_distortion, | |
| bool jc_transpose, bool add_existing_diagc, | |
| int mode = 0); | |
| ///////////////////////////////////////////////////////////////////// | |
| void ComputeJX_(CuTexImage& x, CuTexImage& jx, CuTexImage& camera, | |
| CuTexImage& point, CuTexImage& meas, CuTexImage& pjmap, | |
| bool intrinsic_fixed, int radial_distortion, int mode = 0); | |
| void ComputeJtE_(CuTexImage& e, CuTexImage& jte, CuTexImage& camera, | |
| CuTexImage& point, CuTexImage& meas, CuTexImage& cmap, | |
| CuTexImage& cmlist, CuTexImage& pmap, CuTexImage& jmap, | |
| CuTexImage& jp, bool intrinsic_fixed, int radial_distortion, | |
| int mode = 0); | |
| void ComputeDiagonalBlock_(float lambda, bool dampd, CuTexImage& camera, | |
| CuTexImage& point, CuTexImage& meas, | |
| CuTexImage& cmap, CuTexImage& cmlist, | |
| CuTexImage& pmap, CuTexImage& jmap, CuTexImage& jp, | |
| CuTexImage& sj, CuTexImage& diag, CuTexImage& blocks, | |
| bool intrinsic_fixed, int radial_distortion, | |
| bool add_existing_diagc, int mode = 0); | |
| } // namespace ProgramCU | |
| } // namespace pba | |