You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: website/user_faq.md
+8
Original file line number
Diff line number
Diff line change
@@ -50,6 +50,8 @@ Set [`JULIA_CPU_TARGET`](https://docs.julialang.org/en/v1.10-dev/manual/environm
50
50
51
51
This compiles all functions (`clone_all`) for Intel Skylake (`skylake-avx512`), AMD Zen 2 (`znver2`), and a generic fallback (`generic`).
52
52
53
+
For more information, see [this section of the Julia documentation](https://docs.julialang.org/en/v1/manual/environment-variables/#JULIA_CPU_TARGET) and [this section of the developer documentation](https://docs.julialang.org/en/v1/devdocs/sysimg/#Specifying-multiple-system-image-targets).
54
+
53
55
[⤴ _**back to Content**_](#content)
54
56
55
57
## Should I use Distributed.jl or MPI.jl for large-scale parallelism?
@@ -118,4 +120,10 @@ Try setting `JULIA_CUDA_MEMORY_POOL=none` (see the [CUDA.jl documentation](https
118
120
119
121
By default, Julia uses many parallel tasks during precompilation. On the login nodes of some HPC clusters, parallel processes might be subject to resource restrictions. In these cases, you might want to set [`JULIA_NUM_PRECOMPILE_TASKS`](https://docs.julialang.org/en/v1/manual/environment-variables/#JULIA_NUM_PRECOMPILE_TASKS) to a low value, e.g. `export JULIA_NUM_PRECOMPILE_TASKS=1` (single task).
120
122
123
+
[⤴ _**back to Content**_](#content)
124
+
125
+
## Can I precompile GPU code on a login node without a GPU?
126
+
127
+
Yes, at least for CUDA.jl. See [this part](https://cuda.juliagpu.org/stable/installation/overview/#Precompiling-CUDA.jl-without-CUDA) of the CUDA.jl documentation.
Copy file name to clipboardexpand all lines: website/user_gettingstarted.md
+23-6
Original file line number
Diff line number
Diff line change
@@ -19,24 +19,41 @@ Getting started with Julia on a new cluster can sometimes be a challenge. Below
19
19
20
20
---
21
21
22
-
## Julia binaries or Julia module
22
+
## Use the regular Julia binaries or a Julia module (if available)
23
23
24
24
When starting on a new HPC cluster the first thing you should do is figure out if there is a pre-configured Julia module ([Lmod module](https://lmod.readthedocs.io/en/latest/010_user.html)) available on the cluster. To that end, `module key julia` or `module spider julia` might be helpful commands.
25
25
26
-
If there isn't a Julia module available that you can load, you should use the regular, pre-built Julia binaries. You can either download (e.g. `wget` or `curl`) them directly [from the website](https://julialang.org/downloads/) or use [juliaup](https://github.com/JuliaLang/juliaup). In any case, you should **not** build Julia from source (unless you have a very good reason and know that you're doing).
26
+
If there is no Julia module available that you can load, you should download and use the regular, precompiled Julia binaries. We strongly recommend to use [juliaup](https://github.com/JuliaLang/juliaup) for this. Alternatively, you can also manually download the binaries directly [from the website](https://julialang.org/downloads/).
27
+
28
+
In any case, you should generally **not** build Julia from source (unless you have a very good reason).
27
29
28
30
[⤴ _**back to Content**_](#content)
29
31
30
-
## Placing the Julia depot
32
+
## Place the Julia depot on the parallel file system.
33
+
34
+
One you have Julia installed and you can run `julia` from the command line, you should place the Julia depot - the `.julia` folder where Julia stores all dependencies, logs, etc. - on an appropriate file system. By default, it will be stored in `$HOME/.julia`. This may or may not be a good choice, but more often than not it isn't.
31
35
32
-
One you have `julia`, you must make sure that the Julia depot is placed on an appropriate file system. By default, it will be stored in `$HOME/.julia`. This may or may not be a good choice. What you want is a place on a file system with the following properties
36
+
You want to choose a file system with the following properties
33
37
* no tight quotas (at least >= 20 GB)
34
38
* read and write access (ideally also from compute nodes)
35
39
* good (parallel) I/O
36
40
* no automatic deletion of unused files (or otherwise you have to find a workaround)
37
41
38
-
Often times these criterion are best fit on a parallel file system (often `$SCRATCH`). For this reason it might be necessary to set `JULIA_DEPOT_PATH=$SCRATCH/.julia`.
42
+
**On most clusters these criterion are best fit on a parallel file system (often `$SCRATCH`).** In this case, you should put `JULIA_DEPOT_PATH=$SCRATCH/.julia` into your `.bashrc`.
39
43
40
-
Note that if the last point (automatic deletion of unused files) is an issue for you, a pragmatic workaround could be a cronjob that touches all files in the Julia depot every once in a while.
44
+
**Note:** If the last point (automatic deletion of unused files) is an issue for you, a pragmatic workaround could be a cronjob that touches all files in the Julia depot every once in a while.
41
45
42
46
[⤴ _**back to Content**_](#content)
47
+
48
+
49
+
## Set `JULIA_CPU_TARGET` appropriately.
50
+
51
+
On many clusters, the sections above are all you need to get a solid Julia setup. However, if your on a **heterogeneous HPC cluster**, that is, if different nodes have different CPU (micro-)architectures, you should/need to do a few more preparations. Otherwise, you might encounter nasty error messages like "`Illegal instruction`".
52
+
53
+
To make Julia produce efficient code that works on different CPUs, you need to set [`JULIA_CPU_TARGET`](https://docs.julialang.org/en/v1.10-dev/manual/environment-variables/#JULIA_CPU_TARGET). For example, if you want Julia to compile all functions (`clone_all`) for Intel Skylake (`skylake-avx512`), AMD Zen 2 (`znver2`), and a generic fallback (`generic`), for safety, you could put the following into your `.bashrc`:
For more information, see [this section of the Julia documentation](https://docs.julialang.org/en/v1/manual/environment-variables/#JULIA_CPU_TARGET) and [this section of the developer documentation](https://docs.julialang.org/en/v1/devdocs/sysimg/#Specifying-multiple-system-image-targets).
Copy file name to clipboardexpand all lines: website/user_vscode.md
+2
Original file line number
Diff line number
Diff line change
@@ -128,6 +128,8 @@ Microsoft provides ["Remote tunnels"](https://code.visualstudio.com/docs/remote/
128
128
* Requires a GitHub / Microsoft account.
129
129
* Microsoft serves as the tunnel provider (man in the middle).
130
130
131
+
**How to do it?**
132
+
131
133
1. Download the VS Code command line interface from [https://code.visualstudio.com/Download](https://code.visualstudio.com/Download) (search for **CLI**).
132
134
133
135
2. Copy the single `code` binary to the cluster (and put the directory on `PATH`).
0 commit comments