From 6d6452b24e15e6291ba5790ede485f59d4ca28b8 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Fri, 23 Jan 2026 16:39:27 +0100 Subject: Fixed Address boundary issues with different copy approach --- default.nix | 5 +++++ examples/poiseulle_particles_2d_gpu/sim.cpp | 19 +++++-------------- lib/core/c++/chunk.hpp | 1 + lib/sycl/c++/data.hpp | 18 +++++++++++++++--- 4 files changed, 26 insertions(+), 17 deletions(-) diff --git a/default.nix b/default.nix index fd36323..d46eed5 100644 --- a/default.nix +++ b/default.nix @@ -102,6 +102,11 @@ in rec { inherit pname version stdenv forstio adaptive-cpp; inherit kel; }; + + s_poiseulle_particles_2d_gpu = pkgs.callPackage ./examples/s_poiseulle_particles_2d_gpu/.nix/derivation.nix { + inherit pname version stdenv forstio adaptive-cpp; + inherit kel; + }; poiseulle_3d = pkgs.callPackage ./examples/poiseulle_3d/.nix/derivation.nix { inherit pname version stdenv forstio adaptive-cpp; diff --git a/examples/poiseulle_particles_2d_gpu/sim.cpp b/examples/poiseulle_particles_2d_gpu/sim.cpp index 008d8f0..bb1fca5 100644 --- a/examples/poiseulle_particles_2d_gpu/sim.cpp +++ b/examples/poiseulle_particles_2d_gpu/sim.cpp @@ -1,5 +1,5 @@ -#include #include +#include #include #include @@ -13,16 +13,6 @@ constexpr uint64_t dim_y = 16u; namespace sch { using namespace saw::schema; -template -using CellStruct = Struct< - Member, "dfs">, - Member, "dfs_old">, - Member, - Member, "velocity">, - Member, "force"> ->; - - using InfoChunk = Chunk; template @@ -127,14 +117,15 @@ saw::error_or lbm_main(int argc, char** argv){ }; // saw::data> meta{{dim_x,dim_y}}; - saw::data> lbm_data{}; + auto lbm_data_ptr = saw::heap>>(); device dev; + auto& sycl_q = dev.get_handle(); sycl_q.wait(); { - auto eov = setup_initial_conditions(lbm_data); + auto eov = setup_initial_conditions(*lbm_data_ptr); if(eov.is_error()){ return eov; } @@ -147,7 +138,7 @@ saw::error_or lbm_main(int argc, char** argv){ sycl_q.wait(); std::cout<<"Hey2"<>(ct_multiply::value,*q_); + std::cout<<"Hey: "<::value<>(ct_multiply::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> get_dims() { @@ -169,7 +173,13 @@ struct sycl_copy_helper, 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) * host_member_data.flat_size().get() ); + static_assert(sizeof(std::decay_t) == sizeof(std::decay_t), "Unequal size"); + + std::cout<(host_data,sycl_data,q); } @@ -192,7 +202,9 @@ struct sycl_copy_helper, 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) * 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(sycl_data,host_data,q); } -- cgit v1.2.3