38 while (
i + 1 < o_size && (blk_sizes[
i] * sizeofElem + disps[
i] == disps[
i + 1]))
42 std::vector<TBlkSiz> new_blk_sizes(n_size, 0);
43 std::vector<TDisp> new_disps(n_size);
47 new_blk_sizes[n_size] += blk_sizes[
i];
48 new_disps[n_size] = disps[
i];
49 while (
i + 1 < o_size && (blk_sizes[
i] * sizeofElem + disps[
i] == disps[
i + 1]))
52 new_blk_sizes[n_size] += blk_sizes[
i];
56 return std::make_tuple(n_size, new_blk_sizes, new_disps);
auto optimize_hindexed_layout(index o_size, TBlkSiz *blk_sizes, TDisp *disps, TSizeof sizeofElem)
Coalesce contiguous blocks in an MPI_Type_create_hindexed layout.