Loading src/TileProcessor.cuh +23 −17 Original line number Original line Diff line number Diff line Loading @@ -101,13 +101,13 @@ GPU run time =523.451927ms, (direct conversion: 24.080189999999998ms, imclt: 17. #define KERNELS_STEP (1 << KERNELS_LSTEP) #define KERNELS_STEP (1 << KERNELS_LSTEP) //#define TILES-X (IMG_WIDTH / DTT_SIZE) //#define TILES-X (IMG-WIDTH / DTT_SIZE) #define TILESY (IMG_HEIGHT / DTT_SIZE) //#define TILES-Y (IMG-HEIGHT / DTT_SIZE) #define CONVERT_DIRECT_INDEXING_THREADS_LOG2 5 #define CONVERT_DIRECT_INDEXING_THREADS_LOG2 5 #define CONVERT_DIRECT_INDEXING_THREADS (1 << CONVERT_DIRECT_INDEXING_THREADS_LOG2) // 32 #define CONVERT_DIRECT_INDEXING_THREADS (1 << CONVERT_DIRECT_INDEXING_THREADS_LOG2) // 32 // Make TILES-YA >= TILES-X and a multiple of 4 // Make TILES-YA >= TILES-X and a multiple of 4 //#define TILES-YA ((TILESY +3) & (~3)) //#define TILES-YA ((TILES-Y +3) & (~3)) // increase row length by 1 so vertical passes will use different ports // increase row length by 1 so vertical passes will use different ports #define MCLT_UNION_LEN (DTT_SIZE2 * (DTT_SIZE2 + 2)) #define MCLT_UNION_LEN (DTT_SIZE2 * (DTT_SIZE2 + 2)) Loading Loading @@ -840,6 +840,7 @@ __global__ void mark_texture_neighbor_tiles( struct tp_task * gpu_tasks, struct tp_task * gpu_tasks, int num_tiles, // number of tiles in task list int num_tiles, // number of tiles in task list int width, // number of tiles in a row int width, // number of tiles in a row int height, // number of tiles rows int * gpu_texture_indices, // packed tile + bits (now only (1 << 7) int * gpu_texture_indices, // packed tile + bits (now only (1 << 7) int * woi); // x,y,width,height of the woi int * woi); // x,y,width,height of the woi Loading Loading @@ -1301,7 +1302,7 @@ extern "C" __global__ void generate_RBGA( float diff_sigma = params[2]; // pixel value/pixel change float diff_sigma = params[2]; // pixel value/pixel change float diff_threshold = params[3]; // pixel value/pixel change float diff_threshold = params[3]; // pixel value/pixel change float min_agree = params[4]; // minimal number of channels to agree on a point (real number to work with fuzzy averages) float min_agree = params[4]; // minimal number of channels to agree on a point (real number to work with fuzzy averages) int tilesya = ((height +3) & (~3)); //#define TILES-YA ((TILESY +3) & (~3)) int tilesya = ((height +3) & (~3)); //#define TILES-YA ((TILES-Y +3) & (~3)) dim3 threads0((1 << THREADS_DYNAMIC_BITS), 1, 1); dim3 threads0((1 << THREADS_DYNAMIC_BITS), 1, 1); int blocks_x = (width + ((1 << THREADS_DYNAMIC_BITS) - 1)) >> THREADS_DYNAMIC_BITS; int blocks_x = (width + ((1 << THREADS_DYNAMIC_BITS) - 1)) >> THREADS_DYNAMIC_BITS; dim3 blocks0 (blocks_x, height, 1); dim3 blocks0 (blocks_x, height, 1); Loading Loading @@ -1331,6 +1332,7 @@ extern "C" __global__ void generate_RBGA( gpu_tasks, gpu_tasks, num_tiles, // number of tiles in task list num_tiles, // number of tiles in task list width, // number of tiles in a row width, // number of tiles in a row height, // number of tiles rows gpu_texture_indices, // packed tile + bits (now only (1 << 7) gpu_texture_indices, // packed tile + bits (now only (1 << 7) woi); // min_x, min_y, max_x, max_y woi); // min_x, min_y, max_x, max_y Loading Loading @@ -1512,6 +1514,7 @@ __global__ void prepare_texture_list( gpu_tasks, gpu_tasks, num_tiles, // number of tiles in task list num_tiles, // number of tiles in task list width, // number of tiles in a row width, // number of tiles in a row height, // number of tiles rows gpu_texture_indices, // packed tile + bits (now only (1 << 7) gpu_texture_indices, // packed tile + bits (now only (1 << 7) woi); // min_x, min_y, max_x, max_y woi); // min_x, min_y, max_x, max_y cudaDeviceSynchronize(); cudaDeviceSynchronize(); Loading Loading @@ -1598,6 +1601,8 @@ __global__ void mark_texture_tiles( * * * @param gpu_tasks array of per-tile tasks (struct tp_task) * @param gpu_tasks array of per-tile tasks (struct tp_task) * @param num_tiles number of tiles int gpu_tasks array prepared for processing * @param num_tiles number of tiles int gpu_tasks array prepared for processing * @param width number of tiles in a row * @param height number of tiles rows * @param gpu_texture_indices allocated array - 1 integer per tile to process * @param gpu_texture_indices allocated array - 1 integer per tile to process * @param woi 4-element int array ( x,y,width,height of the woi, in tiles) * @param woi 4-element int array ( x,y,width,height of the woi, in tiles) */ */ Loading @@ -1606,6 +1611,7 @@ __global__ void mark_texture_neighbor_tiles( // TODO: remove __global__? struct tp_task * gpu_tasks, struct tp_task * gpu_tasks, int num_tiles, // number of tiles in task list int num_tiles, // number of tiles in task list int width, // number of tiles in a row int width, // number of tiles in a row int height, // number of tiles rows int * gpu_texture_indices, // packed tile + bits (now only (1 << 7) int * gpu_texture_indices, // packed tile + bits (now only (1 << 7) int * woi) // x,y,width,height of the woi int * woi) // x,y,width,height of the woi Loading @@ -1628,12 +1634,12 @@ __global__ void mark_texture_neighbor_tiles( // TODO: remove __global__? int d = 0; int d = 0; // if ((y > 0) && *(gpu_texture_indices + x + (y - 1) * TILES-X)) d |= (1 << TASK_TEXTURE_N_BIT); // if ((y > 0) && *(gpu_texture_indices + x + (y - 1) * TILES-X)) d |= (1 << TASK_TEXTURE_N_BIT); // if ((x < (TILES-X - 1)) && *(gpu_texture_indices + (x + 1) + y * TILES-X)) d |= (1 << TASK_TEXTURE_E_BIT); // if ((x < (TILES-X - 1)) && *(gpu_texture_indices + (x + 1) + y * TILES-X)) d |= (1 << TASK_TEXTURE_E_BIT); // if ((y < (TILESY - 1)) && *(gpu_texture_indices + x + (y + 1) * TILES-X)) d |= (1 << TASK_TEXTURE_S_BIT); // if ((y < (TILES-Y - 1)) && *(gpu_texture_indices + x + (y + 1) * TILES-X)) d |= (1 << TASK_TEXTURE_S_BIT); // if ((x > 0) && *(gpu_texture_indices + (x - 1) + y * TILES-X)) d |= (1 << TASK_TEXTURE_W_BIT); // if ((x > 0) && *(gpu_texture_indices + (x - 1) + y * TILES-X)) d |= (1 << TASK_TEXTURE_W_BIT); if ((y > 0) && *(gpu_texture_indices + x + (y - 1) * width)) d |= (1 << TASK_TEXTURE_N_BIT); if ((y > 0) && *(gpu_texture_indices + x + (y - 1) * width)) d |= (1 << TASK_TEXTURE_N_BIT); if ((x < (width - 1)) && *(gpu_texture_indices + (x + 1) + y * width)) d |= (1 << TASK_TEXTURE_E_BIT); if ((x < (width - 1)) && *(gpu_texture_indices + (x + 1) + y * width)) d |= (1 << TASK_TEXTURE_E_BIT); if ((y < (TILESY - 1)) && *(gpu_texture_indices + x + (y + 1) * width)) d |= (1 << TASK_TEXTURE_S_BIT); if ((y < (height - 1)) && *(gpu_texture_indices + x + (y + 1) * width)) d |= (1 << TASK_TEXTURE_S_BIT); if ((x > 0) && *(gpu_texture_indices + (x - 1) + y * width)) d |= (1 << TASK_TEXTURE_W_BIT); if ((x > 0) && *(gpu_texture_indices + (x - 1) + y * width)) d |= (1 << TASK_TEXTURE_W_BIT); gpu_tasks[task_num].task = ((task ^ d) & TASK_TEXTURE_BITS) ^ task; gpu_tasks[task_num].task = ((task ^ d) & TASK_TEXTURE_BITS) ^ task; } } Loading Loading @@ -1661,7 +1667,7 @@ __global__ void gen_texture_list( int * woi) // min_x, min_y, max_x, max_y input int * woi) // min_x, min_y, max_x, max_y input { { int tilesya = ((height +3) & (~3)); //#define TILES-YA ((TILESY +3) & (~3)) int tilesya = ((height +3) & (~3)); //#define TILES-YA ((TILES-Y +3) & (~3)) int task_num = blockDim.x * blockIdx.x + threadIdx.x; int task_num = blockDim.x * blockIdx.x + threadIdx.x; if (task_num >= num_tiles) { if (task_num >= num_tiles) { return; // nothing to do return; // nothing to do Loading Loading @@ -1832,8 +1838,8 @@ __global__ void index_correlate( * @param dstride stride (in floats) for the input Bayer images * @param dstride stride (in floats) for the input Bayer images * @param num_tiles number of tiles int gpu_tasks array prepared for processing * @param num_tiles number of tiles int gpu_tasks array prepared for processing * @param lpf_mask apply lpf to colors : bit 0 - red, bit 1 - blue, bit2 - green. Now - always 0 ! * @param lpf_mask apply lpf to colors : bit 0 - red, bit 1 - blue, bit2 - green. Now - always 0 ! * @param woi_width image width (was constant IMG_WIDTH, now variable to use with EO+LWIR * @param woi_width image width (was constant IMG-WIDTH, now variable to use with EO+LWIR * @param woi_height image height (was constant IMG_HEIGHT, now variable to use with EO+LWIR * @param woi_height image height (was constant IMG-HEIGHT, now variable to use with EO+LWIR * @param kernels_hor number of deconvolution kernels per image width * @param kernels_hor number of deconvolution kernels per image width * @param kernels_vert number of deconvolution kernels per image height * @param kernels_vert number of deconvolution kernels per image height * @param gpu_active_tiles pointer to the calculated list of tiles * @param gpu_active_tiles pointer to the calculated list of tiles Loading Loading @@ -1900,8 +1906,8 @@ extern "C" __global__ void convert_direct( // called with a single block, singl * @param gpu_clt output array of per-camera aberration-corrected transform-domain image representations * @param gpu_clt output array of per-camera aberration-corrected transform-domain image representations * @param dstride stride (in floats) for the input Bayer images * @param dstride stride (in floats) for the input Bayer images * @param lpf_mask apply lpf to colors : bit 0 - red, bit 1 - blue, bit2 - green. Now - always 0 ! * @param lpf_mask apply lpf to colors : bit 0 - red, bit 1 - blue, bit2 - green. Now - always 0 ! * @param woi_width image width (was constant IMG_WIDTH, now variable to use with EO+LWIR * @param woi_width image width (was constant IMG-WIDTH, now variable to use with EO+LWIR * @param woi_height image height (was constant IMG_HEIGHT, now variable to use with EO+LWIR * @param woi_height image height (was constant IMG-HEIGHT, now variable to use with EO+LWIR * @param kernels_hor number of deconvolution kernels per image width * @param kernels_hor number of deconvolution kernels per image width * @param kernels_vert number of deconvolution kernels per image height * @param kernels_vert number of deconvolution kernels per image height */ */ Loading Loading @@ -2531,7 +2537,7 @@ extern "C" __global__ void textures_accumulate( // (8,4,1) (N,1,1) #endif // DEBUG12 #endif // DEBUG12 /// if (!border_tile || /// if (!border_tile || /// ((g_row >= 0) && (g_col >= 0) && (g_row < (DTT_SIZE * TILESY)) && (g_col < (DTT_SIZE * TILES-X)))){ /// ((g_row >= 0) && (g_col >= 0) && (g_row < (DTT_SIZE * TILES-Y)) && (g_col < (DTT_SIZE * TILES-X)))){ /// ((g_row >= 0) && (g_col >= 0) && (g_row < height) && (g_col < (DTT_SIZE * TILES-X)))){ /// ((g_row >= 0) && (g_col >= 0) && (g_row < height) && (g_col < (DTT_SIZE * TILES-X)))){ // always copy 3 (1) colors + alpha // always copy 3 (1) colors + alpha if (colors == 3){ if (colors == 3){ Loading Loading @@ -3101,8 +3107,8 @@ __device__ void normalizeTileAmplitude( * @param window_hor_cos array in shared memory for window horizontal cosine [2*DTT_SIZE] * @param window_hor_cos array in shared memory for window horizontal cosine [2*DTT_SIZE] * @param window_hor_sin array in shared memory for window horizontal cosine [2*DTT_SIZE] * @param window_hor_sin array in shared memory for window horizontal cosine [2*DTT_SIZE] * @param window_vert_cos array in shared memory for window horizontal cosine [2*DTT_SIZE] * @param window_vert_cos array in shared memory for window horizontal cosine [2*DTT_SIZE] * @param woi_width image width (was constant IMG_WIDTH, now variable to use with EO+LWIR * @param woi_width image width (was constant IMG-WIDTH, now variable to use with EO+LWIR * @param woi_height image height (was constant IMG_HEIGHT, now variable to use with EO+LWIR * @param woi_height image height (was constant IMG-HEIGHT, now variable to use with EO+LWIR * @param kernels_hor number of deconvolution kernels per image width * @param kernels_hor number of deconvolution kernels per image width * @param kernels_vert number of deconvolution kernels per image height * @param kernels_vert number of deconvolution kernels per image height */ */ Loading Loading @@ -3132,8 +3138,8 @@ __device__ void convertCorrectTile( { { // int tilesx = TILES-X; // int tilesx = TILES-X; // TODO: pass these values instead of constants to handle EO/LWIR // TODO: pass these values instead of constants to handle EO/LWIR int max_px = woi_width - 1; // IMG_WIDTH - 1; // odd int max_px = woi_width - 1; // IMG-WIDTH - 1; // odd int max_py = woi_height - 1; // IMG_HEIGHT - 1; // odd int max_py = woi_height - 1; // IMG-HEIGHT - 1; // odd int max_pxm1 = max_px - 1; // even int max_pxm1 = max_px - 1; // even int max_pym1 = max_py - 1; // even int max_pym1 = max_py - 1; // even int max_kernel_hor = kernels_hor - 1; // KERNELS_HOR -1; int max_kernel_hor = kernels_hor - 1; // KERNELS_HOR -1; Loading src/tp_defines.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -79,7 +79,7 @@ // only used in C++ test // only used in C++ test #define TILESX (IMG_WIDTH / DTT_SIZE) #define TILESX (IMG_WIDTH / DTT_SIZE) //#define TILESY (IMG_HEIGHT / DTT_SIZE) #define TILESY (IMG_HEIGHT / DTT_SIZE) #define TILESYA ((TILESY +3) & (~3)) #define TILESYA ((TILESY +3) & (~3)) Loading Loading
src/TileProcessor.cuh +23 −17 Original line number Original line Diff line number Diff line Loading @@ -101,13 +101,13 @@ GPU run time =523.451927ms, (direct conversion: 24.080189999999998ms, imclt: 17. #define KERNELS_STEP (1 << KERNELS_LSTEP) #define KERNELS_STEP (1 << KERNELS_LSTEP) //#define TILES-X (IMG_WIDTH / DTT_SIZE) //#define TILES-X (IMG-WIDTH / DTT_SIZE) #define TILESY (IMG_HEIGHT / DTT_SIZE) //#define TILES-Y (IMG-HEIGHT / DTT_SIZE) #define CONVERT_DIRECT_INDEXING_THREADS_LOG2 5 #define CONVERT_DIRECT_INDEXING_THREADS_LOG2 5 #define CONVERT_DIRECT_INDEXING_THREADS (1 << CONVERT_DIRECT_INDEXING_THREADS_LOG2) // 32 #define CONVERT_DIRECT_INDEXING_THREADS (1 << CONVERT_DIRECT_INDEXING_THREADS_LOG2) // 32 // Make TILES-YA >= TILES-X and a multiple of 4 // Make TILES-YA >= TILES-X and a multiple of 4 //#define TILES-YA ((TILESY +3) & (~3)) //#define TILES-YA ((TILES-Y +3) & (~3)) // increase row length by 1 so vertical passes will use different ports // increase row length by 1 so vertical passes will use different ports #define MCLT_UNION_LEN (DTT_SIZE2 * (DTT_SIZE2 + 2)) #define MCLT_UNION_LEN (DTT_SIZE2 * (DTT_SIZE2 + 2)) Loading Loading @@ -840,6 +840,7 @@ __global__ void mark_texture_neighbor_tiles( struct tp_task * gpu_tasks, struct tp_task * gpu_tasks, int num_tiles, // number of tiles in task list int num_tiles, // number of tiles in task list int width, // number of tiles in a row int width, // number of tiles in a row int height, // number of tiles rows int * gpu_texture_indices, // packed tile + bits (now only (1 << 7) int * gpu_texture_indices, // packed tile + bits (now only (1 << 7) int * woi); // x,y,width,height of the woi int * woi); // x,y,width,height of the woi Loading Loading @@ -1301,7 +1302,7 @@ extern "C" __global__ void generate_RBGA( float diff_sigma = params[2]; // pixel value/pixel change float diff_sigma = params[2]; // pixel value/pixel change float diff_threshold = params[3]; // pixel value/pixel change float diff_threshold = params[3]; // pixel value/pixel change float min_agree = params[4]; // minimal number of channels to agree on a point (real number to work with fuzzy averages) float min_agree = params[4]; // minimal number of channels to agree on a point (real number to work with fuzzy averages) int tilesya = ((height +3) & (~3)); //#define TILES-YA ((TILESY +3) & (~3)) int tilesya = ((height +3) & (~3)); //#define TILES-YA ((TILES-Y +3) & (~3)) dim3 threads0((1 << THREADS_DYNAMIC_BITS), 1, 1); dim3 threads0((1 << THREADS_DYNAMIC_BITS), 1, 1); int blocks_x = (width + ((1 << THREADS_DYNAMIC_BITS) - 1)) >> THREADS_DYNAMIC_BITS; int blocks_x = (width + ((1 << THREADS_DYNAMIC_BITS) - 1)) >> THREADS_DYNAMIC_BITS; dim3 blocks0 (blocks_x, height, 1); dim3 blocks0 (blocks_x, height, 1); Loading Loading @@ -1331,6 +1332,7 @@ extern "C" __global__ void generate_RBGA( gpu_tasks, gpu_tasks, num_tiles, // number of tiles in task list num_tiles, // number of tiles in task list width, // number of tiles in a row width, // number of tiles in a row height, // number of tiles rows gpu_texture_indices, // packed tile + bits (now only (1 << 7) gpu_texture_indices, // packed tile + bits (now only (1 << 7) woi); // min_x, min_y, max_x, max_y woi); // min_x, min_y, max_x, max_y Loading Loading @@ -1512,6 +1514,7 @@ __global__ void prepare_texture_list( gpu_tasks, gpu_tasks, num_tiles, // number of tiles in task list num_tiles, // number of tiles in task list width, // number of tiles in a row width, // number of tiles in a row height, // number of tiles rows gpu_texture_indices, // packed tile + bits (now only (1 << 7) gpu_texture_indices, // packed tile + bits (now only (1 << 7) woi); // min_x, min_y, max_x, max_y woi); // min_x, min_y, max_x, max_y cudaDeviceSynchronize(); cudaDeviceSynchronize(); Loading Loading @@ -1598,6 +1601,8 @@ __global__ void mark_texture_tiles( * * * @param gpu_tasks array of per-tile tasks (struct tp_task) * @param gpu_tasks array of per-tile tasks (struct tp_task) * @param num_tiles number of tiles int gpu_tasks array prepared for processing * @param num_tiles number of tiles int gpu_tasks array prepared for processing * @param width number of tiles in a row * @param height number of tiles rows * @param gpu_texture_indices allocated array - 1 integer per tile to process * @param gpu_texture_indices allocated array - 1 integer per tile to process * @param woi 4-element int array ( x,y,width,height of the woi, in tiles) * @param woi 4-element int array ( x,y,width,height of the woi, in tiles) */ */ Loading @@ -1606,6 +1611,7 @@ __global__ void mark_texture_neighbor_tiles( // TODO: remove __global__? struct tp_task * gpu_tasks, struct tp_task * gpu_tasks, int num_tiles, // number of tiles in task list int num_tiles, // number of tiles in task list int width, // number of tiles in a row int width, // number of tiles in a row int height, // number of tiles rows int * gpu_texture_indices, // packed tile + bits (now only (1 << 7) int * gpu_texture_indices, // packed tile + bits (now only (1 << 7) int * woi) // x,y,width,height of the woi int * woi) // x,y,width,height of the woi Loading @@ -1628,12 +1634,12 @@ __global__ void mark_texture_neighbor_tiles( // TODO: remove __global__? int d = 0; int d = 0; // if ((y > 0) && *(gpu_texture_indices + x + (y - 1) * TILES-X)) d |= (1 << TASK_TEXTURE_N_BIT); // if ((y > 0) && *(gpu_texture_indices + x + (y - 1) * TILES-X)) d |= (1 << TASK_TEXTURE_N_BIT); // if ((x < (TILES-X - 1)) && *(gpu_texture_indices + (x + 1) + y * TILES-X)) d |= (1 << TASK_TEXTURE_E_BIT); // if ((x < (TILES-X - 1)) && *(gpu_texture_indices + (x + 1) + y * TILES-X)) d |= (1 << TASK_TEXTURE_E_BIT); // if ((y < (TILESY - 1)) && *(gpu_texture_indices + x + (y + 1) * TILES-X)) d |= (1 << TASK_TEXTURE_S_BIT); // if ((y < (TILES-Y - 1)) && *(gpu_texture_indices + x + (y + 1) * TILES-X)) d |= (1 << TASK_TEXTURE_S_BIT); // if ((x > 0) && *(gpu_texture_indices + (x - 1) + y * TILES-X)) d |= (1 << TASK_TEXTURE_W_BIT); // if ((x > 0) && *(gpu_texture_indices + (x - 1) + y * TILES-X)) d |= (1 << TASK_TEXTURE_W_BIT); if ((y > 0) && *(gpu_texture_indices + x + (y - 1) * width)) d |= (1 << TASK_TEXTURE_N_BIT); if ((y > 0) && *(gpu_texture_indices + x + (y - 1) * width)) d |= (1 << TASK_TEXTURE_N_BIT); if ((x < (width - 1)) && *(gpu_texture_indices + (x + 1) + y * width)) d |= (1 << TASK_TEXTURE_E_BIT); if ((x < (width - 1)) && *(gpu_texture_indices + (x + 1) + y * width)) d |= (1 << TASK_TEXTURE_E_BIT); if ((y < (TILESY - 1)) && *(gpu_texture_indices + x + (y + 1) * width)) d |= (1 << TASK_TEXTURE_S_BIT); if ((y < (height - 1)) && *(gpu_texture_indices + x + (y + 1) * width)) d |= (1 << TASK_TEXTURE_S_BIT); if ((x > 0) && *(gpu_texture_indices + (x - 1) + y * width)) d |= (1 << TASK_TEXTURE_W_BIT); if ((x > 0) && *(gpu_texture_indices + (x - 1) + y * width)) d |= (1 << TASK_TEXTURE_W_BIT); gpu_tasks[task_num].task = ((task ^ d) & TASK_TEXTURE_BITS) ^ task; gpu_tasks[task_num].task = ((task ^ d) & TASK_TEXTURE_BITS) ^ task; } } Loading Loading @@ -1661,7 +1667,7 @@ __global__ void gen_texture_list( int * woi) // min_x, min_y, max_x, max_y input int * woi) // min_x, min_y, max_x, max_y input { { int tilesya = ((height +3) & (~3)); //#define TILES-YA ((TILESY +3) & (~3)) int tilesya = ((height +3) & (~3)); //#define TILES-YA ((TILES-Y +3) & (~3)) int task_num = blockDim.x * blockIdx.x + threadIdx.x; int task_num = blockDim.x * blockIdx.x + threadIdx.x; if (task_num >= num_tiles) { if (task_num >= num_tiles) { return; // nothing to do return; // nothing to do Loading Loading @@ -1832,8 +1838,8 @@ __global__ void index_correlate( * @param dstride stride (in floats) for the input Bayer images * @param dstride stride (in floats) for the input Bayer images * @param num_tiles number of tiles int gpu_tasks array prepared for processing * @param num_tiles number of tiles int gpu_tasks array prepared for processing * @param lpf_mask apply lpf to colors : bit 0 - red, bit 1 - blue, bit2 - green. Now - always 0 ! * @param lpf_mask apply lpf to colors : bit 0 - red, bit 1 - blue, bit2 - green. Now - always 0 ! * @param woi_width image width (was constant IMG_WIDTH, now variable to use with EO+LWIR * @param woi_width image width (was constant IMG-WIDTH, now variable to use with EO+LWIR * @param woi_height image height (was constant IMG_HEIGHT, now variable to use with EO+LWIR * @param woi_height image height (was constant IMG-HEIGHT, now variable to use with EO+LWIR * @param kernels_hor number of deconvolution kernels per image width * @param kernels_hor number of deconvolution kernels per image width * @param kernels_vert number of deconvolution kernels per image height * @param kernels_vert number of deconvolution kernels per image height * @param gpu_active_tiles pointer to the calculated list of tiles * @param gpu_active_tiles pointer to the calculated list of tiles Loading Loading @@ -1900,8 +1906,8 @@ extern "C" __global__ void convert_direct( // called with a single block, singl * @param gpu_clt output array of per-camera aberration-corrected transform-domain image representations * @param gpu_clt output array of per-camera aberration-corrected transform-domain image representations * @param dstride stride (in floats) for the input Bayer images * @param dstride stride (in floats) for the input Bayer images * @param lpf_mask apply lpf to colors : bit 0 - red, bit 1 - blue, bit2 - green. Now - always 0 ! * @param lpf_mask apply lpf to colors : bit 0 - red, bit 1 - blue, bit2 - green. Now - always 0 ! * @param woi_width image width (was constant IMG_WIDTH, now variable to use with EO+LWIR * @param woi_width image width (was constant IMG-WIDTH, now variable to use with EO+LWIR * @param woi_height image height (was constant IMG_HEIGHT, now variable to use with EO+LWIR * @param woi_height image height (was constant IMG-HEIGHT, now variable to use with EO+LWIR * @param kernels_hor number of deconvolution kernels per image width * @param kernels_hor number of deconvolution kernels per image width * @param kernels_vert number of deconvolution kernels per image height * @param kernels_vert number of deconvolution kernels per image height */ */ Loading Loading @@ -2531,7 +2537,7 @@ extern "C" __global__ void textures_accumulate( // (8,4,1) (N,1,1) #endif // DEBUG12 #endif // DEBUG12 /// if (!border_tile || /// if (!border_tile || /// ((g_row >= 0) && (g_col >= 0) && (g_row < (DTT_SIZE * TILESY)) && (g_col < (DTT_SIZE * TILES-X)))){ /// ((g_row >= 0) && (g_col >= 0) && (g_row < (DTT_SIZE * TILES-Y)) && (g_col < (DTT_SIZE * TILES-X)))){ /// ((g_row >= 0) && (g_col >= 0) && (g_row < height) && (g_col < (DTT_SIZE * TILES-X)))){ /// ((g_row >= 0) && (g_col >= 0) && (g_row < height) && (g_col < (DTT_SIZE * TILES-X)))){ // always copy 3 (1) colors + alpha // always copy 3 (1) colors + alpha if (colors == 3){ if (colors == 3){ Loading Loading @@ -3101,8 +3107,8 @@ __device__ void normalizeTileAmplitude( * @param window_hor_cos array in shared memory for window horizontal cosine [2*DTT_SIZE] * @param window_hor_cos array in shared memory for window horizontal cosine [2*DTT_SIZE] * @param window_hor_sin array in shared memory for window horizontal cosine [2*DTT_SIZE] * @param window_hor_sin array in shared memory for window horizontal cosine [2*DTT_SIZE] * @param window_vert_cos array in shared memory for window horizontal cosine [2*DTT_SIZE] * @param window_vert_cos array in shared memory for window horizontal cosine [2*DTT_SIZE] * @param woi_width image width (was constant IMG_WIDTH, now variable to use with EO+LWIR * @param woi_width image width (was constant IMG-WIDTH, now variable to use with EO+LWIR * @param woi_height image height (was constant IMG_HEIGHT, now variable to use with EO+LWIR * @param woi_height image height (was constant IMG-HEIGHT, now variable to use with EO+LWIR * @param kernels_hor number of deconvolution kernels per image width * @param kernels_hor number of deconvolution kernels per image width * @param kernels_vert number of deconvolution kernels per image height * @param kernels_vert number of deconvolution kernels per image height */ */ Loading Loading @@ -3132,8 +3138,8 @@ __device__ void convertCorrectTile( { { // int tilesx = TILES-X; // int tilesx = TILES-X; // TODO: pass these values instead of constants to handle EO/LWIR // TODO: pass these values instead of constants to handle EO/LWIR int max_px = woi_width - 1; // IMG_WIDTH - 1; // odd int max_px = woi_width - 1; // IMG-WIDTH - 1; // odd int max_py = woi_height - 1; // IMG_HEIGHT - 1; // odd int max_py = woi_height - 1; // IMG-HEIGHT - 1; // odd int max_pxm1 = max_px - 1; // even int max_pxm1 = max_px - 1; // even int max_pym1 = max_py - 1; // even int max_pym1 = max_py - 1; // even int max_kernel_hor = kernels_hor - 1; // KERNELS_HOR -1; int max_kernel_hor = kernels_hor - 1; // KERNELS_HOR -1; Loading
src/tp_defines.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -79,7 +79,7 @@ // only used in C++ test // only used in C++ test #define TILESX (IMG_WIDTH / DTT_SIZE) #define TILESX (IMG_WIDTH / DTT_SIZE) //#define TILESY (IMG_HEIGHT / DTT_SIZE) #define TILESY (IMG_HEIGHT / DTT_SIZE) #define TILESYA ((TILESY +3) & (~3)) #define TILESYA ((TILESY +3) & (~3)) Loading