2026-08-13 –, Room 3
We present Spry.jl, a package for high performance networking natively in Julia. Traditional HPC has long used abstractions like MPI or SHMEM to manage communication. Spry.jl directly interfaces with the low level Libfabrics and UCX libraries enabling fast, scalable networking that complements Julia's dynamism, performance, and workflow flexibility rather than limiting it. We also provide an overview of the high level interfaces of Spry like distributed arrays, channels, and object stores.
Spry.jl frees Julia HPC codes from the shackles of MPI, SHMEM, and other HPC abstractions built for a world where HPC used C and Fortran. These older codes enable scaling and portability but are increasingly limiters on performance. This is particularly true in Julia where our task based parallelism conflicts with MPI's strict serialization semantics and heavy interface.
Spry.jl instead directly targets the networking libraries that MPI, SHMEM, and more rely on. Spry.jl is a metapackage which combines several different subpackages for different capabilities:
- Bootstraps.jl manages processes, sets up and tears down network topologies, manages events between processes, and provides a key-value store for important metadata.
- Fabrics.jl and UCX.jl are low-level networking libraries that expose user-friendly but direct access to the OpenFabricsInterface and UCX. These libraries provide extremely lightweight abstractions over vendor specific network hardware like HPE Slingshot, Mellanox Infiniband, AWS EFA, Infiniband Verbs, Omnipath, TCP, and more.
- Swarms.jl enables (overlapping) groups of processes, the equivalent of communicators in MPI. Built on top of Bootstraps.jl
- Specific subpackages for the high level interfaces: GlobalArrays.jl, RemoteChannels.jl, GlobalObjects.jl, and more...
We also provide a strong benchmarking story, with comparisons against traditional libraries like MPI and SHMEM, Charm as well as newer libraries and languages like Chapel, LCI, HPX, etc.
Unga Bunga