Faculty banner

CITS3402 High Performance Computing
Unit home page

CITS3402, CITS5507, SHPC4002 High Performance Computing - Unit information for 2019

High performance computing is an integral part of modern scientific and engineering education and research. Most physical systems are explored through simulation and modelling using high performance computing tools like parallel computers. This unit introduces students to the essential tools and techniques of high performance computing. The main objectives are to introduce students to different frameworks of parallel and distributed computing that they can use in their specific areas of interest. The students learn to program multi-core processors as well as clusters of personal computers using the widely used C and Fortran computer languages. Students program practical problems from different scientific disciplines and also work on individual or group projects to consolidate their learning. MapReduce is a programming paradigm for processing large data sets on clusters of computers. The implementation of MapReduce through Spark and the distributed file system HDFS has become a widely used programming model for high performance computing in the last decade. This unit will also introduce students to this programming model through lectures and laboratory exercises.

CITS3402 introduces the key concepts of high performance computing in an easy-paced manner. Initially the basic ideas in multi-core computer architectures are explored through simple programming examples using OpenMP. In particular, the emphasis will be on improving the performance of the most compute-intensive parts of a program, loops. The lectures will cover the spawning of multiple threads on multiple cores through extensive examples. Next, the key problem in multi-core programming, cache coherency will be explored thoroughly. Distributed memory architectures and their programming through Message Passing Interface (MPI) will be discussed in the second part of the unit. Combining both OpenMP and MPI for improving performance on a cluster of multicore processors will be covered. Programming the MapReduce paradigm using the Spark framework will be covered.

Information available from here:

Unit coordination:

Unit Coordinator: Prof. Amitava Datta
Lecturers: Prof. Amitava Datta and Mr. Nicholas Pritchard
Tutors: Nicholas Pritchard and Callum Sullivan
Lecture times: 8:00 - 10:00am Wednesdays (ARTS:[159] Austin Lecture Hall)
Laboratory sessions: 12:00-2:00 Thursdays (MATH:123D)
8:00-10:00 Fridays (MATH:123D)
10:00-12:00 Fridays (MATH:123D)
2:00-4:00 Fridays (MATH:123D)
Email discussion list for CITS3402: help3402
Consultation times: 10:00 - 11:00am Fridays, or by appointment

There are no labs in the first two weeks.

Assessment and important dates:

Assessment Dates
 First assignment released
  August 29
 First assignment due
  September 25, 11:59 pm
 Second assignment released
  October 1
 Second assignment due
  October 25, 11:59 pm
 Final exam
 2 hours, November

Before undertaking this unit, students are strongly encouraged to read:

Suggested textbooks for 2018:

  1. Using OpenMP: Portable Shared Memory Parallel Programming, by, B. Chapman, G. Jost, R. van der Paas, MIT Press, 2008.
  2. Parallel Programming in OpenMP, by, Rohit Chandra et al. (An electronic copy of this book is available from the Science Library).
  3. We will use lecture materials extensively from www.openmp.org, in particular Tim Mattson's lectures Introduction to OpenMP.
  4. I will inform you about course materials for MPI later.

Visit the UWA Computer Science home page School of Computer Science & Software Engineering
The University of Western Australia
Crawley, Western Australia, 6009.
Phone: +61 8 9380 2716 - Fax: +61 8 9380 1089.
CRICOS provider code 00126G
Valid HTML 4.01!