summaryrefslogtreecommitdiff
path: root/modules/remote-sycl/examples/sycl_basic.cpp
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2024-05-22 17:22:18 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2024-05-22 17:22:18 +0200
commit97ec4b9edfa88302878b523baf09674503d19fab (patch)
tree1703c491303dcc8d23decdeef858a52fe6c67c0e /modules/remote-sycl/examples/sycl_basic.cpp
parent875ce0328d1d919d639797972e4cf60c6715503f (diff)
Progress in fixing remote-sycl and ammended minor parts in echo_client
Diffstat (limited to 'modules/remote-sycl/examples/sycl_basic.cpp')
-rw-r--r--modules/remote-sycl/examples/sycl_basic.cpp47
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;
+}