183 const ArrayView<const primitive_value_type> &value_data,
184 const ArrayView<const index_type> &index_data,
185 const ArrayView<const char_type> &char_data,
186 const Ptr<ReductTarget> &reduct_obj
209 const ArrayView<
const ConstSubVectorView<Scalar> > &sub_vecs,
210 const ArrayView<
const SubVectorView<Scalar> > &targ_sub_vecs,
211 const Ptr<ReductTarget> &reduct_obj
216 if (first_ele_offset_ == 0 && sub_dim_ < 0) {
218 op_->
apply_op(sub_vecs, targ_sub_vecs, reduct_obj);
223 (sub_vecs.size() ? sub_vecs[0].globalOffset(): targ_sub_vecs[0].globalOffset());
225 (sub_vecs.size() ? sub_vecs[0].subDim(): targ_sub_vecs[0].subDim());
228 if (globalOffset >= first_ele_offset_ + sub_dim_) {
232 if (globalOffset + subDim <= first_ele_offset_) {
238 (first_ele_offset_ > globalOffset
239 ? first_ele_offset_ - globalOffset
243 std::min(globalOffset + subDim, first_ele_offset_ + sub_dim_)
244 - (globalOffset + localOffset);
246 Array<ConstSubVectorView<Scalar> > sub_sub_vecs(sub_vecs.size());
247 for (
int k = 0; k < sub_vecs.size(); ++k) {
248 const Ordinal stride = sub_vecs[k].stride();
249 sub_sub_vecs[k].initialize(
250 globalOffset+ localOffset,
252 sub_vecs[k].values().persistingView(localOffset*stride, localSubDim*stride),
257 Array<SubVectorView<Scalar> > targ_sub_sub_vecs(targ_sub_vecs.size());
258 for (
int k = 0; k < targ_sub_vecs.size(); ++k) {
259 const Ordinal stride = targ_sub_vecs[k].stride();
260 targ_sub_sub_vecs[k].initialize(
261 globalOffset+ localOffset,
263 targ_sub_vecs[k].values().persistingView(localOffset*stride, localSubDim*stride),
268 op_->apply_op(sub_sub_vecs(), targ_sub_sub_vecs(), reduct_obj);
void apply_op(const ArrayView< const ConstSubVectorView< Scalar > > &sub_vecs, const ArrayView< const SubVectorView< Scalar > > &targ_sub_vecs, const Ptr< ReductTarget > &reduct_obj) const
Apply the reduction/transformation operator to a set of sub-vectors.
void extract_reduct_obj_state(const ReductTarget &reduct_obj, const ArrayView< primitive_value_type > &value_data, const ArrayView< index_type > &index_data, const ArrayView< char_type > &char_data) const
Extract the state of an already created reduction object.
void get_reduct_type_num_entries(const Ptr< int > &num_values, const Ptr< int > &num_indexes, const Ptr< int > &num_chars) const
Get the number of entries of each basic data type in the externalized state for a reduction object fo...
void load_reduct_obj_state(const ArrayView< const primitive_value_type > &value_data, const ArrayView< const index_type > &index_data, const ArrayView< const char_type > &char_data, const Ptr< ReductTarget > &reduct_obj) const
Load the state of an already created reduction object given arrays of primitive objects.