diff options
Diffstat (limited to 'src/ReductionMax.c')
-rw-r--r-- | src/ReductionMax.c | 66 |
1 files changed, 30 insertions, 36 deletions
diff --git a/src/ReductionMax.c b/src/ReductionMax.c index 8eb333c..e7143ee 100644 --- a/src/ReductionMax.c +++ b/src/ReductionMax.c @@ -137,6 +137,7 @@ static int ReductionMax (int N_dims, int operator_handle, int i, j, num_points; int ierr; int * iters_per_dim; + int global_calling = 0; /* indices to hold the temp indices of size N_dims and iteration indices*/ int * indices; @@ -151,17 +152,12 @@ static int ReductionMax (int N_dims, int operator_handle, CCTK_INT * input_array_min_subscripts; CCTK_INT * input_array_max_subscripts; - /* excesion variables declared here */ - int mask_on = 1; /* mask is by default off=1 */ - void * mask_array; /* same dimensions/indexing as input arrays */ - CCTK_INT mask_type_code; /* one of the CCTK_VARIABLE_* codes */ - CCTK_INT mask_offset; - CCTK_INT mask_time_level; + /* weight variables declared here */ + int weight_on = 0; /* weight is by default off=0 */ + void const * weight; /* pointer to the weight variable */ + CCTK_REAL weight_sum; /* prevent warnings for unused vars */ - (void)(mask_array); - (void)(mask_offset + 0); - (void)(mask_time_level + 0); (void)(operator_handle + 0); /* set the number of points */ @@ -207,20 +203,16 @@ static int ReductionMax (int N_dims, int operator_handle, N_dims, input_array_max_subscripts, "input_array_max_subscripts"); } - /* for masks get values from param table (it they exist) */ + /* for weights get values from param table (it they exist) */ if ( Util_TableQueryNKeys(param_table_handle) != 0) { ierr = 0; - ierr = Util_TableGetInt(param_table_handle, &mask_type_code, "mask_type_code"); - - /* mask_valid_min, mask_valid_max; - ierr = Util_TableGetGeneric(param_table_handle, mask_type_code, - mask_range, "mask_valid_min"); - ierr = Util_TableGetGeneric(param_table_handle, mask_type_code, - mask_range, "mask_valid_max"); - ierr = Util_TableGetGeneric(param_table_handle, mask_type_code, - mask_array, "mask_array"); */ + /* Get the weight_on parameter and the weight_var_index parameter */ + ierr = Util_TableGetInt(param_table_handle, &weight_on, "weight_on"); + ierr = Util_TableGetPointerToConst(param_table_handle, &weight, "weight"); + /* Need to add more checking here for size, storage */ } + /* reduction maps an array to a single value of the same type */ if (M_output_numbers != N_input_arrays) { @@ -247,78 +239,80 @@ static int ReductionMax (int N_dims, int operator_handle, { /* in values type switches*/ case CCTK_VARIABLE_BYTE: - num_points = LocalReduce_Max_BYTE(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); + ierr = LocalReduce_Max_BYTE(i, weight_on, weight, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers, param_table_handle); break; case CCTK_VARIABLE_INT: - num_points = LocalReduce_Max_INT(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); + ierr = LocalReduce_Max_INT(i, weight_on, weight, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers, param_table_handle); break; #ifdef CCTK_INT1 case CCTK_VARIABLE_INT1: - num_points = LocalReduce_Max_INT1(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); + ierr = LocalReduce_Max_INT1(i, weight_on, weight, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers, param_table_handle); break; #endif #ifdef CCTK_INT2 case CCTK_VARIABLE_INT2: - num_points = LocalReduce_Max_INT2(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); + ierr = LocalReduce_Max_INT2(i, weight_on, weight, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers, param_table_handle); break; #endif #ifdef CCTK_INT4 case CCTK_VARIABLE_INT4: - num_points = LocalReduce_Max_INT4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); + ierr = LocalReduce_Max_INT4(i, weight_on, weight, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers, param_table_handle); break; #endif #ifdef CCTK_INT8 case CCTK_VARIABLE_INT8: - num_points = LocalReduce_Max_INT8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); + ierr = LocalReduce_Max_INT8(i, weight_on, weight, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers, param_table_handle); break; #endif case CCTK_VARIABLE_REAL: - num_points = LocalReduce_Max_REAL(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); + ierr = LocalReduce_Max_REAL(i, weight_on, weight, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers, param_table_handle); break; #ifdef CCTK_REAL4 case CCTK_VARIABLE_REAL4: - num_points = LocalReduce_Max_REAL4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); + ierr = LocalReduce_Max_REAL4(i, weight_on, weight, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers, param_table_handle); break; #endif #ifdef CCTK_REAL8 case CCTK_VARIABLE_REAL8: - num_points = LocalReduce_Max_REAL8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); + ierr = LocalReduce_Max_REAL8(i, weight_on, weight, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers, param_table_handle); break; #endif #ifdef CCTK_REAL16 case CCTK_VARIABLE_REAL16: - num_points = LocalReduce_Max_REAL16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); + ierr = LocalReduce_Max_REAL16(i, weight_on, weight, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers, param_table_handle); break; #endif case CCTK_VARIABLE_COMPLEX: - num_points = LocalReduce_Max_COMPLEX(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); + ierr = LocalReduce_Max_COMPLEX(i, weight_on, weight, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers, param_table_handle); break; #ifdef CCTK_COMPLEX8 case CCTK_VARIABLE_COMPLEX8: - num_points = LocalReduce_Max_COMPLEX8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); + ierr = LocalReduce_Max_COMPLEX8(i, weight_on, weight, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers, param_table_handle); break; #endif #ifdef CCTK_COMPLEX16 case CCTK_VARIABLE_COMPLEX16: - num_points = LocalReduce_Max_COMPLEX16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); + ierr = LocalReduce_Max_COMPLEX16(i, weight_on, weight, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers, param_table_handle); break; #endif #ifdef CCTK_COMPLEX32 case CCTK_VARIABLE_COMPLEX32: - num_points = LocalReduce_Max_COMPLEX32(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); + ierr = LocalReduce_Max_COMPLEX32(i, weight_on, weight, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, input_array_dims, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers, param_table_handle); break; #endif } } + /* Get the values of num_points and weight_sum */ + ierr = Util_TableGetInt(param_table_handle, &num_points, "num_points"); num_points--; - /* store the number of points in the paramater table */ - if ( Util_TableQueryNKeys(param_table_handle) != 0) + /* store the number of points in the paramater table and perform division */ + ierr = Util_TableGetInt(param_table_handle, &global_calling, "global_calling"); + if ( global_calling != 0) { ierr = Util_TableSetInt(param_table_handle, num_points, "num_points"); ierr = Util_TableSetInt(param_table_handle, 1,"global_operation"); - ierr = Util_TableSetInt(param_table_handle, 1,"perform_division"); } /* free memory */ |