## Parallel programming models

The Parallel Computing research group is interested in parallel programming models, languages and tools for parallel programming. This topic has undergone impressive change over recent years. New architectures and applications have rapidly become the central focus of the discipline. These changes are often a result of cross-fertilisation of parallel and distributed technologies with other rapidly evolving technologies. In the storm of such rapid evolution, we believe,  abstraction provides a cornerstone to build on.

The shift toward multicore and many-core technologies has many drivers that are likely to sustain this trend for several years to come. Software technology is consequently changing: in the long term, writing parallel programs that are efficient, portable, and correct must be no more onerous than writing sequential programs. To date, however, parallel programming has not embraced much more than low-level libraries, which often require the architectural re-design of the application. In the hierarchy of abstractions, it is only slightly above toggling absolute binary in the front panel of the machine. This approach is unable to effectively scale to support the mainstream of software development where human productivity, total cost and time to solution are equally, if not more, important aspects.

## Research topics

• High-level development tools and languages for parallel computing.
• Parallel programming models and tools for multi- and many-core: non-blocking multithreading, lock-less and lock-free algorithms.
• Parallel programming models and tools for distributed computing: zero-copy messaging.
• HPC applications: systems biology, NGS, high-energy physics, image processing, …
• Autonomic computing. Performance models and QoS for Grid. Component technology for high-performance.
• Cloud. Virtualization.
• Foundational aspects of parallel processing, semantics.

## Parallel programming models, what are they?

Let us start from what is not parallel programming model

• A parallel programming language is not a parallel programming model
• A C++ or Java synchronisation or messaging library is not a programming model, a library is not programming model
• A programming framework is not a programming model
• The shared-memory and message-passing paradigms are parallel programming models, even if they are very low-level …

## What does it mean “alpha”?

$\large \alpha f: x \equiv x = \phi \to \phi;\qquad x = \langle x_1,\ldots , x_n \rangle \to \langle f:x_1, \ldots, f:x_n \rangle ; \bot$

i.e. Backus’ FP ApplyToAll. Either look at J. Backus’ ACM 1977 Turing Award Lecture or simply consider it as the place where almost everything starts to begin.

## Contacts

Marco Aldinucci
Computer Science Department, University of Torino
Corso Svizzera 185, 10149 Torino, Italy
Tel: +39 011 6706852
E-mail: aldinuc@di.unito.it