Home | Programme | Registration | Venue | Accommodation | Travel | Gallery | Toronto | Sheridan | Contact Us

The University of Western Ontario
London, ON

Wilfrid Laurier University
Waterloo, ON

York University
Toronto, ON

University of Waterloo
Waterloo, ON

McMaster University
Hamilton, ON

York University
Toronto, ON

Sheridan Institute
Oakville, ON

Sheridan Institute
Oakville, ON

What's New

Attendees' comments
See what other people think and add your comments here
June 2, 2010

Course materials online now
Course materials are now being posted online. Attendees may check individual courses for updates.
June 2, 2011

Registration closed
The online registration is now closed. On Monday morning, May 30, attendees will report to the reception desk in the SCAET atrium (the main entrance) starting at 8:00 am.
May 27, 2011

Students receiving subsidized accommodation contacted
Students who registered recently and requested for the subsidized accommodations have been contacted individually. For those who requested for accommodation after May 24, and haven't received confirmation please contact us at your earliest convenience.
May 25, 2011

Extra subsidized accommodation available
A few spaces have become available for students travelling from distant institutions. They will be taken on a first come first serve basis.
May 24, 2011

Online registration is open
Limited subsidy for accommodation is available for students travelling from distant institutions.
May 13, 2011

Course outline now available
May 10, 2011

The web site is up
April 29, 2011

Poster (PDF)

Programming with MPI


In this two-day session, through lectures interspersed with hands-on labs, the students will learn the basics of MPI programming by working towards parallelization of a real, if simple, existing 2d hydrodynamics solver and, if time permits, gravitational N-body solver.

Instructor: Jonathan Dursi, CITA/SciNet, University of Toronto.

Prerequisites: C and/or Fortran scientific programming; experience editing and compiling code in a Linux environment.

Course Outline

Lecture 1, Tuesday Morning: Introduction

  • What is MPI?
  • Hello (Comm_) World
  • MPI Compiler Wrappers
  • What mpirun does
  • What are messages?
  • Send, Receive
  • Deadlock
  • Pairing Sends and Receives
  • Sendrecv
  • Reductions

Hands On 1, Tuesday Morning

  • Parallelizing the 1d diffusion equation

Lecture 2, Tuesday Afternoon: Hydrodynamics

  • Basics of explicit hydrodynamics
  • Communicators; MPI_Cart_create
  • MPI Types

Hands-On 2, Tuesday Afternoon

  • Guardcell filling with Types

Lecture 3, Wednesday Morning: Basic Parallel IO

Hands-On 3, Wednesday Morning

  • Write a single density image to disk using parallel IO

Lecture 4, Wednesday Morning: Nonblocking communiications

  • Overlapping communication with computation
  • Non-blocking: isend, ireceive, iwaitall

Hands-On 4, Wednesday Morning

  • 1D diffusion equation with isend/irecieve/iwaitall

Lecture 5, Wednesday Afternoon

  • Gravitational N-body dynamics
  • MPI Structure Types
  • MPI_Allgather, MPI_Allgatherv

Hands-On 5, Wednesday Afternoon

  • Parallelize N-body code using naive allgather approach or pipeline approach

Course Materials

Slides (PDF)
Source code (gzipped tar file)