summaryrefslogtreecommitdiff
path: root/lib/sycl/c++/data.hpp
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2026-01-23 16:39:27 +0100
committerClaudius "keldu" Holeksa <mail@keldu.de>2026-01-23 16:39:27 +0100
commit6d6452b24e15e6291ba5790ede485f59d4ca28b8 (patch)
tree54dc4a6fa98a873d9924f02c97458530ec3c5d1d /lib/sycl/c++/data.hpp
parent6c394afaa2c0cf008ee8c1c1a9cc860d10c50dd0 (diff)
downloadlibs-lbm-6d6452b24e15e6291ba5790ede485f59d4ca28b8.tar.gz
Fixed Address boundary issues with different copy approach
Diffstat (limited to 'lib/sycl/c++/data.hpp')
-rw-r--r--lib/sycl/c++/data.hpp18
1 files changed, 15 insertions, 3 deletions
diff --git a/lib/sycl/c++/data.hpp b/lib/sycl/c++/data.hpp
index c6ea281..cffeb38 100644
--- a/lib/sycl/c++/data.hpp
+++ b/lib/sycl/c++/data.hpp
@@ -33,15 +33,19 @@ public:
q_{&q__},
values_{nullptr}
{
- values_ = acpp::sycl::malloc_device<data<Sch>>(ct_multiply<uint64_t,Dims...>::value,*q_);
+ std::cout<<"Hey: "<<ct_multiply<uint64_t,Dims...>::value<<std::endl;
+ values_ = acpp::sycl::malloc_device<data<Sch,Encode>>(ct_multiply<uint64_t,Dims...>::value,*q_);
+ SAW_ASSERT(values_ and q_);
}
~data(){
if(not values_){
return;
}
+ SAW_ASSERT(q_);
acpp::sycl::free(values_,*q_);
+ values_ = nullptr;
}
static constexpr data<schema::FixedArray<schema::UInt64, sizeof...(Dims)>> get_dims() {
@@ -169,7 +173,13 @@ struct sycl_copy_helper<sch::Struct<Members...>, Encode> final {
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<decltype(host_ptr)>) * host_member_data.flat_size().get() );
+ static_assert(sizeof(std::decay_t<decltype(sycl_ptr)>) == sizeof(std::decay_t<decltype(host_ptr)>), "Unequal size");
+
+ std::cout<<host_member_data.flat_size().get()<<" "<<std::endl;
+
+ q.submit([&](acpp::sycl::handler& h){
+ h.copy(host_ptr,sycl_ptr, host_member_data.flat_size().get());
+ }).wait();
return copy_to_device_member<i+1u>(host_data,sycl_data,q);
}
@@ -192,7 +202,9 @@ struct sycl_copy_helper<sch::Struct<Members...>, Encode> final {
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<decltype(host_ptr)>) * host_member_data.flat_size().get() );
+ q.submit([&](acpp::sycl::handler& h){
+ h.copy(sycl_ptr,host_ptr, host_member_data.flat_size().get());
+ }).wait();
return copy_to_host_member<i+1u>(sycl_data,host_data,q);
}