RAJA
RAJA provides a collection of platform portability abstractions for C++ HPC applications.
Classes | Namespaces | Functions
sort.hpp File Reference

Header file providing RAJA sort templates. More...

#include "RAJA/config.hpp"
#include <iterator>
#include <memory>
#include "RAJA/pattern/detail/algorithm.hpp"
#include "RAJA/util/macros.hpp"
#include "RAJA/util/concepts.hpp"
#include "RAJA/util/math.hpp"

Go to the source code of this file.

Classes

struct  RAJA::detail::intro_sort_device_max_depth
 max recursion depth for intro sort when compiling device code. More...
 
struct  RAJA::detail::intro_sort_insertion_sort_cutoff
 cutoff for intro sort to use insertion sort on small ranges. More...
 

Namespaces

 RAJA
 
 RAJA::detail
 

Functions

template<typename Iter , typename Predicate >
RAJA_HOST_DEVICE RAJA_INLINE Iter RAJA::detail::partition (Iter begin, Iter end, Predicate pred)
 unstable partition given range inplace using predicate function and using O(N) predicate evaluations and O(1) memory More...
 
template<typename Iter , typename Compare >
RAJA_HOST_DEVICE RAJA_INLINE void RAJA::detail::insertion_sort (Iter begin, Iter end, Compare comp)
 stable insertion sort given range inplace using comparison function and using O(N^2) comparisons and O(1) memory More...
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE size_t RAJA::detail::num_shell_strides ()
 get number of strides for shell sort More...
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE long long unsigned RAJA::detail::get_shell_stride (int i)
 get strides for shell sort More...
 
template<typename Iter , typename Compare >
RAJA_HOST_DEVICE RAJA_INLINE void RAJA::detail::shell_sort (Iter begin, Iter end, Compare comp)
 unstable shell sort given range inplace using comparison function and using O(N^?) comparisons and O(1) memory More...
 
template<typename Iter , typename Compare >
RAJA_HOST_DEVICE RAJA_INLINE void RAJA::detail::heapify (Iter begin, Iter root, Iter end, Compare comp)
 insert the given element into the heaps below it using comparison function and using O(lg(N)) comparisons and O(1) memory More...
 
template<typename Iter , typename Compare >
RAJA_HOST_DEVICE void RAJA::detail::heap_sort (Iter begin, Iter end, Compare comp)
 unstable heap sort given range inplace using comparison function and using O(N*lg(N)) comparisons and O(1) memory More...
 
template<typename Iter , typename Compare >
RAJA_HOST_DEVICE void RAJA::detail::intro_sort_depth (Iter begin, Iter end, Compare comp, unsigned depth)
 unstable intro sort given range inplace using comparison function and using O(N*lg(N)) comparisons and O(lg(N)) memory, with limited depth. More...
 
template<typename Iter , typename Compare >
RAJA_HOST_DEVICE void RAJA::detail::intro_sort (Iter begin, Iter end, Compare comp)
 unstable intro sort given range inplace using comparison function and using O(N*lg(N)) comparisons and O(lg(N)) memory More...
 
template<typename Iter , typename Compare >
void RAJA_INLINE RAJA::detail::inplace_merge (Iter first, Iter middle, Iter last, Compare comp)
 merge a range with midpoint using comparison function with local range/2 copy More...
 
template<typename Iter1 , typename Iter2 , typename OutIter , typename Compare >
void RAJA_INLINE RAJA::detail::merge_like_std (Iter1 first1, Iter1 last1, Iter2 first2, Iter2 last2, OutIter d_first, Compare comp)
 merge given two ranges using comparison function while copies are outside, somewhat follows STL API More...
 
template<typename Iter , typename Compare >
RAJA_INLINE void RAJA::detail::merge_sort (Iter begin, Iter end, Compare comp)
 stable merge sort given range inplace using comparison function and using O(N*lg(N)) comparisons and O(N) memory More...
 
template<typename Container , typename Compare = operators::less<detail::ContainerVal<Container>>>
RAJA_HOST_DEVICE RAJA_INLINE concepts::enable_if< type_traits::is_range< Container > > RAJA::insertion_sort (Container &&c, Compare comp=Compare {})
 stable insertion sort given range inplace using comparison function and using O(N^2) comparisons and O(1) memory More...
 
template<typename Container , typename Compare = operators::less<detail::ContainerVal<Container>>>
RAJA_HOST_DEVICE RAJA_INLINE concepts::enable_if< type_traits::is_range< Container > > RAJA::shell_sort (Container &&c, Compare comp=Compare {})
 unstable shell sort given range inplace using comparison function and using O(N^?) comparisons and O(1) memory More...
 
template<typename Container , typename Compare = operators::less<detail::ContainerVal<Container>>>
RAJA_HOST_DEVICE RAJA_INLINE concepts::enable_if< type_traits::is_range< Container > > RAJA::heap_sort (Container &&c, Compare comp=Compare {})
 unstable heap sort given range inplace using comparison function and using O(N*lg(N)) comparisons and O(1) memory More...
 
template<typename Container , typename Compare = operators::less<detail::ContainerVal<Container>>>
RAJA_HOST_DEVICE RAJA_INLINE concepts::enable_if< type_traits::is_range< Container > > RAJA::intro_sort (Container &&c, Compare comp=Compare {})
 unstable intro sort given range inplace using comparison function and using O(N*lg(N)) comparisons and O(lg(N)) memory More...
 
template<typename Container , typename Compare = operators::less<detail::ContainerVal<Container>>>
RAJA_INLINE concepts::enable_if< type_traits::is_range< Container > > RAJA::merge_sort (Container &&c, Compare comp=Compare {})
 stable merge sort given range inplace using comparison function and using O(N*lg(N)) comparisons and O(N) memory More...
 

Detailed Description

Header file providing RAJA sort templates.