summaryrefslogtreecommitdiff
path: root/modules/remote-sycl/c++/transfer.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/remote-sycl/c++/transfer.hpp')
-rw-r--r--modules/remote-sycl/c++/transfer.hpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/modules/remote-sycl/c++/transfer.hpp b/modules/remote-sycl/c++/transfer.hpp
index 65a9b9e..8987de9 100644
--- a/modules/remote-sycl/c++/transfer.hpp
+++ b/modules/remote-sycl/c++/transfer.hpp
@@ -45,7 +45,7 @@ public:
*/
template<typename Sch>
error_or<void> send(const data<Sch, Encoding, storage::Default>& dat, id<Sch> store_id){
- auto& vals = std::get<Sch>(values_);
+ auto& vals = std::get<std::unordered_map<uint64_t, data<Sch,Encoding,rmt::Sycl>>>(values_);
auto eoval = device_->template copy_to_device<Sch, Encoding, storage::Default>(dat);
if(eoval.is_error()){
auto& err = eoval.get_error();
@@ -68,14 +68,14 @@ public:
*/
template<typename Sch>
error_or<data<Sch, Encoding, storage::Default>> receive(id<Sch> store_id){
- auto& vals = std::get<Sch>(values_);
+ auto& vals = std::get<std::unordered_map<uint64_t, data<Sch,Encoding,rmt::Sycl>>>(values_);
auto find_res = vals.find(store_id.get_value());
if(find_res == vals.end()){
return make_error<err::not_found>();
}
auto& dat = find_res->second;
- auto eoval = device_->copy_to_host(dat);
+ auto eoval = device_->template copy_to_host<Sch, Encoding, storage::Default>(dat);
return eoval;
}
@@ -153,7 +153,14 @@ public:
*/
template<typename Sch>
conveyor<data<Sch, Encoding, storage::Default>> receive(id<Sch> dat_id){
- return srv_->receive(dat_id);
+ auto eov = srv_->receive(dat_id);
+ if(eov.is_error()){
+ auto& err = eov.get_error();
+ return std::move(err);
+ }
+
+ auto& val = eov.get_value();
+ return std::move(val);
}
/**