Extend parallel algorithms to work with hpx::partitioned_vector et.al.
Labels: type: enhancement, category: algorithms, category: data-structures, tag: pinned
The existing parallel algorithms should be extended to seamlessly work with distributed data structures like hpx::partitioned_vector. Unfortunately this requires additional code for each specific algorithms.
For more information about the parallel algorithms already implemented see #1141.
Here is the list of algorithms mandated by N4310 which should be ported to the distributed case:
-
adjacent_difference(see #2859, #3525) -
adjacent_find(see #2859, #3525) -
all_ofany_ofnone_of(see #2859, #3525) -
copy(see #1346)copy_n -
copy_if -
move(see #2010) -
countcount_if(see #1340) -
equalmismatch -
exclusive_scaninclusive_scan(see #2287) -
reducetransform(see #2725) -
fill(#2202) -
fill_n -
findfind_iffind_if_not(see #2792) -
find_endfind_first_of(see #2793) -
for_each -
for_each_n(see #2725) -
generate(see #1968) -
generate_n -
inner_productinplace_mergemerge -
is_heapis_heap_until -
is_partitionedis_sortedis_sorted_until -
lexicographical_compare -
max_elementmin_elementminmax_element(#1968) -
partial_sortpartial_sort_copypartitionpartition_copynth_elementsortstable_partitionstable_sort -
removeremove_copyremove_copy_ifremove_if -
replacereplace_copyreplace_copy_ifreplace_if -
reversereverse_copy -
rotaterotate_copy -
searchsearch_n -
set_differenceset_intersectionset_symmetric_differenceset_unionincludes -
swap_ranges -
uninitialized_copyuninitialized_copy_n -
uninitialized_filluninitialized_fill_n -
uniqueunique_copy
These were added by N4310:
-
transform_reduce(see #1333, #2859, #3525) -
transform_exclusive_scantransform_inclusive_scan(see #2725)