Software Development

Software development is the process of writing and maintaining computer programs. This can involve a variety of related activities. These pages cover aspects of software development relevant to supercomputing and is aimed at users who develop their own code or contribute to existing codes. 

Pages in this section:


  • Programming Languages

    Users can use various programming languages to create applications to be run on a supercomputer. This page provides the list of supported programming languages, together with suggestions on when and how to use them.

  • Compiling

    Compilation is the process of transforming a source code written in a high-level programming language into a sequence of low-level instructions a computer can understand and execute. A compiler is a program that performs such transformation. Pawsey offers several compilers and this page illustrates and gives recommendations on how to compile your programs.

  • Debugging

    Debugging is the analysis of a program to identify errors in the code. Computer programs called debuggers can be used to analyse software bugs.

  • Profiling

    Profiling is the performance analysis of a program while it is running. It is carried out to provide insight and understanding as a first step toward improving performance.

  • Serial Optimisation

    Serial optimisation refers to the use of programming best practices and techniques to improve the performance of programs without the use of thread-level or process-level parallelism such as in OpenMP or MPI.

  • High Performance Libraries

    High Performance libraries include third-party numerical and I/O libraries that collect optimised versions of common algorithms.

  • Parallel Programming Models

    A variety of parallel programming models is available on Pawsey Centre's systems. This section contains introductory information about the most popular parallel programming techniques like MPI, OpenMP, CUDA and HIP.

  • Version Control

    Whether developing, porting or maintaining a source code project, using a formal source code management practice will allow you to easily revert changes, merge work from other people or simply recover from mistakes or disasters. This practice is often termed revision control or version control.