ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ProgramCU.h
Go to the documentation of this file.
1 // File: ProgramCU.h
3 // Author: Changchang Wu
4 // Description : interface for the ProgramCU classes.
5 // It is basically a wrapper around all the CUDA kernels
6 //
7 // Copyright (c) 2011 Changchang Wu (ccwu@cs.washington.edu)
8 // and the University of Washington at Seattle
9 //
10 // This library is free software; you can redistribute it and/or
11 // modify it under the terms of the GNU General Public
12 // License as published by the Free Software Foundation; either
13 // Version 3 of the License, or (at your option) any later version.
14 //
15 // This library is distributed in the hope that it will be useful,
16 // but WITHOUT ANY WARRANTY; without even the implied warranty of
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 // General Public License for more details.
19 //
21 
22 #ifndef _PROGRAM_CU_H
23 #define _PROGRAM_CU_H
24 
25 class CuTexImage;
26 
27 namespace pba {
28 namespace ProgramCU {
29 
30 int SetCudaDevice(int device);
32 int CheckErrorCUDA(const char* location);
37 void GetBlockConfiguration(unsigned int nblock, unsigned int& bw,
38  unsigned int& bh);
39 
44  unsigned int part = 0, unsigned int skip = 0);
45 void ComputeSAXPY(float a, CuTexImage& texX, CuTexImage& texY,
47 void ComputeSAX(float a, CuTexImage& texX, CuTexImage& result);
48 void ComputeSXYPZ(float a, CuTexImage& texX, CuTexImage& texY, CuTexImage& texZ,
50 float ComputeVectorMax(CuTexImage& vector, CuTexImage& buf);
51 float ComputeVectorSum(CuTexImage& vector, CuTexImage& buf, int skip);
52 double ComputeVectorNorm(CuTexImage& vector, CuTexImage& buf);
53 double ComputeVectorNormW(CuTexImage& vector, CuTexImage& weight,
54  CuTexImage& buf);
55 double ComputeVectorDot(CuTexImage& vector1, CuTexImage& vector2,
56  CuTexImage& buf);
57 
59 void UncompressCamera(int ncam, CuTexImage& camera0, CuTexImage& result);
60 void CompressCamera(int ncam, CuTexImage& camera0, CuTexImage& result);
61 void UpdateCameraPoint(int ncam, CuTexImage& camera, CuTexImage& point,
62  CuTexImage& delta, CuTexImage& new_camera,
63  CuTexImage& new_point, int mode = 0);
64 
67  CuTexImage& jp, CuTexImage& proj_map, CuTexImage& sj,
68  CuTexImage& meas, CuTexImage& cmlist, bool intrinsic_fixed,
69  int radial_distortion, bool shuffle);
71  CuTexImage& proj_map, CuTexImage& proj, int radial);
73  CuTexImage& proj_map, CuTexImage& proj, int radial);
74 
76 
79  CuTexImage& pmap, CuTexImage& cmlist, CuTexImage& jtjd,
80  CuTexImage& jtjdi, bool jc_transpose, int radial,
81  bool add_existing_diagc);
82 void MultiplyBlockConditioner(int ncam, int npoint, CuTexImage& blocks,
83  CuTexImage& vector, CuTexImage& result,
84  int radial, int mode = 0);
85 
88  CuTexImage& proj, int offset);
90  CuTexImage& jx, int offset);
94 
96 void ComputeJX(int point_offset, CuTexImage& x, CuTexImage& jc, CuTexImage& jp,
97  CuTexImage& jmap, CuTexImage& result, int mode = 0);
99  CuTexImage& cmlist, CuTexImage& jp, CuTexImage& pmap,
100  CuTexImage& jte, bool jc_transpose, int mode = 0);
101 void ComputeDiagonalBlock(float lambda, bool dampd, CuTexImage& jc,
102  CuTexImage& cmap, CuTexImage& jp, CuTexImage& pmap,
103  CuTexImage& cmlist, CuTexImage& diag,
104  CuTexImage& blocks, int radial_distortion,
105  bool jc_transpose, bool add_existing_diagc,
106  int mode = 0);
107 
110  CuTexImage& point, CuTexImage& meas, CuTexImage& pjmap,
111  bool intrinsic_fixed, int radial_distortion, int mode = 0);
113  CuTexImage& point, CuTexImage& meas, CuTexImage& cmap,
114  CuTexImage& cmlist, CuTexImage& pmap, CuTexImage& jmap,
115  CuTexImage& jp, bool intrinsic_fixed, int radial_distortion,
116  int mode = 0);
117 void ComputeDiagonalBlock_(float lambda, bool dampd, CuTexImage& camera,
118  CuTexImage& point, CuTexImage& meas,
119  CuTexImage& cmap, CuTexImage& cmlist,
120  CuTexImage& pmap, CuTexImage& jmap, CuTexImage& jp,
121  CuTexImage& sj, CuTexImage& diag, CuTexImage& blocks,
122  bool intrinsic_fixed, int radial_distortion,
123  bool add_existing_diagc, int mode = 0);
124 
125 } // namespace ProgramCU
126 } // namespace pba
127 
128 #endif
int offset
core::Tensor result
Definition: VtkUtils.cpp:76
void ComputeSXYPZ(float a, CuTexImage &texX, CuTexImage &texY, CuTexImage &texZ, CuTexImage &result)
void MultiplyBlockConditioner(int ncam, int npoint, CuTexImage &blocks, CuTexImage &vector, CuTexImage &result, int radial, int mode=0)
float ComputeVectorSum(CuTexImage &vector, CuTexImage &buf, int skip)
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)
void ComputeSQRT(CuTexImage &tex)
void ComputeJQtEC(CuTexImage &pe, CuTexImage &qlist, CuTexImage &wq, CuTexImage &sj, CuTexImage &result)
void ComputeJX_(CuTexImage &x, CuTexImage &jx, CuTexImage &camera, CuTexImage &point, CuTexImage &meas, CuTexImage &pjmap, bool intrinsic_fixed, int radial_distortion, int mode=0)
void ComputeSAX(float a, CuTexImage &texX, CuTexImage &result)
void ComputeVXY(CuTexImage &texX, CuTexImage &texY, CuTexImage &result, unsigned int part=0, unsigned int skip=0)
double ComputeVectorNormW(CuTexImage &vector, CuTexImage &weight, CuTexImage &buf)
void ComputeJX(int point_offset, CuTexImage &x, CuTexImage &jc, CuTexImage &jp, CuTexImage &jmap, CuTexImage &result, int mode=0)
void UncompressCamera(int ncam, CuTexImage &camera0, CuTexImage &result)
int CheckErrorCUDA(const char *location)
void ComputeProjectionQ(CuTexImage &camera, CuTexImage &qmap, CuTexImage &qw, CuTexImage &proj, int offset)
void ClearPreviousError()
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 ComputeRSQRT(CuTexImage &tex)
size_t GetCudaMemoryCap()
void ComputeProjectionX(CuTexImage &camera, CuTexImage &point, CuTexImage &meas, CuTexImage &proj_map, CuTexImage &proj, int radial)
void FinishWorkCUDA()
void ComputeSAXPY(float a, CuTexImage &texX, CuTexImage &texY, CuTexImage &result)
int SetCudaDevice(int device)
void ClearTextureObjectCache()
void ComputeDiagonalQ(CuTexImage &qlistw, CuTexImage &sj, CuTexImage &diag)
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)
double ComputeVectorDot(CuTexImage &vector1, CuTexImage &vector2, CuTexImage &buf)
void CompressCamera(int ncam, CuTexImage &camera0, CuTexImage &result)
void GetBlockConfiguration(unsigned int nblock, unsigned int &bw, unsigned int &bh)
void ComputeProjection(CuTexImage &camera, CuTexImage &point, CuTexImage &meas, CuTexImage &proj_map, CuTexImage &proj, int radial)
float ComputeVectorMax(CuTexImage &vector, CuTexImage &buf)
void ComputeJQX(CuTexImage &x, CuTexImage &qmap, CuTexImage &wq, CuTexImage &sj, CuTexImage &jx, int offset)
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 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 UpdateCameraPoint(int ncam, CuTexImage &camera, CuTexImage &point, CuTexImage &delta, CuTexImage &new_camera, CuTexImage &new_point, 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)
double ComputeVectorNorm(CuTexImage &vector, CuTexImage &buf)
bool ShuffleCameraJacobian(CuTexImage &jc, CuTexImage &map, CuTexImage &result)
void ResetCurrentDevice()
Definition: ConfigBA.cpp:44
Definition: lsd.c:149