31 auto edges = get_edges();
33 edges.block_min.check_sizes(edges.sizes.indexes);
34 edges.block_max.check_sizes(edges.sizes.indexes);
36 edges.block_level.ensure_sizes(edges.sizes.indexes);
38 auto &q = shamsys::instance::get_compute_scheduler().
get_queue();
40 const auto &spans_block_min = edges.block_min.get_spans();
41 const auto &spans_block_max = edges.block_max.get_spans();
42 auto &spans_block_level = edges.block_level.get_spans();
44 edges.sizes.indexes.for_each([&](
u64 id,
const u64 &n) {
45 TgridVec l0_ref = edges.level0_size.values.get(
id);
54 const TgridVec *__restrict block_min,
55 const TgridVec *__restrict block_max,
56 TgridUint *__restrict block_level) {
57 TgridVec block_size = block_max[id] - block_min[id];
59 SHAM_ASSERT(block_size.x() > 0 && block_size.y() > 0 && block_size.z() > 0);
61 Tgridscal l0 = (Tgridscal) l0_ref.x();
62 Tgridscal s = (Tgridscal) block_size.x();
66 Tgridscal fact = l0 / s;
70 block_level[id] = sham::log2_pow2_num<Tgridscal>(fact);
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.