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