Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
Classes | Namespaces | Functions
numeric.hpp File Reference
#include "shambase/assert.hpp"
#include "shambase/memory.hpp"
#include "shamalgs/collective/reduction.hpp"
#include "shambackends/DeviceBuffer.hpp"
#include "shambackends/DeviceScheduler.hpp"
#include "shambackends/kernel_call.hpp"
#include "shambackends/sycl.hpp"
+ Include dependency graph for numeric.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  shamalgs::numeric::histogram_result< T >
 
struct  shamalgs::numeric::BinnedCompute< T >
 Structure holding the result of binning values for further computation. More...
 

Namespaces

namespace  shamalgs
 namespace to contain everything implemented by shamalgs
 
namespace  shamalgs::numeric
 namespace containing the numeric algorithms of shamalgs
 

Functions

template<class T >
sycl::buffer< T > shamalgs::numeric::scan_exclusive (sycl::queue &q, sycl::buffer< T > &buf1, u32 len)
 Computes the exclusive sum of elements in a SYCL buffer.
 
template<class T >
sham::DeviceBuffer< T > shamalgs::numeric::scan_exclusive (sham::DeviceScheduler_ptr sched, sham::DeviceBuffer< T > &buf1, u32 len)
 Compute the exclusive sum of a buffer on the device.
 
template<class T >
sycl::buffer< T > shamalgs::numeric::scan_inclusive (sycl::queue &q, sycl::buffer< T > &buf1, u32 len)
 
template<class T >
void shamalgs::numeric::scan_exclusive_in_place (sycl::queue &q, sycl::buffer< T > &buf, u32 len)
 
template<class T >
void shamalgs::numeric::scan_inclusive_in_place (sycl::queue &q, sycl::buffer< T > &buf, u32 len)
 
std::tuple< std::optional< sycl::buffer< u32 > >, u32shamalgs::numeric::stream_compact (sycl::queue &q, sycl::buffer< u32 > &buf_flags, u32 len)
 Stream compaction algorithm.
 
sham::DeviceBuffer< u32shamalgs::numeric::stream_compact (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< u32 > &buf_flags, u32 len)
 Stream compaction algorithm.
 
template<class Tret , class T >
sham::DeviceBuffer< Tret > shamalgs::numeric::device_histogram (const sham::DeviceScheduler_ptr &sched, const sham::DeviceBuffer< T > &bin_edges, u64 nbins, const sham::DeviceBuffer< T > &values, u32 len)
 Compute the histogram of values between bin_edges.
 
template<class T >
sham::DeviceBuffer< u64shamalgs::numeric::device_histogram_u64 (const sham::DeviceScheduler_ptr &sched, const sham::DeviceBuffer< T > &bin_edges, u64 nbins, const sham::DeviceBuffer< T > &values, u32 len)
 
template<class T >
sham::DeviceBuffer< u32shamalgs::numeric::device_histogram_u32 (const sham::DeviceScheduler_ptr &sched, const sham::DeviceBuffer< T > &bin_edges, u64 nbins, const sham::DeviceBuffer< T > &values, u32 len)
 
template<class T >
histogram_result< T > shamalgs::numeric::device_histogram_full (const sham::DeviceScheduler_ptr &sched, const sham::DeviceBuffer< T > &bin_edges, u64 nbins, const sham::DeviceBuffer< T > &values, u32 len)
 Compute the histogram and bin properties (center, width) for a set of values and bin edges.
 
template<class T >
BinnedCompute< T > shamalgs::numeric::binned_init_compute (const sham::DeviceScheduler_ptr &sched, const sham::DeviceBuffer< T > &bin_edges, u64 nbins, const sham::DeviceBuffer< T > &values, const sham::DeviceBuffer< T > &keys, u32 len)
 Prepare binned data for per-bin computation.
 
template<class Tret , class T , class Fct >
sham::DeviceBuffer< Tret > shamalgs::numeric::binned_compute (const sham::DeviceScheduler_ptr &sched, const sham::DeviceBuffer< T > &bin_edges, u64 nbins, const sham::DeviceBuffer< T > &values, const sham::DeviceBuffer< T > &keys, u32 len, Fct &&fct)
 Perform a custom reduction or computation over values in each bin.
 
