From da656e3333ca98be9e80dbc63640598a392186f9 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Fri, 23 Jan 2026 12:43:57 +0100 Subject: Dangling changes and address boundary errors --- lib/sycl/c++/data.hpp | 72 ++++++++++++++------------------------------------- 1 file changed, 20 insertions(+), 52 deletions(-) (limited to 'lib/sycl/c++') diff --git a/lib/sycl/c++/data.hpp b/lib/sycl/c++/data.hpp index d9976dd..c6ea281 100644 --- a/lib/sycl/c++/data.hpp +++ b/lib/sycl/c++/data.hpp @@ -1,5 +1,3 @@ -#pragma once - #include "common.hpp" #include @@ -35,7 +33,7 @@ public: q_{&q__}, values_{nullptr} { - values_ = acpp::sycl::malloc>(ct_multiply::value,q_); + values_ = acpp::sycl::malloc_device>(ct_multiply::value,*q_); } ~data(){ @@ -43,7 +41,7 @@ public: return; } - acpp::sycl::free(values_,q_); + acpp::sycl::free(values_,*q_); } static constexpr data> get_dims() { @@ -127,10 +125,20 @@ private: * Do it here by specializing. */ StorageT members_; + + template + constexpr data(acpp::sycl::queue& q, std::index_sequence): + members_{(static_cast(Is), q)...} + { + + } public: data(acpp::sycl::queue& q__): - members_{{data,kel::lbm::encode::Sycl>{q__}...}} - {} + data{q__, std::make_index_sequence{}} +// members_(q__)//data,kel::lbm::encode::Sycl>(q__)...) + { + q__.wait(); + } template auto& get(){ @@ -144,37 +152,6 @@ public: namespace kel { namespace lbm { namespace impl { -template -struct sycl_malloc_struct_helper; - -template -struct sycl_malloc_struct_helper, Encode> final { - using Schema = sch::Struct; - - template - static saw::error_or allocate_on_device_member(typename saw::data>::StorageT& storage, sycl::queue& q){ - if constexpr (i < sizeof...(Members)){ - using M = typename saw::parameter_pack_type::type; - auto& ptr = std::get(storage); - - ptr = sycl::malloc_device(1u,q); - - return allocate_on_device_member(storage,q); - } - - return saw::make_void(); - } - - static saw::error_or allocate_on_device(saw::data>& sycl_data, sycl::queue& q){ - typename saw::data>::StorageT storage; - - auto eov = allocate_on_device_member<0u>(storage,q); - sycl_data = {storage, q}; - - return eov; - } -}; - template struct sycl_copy_helper; @@ -186,13 +163,13 @@ struct sycl_copy_helper, Encode> final { static saw::error_or copy_to_device_member(saw::data& host_data, saw::data>& sycl_data, sycl::queue& q){ if constexpr (i < sizeof...(Members)){ using M = typename saw::parameter_pack_type::type; - auto& host_member_data = host_data.template get(); - auto& sycl_member_data = sycl_data.template get(); + auto& host_member_data = host_data.template get(); + auto& sycl_member_data = sycl_data.template get(); auto host_ptr = host_member_data.flat_data(); auto sycl_ptr = sycl_member_data.flat_data(); - q.memcpy(host_ptr, sycl_ptr, sizeof(std::decay_t) * host_member_data.flat_size() ); + q.memcpy(host_ptr, sycl_ptr, sizeof(std::decay_t) * host_member_data.flat_size().get() ); return copy_to_device_member(host_data,sycl_data,q); } @@ -209,13 +186,13 @@ struct sycl_copy_helper, Encode> final { static saw::error_or copy_to_host_member(saw::data>& sycl_data, saw::data& host_data, sycl::queue& q){ if constexpr (i < sizeof...(Members)){ using M = typename saw::parameter_pack_type::type; - auto& host_member_data = host_data.template get(); - auto& sycl_member_data = sycl_data.template get(); + auto& host_member_data = host_data.template get(); + auto& sycl_member_data = sycl_data.template get(); auto host_ptr = host_member_data.flat_data(); auto sycl_ptr = sycl_member_data.flat_data(); - q.memcpy(sycl_ptr, host_ptr, sizeof(std::decay_t) * host_member_data.flat_size() ); + q.memcpy(sycl_ptr, host_ptr, sizeof(std::decay_t) * host_member_data.flat_size().get() ); return copy_to_host_member(sycl_data,host_data,q); } @@ -239,15 +216,6 @@ public: device() = default; ~device() = default; - template - saw::error_or allocate_on_device(saw::data>& sycl_data){ - auto eov = impl::sycl_malloc_struct_helper::allocate_on_device(sycl_data, q_); - if(eov.is_error()){ - return eov; - } - return saw::make_void(); - } - template saw::error_or copy_to_device(saw::data& host_data, saw::data>& sycl_data){ return impl::sycl_copy_helper::copy_to_device(host_data, sycl_data, q_); -- cgit v1.2.3