Critical Path Scheduling Parallel Programs on an Unbounded Number of Processors