50 _ptr.resize (n_data+1);
54 _ptr [i+1] = _ptr[i] + size_i;
61 _multi_values.resize (n_multi_data);
63 _multi_indices.resize (n_multi_data);
64 typename std::vector<size_type>::const_iterator
p = base::_indices.begin();
65 std::vector<size_type> ip (n_data);
71 std::vector<size_type> yptr (n_data+1);
75 yptr[j+1] = yptr[j] + size_j;
81 _multi_indices [yptr[j]+k] = _ptr[i] + k;
93 std::vector<size_type> msg_size (nproc, 0);
95 for (
size_type iproc = 0; iproc < nproc; iproc++) {
97 last_i = base::_starts[iproc+1]; i < last_i; i++) {
99 msg_size[iproc] += size_i;
101 if (msg_size[iproc] != 0) {
108 _multi_procs.resize (multi_nproc);
109 _multi_starts.resize (multi_nproc+1);
110 _multi_irecv2base_irecv.resize (multi_nproc);
111 _multi_starts [0] = 0;
112 for (
size_type iproc = 0, multi_iproc = 0; iproc < nproc; iproc++) {
113 if (msg_size[iproc] == 0)
continue;
114 _multi_procs [multi_iproc] = base::_procs [iproc];
115 _multi_starts [multi_iproc+1] = _multi_starts [multi_iproc] + msg_size[iproc];
116 _multi_irecv2base_irecv [multi_iproc] = iproc;