Parallel Programming Group
Welcome! You have reached the homepage of the Parallel Programming group at the Software Languages Lab. We mainly do research on language design and implementation for multi-core platforms. We are interested in refining existing parallel programming models (actors, software transactional memory, data parallelism etc.), but we also investigate optimizing virtual machines, interpreters and compilers. Additionally, we work on application-specific solutions, for example in the domain of quantum computing. What sets us apart is the fact that most of our research is done in the context of dynamic languages (think Common Lisp, Smalltalk, Scheme, Ruby, Python and so on).
The multi-core evolution
The hunger for more processing power never stops growing. Though hardware manufacturers have been able to keep up with this demand during the past decades by scaling processors based on the Von Neumann architecture, they are now being confronted with the physical limitations w.r.t. to hardware miniaturization. This explains the current shift towards research on multi-core architectures, where a single processor is comprised of multiple inter-connected processing units or cores. Exploiting the physical parallelism offered by such architectures is the key to increasing performance.
Multi-core processors are sneaking into our everyday life. Desktops and laptops are already equipped with small multi-core processors since a few years, see the widespread Intel Core processors (2-8 cores), and Sony's gaming console relies on 6 cores of the IBM Cell processor to boost performance. The number of processor cores is slowly growing, with high-end servers already having between 32 and 64 cores (see the Tilera architecture and the Sun UltraSPARC). In a not so distant future we will even get access to many-cores, machines consisting of hundreds and thousands of cores.
Language Design and Innovation
The big challenge of the multi-core evolution is that we will need to shift to parallel programming, after 60 years of mainly sequential thinking. That is, until recently, explicit parallelization was only considered for highly specific applications, for example in the domains of scientific computing and multimedia. The past experience with parallel programming is substantial, but it remains a complex undertaking. Dealing with issues such as load balancing, data races, communication latency, race conditions, and even just identification of the potential parallelism in a given program are still active research topics, but also new challenges such as power consumption and processor failure need to be dealt with.
It is obvious that current mainstream programming languages are not designed for parallel programming. It is in this light that a new family of multiprocessing languages is slowly emerging, examples of which include Sun's Fortress, Cray's Chapel and IBM's X10. These languages integrate modern object-oriented and parallel features, but have yet to be fully implemented and tested. Our own research is similar in nature, but emphasizes the integration of dynamic languages and parallelism.
Research topics
- Dynamic Parallelization
- Programming Models for Many-Core and Exascale
- Parallel Quantum Simulators
- Virtual Machines for Many-Core Systems
Members
Post-docs
- Bruno de Fraine Programming Models for Massively Parallel Systems
- Ellie D'Hondt Designing programming languages for quantum computation
- Charlotte Herzeel Implicit Parallelization - Dynamic Parallelization for Multicores
Pre-docs
- Stefan Marr Virtual Machines for Many-Core Architectures: Decoupling Abstract From Concrete Concurrency Models
- Yves Vandriessche Stream and Dataflow Programming Languages
- Joeri De Koster An actor based approach for real world applications
Former Members
- Pascal Costanza Programming Models for Many-Core and Exascale Systems
- Stijn Verhaegen Annotation-driven for the Many-core Era
- Leonardo Uribe Language constructs for data-aware computing
Projects
- Intel Exascience Europe Research Labs, IWT Speerpuntproject
- Tilera Many-Core Architecture for Virtual Machines, joint studies with IBM Research
