2016 Ontario Summer School for High Performance Computing Central
About
The 2016 Ontario Summer School on High Performance Computing, whose second installment of the year will be hosted by SciNet, provides attendees with opportunities to learn and share knowledge and experience in high performance and technical computing. The format: a five-day workshop with mixed lectures and hands-on sessions on a number of selected subjects, including shared memory programming, distributed memory programming, parallel data processing, and general purpose graphics processing unit programming.
Below are descriptions and course material for the Central version, given from July 11th to July 15th, 2016, in Toronto.
The location of this version of the summer school is:
Wallberg Memorial Building
Rooms 116 and 119
University of Toronto
St. George Campus
200 College Street
Toronto, Ontario, M5S 3E5
Canada
More information can be found below and in the handout package.
Group Picture
Taken Wednesday July 13, 2016.
Sessions
Introduction to HPC and SciNet
Abstract
This half-day session will provide an introduction to basic concepts of high-performance computing. It is intended to be a high level primer for those largely new to HPC, and serve as a foundation upon which to build over the coming days. Topics will include motivation for HPC, essential issues, problem characteristics as they apply to parallelism and a high level overview of parallel programming models. Strategies of running large sets of serial processes using e.g. GNU parallel, will also be presented.
Details
Time/date
Monday July 11, 2016, 09:30 - 12:30
Location
Wallberg Building, Room 116
Instructor
Dr. Mike Nolta (SciNet)
Prerequisites
Basic Linux skills are useful to follow along. If you do not have these, consider taking the "Intro to the Linux Shell" in the afternoon.
Slides and other material
Abstract
In these two half-day sessions, lectures and hands-on labs are interspersed, and the students will learn the basics of shared memory programming with OpenMP. In particular, we will discuss the OpenMP's threads, memory, and performance, reductions and load balancing. We will also discuss extensions to heterogeneous systems such as offered by the OpenMP 4.0 and OpenACC standards.
Details
Time/date
Monday July 11, 2016, 13:30 - 16:30
Tuesday July 12, 2016, 09:30 - 12:30
Location
Wallberg Building, Room 116
Instructor
Dr. Ramses van Zon (SciNet)
Prerequisites
C/C++ and/or Fortran scientific programming; Experience editing and compiling code in a Linux environment.
Slides and other material
Introduction to the Linux Shell
Abstract
Working with many of the HPC systems in Ontario involves using the Linux/UNIX command line. This provides a very powerful interface, but it can be quite daunting for the uninitiated. In this half-day session, you can become initiated with this course. This hands on session will cover basic commands and scripting, as well as touching on some powerful constructs like regular expressions. It could be a great boon for your productivity!
Details
Time/date
Monday July 11, 13:30 - 16:30
Location
Wallberg Building, Room 119
Instructor
Dr. Mike Nolta (SciNet)
Prerequisites
A laptop with a linux-like environment.
Slides and other material
R for Data Science
Abstract
This session offers a brief introduction to R, with a focus on data analysis and statistics.
Details
Date/time
Tuesday July 12, 2016, 09:30 - 12:30
Location
Wallberg Building, Room 119
Instructor
Dr. Erik Spence (SciNet)
Prerequisites
Some programming experience in any language. You should have used and written functions. Bring a laptop with R or Rstudio installed.
Slides and other material
Programming Clusters with MPI
Abstract
In this 1.5-day session, through lectures interspersed with hands-on labs, the students will learn the basics of MPI programming. Examples and exercises will be based on parallelization of common scientific computing problems.
Details
Time/date
Tuesday July 12, 2016, 13:30 - 16:30
Wednesday July 13, 2016, 09:30 - 12:30
Wednesday July 13, 2016, 13:30 - 16:30
Location
Wallberg Building, Room 116
Instructor
Dr. Scott Northrup (SciNet)
Prerequisites
C and/or Fortran scientific programming; experience editing and compiling code in a Linux environment.
Slides and other material
Parallel R for Data Science
Abstract
This half-day session will cover parallel programming in R, with a focus on parallel data analysis. Topics covered will include snow, parallel, and foreach/doparallel.
Details
Time/date
Tuesday July 12, 2016, 13:30 - 16:30
Location
Wallberg Building, Room 119
Instructor
Dr. Erik Spence (SciNet)
Prerequisites
Experience with programming in R and a rudimentary understanding of parallel computing.
Slides and other material
Python for Scientific Computing
Abstract
In this half-day session, you will be taught how to use python for research computing purposes. Topics include: the basics of python, automation, numpy, scipy, file i/o, and visualization.
Details
Time/date
Wednesday July 13, 9:30 - 12:30
Location
Wallberg Building, Room 119
Instructor
Dr. Erik Spence (SciNet)
Prerequisites
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.
Slides and other material
Python for High Performance Computing
Abstract
This half-day session will cover parallel programming in python, with a focus on parallel data analysis. We will cover subprocess, multiprocessing, mpi4py and other parallel-enabling python packages.
Details
Time/date
Wednesday July 13, 2016, 13:30 - 16:30
Location
Wallberg Building, Room 119
Instructor
Dr. Ramses van Zon (SciNet)
Prerequisites
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.
Slides and other material
Programming GPUs with CUDA
Abstract
This two-day session is an introductory course covering programming and computing on GPUs - graphics processing units - which are an increasingly common presence in massively parallel computing architectures. This session will cover both of the available C-like programming frameworks: NVIDIA’s CUDA C. The basics of GPU programming will be covered, and students will work through a number of hands on examples. Demonstrations of profiling and debugging applications running on the GPU will also be included. The structuring of data and computations that makes full use of the GPU will be discussed in detail. Students should be able to leave the course with the knowledge necessary to begin developing their own GPU applications.
Details
Time/date
Thursday July 14, 2016, 09:30 - 12:30
Thursday July 14, 2016, 13:30 - 16:30
Friday July 15, 2016, 09:30 - 12:30
Friday July 15, 2016, 13:30 - 16:30
Location
Wallberg Building, Room 116
Instructors Dr. Pawel Pomorski and Dr. Sergey Mashchenko (SHARCNET)
Prerequisites
C/C++ scientific programming, experience editing and compiling code in a Linux environment. Some experience with CUDA and/or OpenMP a plus.
Slides and other materials
Visualization
Abstract
The first part of this whole-day session will be a basic introduction to general-purpose scientific visualization tools such as gnuplot, grace(xmgr), remote tools (tunneling, VNC), python's matplotlib, and examples from other. The afternoon part will be a mix of lecture and hands-on to introduce more specialized scientific visualization software such as vmd, paraview, and visit.
Details
Time/date
Thursday July 14, 2016, 09:30 - 12:30
Thursday July 14, 2016, 13:30 - 16:30
Location
Wallberg Building, Room 119
Instructor Dr. Marcelo Ponce (SciNet)
Prerequisites
Software installed, for the morning session: gnuplot, xmgr (Grace,xmgr), ssh (graphic client), your favorite vnc client (egs. RealVNC,TightVNC), python and matplotlib (matplotlib); afternoon session: ParaView (ParaView) and VisIt (VisIt).
For windows machines, it will be useful to install a ssh-client with graphics capabilities.
Slides and other material
Slides
Datasets
Morning datasets and scripts: Media:Data_scripts.tar.gz
Python scripts: Media:codes_examples.zip
Debugging
Abstract
Debugging is an important step in developing a new code, or porting an old one to a new machine. In this half-day session, we will discuss the debugging of frequently encountered bugs in serial code with gdb and the debugging of parallel (MPI and threaded) codes with DDT on live systems.
Details
Date/time
Friday July 15, 09:30 - 12:30
Location
Wallberg Building, Room 119
Note the different room number!
Instructors
Dr. Marcelo Ponce (SciNet)
Prerequisites
Basic familiarity with a high-level language (C/C++/Fortran) as well as compiling and running programs via the command line environment on a HPC system.
Slides and other material
Bring Your Own Code
Abstract
The final afternoon of the summer school is your chance to get help with your own code from the SciNet software analysts. Bring your code, explain your problem or concerns, and we'll give you advice and work with you to try to improve it.
Details
Date/time
Friday July 15, 2016, 13:30 - 16:30
Location
Wallberg Building, Room 119
Instructors
Various SciNet software analysts.
Prerequisites
None.