#include #include "../c++/data.hpp" namespace { namespace sch { using namespace saw::schema; } SAW_TEST("Data Ref Basics"){ using namespace saw; device dev; acpp::sycl::queue& sycl_q = dev.get_handle(); constexpr uint64_t dat_size = 1000u; data, encode::Native> dat{{{dat_size}}}; auto eo_syc_dat = dev.template allocate_on_device,encode::Native>({{dat_size}}); SAW_EXPECT(eo_syc_dat.is_value(), "Couldn't allocate on device"); auto& sycl_dat = eo_syc_dat.get_value(); { auto eov = dev.copy_to_device(dat,sycl_dat); SAW_EXPECT_EOV(eov); } data>, encode::Sycl> sdat_ref{sycl_dat}; auto dat_ptr = sdat_ref.get_internal_data(); sycl_q.parallel_for(dat_size, [=](acpp::sycl::id<1> idx){ size_t i = idx[0]; dat_ptr[i] = {i}; }).wait(); { auto eov = dev.copy_to_host(sycl_dat,dat); SAW_EXPECT_EOV(eov); } for(saw::data i = 0u; i < saw::data{dat_size}; ++i){ SAW_EXPECT(dat.at({i}) == i, std::string{"Unexpected value: "} + std::to_string(i.get())); } } }