Legion : programming distributed heterogeneous architectures with logical regions