Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Interfacing the HSL #132

Open
dpo opened this issue Oct 13, 2022 · 2 comments
Open

Interfacing the HSL #132

dpo opened this issue Oct 13, 2022 · 2 comments
Labels

Comments

@dpo
Copy link
Member

dpo commented Oct 13, 2022

Below is the full list of HSL packages from https://www.hsl.rl.ac.uk/catalogue.

This issue is used to track the progress on HSL interfaces and to assign a priority to each.
Next to each package, please indicate:

  • a link to the pull request where the interface is implemented;
  • a priority level: 🥇 = high, 🥈 = medium, 🥉 = low.

As a guideline:

  • functionality that is already available in pure Julia should have low priority;
  • functionality that is already available via an interface to another low-level library should have low or medium priority.

Tick the box when an interface is complete and the pull request has been merged.

We will proceed in stages.

  • Stage 1:

    • Packages with a C interface 🏆
  • Stage 2:

    • MA Section
    • MC Section
  • Next stages: TBD


EIGENVALUES AND EIGENVECTORS

EA: Eigenvalues and eigenvectors of real symmetric matrices

  • EA16 Compute selected eigenpairs using rational Lanczos method
  • HSL_EA19 Sparse symmetric or Hermitian: leftmost eigenpairs
  • HSL_EA20 s-root of a sparse self-adjoint positive-definite pencil
  • EA22 Sparse symmetric: simultaneous iteration
  • EA25 Sparse symmetric: Lanczos for the spectrum

EB: Eigenvalues and eigenvectors of general matrices

  • EB13 Sparse unsymmetric: Arnoldi’s method
  • EB22 Sparse unsymmetric: subspace iteration

EP: Parallel eigenvalues and eigenvectors of real symmetric matrices

  • EP25 Sparse symmetric: Lanczos for the spectrum

MATHEMATICAL FUNCTIONS

FA: Random numbers

FD: Simple Functions

  • FD15 Real-valued machine constants

SORTING

KB: Sorting numbers

  • KB05 Sort numbers into ascending order using Quicksort
  • KB06 Sort numbers into descending order using Quicksort
  • KB07 Sort numbers into ascending order with indexing using Quicksort
  • KB08 Sort numbers into descending order with indexing using Quicksort
  • HSL_KB22 Sorting reals using the Heapsort method

LINEAR PROGRAMMING

LA: Linear prgramming, i.e. minimization of a linear function subject to linear constraints

  • LA04 Sparse linear programming: steepest-edge simplex method
  • LA15 Sparse mathematical programming bases: factorize and update

LINEAR ALGEBRA

MA: Solution of linear systems

  • MA38 Sparse unsymmetric system: unsymmetric multifrontal method
  • MA41 Sparse unsymmetric system: unsymmetric multifrontal method
  • MA42 Sparse unsymmetric system: out-of-core frontal method
  • HSL_MA42_ELEMENT Unsymmetric finite-element system: out-of-core frontal method (real and complex)
  • HSL_MA42 Sparse unsymmetric system: out-of-core frontal method
  • MA43 Sparse unsymmetric system: row-by-row frontal method
  • MA44 Over-determined linear system: least-squares solution
  • MA46 Sparse unsymmetric finite-element system: multifrontal
  • MA48 Sparse unsymmetric system: driver for conventional direct method
  • HSL_MA48 Sparse unsymmetric system: driver for conventional direct method 🏆 🥈
  • MA49 Sparse over-determined system: least squares by QR
  • MA50 Sparse unsymmetric system: conventional direct method
  • MA51 Auxiliary for MA48 and MA50: identify ignored rows or columns in the rectangular or rank-deficient case, compute determinant
  • MA52 Sparse unsymmetric finite-element system: out-of-core multiple front method
  • HSL_MA54 Definite symmetric full matrix: partial or complete factorization and solution
  • HSL_MA55 Band symmetric positive-definite system
  • MA57 Sparse symmetric system: multifrontal method
  • HSL_MA57 Sparse symmetric system: multifrontal method 🏆 🥉
  • MA60 Iterative refinement and error estimation
  • MA61 Sparse symmetric positive-definite system: incomplete factorization
  • MA62 Sparse symmetric finite-element system: out-of-core frontal method
  • HSL_MA64 Indefinite symmetric full matrix: partial or complete factorization and solution
  • MA65 Unsymmetric banded system of linear equations
  • MA67 Sparse symmetric system, zeros on diagonal: blocked conventional
  • MA69 Unsymmetric system whose leading subsystem is easy to solve
  • HSL_MA69 Unsymmetric system whose leading subsystem is easy to solve
  • MA72 Sparse symmetric finite-element system: out-of-core multiple front method
  • HSL_MA74 Unsymmetric full matrix: partial or complete factorization and solution
  • MA75 Sparse over-determined system: weighted least squares
  • HSL_MA77 Sparse symmetric system: multifrontal out of core 🏆 🥇
  • HSL_MA78 Sparse unsymmetric finite-element system: multifrontal out of core
  • HSL_MA79 Sparse symmetric system: mixed precision
  • HSL_MA85 Sparse diagonally-weighted linear least squares solver
  • HSL_MA86 Sparse solver for real and complex indefinite matrices using OpenMP 🏆 🥇
  • HSL_MA87 Sparse Cholesky solver for real/complex matrices using OpenMP 🏆 🥇
  • HSL_MA97 Bit-compatible parallel sparse symmetric/Hermitian solver using OpenMP 🏆 🥉

