Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 43 additions & 40 deletions src/shammodels/common/include/shammodels/common/setup/modifiers.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,29 +31,30 @@ namespace generic::setup::modifiers {
inline void set_value_in_box(
PatchScheduler &sched, T val, std::string name, std::tuple<vec, vec> box) {
StackEntry stack_loc{};
sched.patch_data.for_each_patchdata([&](u64 patch_id,
shamrock::patch::PatchDataLayer &pdat) {
PatchDataField<vec> &xyz
= pdat.template get_field<vec>(sched.pdl().get_field_idx<vec>("xyz"));
sched.patch_data.for_each_patchdata(
[&](u64 patch_id, shamrock::patch::PatchDataLayer &pdat) {
PatchDataField<vec> &xyz
= pdat.template get_field<vec>(sched.pdl_old().get_field_idx<vec>("xyz"));

PatchDataField<T> &f = pdat.template get_field<T>(sched.pdl().get_field_idx<T>(name));
PatchDataField<T> &f
= pdat.template get_field<T>(sched.pdl_old().get_field_idx<T>(name));

{
auto &buf = f.get_buf();
sycl::host_accessor acc{*buf};
{
auto &buf = f.get_buf();
sycl::host_accessor acc{*buf};

auto &buf_xyz = xyz.get_buf();
sycl::host_accessor acc_xyz{*buf_xyz};
auto &buf_xyz = xyz.get_buf();
sycl::host_accessor acc_xyz{*buf_xyz};

for (u32 i = 0; i < f.size(); i++) {
vec r = acc_xyz[i];
for (u32 i = 0; i < f.size(); i++) {
vec r = acc_xyz[i];

if (BBAA::is_coord_in_range(r, std::get<0>(box), std::get<1>(box))) {
acc[i] = val;
if (BBAA::is_coord_in_range(r, std::get<0>(box), std::get<1>(box))) {
acc[i] = val;
}
}
}
}
});
});
}

template<class T, class vec>
Expand All @@ -67,30 +68,31 @@ namespace generic::setup::modifiers {
using flt = shambase::VecComponent<vec>;

StackEntry stack_loc{};
sched.patch_data.for_each_patchdata([&](u64 patch_id,
shamrock::patch::PatchDataLayer &pdat) {
PatchDataField<vec> &xyz
= pdat.template get_field<vec>(sched.pdl().get_field_idx<vec>("xyz"));
sched.patch_data.for_each_patchdata(
[&](u64 patch_id, shamrock::patch::PatchDataLayer &pdat) {
PatchDataField<vec> &xyz
= pdat.template get_field<vec>(sched.pdl_old().get_field_idx<vec>("xyz"));

PatchDataField<T> &f = pdat.template get_field<T>(sched.pdl().get_field_idx<T>(name));
PatchDataField<T> &f
= pdat.template get_field<T>(sched.pdl_old().get_field_idx<T>(name));

flt r2 = radius * radius;
{
auto &buf = f.get_buf();
sycl::host_accessor acc{*buf};
flt r2 = radius * radius;
{
auto &buf = f.get_buf();
sycl::host_accessor acc{*buf};

auto &buf_xyz = xyz.get_buf();
sycl::host_accessor acc_xyz{*buf_xyz};
auto &buf_xyz = xyz.get_buf();
sycl::host_accessor acc_xyz{*buf_xyz};

for (u32 i = 0; i < f.size(); i++) {
vec dr = acc_xyz[i] - center;
for (u32 i = 0; i < f.size(); i++) {
vec dr = acc_xyz[i] - center;

if (sycl::dot(dr, dr) < r2) {
acc[i] = val;
if (sycl::dot(dr, dr) < r2) {
acc[i] = val;
}
}
}
}
});
});
}

template<class flt>
Expand All @@ -107,9 +109,9 @@ namespace generic::setup::modifiers {
sched.patch_data.for_each_patchdata(
[&](u64 patch_id, shamrock::patch::PatchDataLayer &pdat) {
PatchDataField<vec> &xyz
= pdat.template get_field<vec>(sched.pdl().get_field_idx<vec>("xyz"));
= pdat.template get_field<vec>(sched.pdl_old().get_field_idx<vec>("xyz"));
PatchDataField<vec> &vxyz
= pdat.template get_field<vec>(sched.pdl().get_field_idx<vec>("vxyz"));
= pdat.template get_field<vec>(sched.pdl_old().get_field_idx<vec>("vxyz"));

flt ampl = std::get<1>(ampls);

Expand Down Expand Up @@ -141,12 +143,13 @@ namespace generic::setup::modifiers {
T sum = shambase::VectorProperties<T>::get_zero();

StackEntry stack_loc{};
sched.patch_data.for_each_patchdata([&](u64 patch_id,
shamrock::patch::PatchDataLayer &pdat) {
PatchDataField<T> &xyz = pdat.template get_field<T>(sched.pdl().get_field_idx<T>(name));
sched.patch_data.for_each_patchdata(
[&](u64 patch_id, shamrock::patch::PatchDataLayer &pdat) {
PatchDataField<T> &xyz
= pdat.template get_field<T>(sched.pdl_old().get_field_idx<T>(name));

sum += xyz.compute_sum();
});
sum += xyz.compute_sum();
});

return shamalgs::collective::allreduce_sum(sum);
}
Expand Down
14 changes: 7 additions & 7 deletions src/shammodels/gsph/include/shammodels/gsph/Model.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -154,10 +154,10 @@ namespace shammodels::gsph {
sched.patch_data.for_each_patchdata(
[&](u64 patch_id, shamrock::patch::PatchDataLayer &pdat) {
PatchDataField<Tvec> &xyz
= pdat.template get_field<Tvec>(sched.pdl().get_field_idx<Tvec>("xyz"));
= pdat.template get_field<Tvec>(sched.pdl_old().get_field_idx<Tvec>("xyz"));

PatchDataField<T> &f
= pdat.template get_field<T>(sched.pdl().get_field_idx<T>(field_name));
= pdat.template get_field<T>(sched.pdl_old().get_field_idx<T>(field_name));

if (f.get_nvar() != 1) {
shambase::throw_unimplemented();
Expand Down Expand Up @@ -210,10 +210,10 @@ namespace shammodels::gsph {
sched.patch_data.for_each_patchdata(
[&](u64 patch_id, shamrock::patch::PatchDataLayer &pdat) {
PatchDataField<Tvec> &xyz
= pdat.template get_field<Tvec>(sched.pdl().get_field_idx<Tvec>("xyz"));
= pdat.template get_field<Tvec>(sched.pdl_old().get_field_idx<Tvec>("xyz"));

PatchDataField<T> &f
= pdat.template get_field<T>(sched.pdl().get_field_idx<T>(field_name));
= pdat.template get_field<T>(sched.pdl_old().get_field_idx<T>(field_name));

u32 nvar = f.get_nvar();

Expand Down Expand Up @@ -268,10 +268,10 @@ namespace shammodels::gsph {
sched.patch_data.for_each_patchdata(
[&](u64 patch_id, shamrock::patch::PatchDataLayer &pdat) {
PatchDataField<Tvec> &xyz
= pdat.template get_field<Tvec>(sched.pdl().get_field_idx<Tvec>("xyz"));
= pdat.template get_field<Tvec>(sched.pdl_old().get_field_idx<Tvec>("xyz"));

PatchDataField<T> &f
= pdat.template get_field<T>(sched.pdl().get_field_idx<T>(field_name));
= pdat.template get_field<T>(sched.pdl_old().get_field_idx<T>(field_name));

if (f.get_nvar() != 1) {
shambase::throw_unimplemented();
Expand Down Expand Up @@ -302,7 +302,7 @@ namespace shammodels::gsph {
sched.patch_data.for_each_patchdata(
[&](u64 patch_id, shamrock::patch::PatchDataLayer &pdat) {
PatchDataField<T> &xyz
= pdat.template get_field<T>(sched.pdl().get_field_idx<T>(name));
= pdat.template get_field<T>(sched.pdl_old().get_field_idx<T>(name));

sum += xyz.compute_sum();
});
Expand Down
4 changes: 3 additions & 1 deletion src/shammodels/gsph/include/shammodels/gsph/Solver.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,9 @@ namespace shammodels::gsph {
Config solver_config;
sph::SolverLog solve_logs;

inline void init_required_fields() { solver_config.set_layout(context.get_pdl_write()); }
inline void init_required_fields() {
solver_config.set_layout(context.get_pdl_write().get_layer_ref(0));
}

// Serial patch tree control
void gen_serial_patch_tree();
Expand Down
20 changes: 10 additions & 10 deletions src/shammodels/gsph/src/Model.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -160,21 +160,21 @@ void shammodels::gsph::Model<Tvec, SPHKernel>::add_cube_fcc_3d(
patch_coord.lower,
patch_coord.upper);

PatchDataLayer tmp(sched.get_layout_ptr());
PatchDataLayer tmp(sched.get_layout_ptr_old());
tmp.resize(vec_acc.size());
tmp.fields_raz();

{
u32 len = vec_acc.size();
PatchDataField<Tvec> &f
= tmp.template get_field<Tvec>(sched.pdl().template get_field_idx<Tvec>("xyz"));
u32 len = vec_acc.size();
PatchDataField<Tvec> &f = tmp.template get_field<Tvec>(
sched.pdl_old().template get_field_idx<Tvec>("xyz"));
sycl::buffer<Tvec> buf(vec_acc.data(), len);
f.override(buf, len);
}

{
PatchDataField<Tscal> &f = tmp.template get_field<Tscal>(
sched.pdl().template get_field_idx<Tscal>("hpart"));
sched.pdl_old().template get_field_idx<Tscal>("hpart"));
using Kernel = SPHKernel<Tscal>;
f.override(Kernel::hfactd * dr);
}
Expand Down Expand Up @@ -269,21 +269,21 @@ void shammodels::gsph::Model<Tvec, SPHKernel>::add_cube_hcp_3d(
patch_coord.lower,
patch_coord.upper);

PatchDataLayer tmp(sched.get_layout_ptr());
PatchDataLayer tmp(sched.get_layout_ptr_old());
tmp.resize(vec_acc.size());
tmp.fields_raz();

{
u32 len = vec_acc.size();
PatchDataField<Tvec> &f
= tmp.template get_field<Tvec>(sched.pdl().template get_field_idx<Tvec>("xyz"));
u32 len = vec_acc.size();
PatchDataField<Tvec> &f = tmp.template get_field<Tvec>(
sched.pdl_old().template get_field_idx<Tvec>("xyz"));
sycl::buffer<Tvec> buf(vec_acc.data(), len);
f.override(buf, len);
}

{
PatchDataField<Tscal> &f = tmp.template get_field<Tscal>(
sched.pdl().template get_field_idx<Tscal>("hpart"));
sched.pdl_old().template get_field_idx<Tscal>("hpart"));
using Kernel = SPHKernel<Tscal>;
f.override(Kernel::hfactd * dr);
}
Expand Down
16 changes: 8 additions & 8 deletions src/shammodels/gsph/src/Solver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -506,7 +506,7 @@ void shammodels::gsph::Solver<Tvec, Kern>::apply_position_boundary(Tscal time_va
shamrock::SchedulerUtility integrators(sched);
shamrock::ReattributeDataUtility reatrib(sched);

auto &pdl = sched.pdl();
auto &pdl = sched.pdl_old();
const u32 ixyz = pdl.get_field_idx<Tvec>(gsph::names::common::xyz);
const u32 ivxyz = pdl.get_field_idx<Tvec>(gsph::names::newtonian::vxyz);
auto [bmin, bmax] = sched.get_box_volume<Tvec>();
Expand Down Expand Up @@ -548,7 +548,7 @@ void shammodels::gsph::Solver<Tvec, Kern>::do_predictor_leapfrog(Tscal dt) {
StackEntry stack_loc{};
using namespace shamrock::patch;

PatchDataLayerLayout &pdl = scheduler().pdl();
PatchDataLayerLayout &pdl = scheduler().pdl_old();
const u32 ixyz = pdl.get_field_idx<Tvec>(gsph::names::common::xyz);
const u32 ivxyz = pdl.get_field_idx<Tvec>(gsph::names::newtonian::vxyz);
const u32 iaxyz = pdl.get_field_idx<Tvec>(gsph::names::newtonian::axyz);
Expand Down Expand Up @@ -633,7 +633,7 @@ void shammodels::gsph::Solver<Tvec, Kern>::communicate_merge_ghosts_fields() {
using namespace shamrock;
using namespace shamrock::patch;

PatchDataLayerLayout &pdl = scheduler().pdl();
PatchDataLayerLayout &pdl = scheduler().pdl_old();
const u32 ixyz = pdl.get_field_idx<Tvec>(gsph::names::common::xyz);
const u32 ivxyz = pdl.get_field_idx<Tvec>(gsph::names::newtonian::vxyz);
const u32 ihpart = pdl.get_field_idx<Tscal>(gsph::names::common::hpart);
Expand Down Expand Up @@ -837,7 +837,7 @@ void shammodels::gsph::Solver<Tvec, Kern>::compute_omega() {
density_field.ensure_sizes(sizes->indexes);

// Get patchdata layout for hpart field
PatchDataLayerLayout &pdl = scheduler().pdl();
PatchDataLayerLayout &pdl = scheduler().pdl_old();
const u32 ihpart = pdl.get_field_idx<Tscal>(gsph::names::common::hpart);

// =========================================================================
Expand Down Expand Up @@ -1282,7 +1282,7 @@ void shammodels::gsph::Solver<Tvec, Kern>::compute_gradients() {

auto dev_sched = shamsys::instance::get_compute_scheduler_ptr();

PatchDataLayerLayout &pdl = scheduler().pdl();
PatchDataLayerLayout &pdl = scheduler().pdl_old();
const u32 ihpart = pdl.get_field_idx<Tscal>(gsph::names::common::hpart);
const u32 ivxyz = pdl.get_field_idx<Tvec>(gsph::names::newtonian::vxyz);
const bool has_uint = solver_config.has_field_uint();
Expand Down Expand Up @@ -1453,7 +1453,7 @@ void shammodels::gsph::Solver<Tvec, Kern>::prepare_corrector() {
StackEntry stack_loc{};

shamrock::SchedulerUtility utility(scheduler());
shamrock::patch::PatchDataLayerLayout &pdl = scheduler().pdl();
shamrock::patch::PatchDataLayerLayout &pdl = scheduler().pdl_old();

const u32 iaxyz = pdl.get_field_idx<Tvec>(gsph::names::newtonian::axyz);

Expand Down Expand Up @@ -1530,7 +1530,7 @@ typename shammodels::gsph::Solver<Tvec, Kern>::Tscal shammodels::gsph::Solver<Tv

auto dev_sched = shamsys::instance::get_compute_scheduler_ptr();

PatchDataLayerLayout &pdl = scheduler().pdl();
PatchDataLayerLayout &pdl = scheduler().pdl_old();
const u32 ihpart = pdl.get_field_idx<Tscal>(gsph::names::common::hpart);
const u32 iaxyz = pdl.get_field_idx<Tvec>(gsph::names::newtonian::axyz);

Expand Down Expand Up @@ -1628,7 +1628,7 @@ template<class Tvec, template<class> class Kern>
bool shammodels::gsph::Solver<Tvec, Kern>::apply_corrector(Tscal dt, u64 Npart_all) {
StackEntry stack_loc{};

shamrock::patch::PatchDataLayerLayout &pdl = scheduler().pdl();
shamrock::patch::PatchDataLayerLayout &pdl = scheduler().pdl_old();

const u32 ivxyz = pdl.get_field_idx<Tvec>(gsph::names::newtonian::vxyz);
const u32 iaxyz = pdl.get_field_idx<Tvec>(gsph::names::newtonian::axyz);
Expand Down
4 changes: 2 additions & 2 deletions src/shammodels/gsph/src/modules/UpdateDerivs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ void shammodels::gsph::modules::UpdateDerivs<Tvec, SPHKernel>::update_derivs_ite
using namespace shamrock;
using namespace shamrock::patch;

PatchDataLayerLayout &pdl = scheduler().pdl();
PatchDataLayerLayout &pdl = scheduler().pdl_old();

// Get field indices from the patch data layout
const u32 ixyz = pdl.get_field_idx<Tvec>(gsph::names::common::xyz);
Expand Down Expand Up @@ -278,7 +278,7 @@ void shammodels::gsph::modules::UpdateDerivs<Tvec, SPHKernel>::update_derivs_hll
using namespace shamrock;
using namespace shamrock::patch;

PatchDataLayerLayout &pdl = scheduler().pdl();
PatchDataLayerLayout &pdl = scheduler().pdl_old();

// Get field indices
const u32 ixyz = pdl.get_field_idx<Tvec>(gsph::names::common::xyz);
Expand Down
2 changes: 1 addition & 1 deletion src/shammodels/gsph/src/modules/io/VTKDump.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ namespace shammodels::gsph::modules {

using namespace gsph::names;

PatchDataLayerLayout &pdl = scheduler().pdl();
PatchDataLayerLayout &pdl = scheduler().pdl_old();
const u32 ivxyz = pdl.get_field_idx<Tvec>(gsph::names::newtonian::vxyz);
const u32 iaxyz = pdl.get_field_idx<Tvec>(gsph::names::newtonian::axyz);
const u32 ihpart = pdl.get_field_idx<Tscal>(gsph::names::common::hpart);
Expand Down
16 changes: 8 additions & 8 deletions src/shammodels/nbody/src/models/nbody_selfgrav.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -374,10 +374,10 @@ f64 models::nbody::Nbody_SelfGrav<flt>::evolve(

// Stepper stepper(sched,periodic_bc,htol_up_tol,htol_up_iter,gpart_mass);

const u32 ixyz = sched.pdl().get_field_idx<vec3>("xyz");
const u32 ivxyz = sched.pdl().get_field_idx<vec3>("vxyz");
const u32 iaxyz = sched.pdl().get_field_idx<vec3>("axyz");
const u32 iaxyz_old = sched.pdl().get_field_idx<vec3>("axyz_old");
const u32 ixyz = sched.pdl_old().get_field_idx<vec3>("xyz");
const u32 ivxyz = sched.pdl_old().get_field_idx<vec3>("vxyz");
const u32 iaxyz = sched.pdl_old().get_field_idx<vec3>("axyz");
const u32 iaxyz_old = sched.pdl_old().get_field_idx<vec3>("axyz_old");

// const u32 ihpart = sched.pdl.get_field_idx<flt>("hpart");

Expand Down Expand Up @@ -446,10 +446,10 @@ f64 models::nbody::Nbody_SelfGrav<flt>::evolve(
};

auto leapfrog_lambda = [&](flt old_time, bool do_force, bool do_corrector) -> flt {
const u32 ixyz = sched.pdl().get_field_idx<vec3>("xyz");
const u32 ivxyz = sched.pdl().get_field_idx<vec3>("vxyz");
const u32 iaxyz = sched.pdl().get_field_idx<vec3>("axyz");
const u32 iaxyz_old = sched.pdl().get_field_idx<vec3>("axyz_old");
const u32 ixyz = sched.pdl_old().get_field_idx<vec3>("xyz");
const u32 ivxyz = sched.pdl_old().get_field_idx<vec3>("vxyz");
const u32 iaxyz = sched.pdl_old().get_field_idx<vec3>("axyz");
const u32 iaxyz_old = sched.pdl_old().get_field_idx<vec3>("axyz_old");

logger::info_ln(
"NBodyleapfrog",
Expand Down
4 changes: 2 additions & 2 deletions src/shammodels/nbody/src/setup/nbody_setup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,14 @@ void models::nbody::NBodySetup<flt>::add_particules_fcc(

std::cout << ">>> adding : " << vec_acc.size() << " objects" << std::endl;

PatchDataLayer tmp(sched.get_layout_ptr());
PatchDataLayer tmp(sched.get_layout_ptr_old());
tmp.resize(vec_acc.size());

part_cnt += vec_acc.size();

{
u32 len = vec_acc.size();
PatchDataField<vec> &f = tmp.get_field<vec>(sched.pdl().get_field_idx<vec>("xyz"));
PatchDataField<vec> &f = tmp.get_field<vec>(sched.pdl_old().get_field_idx<vec>("xyz"));
sycl::buffer<vec> buf(vec_acc.data(), len);
f.override(buf, len);
}
Expand Down
2 changes: 1 addition & 1 deletion src/shammodels/ramses/include/shammodels/ramses/Model.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ namespace shammodels::basegodunov {
sham::DeviceBuffer<TgridVec> &buf_cell_max = pdat.get_field_buf_ref<TgridVec>(1);

PatchDataField<T> &f
= pdat.template get_field<T>(sched.pdl().get_field_idx<T>(field_name));
= pdat.template get_field<T>(sched.pdl_old().get_field_idx<T>(field_name));

auto acc = f.get_buf().copy_to_stdvec();

Expand Down
Loading
Loading