OP2: open-source framework for the execution of unstructured grid applications on clusters of GPUs or multi-core CPUs