Start Julia via SLURM batch script on remote node

Hello together,
for numerical integration of ODEs I am intending to use an external high-performance-computing centre, where one can deploy code. Although the admins installed julia there, I can’t seem to kick it off via the batch script. I guess I am missing something about the modules or the directory:

## LOAD MODULES ##
module purge			# clean up loaded modules 
# load necessary modules
module load intel/18.0.5
module load gnu/4.9.2
module load java/9.0
module load julia

## RUN CODE ##
julia LAfem.jl 

even the simplest code in the .jl file is generating an permission error message. If I try pwd() there is no response. Is there a clever way to investgate the cause?

Thanks, kind regards
Lysandros

It’s hard to give specific advice without seeing the details of the error message. Are you trying to install packages? Do the errors happen perhaps during precompilation? Depending on how julia was installed, and on what environment variables the module sets, it’s possible that your julia process tries to write into the common julia install (which of course mustn’t be allowed).

It might be worth trying to just install julia in your own account. The binary distribution should work fine on standard x86_64 clusters, just make sure that the julia binary is in your PATH. If you have limited space in your home directory but have access to a global scratch directory (a common scenario on HPC clusters) then you might need to put the julia install onto the scratch space, and probably also the .julia directory (and then make a symlink ~/.julia to it).

Here’s how I set up Julia in a cluster, this also sets up CUDA but you can ignore that.

Are you able to start interactive jobs on your HPC cluster? I would suggest doing that and seeing if you can start Julia, add packages via REPL, run some basic commands, etc. first. If you get errors there then at least you can dig around to figure out what is causing it.

Thanks KajWiik. Should I place
the

julia/bin/julia

inside the batch script for running Julia code? Because this generates the error:

/var/spool/slurmd/job830162/slurm_script: line 36: julia/bin/julia: No such file or directory

Should it be inside the .jl file instead?

I am able to start jobs on the HPC only via batch script with Octave, not Julia yet. I think it does not support REPL. For the moment, my SLURM batch script is:

#!/bin/bash -l

####################################

## LOAD MODULES ##
module purge			# clean up loaded modules 

# load necessary modules
module load intel/18.0.5
module load gnu/4.9.2
module load java/9.0
module load julia

## RUN CODE ##
date
julia LAfem.jl 
date

and inside the LAfem.jl, the only line is:

using Pkg

, in order to see if this runs. But this generates the error:

ERROR: LoadError: IOError: stat: permission denied (EACCES) for file "/users/apps/compilers/julia/1.3.1/share/julia/stdlib/v1.3/Pkg/src/Pkg.jl"
Stacktrace:
 [1] stat(::String) at ./stat.jl:69
 [2] isfile at ./stat.jl:311 [inlined]
 [3] isfile_casesensitive at ./loading.jl:9 [inlined]
 [4] entry_point_and_project_file_inside at ./loading.jl:438 [inlined]
 [5] entry_point_and_project_file(::String, ::String) at ./loading.jl:453
 [6] implicit_project_deps_get at ./loading.jl:605 [inlined]
 [7] project_deps_get(::String, ::String) at ./loading.jl:308
 [8] identify_package(::String) at ./loading.jl:220
 [9] identify_package(::Base.PkgId, ::String) at ./loading.jl:206
 [10] identify_package at ./loading.jl:200 [inlined]
 [11] require(::Module, ::Symbol) at ./loading.jl:882
 [12] include at ./boot.jl:328 [inlined]
 [13] include_relative(::Module, ::String) at ./loading.jl:1105
 [14] include(::Module, ::String) at ./Base.jl:31
 [15] exec_options(::Base.JLOptions) at ./client.jl:287
 [16] _start() at ./client.jl:460
in expression starting at /users/pa19/lanast/taskp/LAfem.jl:1

Are there alternatives to check the actual status (root directory, what packages are installed), or other information?

Thanks tbeason

Sorry, my post was bit cryptic.
No, that line is just starting julia to add CUDA packages.

You should add ~/bin/julia/bin to your path or make a softlink so that the system can find the julia binary.