High Performance Scientific Computing
This wiki page is about part II of SciNet's Scientific Computing course.
Information on part I can be found on the page Scientific Software Development Course
Information about part II can be found on the page Numerical Tools for Physical Scientists (course)
Syllabus
The third part of SciNet's for-credit Scientific Computing course (Phys 2109 modular course credit / Ast 3100 mini-course credit) will start on February 10 2012.
Whereas the first part of the course focused on the basics of best practice for writing maintainable, modular scientific programs, and the second part focused on common techniques and algorithms, such as floating point computations, validation+verification, visualization, ODEs, monte Carlo, linear algebra and fast fourier transforms, the third part focusses on high performance computing and parallel programming.
At the end of minicourse III, "High Performance Scientific Computing", students will leave with a basic understanding of distributed and shared memory parallel programming paradigms, and will be able apply these in their own code.
The course will require 4-6 hours each week spent on reading and homework.
Required Software
Each lecture will have a hands-on component; students are strongly encouraged to bring laptops. (Contact us if this will be a problem). Windows, Mac, or Linux laptops are all fine, but some software will have to be installed *before* the first lecture:
On windows laptops only, Cygwin (http://www.cygwin.com/) will have to be installed ; ensure that development tools (gcc/g++/gfortran, gdb), git, the X environment (Xorg), and ssh are installed.
Hands-on parts will be done on SciNet's GPC cluster. For those who don't have a SciNet account yet, the instructions can be found at https://wiki.scinet.utoronto.ca/wiki/index.php/Essentials#Accounts .
Course outline
The classes will cover the material as follows; homework will be due by email at Thursday noon on the day before the following class.
Lecture 9: Introduction to Parallel Programming and OpenMP
Lecture 10: MPI- part 1
Lecture 11: OpenMP - part 2
Lecture 12: MPI - part 2
Evaluation will be based entirely on the four home works, with equal weighting given to each.
Location and Dates
The location is the same as for part II, i.e.
Fridays 10:00am - 12:00am
Feb 10, 17, Mar 2, 9.
Bahen Centre for Information Technology
40 St. George Street
Room 1230
Office Hours
The instructors will have office hours on Monday and Wednesday afternoons, 3pm-4pm, starting the week of the first class.
Location: SciNet offices at 256 McCaul, 2nd Floor.
- Mon, Feb 13, 3pm-4pm
- Wed, Feb 15, 3pm-4pm
- Mon, Feb 27, 3pm-4pm
- Wed, Feb 29, 3pm-4pm
- Mon, Mar 5, 3pm-4pm
- Wed, Mar 7, 3pm-4pm
- Mon, Mar 12, 3pm-4pm
- Wed, Mar 14, 3pm-4pm
Materials from Lectures
Homeworks
Homework following lecture 1
- Make sure you've got a SciNet account!
- Read the SciNet User Tutorial (mostly as it pertains to the GPC, but do not skip the data management section).
- Read the GPC Quickstart.
- Get the first set of code as follows
- git clone /scinet/course/sc3/hw1
- cd hw1
- source setup
- make
- make testrun
- This set contains the serial daxpy.
- Make sure it compiles and runs on the GPC.
- Create the openmp version as just discussed.
- Run this version for all values of OMP_NUM_THREADS from 1 to 32 on a single node, using a batch script. (Make sure to time the duration of these runs.)
- Submit git log, makefile, code, job script(s), and plots of the speedup and efficiency as a function of P.
Due: Thursday Feb 16 at noon. Email the files to rzon@scinet.utoronto.ca and ljdursi@scinet.utoronto.ca.
Links
Git
- Git cheat sheet from Git Tower: http://www.git-tower.com/files/cheatsheet/Git_Cheat_Sheet_grey.pdf
Python
- Enthought python distribution: http://www.enthought.com/products/edudownload.php
- Intro to python from software carpentry: http://software-carpentry.org/4_0/python
- Tutorial on matplotlib: http://conference.scipy.org/scipy2011/tutorials.php#jonathan