From 85e710c1d74b591e34c9008e4530247323604084 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com>
Date: Thu, 24 Jun 2021 10:36:05 +0200
Subject: [PATCH] Do not initializa Kokkos Arrays anymore

This should improve performances for small Arrays
---
 src/utils/Array.hpp | 7 ++++++-
 src/utils/Table.hpp | 8 +++++++-
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/utils/Array.hpp b/src/utils/Array.hpp
index 5eb834b85..9fa02e95a 100644
--- a/src/utils/Array.hpp
+++ b/src/utils/Array.hpp
@@ -85,10 +85,15 @@ class [[nodiscard]] Array
   Array& operator=(Array&&) = default;
 
   PUGS_INLINE
-  explicit Array(size_t size) : m_values("anonymous", size)
+  explicit Array(size_t size)
   {
     static_assert(not std::is_const<DataType>(), "Cannot allocate Array of const data: only view is "
                                                  "supported");
+    if constexpr (std::is_arithmetic_v<DataType>) {
+      m_values = Kokkos::View<DataType*>{Kokkos::view_alloc(Kokkos::WithoutInitializing, "anonymous"), size};
+    } else {
+      m_values = Kokkos::View<DataType*>{"anonymous", size};
+    }
   }
 
   PUGS_INLINE
diff --git a/src/utils/Table.hpp b/src/utils/Table.hpp
index eedc5e7d7..02c98c0b1 100644
--- a/src/utils/Table.hpp
+++ b/src/utils/Table.hpp
@@ -99,10 +99,16 @@ class [[nodiscard]] Table
   Table& operator=(Table&&) = default;
 
   PUGS_INLINE
-  explicit Table(size_t nb_lines, size_t nb_columns) : m_values("anonymous", nb_lines, nb_columns)
+  explicit Table(size_t nb_lines, size_t nb_columns)
   {
     static_assert(not std::is_const<DataType>(), "Cannot allocate Table of const data: only view is "
                                                  "supported");
+    if constexpr (std::is_arithmetic_v<DataType>) {
+      m_values =
+        Kokkos::View<DataType**>{Kokkos::view_alloc(Kokkos::WithoutInitializing, "anonymous"), nb_lines, nb_columns};
+    } else {
+      m_values = Kokkos::View<DataType**>{"anonymous", nb_lines, nb_columns};
+    }
   }
 
   PUGS_INLINE
-- 
GitLab