cuda-kat
cuda-kat copied to clipboard
Add missing <algorithm> functions to the warp and block sequence-ops
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