TEXT - Towards EXaflop applicaTions

Tutorial in Parallel Programming with MPI/SMPSs

4 Jun 2011

25th International Conference on Supercomputing
Tucson, Arizona





MPI/SMPSs is a hybrid parallel programming model for large-scale homogeneous or heterogeneous systems. The SMPSs component of the model enables incremental parallelization of sequential code, while providing the necessary support for extracting task-level parallelism from applications at runtime, asynchronous execution, heterogeneity, modularity, and portability. Like OpenMP, SMPSs is based on directives and its tasking model can be seen as an extension of the OpenMP task model, with potential for easier parallelization and more efficient execution, due to dynamic analysis of task dependencies. The integration of SMPSs with MPI enables easy migration of current MPI applications and improves, in an automatic fashion, the performance of these applications by overlapping computation with communication. MPI/SMPSs is a promising approach to parallelizing code for future exascale systems, due to its potential to exploit unprecedented amounts of parallelism, while coping with memory latency, network latency, and load imbalance. MPI/SMPSs is currently being deployed on several relevant and realistic applications including linear algebra libraries, geophysics, plasma physics, engineering and molecular dynamics.



  • Jesus Labarta, Professor, Universitat Politecnica de Catalunya and Barcelona Supercomputing Center
  • Dr. Bernhd Mohr, Senior Scientist, Juelich Supercomputing Center
  • Dr. Jose Gracia, High-Performance Computing Center Stuttgart
  • Rosa M. Badia, Team leader, Barcelona Supercomputing Center and CSIC


Duration: Half day


Location: 25th International Conference on Supercomputing in Phoenix (Arizona)


Expected tutorial format: Talks and demos


Tutorial main objectives:

  • Introduce the hybrid MPI/SMPSs parallel programming model for future exascale systems
  • Demonstrate how to incrementally parallelize/optimize MPI applications using MPI/SMPSs
  • Discuss advanced concepts on scheduling, synchronization, and code optimization
  • Demonstrate real-life application parallelization scenarios
  • Demonstrate performance analysis and debugging tools


Tutorial topics:

  • Introduction to MPI/SMPSs
  • Asynchronous data-flow execution
  • Defining tasks and their memory footprints
  • Overlapping computation with communication using tasks
  • Advanced concepts: Task synchronization, scheduling and reductions
  • Application parallelization examples
  • Performance analysis of MPI/SMPSs programs.


Targeted audience: Average to advanced programmers of parallel applications; developers of programming models, runtime systems and tools for parallel programming


Prerequisite knowledge: Average knowledge of parallel programming in MPI


Detailed Agenda

  1. Introduction and General Concept  (Jesus Labarta, 120 minutes)
    General introduction -  ideas of the model, history, future, current support to GPUs
    Simple examples (choleskymatmul, ...)
  2. Applications (90 minutes)
    PEPC, PSC (Bernd Mohr, 40 minutes)
    LBC (Jose Gracia, 20 minutes)
    SPECFEM3D, Linear Algebra (Rosa M. Badia, 30 minutes)
  3. Demo: basics (Jose Gracia, 90 minutes)
    Compiling, running MPI/SMPSs
    Best practices when programming in Fortran
    Demo on debugging with Ayudame/Temanejo
  4. Performance Analysis (90 minutes)
    Paraver (Jesus Labarta, 30 minutes)
    Scalasca (Bernd Mohr, 45 minutes)
    Wrap-up (15 minutes)

All the slides and additional material will be distributed to the attendees in a USB memory.