Xmipp  v3.23.11-Nereus
Public Member Functions | Public Attributes | List of all members
TransformMatrix< T > Class Template Reference

#include <cuda_xmipp_utils.h>

Public Member Functions

 TransformMatrix ()
 
 TransformMatrix (myStreamHandle &myStream, size_t _Ndim, size_t _Xdim=3, size_t _Ydim=3, size_t _Zdim=1)
 
template<typename T1 >
void resize (const TransformMatrix< T1 > &array, myStreamHandle &myStream)
 
void resize (myStreamHandle &myStream, size_t _Ndim, size_t _Xdim=3, size_t _Ydim=3, size_t _Zdim=1)
 
bool isEmpty ()
 
void clear ()
 
 ~TransformMatrix ()
 
void initialize (myStreamHandle &myStream)
 
void setTranslation (float *posX, float *posY, float *d_out_max, myStreamHandle &myStream)
 
void setRotation (float *ang, myStreamHandle &myStream)
 
void copyMatrix (TransformMatrix< float > &lastMatrix, myStreamHandle &myStream)
 
void copyMatrixToCpu (myStreamHandle &myStream)
 
void copyOneMatrixToCpu (float *&matrixCpu, int idxCpu, int idxGpu, myStreamHandle &myStream)
 

Public Attributes

size_t Xdim
 
size_t Ydim
 
size_t Zdim
 
size_t Ndim
 
size_t yxdim
 
size_t zyxdim
 
size_t nzyxdim
 
T * d_data
 
T * h_data
 

Detailed Description

template<typename T>
class TransformMatrix< T >

Definition at line 96 of file cuda_xmipp_utils.h.

Constructor & Destructor Documentation

◆ TransformMatrix() [1/2]

template<typename T>
TransformMatrix< T >::TransformMatrix ( )
inline

Definition at line 103 of file cuda_xmipp_utils.h.

◆ TransformMatrix() [2/2]

template<typename T>
TransformMatrix< T >::TransformMatrix ( myStreamHandle myStream,
size_t  _Ndim,
size_t  _Xdim = 3,
size_t  _Ydim = 3,
size_t  _Zdim = 1 
)
inline

Definition at line 110 of file cuda_xmipp_utils.h.

111  {
113  d_data=NULL;
114  h_data=NULL;
115  resize(myStream,_Ndim, _Xdim, _Ydim, _Zdim);
116  }
void resize(const TransformMatrix< T1 > &array, myStreamHandle &myStream)

◆ ~TransformMatrix()

template<typename T>
TransformMatrix< T >::~TransformMatrix ( )
inline

Definition at line 134 of file cuda_xmipp_utils.h.

135  {
136  clear();
137  }

Member Function Documentation

◆ clear()

template<typename T >
template void TransformMatrix< T >::clear ( )

Definition at line 183 of file cuda_xmipp_utils.cpp.

184 {
185  if (d_data!=NULL)
186  gpuFree((void*) d_data);
187  if (h_data!=NULL)
188  gpuErrchk(cudaFreeHost(h_data));
190  d_data=NULL;
191  h_data=NULL;
192 }
#define gpuErrchk(code)
Definition: cuda_asserts.h:31
void gpuFree(void *d_data)

◆ copyMatrix()

template<typename T>
void TransformMatrix< T >::copyMatrix ( TransformMatrix< float > &  lastMatrix,
myStreamHandle myStream 
)
inline

Definition at line 158 of file cuda_xmipp_utils.h.

159  {
160  if (lastMatrix.isEmpty())
161  lastMatrix.resize(myStream, Ndim, 3, 3, 1);
162 
163  gpuCopyFromGPUToGPUStream(d_data, lastMatrix.d_data, nzyxdim*sizeof(float), myStream);
164  }
void gpuCopyFromGPUToGPUStream(void *d_dataFrom, void *d_dataTo, size_t Nbytes, myStreamHandle &myStream)
void resize(const TransformMatrix< T1 > &array, myStreamHandle &myStream)

◆ copyMatrixToCpu()

template<typename T>
void TransformMatrix< T >::copyMatrixToCpu ( myStreamHandle myStream)
inline

Definition at line 166 of file cuda_xmipp_utils.h.

167  {
168  gpuCopyFromGPUToCPUStream(d_data, h_data, nzyxdim*sizeof(float), myStream);
169  }
void gpuCopyFromGPUToCPUStream(void *d_data, void *data, size_t Nbytes, myStreamHandle &myStream)

◆ copyOneMatrixToCpu()

template<typename T>
void TransformMatrix< T >::copyOneMatrixToCpu ( float *&  matrixCpu,
int  idxCpu,
int  idxGpu,
myStreamHandle myStream 
)
inline

Definition at line 171 of file cuda_xmipp_utils.h.

172  {
173  gpuCopyFromGPUToCPUStream(&d_data[9*idxGpu], &matrixCpu[9*idxCpu], 9*sizeof(float), myStream);
174  }
void gpuCopyFromGPUToCPUStream(void *d_data, void *data, size_t Nbytes, myStreamHandle &myStream)

