Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
batcherOddEvenSort.cpp File Reference

Batcher odd-even mergesort, native for any length. More...

#include "shambase/exception.hpp"
#include "shamalgs/details/algorithm/batcherOddEvenSort.hpp"
#include "shambackends/kernel_call.hpp"
#include <algorithm>
#include <stdexcept>
#include <utility>
#include <vector>
Include dependency graph for batcherOddEvenSort.cpp:

Go to the source code of this file.

Classes

struct  shamalgs::algorithm::details::OddEvenOrderingPrimitive< Tkey, Tval >
 Device side primitives of the odd-even merge network. More...

Namespaces

namespace  shamalgs
 namespace to contain everything implemented by shamalgs
namespace  shamalgs::algorithm
 namespace to store algorithms implemented by shamalgs
namespace  shamalgs::algorithm::details
 namespace to store algorithms implemented by shamalgs

Functions

template<class Tkey, class Tval>
void shamalgs::algorithm::details::sort_by_key_batcher_odd_even (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< Tkey > &buf_key, sham::DeviceBuffer< Tval > &buf_values, u32 len)
 Sort key-value pairs of any length using a Batcher odd-even merge network.
template<class Tkey, class Tval>
void shamalgs::algorithm::details::sort_by_key_batcher_odd_even_host_reference (std::vector< Tkey > &keys, std::vector< Tval > &values)
 Host reference of sort_by_key_batcher_odd_even.
template void shamalgs::algorithm::details::sort_by_key_batcher_odd_even< u32, u32 > (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< u32 > &buf_key, sham::DeviceBuffer< u32 > &buf_values, u32 len)
template void shamalgs::algorithm::details::sort_by_key_batcher_odd_even< u64, u32 > (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< u64 > &buf_key, sham::DeviceBuffer< u32 > &buf_values, u32 len)
template void shamalgs::algorithm::details::sort_by_key_batcher_odd_even< f32, f32 > (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f32 > &buf_key, sham::DeviceBuffer< f32 > &buf_values, u32 len)
template void shamalgs::algorithm::details::sort_by_key_batcher_odd_even< f64, f64 > (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f64 > &buf_key, sham::DeviceBuffer< f64 > &buf_values, u32 len)
template void shamalgs::algorithm::details::sort_by_key_batcher_odd_even< f32, u32 > (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f32 > &buf_key, sham::DeviceBuffer< u32 > &buf_values, u32 len)
template void shamalgs::algorithm::details::sort_by_key_batcher_odd_even< f64, u32 > (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f64 > &buf_key, sham::DeviceBuffer< u32 > &buf_values, u32 len)
template void shamalgs::algorithm::details::sort_by_key_batcher_odd_even_host_reference< u32, u32 > (std::vector< u32 > &keys, std::vector< u32 > &values)
template void shamalgs::algorithm::details::sort_by_key_batcher_odd_even_host_reference< u64, u32 > (std::vector< u64 > &keys, std::vector< u32 > &values)
template void shamalgs::algorithm::details::sort_by_key_batcher_odd_even_host_reference< f32, f32 > (std::vector< f32 > &keys, std::vector< f32 > &values)
template void shamalgs::algorithm::details::sort_by_key_batcher_odd_even_host_reference< f32, u32 > (std::vector< f32 > &keys, std::vector< u32 > &values)
template void shamalgs::algorithm::details::sort_by_key_batcher_odd_even_host_reference< f64, u32 > (std::vector< f64 > &keys, std::vector< u32 > &values)
template void shamalgs::algorithm::details::sort_by_key_batcher_odd_even_host_reference< f64, f64 > (std::vector< f64 > &keys, std::vector< f64 > &values)

Detailed Description

Batcher odd-even mergesort, native for any length.

Author
Timothée David–Cléris (tim.s.nosp@m.hamr.nosp@m.ock@p.nosp@m.roto.nosp@m.n.me)

Definition in file batcherOddEvenSort.cpp.