![]() |
Shamrock 2025.10.0
Astrophysical Code
|
#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 > >, u32 > | shamalgs::numeric::stream_compact (sycl::queue &q, sycl::buffer< u32 > &buf_flags, u32 len) |
| Stream compaction algorithm. | |
| sham::DeviceBuffer< u32 > | shamalgs::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< u64 > | shamalgs::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< u32 > | shamalgs::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< u64 > | shamalgs::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< u32 > | shamalgs::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. | |
Definition in file numeric.hpp.