From 32cfcfb802f49a87b444b9b2e0d7c97cd7445576 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 02:28:08 +0000 Subject: [PATCH 1/4] Bump extern/amrex from `74127d6` to `6d9c25b` Bumps [extern/amrex](https://github.com/AMReX-Codes/amrex) from `74127d6` to `6d9c25b`. - [Release notes](https://github.com/AMReX-Codes/amrex/releases) - [Commits](https://github.com/AMReX-Codes/amrex/compare/74127d6d8fa83f922069a25e7ef9f153aa73f68c...6d9c25b989f19eaccbc561db8f2e3affe587bff7) --- updated-dependencies: - dependency-name: extern/amrex dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- extern/amrex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extern/amrex b/extern/amrex index 74127d6d8..6d9c25b98 160000 --- a/extern/amrex +++ b/extern/amrex @@ -1 +1 @@ -Subproject commit 74127d6d8fa83f922069a25e7ef9f153aa73f68c +Subproject commit 6d9c25b989f19eaccbc561db8f2e3affe587bff7 From 5e399a5f013925beea958f25ae59bb9a3434e019 Mon Sep 17 00:00:00 2001 From: ChongChong He Date: Sun, 13 Oct 2024 16:23:32 +1100 Subject: [PATCH 2/4] fix "pure virtual method called" error --- src/problems/RadTube/test_radiation_tube.cpp | 34 ++++++++------------ 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/src/problems/RadTube/test_radiation_tube.cpp b/src/problems/RadTube/test_radiation_tube.cpp index a17fb0a01..a91419c48 100644 --- a/src/problems/RadTube/test_radiation_tube.cpp +++ b/src/problems/RadTube/test_radiation_tube.cpp @@ -86,19 +86,7 @@ RadSystem::DefineOpacityExponentsAndLowerValues(amrex::GpuArray x_arr; -amrex::Gpu::HostVector rho_arr; -amrex::Gpu::HostVector Pgas_arr; -amrex::Gpu::HostVector Erad_arr; - -amrex::Gpu::DeviceVector x_arr_g; -amrex::Gpu::DeviceVector rho_arr_g; -amrex::Gpu::DeviceVector Pgas_arr_g; -amrex::Gpu::DeviceVector Erad_arr_g; - -template <> void QuokkaSimulation::preCalculateInitialConditions() +template <> void QuokkaSimulation::setInitialConditionsOnGrid(quokka::grid const &grid_elem) { // map initial conditions to the global variables std::string filename = "../extern/pressure_tube/initial_conditions.txt"; @@ -107,6 +95,13 @@ template <> void QuokkaSimulation::preCalculateInitialConditions() std::string header; std::getline(fstream, header); + // declare global variables + // initial conditions read from file + amrex::Gpu::HostVector x_arr; + amrex::Gpu::HostVector rho_arr; + amrex::Gpu::HostVector Pgas_arr; + amrex::Gpu::HostVector Erad_arr; + for (std::string line; std::getline(fstream, line);) { std::istringstream iss(line); std::vector values; @@ -124,10 +119,12 @@ template <> void QuokkaSimulation::preCalculateInitialConditions() Erad_arr.push_back(Erad); } - x_arr_g.resize(x_arr.size()); - rho_arr_g.resize(rho_arr.size()); - Pgas_arr_g.resize(Pgas_arr.size()); - Erad_arr_g.resize(Erad_arr.size()); + fstream.close(); + + amrex::Gpu::DeviceVector x_arr_g(x_arr.size()); + amrex::Gpu::DeviceVector rho_arr_g(rho_arr.size()); + amrex::Gpu::DeviceVector Pgas_arr_g(Pgas_arr.size()); + amrex::Gpu::DeviceVector Erad_arr_g(Erad_arr.size()); // copy to device amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, x_arr.begin(), x_arr.end(), x_arr_g.begin()); @@ -135,10 +132,7 @@ template <> void QuokkaSimulation::preCalculateInitialConditions() amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, Pgas_arr.begin(), Pgas_arr.end(), Pgas_arr_g.begin()); amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, Erad_arr.begin(), Erad_arr.end(), Erad_arr_g.begin()); amrex::Gpu::streamSynchronizeAll(); -} -template <> void QuokkaSimulation::setInitialConditionsOnGrid(quokka::grid const &grid_elem) -{ // extract variables required from the geom object amrex::GpuArray dx = grid_elem.dx_; amrex::GpuArray prob_lo = grid_elem.prob_lo_; From b3da0c9feddf050db53c16d54d05f3c2e046ec99 Mon Sep 17 00:00:00 2001 From: ChongChong He Date: Sun, 13 Oct 2024 22:40:10 +1100 Subject: [PATCH 3/4] use std::vector --- src/problems/RadTube/test_radiation_tube.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/problems/RadTube/test_radiation_tube.cpp b/src/problems/RadTube/test_radiation_tube.cpp index a91419c48..9554b33e8 100644 --- a/src/problems/RadTube/test_radiation_tube.cpp +++ b/src/problems/RadTube/test_radiation_tube.cpp @@ -97,10 +97,10 @@ template <> void QuokkaSimulation::setInitialConditionsOnGrid(quokk // declare global variables // initial conditions read from file - amrex::Gpu::HostVector x_arr; - amrex::Gpu::HostVector rho_arr; - amrex::Gpu::HostVector Pgas_arr; - amrex::Gpu::HostVector Erad_arr; + std::vector x_arr; + std::vector rho_arr; + std::vector Pgas_arr; + std::vector Erad_arr; for (std::string line; std::getline(fstream, line);) { std::istringstream iss(line); From ab6346845cb4ed8857892d98b7caac2451d4c381 Mon Sep 17 00:00:00 2001 From: ChongChong He Date: Mon, 14 Oct 2024 10:38:01 +1100 Subject: [PATCH 4/4] use SimulationData in RadTube test --- src/problems/RadTube/test_radiation_tube.cpp | 42 +++++++++++--------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/src/problems/RadTube/test_radiation_tube.cpp b/src/problems/RadTube/test_radiation_tube.cpp index 9554b33e8..1d2079e56 100644 --- a/src/problems/RadTube/test_radiation_tube.cpp +++ b/src/problems/RadTube/test_radiation_tube.cpp @@ -86,7 +86,14 @@ RadSystem::DefineOpacityExponentsAndLowerValues(amrex::GpuArray void QuokkaSimulation::setInitialConditionsOnGrid(quokka::grid const &grid_elem) +template <> struct SimulationData { + amrex::Gpu::DeviceVector x_arr_g; + amrex::Gpu::DeviceVector rho_arr_g; + amrex::Gpu::DeviceVector Pgas_arr_g; + amrex::Gpu::DeviceVector Erad_arr_g; +}; + +template <> void QuokkaSimulation::preCalculateInitialConditions() { // map initial conditions to the global variables std::string filename = "../extern/pressure_tube/initial_conditions.txt"; @@ -95,8 +102,6 @@ template <> void QuokkaSimulation::setInitialConditionsOnGrid(quokk std::string header; std::getline(fstream, header); - // declare global variables - // initial conditions read from file std::vector x_arr; std::vector rho_arr; std::vector Pgas_arr; @@ -119,31 +124,32 @@ template <> void QuokkaSimulation::setInitialConditionsOnGrid(quokk Erad_arr.push_back(Erad); } - fstream.close(); - - amrex::Gpu::DeviceVector x_arr_g(x_arr.size()); - amrex::Gpu::DeviceVector rho_arr_g(rho_arr.size()); - amrex::Gpu::DeviceVector Pgas_arr_g(Pgas_arr.size()); - amrex::Gpu::DeviceVector Erad_arr_g(Erad_arr.size()); + userData_.x_arr_g.resize(x_arr.size()); + userData_.rho_arr_g.resize(rho_arr.size()); + userData_.Pgas_arr_g.resize(Pgas_arr.size()); + userData_.Erad_arr_g.resize(Erad_arr.size()); // copy to device - amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, x_arr.begin(), x_arr.end(), x_arr_g.begin()); - amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, rho_arr.begin(), rho_arr.end(), rho_arr_g.begin()); - amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, Pgas_arr.begin(), Pgas_arr.end(), Pgas_arr_g.begin()); - amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, Erad_arr.begin(), Erad_arr.end(), Erad_arr_g.begin()); + amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, x_arr.begin(), x_arr.end(), userData_.x_arr_g.begin()); + amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, rho_arr.begin(), rho_arr.end(), userData_.rho_arr_g.begin()); + amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, Pgas_arr.begin(), Pgas_arr.end(), userData_.Pgas_arr_g.begin()); + amrex::Gpu::copyAsync(amrex::Gpu::hostToDevice, Erad_arr.begin(), Erad_arr.end(), userData_.Erad_arr_g.begin()); amrex::Gpu::streamSynchronizeAll(); +} +template <> void QuokkaSimulation::setInitialConditionsOnGrid(quokka::grid const &grid_elem) +{ // extract variables required from the geom object amrex::GpuArray dx = grid_elem.dx_; amrex::GpuArray prob_lo = grid_elem.prob_lo_; const amrex::Box &indexRange = grid_elem.indexRange_; const amrex::Array4 &state_cc = grid_elem.array_; - auto const &x_ptr = x_arr_g.dataPtr(); - auto const &rho_ptr = rho_arr_g.dataPtr(); - auto const &Pgas_ptr = Pgas_arr_g.dataPtr(); - auto const &Erad_ptr = Erad_arr_g.dataPtr(); - int x_size = static_cast(x_arr_g.size()); + auto const &x_ptr = userData_.x_arr_g.dataPtr(); + auto const &rho_ptr = userData_.rho_arr_g.dataPtr(); + auto const &Pgas_ptr = userData_.Pgas_arr_g.dataPtr(); + auto const &Erad_ptr = userData_.Erad_arr_g.dataPtr(); + int x_size = static_cast(userData_.x_arr_g.size()); const auto radBoundaries_g = RadSystem_Traits::radBoundaries;