Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extend parallel algorithms to work with hpx::partitioned_vector et.al. #1338

Open
hkaiser opened this issue Dec 25, 2014 · 10 comments
Open

Extend parallel algorithms to work with hpx::partitioned_vector et.al. #1338

hkaiser opened this issue Dec 25, 2014 · 10 comments

Comments

@hkaiser
Copy link
Member

@hkaiser hkaiser commented Dec 25, 2014

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_of any_of none_of (see #2859, #3525)
  • copy (see #1346) copy_n
  • copy_if
  • move (see #2010)
  • count count_if (see #1340)
  • equal mismatch
  • exclusive_scan inclusive_scan (see #2287)
  • reduce transform (see #2725)
  • fill (#2202)
  • fill_n
  • find find_if find_if_not (see #2792)
  • find_end find_first_of (see #2793)
  • for_each
  • for_each_n (see #2725)
  • generate (see #1968)
  • generate_n
  • inner_product inplace_merge merge
  • is_heap is_heap_until
  • is_partitioned is_sorted is_sorted_until
  • lexicographical_compare
  • max_element min_element minmax_element (#1968)
  • partial_sort partial_sort_copy partition partition_copy nth_element sort stable_partition stable_sort
  • remove remove_copy remove_copy_if remove_if
  • replace replace_copy replace_copy_if replace_if
  • reverse reverse_copy
  • rotate rotate_copy
  • search search_n
  • set_difference set_intersection set_symmetric_difference set_union includes
  • swap_ranges
  • uninitialized_copy uninitialized_copy_n
  • uninitialized_fill uninitialized_fill_n
  • unique unique_copy

These were added by N4310:

  • transform_reduce (see #1333, #2859, #3525)
  • transform_exclusive_scan transform_inclusive_scan (see #2725)
@taeguk
Copy link
Member

@taeguk taeguk commented Mar 28, 2017

@hkaiser exclusive_scan and inclusive_scan is not checked although these are already implemented.

@hkaiser
Copy link
Member Author

@hkaiser hkaiser commented Mar 28, 2017

@taeguk right, thanks for the heads-up. Should be fine now.

@hkaiser hkaiser changed the title Extend parallel algorithms to work with hpx::vector et.al. Extend parallel algorithms to work with hpx::partitioned_vector et.al. Mar 28, 2017
@taeguk
Copy link
Member

@taeguk taeguk commented Mar 28, 2017

@hkaiser It seems that there are only two distributed data structures. (hpx::partitioned_vector and hpx::unordered_map). Is it right?

@hkaiser
Copy link
Member Author

@hkaiser hkaiser commented Mar 28, 2017

@hkaiser It seems that there are only two distributed data structures. ( hpx::partitioned_vector and hpx::unordered_map ). Is it right?

Yes. hpx::unordered_map has no iterators implemented yet, however.

@mcopik
Copy link
Contributor

@mcopik mcopik commented Mar 31, 2017

@hkaiser According to the issue progress tracker, transform_*_scan have been added with PR #2287 but it looks that only regular scans have been added there. I don't see transform scans in hpx/parallel/segmented_algorithms.

@hkaiser
Copy link
Member Author

@hkaiser hkaiser commented Mar 31, 2017

@mcopik Thanks, I fixed the list above.

@brjsp
Copy link
Contributor

@brjsp brjsp commented Apr 2, 2018

Actually, copy_n already seems to work: brjsp@694c725

@hkaiser hkaiser added the tag: pinned label Jun 30, 2019
@tapaswenipathak
Copy link
Contributor

@tapaswenipathak tapaswenipathak commented Sep 4, 2019

Hi @hkaiser: Is the task list is most recent? Can I PR or is the ticket for internal folks?

@hkaiser
Copy link
Member Author

@hkaiser hkaiser commented Sep 4, 2019

@tapaswenipathak I think the list above reflects the current state. Please feel free to work on this! Also, please don't hesitate to ask, though - this might be slightly more complex than the average 'run of the mill' ticket. The iterative, non-modifying algorithms (equal, mismatch) might be a good starting point.

@tapaswenipathak
Copy link
Contributor

@tapaswenipathak tapaswenipathak commented Sep 4, 2019

oh lol, ok. sure. thanks for specifying. 😄

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Standard Algorithms
  
Open Tickets
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
6 participants
You can’t perform that action at this time.