diff --git a/src/utils/Array.hpp b/src/utils/Array.hpp index 5eb834b85fb8f0679636531e740863286e912c3d..9fa02e95a41a5200260fab84cda211412c4747e2 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 eedc5e7d72c4c2f935f0ecafe0d24747c3b2d00e..02c98c0b1f557bf401f876a9dbddbc7a15cbae6c 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