Traditional automatic parallelization techniques are not keeping pace with the widespread growth in parallelism in computing. ASC is a research project that studies an alternative approach to autoparallelism.
Rather than compiling sequential programs into parallel programs, our approach arises from the simple observation that the execution of a sequential deterministic program on its input data traces out a unique path through the state space of execution. If we could somehow partition that complete path into multiple smaller subpaths, then we could take advantage of all available processors to execute each subpath in parallel.
Of course we cannot in general know this partition ahead of time. However, as execution proceeds we combine the subpaths seen thus far with records of previous execution into updates sent to learning algorithms. The learning algorithms then issue predictions for starting points of future subpaths. From each predicted starting point we optimistically execute forward a short path, placing the result in a large-scale cache memory. The more of these short paths that turn out to be subpaths of the actual complete path, the more automatic parallel speedup we get.
To learn more about these ideas, a good introduction is the RICON '13 talk given by Prof. Margo Seltzer, followed by our short HOTPAR '12 paper that introduces the idea, then our SYSTOR '13 paper that details our large-scale computational cache, and finally our longer ASPLOS '14 paper that presents the complete system in detail.
We have also specialized these ideas to domains with interesting structure not present in the general program execution setting, as in our Speculative Parallel Molecular Dynamics Journal of Chemical Theory and Computation (JCTC) '16 paper and our Speculative Parallel Markov Chain Monte Carlo Uncertainty in Artificial Intelligence (UAI) '14 paper.