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.
Overview
The programming languages used to program a supercomputer are mostly the same as those you might use on your laptop or the cluster of your organisation, from compiled languages such as C, C++ and Fortran, to interpreted ones like Python and R. There are also specialised languages and libraries that allow programmers to take advantage of the hardware accelerators and massively parallel architecture of a supercomputer, including the HIP and CUDA accelerator languages, the MPI parallel programming library, and language extensions such as OpenMP and OpenACC.
Supercomputing applications are high performance applications that must meet their scientific objectives reliably and quickly, with the efficient use of computational, network and storage resources. The choice of an appropriate programming language plays a critical role in achieving these ends.
Supported languages
Pawsey supports the following programming languages and extensions:
- C
- C++ up to C++17
- Fortran
- Python 3
- OpenMP for C, C++ and Fortran
- OpenACC for Fortran
- CUDA
- HIP
Pawsey also provide compilers and interpreters for:
- R
- Ruby
- Rust
- Java
- Go
Users are free to use other programming languages, but Pawsey staff might not install them system-wide or be able to provide support.
Choosing a language
In many circumstances, the programming language will be determined by the need to extend or interoperate with an existing application or workflow. Where there is the option, C, C++ and Fortran all provide the possibility of high performance, especially when used in conjunction with parallel and accelerator extensions such as OpenMP. Here, the choice may well be determined by your familiarity with the programming language and its ecosystem of specialised libraries and tools.
Compiled Languages
Pawsey supports C/C++ and Fortran as these offer high performance. Details on using these languages are found in Compiling, Debugging, and Profiling.
Interpreted Languages
Python is an interpreted language which is very popular in scientific computing, but can be problematic in a supercomputing environment due to its interactions with the filesystem and poor multithreaded performance. It can nonetheless be used to implement efficient workflows provided that optimised libraries such as NumPy and SciPy are employed to perform the computationally intensive work.
Visit the Developing with Python page for more information.