diff options
| -rw-r--r-- | modules/remote-sycl/benchmarks/SConscript | 7 | ||||
| -rw-r--r-- | modules/remote-sycl/benchmarks/mixed_precision_alternative.cpp | 35 | ||||
| -rw-r--r-- | modules/remote-sycl/tests/data_ref.cpp | 13 |
3 files changed, 48 insertions, 7 deletions
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<typename T> +void inner_work(){ + acpp::sycl::queue sycl_q; + + constexpr uint64_t dat_size = 10000u; + + data<sch::Array<T>, encode::Sycl<encode::Native>> dat{{{dat_size}},sycl_q}; + data<sch::Ref<sch::Array<T>>, encode::Sycl<encode::Native>> 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<sch::Float32>(); + inner_work<sch::Float64>(); + inner_work<sch::MixedPrecision<sch::Float64,sch::Float32>>(); + 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<sch::Array<sch::Float64>, encode::Sycl<encode::Native>> dat{{{100u}},sycl_q}; + constexpr uint64_t dat_size = 1000u; - data<sch::Ref<sch::Array<sch::Float64>>, encode::Sycl<encode::Native>> dat_ref{dat}; + data<sch::Array<sch::UInt64>, encode::Sycl<encode::Native>> dat{{{dat_size}},sycl_q}; + + data<sch::Ref<sch::Array<sch::UInt64>>, encode::Sycl<encode::Native>> 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<double>(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)); } } - } |
