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