MOOCHO (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Functions
RTOp_apply_op_serial.c File Reference
#include "RTOp_apply_op_serial.h"
#include <stdlib.h>
Include dependency graph for RTOp_apply_op_serial.c:

Go to the source code of this file.

Functions

int RTOp_apply_op_serial (RTOp_index_type full_dim, const int num_vecs, const RTOp_value_type *vec_ptrs[], const ptrdiff_t vec_strides[], const int num_targ_vecs, RTOp_value_type *targ_vec_ptrs[], const ptrdiff_t targ_vec_strides[], const RTOp_index_type first_ele_in, const RTOp_index_type sub_dim_in, const RTOp_index_type global_offset_in, const struct RTOp_RTOp *op, RTOp_ReductTarget reduct_obj)
 

Function Documentation

int RTOp_apply_op_serial ( RTOp_index_type  full_dim,
const int  num_vecs,
const RTOp_value_type vec_ptrs[],
const ptrdiff_t  vec_strides[],
const int  num_targ_vecs,
RTOp_value_type targ_vec_ptrs[],
const ptrdiff_t  targ_vec_strides[],
const RTOp_index_type  first_ele,
const RTOp_index_type  sub_dim,
const RTOp_index_type  global_offset,
const struct RTOp_RTOp op,
RTOp_ReductTarget  reduct_obj 
)

Function that implements the guts an apply_op() method for dense serial vectors.

Parameters
full_dim[in] The full dimension of the vector arguments.
num_vecs[in] Number of non-mutable vectors involved in this reduction/transformation operation (see below).
vec_ptrs[in] Array (size num_vecs) of pointers to the elements of the non-mutable vectors (see below).
vec_strides[in] Array (size num_vecs) of strides between vector elements in vec_ptrs[p] (see below).
num_targ_vecs[in] Number of mutable vectors involved in this reduction/transformation operation (see below).
targ_vec_ptrs[in/out] Array (size num_targ_vecs) of pointers to the elements of the mutable vectors to be transformed (see below).
targ_vec_strides[in] Array (size num_targ_vecs) of strides between vector elements in targ_vec_ptrs[p] (see below).
first_ele[in] Identifies the first global element in the input parallel vector that defines the logical sub-vector that the RTOp operator will be applied to.
sub_dim[in] Identifies the number of elements in the input parallel vector that defines the logical sub-vector that the RTOp operator will be applied to. If sub_dim == 0 then all of the remaining global elements will be included in the logical vector.
global_offset[in] Identifies where the sub-vector selected by first_ele and sub_dim exists in the logical sub-vector that the RTOp operator will be applied to.
op[in] Reduction/transformation operator to apply over each sub-vector and use to add to the reduction target object reduct_obj (if reduct_obj != RTOp_REDUCT_OBJ_NULL).
reduct_obj[in/out] Target object of the reduction operation. This object must have been created by the RTOp_reduct_obj_create(,op&reduct_obj) function first. The reduction operation will be added to (*reduct_obj) if (*reduct_obj) has already been through a reduction. By allowing the info in (*reduct_obj) to be added to the reduction over all of these vectors, the reduction operation can be accumulated over a set of abstract vectors which can be useful for implementing composite vectors for instance. If RTOp_get_reduct_type_num_entries(op,...) returns num_values == 0, num_indexes == 0 and num_chars == 0 then reduct_obj should be set to RTOp_REDUCT_OBJ_NULL and no reduction will be performed.

This function takes care of all of the (not so ugly) details that goes on under the hood of using RTOp operators in a serial environment.

This first set of arguments defines the serial vector arguments and their data.

The set of arguments first_ele, sub_dim and global_offset defines the logical sub-vectors that the operator will be applied to. See the function RTOp_parallel_calc_overlap() for a description of what these arguments mean.

This last set of arguments passes in the RTOp operator object op and the reduction target object reduct_obj.

ToDo: Finish documentation!

Definition at line 51 of file RTOp_apply_op_serial.c.