diff options
author | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-08-22 18:03:01 +0200 |
---|---|---|
committer | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-08-22 18:03:01 +0200 |
commit | 185b51c1385a828170ba63243eba137b5aa77b64 (patch) | |
tree | 3dc6261cae2166ac4e4c4c317678b2e4229f46c3 | |
parent | 1fb10980808d66dfa6dec4ac87857d5c13bf7298 (diff) |
wip
-rw-r--r-- | modules/remote-sycl/benchmarks/kernel_mixed_precision.cpp | 8 | ||||
-rw-r--r-- | modules/remote-sycl/benchmarks/mixed_precision.hpp | 3 | ||||
-rw-r--r-- | modules/remote-sycl/c++/transfer.hpp | 8 | ||||
-rw-r--r-- | modules/remote-sycl/tests/data.cpp | 7 | ||||
-rw-r--r-- | 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<sch::MixedPrecisionBenchmarkInterface, saw::encode::Native, saw::rmt::Sycl, 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){ +saw::interface<sch::MixedPrecisionBenchmarkInterface, saw::encode::Sycl<saw::encode::Native>, 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<sch::MixedArray, saw::encode::Native, saw::rmt::Sycl>& in, cl::sycl::queue* cmd) -> saw::error_or<void> { + [&](saw::data<sch::MixedArray, saw::encode::Sycl<saw::encode::Native>>& in, cl::sycl::queue* cmd) -> saw::error_or<void> { uint64_t in_size = in.size(); mixed_ev = cmd->submit([&](cl::sycl::handler& h){ @@ -25,7 +25,7 @@ saw::interface<sch::MixedPrecisionBenchmarkInterface, saw::encode::Native, saw:: }); return saw::void_t{}; }, - [&](saw::data<sch::Float64Array, saw::encode::Native, saw::rmt::Sycl>& in, cl::sycl::queue* cmd) -> saw::error_or<void> { + [&](saw::data<sch::Float64Array, saw::encode::Sycl<saw::encode::Native>>& in, cl::sycl::queue* cmd) -> saw::error_or<void> { uint64_t in_size = in.size(); float64_ev = cmd->submit([&](cl::sycl::handler& h){ auto acc_buff = in.template access<cl::sycl::access::mode::read_write>(h); @@ -43,7 +43,7 @@ saw::interface<sch::MixedPrecisionBenchmarkInterface, saw::encode::Native, saw:: }); return saw::void_t{}; }, - [&](saw::data<sch::Float32Array, saw::encode::Native, saw::rmt::Sycl>& in, cl::sycl::queue* cmd) -> saw::error_or<void> { + [&](saw::data<sch::Float32Array, saw::encode::Sycl<saw::encode::Native>>& in, cl::sycl::queue* cmd) -> saw::error_or<void> { uint64_t in_size = in.size(); float32_ev = cmd->submit([&](cl::sycl::handler& h){ auto acc_buff = in.template access<cl::sycl::access::mode::read_write>(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<sch::MixedPrecisionBenchmarkInterface, saw::encode::Native, saw::rmt::Sycl, 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); +saw::interface<sch::MixedPrecisionBenchmarkInterface, saw::encode::Sycl<saw::encode::Native>, 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<void> send(const data<Sch,Encoding>& dat, id<Schema> store_id){ + error_or<void> send(const data<Schema,Encoding>& dat, id<Schema> 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<Encoding, rmt::Sycl, typename tmpl_reduce<tmpl_group<Schema...>>::type >::type values_; + typename impl::data_server_redux<encode::Sycl<Encoding>, typename tmpl_reduce<tmpl_group<Schema...>>::type >::type values_; public: /** * Main constructor @@ -89,7 +89,7 @@ public: */ template<typename Sch> error_or<void> send(const data<Sch, Encoding>& dat, id<Sch> store_id){ - auto& vals = std::get<std::unordered_map<uint64_t, data<Sch,Encoding,rmt::Sycl>>>(values_); + auto& vals = std::get<std::unordered_map<uint64_t, data<Sch,encode::Sycl<Encoding>>>>(values_); auto eoval = device_->template copy_to_device<Sch, Encoding>(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 <forstio/test/suite.hpp> +#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<tmpl_group<schema::TestStruct>, encode::Native, rmt::Sycl>{device}; + auto our_device = share<device<rmt::Sycl>>(); + auto& device = *our_device; + auto data_srv = data_server<tmpl_group<schema::TestStruct>, encode::Native, rmt::Sycl>{our_device}; auto data_cl = data_client<tmpl_group<schema::TestStruct>, 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 <forstio/test/suite.hpp> +#include "../c++/data.hpp" #include "../c++/remote.hpp" #include <random> @@ -62,12 +63,12 @@ SAW_TEST("SYCL Mixed Test"){ wait.poll(); SAW_EXPECT(rmt_addr, "Remote address hasn't been filled"); - data<schema::TestMixedArray, encode::Native, rmt::Sycl> device_data{host_data}; + data<schema::TestMixedArray, encode::Sycl<encode::Native>> device_data{host_data}; cl::sycl::event ev; - interface<schema::MixedFoo, encode::Native,rmt::Sycl, cl::sycl::queue*> cl_iface { -[&](data<schema::TestMixedArray, encode::Native, rmt::Sycl>& in, cl::sycl::queue* cmd) -> error_or<void> { + interface<schema::MixedFoo, encode::Sycl<encode::Native>, cl::sycl::queue*> cl_iface { +[&](data<schema::TestMixedArray, encode::Sycl<encode::Native>>& in, cl::sycl::queue* cmd) -> error_or<void> { 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<device<rmt::Sycl>>(); + 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<schema::TestFloatArray, encode::Native, rmt::Sycl> device_data{host_data}; + data<schema::TestFloatArray, encode::Sycl<encode::Native>> device_data{host_data}; cl::sycl::event ev; interface<schema::FloatFoo, encode::Native,rmt::Sycl, cl::sycl::queue*> cl_iface { -[&](data<schema::TestFloatArray, encode::Native, rmt::Sycl>& in, cl::sycl::queue* cmd) -> error_or<void> { +[&](data<schema::TestFloatArray, encode::Sycl<encode::Native>>& in, cl::sycl::queue* cmd) -> error_or<void> { 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<schema::TestDoubleArray, encode::Native, rmt::Sycl> device_data{host_data}; + data<schema::TestDoubleArray, encode::Sycl<encode::Native>> device_data{host_data}; cl::sycl::event ev; interface<schema::DoubleFoo, encode::Native,rmt::Sycl, cl::sycl::queue*> cl_iface { -[&](data<schema::TestDoubleArray, encode::Native, rmt::Sycl>& in, cl::sycl::queue* cmd) -> error_or<void> { +[&](data<schema::TestDoubleArray, encode::Sycl<encode::Native>>& in, cl::sycl::queue* cmd) -> error_or<void> { ev = cmd->submit([&](cl::sycl::handler& h){ |