Concurrency
- Julia HPC and Cluster computing.
- Distributed Computing and Grid computing.
- Cloud computing
- Parallel computing
- Hardware architectures (ARM, CUDA, GPU, MIPS) and compute kernels
Organizations
General Concurrency Packages
- [Actors.jl](https://github.com/JuliaActors/Actors.jl : Actor Model concurrent model.
- FLoops.jl : the macro
@floop, a superset ofThreads.@threads, for a fast generic for loop iteration over complex collections. - Folds.jl : A unified interface for sequential, threaded, and distributed folds.
- OpenCL.jl: Julia interface for the OpenCL parallel computation API.
- TiledIteration.jl : Julia package to facilitate writing multithreaded, multidimensional, cache-efficient code.
- Transducers.jl : provides composable algorithms on “sequence” of inputs. This feature, available in Clojure language, is a transformation matrix for linear transformations that is now in Julia.
- Vahana.jl: A framework (not only) for large-scale agent-based models. See also Agent-based models.
Bindings for external libraries
- AppleAccelerate.jl : Julia interface to OS X’s Accelerate framework.
- ArrayFire.jl : Julia Wrapper for the ArrayFire library.
- Elly.jl : Hadoop HDFS and Yarn client.
- Hwloc.jl : Wrapper to the hwloc library to provide a portable abstraction (across OS, versions, architectures, …) of the hierarchical topology of modern architectures, including NUMA memory nodes, sockets, shared caches, cores and simultaneous multithreading.
Cloud computing
- AWSCore.jl : Amazon Web Services Core Functions and Types.
- AWS.jl : supports the EC2 and S3 API’s, letting you start and stop EC2 instances dynamically.
- AWSS3.jl : AWS S3 Simple Storage Service interface for Julia.
- GoogleCloud.jl : Google Cloud APIs for Julia.
- Kuber.jl : Julia Kubernetes Client.
SIMD Computing
- LoopVectorization.jl : vectorize for loops using the
@turbomacro. - SIMD.jl : Explicit SIMD vector operations for Julia.
Multi-Threading
- OhMyThreads.jl : Simple multithreading in Julia.
- ThreadPinning.jl : Pin Julia threads to CPU processors. Requires the
lscpucommand (Linux systems). JuliaCon 2023
Multiprocessing and Distributed Computing
- Wikipedia: Distributed Computing across multiple compute nodes.
- Wikipedia: Job Scheduler
- Julia at scale topic on discourse.
- ClusterManagers.jl : Support for different job queue systems commonly used on compute clusters. (e.g., Slurm, K8s, )
- Dagger. : A framework for out-of-core and parallel computation and hierarchical Scheduling of DAG Structured Computations. Similar to
dasklibrary in Python. - DistributedArrays.jl : A task persistency mechanism based on hash-graphs for Dispatcher.jl.
- FARMTest.jl : Tool for building and executing a computation graph given a series of dependent operations.
- K8sClusterManagers.jl : A Julia cluster manager for Kubernetes.
- Malt.jl : a multiprocessing package for Julia. It is used by Pluto.jl to manage the Julia process that notebook code is executed in, as a replacement to Distributed.
- MPI : Julia interface to the Message Passing Interface (MPI)
- ParallelDataTransfer.jl : A bunch of helper functions for transferring data between worker processes.
- Persist.jl : Running jobs in the background, independent of the Julia shell.
- Ray.jl : Julia language interface for Ray.io workloads. JuliaCon 2024 video
- Schedulers.jl : It provides elastic and fault tolerant parallel map and parallel map reduce methods.
- SlurmClusterManager.jl : Julia package for running code on slurm clusters. See FARMTest.jl for simple example scripts.
GPU computing
- Wikipedia: GPGPU
- Sample OpenCL notebooks for GPU Julia, and GPU Transpose.
- Blog post on High-Performance GPU Computing in the Julia Programming Language.
- AMDGPU.jl : AMD GPU (ROCm) programming in Julia.
- ArrayFire.jl : Julia Wrapper for the ArrayFire library.
- GPUArrays.jl : Reusable array functionality for Julia’s various GPU backends.
- oneAPI.jl : Julia support for the oneAPI programming toolkit.
NVIDIA CUDA
- CUDA.jl : CUDA programming in Julia. See also JuliaCon 2021 video.
- FoldsCUDA.jl : provides
Transducers.jl-compatible fold (FLoops.jl) implemented usingCUDA.jl. - NVTX.jl : Julia bindings for NVIDIA Tools Extension Library (NVTX), for instrumenting with the Nvidia Nsight Systems profiler. JuliaCon 2023 video.