This section provides a description of various programming models and tools useful for developing codes for High Performance Computing (HPC) systems in programming languages like C/C++, Fortran or Python.
This section starts with some best practices on source code management with tools like git or svn.
Code debugging techniques are discussed with special attention given to Arm DDT debugger available on Pawsey systems. Arm DDT enables debugging and memory debugging of parallel C/C++/Fortran applications written with the use of parallel programming paradigms like MPI or OpenMP.
Profiling is an extremely important step in the code development for HPC systems. Identifying the performance bottlenecks may lead to the development of various optimisation strategies. This is important for serial codes as well as parallel applications for which analysis of synchronisation and load distribution between processes is crucial for achieving high scalability. In this section we discuss few profiling techniques and tools like Cray Performance Analysis Tools and Arm MAP.
Currently available processor architectures introduce many interesting technological features like vectorisation, multithreading or multilevel memory architectures. Few useful serial code optimisation techniques related to the efficient use of those features are discussed in this section. Important compiler flags are also listed and discussed.
Python is a very popular programming language and it is also supported on Pawsey systems. Process of developing efficient computational codes with Python is significantly different to that for C/C++ or Fortran. In this section of the documentation we also provide the description of common Python numerical libraries and discuss different parallelisation techniques for Python.
There is a broad selection of High Performance Libraries available on Pawsey systems. The list includes numerical libraries, I/O libraries, data decomposition libraries and many more. Usage instructions for the most popular ones are given in this part of the documentation.
At the end of this section different parallel programming models available on Pawsey systems are discussed. Short examples on how to develop, compile and run codes with MPI, OpenMP and CUDA are given.