Julia

About

Julia is a programming language. It features optional typing, multiple dispatch, and good performance, achieved using type inference and just-in-time (JIT) compilation (and optional ahead-of-time compilation), implemented using LLVM Compiler Infrastructure. It is multi-paradigm, combining features of imperative, functional, and object-oriented programming.

Supported versions

To check which versions of Julia are currently supported on Discoverer, execute on the login node:

module avail julia

The compilation process adopted for compiling the code of Julia is based on the following published recipes:

https://gitlab.discoverer.bg/vkolev/recipes/-/tree/main/julia

The referenced repository also contains log files containing all the messages emitted during the configuration, compilation, and installation of Julia on Discoverer.

Loading

module load julia/latest

Notes about the productivity

To compile the Julia’s code, we use optimized external libraries and the baseline GNU Compiler Collection (GCC) baseline compiler. Given that GCC is employed as a host compiler, there may be some apprehensions regarding Julia’s productivity on Discoverer. As the Julia model of code execution relies on its own local LLVM installation, and the JIT compiler relies on it, there are no GCC artefacts that may hinder the execution of programming code. The latter means that we are very close to the fastest possible code execution on the AMD Zen2 microarchitecture in terms of employing JIT. Most of the benchmarks performed on Discoverer upholds this statement.

MPI support

If you are interested in parallel Julia execution, based on any of the MPI libraries available on Discoverer, the MPI.jl has to be installed under your home folder.

Getting help

See Getting help