OP2 is an "active" library framework for the solution of unstructured mesh-based applications. It utilizes source to-source translation and compilation so that a single ap plication code written using the OP2 API can be trans formed into different parallel implementations for execution on different back-end hardware platforms. In this paper we present the design of the current OP2 library, and inves tigate its capabilities in achieving performance portability, near-optimal performance, and scaling on modern multi-core and many-core processor based systems. A key feature of this work is OP2 's recent extension facilitating the develop ment and execution of applications on a distributed memory cluster of GPUs. We discuss the main design issues in parallelizing unstruc tured mesh based applications on heterogeneous platforms. These include handling data dependencies in accessing indi rectly referenced data, the impact of unstructured mesh data layouts (array of structs vs. struct of arrays) and design con siderations in generating code for execution on a cluster of GPUs. A representative CFD application written using the OP2 framework is utilized to provide a contrasting bench marking and performance analysis study on a range of multi core/many-core systems. These include multi-core CPUs from Intel (Westmere and Sandy Bridge) and AMD (Magny Cours) , GPUs from NVIDIA (GTX560Ti, Tesla C2070) , a distributed memory CPU cluster (Cray XE6) and a dis tributed memory GPU cluster (Tesla C2050 GPUs with In finiBand) . OP2's design choices are explored with quanti tative insights into their contributions to performance. We demonstrate that an application written once at a high-level using the OP2 API can be easily portable across a wide range of contrasting platforms and is capable of achieving near-optimal performance without the intervention of the domain application programmer.
Similarly, OP2 REF is a framework for running applications on clusters of GPUs or multi-core CPUs.
OP2: An active library framework for solving unstructured mesh-based applications on multi-core and many-core architectures
2012 Innovative Parallel Computing (InPar)
2012 Innovative Parallel Computing (InPar)
Computer Science