◆ initialize()

template<typename T>
void TransformMatrix< T >::initialize ( myStreamHandle myStream)
inline

Definition at line 139 of file cuda_xmipp_utils.h.

140  {
141  initializeIdentity(d_data, h_data, Ndim, myStream);
142  }
void initializeIdentity(float *d_data, float *h_data, int Ndim, myStreamHandle &myStream)

◆ isEmpty()

template<typename T>
bool TransformMatrix< T >::isEmpty ( )
inline

Definition at line 127 of file cuda_xmipp_utils.h.

128  {
129  return d_data==NULL && h_data==NULL;
130  }

◆ resize() [1/2]

template<typename T>
template<typename T1 >
void TransformMatrix< T >::resize ( const TransformMatrix< T1 > &  array,
myStreamHandle myStream 
)
inline

Definition at line 119 of file cuda_xmipp_utils.h.

120  {
121 
122  resize(myStream, array.Ndim, array.Xdim, array.Ydim, array.Zdim);
123  }
void resize(const TransformMatrix< T1 > &array, myStreamHandle &myStream)

◆ resize() [2/2]

template<typename T >
template void TransformMatrix< T >::resize ( myStreamHandle myStream,
size_t  _Ndim,
size_t  _Xdim = 3,
size_t  _Ydim = 3,
size_t  _Zdim = 1 
)

Definition at line 21 of file cuda_xmipp_utils.cpp.

22  {
23  if (_Xdim*_Ydim*_Zdim*_Ndim==nzyxdim)
24  return;
25 
26  clear();
27 
28  Xdim=_Xdim;
29  Ydim=_Ydim;
30  Zdim=_Zdim;
31  Ndim=_Ndim;
32  yxdim=_Ydim*_Xdim;
33  zyxdim=yxdim*_Zdim;
34  nzyxdim=zyxdim*_Ndim;
35  gpuErrchk(cudaMalloc(&d_data,nzyxdim*sizeof(T)));
36  gpuErrchk(cudaMallocHost(&h_data,nzyxdim*sizeof(T)));
37  initializeIdentity(d_data, h_data, Ndim, myStream);
38 }
#define gpuErrchk(code)
Definition: cuda_asserts.h:31
void initializeIdentity(float *d_data, float *h_data, int Ndim, myStreamHandle &myStream)

◆ setRotation()

template<typename T>
void TransformMatrix< T >::setRotation ( float *  ang,
myStreamHandle myStream 
)
inline

Definition at line 151 of file cuda_xmipp_utils.h.

152  {
153  /*for(int i=0; i<Ndim; i++)
154  setRotationMatrix(d_data, -ang[i], i);*/
155  setRotationMatrix(d_data, ang, Ndim, myStream);
156  }
void setRotationMatrix(float *d_data, float *ang, int Ndim, myStreamHandle &myStream)

◆ setTranslation()

template<typename T>
void TransformMatrix< T >::setTranslation ( float *  posX,
float *  posY,
float *  d_out_max,
myStreamHandle myStream 
)
inline

Definition at line 144 of file cuda_xmipp_utils.h.

145  {
146  /*for(int i=0; i<Ndim; i++)
147  setTranslationMatrix(d_data, -posX[i], -posY[i], i);*/
148  setTranslationMatrix(d_data, posX, posY, Ndim, myStream);
149  }
void setTranslationMatrix(float *d_data, float *posX, float *posY, int Ndim, myStreamHandle &myStream)

Member Data Documentation

◆ d_data

template<typename T>
T* TransformMatrix< T >::d_data

Definition at line 100 of file cuda_xmipp_utils.h.

◆ h_data

template<typename T>
T* TransformMatrix< T >::h_data

Definition at line 101 of file cuda_xmipp_utils.h.

◆ Ndim

template<typename T>
size_t TransformMatrix< T >::Ndim

Definition at line 99 of file cuda_xmipp_utils.h.

◆ nzyxdim

template<typename T>
size_t TransformMatrix< T >::nzyxdim

Definition at line 99 of file cuda_xmipp_utils.h.

◆ Xdim

template<typename T>
size_t TransformMatrix< T >::Xdim

Definition at line 99 of file cuda_xmipp_utils.h.

◆ Ydim

template<typename T>
size_t TransformMatrix< T >::Ydim

Definition at line 99 of file cuda_xmipp_utils.h.

◆ yxdim

template<typename T>
size_t TransformMatrix< T >::yxdim

Definition at line 99 of file cuda_xmipp_utils.h.

◆ Zdim

template<typename T>
size_t TransformMatrix< T >::Zdim

Definition at line 99 of file cuda_xmipp_utils.h.

◆ zyxdim

template<typename T>
size_t TransformMatrix< T >::zyxdim

Definition at line 99 of file cuda_xmipp_utils.h.


The documentation for this class was generated from the following files: