Targeting heterogeneous architectures via macro data flow