MC: Computations with real matrices and vectors

  • MC13 Permute a sparse matrix to block triangular form
  • MC21 Permute a sparse matrix to put entries on the diagonal
  • MC22 Permute a sparse matrix given row and column permutations
  • MC25 Permute a sparse matrix to block triangular form
  • MC26 Sparse rectangular matrix: compute normal matrix
  • MC29 Sparse unsymmetric matrix: calculate scaling factors
  • MC30 Sparse symmetric matrix: calculate scaling factors
  • MC33 Sparse unsymmetric matrix: permute to bordered block triangular form
  • MC34 Sparse symmetric structure: expand from lower triangle
  • HSL_MC34 Sparse symmetric structure: expand from lower triangle
  • MC37 Sparse symmetric matrix: represent as a sum of element matrices
  • MC38 Sparse rectangular matrix held by columns: transpose
  • MC44 Unassembled finite-element matrix: generate the element or supervariable connectivity graph
  • MC46 Sparse rectangular matrix held by rows: transpose
  • MC47 Sparse symmetric pattern: approximate minimum-degree ordering allowing dense rows
  • MC53 Generate an ordering for finite-element matrices within a subdomain
  • MC54 Write a sparse matrix in Rutherford-Boeing format
  • MC55 Write a supplementary file in Rutherford-Boeing format
  • MC56 Read a file or a supplementary file held in Rutherford-Boeing format
  • HSL_MC56 Read a file containing a sparse matrix held in format
  • MC57 Assemble a set of finite-element matrices
  • MC58 Estimate rank and find independent rows/columns of a sparse unsymmetric or rectangular matrix
  • MC59 Sort a sparse matrix to an ordering by columns
  • MC60 Sparse symmetric pattern: reduce the profile and wavefront
  • MC61 Straightforward interface to MC60
  • MC62 Generate a row ordering for a row-by-row frontal solver
  • MC63 Generate an element assembly ordering for a frontal solver
  • MC64 Permute and scale a sparse unsymmetric matrix to put large entries on the diagonal
  • HSL_MC64 Permute and scale a sparse unsymmetric or rectangular matrix to put large entries on the diagonal 🏆 🥇
  • HSL_MC65 Construct and manipulate matrices in compressed sparse row format
  • HSL_MC66 Permute an unsymmetric sparse matrix to singly bordered blocked diagonal form
  • MC67 Refine a profile-reducing permutation of a symmetric matrix
  • HSL_MC68 Symmetric sparse matrix: compute elimination orderings 🏆 🥉
  • HSL_MC69 Matrix format converter 🏆 🥉
  • MC71 Unsymmetric matrix: estimate 1-norm
  • MC72 Full unsymmetric matrix: calculate scaling factors
  • HSL_MC73 Sparse symmetric matrix: compute Fiedler vector and permute to reduce the profile and wavefront
  • MC75 Sparse unsymmetric matrix: estimate condition number
  • MC77 Sparse unsymmetric matrix: calculate scaling factors
  • HSL_MC78 Analysis phase in Cholesky algorithm 🏆 🥉
  • HSL_MC79 Sparse matrix: maximum matching and Dulmage-Mendelsohn decomposition 🏆 🥉
  • HSL_MC80 Sparse symmetric matrix: matching-based ordering and scaling
  • HSL_MC81 Randomized methods for low-rank matrix approximation

