Home | Programme | Registration | Venue | Accommodation | Travel | Gallery | London | Western | 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

Sheridan Institute
Oakville, ON

What's New

May 11, 2012
Online registration is now open.

May 1, 2012
Site live.

1151 Richmond Street
London, Ontario
Canada, N6A 3K7

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

To be provided in class.