Skip to content

Latest commit

 

History

History
51 lines (35 loc) · 2.2 KB

README.md

File metadata and controls

51 lines (35 loc) · 2.2 KB

ScaLAPACK

Stable Dev Build Status Code Style: Blue

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.

Available Features

  • Singular value decomposition (SVD)
  • QR decomposition

Restrictions

This is early work in progress. See the GitHub page for current developments.

Libraries

  • Confirmed working with libscalapack on Cent OS 8 Stream and libscalapack-openmpi on Ubuntu 20.04 LTS.
  • Support for Intel OneAPI is under development.

Contents

  • 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.

Usage

  • JULIA_SCALAPACK_LIBRARY (libscalapack) Sets the name (or path) of the shared library file to look for.

Examples

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