Skip to content

Commit

Permalink
DDC sync
Browse files Browse the repository at this point in the history
See merge request gysela-developpers/gyselalibxx!414

--------------------------------------------
  • Loading branch information
EmilyBourne committed Mar 22, 2024
1 parent 21d8ec4 commit 88ab2c6
Show file tree
Hide file tree
Showing 25 changed files with 160 additions and 210 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -188,16 +188,15 @@ int main(int argc, char** argv)
#endif

// Creating operators
SplineXEvaluator const spline_x_evaluator(builder_x.spline_domain(), bv_x_min, bv_x_max);
SplineXEvaluator_1d const
spline_x_evaluator_poisson(builder_x.bsplines_domain(), bv_x_min, bv_x_max);
SplineXEvaluator const spline_x_evaluator(bv_x_min, bv_x_max);
SplineXEvaluator_1d const spline_x_evaluator_poisson(bv_x_min, bv_x_max);
PreallocatableSplineInterpolatorBatched const
spline_x_interpolator(builder_x, spline_x_evaluator);

ddc::ConstantExtrapolationRule<RDimVx> bv_v_min(vx_min);
ddc::ConstantExtrapolationRule<RDimVx> bv_v_max(vx_max);

SplineVxEvaluator const spline_vx_evaluator(builder_vx.spline_domain(), bv_v_min, bv_v_max);
SplineVxEvaluator const spline_vx_evaluator(bv_v_min, bv_v_max);
PreallocatableSplineInterpolatorBatched const
spline_vx_interpolator(builder_vx, spline_vx_evaluator);

Expand Down
4 changes: 2 additions & 2 deletions simulations/geometryXVx/bump_on_tail/bumpontail_fft.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -183,14 +183,14 @@ int main(int argc, char** argv)
#endif

// Creating operators
SplineXEvaluator const spline_x_evaluator(builder_x.spline_domain(), bv_x_min, bv_x_max);
SplineXEvaluator const spline_x_evaluator(bv_x_min, bv_x_max);
PreallocatableSplineInterpolatorBatched const
spline_x_interpolator(builder_x, spline_x_evaluator);

ddc::ConstantExtrapolationRule<RDimVx> bv_v_min(vx_min);
ddc::ConstantExtrapolationRule<RDimVx> bv_v_max(vx_max);

SplineVxEvaluator const spline_vx_evaluator(builder_vx.spline_domain(), bv_v_min, bv_v_max);
SplineVxEvaluator const spline_vx_evaluator(bv_v_min, bv_v_max);
PreallocatableSplineInterpolatorBatched const
spline_vx_interpolator(builder_vx, spline_vx_evaluator);

Expand Down
7 changes: 3 additions & 4 deletions simulations/geometryXVx/landau/landau_fem_uniform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -187,16 +187,15 @@ int main(int argc, char** argv)
#endif

// Creating operators
SplineXEvaluator const spline_x_evaluator(builder_x.spline_domain(), bv_x_min, bv_x_max);
SplineXEvaluator_1d const
spline_x_evaluator_poisson(builder_x.bsplines_domain(), bv_x_min, bv_x_max);
SplineXEvaluator const spline_x_evaluator(bv_x_min, bv_x_max);
SplineXEvaluator_1d const spline_x_evaluator_poisson(bv_x_min, bv_x_max);
PreallocatableSplineInterpolatorBatched const
spline_x_interpolator(builder_x, spline_x_evaluator);

ddc::ConstantExtrapolationRule<RDimVx> bv_v_min(vx_min);
ddc::ConstantExtrapolationRule<RDimVx> bv_v_max(vx_max);

SplineVxEvaluator const spline_vx_evaluator(builder_vx.spline_domain(), bv_v_min, bv_v_max);
SplineVxEvaluator const spline_vx_evaluator(bv_v_min, bv_v_max);
PreallocatableSplineInterpolatorBatched const
spline_vx_interpolator(builder_vx, spline_vx_evaluator);

Expand Down
4 changes: 2 additions & 2 deletions simulations/geometryXVx/landau/landau_fft.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -183,14 +183,14 @@ int main(int argc, char** argv)
#endif

// Creating operators
SplineXEvaluator const spline_x_evaluator(builder_x.spline_domain(), bv_x_min, bv_x_max);
SplineXEvaluator const spline_x_evaluator(bv_x_min, bv_x_max);
PreallocatableSplineInterpolatorBatched const
spline_x_interpolator(builder_x, spline_x_evaluator);

