Julia installations at NSC


Directory list:

VersionDescription
0.3.12 Julia Programming Language
0.4.3 Julia Programming Language
0.4.4 Julia Programming Language
0.4.7 Julia Programming Language
0.4.8 Julia Programming Language
0.5.1 Julia Programming Language
0.6.1 Julia Programming Language

Level of support

Tier 3 NSC will not be able to help you much with this program, either because we lack the in-house experience, or because it is a test installation. In general, these types of installations are untested, and will not be updated unless you send a request to NSC.

Please see the page describing our software support categories for more information.
You can also contact support@nsc.liu.se for further information.

Description

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.

How to run

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.

Installing packages

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/15.0.1.133 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

julia> Pkg.add("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/

Testing

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.