aboutsummaryrefslogtreecommitdiff
path: root/src/ReductionSum.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ReductionSum.c')
-rw-r--r--src/ReductionSum.c68
1 files changed, 31 insertions, 37 deletions
diff --git a/src/ReductionSum.c b/src/ReductionSum.c
index 480e855..d132611 100644
--- a/src/ReductionSum.c
+++ b/src/ReductionSum.c
@@ -139,6 +139,7 @@ static int ReductionSum (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;
@@ -153,17 +154,12 @@ static int ReductionSum (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 */
@@ -209,20 +205,16 @@ static int ReductionSum (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)
{
@@ -257,74 +249,78 @@ static int ReductionSum (int N_dims, int operator_handle,
{
/* in values type switches*/
case CCTK_VARIABLE_BYTE:
- num_points = LocalReduce_Sum_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);
+ num_points = LocalReduce_Sum_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_Sum_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);
+ num_points = LocalReduce_Sum_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_Sum_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);
+ num_points = LocalReduce_Sum_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_Sum_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);
+ num_points = LocalReduce_Sum_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_Sum_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);
+ num_points = LocalReduce_Sum_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_Sum_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);
+ num_points = LocalReduce_Sum_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_Sum_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);
+ num_points = LocalReduce_Sum_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_Sum_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);
+ num_points = LocalReduce_Sum_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_Sum_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);
+ num_points = LocalReduce_Sum_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_Sum_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);
+ num_points = LocalReduce_Sum_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_Sum_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);
+ num_points = LocalReduce_Sum_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_Sum_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);
+ num_points = LocalReduce_Sum_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_Sum_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);
+ num_points = LocalReduce_Sum_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_Sum_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);
+ num_points = LocalReduce_Sum_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");
+ ierr = Util_TableGetReal(param_table_handle, &weight_sum, "weight_sum");
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, 3,"global_operation");
@@ -343,5 +339,3 @@ static int ReductionSum (int N_dims, int operator_handle,
return (0);
}
-
-