/normxcorr/trunk

To get this branch, use:
bzr branch http://suren.me/webbzr/normxcorr/trunk

« back to all changes in this revision

Viewing changes to dict_hw/src/validate.cpp

  • Committer: Suren A. Chilingaryan
  • Date: 2009-12-12 01:38:41 UTC
  • Revision ID: csa@dside.dyndns.org-20091212013841-feih3qa4i28x75j4
Provide stand-alone library

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <stdio.h>
 
2
#include <stdlib.h>
 
3
#include <string.h>
 
4
#include <unistd.h>
 
5
 
 
6
#include "dict_hw.h"
 
7
#include "normxcorr_hw.h"
 
8
 
 
9
int dictGetCorrelations(DICTContext ps, int icp, float *res) {
 
10
    int size = ps->fft_size;
 
11
    int size2 = size * size;
 
12
 
 
13
    cufftReal *cuda_result_buffer = (cufftReal*)ps->cuda_temp_buffer;
 
14
    float *cuda_final_buffer = cuda_result_buffer + CP_BLOCK * ps->fft_alloc_size;
 
15
    cudaMemcpy(res, cuda_final_buffer, size2*sizeof(cufftReal), cudaMemcpyDeviceToHost);
 
16
    
 
17
    return 0;
 
18
}
 
19
 
 
20
int dictGetCorrections(DICTContext ps, float *res_x, float *res_y) {
 
21
    int ncp = ps->ncp;
 
22
    int ncp_alloc = ps->ncp_alloc_size;
 
23
 
 
24
    float *move_x = ps->points + 6 * ncp_alloc;
 
25
    float *move_y = move_x + ncp_alloc;
 
26
 
 
27
    cudaMemcpy2D(
 
28
        move_x, ncp_alloc * sizeof(float),
 
29
        ps->cuda_points, ncp_alloc * sizeof(float),
 
30
        ps->ncp * sizeof(float), 2,
 
31
        cudaMemcpyDeviceToHost
 
32
    );
 
33
 
 
34
    memcpy(res_x, move_x, ncp * sizeof(float));
 
35
    memcpy(res_y, move_y, ncp * sizeof(float));
 
36
 
 
37
    return 0;
 
38
}
 
39
 
 
40
int dictGetLocalSum(DICTContext ps, int icp, float *lsum, float *denom) {
 
41
    int size = ps->fft_size;
 
42
    int size2 = size*size;
 
43
    int alloc_size = ps->fft_alloc_size;
 
44
 
 
45
    if (lsum) {
 
46
        cudaMemcpy(lsum, ps->cuda_lsum_cache + icp * alloc_size, size2*sizeof(float), cudaMemcpyDeviceToHost);
 
47
    }
 
48
 
 
49
    if (denom) {
 
50
        cudaMemcpy(denom, ps->cuda_denom_cache + icp * alloc_size, size2*sizeof(float), cudaMemcpyDeviceToHost);
 
51
    }
 
52
 
 
53
    return 0;
 
54
}