Home | History | Annotate | Download | only in parallel

Lines Matching defs:__sd

91    *  @param __sd Pointer to algorithm data. _Result will be placed in
92 * @c __sd->_M_samples.
97 __determine_samples(_PMWMSSortingData<_RAIter>* __sd,
108 __equally_split(__sd->_M_starts[__iam + 1] - __sd->_M_starts[__iam],
112 ::new(&(__sd->_M_samples[__iam * __num_samples + __i]))
113 _ValueType(__sd->_M_source[__sd->_M_starts[__iam]
132 _PMWMSSortingData<_RAIter>* __sd,
142 __seqs(__sd->_M_num_threads);
143 for (_ThreadIndex __s = 0; __s < __sd->_M_num_threads; __s++)
144 __seqs[__s] = std::make_pair(__sd->_M_temporary[__s],
145 __sd->_M_temporary[__s]
146 + (__sd->_M_starts[__s + 1]
147 - __sd->_M_starts[__s]));
149 std::vector<_SortingPlacesIterator> __offsets(__sd->_M_num_threads);
152 if (__iam < __sd->_M_num_threads - 1)
154 __sd->_M_starts[__iam + 1], __offsets.begin(),
157 for (_ThreadIndex __seq = 0; __seq < __sd->_M_num_threads; __seq++)
160 if (__iam < (__sd->_M_num_threads - 1))
161 __sd->_M_pieces[__iam][__seq]._M_end
165 __sd->_M_pieces[__iam][__seq]._M_end =
166 __sd->_M_starts[__seq + 1] - __sd->_M_starts[__seq];
171 for (_ThreadIndex __seq = 0; __seq < __sd->_M_num_threads; __seq++)
175 __sd->_M_pieces[__iam][__seq]._M_begin =
176 __sd->_M_pieces[__iam - 1][__seq]._M_end;
179 __sd->_M_pieces[__iam][__seq]._M_begin = 0;
191 _PMWMSSortingData<_RAIter>* __sd,
201 __determine_samples(__sd, __num_samples);
206 __gnu_sequential::sort(__sd->_M_samples,
207 __sd->_M_samples
208 + (__num_samples * __sd->_M_num_threads),
213 for (_ThreadIndex __s = 0; __s < __sd->_M_num_threads; ++__s)
217 __sd->_M_pieces[__iam][__s]._M_begin =
218 std::lower_bound(__sd->_M_temporary[__s],
219 __sd->_M_temporary[__s]
220 + (__sd->_M_starts[__s + 1]
221 - __sd->_M_starts[__s]),
222 __sd->_M_samples[__num_samples * __iam],
224 - __sd->_M_temporary[__s];
227 __sd->_M_pieces[__iam][__s]._M_begin = 0;
230 (__num_samples * __sd->_M_num_threads))
231 __sd->_M_pieces[__iam][__s]._M_end =
232 std::lower_bound(__sd->_M_temporary[__s],
233 __sd->_M_temporary[__s]
234 + (__sd->_M_starts[__s + 1]
235 - __sd->_M_starts[__s]),
236 __sd->_M_samples[__num_samples * (__iam + 1)],
238 - __sd->_M_temporary[__s];
241 __sd->_M_pieces[__iam][__s]._M_end = (__sd->_M_starts[__s + 1]
242 - __sd->_M_starts[__s]);
302 * @param __sd Pointer to algorithm data.
308 parallel_sort_mwms_pu(_PMWMSSortingData<_RAIter>* __sd,
319 __sd->_M_starts[__iam + 1] - __sd->_M_starts[__iam];
325 __sd->_M_temporary[__iam] =
330 std::uninitialized_copy(__sd->_M_source + __sd->_M_starts[__iam],
331 __sd->_M_source + __sd->_M_starts[__iam]
333 __sd->_M_temporary[__iam]);
336 (__sd->_M_temporary[__iam],
337 __sd->_M_temporary[__iam] + __length_local,
341 // __sd->_M_temporary[__iam] + __length_local.
346 _Settings::get().sort_mwms_oversampling * __sd->_M_num_threads - 1;
348 (__iam, __sd, __comp, __num_samples);
352 for (_ThreadIndex __s = 0; __s < __sd->_M_num_threads; __s++)
354 __length_am += (__sd->_M_pieces[__iam][__s]._M_end
355 - __sd->_M_pieces[__iam][__s]._M_begin);
356 __offset += __sd->_M_pieces[__iam][__s]._M_begin;
362 _SeqVector __seqs(__sd->_M_num_threads);
364 for (_ThreadIndex __s = 0; __s < __sd->_M_num_threads; ++__s)
367 std::make_pair(__sd->_M_temporary[__s]
368 + __sd->_M_pieces[__iam][__s]._M_begin,
369 __sd->_M_temporary[__s]
370 + __sd->_M_pieces[__iam][__s]._M_end);
376 __sd->_M_source + __offset, __comp,
382 __sd->_M_temporary[__iam][__i].~_ValueType();
383 ::operator delete(__sd->_M_temporary[__iam]);
415 _PMWMSSortingData<_RAIter> __sd;
425 __sd._M_num_threads = __num_threads;
426 __sd._M_source = __begin;
428 __sd._M_temporary = new _ValueType*[__num_threads];
435 __sd._M_samples = static_cast<_ValueType*>
439 __sd._M_samples = 0;
441 __sd._M_offsets = new _DifferenceType[__num_threads - 1];
442 __sd._M_pieces
445 __sd._M_pieces[__s].resize(__num_threads);
446 __starts = __sd._M_starts = new _DifferenceType[__num_threads + 1];
461 parallel_sort_mwms_pu<__stable, __exact>(&__sd, __comp);
465 delete[] __sd._M_temporary;
470 __sd._M_samples[__i].~_ValueType();
471 ::operator delete(__sd._M_samples);
474 delete[] __sd._M_offsets;
475 delete[] __sd._M_pieces;