ddc::ConstantExtrapolationRule<RDimVx> bv_v_min(vx_min);
ddc::ConstantExtrapolationRule<RDimVx> bv_v_max(vx_max);

SplineVxEvaluator const spline_vx_evaluator(builder_vx.spline_domain(), bv_v_min, bv_v_max);
SplineVxEvaluator const spline_vx_evaluator(bv_v_min, bv_v_max);
PreallocatableSplineInterpolatorBatched const
spline_vx_interpolator(builder_vx, spline_vx_evaluator);

Expand Down
5 changes: 2 additions & 3 deletions simulations/geometryXVx/sheath/sheath.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -202,10 +202,9 @@ int main(int argc, char** argv)
#endif

// Creating batched operators
SplineXEvaluator const spline_x_evaluator(builder_x.spline_domain(), bv_x_min, bv_x_max);
SplineXEvaluator const spline_x_evaluator(bv_x_min, bv_x_max);
#ifndef PERIODIC_RDIMX
SplineXEvaluator_1d const
spline_x_evaluator_poisson(builder_x.bsplines_domain(), bv_x_min, bv_x_max);
SplineXEvaluator_1d const spline_x_evaluator_poisson(bv_x_min, bv_x_max);
#endif
PreallocatableSplineInterpolatorBatched const
spline_x_interpolator(builder_x, spline_x_evaluator);
Expand Down
8 changes: 4 additions & 4 deletions simulations/geometryXYVxVy/landau/landau4d_fft.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -179,28 +179,28 @@ int main(int argc, char** argv)
// Create spline evaluator
ddc::PeriodicExtrapolationRule<RDimX> bv_x_min;
ddc::PeriodicExtrapolationRule<RDimX> bv_x_max;
SplineXEvaluator const spline_x_evaluator(builder_x.spline_domain(), bv_x_min, bv_x_max);
SplineXEvaluator const spline_x_evaluator(bv_x_min, bv_x_max);

PreallocatableSplineInterpolatorBatched const
spline_x_interpolator(builder_x, spline_x_evaluator);

ddc::PeriodicExtrapolationRule<RDimY> bv_y_min;
ddc::PeriodicExtrapolationRule<RDimY> bv_y_max;
SplineYEvaluator const spline_y_evaluator(builder_y.spline_domain(), bv_y_min, bv_y_max);
SplineYEvaluator const spline_y_evaluator(bv_y_min, bv_y_max);

PreallocatableSplineInterpolatorBatched const
spline_y_interpolator(builder_y, spline_y_evaluator);

ddc::ConstantExtrapolationRule<RDimVx> bv_vx_min(vx_min);
ddc::ConstantExtrapolationRule<RDimVx> bv_vx_max(vx_max);
SplineVxEvaluator const spline_vx_evaluator(builder_vx.spline_domain(), bv_vx_min, bv_vx_max);
SplineVxEvaluator const spline_vx_evaluator(bv_vx_min, bv_vx_max);

PreallocatableSplineInterpolatorBatched const
spline_vx_interpolator(builder_vx, spline_vx_evaluator);

ddc::ConstantExtrapolationRule<RDimVy> bv_vy_min(vy_min);
ddc::ConstantExtrapolationRule<RDimVy> bv_vy_max(vy_max);
SplineVyEvaluator const spline_vy_evaluator(builder_vy.spline_domain(), bv_vy_min, bv_vy_max);
SplineVyEvaluator const spline_vy_evaluator(bv_vy_min, bv_vy_max);

PreallocatableSplineInterpolatorBatched const
spline_vy_interpolator(builder_vy, spline_vy_evaluator);
Expand Down
7 changes: 1 addition & 6 deletions src/geometryXVx/poisson/femnonperiodicpoissonsolver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,7 @@ NUBSplineXEvaluator_1d jit_build_nubsplinesx(SplineXEvaluator_1d const& spline_x
ddc::init_discrete_space<NUBSplinesX>(knots);
}
// Boundary values are never evaluated
return NUBSplineXEvaluator_1d(
ddc::replace_dim_of<typename SplineXEvaluator_1d::bsplines_type, NUBSplinesX>(
spline_x_evaluator.bsplines_domain(),
ddc::discrete_space<NUBSplinesX>().full_domain()),
ddc::NullExtrapolationRule(),
ddc::NullExtrapolationRule());
return NUBSplineXEvaluator_1d(ddc::NullExtrapolationRule(), ddc::NullExtrapolationRule());
}

} // namespace
Expand Down
19 changes: 10 additions & 9 deletions tests/geometryXVx/femnonperiodicpoissonsolver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,15 +50,16 @@ TEST(FemNonPeriodicPoissonSolver, Ordering)

