From 8b3ade73997e9f87f1232b9dc9af35969e6f50dd Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Mon, 19 Jan 2026 13:35:25 +0100 Subject: Rewriting parts to handle different ghost layers --- examples/cavity_2d_gpu/cavity_2d_gpu.cpp | 2 +- examples/heterogeneous_computing/SConscript | 2 +- .../heterogeneous_computing.cpp | 36 -------- examples/heterogeneous_computing/sim.cpp | 96 ++++++++++++++++++++++ examples/poiseulle_particles_2d_gpu/sim.cpp | 11 ++- 5 files changed, 107 insertions(+), 40 deletions(-) delete mode 100644 examples/heterogeneous_computing/heterogeneous_computing.cpp create mode 100644 examples/heterogeneous_computing/sim.cpp (limited to 'examples') diff --git a/examples/cavity_2d_gpu/cavity_2d_gpu.cpp b/examples/cavity_2d_gpu/cavity_2d_gpu.cpp index 507c2d6..0fc490a 100644 --- a/examples/cavity_2d_gpu/cavity_2d_gpu.cpp +++ b/examples/cavity_2d_gpu/cavity_2d_gpu.cpp @@ -319,7 +319,7 @@ int main(){ auto& lbm_dir = eo_lbm_dir.get_value(); auto out_dir = lbm_dir / "cavity_gpu_2d"; - acpp::sycl::queue sycl_q{acpp::sycl::default_selector_v, acpp::sycl::property::queue::in_order{}}; + sycl::queue sycl_q{sycl::default_selector_v, sycl::property::queue::in_order{}}; constexpr size_t num_cells = dim_x * dim_y; diff --git a/examples/heterogeneous_computing/SConscript b/examples/heterogeneous_computing/SConscript index 1e52d88..226185b 100644 --- a/examples/heterogeneous_computing/SConscript +++ b/examples/heterogeneous_computing/SConscript @@ -22,7 +22,7 @@ env.headers += examples_env.headers; # Cavity2D examples_objects = []; -examples_env.add_source_files(examples_objects, ['heterogeneous_computing.cpp'], shared=False); +examples_env.add_source_files(examples_objects, ['sim.cpp'], shared=False); examples_env.heterogeneous_computing = examples_env.Program('#bin/heterogeneous_computing', [examples_objects]); # Set Alias diff --git a/examples/heterogeneous_computing/heterogeneous_computing.cpp b/examples/heterogeneous_computing/heterogeneous_computing.cpp deleted file mode 100644 index 8a79354..0000000 --- a/examples/heterogeneous_computing/heterogeneous_computing.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include -#include - - -namespace kel { -namespace lbm { -namespace sch { -using namespace saw::schema; -using KelConfig = Struct< - Member ->; -} -} - -saw::error_or lbm_main(int argc, char** argv){ - return saw::make_void(); -} -} - -int main(int argc, char** argv){ - auto eov = kel::lbm_main(argc, argv); - if(eov.is_error()){ - auto& err = eov.get_error(); - auto err_msg = err.get_message(); - std::cerr<<"[Error]: "< +#include + +#include + +namespace kel { +namespace lbm { +namespace sch { +using namespace saw::schema; + +/** + * struct lbm_data { + * std::array, 64u*64u> dfs; + * std::array info; + * }; + * + * which leads to the form + * + * template + * struct lbm_data { + * std::array, Size*Size> dfs; + * std::array info; + * }; + * + * which transferred into sycl requires us to go to + * + * template + * struct lbm_sycl_data { + * std::array* dfs; + * uint8_t* info; + * }; + * + * in data form on host + * + * template + * using LbmData = Struct< + * Member, Size*Size>, "dfs">, + * Member, "info"> + * >; + * + * If we specialize the encode::Sycl data type, then we get + * With a helper class we can copy single values back and forth and the whole block is guaranteed + * to be allocated. And this one can be dynamic while the host definition might be compile time. + * + * template<...> + * class data,encode::Sycl> final { + * saw::data> meta; + * saw::data>* dfs; + * saw::data* info; + * }; + */ + +template +using CellStruct = Struct< + Member,Desc::D, "dfs">, + Member, "dfs_old">, + Member +>; + +} +template +saw::error_or simulate(int argc, char** argv, + const saw::data>& meta +{ + constexpr auto cell_size = sizeof(saw::data>); + + auto lbm_data = saw::heap,Desc::D, 64u>>>{meta}; + + return saw::make_void(); +} + +} + +saw::error_or lbm_main(int argc, char** argv){ + using namespace lbm; + return simulate(argc, argv); +} +} + +int main(int argc, char** argv){ + auto eov = kel::lbm_main(argc, argv); + if(eov.is_error()){ + auto& err = eov.get_error(); + auto err_msg = err.get_message(); + std::cerr<<"[Error]: "< kel_main(int argc, char** argv){ uint64_t x_d = 256u; uint64_t y_d = 64u; saw::data> meta{{x_d,y_d}}; + saw::data,Desc::D>> lbm_data{meta}; acpp::sycl::queue sycl_q; - sycl_q.wait(); + { + auto eov = setup_initial_conditions(lbm_data); + if(eov.is_error()){ + return eov; + } + } + + return saw::make_void(); } @@ -71,4 +79,3 @@ int main(int argc, char** argv){ } return 0; } -} -- cgit v1.2.3