Mar 17 – 18, 2014
James Clerk Maxwell Building
Europe/London timezone
In some applications, the overheads associated with the fundamentally two-sided (send and receive) nature of MPI message-passing can adversely affect performance. This is of particular concern for scaling up to extremely large systems. There is a renewed interest in simpler single-sided communications models where data can be written/read directly to/from remote processes.

This two-day course covers two single-sided PGAS libraries: the OpenSHMEM standard on day 1, and the new open-source GASPI library on day 2. Hands-on practical sessions will play a central part in the course, illustrating key issues such as the need for appropriate synchronisation to ensure program correctness. All the exercises can be undertaken using C or Fortran. The OpenSHMEM material will be delivered by the ARCHER CSE team; the GASPI material will be delivered by Christian Simmendinger (T-Systems Solutions for Research) and Mirko Rahn (Fraunhofer ITWM). Further details of the GASPI training are available below.

Efficient Parallel Programming with GASPI

The HPC programmers of tomorrow will have to write codes, which are able to deal with systems hundreds of times larger than the top supercomputers of today. In this Tutorial we present an asynchronous dataflow programming model for Partitioned Global Address Spaces (PGAS) as an alternative to the programming model of MPI.

GASPI, which stands for Global Address Space Programming Interface, is a partitioned global address space (PGAS) API. The GASPI API is designed as a C/C++/Fortran library and focused on three key objectives: scalability, flexibility and fault tolerance. In order to achieve its significantly improved scaling behaviour GASPI aims at asynchronous dataflow with remote completion, rather than bulk-synchronous message exchanges. GASPI follows a single/multiple program multiple data (SPMD/MPMD) approach and offers a small, yet powerful API (also see GASPI today is used in academic and industrial simulation applications.

The Tutorial gives an overview over the key concepts of elements of GASPI, such as synchronization primitives, synchronous and asynchronous collectives, fine grained control over one-sided read and write communication primitives, global atomics, passive receives, communication groups and communication queues. GASPI aims at multi-threaded execution, offers a thread-safe API and can be used in combination with all current threading models (OpenMP, Pthreads, MCTP, and others). GASPI provides its partitioned global address space in the form of configurable memory segments and features support for heterogeneous memory architectures. All GASPI segments can directly read and write from/to each other. By spawning a GASPI segment across e.g. the main memory of a distributed Xeon Phi system and a segment across the memory of the corresponding x86 host, the GASPI API hence can provide a consistent and cohesive view of this hybrid distributed memory architecture. The flexibility of the configurable GASPI segments also allows developers to both leverage multiple memory models within a single application and/or to globally tightly couple different applications (e.g. multi-physics solvers). GASPI is failure tolerant and allows for a dynamic (shrinking or growing) node set. All non-local procedures feature timeout parameters and provide a well defined exit status.

The Tutorial will provide a hands-on introduction (in C and Fortran) which features examples and use-cases for all its key concepts (segment creation, synchronization primitives, read and write communication primitives, global atomics, passive receives, collectives, communication groups and communication queues). Case studies which demonstrate the various aspects of the GASPI API and application categories that can take advantage of these aspects are identified. This Tutorial also includes a discussion of the current GPI-2 release, the first release which supports the GASPI standard. Benchmark results on different platforms are discussed. Tools for programming with GASPI/GPI such as profiling tools are presented in a "howto" section.
James Clerk Maxwell Building
King's Buildings Mayfield Road Edinburgh EH15 3LZ
This course is part-funded by the PRACE project and is free to all. Please register using the online form. If you have any questions, please consult the course forum page or contact

Information about how to find the James Clerk Maxwell Building (JCMB) can be found on the School of Physics and Astronomy website.

Note that parking on the King's Buildings campus is by permit only, and that parking just outside on Mayfield Road is restricted before 09:15 and after 16:30 - and cars will be removed (with a hefty fee payable to get your car back) if parked there during the restricted times. Unrestricted free parking is available on nearby Hallhead Road, Ross Road, Blackbarony Road and Gordon Terrace to the east of the campus, and along the north side of the campus on West Mains Road.

A number of B&Bs and hotels can be found approximately 10 minutes' walk from EPCC, including:
* Smiths' Guest House, 77 Mayfield Road, Edinburgh EH9 3AA
* Mayfield Lodge Guest House, 75 Mayfield Road, Edinburgh EH9 3AA
* Highfield Guest House, 83 Mayfield Road, Edinburgh EH9 3AE
* Lauderville Guest House, 52 Mayfield Road, Edinburgh EH9 2NH
* Glenisla Hotel, 12 Lygon Road, Edinburgh EH16 5QB
* Glendale House Guest House, 5 Lady Road, Edinburgh EH16 5PA
There is also the Travelodge Cameron Toll, 43 Craigmillar Park, Edinburgh EH16 5PD. Note that the room price does not include breakfast.