From 27a9ca5c7611fc705d7389d1e71ae84e3b88b75b Mon Sep 17 00:00:00 2001 From: Harshada Balasubramanian <harshada.balasubramanian@mpimet.mpg.de> Date: Wed, 19 Feb 2025 18:00:47 +0100 Subject: [PATCH] scenario 5 + fix for prints --- main.cpp | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/main.cpp b/main.cpp index c7d6f42..0c3932c 100644 --- a/main.cpp +++ b/main.cpp @@ -45,7 +45,7 @@ void scenario_1(double* array, int nblocks, int nlev, int nproma, bool print=tru void scenario_2(double* array, int nblocks, int nlev, int nproma, bool print=true) { if(print) - std::cout << "Right layout; view(array, nblocks, nlev, nproma); d_view(jb, jk, jc) ----- " << std::endl; + std::cout << "Right layout; view(array, nproma, nlev, nblocks); d_view(jc, jk, jb) ----- " << std::endl; Kokkos::View<double***, Kokkos::LayoutRight, Kokkos::HostSpace, Kokkos::MemoryUnmanaged> view(array, nproma, nlev, nblocks); @@ -100,7 +100,7 @@ void scenario_2b(double* array, int nblocks, int nlev, int nproma, bool print=tr void scenario_3(double* array, int nblocks, int nlev, int nproma, bool print=true) { if(print) - std::cout << "Left layout; view(array, nblocks, nlev, nproma); d_view(jb, jk, jc) ----- " << std::endl; + std::cout << "Left layout; view(array, nproma, nlev, nblocks); d_view(jc, jk, jb) ----- " << std::endl; Kokkos::View<double***, Kokkos::LayoutLeft, Kokkos::HostSpace, Kokkos::MemoryUnmanaged> view(array, nproma, nlev, nblocks); @@ -127,7 +127,7 @@ void scenario_3(double* array, int nblocks, int nlev, int nproma, bool print=tru void scenario_4(double* array, int nblocks, int nlev, int nproma, bool print=true) { if(print) - std::cout << "Default layout; view(array, nblocks, nlev, nproma); d_view(jb, jk, jc) ----- " << std::endl; + std::cout << "Default layout; view(array, nproma, nlev, nblocks); d_view(jc, jk, jb) ----- " << std::endl; Kokkos::View<double***, Kokkos::HostSpace, Kokkos::MemoryUnmanaged> view(array, nproma, nlev, nblocks); @@ -152,6 +152,34 @@ void scenario_4(double* array, int nblocks, int nlev, int nproma, bool print=tru } +void scenario_5(double* array, int nblocks, int nlev, int nproma, bool print=true) { + + if(print) + std::cout << "Default layout; view(array, nproma, nblocks, nlev); d_view(jc, jb, jk) ----- KOMISCH" << std::endl; + + Kokkos::View<double***, Kokkos::HostSpace, Kokkos::MemoryUnmanaged> view(array, nproma, nblocks, nlev); + + using space_t = Kokkos::DefaultExecutionSpace::memory_space; + auto d_view = Kokkos::create_mirror_view_and_copy(space_t(), view); + + timer.reset(); + for (int jb = 0 ; jb < nblocks; ++jb) + Kokkos::parallel_for("", Kokkos::RangePolicy<>(0, nproma), KOKKOS_LAMBDA (const int jc) { + for (int jk = 0; jk < nlev; ++jk) { + int p = jc * nlev * nblocks + jb * nlev + jk; + d_view(jc, jb, jk) = p; + + // printf("%f ", d_view(jb, jk, jc)); + }}); + + if(print) + printf("Time = %f ms\n\n", timer.seconds() * 1000); + Kokkos::deep_copy(view, d_view); + validate(array, nblocks, nlev, nproma); + +} + + int main() { @@ -195,6 +223,7 @@ int main() { scenario_2b(array, nblocks, nlev, nproma); scenario_3(array, nblocks, nlev, nproma); scenario_4(array, nblocks, nlev, nproma); + scenario_5(array, nblocks, nlev, nproma); } Kokkos::finalize(); -- GitLab