47 #include "RTOp_apply_op_serial.h"
51 int RTOp_apply_op_serial(
52 RTOp_index_type full_dim
53 ,
const int num_vecs,
const RTOp_value_type* vec_ptrs[],
const ptrdiff_t vec_strides[]
54 ,
const int num_targ_vecs, RTOp_value_type* targ_vec_ptrs[],
const ptrdiff_t targ_vec_strides[]
55 ,
const RTOp_index_type first_ele_in,
const RTOp_index_type sub_dim_in,
const RTOp_index_type global_offset_in
57 ,RTOp_ReductTarget reduct_obj
61 RTOp_index_type sub_dim = 0;
67 assert( num_vecs || num_targ_vecs );
69 assert( vec_ptrs != NULL );
71 assert( targ_vec_ptrs != NULL );
72 assert( 0 <= sub_dim_in && sub_dim_in <= full_dim );
74 sub_dim = sub_dim_in ? sub_dim_in : full_dim - (first_ele_in - 1);
78 for( k = 0; k < num_vecs; ++k ) {
80 assert( vec_ptrs[k] != NULL );
85 ,vec_ptrs[k] + (first_ele_in -1) * vec_strides[k]
93 for( k = 0; k < num_targ_vecs; ++k ) {
95 assert( targ_vec_ptrs[k] != NULL );
100 ,targ_vec_ptrs[k] + (first_ele_in -1) * targ_vec_strides[k]
107 err =
RTOp_apply_op( op, num_vecs, sub_vecs, num_targ_vecs, targ_sub_vecs, reduct_obj );
109 if( sub_vecs ) free( sub_vecs );
110 if( targ_sub_vecs ) free( targ_sub_vecs );
void RTOp_mutable_sub_vector(RTOp_index_type global_offset, RTOp_index_type sub_dim, RTOp_value_type values[], ptrdiff_t values_stride, struct RTOp_MutableSubVector *sub_vec)
void RTOp_sub_vector(RTOp_index_type global_offset, RTOp_index_type sub_dim, const RTOp_value_type values[], ptrdiff_t values_stride, struct RTOp_SubVector *sub_vec)
int RTOp_apply_op(const struct RTOp_RTOp *op, const int num_vecs, const struct RTOp_SubVector sub_vecs[], const int num_targ_vecs, const struct RTOp_MutableSubVector targ_sub_vecs[], RTOp_ReductTarget reduct_obj)