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 DeviceType = typename BinningDataType::device_type> | |
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.