Describir: Effective scheduling techniques for high-level parallel programming languages