Program Partitioning and Scheduling for Scalable Parallel Machines