Xavier Andrade edited Parallelization.tex  over 9 years ago

Commit id: 93b29eb85c477650a7f4321a5650529a00eaef4c

deletions | additions      

       

For example, we have found that the traditional picture of an state as the basic object is not adequate for optimal performance, as it does not expose enough data parallelism~\cite{Andrade_2012_gpus}. In Octopus we use a higher level interface where the basic object is a group of several states.  The developers are exposed to a linear array that contains the values of the field for each grid point. Additional data structures provide information about each grid point and the structure of the grid. This level of abstraction makes it simple for developers to write code that works for different problem dimensionality, and different kinds and shapes of grids.  In terms of performance, this approach allows us to use sophisticated methods to  control how the grid points are stored in memory.  \ref{fig:gridmapping} memory with the objective of using processor caches more efficiently. We have found that by using space filling curves~\cite{Peano_1890}, as shown in Fig.~\ref{fig:gridmaps}, in particular the Hilbert curve\cite{Hilbert_1891,Skilling2004}.