#include "RTOp.h"
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, const RTOp_index_type sub_dim, const RTOp_index_type global_offset, const struct RTOp_RTOp *op, RTOp_ReductTarget reduct_obj) |
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.
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 38 of file RTOp_apply_op_serial.c.