Skip to content
Merged
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) {
Comment thread
tdavidcl marked this conversation as resolved.
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
Original file line number Diff line number Diff line change
Expand Up @@ -185,8 +185,8 @@ namespace shammodels::gsph {
build_position_interf_field(shambase::DistributedDataShared<InterfaceIdTable> &builder) {
StackEntry stack_loc{};

const u32 ixyz = sched.pdl().template get_field_idx<vec>("xyz");
const u32 ihpart = sched.pdl().template get_field_idx<flt>("hpart");
const u32 ixyz = sched.pdl_old().template get_field_idx<vec>("xyz");
const u32 ihpart = sched.pdl_old().template get_field_idx<flt>("hpart");

// Get field indices from xyzh_ghost_layout for accessing ghost data
const u32 ixyz_ghost = xyzh_ghost_layout->template get_field_idx<vec>("xyz");
Expand Down Expand Up @@ -301,8 +301,8 @@ namespace shammodels::gsph {
shambase::DistributedDataShared<shamrock::patch::PatchDataLayer> &&positioninterfs) {
StackEntry stack_loc{};

const u32 ixyz = sched.pdl().template get_field_idx<vec>("xyz");
const u32 ihpart = sched.pdl().template get_field_idx<flt>("hpart");
const u32 ixyz = sched.pdl_old().template get_field_idx<vec>("xyz");
const u32 ihpart = sched.pdl_old().template get_field_idx<flt>("hpart");

// Get field indices from xyzh_ghost_layout for accessing ghost data
const u32 ixyz_ghost = xyzh_ghost_layout->template get_field_idx<vec>("xyz");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ namespace shammodels::gsph {

using namespace shamrock::patch;

const u32 ihpart = sched.pdl().template get_field_idx<Tscal>("hpart");
const u32 ihpart = sched.pdl_old().template get_field_idx<Tscal>("hpart");

PatchField<Tscal> interactR_patch = sched.map_owned_to_patch_field_simple<Tscal>(
[&](const Patch p, PatchDataLayer &pdat) -> Tscal {
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
18 changes: 9 additions & 9 deletions src/shammodels/gsph/src/Solver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -518,7 +518,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 @@ -560,7 +560,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 @@ -645,7 +645,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 @@ -850,7 +850,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 @@ -1226,7 +1226,7 @@ void shammodels::gsph::Solver<Tvec, Kern>::copy_eos_to_patchdata() {
// Copy density, pressure, and soundspeed from solvergraph fields to patchdata
// This ensures the values persist across restarts and can be read by VTKDump

PatchDataLayerLayout &pdl = scheduler().pdl();
PatchDataLayerLayout &pdl = scheduler().pdl_old();
u32 idensity = pdl.get_field_idx<Tscal>(names::newtonian::density);
u32 ipressure = pdl.get_field_idx<Tscal>(names::newtonian::pressure);
u32 isoundspeed = pdl.get_field_idx<Tscal>(names::newtonian::soundspeed);
Expand Down Expand Up @@ -1295,7 +1295,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 @@ -1466,7 +1466,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 @@ -1543,7 +1543,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 @@ -1641,7 +1641,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
2 changes: 1 addition & 1 deletion src/shammodels/gsph/src/modules/GSPHGhostHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ auto GSPHGhostHandler<vec>::gen_id_table_interfaces(GeneratorMap &&gen)

std::map<u64, f64> send_count_stats;

const u32 ixyz = sched.pdl().template get_field_idx<vec>("xyz");
const u32 ixyz = sched.pdl_old().template get_field_idx<vec>("xyz");

gen.for_each([&](u64 sender, u64 receiver, InterfaceBuildInfos &build) {
shamrock::patch::PatchDataLayer &src = sched.patch_data.get_pdat(sender);
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
4 changes: 2 additions & 2 deletions src/shammodels/gsph/src/modules/io/VTKDump.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ namespace {

shamlog_debug_mpi_ln("gsph::vtk", "rank count =", num_obj);

const u32 ixyz = sched.pdl().get_field_idx<Tvec>(shammodels::gsph::names::common::xyz);
const u32 ixyz = sched.pdl_old().get_field_idx<Tvec>(shammodels::gsph::names::common::xyz);
std::unique_ptr<sycl::buffer<Tvec>> pos = sched.rankgather_field<Tvec>(ixyz);

writer.write_points(pos, num_obj);
Expand Down 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
Loading
Loading