A scheduling framework for large-scale, parallel, and topology-aware applications