IDomainSpXVx const mesh(gridsp, gridx, gridvx);

SplineXEvaluator_1d const spline_x_evaluator(
builder_x.spline_domain(),
ddc::ConstantExtrapolationRule<RDimX>(x_min),
ddc::ConstantExtrapolationRule<RDimX>(x_max));

SplineVxEvaluator_1d const spline_vx_evaluator(
builder_vx.spline_domain(),
ddc::ConstantExtrapolationRule<RDimVx>(vx_min),
ddc::ConstantExtrapolationRule<RDimVx>(vx_min));
ddc::ConstantExtrapolationRule<RDimX> x_extrapolation_rule_min(x_min);
ddc::ConstantExtrapolationRule<RDimX> x_extrapolation_rule_max(x_min);
ddc::ConstantExtrapolationRule<RDimVx> vx_extrapolation_rule_min(vx_min);
ddc::ConstantExtrapolationRule<RDimVx> vx_extrapolation_rule_max(vx_min);

SplineXEvaluator_1d const
spline_x_evaluator(x_extrapolation_rule_min, x_extrapolation_rule_max);

SplineVxEvaluator_1d const
spline_vx_evaluator(vx_extrapolation_rule_min, vx_extrapolation_rule_max);

host_t<FieldSp<int>> charges(dom_sp);
charges(my_ielec) = -1;
Expand Down
18 changes: 9 additions & 9 deletions tests/geometryXVx/femperiodicpoissonsolver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,15 @@ TEST(FemPeriodicPoissonSolver, CosineSource)

IDomainSpXVx const mesh(gridsp, gridx, gridvx);

SplineXEvaluator_1d const spline_x_evaluator(
builder_x.spline_domain(),
ddc::PeriodicExtrapolationRule<RDimX>(),
ddc::PeriodicExtrapolationRule<RDimX>());

SplineVxEvaluator_1d const spline_vx_evaluator(
builder_vx.spline_domain(),
ddc::ConstantExtrapolationRule<RDimVx>(vx_min),
ddc::ConstantExtrapolationRule<RDimVx>(vx_max));
ddc::PeriodicExtrapolationRule<RDimX> x_extrapolation_rule_min;
ddc::PeriodicExtrapolationRule<RDimX> x_extrapolation_rule_max;
ddc::ConstantExtrapolationRule<RDimVx> vx_extrapolation_rule_min(vx_min);
ddc::ConstantExtrapolationRule<RDimVx> vx_extrapolation_rule_max(vx_max);
SplineXEvaluator_1d const
spline_x_evaluator(x_extrapolation_rule_min, x_extrapolation_rule_max);

SplineVxEvaluator_1d const
spline_vx_evaluator(vx_extrapolation_rule_min, vx_extrapolation_rule_max);
host_t<FieldSp<int>> charges(dom_sp);
charges(my_ielec) = -1;
charges(my_iion) = 1;
Expand Down
12 changes: 5 additions & 7 deletions tests/geometryXVx/masks.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,14 @@ TEST(Masks, Ordering)

SplineXBuilder_1d const builder_x(gridx);

SplineXEvaluator_1d const spline_x_evaluator(
builder_x.spline_domain(),
#ifdef PERIODIC_RDIMX
ddc::PeriodicExtrapolationRule<RDimX>(),
ddc::PeriodicExtrapolationRule<RDimX>()
ddc::PeriodicExtrapolationRule<RDimX> extrapolation_rule_min;
ddc::PeriodicExtrapolationRule<RDimX> extrapolation_rule_max;
#else
ddc::ConstantExtrapolationRule<RDimX>(x_min),
ddc::ConstantExtrapolationRule<RDimX>(x_max)
ddc::ConstantExtrapolationRule<RDimX> extrapolation_rule_min(x_min);
ddc::ConstantExtrapolationRule<RDimX> extrapolation_rule_max(x_max);
#endif
);
SplineXEvaluator_1d const spline_x_evaluator(extrapolation_rule_min, extrapolation_rule_max);

