From 38d3d701a7ffff8153b1eea0f540f79200cf47a3 Mon Sep 17 00:00:00 2001 From: Claudius 'keldu' Holeksa Date: Fri, 16 Aug 2024 17:05:59 +0200 Subject: Sycl improvements --- modules/remote-sycl/c++/common.hpp | 4 +++ modules/remote-sycl/c++/transfer.hpp | 54 ++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/modules/remote-sycl/c++/common.hpp b/modules/remote-sycl/c++/common.hpp index 8c008c3..3859dad 100644 --- a/modules/remote-sycl/c++/common.hpp +++ b/modules/remote-sycl/c++/common.hpp @@ -10,6 +10,10 @@ namespace saw { namespace rmt { struct Sycl {}; } +namespace encode { +template +struct Sycl {}; +} template<> class remote; diff --git a/modules/remote-sycl/c++/transfer.hpp b/modules/remote-sycl/c++/transfer.hpp index 00c85e4..a7f1b53 100644 --- a/modules/remote-sycl/c++/transfer.hpp +++ b/modules/remote-sycl/c++/transfer.hpp @@ -10,6 +10,60 @@ namespace saw { +template +class data_server final : public i_data_server { +private: + our> device_; + + std::map>> values_; +public: + data_server(our> device__): + device_{std::move(device__)} + {} + + error_or send(const data& dat, id store_id){ + auto eo_val = device_->template copy_to_device(dat); + if(eo_val.is_error()){ + auto& err = eoval.get_error(); + return std::move(err); + } + auto& val = eo_val.get_value(); + + try { + auto insert_res = values_.emplace(std::make_pair(store_id.get_value(), std::move(val))); + if(!insert_res.second){ + return make_error(); + } + }catch(const std::exception&){ + return make_error(); + } + return make_void(); + } + + error_or allocate(const data::MetaSchema, Encoding>& dat, id store_id){ + return make_error("Allocate not implemented"); + return make_void(); + } + + error_or> receive(id store_id){ + return make_error("Receive not implemented"); + } + + error_or erase(id store_id){ + return make_error("Erase not implemented"); + return make_void(); + } + + error_or>>> find(id store_id){ + auto find_res = values_.find(store_id.get_value()); + if(find_res == values_.end()){ + return make_error(); + } + + return {(find_res.second)}; + } +}; + template class data_server, Encoding, rmt::Sycl> { private: -- cgit v1.2.3