A Programming Model for Clusters of SMPs