From 0f6686935fb4536027d9db3a35322b6b8e29cb88 Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Sat, 2 Oct 2021 18:27:05 +0200 Subject: [PATCH] Add copy_to to CastArray (fixes sequential build) --- src/utils/CastArray.hpp | 12 ++++++++++++ src/utils/Messenger.hpp | 12 ++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/utils/CastArray.hpp b/src/utils/CastArray.hpp index d329b4ef3..71bfc246f 100644 --- a/src/utils/CastArray.hpp +++ b/src/utils/CastArray.hpp @@ -32,6 +32,18 @@ class [[nodiscard]] CastArray return m_values[i]; } + template <typename ImageDataType, typename ImageCastDataType> + friend PUGS_INLINE void copy_to(const CastArray& source_array, + CastArray<ImageDataType, ImageCastDataType>& image_array) + { + static_assert(std::is_same_v<std::remove_const_t<CastDataType>, ImageCastDataType>); + static_assert(not std::is_const_v<ImageCastDataType>); + + Assert(source_array.size() == image_array.size()); + + std::copy(source_array.m_values, source_array.m_values + source_array.size(), &image_array[0]); + } + PUGS_INLINE CastArray& operator=(const CastArray&) = default; diff --git a/src/utils/Messenger.hpp b/src/utils/Messenger.hpp index 69b144224..75ef1732a 100644 --- a/src/utils/Messenger.hpp +++ b/src/utils/Messenger.hpp @@ -135,7 +135,7 @@ class Messenger MPI_Gather(data_address, data_array.size(), mpi_datatype, gather_address, data_array.size(), mpi_datatype, rank, MPI_COMM_WORLD); #else // PUGS_HAS_MPI - value_copy(data_array, gather_array); + copy_to(data_array, gather_array); #endif // PUGS_HAS_MPI } @@ -176,7 +176,7 @@ class Messenger MPI_Gatherv(data_address, data_array.size(), mpi_datatype, gather_address, sizes_address, positions_address, mpi_datatype, rank, MPI_COMM_WORLD); #else // PUGS_HAS_MPI - value_copy(data_array, gather_array); + copy_to(data_array, gather_array); #endif // PUGS_HAS_MPI } @@ -221,7 +221,7 @@ class Messenger MPI_Allgather(data_address, data_array.size(), mpi_datatype, gather_address, data_array.size(), mpi_datatype, MPI_COMM_WORLD); #else // PUGS_HAS_MPI - value_copy(data_array, gather_array); + copy_to(data_array, gather_array); #endif // PUGS_HAS_MPI } @@ -261,7 +261,7 @@ class Messenger MPI_Allgatherv(data_address, data_array.size(), mpi_datatype, gather_address, sizes_address, positions_address, mpi_datatype, MPI_COMM_WORLD); #else // PUGS_HAS_MPI - value_copy(data_array, gather_array); + copy_to(data_array, gather_array); #endif // PUGS_HAS_MPI } @@ -322,7 +322,7 @@ class Messenger MPI_Alltoall(sent_address, count, mpi_datatype, recv_address, count, mpi_datatype, MPI_COMM_WORLD); #else // PUGS_HAS_MPI - value_copy(sent_array, recv_array); + copy_to(sent_array, recv_array); #endif // PUGS_HAS_MPI } @@ -377,7 +377,7 @@ class Messenger Assert(sent_array_list.size() == 1); Assert(recv_array_list.size() == 1); - value_copy(sent_array_list[0], recv_array_list[0]); + copy_to(sent_array_list[0], recv_array_list[0]); #endif // PUGS_HAS_MPI } -- GitLab