From 97ec4b9edfa88302878b523baf09674503d19fab Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Wed, 22 May 2024 17:22:18 +0200 Subject: Progress in fixing remote-sycl and ammended minor parts in echo_client --- modules/remote-sycl/examples/SConscript | 31 +++++++++++++++++++ modules/remote-sycl/examples/sycl_basic.cpp | 47 +++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 modules/remote-sycl/examples/SConscript create mode 100644 modules/remote-sycl/examples/sycl_basic.cpp (limited to 'modules/remote-sycl/examples') diff --git a/modules/remote-sycl/examples/SConscript b/modules/remote-sycl/examples/SConscript new file mode 100644 index 0000000..7fa9429 --- /dev/null +++ b/modules/remote-sycl/examples/SConscript @@ -0,0 +1,31 @@ +#!/bin/false + +import os +import os.path +import glob + + +Import('env') + +dir_path = Dir('.').abspath + +# Environment for base library +examples_env = env.Clone(); + +examples_env.sources = sorted(glob.glob(dir_path + "/*.cpp")) +examples_env.headers = sorted(glob.glob(dir_path + "/*.hpp")) + +env.sources += examples_env.sources; +env.headers += examples_env.headers; + +objects_static = [] +examples_env.sycl_basic = examples_env.Program('#bin/sycl_basic', ['sycl_basic.cpp', env.library_static]); + +# Set Alias +env.examples = [examples_env.sycl_basic]; +env.Alias('examples', env.examples); + +if env["build_examples"]: + env.targets += ['examples']; + env.Install('$prefix/bin/', env.examples); +#endif 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, "increment"> +>; +} + +int main(){ + saw::remote remote_ctx; + + saw::own> 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, cl::sycl::queue*> iface{ + [](saw::data in, cl::sycl::queue* q) -> saw::data { + return {in.get() + 1u}; + } + }; + auto rpc_server = remote_ctx.template listen>(*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: "<