Many algorithms in scientific computing work with coefficients indexed by three, four or even more indices.
Multidimensional arrays are therefore a natural data structure for organizing and storing such values in the computer memory.
Since the \C++ language supports only one-dimensional arrays natively, multidimensional arrays have to be implemented explicitly (e.g., in a library) based on a mapping of multidimensional data to an internal one-dimensional array.
@@ -40,7 +38,7 @@ In order to represent a distributed multidimensional array, each MPI rank needs
According to the convention used in TNL, the local subarray spans the multidimensional interval $[\ic{localBegins}, \ic{localEnds})$.
\end{itemize}
Although these attributes of a distributed multidimensional array can be created separately and managed manually, TNL provides a convenient data structure \ic{TNL::Containers::DistributedNDArray} that provides a high-level interface to manage these attributes.
The TNL project's documentation \cite{TNL:documentation} provides an overview of the public interface and examples showing how the data structure can be used.\todo{write the documentation for \ic{DistributedNDArray}}
The TNL project's documentation \cite{TNL:documentation} provides an overview of the public interface and examples showing how the data structure can be used.
\subsection{Operations}
Algorithms involving a distributed multidimensional array may perform different operations on the data structure.