Julia

 

Getting Started

Loading our pre-configured Julia (lang/JuliaHPC)

On Noctua we provide a Julia software environment for using and developing HPC applications in form of the lang/JuliaHPC module (https://upb-pc2.atlassian.net/wiki/spaces/PC2DOK/pages/1900596). The module may be seen as a light-weight extension of the official stable Julia binaries in the sense that it delivers a preconfigured environment such that HPC related Julia packages like MPI.jl or CUDA.jl should work out of the box when you ] add them to any Julia environment. Concretely, the JuliaHPC module provides (at least)

  • the official Julia binaries

  • OpenMPI (CUDA-aware)

  • CUDA

To load the latest Julia software environment, you can execute the following commands.

module load lang # loading the gateway module module load JuliaHPC # loading the latest JuliaHPC

Alternatively, you can load a specific version directly

module load lang/JuliaHPC/1.7.2-fosscuda-2022a-linux-x86_64

To see which Julia(HPC) versions are available you can, for example, use find_module JuliaHPC or checkout this module page: TODO

Plain binaries (lang/Julia)

Apart from the “batteries-included” lang/JuliaHPC module we also provide the unmodified official binaries of stable Julia versions via lang/Julia. Example: module load lang/Julia/1.7.2-linux-x86_64. However, you should generally use the JuliaHPC module unless you know exactly what you’re doing.

There should be no reason for you to download and install Julia manually on Noctua. If you’re missing something, e.g., an older Julia version for example, let us know and we’ll install it for you!

Julia depot location

IMPORTANT

The Julia depot is the folder where Julia stores log files, installed packages, the general registry, etc.. By default, this depot is created in your home folder, i.e. $HOME/.julia. On Noctua, this will likely lead to quota issues (HOME is limited to 20GB), slow downs, and unnecessary backups of reproducible data. For this reason, the recommended place for the Julia depot is on the parallel file system (PC2PFS) and it is highly recommended to put something like the following into your .bashrc

export JULIA_DEPOT_PATH=/scratch/<group>/<username>/.julia

Note that /scratch is not shared between Noctua 1 and Noctua 2. With the approach above you will therefore have separate Julia depots for each system. This is the recommended approach since both systems have very different hardware components (e.g. Intel vs AMD CPUs).