summaryrefslogtreecommitdiff
path: root/modules/remote-sycl/benchmarks/mixed_precision_alternative.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/remote-sycl/benchmarks/mixed_precision_alternative.cpp')
-rw-r--r--modules/remote-sycl/benchmarks/mixed_precision_alternative.cpp35
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;
+}