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

  • 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

Former Members

Projects

 
research/ppp.txt · Last modified: 22.09.2011 11:27 by caherzee
 

© 2012 • Software Languages Lab • Submit comments and bugs to our Bugzilla or to the webmaster