26 : radix_tree_field_buf(std::make_unique<sycl::buffer<T>>(cnt * nvar)), nvar(nvar) {}
30 std::unique_ptr<sycl::buffer<T>> radix_tree_field_buf;
35 : nvar(nvar), radix_tree_field_buf(std::move(radix_tree_field_buf)) {}
40 : radix_tree_field_buf(
41 std::make_unique<sycl::buffer<T>>(id_extract_field.size() * src.nvar)),
45 shamsys::instance::get_compute_queue().submit([&](sycl::handler &cgh) {
46 sycl::accessor acc_curr{*src.radix_tree_field_buf, cgh, sycl::read_only};
47 sycl::accessor acc_other{*radix_tree_field_buf, cgh, sycl::write_only, sycl::no_init};
48 sycl::accessor acc_idxs{id_extract_field, cgh, sycl::read_only};
52 cgh.parallel_for(sycl::range<1>{id_extract_field.size()}, [=](sycl::item<1> i) {
53 const u32 gid = i.get_linear_id();
55 const u32 idx_extr = acc_idxs[gid] * nvar_loc;
56 const u32 idx_push = gid * nvar_loc;
58 for (
u32 a = 0; a < nvar_loc; a++) {
59 acc_other[idx_push + a] = acc_curr[idx_extr + a];