You are here

HPCVL and Compute Canada Workshop - July 2010

Parallel Programming Using OpenMP, MPI and Posix Threads

Time and Location of Training Sessions:
Monday, July 19, 2010 (OpenMP)
Tuesday, July 20, 2010 (MPI)
Wednesday, July 21, 2010 (Posix Threads)

Important Note:

This workshop will be made available through Compute Canada by broadcasting via Access Grid from the Training Room in Kingston. If you would like to participate remotely, please contact Chris MacPhee to determine the location closest to you where you can join.

Please fill out Registration Form to sign up for the course at:

Nationally via Access Grid and locally at the HPCVL Training Room in Kingston, Ontario.

Each Day: Registration: 8:30 am, Lectures: 9:00 am - 4:00 pm EDT


Hartmut Schmider and Gang Liu
HPCVL, Queen's University, Kingston, Ontario

Check the workshop website here for further details such as a list of Access Grid rooms that will join the broadcast, as well as last-minute changes. Click here to download the workshop announcement PDF.

Workshop Overview:

Introduction to OpenMP

This workshop introduces the OpenMP compiler directives to scientists who are interested in writing programs for shared-memory parallel computers, or who want to convert existing serial code to parallel. No previous knowledge about parallel programming is required, but we assume some basic background in programming , preferably in Fortran or C. The use of OpenMP has become the de facto industry standard for parallel programming on shared-memory machines. It also makes implicit use of the multi-core nature of current CPU's. Most of the examples in this course are in Fortran, but the C programming language is considered as well. The workshop includes practical demonstrations. Here is a short outline of the contents:

  • Introduction to parallel programming, especially for shared memory
  • OpenMP compiler directives
  • Issues in shared-memory programming and how to resolve them
  • Loop parallelism 
  • Explicit parallel regions
  • Synchronization 
  • New features of OpenMP 3.0
Introduction to MPI

The Introduction to MPI workshop is directed at programmers and scientists, with a basic background in programming, who want to acquire basic skills in "parallelizing" code for a variety of platforms ranging from multi-processor servers to clusters. No prior knowledge of MPI or other message-passing systems is required. However, some background in programming in Fortran, C,
or other languages would be helpful. The lectures include practical demonstration using an HPCVL Cluster. All examples are in Fortran, C and C++. The following subjects will be addressed:
  • MPI Basics: Programming Environments, Data Types, Communication
  • Runtime Environments
  • Parallel Principles and Programming Steps
  • Combination of MPI with OpenMP
  • Parallel Scheduling
  • User-Defined Data Types
Introduction to Posix Multithreading

The Introduction to Posix Multithreading workshop is for programmers and scientists with a basic background in C programming, who want to increase the flexibility and responsiveness of their code and take advantage of modern multi-core and multi-threaded computer architectures. This is a basic introduction to the Posix Thread Library and its application to the parallelization of C programs. We assume no prior knowledge of multithreading or parallel programming, but some background in Unix operating systems and programming in C will be necessary. All examples are in C. The lectures include demonstrations on a multicore machine. The following subjects will be addressed:
  • Parallel Programming and Multithreading
  • The Posix Thread Library
  • Basics of Thread Programming
  • Creating and Manipulating of Threads
  • Attributes 
  • Synchronization, Locks and Condition Variables
  • Thread-Specific Data and Destructors