From fdf1b23129d73b27b28756e77da9b02215878721 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Sun, 21 Jul 2024 23:03:23 +0200 Subject: Fake remote allocation. --- modules/remote-sycl/c++/device.hpp | 5 +++++ modules/remote-sycl/c++/transfer.hpp | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+) (limited to 'modules') diff --git a/modules/remote-sycl/c++/device.hpp b/modules/remote-sycl/c++/device.hpp index ae19524..3561da7 100644 --- a/modules/remote-sycl/c++/device.hpp +++ b/modules/remote-sycl/c++/device.hpp @@ -25,6 +25,11 @@ public: error_or> copy_to_device(const data& host_data){ return data{host_data}; } + + template + error_or> allocate_on_device(const data::MetaSchema, Encoding, Storage>& host_meta){ + return copy_to_device(data{host_meta}); + } /** * Copy data to host diff --git a/modules/remote-sycl/c++/transfer.hpp b/modules/remote-sycl/c++/transfer.hpp index 5d76e7c..00c85e4 100644 --- a/modules/remote-sycl/c++/transfer.hpp +++ b/modules/remote-sycl/c++/transfer.hpp @@ -53,6 +53,26 @@ public: return void_t{}; } + template + error_or allocate(const data::MetaSchema, Encoding, storage::Default>& dat, id store_id){ + auto& vals = std::get>>(values_); + auto eoval = device_->template allocate_on_device(dat); + if(eoval.is_error()){ + auto& err = eoval.get_error(); + return std::move(err); + } + auto& val = eoval.get_value(); + try { + auto insert_res = vals.insert(std::make_pair(store_id.get_value(), std::move(val))); + if(!insert_res.second){ + return make_error(); + } + }catch ( std::exception& ){ + return make_error(); + } + return void_t{}; + } + /** * Requests data from the server */ -- cgit v1.2.3