From b514d9e6dfceafb83cebcbb0c7ef4728b2ff0401 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Tue, 18 Nov 2025 22:46:33 +0100 Subject: Sycl mixed precision prep --- modules/remote-sycl/benchmarks/SConscript | 7 ++++- .../benchmarks/mixed_precision_alternative.cpp | 35 ++++++++++++++++++++++ modules/remote-sycl/tests/data_ref.cpp | 13 ++++---- 3 files changed, 48 insertions(+), 7 deletions(-) create mode 100644 modules/remote-sycl/benchmarks/mixed_precision_alternative.cpp diff --git a/modules/remote-sycl/benchmarks/SConscript b/modules/remote-sycl/benchmarks/SConscript index 434993c..e88c1bd 100644 --- a/modules/remote-sycl/benchmarks/SConscript +++ b/modules/remote-sycl/benchmarks/SConscript @@ -28,8 +28,13 @@ benchmarks_sycl_env.add_source_files(sycl_objects, ['kernel_mixed_precision.cpp' objects_static = [] benchmarks_env.sycl_basic = benchmarks_env.Program('#bin/benchmark_mixed_precision', ['mixed_precision.cpp', env.library_static, sycl_objects]); +benchmarks_env.mixed_alt = benchmarks_sycl_env.Program('#bin/benchmark_mixed_precision_alternative', ['mixed_precision_alternative.cpp', env.library_static]); + # Set Alias -env.benchmarks = [benchmarks_env.sycl_basic]; +env.benchmarks = [ + benchmarks_env.sycl_basic, + benchmarks_env.mixed_alt +]; env.Alias('benchmarks', env.benchmarks); if env["build_benchmarks"]: diff --git a/modules/remote-sycl/benchmarks/mixed_precision_alternative.cpp b/modules/remote-sycl/benchmarks/mixed_precision_alternative.cpp new file mode 100644 index 0000000..e1a1e90 --- /dev/null +++ b/modules/remote-sycl/benchmarks/mixed_precision_alternative.cpp @@ -0,0 +1,35 @@ +#include "../c++/data.hpp" + +namespace sch { +using namespace saw::schema; +} + +template +void inner_work(){ + acpp::sycl::queue sycl_q; + + constexpr uint64_t dat_size = 10000u; + + data, encode::Sycl> dat{{{dat_size}},sycl_q}; + data>, encode::Sycl> dat_ref{dat}; + auto dat_ptr = dat_ref.get_internal_data(); + + sycl_q.parallel_for(dat_size, [=](acpp::sycl::id<1> idx){ + size_t i = idx[0]; + + dat_ptr[i] = {i}; + }).wait(); + + for(uint64_t i = 0u; i < dat_size; ++i){ + SAW_EXPECT(dat_ptr[i].get() == i, std::string{"Unexpected value: "} + std::to_string(i)); + } + +} + +int main(){ + using namespace saw; + inner_work(); + inner_work(); + inner_work>(); + return 0; +} diff --git a/modules/remote-sycl/tests/data_ref.cpp b/modules/remote-sycl/tests/data_ref.cpp index 8fb5be4..e92c693 100644 --- a/modules/remote-sycl/tests/data_ref.cpp +++ b/modules/remote-sycl/tests/data_ref.cpp @@ -12,20 +12,21 @@ SAW_TEST("Data Ref Basics"){ acpp::sycl::queue sycl_q; - data, encode::Sycl> dat{{{100u}},sycl_q}; + constexpr uint64_t dat_size = 1000u; - data>, encode::Sycl> dat_ref{dat}; + data, encode::Sycl> dat{{{dat_size}},sycl_q}; + + data>, encode::Sycl> dat_ref{dat}; auto dat_ptr = dat_ref.get_internal_data(); - sycl_q.parallel_for(100u, [=](acpp::sycl::id<1> idx){ + sycl_q.parallel_for(dat_size, [=](acpp::sycl::id<1> idx){ size_t i = idx[0]; - dat_ptr[i] = {static_cast(i)}; + dat_ptr[i] = {i}; }).wait(); - for(uint64_t i = 0u; i < 100u; ++i){ + for(uint64_t i = 0u; i < dat_size; ++i){ SAW_EXPECT(dat_ptr[i].get() == i, std::string{"Unexpected value: "} + std::to_string(i)); } } - } -- cgit v1.2.3