Skip to content

Commit c932fb2

Browse files
Precompile pidlocks: add to NEWS and docs (#50385)
1 parent a83186f commit c932fb2

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

HISTORY.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ Compiler/Runtime improvements
3737
* The mark phase of the garbage collector is now multi-threaded ([#48600]).
3838
* [JITLink](https://llvm.org/docs/JITLink.html) is enabled by default on Linux aarch64 when Julia is linked to LLVM 15 or later versions ([#49745]).
3939
This should resolve many segmentation faults previously observed on this platform.
40+
* The precompilation process now uses pidfile locks and orchestrates multiple julia processes to only have one process
41+
spend effort precompiling while the others wait. Previously all would do the work and race to overwrite the cache files.
42+
([#49052])
4043

4144
Command-line option changes
4245
---------------------------

doc/src/manual/faq.md

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,17 +1052,15 @@ Modifying OpenBLAS settings or compiling Julia with a different BLAS library, eg
10521052

10531053
### How do I manage precompilation caches in distributed file systems?
10541054

1055-
When using `julia` in high-performance computing (HPC) facilities, invoking
1056-
_n_ `julia` processes simultaneously creates at most _n_ temporary copies of
1057-
precompilation cache files. If this is an issue (slow and/or small distributed
1058-
file system), you may:
1059-
1060-
1. Use `julia` with `--compiled-modules=no` flag to turn off precompilation.
1061-
2. Configure a private writable depot using `pushfirst!(DEPOT_PATH, private_path)`
1062-
where `private_path` is a path unique to this `julia` process. This
1063-
can also be done by setting environment variable `JULIA_DEPOT_PATH` to
1064-
`$private_path:$HOME/.julia`.
1065-
3. Create a symlink from `~/.julia/compiled` to a directory in a scratch space.
1055+
When using Julia in high-performance computing (HPC) facilities with shared filesystems, it is recommended to use a shared
1056+
depot (via the `JULIA_DEPOT_PATH` environment variable). Since Julia v1.10, multiple Julia processes on functionally similar
1057+
workers and using the same depot will coordinate via pidfile locks to only spend effort precompiling on one process while the
1058+
others wait. The precompilation process will indicate when the process is precompiling or waiting for another that is
1059+
precompiling. If non-interactive the messages are via `@debug`.
1060+
1061+
However, due to caching of binary code, the cache rejection since v1.9 is more strict and users may need to set the
1062+
`[JULIA_CPU_TARGET](@ref)` environment variable appropriately to get a single cache that is usable throughout the HPC
1063+
environment.
10661064

10671065
## Julia Releases
10681066

0 commit comments

Comments
 (0)