![]() |
ANU College of Engineering and Computer Science
Research School of Computer Science
|
|
COMP3320: High Performance Scientific Computation
Convener: Dr Alistair Rendell
Prerequisites12 units of 2000-level COMP courses including COMP2100 or COMP2300 or COMP2031 or ENGN2003; and 6 units of 2000-level MATH/STAT/EMET courses or COMP2600.
SyllabusThis unit provides an introduction to High Performance Computing with an orientation towards applications in science and engineering. Aspects of numerical computing and the design and construction of sophisticated scientific software will be considered. The focus will be on the C and C++ programming languages, although reflecting the reality of modern scientific computation this unit will also touch on other languages such as Python, Java and FORTRAN95. The unit will study high performance computer architectures, including modern parallel processors, and will describe how an algorithm interacts with these architectures. It will also look at practical methods of estimating and measuring algorithm/architecture performance. The following topics will be addressed: the C++ programming language; basic numerical computing from aspects of floating point error analysis to algorithms for solving differential equations; the engineering of scientific software; general high performance computing concepts and architectural principles; modern scalar architectures and their memory structure; performance and programmability issues, and program analysis techniques for high performance computing; parallel computing paradigms and programming using the OpenMP standard; trends in HPC systems.
DescriptionThis unit provides an introduction to the main principles, issues and applications of High Performance Scientific Computing, including parallel processing. It provides some overlap between the Computer Science and both the Computational Mathematics and Science / Engineering curriculum areas, and is suited for students with an interest in a combination of areas. It is one of the two capstone units in the Bachelor of Computational Science (BComptlSci) degree and the Scientific Computation stream within the BSc.
RationaleIn modern scientific and engineering practice computer modelling and simulation is significantly augmenting, and even partly replacing, experiments. It is likely that tomorrow's professional engineers and scientists will spend an increasing amount of time writing, running and interpreting the results of numerical software. Although science and engineering have been closely coupled to the historical development of computing the development of scientific software has been relatively independent of trends in computer science over the past two decades. Recently, however, common interest in, e.g. the internet, visualization, high-performance computers and modern programming languages have been bringing the two communities closer again. On the one hand there is a growing enthusiasm in parts of the scientific community to take on modern ideas of software engineering if the productivity of scientific software is to be improved. On the other, some computer scientists are recognising the unique challenge of engineering scientific software - particularly in the context of high performance computing. As a further boost to the educational enterprise, modern software packages which combine interpreted interfaces for numerical work with excellent graphics have rekindled interest in the teaching of numerical computing. This unit aims to bridge the divide between scientific computing and computer science. It also aims to provide students with experience in experimental computing using simple numerical models - experience which will be able to be carried across to working with much larger engineering packages in the workplace.
IdeasThis unit will be the primary carrier in the computer science curriculum for
It will share responsibility for
TopicsThese will be sourced from the following:
ANU Knowledge Areas
Stone Man:
ObjectivesUpon completion of the course, students should:
AssessmentThe following assessment modes are used.
Technical SkillsThis unit provides exposure to program optimization techniques and tuning programs via compilers. It also provides skills in data modelling and in the application of software engineering to scientific and engineering applications. It also provides exposure to computer languages used in High Performance Computing, including C++.It presents the mathematical models for the performance of computations, whose properties can be hypothesised and tested by the scientific method. It introduces scientific experimental skills such as obtaining optimal accuracy for measured and derived quantities, and performing appropriate calculations with limited significant figures.
Relevant Reading
|
|
Please direct all enquiries to: comp3320@cs.anu.edu.au Page authorised by: Director of Research School, RSCS |
| The Australian National University — CRICOS Provider Number 00120C |