The Scala research group at EPFL is excited to announce that they have won a 5 year European Research Grant [1] of over 2.3 million Euros to tackle the "Popular Parallel Programming" challenge. This means that the Scala team will nearly double in size to pursue a truly promising way for industry to harness the parallel processing power of the ever increasing number of cores available on each chip.
As you can see from a synopsis of the proposal [2], Scala will be providing the essential mechanisms to allow a simpler programming model for common problems that benefit from parallel processing. The principal innovation is to use "language virtualization", combining polymorphic embeddings with domain-specific optimizations in a staged compilation process. In a first step DSLs are expressed as high-level libraries in a common host language, namely Scala. This neatly solves the tooling and interoperability problems. DSLs can be designed for application areas such as machine learning, fluid dynamics, analytics, financial modeling and visualization yet share a common optimization techniques, scheduling methods, hardware targets and interoperate.
The EPFL project is being accomplished in close collaboration with the groups of Prof. Olukotun, Hanrahan, and Aiken in Stanford University's Pervasive Parallelism Lab [3]. There they will embed a number of their parallel DSLs into Scala using the polymorphic embedding technique and provide their scheduling technology and code generators for CUDA and C/MPI. The approach allows the distributed hardware expertise of the Stanford group to be encoded in libraries that the DSL creators use to support a specific problem domain. Once done this provides a foundation set of libraries for other DSL designers to use. EPFL and Stanford have published a joint paper outlining their technical approach [4] at the SPLASH 10 conference. An overview as a slide presentation [5] is also available.
Their common project aims to make it much simpler for programmers in a given domain to express their problems in a way that enables massive parallelization in heterogeneous computer architectures and provides the DSL designers with a set of re-usable components that allows new domains to be added with the minimum effort.
In the short term Scala 2.9 will already start using multiple cores to increased performance using parallel collections. As this extensive new research project matures we are looking forward to future versions of Scala incorporate these new high performance features. With this significant new research investment Scala's long term support is further assured and developers can look forward to continued state-of-the-art performance improvements.
In selecting the proposal from the many presented the ERC reviewers said:
"The Popular Parallel Programming challenge to which the proposal refers is the single most important problem facing the global IT industry. Without significant progress, there is a considerable risk that the underlying business model, in which hardware performance developments enable improved software which drives purchases of new hardware, will be broken. Industry giants, including Microsoft and Intel, are well aware of this, and devote considerable resources to funding research in the area. The work proposed here describes an ambitious but coherent attempt to address the issues and consequently, if successful, would be of enormous value, both intellectually and industrially. There is not any other ongoing project which attempts to integrate developments in the necessary range of sub-disciplines. The proposed methodology is sound and builds upon developments in a number of related areas, incorporating world-leading expertise within the core team and collaborators."
Links:
[1] http://erc.europa.eu/
[2] http://www.scala-lang.org/sites/default/files/pdfs/esynopsis.pdf#
[3] http://ppl.stanford.edu/wiki/index.php/Pervasive_Parallelism_Laboratory
[4] http://infoscience.epfl.ch/record/148814
[5] http://ppl.stanford.edu/papers/onward2010.virtualization.slides.pdf