1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
/*@@
@file Reduction.c
@date Thu Apr 3 11:54:53 1997
@author Thomas Radke, Paul Walker
@desc
Various MPI reduction operators.
@enddesc
@version $Id$
@@*/
#include <stdlib.h>
#include "local_reductions.h"
static const char *rcsid = "$Header$";
CCTK_FILEVERSION(CCTDevelopment_LocalReduce_Reduction_c);
/********************************************************************
********************* External Routines **********************
********************************************************************/
/*@@
@routine LocalReduce_Reduce
@author Thomas Radke, Yaakoub El Khamra
@date
@desc
Wrapper to reduce a list of arrays.
Just calls the appropriate reduction operator and does
the type conversion of the results.
@enddesc
@history
@endhistory
@var N_dims
@vdesc number of dimensions in the *reduction*
@vtype int
@vio in
@endvar
@var operator_handle
@vdesc operator handle specificies the type of reduction we will perform
@vtype int
@vio in
@endvar
@var param_table_handle
@vdesc handle to "parameter table", a key-value table
@vtype int
@vio in
@endvar
@var N_input_arrays
@vdesc number of input arrays
@vtype int
@vio in
@endvar
@var input_array_dims
@vdesc array of input array dimensions (common to all input arrays)
@vtype const CCTK_INT
@vio in
@endvar
@var input_array_type_codes
@vdesc array of CCTK_VARIABLE_* codes giving data types of input arrays
@vtype const CCTK_INT
@vio in
@endvar
@var input_arrays
@vdesc array of pointers to input arrays
@vtype const void *const
@vio in
@endvar
@var M_output_numbers
@vdesc
@vtype int
@vio in
@endvar
@var output_number_type_codes
@vdesc array of CCTK_VARIABLE_* codes giving data types of output numbers
@vtype const CCTK_INT
@vio in
@endvar
@var output_numbers
@vdesc array[M_output_numbers] of pointers to output numbers[M_reduce_numbers]
@vtype void *const
@vio in
@endvar
@@*/
int LocalReduce_Reduce (int N_dims, int operator_handle,
int param_table_handle, int N_input_arrays,
const CCTK_INT input_array_dims[],
const CCTK_INT input_array_type_codes[],
const void *const input_arrays[],
int M_output_numbers,
const CCTK_INT output_number_type_codes[],
void * const output_numbers[],
reduction_fn_t reduction_fn)
{
int retval;
/* do the reduction on the input arrays */
retval = reduction_fn (N_dims, operator_handle,
param_table_handle, N_input_arrays,
input_array_dims, input_array_type_codes,
input_arrays, M_output_numbers,
output_number_type_codes, output_numbers);
return (retval);
}
|