24namespace shamalgs::reduction::details {
29 static T sum(sycl::queue &q, sycl::buffer<T> &buf1,
u32 start_id,
u32 end_id);
31 static T min(sycl::queue &q, sycl::buffer<T> &buf1,
u32 start_id,
u32 end_id);
33 static T max(sycl::queue &q, sycl::buffer<T> &buf1,
u32 start_id,
u32 end_id);
37 inline T _int_sum(sycl::queue &q, sycl::buffer<T> &buf1,
u32 start_id,
u32 end_id) {
41 sycl::host_accessor acc{buf1, sycl::read_only};
43 for (
u32 idx = start_id; idx < end_id; idx++) {
44 if (idx == start_id) {
56 inline T _int_min(sycl::queue &q, sycl::buffer<T> &buf1,
u32 start_id,
u32 end_id) {
60 sycl::host_accessor acc{buf1, sycl::read_only};
62 for (
u32 idx = start_id; idx < end_id; idx++) {
63 if (idx == start_id) {
66 accum = sham::min(acc[idx], accum);
75 inline T _int_max(sycl::queue &q, sycl::buffer<T> &buf1,
u32 start_id,
u32 end_id) {
79 sycl::host_accessor acc{buf1, sycl::read_only};
81 for (
u32 idx = start_id; idx < end_id; idx++) {
82 if (idx == start_id) {
85 accum = sham::max(acc[idx], accum);
94 inline T FallbackReduction<T>::sum(
95 sycl::queue &q, sycl::buffer<T> &buf1,
u32 start_id,
u32 end_id) {
97 return _int_sum(q, buf1, start_id, end_id);
101 inline T FallbackReduction<T>::min(
102 sycl::queue &q, sycl::buffer<T> &buf1,
u32 start_id,
u32 end_id) {
104 return _int_min(q, buf1, start_id, end_id);
108 inline T FallbackReduction<T>::max(
109 sycl::queue &q, sycl::buffer<T> &buf1,
u32 start_id,
u32 end_id) {
111 return _int_max(q, buf1, start_id, end_id);
std::uint32_t u32
32 bit unsigned integer
void throw_with_loc(std::string message, SourceLocation loc=SourceLocation{})
Throw an exception and append the source location to it.