double const extent = 0.25;
double const stiffness = 1e-2;
Expand Down
3 changes: 1 addition & 2 deletions vendor/ddc/README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
# The discrete domain computation library (DDC)
<!--
Copyright (C) The DDC development team, see COPYRIGHT.md file
SPDX-License-Identifier: MIT
-->

# The discrete domain computation library (DDC)

See https://ddc.mdls.fr/

[DDC](https://ddc.mdls.fr/), is a C++-17 library that aims to offer to the C++/MPI world an equivalent to the [`xarray.DataArray`](https://xarray.pydata.org/en/stable/generated/xarray.DataArray.html)/[`dask.Array`](https://docs.dask.org/en/stable/array.html) python environment.
Expand Down
6 changes: 2 additions & 4 deletions vendor/ddc/benchmarks/splines.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ static void characteristics_advection(benchmark::State& state)
DDimX,
DDimY>
spline_builder(x_mesh, state.range(2), state.range(3));
ddc::PeriodicExtrapolationRule<X> periodic_extrapolation;
ddc::SplineEvaluator<
Kokkos::DefaultExecutionSpace,
Kokkos::DefaultExecutionSpace::memory_space,
Expand All @@ -124,10 +125,7 @@ static void characteristics_advection(benchmark::State& state)
ddc::PeriodicExtrapolationRule<X>,
DDimX,
DDimY>
spline_evaluator(
spline_builder.spline_domain(),
ddc::PeriodicExtrapolationRule<X>(),
ddc::PeriodicExtrapolationRule<X>());
spline_evaluator(periodic_extrapolation, periodic_extrapolation);
ddc::Chunk coef_alloc(
spline_builder.spline_domain(),
ddc::KokkosAllocator<double, Kokkos::DefaultExecutionSpace::memory_space>());
Expand Down
3 changes: 1 addition & 2 deletions vendor/ddc/docs/first_steps.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
# Commented example: the heat equation {#first_steps}
<!--
Copyright (C) The DDC development team, see COPYRIGHT.md file
SPDX-License-Identifier: MIT
-->

# Commented example: the heat equation {#first_steps}

In \subpage heat_equation "examples/heat_equation.cpp" is a DDC example implementing a forward
finite-difference solver for the heat equation over a rectangle 2D domain with periodic boundary
conditions.
Expand Down
3 changes: 1 addition & 2 deletions vendor/ddc/docs/heat_equation.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
# examples/heat_equation.cpp {#heat_equation}
<!--
Copyright (C) The DDC development team, see COPYRIGHT.md file
SPDX-License-Identifier: MIT
-->

# examples/heat_equation.cpp {#heat_equation}

\include{lineno} heat_equation.cpp
6 changes: 3 additions & 3 deletions vendor/ddc/examples/characteristics_advection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,7 @@ int main(int argc, char** argv)
DDimX,
DDimY>
spline_builder(x_mesh);
ddc::PeriodicExtrapolationRule<X> periodic_extrapolation;
ddc::SplineEvaluator<
Kokkos::DefaultExecutionSpace,
Kokkos::DefaultExecutionSpace::memory_space,
Expand All @@ -224,9 +225,8 @@ int main(int argc, char** argv)
DDimX,
DDimY>
spline_evaluator(
spline_builder.spline_domain(),
ddc::PeriodicExtrapolationRule<X>(),
ddc::PeriodicExtrapolationRule<X>());
periodic_extrapolation,
periodic_extrapolation);
//! [instantiate solver]

//! [instantiate intermediate chunks]
Expand Down
10 changes: 0 additions & 10 deletions vendor/ddc/include/ddc/chunk.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -104,16 +104,6 @@ class Chunk<ElementType, DiscreteDomain<DDims...>, Allocator>
{
}

/// Construct a Chunk from a deepcopy of a ChunkSpan
template <class OElementType, class... ODDims, class LayoutType>
[[deprecated("Use 'ddc::create_mirror_and_copy' instead")]] explicit Chunk(
ChunkSpan<OElementType, DiscreteDomain<ODDims...>, LayoutType> chunk_span,
Allocator allocator = Allocator())
: Chunk(chunk_span.domain(), std::move(allocator))
{
parallel_deepcopy(span_view(), chunk_span);
}

/// Deleted: use deepcopy instead
Chunk(Chunk const& other) = delete;

Expand Down
Loading

0 comments on commit 88ab2c6

Please sign in to comment.