Users at Pawsey might need to install software that is not already available on the machines, and this Section aims to help in this situation.
The most basic operations involved in software installation is compiling and linking, i.e. translating the source code into machine instructions and creating an executable to be run on CPUs/GPUs. For small software codes involving a very limited number of source files, compiling and linking can be done "manually" by calling appropriate compilers from the command line. The different compilers available on the machines are documented, including options to build software able to run in parallel and on GPUs.
There is a number of build systems that are of popular use to streamline the compilation process, especially for software projects of larger size involving several source files, library dependencies and/or multiple build options (e.g. multiple executables, debug/test builds). Here we introduce the use of make, configure and cmake.
In order to simplify the installation of software on HPC systems, the Pawsey Team has developed the Maali automated build tool. One key feature is the native automatic handling of multiple builds, spanning different compilers, node architectures, MPI flavours, and eventually Python and CUDA versions. Another relevant feature is the automatic generation of a module file that allows use of the installed package in the framework of a Module system.
Containers are a software technology that is becoming increasingly popular in HPC. They allow for a simplified build, management and run of software on any type of systems, with some additional advantages such as portability and reproducibility. All details on how to build and run containers on our systems can be found in Containers.