Algorithmic skeletons for multi-core, multi-GPU systems and clusters. (1st January 2012)