Skip to content

Conversation

@amontoison
Copy link
Member

@amontoison amontoison commented May 22, 2025

@nimgould
Do you think it will be a lot of work to add a generic version of MC26 in hsl_subset?
We work with Int64 by default in Julia and it will be great to have a generic version for Int32 / Int64.

I am wondering why you are not using it in GALAHAD, is it quite useful for forming the normal equations A'A in LP solvers.
I suppose that you only rely on the augmented system.

cc @frapac

@nimgould
Copy link

@amontoison

GALAHAD has its own, more flexible, version of an mc26-type method.
I originally tried mc26, but then developed a more efficient version
that is implemented in GALAHAD's bsc package. This is itself called
optionally by the generic augmented-system package sbls for any
block matrix whose diagonal blocks are (definite) diagonal matrices.
bsc allows users to input the matrix A in various forms, and also allows
for a sandwiched normal matrix A'D A for diagonal D. sbls has methods
based on the augmented system, normal matrix and (when the 2x2 block is
zero) a projected null-space matrix. sbls itself uses sls and uls from
GALAHAD, and thus indirectly provides access to all of the HSL solvers,
ssids, mumps, pardiso(s), wsmp and pastix.

So yes, I have thought about this!

I can do a subset mc26 when I get time, but it isn't high priority.
I have also been asked to provide a subset version of the mixed-precision sparse solver hsl_ma79 that may be of interest. All of these will evolve as we move to sparse HSL, in particular the evolved hsl_ma79 will move from using ma57 under the hood to hsl_ma86/ma87/ma97

@amontoison
Copy link
Member Author

amontoison commented May 23, 2025

Thanks @nimgould !!!
I was not aware of the content of BSC.
It could be easier to use GALAHAD.jl instead of HSL.jl for that. Thus, MC26 is not anymore relevant for us, GALAHAD.jl is available for all-users (open-source).

I checked and it seems that you also have your own version of MC19, MC29, MC30, MC77 in the package SCALE.

We don't want to reimplement everything with François for our GPU solver of LP / QP problems.
This kind of routines need new kernels on GPU but on CPU we try to use as much as possible what already exist and is efficient.

@nimgould
Copy link

Hold on a moment ... we do not currently have a C (and thus Julia) interface to bsc, only to its control and inform types. I can write one,
but not for a few weeks as I am about to head off for a holiday (yes, a real one this time, no computer at all!).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants