From 185b51c1385a828170ba63243eba137b5aa77b64 Mon Sep 17 00:00:00 2001 From: Claudius 'keldu' Holeksa Date: Thu, 22 Aug 2024 18:03:01 +0200 Subject: wip --- .../remote-sycl/benchmarks/kernel_mixed_precision.cpp | 8 ++++---- modules/remote-sycl/benchmarks/mixed_precision.hpp | 3 ++- modules/remote-sycl/c++/transfer.hpp | 8 ++++---- modules/remote-sycl/tests/data.cpp | 7 ++++--- modules/remote-sycl/tests/mixed_precision.cpp | 18 ++++++++++-------- 5 files changed, 24 insertions(+), 20 deletions(-) diff --git a/modules/remote-sycl/benchmarks/kernel_mixed_precision.cpp b/modules/remote-sycl/benchmarks/kernel_mixed_precision.cpp index e99de53..83705f6 100644 --- a/modules/remote-sycl/benchmarks/kernel_mixed_precision.cpp +++ b/modules/remote-sycl/benchmarks/kernel_mixed_precision.cpp @@ -1,11 +1,11 @@ #include "mixed_precision.hpp" -saw::interface listen_mixed_precision(cl::sycl::event& mixed_ev, cl::sycl::event& float64_ev, cl::sycl::event& float32_ev, uint64_t& arithmetic_intensity){ +saw::interface, cl::sycl::queue*> listen_mixed_precision(cl::sycl::event& mixed_ev, cl::sycl::event& float64_ev, cl::sycl::event& float32_ev, uint64_t& arithmetic_intensity){ return { /** * Mixed */ - [&](saw::data& in, cl::sycl::queue* cmd) -> saw::error_or { + [&](saw::data>& in, cl::sycl::queue* cmd) -> saw::error_or { uint64_t in_size = in.size(); mixed_ev = cmd->submit([&](cl::sycl::handler& h){ @@ -25,7 +25,7 @@ saw::interface& in, cl::sycl::queue* cmd) -> saw::error_or { + [&](saw::data>& in, cl::sycl::queue* cmd) -> saw::error_or { uint64_t in_size = in.size(); float64_ev = cmd->submit([&](cl::sycl::handler& h){ auto acc_buff = in.template access(h); @@ -43,7 +43,7 @@ saw::interface& in, cl::sycl::queue* cmd) -> saw::error_or { + [&](saw::data>& in, cl::sycl::queue* cmd) -> saw::error_or { uint64_t in_size = in.size(); float32_ev = cmd->submit([&](cl::sycl::handler& h){ auto acc_buff = in.template access(h); diff --git a/modules/remote-sycl/benchmarks/mixed_precision.hpp b/modules/remote-sycl/benchmarks/mixed_precision.hpp index cd8f9ec..fc3fc46 100644 --- a/modules/remote-sycl/benchmarks/mixed_precision.hpp +++ b/modules/remote-sycl/benchmarks/mixed_precision.hpp @@ -1,5 +1,6 @@ #pragma once +#include "../c++/data.hpp" #include "../c++/device.hpp" #include "../c++/remote.hpp" @@ -25,4 +26,4 @@ using MixedPrecisionBenchmarkInterface = Interface< >; } -saw::interface listen_mixed_precision(cl::sycl::event& mixed_ev, cl::sycl::event& float64_ev, cl::sycl::event& float32_ev, uint64_t& arithmetic_intensity); +saw::interface, cl::sycl::queue*> listen_mixed_precision(cl::sycl::event& mixed_ev, cl::sycl::event& float64_ev, cl::sycl::event& float32_ev, uint64_t& arithmetic_intensity); diff --git a/modules/remote-sycl/c++/transfer.hpp b/modules/remote-sycl/c++/transfer.hpp index b6a21f0..bc24447 100644 --- a/modules/remote-sycl/c++/transfer.hpp +++ b/modules/remote-sycl/c++/transfer.hpp @@ -21,10 +21,10 @@ public: device_{std::move(device__)} {} - error_or send(const data& dat, id store_id){ + 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(); + auto& err = eo_val.get_error(); return std::move(err); } auto& val = eo_val.get_value(); @@ -75,7 +75,7 @@ private: /** * Store for the data the server manages. */ - typename impl::data_server_redux>::type >::type values_; + typename impl::data_server_redux, typename tmpl_reduce>::type >::type values_; public: /** * Main constructor @@ -89,7 +89,7 @@ public: */ template error_or send(const data& dat, id store_id){ - auto& vals = std::get>>(values_); + auto& vals = std::get>>>(values_); auto eoval = device_->template copy_to_device(dat); if(eoval.is_error()){ auto& err = eoval.get_error(); diff --git a/modules/remote-sycl/tests/data.cpp b/modules/remote-sycl/tests/data.cpp index de09c92..027f277 100644 --- a/modules/remote-sycl/tests/data.cpp +++ b/modules/remote-sycl/tests/data.cpp @@ -1,5 +1,6 @@ #include +#include "../c++/transfer.hpp" #include "../c++/remote.hpp" namespace { @@ -41,10 +42,10 @@ SAW_TEST("SYCL Data Management"){ wait.poll(); SAW_EXPECT(rmt_addr, "Remote address hasn't been filled"); - auto device = rmt_addr->copy_device_reference(); - - auto data_srv = data_server, encode::Native, rmt::Sycl>{device}; + auto our_device = share>(); + auto& device = *our_device; + auto data_srv = data_server, encode::Native, rmt::Sycl>{our_device}; auto data_cl = data_client, encode::Native, rmt::Sycl>{data_srv}; auto eov = data_cl.send(host_data); diff --git a/modules/remote-sycl/tests/mixed_precision.cpp b/modules/remote-sycl/tests/mixed_precision.cpp index 5b4b86e..7f5a78d 100644 --- a/modules/remote-sycl/tests/mixed_precision.cpp +++ b/modules/remote-sycl/tests/mixed_precision.cpp @@ -1,5 +1,6 @@ #include +#include "../c++/data.hpp" #include "../c++/remote.hpp" #include @@ -62,12 +63,12 @@ SAW_TEST("SYCL Mixed Test"){ wait.poll(); SAW_EXPECT(rmt_addr, "Remote address hasn't been filled"); - data device_data{host_data}; + data> device_data{host_data}; cl::sycl::event ev; - interface cl_iface { -[&](data& in, cl::sycl::queue* cmd) -> error_or { + interface, cl::sycl::queue*> cl_iface { +[&](data>& in, cl::sycl::queue* cmd) -> error_or { ev = cmd->submit([&](cl::sycl::handler& h){ @@ -80,7 +81,8 @@ SAW_TEST("SYCL Mixed Test"){ return saw::void_t{}; } }; - auto& device = rmt_addr->get_device(); + auto our_device = share>(); + auto& device = *our_device; cl_iface.template call <"foo">(device_data, &(device.get_handle())); device.get_handle().wait(); @@ -120,12 +122,12 @@ SAW_TEST("SYCL Float Test"){ wait.poll(); SAW_EXPECT(rmt_addr, "Remote address hasn't been filled"); - data device_data{host_data}; + data> device_data{host_data}; cl::sycl::event ev; interface cl_iface { -[&](data& in, cl::sycl::queue* cmd) -> error_or { +[&](data>& in, cl::sycl::queue* cmd) -> error_or { ev = cmd->submit([&](cl::sycl::handler& h){ @@ -178,12 +180,12 @@ SAW_TEST("SYCL Double Test"){ wait.poll(); SAW_EXPECT(rmt_addr, "Remote address hasn't been filled"); - data device_data{host_data}; + data> device_data{host_data}; cl::sycl::event ev; interface cl_iface { -[&](data& in, cl::sycl::queue* cmd) -> error_or { +[&](data>& in, cl::sycl::queue* cmd) -> error_or { ev = cmd->submit([&](cl::sycl::handler& h){ -- cgit v1.2.3