cuda-kat icon indicating copy to clipboard operation
cuda-kat copied to clipboard

Add missing <algorithm> functions to the warp and block sequence-ops

Open eyalroz opened this issue 5 years ago • 0 comments

We need most, if not all, of the functions in <algorithm> and <numeric> available on the device, for execution at the warp and block level. (But not the uninitialized memory stuff, nor qsort/bsearch etc.)

Implementation status:

Non-modifying sequence operations

  • [ ] all_of
  • [ ] any_of
  • [ ] none_of
  • [ ] for_each
  • [ ] for_each_n
  • [x] count
  • [x] count_if
  • [ ] mismatch
  • [ ] find
  • [ ] find_if
  • [ ] find_if_not
  • [ ] find_end
  • [ ] find_first_of
  • [ ] adjacent_find
  • [ ] search
  • [ ] search_n

Modifying sequence operations

  • [ ] copy
  • [ ] copy_if
  • [ ] copy_n
  • [ ] copy_backward
  • [ ] move
  • [ ] move_backward
  • [ ] fill
  • [ ] fill_n
  • [ ] transform
  • [ ] generate
  • [ ] generate_n
  • [ ] remove
  • [ ] remove_if
  • [ ] remove_copy
  • [ ] remove_copy_if
  • [ ] replace
  • [ ] replace_if
  • [ ] replace_copy
  • [ ] replace_copy_if
  • [ ] swap
  • [ ] swap_ranges
  • [ ] iter_swap
  • [ ] reverse
  • [ ] reverse_copy
  • [ ] rotate
  • [ ] rotate_copy
  • [ ] shift_left
  • [ ] shift_right
  • [ ] random_shuffle
  • [ ] shuffle
  • [ ] sample
  • [ ] unique
  • [ ] unique_copy

Partitioning operations

  • [ ] is_partitioned
  • [ ] partition
  • [ ] partition_copy
  • [ ] stable_partition
  • [ ] partition_point

Sorting operations

  • [ ] is_sorted
  • [ ] is_sorted_until
  • [ ] sort
  • [ ] partial_sort
  • [ ] partial_sort_copy
  • [ ] stable_sort
  • [ ] nth_element

Binary search operations (on sorted ranges)

  • [ ] lower_bound
  • [ ] upper_bound
  • [ ] binary_search
  • [ ] equal_range

Other operations on sorted ranges

  • [ ] merge
  • [ ] inplace_merge

Set operations (on sorted ranges)

includes

  • [ ] set_difference
  • [ ] set_intersection
  • [ ] set_symmetric_difference
  • [ ] set_union

Heap operations

  • [ ] is_heap
  • [ ] is_heap_until
  • [ ] make_heap
  • [ ] push_heap
  • [ ] pop_heap
  • [ ] sort_heap

Minimum/maximum operations

  • [ ] max
  • [ ] max_element
  • [ ] min
  • [ ] min_element
  • [ ] minmax
  • [ ] minmax_element
  • [ ] clamp

Comparison operations

  • [ ] equal
  • [ ] lexicographical_compare
  • [ ] compare_3way
  • [ ] lexicographical_compare_3way

Permutation operations

  • [ ] is_permutation
  • [ ] next_permutation
  • [ ] prev_permutation

Numeric operations

  • [ ] iota
  • [ ] accumulate
  • [ ] inner_product
  • [ ] adjacent_difference
  • [ ] partial_sum
  • [ ] reduce
  • [ ] exclusive_scan
  • [ ] inclusive_scan
  • [ ] transform_reduce
  • [ ] transform_exclusive_scan
  • [ ] transform_inclusive_scan

eyalroz avatar May 12 '19 22:05 eyalroz