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