.. _program_listing_file_src_pcms_transfer_multidimarray.hpp: Program Listing for File multidimarray.hpp ========================================== |exhale_lsh| :ref:`Return to documentation for file ` (``src/pcms/transfer/multidimarray.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef PCMS_TRANSFER_MULTIDIMARRAY_HPP #define PCMS_TRANSFER_MULTIDIMARRAY_HPP #include namespace pcms { using RealMatView = Kokkos::View; using IntMatView = Kokkos::View; using RealVecView = Kokkos::View; using IntVecView = Kokkos::View; using HostIntVecView = Kokkos::View; KOKKOS_INLINE_FUNCTION int calculateIndex(const IntVecView& dimensions, const int* indices) { int dim = dimensions.extent(0); int index = 0; int multiplier = 1; for (int i = dim - 1; i >= 0; --i) { index += indices[i] * multiplier; multiplier *= dimensions(i); } return index; } inline int calculateTotalSize(const HostIntVecView& dimensions) { int dim = dimensions.extent(0); int size = 1; for (int i = 0; i < dim; ++i) { size *= dimensions(i); } return size; } } // namespace pcms #endif // PCMS_TRANSFER_MULTIDIMARRAY_HPP