Dominik 'Rathann' Mierzejewski <dominik(a)greysector.net> writes:
What exact alternative are you proposing, then? Carrying downstream
patches to all BLAS/LAPACK implementations like Debian? I don't think
that's sustainable.
You don't need patches to be able to substitute an ABI-compatible
version (with the soname counting towards the ABI). See the BLIS
packaging, though it should have more shims.
https://loveshack.fedorapeople.org/blas-subversion.html describes what I
used in production, but it probably should be updated.
> (I don't know what the environment modules alternative is,
since
> that's one way of specifying the late binding.)
Environment modules are user-selectable sets of environment variable
values and require affected packages to be built in a specific way.
https://docs.fedoraproject.org/en-US/packaging-guidelines/EnvironmentModu...
I meant I don't know what specific use of the environment is being
rejected, especially as I'm told that's what I need to use, but not
LD_LIBRARY_PATH. (For what it's worth, I think typical use of modules
is mostly a sign of engineering failure, but it's a reasonable way for
users to flip a runtime path.)
> BLAS isn't alone in presenting a substitute interface like
that. It
> works well with a heterogeneous HPC cluster where you want different
> BLAS implementations on different nodes (think KNL, A64FX).
I'm not sure what you mean here. What "substitute interface" are you
talking about?
I guess that should have been "substitutable". I can dynamically
substitute reference BLAS with another implementation of libblas.so.3 as
I can substitute libgomp.so.1 with a shim over libiomp (to get OMPT, for
instance) -- and I realize I should have submitted a patch for that.
That assumes you don't use symbols in the one implementation which
aren't in the substitute, of course.
> There will be hoops to jump through to get packages to configure
when
> they don't know about the library.
From what I understand from the proposal, FlexiBLAS looks like vanilla
BLAS and LAPACK to the consumers. No hoop jumping required.
?? libflexiblas.so(.3) doesn't look like libblas.so(.3). I've had to
prat about in hostile build systems even to use openblas at times.
> If I want to use a library that's
> not included, I'm in the same position. It's not clear to me a priori
> what happens if you try to use just BLIS even, given that OpenBLAS'
From what I understand, if you select BLIS, then it'll be used for all
symbols it implements and netlib reference will be used for the rest.
But I might want to use libflame, for instance.