Home | Programme | Registration | Venue | Accommodation | Travel | Gallery | London | Western | Contact Us

2003
The University of Western Ontario
London, ON

2004
Wilfrid Laurier University
Waterloo, ON

2005
York University
Toronto, ON

2006
University of Waterloo
Waterloo, ON

2007
McMaster University
Hamilton, ON

2008
York University
Toronto, ON

2009
Sheridan Institute
Oakville, ON

2010
Sheridan Institute
Oakville, ON

2011
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

Description

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.