HSL.jl icon indicating copy to clipboard operation
HSL.jl copied to clipboard

Interfacing the HSL

Open dpo opened this issue 3 years ago β€’ 2 comments

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 :trophy:
  • 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

  • [ ] FA14 Uniform distribution
  • [ ] HSL_FA14 Uniform distribution

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
  • [x] 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 :trophy: πŸ₯ˆ
  • [ ] 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 :trophy: πŸ₯‰
  • [ ] 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 :trophy: πŸ₯‡
  • [ ] 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 :trophy: πŸ₯‡
  • [ ] HSL_MA87 Sparse Cholesky solver for real/complex matrices using OpenMP :trophy: πŸ₯‡
  • [ ] HSL_MA97 Bit-compatible parallel sparse symmetric/Hermitian solver using OpenMP :trophy: πŸ₯‰

MC: Computations with real matrices and vectors

  • [ ] MC13 Permute a sparse matrix to block triangular form
  • [x] 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 :trophy: πŸ₯‡
  • [ ] 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 :trophy: πŸ₯‰
  • [ ] HSL_MC69 Matrix format converter :trophy: πŸ₯‰
  • [ ] 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
  • [x] MC77 Sparse unsymmetric matrix: calculate scaling factors
  • [ ] HSL_MC78 Analysis phase in Cholesky algorithm :trophy: πŸ₯‰
  • [ ] HSL_MC79 Sparse matrix: maximum matching and Dulmage-Mendelsohn decomposition :trophy: πŸ₯‰
  • [ ] 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 :trophy: πŸ₯ˆ
  • [ ] 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
  • [ ] #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 avatar Oct 13 '22 01:10 dpo

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

amontoison avatar Oct 14 '22 20:10 amontoison

Thanks. I added a priority next to them.

dpo avatar Oct 14 '22 23:10 dpo