ME: Solution of complex linear systems and other calculations for complex matrices

  • ME22 Permute a sparse matrix given row and column permutations
  • ME38 Sparse unsymmetric system: unsymmetric multifrontal method
  • ME42 Sparse unsymmetric system: out-of-core frontal method
  • ME43 Sparse unsymmetric system: row-by-row frontal method
  • ME48 Sparse unsymmetric system: driver for conventional direct method
  • ME50 Sparse unsymmetric system: conventional direct method
  • ME57 Sparse Hermitian or complex symmetric: multifrontal method
  • HSL_ME57 Sparse solver for complex symmetric or Hermitian linear systems
  • ME62 Sparse Hermitian or complex symmetric finite-element system: out-of-core frontal method

See also
HSL_MA86 (Parallel sparse symmetric indefinite/Hermitian)
HSL_MA87 (Parallel sparse Cholesky)
HSL_MA97 (Bit-compatible parallel sparse symmetric/Hermitian)

MF: Computations with complex matrices and vectors

  • MF29 Sparse unsymmetric matrix: calculate scaling factors
  • MF30 Sparse symmetric matrix: calculate scaling factors
  • MF64 Permute and scale a sparse complex unsymmetric matrix to put large entries on the diagonal
  • MF71 Unsymmetric matrix: estimate 1-norm

MI: Iterative methods for sparse matrices

  • HSL_MI02 Symmetric possibly-indefinite system: SYMMBK method
  • MI11 Unsymmetric system: incomplete LU factorization
  • MI12 Unsymmetric system: approximate-inverse preconditioner
  • HSL_MI13 Preconditioners for saddle-point systems
  • MI15 Unsymmetric system: flexible GMRES
  • HSL_MI20 Unsymmetric system: algebraic multigrid preconditioner 🏆 🥈
  • MI21 Symmetric positive-definite system: conjugate gradient method
  • MI23 Unsymmetric system: CGS (conjugate gradient squared) method
  • MI24 Unsymmetric system: GMRES (generalized minimal residual) method
  • MI25 Unsymmetric system: BiCG (BiConjugate Gradient) method
  • MI26 Unsymmetric system: BiCGStab (BiConjugate Gradient Stabilized) method
  • HSL_MI27 Projected preconditioned conjugate gradient method for saddle-point systems
  • HSL_MI28 Symmetric system: incomplete Cholesky factorization
  • HSL_MI29 MPGMRES: an extension of GMRES which allows multiple preconditioners
  • HSL_MI30 Symmetric indefinite saddle-point system: signed incomplete Cholesky factorization
  • HSL_MI31 Symmetric positive-definite system: conjugate gradient method, stopping according to the A-norm of the error
  • HSL_MI32 Symmetric possibly-indefinite system: MINRES method
  • HSL_MI35 Sparse least squares: incomplete factorization preconditioner #134

MP: MPI dependant packages

  • HSL_MP01 MPI constants
  • HSL_MP42 Unsymmetric finite-element system: multiple-front method, element entry
  • HSL_MP43 Sparse unsymmetric system: multiple-front method, equation entry
  • HSL_MP48 Sparse unsymmetric system: parallel direct method
  • HSL_MP54 Parallel Cholesky solver
  • HSL_MP62 Symmetric finite-element system: multiple-front method
  • HSL_MP82 Tall-skinny QR factorization

NONLINEAR EQUATIONS

NS: Solution of systems of nonlinear equations in several unknowns

  • NS23 Sparse nonlinear over-determined equations: Marquardt method

INPUT/OUTPUT

OF: File management

POLYNOMIAL AND RATIONAL FUNCTIONS

PA: Zeros of polynomials

  • PA16 Complex coefficients: all roots by the method of Madsen and Reid
  • PA17 Real coefficients: all roots by the method of Madsen and Reid

TEST PROGRAM GENERATORS

YM: Generate test programs for chapter M of the library

  • YM11 Generate a random sparse matrix

FORTRAN SYSTEM FACILITES

ZB: Array allocation

ZD: Derived types

  • HSL_ZD11 Derived type for sparse matrix storage schemes
@dpo dpo added the epic label Oct 13, 2022
@amontoison
Copy link
Member

I added a trophy 🏆 for packages with a C interface.

@dpo
Copy link
Member Author

dpo commented Oct 14, 2022

Thanks. I added a priority next to them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants