Julia ====== .. toctree:: :maxdepth: 1 :caption: Contents: 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 :doc:`llvm`. 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: .. code-block:: bash 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 ------- .. code-block:: bash module load julia/latest Notes about the productivity ---------------------------- To compile the Julia's code, we use optimized external libraries and the baseline :doc:`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 :doc:`mpi` libraries available on Discoverer, the `MPI.jl`_ has to be `installed under your home folder`_. Getting help ------------ See :doc:`help` .. _`Julia`: https://julialang.org/ .. _`JIT`: https://en.wikipedia.org/wiki/Just-in-time_compilation .. _`AMD Zen2 microarchitecture`: https://en.wikichip.org/wiki/amd/microarchitectures/zen_2 .. _`MPI.jl`: https://juliaparallel.org/MPI.jl/stable/ .. _`installed under your home folder`: https://juliaparallel.org/MPI.jl/stable/configuration/