| 25 | ==== Session: Algorithmic skeleton libraries I (9h30-12h30) ==== |
| 26 | |
| 27 | * 9h30-10h30 ''Invited Talk'': Joel Falcou, '''Costless Software Abstractions for Parallel Architectures'''[[BR]]Performing large, intensive or non-trivial computing on array like data structures is one of the most common task in scientific computing, video game development and other fields. This matter of fact is backed up by the large number of tools, languages and libraries to perform such tasks. If we restrict ourselves to C++ based solutions, more than a dozen such libraries exists from BLAS/LAPACK C++ binding to template meta-programming based Blitz++ or Eigen. If all of these libraries provide good performance or good abstraction, none of them seems to fit the need of so many different user types. Moreover, as parallel system complexity grows, the need to maintain all those components quickly become unwieldy. This talk explores various software design techniques and their application to the implementation of a parallel computing librariy in such a way that:[[BR]]- abstraction and expressiveness are maximized through the use of Parallel Skeletons[[BR]]- cost over efficiency is minimized thanks to Generative Programming[[BR]]- architecture specific hints are used throughout the whole library thanks to architecture aware tag dispatching[[BR]]We'll skim over various applications and see how they can benefit from such tools. We will conclude by discussing what lessons were learnt from this kind of implementation and how those lessons can translate into new directions for the C++ language itself and for the design of future Parallel Skeletons. |
| 28 | |
| 29 | * 10h30-10h50: '''Coffee Break''' |
| 30 | |
| 31 | * 10h50-11h30: Kento Emoto, Kiminori Matsuzaki, '''The !SkeTo Library''' |
| 32 | |
| 33 | * 11h30-12h10: Joeffrey Légaux, Noman Javed, Sylvain Jubertie, and Frédéric Loulergue, '''OSL: The Orléans Skeleton Library'''[[BR]]Structured parallel models such as algorithmic skeletons offer a global view of the parallel program in contrast with the fragmented view of the SPMD style. This makes program easier to write and to read for users, and offer additional opportunities for optimisation done by the libraries, compilers and/or run-time systems. Algorithmic skeletons are or can be seen as patterns or higher-order functions implemented in parallel, often manipulating distributed data structures. Orléans Skeleton Library (OSL) is a library of parallel algorithmic skeletons, written in C++ on top of MPI, which uses meta-programming techniques for optimisation. This talk will present the recent work on OSL: skeletons used to manage arbitrary distributions of distributed arrays, support for BSP homomorphisms, an exception mechanism that ensures the global coherence of the system after exceptions are caught. |
| 34 | |
| 35 | ==== Lunch (12h10-13h50)==== |
| 36 | |
| 37 | ==== Session: Algorithmic skeleton libraries II (13h50-15h10) ==== |
| 38 | |
| 39 | * 13h50-14h30: Shigeyuki Sato, Kiminori Matsuzaki, '''A Generic Implementation of Tree Skeletons''' |
| 40 | |
| 41 | * 14h30-15h10: Wadoud Bousdira, Frédéric Loulergue, Julien Tesson, Vitor Rodrigues, and Sylvain Dailler, '''A Verified Library of Algorithmic Skeletons on Evenly Distributed Arrays'''[[BR]]To make parallel programming as widespread as parallel architectures, more structured parallel programming paradigms are necessary. One of the possible approaches are Algorithmic skeletons that are abstract parallel patterns. They can be seen as higher order functions implemented in parallel. Algorithmic skeletons offer a simple interface to the programmer without all the details of parallel implementations as they abstract the communications and the synchronisations of parallel activities. To write a parallel program, users have to combine and compose the skeletons. Orléans Skeleton Library (OSL) is an efficient meta-programmed C++ library of algorithmic skeletons that manipulate distributed arrays. A prototype implementation of OSL exists as a library written with the function parallel language Bulk Synchronous Parallel ML. In this paper we are interested in verifying the correctness of a subset of this prototype implementation. To do so, we give a functional specification (i.e. without the parallel details) of a subset of OSL and we prove the correctness of the BSML implementation with respect to this functional specification, using the Coq proof assistant. |
| 42 | |
| 43 | * 15h10-15h30: '''Coffee Break''' |
| 44 | |
| 45 | ==== Session: Verified compilation (15h30-18h10) ==== |
| 46 | |
| 47 | * 15h30-16h30: '''Invited Speaker''' |
| 48 | |
| 49 | * 16h30-16h50: '''Coffee Break''' |
| 50 | |
| 51 | * 16h50-17h30: Thomas Pinsard, Frédéric Dabrowski, Frédéric Loulergue, '''Nested Atomic Sections with Thread Escape: From a Formal Definition to Verified Compilation'''[[BR]]We consider a simple imperative language with fork/join parallelism and lexically scoped nested atomic sections from which threads can escape. In this context, our contribution is the precise definition of atomicity, well-synchronisation on execution traces and the proof that the latter implies the strong form of the former. Then we define the formal operational semantics of this language that satisfies these specifications. |
| 52 | |
| 53 | * 17h30-18h10: Sylvain Dailler, Frédéric Dabrowski, '''Modular Verified Compilation for Parallel Languages''' |
| 54 | |
| 55 | ==== Dinner ==== |
| 56 | |
| 57 | === Wednesday, July 2 === |
| 58 | |
37 | | ==== Lunch (12h30-14h00)==== |
38 | | |
39 | | ==== Session: Algorithmic skeleton libraries (14h-18h) ==== |
40 | | |
41 | | * 14h00-15h00 ''Invited Talk'': Joel Falcou, '''Costless Software Abstractions for Parallel Architectures'''[[BR]]Performing large, intensive or non-trivial computing on array like data structures is one of the most common task in scientific computing, video game development and other fields. This matter of fact is backed up by the large number of tools, languages and libraries to perform such tasks. If we restrict ourselves to C++ based solutions, more than a dozen such libraries exists from BLAS/LAPACK C++ binding to template meta-programming based Blitz++ or Eigen. If all of these libraries provide good performance or good abstraction, none of them seems to fit the need of so many different user types. Moreover, as parallel system complexity grows, the need to maintain all those components quickly become unwieldy. This talk explores various software design techniques and their application to the implementation of a parallel computing librariy in such a way that:[[BR]]- abstraction and expressiveness are maximized through the use of Parallel Skeletons[[BR]]- cost over efficiency is minimized thanks to Generative Programming[[BR]]- architecture specific hints are used throughout the whole library thanks to architecture aware tag dispatching[[BR]]We'll skim over various applications and see how they can benefit from such tools. We will conclude by discussing what lessons were learnt from this kind of implementation and how those lessons can translate into new directions for the C++ language itself and for the design of future Parallel Skeletons. |
42 | | |
43 | | * 15h00-15h40: Kento Emoto, Kiminori Matsuzaki, '''The !SkeTo Library''' |
44 | | |
45 | | * 15h40-16h20: Joeffrey Légaux, Noman Javed, Sylvain Jubertie, and Frédéric Loulergue, '''OSL: The Orléans Skeleton Library'''[[BR]]Structured parallel models such as algorithmic skeletons offer a global view of the parallel program in contrast with the fragmented view of the SPMD style. This makes program easier to write and to read for users, and offer additional opportunities for optimisation done by the libraries, compilers and/or run-time systems. Algorithmic skeletons are or can be seen as patterns or higher-order functions implemented in parallel, often manipulating distributed data structures. Orléans Skeleton Library (OSL) is a library of parallel algorithmic skeletons, written in C++ on top of MPI, which uses meta-programming techniques for optimisation. This talk will present the recent work on OSL: skeletons used to manage arbitrary distributions of distributed arrays, support for BSP homomorphisms, an exception mechanism that ensures the global coherence of the system after exceptions are caught. |
46 | | |
47 | | * 16h20-16h40: '''Coffee Break''' |
48 | | |
49 | | * 16h40-17h20: Shigeyuki Sato, Kiminori Matsuzaki, '''A Generic Implementation of Tree Skeletons''' |
50 | | |
51 | | * 17h20-18h00: Wadoud Bousdira, Frédéric Loulergue, Julien Tesson, Vitor Rodrigues, and Sylvain Dailler, '''A Verified Library of Algorithmic Skeletons on Evenly Distributed Arrays'''[[BR]]To make parallel programming as widespread as parallel architectures, more structured parallel programming paradigms are necessary. One of the possible approaches are Algorithmic skeletons that are abstract parallel patterns. They can be seen as higher order functions implemented in parallel. Algorithmic skeletons offer a simple interface to the programmer without all the details of parallel implementations as they abstract the communications and the synchronisations of parallel activities. To write a parallel program, users have to combine and compose the skeletons. Orléans Skeleton Library (OSL) is an efficient meta-programmed C++ library of algorithmic skeletons that manipulate distributed arrays. A prototype implementation of OSL exists as a library written with the function parallel language Bulk Synchronous Parallel ML. In this paper we are interested in verifying the correctness of a subset of this prototype implementation. To do so, we give a functional specification (i.e. without the parallel details) of a subset of OSL and we prove the correctness of the BSML implementation with respect to this functional specification, using the Coq proof assistant. |
52 | | |
53 | | ==== Dinner ==== |
54 | | |
55 | | === Wednesday, July 2 === |
56 | | |
57 | | ==== Session: Verified compilation ==== |
58 | | |
59 | | * 09h30-10h30: '''Invited Speaker''' |
60 | | |
61 | | * 10h30-10h50: '''Coffee Break''' |
62 | | |
63 | | * 10h50-11h30: Thomas Pinsard, Frédéric Dabrowski, Frédéric Loulergue, '''Nested Atomic Sections with Thread Escape: From a Formal Definition to Verified Compilation'''[[BR]]We consider a simple imperative language with fork/join parallelism and lexically scoped nested atomic sections from which threads can escape. In this context, our contribution is the precise definition of atomicity, well-synchronisation on execution traces and the proof that the latter implies the strong form of the former. Then we define the formal operational semantics of this language that satisfies these specifications. |
64 | | |
65 | | * 11h30-12h10: Sylvain Dailler, Frédéric Dabrowski, '''Modular Verified Compilation for Parallel Languages''' |
66 | | |