Commit a398bb47 authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

multidimensional arrays - added link to TNL documentation

parent a4338509
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -45,10 +45,9 @@ In this chapter, we present several data structures which are flexible in the se
\section{Multidimensional arrays}
\label{sec:ndarray}
\inline{Podrobnosti bych vynechal, je to popsané v diplomce a na doktorátu jsem s tím nic moc nedělal... (pouze distribuovanou verzi -- což se ale velmi hodí pro LBM i s tím synchronizerem)}
\inline{Write a documentation in TNL and reference it for details on the public interface}
\inline{Comparison with other libraries}

Many numerical methods work with coefficients indexed by three, four or even more indices and multidimensional arrays are a natural data structure for representing such values in the computer memory.
Many algorithms in scientific computing work with coefficients indexed by three, four or even more indices and multidimensional arrays are a natural data structure for representing 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.

An interesting problem is how to choose the mapping from the multidimensional index space into the one-dimensional index space.
@@ -58,8 +57,9 @@ For example, the row-major format is suitable for algorithms processing a matrix
For three- and more-dimensional arrays there are even more combinations of possible array orderings.

For these reasons, we developed a data structure which allows to configure the indexing of multidimensional data and thus optimize the data structure for given algorithm and hardware architecture.
A solution was proposed in \cite{klinkovsky:2017thesis} and its implementation based on the \CPPfourteen standard was integrated into the TNL library \cite{oberhuber:2021tnl} and further developed therein.
A notable extension of the data structure developed for the algorithms presented in \cref{chapter:numerical methods} is the \emph{distributed} version where the data is stored on multiple MPI ranks and operations are carried out collectively.
The data structure was first proposed in \cite{klinkovsky:2017thesis} and its implementation based on the \CPPfourteen standard was later integrated into the TNL library \cite{oberhuber:2021tnl} and further developed therein.
The TNL project's documentation (\url{https://tnl-project.org/documentation/})\todo{cite as Online Resource?} provides an overview of the public interface and examples showing how the data structure can be used.
In the following subsections, we describe the \emph{distributed} version of the data structure, which is especially useful for the algorithms presented in \cref{chapter:numerical methods}.

\subsection{Distributed multidimensional array}
\inline{Introduce the concept -- using figures}