diff options
Diffstat (limited to 'modules/remote-sycl/examples/sycl_basic.cpp')
-rw-r--r-- | modules/remote-sycl/examples/sycl_basic.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/modules/remote-sycl/examples/sycl_basic.cpp b/modules/remote-sycl/examples/sycl_basic.cpp new file mode 100644 index 0000000..a180d23 --- /dev/null +++ b/modules/remote-sycl/examples/sycl_basic.cpp @@ -0,0 +1,47 @@ +#include "../c++/remote.hpp" + +namespace schema { +using namespace saw::schema; + +using BasicInterface = Interface< + Member<Function<UInt64, UInt64>, "increment"> +>; +} + +int main(){ + saw::remote<saw::rmt::Sycl> remote_ctx; + + saw::own<saw::remote_address<saw::rmt::Sycl>> rmt_addr{}; + + saw::event_loop loop; + saw::wait_scope wait{loop}; + + remote_ctx.resolve_address().then([&](auto addr){ + rmt_addr = std::move(addr); + }).detach(); + + wait.poll(); + + if(!rmt_addr){ + return -1; + } + + saw::interface<schema::BasicInterface, saw::encode::Native<saw::storage::Default>, cl::sycl::queue*> iface{ + [](saw::data<saw::schema::UInt64> in, cl::sycl::queue* q) -> saw::data<saw::schema::UInt64> { + return {in.get() + 1u}; + } + }; + auto rpc_server = remote_ctx.template listen<schema::BasicInterface, saw::encode::Native<saw::storage::Default>>(*rmt_addr, std::move(iface)); + + { + auto eov = rpc_server.template call<"increment">({1u}); + if(eov.is_error()){ + return -2; + } + auto& val = eov.get_value(); + std::cout<<"Value: "<<val<<std::endl; + } + + + return 0; +} |