Hi list,

I'm going to participate the gsoc project "BLAS and LAPACK runtime"[1].
However it seems to pose a significant change on Gentoo Science Team's
packages, so I'd better ask for approval first before really working
on this, in case anybody disagree with the proposal.

Briefly speaking,

The solution of “BLAS and LAPACK runtime switching” is to mimic Debian.
The Netlib BLAS and LAPACK packages are mandatory when one needs to
build any application on top of BLAS/LAPACK. The netlib implementation
functions as the last fallback implementation, a linkder stub, the
standard header provider, and most importantly the fallback alternative
for libblas.so.3 and liblapack.so.3. All packages depend on BLAS and
LAPACK should link against libblas.so.3 or liblapack.so.3, which could
be provided by various BLAS and LAPACK implementations. The recommended
header used to build reverse dependencies is the one from netlib. All
other BLAS and LAPACK implementations should register themselves as
alternatives to the netlib implementation, where each implementation
provides two groups of candidates: development files, and shared
objects.

The proposed solution involes no usage of USE flag, or eselect feature.

Objective of this project:

1. Integrate update-alternatives mechanism into Gentoo's reference blas,
i.e. netlib blas' packaging.

2. Package BLIS for Gentoo, and register it as another netlib blas
alternative.

3. Update the packaging of a BLAS/LAPACK reverse dependency to validate
the efficacy of the mechanism on Gentoo. Specifically, the package will
be compiled against BLIS's libblas.so.3 and netlib's libblas.so.3
respectively, and always use the netlib headers.

4. Modify the packaging for OpenBLAS to register libopenblas.so as an
alternative to netlib blas. Header are not exposed in public include
directory.

5. Update packaging for BLAS and LAPACK reverse dependencies, and
enforce linkage against libblas.so.3 (any BLAS implementation could
provide this).

6. Update gentoo wiki or documentations, describing related changes.

7. Optionally, write an eselect-to-update-alternatives bridge.

*** Does it sound like an acceptable solution to Gentoo Science Team? ***

BTW, I'm the Debian Developer maintaining Julia, BLIS, MKL and many
other packages. I'm a long-time member of Debian Science Team and many
other teams.

[1] 
https://wiki.gentoo.org/wiki/Google_Summer_of_Code/2019/Ideas#BLAS_and_LAPACK_runtime_switching

Reply via email to