diff options
Diffstat (limited to 'modules/remote-sycl/benchmarks/mixed_precision_alternative.cpp')
| -rw-r--r-- | modules/remote-sycl/benchmarks/mixed_precision_alternative.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
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; +} |
