This package provides Julia wrappers for ScaLAPACK, BLACS, and PBLAS routines, including redistribution and tools. It can solve linear algebra problems distributed among several cores and compute nodes.
The main goal is to give access to the mentioned system libraries of compute clusters instead of relying on external ones.
- Singular value decomposition (SVD)
- QR decomposition
This is early work in progress. See the GitHub page for current developments.
- Confirmed working with
libscalapack
on Cent OS 8 Stream andlibscalapack-openmpi
on Ubuntu 20.04 LTS. - Support for Intel OneAPI is under development.
- Only the double precision routines (
pd…
) have been included for now. - Only the basic wrappers are available for now, no convenience methods.
- There is no type combining matrices and their descriptor vectors yet.
JULIA_SCALAPACK_LIBRARY
(libscalapack
) Sets the name (or path) of the shared library file to look for.
Assuming the necessary libraries have been installed, you can use the provided examples (see example
directory) to check usage on your system. The examples generate their local matrices in a way that the combined global matrix is identical for any process distribution so that results can be compared.
# On CentOS 8 Stream
module add mpi/openmpi-x86_64
cd ScaLAPACK.jl/example
mpirun -n 2 julia qr.jl --afile A --bfile B --xfile X --nrows 1000 --ncols 100
# On Ubuntu 20.04 LTS
export JULIA_SCALAPACK_LIBRARY=libscalapack-openmpi
cd ScaLAPACK.jl/example
mpirun -n 2 julia qr.jl --afile A --bfile B --xfile X --nrows 1000 --ncols 100