text: //===============================================================================================================================================================================================================
  //===============================================================================================================================================================================================================
  //	DEFINE / INCLUDE
  //===============================================================================================================================================================================================================
  //===============================================================================================================================================================================================================
  
  #define fp float
  
  #define NUMBER_THREADS 512
  
  #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
  //===============================================================================================================================================================================================================
  //===============================================================================================================================================================================================================
  