36 for (
index i = 0; i < o_size; i++)
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);
45 for (
index i = 0; i < o_size; i++)
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.