Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
gen_buffer_index.cpp
Go to the documentation of this file.
1// -------------------------------------------------------//
2//
3// SHAMROCK code for hydrodynamics
4// Copyright (c) 2021-2026 Timothée David--Cléris <tim.shamrock@proton.me>
5// SPDX-License-Identifier: CeCILL Free Software License Agreement v2.1
6// Shamrock is licensed under the CeCILL 2.1 License, see LICENSE for more information
7//
8// -------------------------------------------------------//
9
20
21namespace shamalgs::primitives {
22
24 if (buf.get_size() < len) {
26 "buf.get_size() < len\n buf.get_size() = {},\n len = {}", buf.get_size(), len));
27 }
28
29 if (len == 0) {
30 return; // early return for zero length
31 }
32
34 buf.get_queue(), sham::MultiRef{}, sham::MultiRef{buf}, len, [](u32 i, u32 *idx) {
35 idx[i] = i;
36 });
37 }
38
39 sham::DeviceBuffer<u32> gen_buffer_index(sham::DeviceScheduler_ptr sched, u32 len) {
40 sham::DeviceBuffer<u32> ret(len, sched);
41
42 fill_buffer_index(ret, len);
43
44 return ret;
45 }
46} // namespace shamalgs::primitives
std::uint32_t u32
32 bit unsigned integer
A buffer allocated in USM (Unified Shared Memory)
DeviceQueue & get_queue() const
Gets the DeviceQueue associated with the held allocation.
size_t get_size() const
Gets the number of elements in the buffer.
This header file contains utility functions related to exception handling in the code.
void kernel_call(sham::DeviceQueue &q, RefIn in, RefOut in_out, u32 n, Functor &&func, SourceLocation &&callsite=SourceLocation{})
Submit a kernel to a SYCL queue.
namespace for primitive algorithm (e.g. sort, scan, reductions, ...)
sham::DeviceBuffer< u32 > gen_buffer_index(sham::DeviceScheduler_ptr sched, u32 len)
Generates a buffer where buf[i] = i.
void fill_buffer_index(sham::DeviceBuffer< u32 > &buf, u32 len)
Fills a buffer with sequential indices, such that buf[i] = i.
void throw_with_loc(std::string message, SourceLocation loc=SourceLocation{})
Throw an exception and append the source location to it.
A class that references multiple buffers or similar objects.