File tree Expand file tree Collapse file tree 2 files changed +12
-11
lines changed Expand file tree Collapse file tree 2 files changed +12
-11
lines changed Original file line number Diff line number Diff line change @@ -37,6 +37,9 @@ Compiler/Runtime improvements
37
37
* The mark phase of the garbage collector is now multi-threaded ([ #48600 ] ).
38
38
* [ 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 ] ).
39
39
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 ] )
40
43
41
44
Command-line option changes
42
45
---------------------------
Original file line number Diff line number Diff line change @@ -1052,17 +1052,15 @@ Modifying OpenBLAS settings or compiling Julia with a different BLAS library, eg
1052
1052
1053
1053
### How do I manage precompilation caches in distributed file systems?
1054
1054
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.
1066
1064
1067
1065
## Julia Releases
1068
1066
You can’t perform that action at this time.
0 commit comments