HPC intro Autumn, 2016

This is a practical course on effectively using computers to solve scientific-computing problems in engineering and the physical sciences.

The course is suitable for students with little computing background as it starts with an introduction to UNIX environment and to programming. The second half of the course is dedicated to hands-on parallel programming.

Fortran90 is used to illustrate the concepts because it is a low threshold language and students can start writing parallel code (interfaced with Python) after a relatively short instruction time. 

Overview

The importance of scientific computing has been rapidly increasing in all areas of science and engineering. It is essential for students to learn how to write efficient programs that take full advantage of the (often substantial) computational power available to them.

Traditionally, teaching in this area has focused on compiled languages (C, Fortran) and easier-to-use tools such as Matlab. However, these days most laptops use multicore processors, and a strong foundation in parallel computing is needed as well. This course blends the traditional and "modern" approach and introduces students to Fortran 90, Python, parallel computing with OpenMP and MPI.

The course will consist of 2 lectures and 1 lab session per week (3 hours total). There will also be 4 programming assignments, and a programming project. By the end of the course, students will be prepared to tackle research problems using the tools of modern high-performance scientific computing in an informed, effective, and efficient manner.

Syllabus

  • Lecture 1: Course Overview. Getting started - working with UNIX and the command line
  • Lecture 2: Software version control with GIT and Bitbucket
  • Lectures 3-6: Programming and scientific computing with Python
  • Lectures 7-10: Introduction to Fortran 90 - modular programming and using popular libraries; interfacing with Python with F2Py
  • Lecture 11: Introduction to parallel computing: Methods, tools, and performance
  • Lectures 12-14: OpenMP with Fortran90 for parallel programming of shared-memory computers
  • Lectures 15 - 17:  MPI with Fortran90 for programming on distributed-memory machines such as clusters
  • Lecture 18: Makefiles for multi-file codes
  • Lectures 19-20: Overviews of: cloud computing, GPU computing, cluster computing with Python and Apache Spark

Note: Good programming practise - planning, unit testing, debugging, validation - to be integrated with the above topics and the programming assignments.

Lectures and tutorials

Lectures will take place on Mondays, 11-12am and Thursdays 9-10am in Huxley 139. The first lecture will be on Monday, 10th October. Students should attend one of the tutorials which are on Tuesdays 5-6pm in the MLC (computer lab, 4th floor Huxley) and Wednesdays 10-11am in Huxley 139. The Wednesday tutorials requires students to bring their own laptops.

If you would like to take the class (and your CDT has not already registered you), please send Prasun an email (p.ray@imperial.ac.uk).