//=============================================================================================================================================================================================================== //=============================================================================================================================================================================================================== // DEFINE / INCLUDE //=============================================================================================================================================================================================================== //=============================================================================================================================================================================================================== #define fp float /* #define NUMBER_THREADS 512 */ #ifdef RD_WG_SIZE_0_0 #define NUMBER_THREADS RD_WG_SIZE_0_0 #elif defined(RD_WG_SIZE_0) #define NUMBER_THREADS RD_WG_SIZE_0 #elif defined(RD_WG_SIZE) #define NUMBER_THREADS RD_WG_SIZE #else #define NUMBER_THREADS 256 #endif #define ENDO_POINTS 20 #define EPI_POINTS 31 #define ALL_POINTS 51 //=============================================================================================================================================================================================================== //=============================================================================================================================================================================================================== // PARAMS_COMMON_CHANGE STRUCT //=============================================================================================================================================================================================================== //=============================================================================================================================================================================================================== typedef struct params_common_change { //====================================================================================================================================================== // FRAME //====================================================================================================================================================== fp *d_frame; int frame_no; } params_common_change; //=============================================================================================================================================================================================================== //=============================================================================================================================================================================================================== // PARAMS_COMMON STRUCTURE //=============================================================================================================================================================================================================== //=============================================================================================================================================================================================================== typedef struct params_common { //====================================================================================================================================================== // HARDCODED INPUTS FROM MATLAB //====================================================================================================================================================== //==================================================================================================== // CONSTANTS //==================================================================================================== int sSize; int tSize; int maxMove; fp alpha; //==================================================================================================== // FRAME //==================================================================================================== int no_frames; int frame_rows; int frame_cols; int frame_elem; int frame_mem; //==================================================================================================== // ENDO POINTS //==================================================================================================== int endoPoints; int endo_mem; int *endoRow; int *endoCol; int *tEndoRowLoc; int *tEndoColLoc; int *d_endoRow; int *d_endoCol; int *d_tEndoRowLoc; int *d_tEndoColLoc; fp *d_endoT; //==================================================================================================== // EPI POINTS //==================================================================================================== int epiPoints; int epi_mem; int *epiRow; int *epiCol; int *tEpiRowLoc; int *tEpiColLoc; int *d_epiRow; int *d_epiCol; int *d_tEpiRowLoc; int *d_tEpiColLoc; fp *d_epiT; //==================================================================================================== // ALL POINTS //==================================================================================================== int allPoints; //====================================================================================================================================================== // RIGHT TEMPLATE FROM TEMPLATE ARRAY //====================================================================================================================================================== int in_rows; int in_cols; int in_elem; int in_mem; //====================================================================================================================================================== // AREA AROUND POINT FROM FRAME //====================================================================================================================================================== int in2_rows; int in2_cols; int in2_elem; int in2_mem; //====================================================================================================================================================== // CONVOLUTION //====================================================================================================================================================== int conv_rows; int conv_cols; int conv_elem; int conv_mem; int ioffset; int joffset; //====================================================================================================================================================== // CUMULATIVE SUM 1 //====================================================================================================================================================== //==================================================================================================== // PAD ARRAY, VERTICAL CUMULATIVE SUM //==================================================================================================== int in2_pad_add_rows; int in2_pad_add_cols; int in2_pad_cumv_rows; int in2_pad_cumv_cols; int in2_pad_cumv_elem; int in2_pad_cumv_mem; //==================================================================================================== // SELECTION //==================================================================================================== int in2_pad_cumv_sel_rows; int in2_pad_cumv_sel_cols; int in2_pad_cumv_sel_elem; int in2_pad_cumv_sel_mem; int in2_pad_cumv_sel_rowlow; int in2_pad_cumv_sel_rowhig; int in2_pad_cumv_sel_collow; int in2_pad_cumv_sel_colhig; //==================================================================================================== // SELECTION 2, SUBTRACTION, HORIZONTAL CUMULATIVE SUM //==================================================================================================== int in2_pad_cumv_sel2_rowlow; int in2_pad_cumv_sel2_rowhig; int in2_pad_cumv_sel2_collow; int in2_pad_cumv_sel2_colhig; int in2_sub_cumh_rows; int in2_sub_cumh_cols; int in2_sub_cumh_elem; int in2_sub_cumh_mem; //==================================================================================================== // SELECTION //==================================================================================================== int in2_sub_cumh_sel_rows; int in2_sub_cumh_sel_cols; int in2_sub_cumh_sel_elem; int in2_sub_cumh_sel_mem; int in2_sub_cumh_sel_rowlow; int in2_sub_cumh_sel_rowhig; int in2_sub_cumh_sel_collow; int in2_sub_cumh_sel_colhig; //==================================================================================================== // SELECTION 2, SUBTRACTION //==================================================================================================== int in2_sub_cumh_sel2_rowlow; int in2_sub_cumh_sel2_rowhig; int in2_sub_cumh_sel2_collow; int in2_sub_cumh_sel2_colhig; int in2_sub2_rows; int in2_sub2_cols; int in2_sub2_elem; int in2_sub2_mem; //====================================================================================================================================================== // CUMULATIVE SUM 2 //====================================================================================================================================================== //==================================================================================================== // MULTIPLICATION //==================================================================================================== int in2_sqr_rows; int in2_sqr_cols; int in2_sqr_elem; int in2_sqr_mem; //==================================================================================================== // SELECTION 2, SUBTRACTION //==================================================================================================== int in2_sqr_sub2_rows; int in2_sqr_sub2_cols; int in2_sqr_sub2_elem; int in2_sqr_sub2_mem; //====================================================================================================================================================== // FINAL //====================================================================================================================================================== int in_sqr_rows; int in_sqr_cols; int in_sqr_elem; int in_sqr_mem; //====================================================================================================================================================== // TEMPLATE MASK CREATE //====================================================================================================================================================== int tMask_rows; int tMask_cols; int tMask_elem; int tMask_mem; //====================================================================================================================================================== // POINT MASK INITIALIZE //====================================================================================================================================================== int mask_rows; int mask_cols; int mask_elem; int mask_mem; //====================================================================================================================================================== // MASK CONVOLUTION //====================================================================================================================================================== int mask_conv_rows; int mask_conv_cols; int mask_conv_elem; int mask_conv_mem; int mask_conv_ioffset; int mask_conv_joffset; } params_common; //=============================================================================================================================================================================================================== //=============================================================================================================================================================================================================== // PARAMS_UNIQUE STRUCTURE //=============================================================================================================================================================================================================== //=============================================================================================================================================================================================================== typedef struct params_unique { //====================================================================================================================================================== // POINT NUMBER //====================================================================================================================================================== int *d_Row; int *d_Col; int *d_tRowLoc; int *d_tColLoc; fp *d_T; //====================================================================================================================================================== // POINT NUMBER //====================================================================================================================================================== int point_no; //====================================================================================================================================================== // RIGHT TEMPLATE FROM TEMPLATE ARRAY //====================================================================================================================================================== int in_pointer; //====================================================================================================================================================== // AREA AROUND POINT FROM FRAME //====================================================================================================================================================== fp *d_in2; //====================================================================================================================================================== // CONVOLUTION //====================================================================================================================================================== fp *d_conv; fp *d_in_mod; //====================================================================================================================================================== // CUMULATIVE SUM //====================================================================================================================================================== //==================================================================================================== // PAD ARRAY, VERTICAL CUMULATIVE SUM //==================================================================================================== fp *d_in2_pad_cumv; //==================================================================================================== // SELECTION //==================================================================================================== fp *d_in2_pad_cumv_sel; //==================================================================================================== // SELECTION 2, SUBTRACTION, HORIZONTAL CUMULATIVE SUM //==================================================================================================== fp *d_in2_sub_cumh; //==================================================================================================== // SELECTION //==================================================================================================== fp *d_in2_sub_cumh_sel; //==================================================================================================== // SELECTION 2, SUBTRACTION //==================================================================================================== fp *d_in2_sub2; //====================================================================================================================================================== // CUMULATIVE SUM 2 //====================================================================================================================================================== //==================================================================================================== // MULTIPLICATION //==================================================================================================== fp *d_in2_sqr; //==================================================================================================== // SELECTION 2, SUBTRACTION //==================================================================================================== fp *d_in2_sqr_sub2; //====================================================================================================================================================== // FINAL //====================================================================================================================================================== fp *d_in_sqr; //====================================================================================================================================================== // TEMPLATE MASK //====================================================================================================================================================== fp *d_tMask; //====================================================================================================================================================== // POINT MASK INITIALIZE //====================================================================================================================================================== fp *d_mask; //====================================================================================================================================================== // MASK CONVOLUTION //====================================================================================================================================================== fp *d_mask_conv; } params_unique; //=============================================================================================================================================================================================================== //=============================================================================================================================================================================================================== // END OF STRUCTURE //=============================================================================================================================================================================================================== //===============================================================================================================================================================================================================