Scheduling for Parallel Architectures: Theory, Applications, Challenges