Sorting and binning built on Kokkos BinSort. More...
#include <Cabana_AoSoA.hpp>#include <Cabana_DeepCopy.hpp>#include <Cabana_Slice.hpp>#include <Cabana_Utils.hpp>#include <Kokkos_Core.hpp>#include <Kokkos_Profiling_ScopedRegion.hpp>#include <Kokkos_Sort.hpp>#include <type_traits>

Go to the source code of this file.
Classes | |
| class | Cabana::BinningData< MemorySpace > |
| Data describing the bin sizes and offsets resulting from a binning operation. More... | |
| struct | Cabana::is_binning_data< const BinningData< MemorySpace > > |
| BinningData static type checker. More... | |
Namespaces | |
| namespace | Cabana |
| Core: particle data structures and algorithms. | |
Functions | |
| template<class KeyViewType, class Comparator, class ExecutionSpace = typename KeyViewType::execution_space> | |
| auto | Cabana::Impl::kokkosBinSort (KeyViewType keys, Comparator comp, const bool sort_within_bins, const std::size_t begin, const std::size_t end) |
| template<class KeyViewType, class ExecutionSpace = typename KeyViewType::execution_space> | |
| Kokkos::MinMaxScalar< typename KeyViewType::non_const_value_type > | Cabana::Impl::keyMinMax (KeyViewType keys, const std::size_t begin, const std::size_t end) |
| Given a set of keys, find the minimum and maximum over the given range. | |
| template<class KeyViewType, class ExecutionSpace = typename KeyViewType::execution_space> | |
| auto | Cabana::Impl::kokkosBinSort1d (KeyViewType keys, const int nbin, const bool sort_within_bins, const std::size_t begin, const std::size_t end) |
| template<class KeyViewType, class Comparator, class ExecutionSpace = typename KeyViewType::execution_space> | |
| auto | Cabana::sortByKeyWithComparator (KeyViewType keys, Comparator comp, const std::size_t begin, const std::size_t end, typename std::enable_if<(Kokkos::is_view< KeyViewType >::value), int >::type *=0) |
| Sort an AoSoA over a subset of its range using a general comparator over the given Kokkos View of keys. | |
| template<class KeyViewType, class Comparator, class ExecutionSpace = typename KeyViewType::execution_space> | |
| auto | Cabana::sortByKeyWithComparator (KeyViewType keys, Comparator comp, typename std::enable_if<(Kokkos::is_view< KeyViewType >::value), int >::type *=0) |
| Sort an entire AoSoA using a general comparator over the given Kokkos View of keys. | |
| template<class KeyViewType, class Comparator, class ExecutionSpace = typename KeyViewType::execution_space> | |
| auto | Cabana::binByKeyWithComparator (KeyViewType keys, Comparator comp, const std::size_t begin, const std::size_t end, typename std::enable_if<(Kokkos::is_view< KeyViewType >::value), int >::type *=0) |
| Bin an AoSoA over a subset of its range using a general comparator over the given Kokkos View of keys. | |
| template<class KeyViewType, class Comparator, class ExecutionSpace = typename KeyViewType::execution_space> | |
| auto | Cabana::binByKeyWithComparator (KeyViewType keys, Comparator comp, typename std::enable_if<(Kokkos::is_view< KeyViewType >::value), int >::type *=0) |
| Bin an entire AoSoA using a general comparator over the given Kokkos View of keys. | |
| template<class KeyViewType, class ExecutionSpace = typename KeyViewType::execution_space> | |
| auto | Cabana::sortByKey (KeyViewType keys, const std::size_t begin, const std::size_t end, typename std::enable_if<(Kokkos::is_view< KeyViewType >::value), int >::type *=0) |
| Sort an AoSoA over a subset of its range based on the associated key values. | |
| template<class KeyViewType, class ExecutionSpace = typename KeyViewType::execution_space> | |
| auto | Cabana::sortByKey (KeyViewType keys, typename std::enable_if<(Kokkos::is_view< KeyViewType >::value), int >::type *=0) |
| Sort an entire AoSoA based on the associated key values. | |
| template<class KeyViewType, class ExecutionSpace = typename KeyViewType::execution_space> | |
| auto | Cabana::binByKey (KeyViewType keys, const int nbin, const std::size_t begin, const std::size_t end, typename std::enable_if<(Kokkos::is_view< KeyViewType >::value), int >::type *=0) |
| Bin an AoSoA over a subset of its range based on the associated key values and number of bins. The bins are evenly divided over the range of key values. | |
| template<class KeyViewType, class ExecutionSpace = typename KeyViewType::execution_space> | |
| auto | Cabana::binByKey (KeyViewType keys, const int nbin, typename std::enable_if<(Kokkos::is_view< KeyViewType >::value), int >::type *=0) |
| Bin an entire AoSoA based on the associated key values and number of bins. The bins are evenly divided over the range of key values. | |
| template<class SliceType, class ExecutionSpace = typename SliceType::execution_space> | |
| auto | Cabana::sortByKey (SliceType slice, const std::size_t begin, const std::size_t end, typename std::enable_if<(is_slice< SliceType >::value), int >::type *=0) |
| Sort an AoSoA over a subset of its range based on the associated slice of keys. | |
| template<class SliceType, class ExecutionSpace = typename SliceType::execution_space> | |
| auto | Cabana::sortByKey (SliceType slice, typename std::enable_if<(is_slice< SliceType >::value), int >::type *=0) |
| Sort an entire AoSoA based on the associated slice of keys. | |
| template<class SliceType, class ExecutionSpace = typename SliceType::execution_space> | |
| auto | Cabana::binByKey (SliceType slice, const int nbin, const std::size_t begin, const std::size_t end, typename std::enable_if<(is_slice< SliceType >::value), int >::type *=0) |
| Bin an AoSoA over a subset of its range based on the associated slice of keys. | |
| template<class SliceType, class ExecutionSpace = typename SliceType::execution_space> | |
| auto | Cabana::binByKey (SliceType slice, const int nbin, typename std::enable_if<(is_slice< SliceType >::value), int >::type *=0) |
| Bin an entire AoSoA based on the associated slice of keys. | |
| template<class BinningDataType, class AoSoA_t, class ExecutionSpace = typename BinningDataType::execution_space> | |
| void | Cabana::permute (const BinningDataType &binning_data, AoSoA_t &aosoa, typename std::enable_if<(is_binning_data< BinningDataType >::value &&is_aosoa< AoSoA_t >::value), int >::type *=0) |
| Given binning data permute an AoSoA. | |
| template<class BinningDataType, class SliceType, class ExecutionSpace = typename BinningDataType::execution_space> | |
| void | Cabana::permute (const BinningDataType &binning_data, SliceType &slice, typename std::enable_if<(is_binning_data< BinningDataType >::value &&is_slice< SliceType >::value), int >::type *=0) |
| Given binning data permute a slice. | |
| template<class BinningDataType, class ViewType, class MemorySpace = typename BinningDataType::memory_space> | |
| void | Cabana::permute (const BinningDataType &binning_data, ViewType &view, typename std::enable_if<(is_binning_data< BinningDataType >::value &&Kokkos::is_view< ViewType >::value), int >::type *=0) |
| Given binning data permute a View. | |
Sorting and binning built on Kokkos BinSort.
| auto Cabana::Impl::kokkosBinSort | ( | KeyViewType | keys, |
| Comparator | comp, | ||
| const bool | sort_within_bins, | ||
| const std::size_t | begin, | ||
| const std::size_t | end ) |
Create a permutation vector over a range subset using a comparator over the given Kokkos View of keys.
| auto Cabana::Impl::kokkosBinSort1d | ( | KeyViewType | keys, |
| const int | nbin, | ||
| const bool | sort_within_bins, | ||
| const std::size_t | begin, | ||
| const std::size_t | end ) |
Sort an AoSoA over a subset of its range using the given Kokkos View of keys.