template<class T >
sham::DeviceBuffer< T > shamalgs::numeric::binned_sum (const sham::DeviceScheduler_ptr &sched, const sham::DeviceBuffer< T > &bin_edges, u64 nbins, const sham::DeviceBuffer< T > &values, const sham::DeviceBuffer< T > &keys, u32 len)
 Compute the sum of values in each bin.
 
template<class T >
sham::DeviceBuffer< T > shamalgs::numeric::binned_average (const sham::DeviceScheduler_ptr &sched, const sham::DeviceBuffer< T > &bin_edges, u64 nbins, const sham::DeviceBuffer< T > &values, const sham::DeviceBuffer< T > &keys, u32 len)
 Compute the average of values in each bin.
 
template<class Tret , class T >
sham::DeviceBuffer< Tret > shamalgs::numeric::device_histogram_mpi (const sham::DeviceScheduler_ptr &sched, const sham::DeviceBuffer< T > &bin_edges, u64 nbins, const sham::DeviceBuffer< T > &values, u32 len)
 Compute the histogram of values between bin_edges across all MPI ranks.
 
template<class T >
sham::DeviceBuffer< u64shamalgs::numeric::device_histogram_u64_mpi (const sham::DeviceScheduler_ptr &sched, const sham::DeviceBuffer< T > &bin_edges, u64 nbins, const sham::DeviceBuffer< T > &values, u32 len)
 Compute the u64 histogram of values between bin_edges across all MPI ranks.
 
template<class T >
sham::DeviceBuffer< u32shamalgs::numeric::device_histogram_u32_mpi (const sham::DeviceScheduler_ptr &sched, const sham::DeviceBuffer< T > &bin_edges, u64 nbins, const sham::DeviceBuffer< T > &values, u32 len)
 Compute the u32 histogram of values between bin_edges across all MPI ranks.
 
template<class T >
sham::DeviceBuffer< T > shamalgs::numeric::binned_sum_mpi (const sham::DeviceScheduler_ptr &sched, const sham::DeviceBuffer< T > &bin_edges, u64 nbins, const sham::DeviceBuffer< T > &values, const sham::DeviceBuffer< T > &keys, u32 len)
 Compute the sum of values in each bin across all MPI ranks.
 
template<class T >
sham::DeviceBuffer< T > shamalgs::numeric::binned_average_mpi (const sham::DeviceScheduler_ptr &sched, const sham::DeviceBuffer< T > &bin_edges, u64 nbins, const sham::DeviceBuffer< T > &values, const sham::DeviceBuffer< T > &keys, u32 len, const sham::DeviceBuffer< u32 > &bin_counts_global)
 Compute the average of values in each bin across all MPI ranks (with pre-computed global counts).
 
template<class T >
sham::DeviceBuffer< T > shamalgs::numeric::binned_average_mpi (const sham::DeviceScheduler_ptr &sched, const sham::DeviceBuffer< T > &bin_edges, u64 nbins, const sham::DeviceBuffer< T > &values, const sham::DeviceBuffer< T > &keys, u32 len)
 Compute the average of values in each bin across all MPI ranks.
 
template<class T >
histogram_result< T > shamalgs::numeric::device_histogram_full_mpi (const sham::DeviceScheduler_ptr &sched, const sham::DeviceBuffer< T > &bin_edges, u64 nbins, const sham::DeviceBuffer< T > &values, u32 len)
 Compute the histogram and bin properties (center, width) for a set of values and bin edges.
 

Detailed Description

Author
Timothée David–Cléris (tim.s.nosp@m.hamr.nosp@m.ock@p.nosp@m.roto.nosp@m.n.me)
Yona Lapeyre (yona..nosp@m.lape.nosp@m.yre@e.nosp@m.ns-l.nosp@m.yon.f.nosp@m.r)

Definition in file numeric.hpp.