EDGE is a complex application for computational fluid dynamics used e.g. for aerodynamic simulations in avionics industry. In this work we present the portable, high-level parallelization of EDGE for execution on multicore CPU and GPU based systems by using the multi-backend skeleton programming library SkePU. We first expose the challenges of applying portable high-level parallelization to a complex scientific application for a heterogeneous (GPU-based) system using (SkePU) skeletons and discuss the encountered flexibility problems that usually do not show up in skeleton toy programs. We then identify and implement necessary improvements in SkePU to become applicable for applications containing computations on complex data structures and with irregular data access. In particular, we improve the MapArray skeleton and provide a new MultiVector container for operand data that can be used with unstructured grid data structures. Although there is no SkePU skeleton specifically dedicated to handling computations on unstructured grids and its data structures, we still obtain portable speedup of EDGE with both multicore CPU and GPU execution by using the improved MapArray skeleton of SkePU.
|Title of host publication||Parallel Computing: On the Road to Exascale|
|Number of pages||11|
|Publication status||Published - 2016|
|Event||International Conference on Parallel Computing (ParCo) 2015 - Edinburgh, United Kingdom|
Duration: 1 Sep 2015 → 4 Sep 2015
|Conference||International Conference on Parallel Computing (ParCo) 2015|
|Period||1/09/15 → 4/09/15|