|0.3.12||Julia Programming Language|
According to the web page, “Julia is a high-level, high-performance dynamic programming language for technical computing, with syntax that is familiar to users of other technical computing environments [i.e. MATLAB].” Julia has support for parallel computations, even across nodes, but it is not based on MPI.
First load a Julia module. This brings the
julia command into your PATH and sets up the libraries that you need to run Julia.
module load julia/0.3.12-i1501
You can then either start an interactive Julia session:
$ julia _ _ _ _(_)_ | A fresh approach to technical computing (_) | (_) (_) | Documentation: http://docs.julialang.org _ _ _| |_ __ _ | Type "help()" for help. | | | | | | |/ _` | | | | |_| | | | (_| | | Version 0.3.12-pre+5 (2015-08-20 17:19 UTC) _/ |\__'_|_|_|\__'_| | Commit 24138e7 (4 days old release-0.3) |__/ | x86_64-redhat-linux julia>
or run it on batch mode, for example inside a job script.
#!/bin/bash #SBATCH -N 1 #SBATCH -t 0:30:00 #SBATCH -J jobname #SBATCH --exclusive #SBATCH -A SNIC-xxx-yyy module load julia/0.3.12-i1501 julia myprogram.jl arg1 ...
The script above allocates a full node to the Julia program. Only do this if you are really doing a big (or parallel computation) with Julia.
At the moment, packages are installed by each user separately by default. It is recommended to use a newer version of git for Julia:
module load git/2.5.0
For some packages, it is necessary to have appropriate compiler settings. For instance, one can choose the same as for the corresponding module julia/0.3.12-i1501:
module load intel/22.214.171.124 mkl/11.2.1
or in the case of the module julia/0.3.12:
module load gcc/5.1.0 mkl/11.2.3
Example how to install the package ODE
For some Julia packages there might be appropriate modules already installed at NSC. For instance to install HDF5, one can load a module and set the LD_LIBRARY_PATH:
module add hdf5/1.8.13-i1214-AVX-off export LD_LIBRARY_PATH=/software/apps/hdf5/1.8.13/i1214-AVX-off/lib/
We have not done much testing and optimization of Julia yet. Basic examples and linear algebra seems to work, and the performance is what you expect from a native library (10+ GFlops). There might be some warnings: “Possible conflict in library symbol xxx”, but it seems to work anyhow.
Running Julia program on multiple nodes have not been tested yet.