diff options
author | goodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2004-08-12 17:31:49 +0000 |
---|---|---|
committer | goodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2004-08-12 17:31:49 +0000 |
commit | ae8ba8ef3d6141956d20ebdafce072cd9b4ad4ff (patch) | |
tree | 78fe0f0f25e772e9b8d206db76de26bc9f1e25cf /src/include/cctk_Reduction.h | |
parent | e5ee137768e7eede064dcf150346f0a0cf099fad (diff) |
New reduction APIs - as done by Yaakoub.
git-svn-id: http://svn.cactuscode.org/flesh/trunk@3829 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'src/include/cctk_Reduction.h')
-rw-r--r-- | src/include/cctk_Reduction.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/include/cctk_Reduction.h b/src/include/cctk_Reduction.h index e61cebc2..1a20ec8b 100644 --- a/src/include/cctk_Reduction.h +++ b/src/include/cctk_Reduction.h @@ -33,6 +33,18 @@ void *arg_outVals, \ int arg_outType +#define REDUCTION_LOCAL_ARRAY_OPERATOR_REGISTER_ARGLIST \ + 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[] + #ifdef __cplusplus extern "C" { @@ -47,6 +59,16 @@ typedef int (*cReduceOperator) (const cGH *GH, int arg_num_invars, const int arg_varlist[]); +/* prototype for local array reduction operator routine */ +typedef int (*cLocalArrayReduceOperator) (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[]); + int CCTK_Reduce(const cGH *GH, int proc, int operation_handle, @@ -76,6 +98,36 @@ const char *CCTK_ReduceOperator (int handle); int CCTK_NumReduceOperators(void); +/* new local array reduction API */ +int CCTK_ReduceLocalArrays(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[]); + +int CCTK_LocalArrayReductionHandle(const char *reduction); + +#define CCTK_RegisterLocalArrayReductionOperator(a,b) \ + CCTKi_RegisterLocalArrayReductionOperator(CCTK_THORNSTRING,a,b) + +int CCTKi_RegisterLocalArrayReductionOperator(const char *thorn, + cLocalArrayReduceOperator operatorGV, + const char *name); + +int CCTK_LocalArrayReductionHandle(const char *reduction); + +int CCTK_RegisterReductionLocalArrayOperator( + int (*function)(REDUCTION_LOCAL_ARRAY_OPERATOR_REGISTER_ARGLIST), + const char *name); + +const char *CCTK_LocalArrayReduceOperatorImplementation(int handle); + +const char *CCTK_LocalArrayReduceOperator (int handle); + + /* FIXME: old interface - should go */ int CCTK_ReduceLocalScalar (const cGH *GH, int proc, int operation_handle, const void *inScalar, void *outScalar, int dataType); @@ -115,6 +167,8 @@ int CCTK_ReduceArray(const cGH *GH, int num_in_arrays, int type_in_arrays, ... ); + + #ifdef __cplusplus } |