This page is no longer maintained — Please continue to the home page at

Scala Team Wins ERC Grant

The Scala research group at EPFL is excited to announce that they have won a 5 year European Research Grant 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, 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. 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 at the SPLASH 10 conference. An overview as a slide presentation 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."

Re: Scala Team Wins ERC Grant

Congratulation on the grant.


And best of luck in delivering a solution to this complex issue

Re: Scala Team Wins ERC Grant

Good news!!! Congratulations to the Scala team. :)



CUDA is nice, but OpenCL is clearly the way forward with a much bigger scope and far more parties involved. Is it possible to do the hardware accelerator work with OpenCL in addition to, or instead of, CUDA?

I've been contracted on multiple projects to free them from the restrictions of CUDA by using OpenCL, often gaining improved performance and maintainability.

As Scala is my favourite general purpose language it'd be a shame to see this new Scala work be partially wasted by being tied to a legacy technology like CUDA.

Re: OpenCL?

 Please read the quoted documents.  They explain - quite clearly- that Vitualised Scala is decoupled from ANY platform.  This means that it'll work with CUDA, OpenCL, etc. with equal ease.  To suggest otherwise is just pure FUD.

Re: OpenCL?

Very well, but in the summary given here, CUDA is mentioned prominently and OpenCL not at all. Thank you for your clarification =)

Re: OpenCL?

The overview of Stanford & EPFL joint work that is linked to refers both to CUDA and OpenCL, so I guess there's hope for your needs here anyway. :)

Re: OpenCL?

The goal of the research is to make such issue transparent to the user of Scala and the DSLs we would be working on. You will write your application in Scala as before, and we will target whatever technology makes the most sense.


I will leave the OpenCL vs CUDA debate to be sorted out in the marketplace. Our proposed solution will be able to target whatever lower level target language you like. We hope to leverage the community to add support for their "favorite" target platform.



Stanford PPL

Re: Scala Team Wins ERC Grant

Read the following paper and you can get a rough idea what scala can do.

Re: Scala Team Wins ERC Grant

 Hi Everyone,


That paper, while relevant to some of the current work we are undertaking, is based on some older ideas that we were working on before the current tight collaboration between EPFL and Stanford.


We still have not published anything on some of the new work, there are some hints in the proposal, and more hints in these papers:


I say hints, because the papers dealt with some small examples, and we are taking these techniques and figuring out to apply them to larger applications. We also are working on figuring out how to generate from scala to a variety of lower level languages like C, CUDA, calls to BLAS, and so forth.


The goal is to make infrastructure flexible and extensible, and for end-users not to really care about CUDA, OpenCL or whatever low level performance language we generate to.


Hassan Chafi

Stanford PPL



Re: Scala Team Wins ERC Grant


Is this kind of parallel processing possible now, or only after JSR 335 - Lambda ?


Re: Scala Team Wins ERC Grant


FYI ScalaCL already provides transparent Scala -> OpenCL translation with OpenCL-backed collections (CLArray) that perform their map / filter straight on the GPU.

It's still very young and only supports a small subset of Scala in the map / filter functions, but it's growing fast :-)


Copyright © 2012 École Polytechnique Fédérale de Lausanne (EPFL), Lausanne, Switzerland