A hybrid parallel algorithm for transforming finite element functions from adaptive to Cartesian grids.
High-performance computing is often used in various fields of computational science and engineering where the availability of a large memory is crucial to represent given problems. For problems arising from the discretization of partial differential equations, adaptivity is an alternative approach to reduce the storage requirements. We present an illustrating example demonstrating the need for an algorithm change when a serial hierarchical data structure is parallelized. More precisely, we investigate this issue taking as example an algorithm to transform finite element functions defined on an adaptive grid into functions on a Cartesian grid. By combining distributed- and shared-memory parallelization, the resulting hybrid parallel algorithm involves two levels of parallelism. The performance of the parallel algorithm is shown to be highly problem dependent. There are certain problem instances where the speedup is satisfactory while there is a dramatic performance reduction for other problem instances. The numerical experiments are given for transformations resulting from three-dimensional computational fluid dynamic problems. The problem instances are given by up to 750000 tetrahedra representing about 3 millions of unknown variables. The experiments are carried out on a Xeon-based cluster using up to 64 processors.