Task assignment in heterogeneous multiprocessor platforms