Julia¶
Julia is a dynamically-typed programming language that was originally designed to address the needs of high-performance numerical analysis and computational science, without the typical need of separate compilation.
Julia is available as a module on Apocrita.
Usage¶
To run the default installed version of Julia, simply load the Julia module:
module load julia
then run Julia with a script file:
julia example.jl
Example jobs¶
Serial jobs¶
Here is an example job running on 1 core with 1GB RAM:
#!/bin/bash
#$ -cwd
#$ -j y
#$ -pe smp 1
#$ -l h_rt=1:0:0
#$ -l h_vmem=1G
module load julia
julia example.jl
Here is an example job running on 4 cores with 4GB RAM:
Core Usage
The modules for Julia will automatically set the JULIA_NUM_THREADS
environment variable to match ${NSLOTS}
(number of cores requested
by the job script) when loaded.
If for some reason you manually add a --threads
argument, please set
it to the value of ${NSLOTS}
to avoid overloading the compute nodes.
#!/bin/bash
#$ -cwd
#$ -j y
#$ -pe smp 4
#$ -l h_rt=1:0:0
#$ -l h_vmem=1G
module load julia
julia example.jl
Julia package management¶
The standard package manager for Julia 1.0 and newer is Pkg
. To interface
with Pkg
, start the Julia application and press the ]
key. To return to
the original prompt, either press backspace when the input line is empty or
press Ctrl+c
.
Adding packages¶
Packages can be added with the add
command followed by the name of the
package. It is also possible to add multiple packages in one command.
(v1.10) pkg> add Example
Installing known registries into `~/.julia`
Updating registry at `~/.julia/registries/General.toml`
Resolving package versions...
Installed Example ─ v0.5.5
Updating `~/.julia/environments/v1.10/Project.toml`
[7876af07] + Example v0.5.5
Updating `~/.julia/environments/v1.10/Manifest.toml`
[7876af07] + Example v0.5.5
Precompiling project...
1 dependency successfully precompiled in 1 seconds
Removing packages¶
Packages can be removed using the rm
command. If the package has not been
loaded in the current project, the removal command will fail with a warning
message.
(@v1.10) pkg> rm Example
Updating `~/.julia/environments/v1.10/Project.toml`
[7876af07] - Example v0.5.5
Updating `~/.julia/environments/v1.10/Manifest.toml`
[7876af07] - Example v0.5.5
Info We haven't cleaned this depot up for a bit, running Pkg.gc()...
Active manifest files: 1 found
Active artifact files: 0 found
Active scratchspaces: 0 found
Deleted no artifacts, repos, packages or scratchspaces
Listing installed packages¶
To list the installed packages, run st
(short for status).
(v1.0) pkg> st
Status `~/.julia/environments/v1.10/Project.toml`
[7876af07] Example v0.5.5
Testing packages¶
The tests for a package can be run using the test
command:
(v1.10) pkg> test Example
Testing Example
Status `/tmp/456364.1.test.q/tmpgFlC6Y/Manifest.toml`
[7876af07] Example v0.5.1
[2a0f44e3] Base64 [`@stdlib/Base64`]
[8ba89e20] Distributed [`@stdlib/Distributed`]
[b77e0a4c] InteractiveUtils [`@stdlib/InteractiveUtils`]
[8f399da3] Libdl [`@stdlib/Libdl`]
[37e2e46d] LinearAlgebra [`@stdlib/LinearAlgebra`]
[56ddb016] Logging [`@stdlib/Logging`]
[d6f4376e] Markdown [`@stdlib/Markdown`]
[9a3f8284] Random [`@stdlib/Random`]
[9e88b42a] Serialization [`@stdlib/Serialization`]
[6462fe0b] Sockets [`@stdlib/Sockets`]
[8dfed614] Test [`@stdlib/Test`]
Testing Example tests passed