HPCVL Workshops November 2009: Parallel Programming Using OpenMP, Posix Threads and MPI

Nov 25 - 27, 2009 Nov 30 – Dec 2, 2009 University of Ottawa HPCVL, Queen's University Ottawa, Ontario Kingston, Ontario

Location and Time of Training Sessions

Ottawa Session: University of Ottawa

Wednesday, November 25, 2009 (OpenMP) and Thursday, November 26, 2009 (Posix Threads) 30 Stewart Street, Room 105

Friday, November 27, 2009 (MPI) Cube Building, Room 202

Kingston Session: HPCVL, Queen's University

Monday, November 30, 2009 (OpenMP) and Tuesday, December 1, 2009 (Posix Threads) and Wednesday, December 2, 2009 (MPI) HPCVL Main Office, 993 Princess Street, Suite 115

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

Please fill out Registration Form to sign up for the course http://www.hpcvl.org/training/course_reg.html

Check the workshop webpage http://www.hpcvl.org/training/index.html for further details and last-minute changes. 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, preferable with the Fortran or programing languages. The use of OpenMP has become the de facto industry standard for parallel programming on shared-memory machines, such as HPCVL's Sun Enterprise M9000 servers. It also makes implicit use of the multi-core nature of current CPU's, for instance the Sun UltraSparc-VI+. Most of the examples are in Fortran, but the C/C++ languages are considered as well. The workshop includes practical demonstrations. Here is a short outline of the contents:

● Introduction to parallel programming, especially on shared-memory machines ● OpenMP compiler directives ● Problems and Pitfalls of shared-memory programming and how to avoid them ● Loop parallelism ● Explicit parallel regions ● Synchronization ● New features of OpenMP 3.0

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 and its application to the parallelization of C programs. We assume no prior knowledge of multithreading or parallel programming, but some background in operating systems and programming in C will be necessary. All examples are in C. The lectures close with demonstrations using an HPCVL Server. The following subjects will be addressed:

● Parallel Programming and Multithreading ● The Posix Thread Library ● Creating and Manipulating of Threads ● Basics of Thread Programming ● Synchronization, Locks and Condition Variables ● Thread-Specific Data and Destructors ● Attributes 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 multi- processor clusters such as the HPCVL “Victoria Falls” and Beowulf clusters. No prior knowledge of MPI or other message-passing systems is required. However, some background in Unix operating systems and programming in Fortran, C, or other languages would be helpful. The following subjects will be addressed:

● MPI Basics (Programming Environments, Pre-defined Data Types, Communication) ● Runtime Environments ● Parallel Principles and Programming Steps ● Combination of MPI with OpenMP ● Parallel Scheduling ● User-Defined Data Types ● All examples are in Fortran, C and C++

The lectures close with a practical demonstration using the HPCVL SunFire Cluster.