Commit 5ea8591c362bee4b1fce73b1bda682582e20c8bf
1 parent
b17fcc31
fixded PCA issues
Showing
2 changed files
with
7 additions
and
0 deletions
openbr/plugins/cuda/cudapca.cpp
| @@ -33,6 +33,7 @@ using namespace cv; | @@ -33,6 +33,7 @@ using namespace cv; | ||
| 33 | // definitions from the CUDA source file | 33 | // definitions from the CUDA source file |
| 34 | namespace br { namespace cuda { namespace pca { | 34 | namespace br { namespace cuda { namespace pca { |
| 35 | void initializeWrapper(float* evPtr, int evRows, int evCols, float* meanPtr, int meanElems); | 35 | void initializeWrapper(float* evPtr, int evRows, int evCols, float* meanPtr, int meanElems); |
| 36 | + void trainWrapper(void* cudaSrc, float* dst, int rows, int cols); | ||
| 36 | void wrapper(void* src, void** dst); | 37 | void wrapper(void* src, void** dst); |
| 37 | }}} | 38 | }}} |
| 38 | 39 | ||
| @@ -94,6 +95,7 @@ private: | @@ -94,6 +95,7 @@ private: | ||
| 94 | int type = *((int*)srcDataPtr[3]); | 95 | int type = *((int*)srcDataPtr[3]); |
| 95 | 96 | ||
| 96 | Mat mat = Mat(rows, cols, type); | 97 | Mat mat = Mat(rows, cols, type); |
| 98 | + br::cuda::pca::trainWrapper(cudaMemPtr, mat.ptr<float>(), rows, cols); | ||
| 97 | trainingQlist.append(Template(mat)); | 99 | trainingQlist.append(Template(mat)); |
| 98 | } | 100 | } |
| 99 | 101 |
openbr/plugins/cuda/cudapca.cu
| @@ -111,6 +111,11 @@ namespace br { namespace cuda { namespace pca { | @@ -111,6 +111,11 @@ namespace br { namespace cuda { namespace pca { | ||
| 111 | CUDA_SAFE_MALLOC(&intermediaryBuffer, _numSteps*_evCols*sizeof(float), &err); | 111 | CUDA_SAFE_MALLOC(&intermediaryBuffer, _numSteps*_evCols*sizeof(float), &err); |
| 112 | } | 112 | } |
| 113 | 113 | ||
| 114 | + void trainWrapper(void* cudaSrc, float* data, int rows, int cols) { | ||
| 115 | + cudaError_t err; | ||
| 116 | + CUDA_SAFE_MEMCPY(data, cudaSrc, rows*cols*sizeof(float), cudaMemcpyDeviceToHost, &err); | ||
| 117 | + } | ||
| 118 | + | ||
| 114 | void wrapper(void* src, void** dst) { | 119 | void wrapper(void* src, void** dst) { |
| 115 | cudaError_t err; | 120 | cudaError_t err; |
| 116 | CUDA_SAFE_MALLOC(dst, _evCols*sizeof(float), &err); | 121 | CUDA_SAFE_MALLOC(dst, _evCols*sizeof(float), &err); |