stereoBM fix an error on Linux when running full performance test

This commit is contained in:
yao 2013-06-28 17:45:39 +08:00
parent c73a10cb4d
commit c66e27d49e

View File

@ -258,27 +258,13 @@ float sobel(__global unsigned char *input, int x, int y, int rows, int cols)
float CalcSums(__local float *cols, __local float *cols_cache, int winsz) float CalcSums(__local float *cols, __local float *cols_cache, int winsz)
{ {
float cache = 0; unsigned int cache = cols[0];
float cache2 = 0;
int winsz2 = winsz/2;
int x = get_local_id(0); #pragma unroll
int group_size_x = get_local_size(0); for(int i = 1; i <= winsz; i++)
for(int i = 1; i <= winsz2; i++)
cache += cols[i]; cache += cols[i];
cols_cache[0] = cache; return cache;
barrier(CLK_LOCAL_MEM_FENCE);
if (x < group_size_x - winsz2)
cache2 = cols_cache[winsz2];
else
for(int i = winsz2 + 1; i < winsz; i++)
cache2 += cols[i];
return cols[0] + cache + cache2;
} }
#define RpT (2 * ROWSperTHREAD) // got experimentally #define RpT (2 * ROWSperTHREAD) // got experimentally
@ -301,8 +287,7 @@ __kernel void textureness_kernel(__global unsigned char *disp, int disp_rows, in
int beg_row = group_id_y * RpT; int beg_row = group_id_y * RpT;
int end_row = min(beg_row + RpT, disp_rows); int end_row = min(beg_row + RpT, disp_rows);
// if (x < disp_cols)
// {
int y = beg_row; int y = beg_row;
float sum = 0; float sum = 0;
@ -340,11 +325,15 @@ __kernel void textureness_kernel(__global unsigned char *disp, int disp_rows, in
} }
barrier(CLK_LOCAL_MEM_FENCE); barrier(CLK_LOCAL_MEM_FENCE);
float sum_win = CalcSums(cols, cols_cache + local_id_x, winsz) * 255;
if (sum_win < threshold) if (x < disp_cols)
disp[y * disp_step + x] = 0; {
float sum_win = CalcSums(cols, cols_cache + local_id_x, winsz) * 255;
if (sum_win < threshold)
disp[y * disp_step + x] = 0;
}
barrier(CLK_LOCAL_MEM_FENCE); barrier(CLK_LOCAL_MEM_FENCE);
} }
// }
} }