Communication-Hiding Programming for Clusters with Multi-Coprocessor Nodes