From 91a58fe669623c80c08a625002e47a1938457c40 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Sat, 5 Jul 2025 12:05:14 +0200 Subject: Adding possible diverge --- .../benchmarks/kernel_mixed_precision.cpp | 70 ++++++++++++++++++++++ 1 file changed, 70 insertions(+) (limited to 'modules/remote-sycl/benchmarks/kernel_mixed_precision.cpp') diff --git a/modules/remote-sycl/benchmarks/kernel_mixed_precision.cpp b/modules/remote-sycl/benchmarks/kernel_mixed_precision.cpp index 2c87714..c71582e 100644 --- a/modules/remote-sycl/benchmarks/kernel_mixed_precision.cpp +++ b/modules/remote-sycl/benchmarks/kernel_mixed_precision.cpp @@ -63,3 +63,73 @@ saw::interface, saw::encode::Sycl, cl::sycl::queue*> listen_mixed_float_precision(cl::sycl::event& ev, uint64_t& arithmetic_intensity){ + return { + [&](saw::data>& in, cl::sycl::queue* cmd) -> saw::error_or { + auto in_size = in.size(); + + ev = cmd->submit([&](cl::sycl::handler& h){ + auto acc_buff = in.template access(h); + + h.parallel_for(cl::sycl::range<1>(in_size.get()), [=] (cl::sycl::id<1> it){ + + saw::data foo = {acc_buff[0u].at(it[0u]).get()}; + for(uint64_t i = 0; i < arithmetic_intensity; ++i){ + if( foo.get() == 1.1e12 ){ + acc_buff[0u].at(it[0u]) = 0.f; + } + foo = foo + foo * saw::data{1.7342345}; + } + acc_buff[0u].at(it[0u]) = foo; + }); + }); + return saw::void_t{}; + } + }; +} +saw::interface, saw::encode::Sycl, cl::sycl::queue*> listen_half_float_precision(cl::sycl::event& ev, uint64_t& arithmetic_intensity){ + return { + [&](saw::data>& in, cl::sycl::queue* cmd) -> saw::error_or { + auto in_size = in.size(); + float32_ev = cmd->submit([&](cl::sycl::handler& h){ + auto acc_buff = in.template access(h); + + h.parallel_for(cl::sycl::range<1>(in_size.get()), [=] (cl::sycl::id<1> it){ + saw::data foo = {acc_buff[0u].at(it[0u]).get()}; + for(uint64_t i = 0; i < arithmetic_intensity; ++i){ + if( foo == saw::data{1.1e12f} ){ + acc_buff[0u].at(it[0u]) = 0.f; + } + foo = foo + foo * saw::data{1.7342345f}; + } + acc_buff[0u].at(it[0u]) = foo; + }); + }); + return saw::void_t{}; + } + }; +} + +saw::interface, saw::encode::Sycl, cl::sycl::queue*> listen_full_precision(cl::sycl::event& ev, uint64_t& arithmetic_intensity){ + return { + [&](saw::data>& in, cl::sycl::queue* cmd) -> saw::error_or { + auto in_size = in.size(); + float64_ev = cmd->submit([&](cl::sycl::handler& h){ + auto acc_buff = in.template access(h); + + h.parallel_for(cl::sycl::range<1>(in_size.get()), [=] (cl::sycl::id<1> it){ + saw::data foo = {acc_buff[0u].at(it[0u]).get()}; + for(uint64_t i = 0; i < arithmetic_intensity; ++i){ + if( foo == saw::data{1.1e12} ){ + acc_buff[0u].at(it[0u]) = 0.f; + } + foo = foo +foo * saw::data{1.7342345}; + } + acc_buff[0u].at(it[0u]) = foo; + }); + }); + return saw::void_t{}; + } + }; +} -- cgit v1.2.3