Scalable Abstractions For General-Purpose Parallel Computation