Gentoo Archives: gentoo-dev

From: Benda Xu <heroxbd@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] RFC: BLAS and LAPACK runtime switching
Date: Thu, 30 May 2019 04:06:54
Message-Id: 871s0gegbx.fsf@gentoo.org
In Reply to: Re: [gentoo-dev] RFC: BLAS and LAPACK runtime switching by David Seifert
1 Hi David,
2
3 David Seifert <soap@g.o> writes:
4
5 >> > An actual ABI compliance test, e.g. done using abi-compliance-
6 >> > checker would be more interesting.
7 >>
8 >> As said above, the symbols don't need to be 1-1 copy of each other.
9 >> Any library which is a superset of the reference one will work.
10 >
11 > Again, I'm willing to accept this under a USE="lapack_targets_virtual"
12 > configuration,
13
14 I hear you, and I was with the same opinion, too.
15
16 Nevertheless, if a runtime switch works, it is simpler than USE_EXPAND.
17
18 We already have a couple of them, PYTHON_TARGET, RUBY_TARGET, etc. I
19 don't want to add more to this list unless absolutely necessary.
20
21 Alternatively, it could be exclusive USE flags instead of USE_EXPAND.
22 That's possible and we need to add a lot of USE flags, OpenBLAS, blis,
23 reference, altas, nvBLAS, etc. I don't think it a clean solution.
24
25 > but wholesale editing of DT_NEEDED entries is definitely too scary and
26 > too invasive for most non-sci/hpc users of Gentoo.
27
28 Sorry if I confused you. There is no hack of DT_NEEDED involved.
29
30 An application is compiled against the reference, then it is pointed by
31 LDPATH and ld.so.conf to a drop-in replacement library, and it profits.
32 That's not more than upgrading a dynamic library.
33
34 The scheme was shown to work with gcc runtime, libstdc++, and opengl, in
35 Gentoo.
36
37 > Again, for 99% of users, OpenBLAS will be the right trade-off between
38 > performance and customizability. Every recompilation of libreoffice or
39 > chromium will devour more CPU cycles than switching between USE-flag
40 > implementations.
41
42 I understand your point. Let me elaborate:
43
44 1. OpenBLAS has quite a bit of hand-tuned assembly, it is not very
45 portable. Special care is need to manage the default BLAS on
46 profiles, like ppc64, arm64, arm, riscv, etc.
47
48 2. All the Gentoo users care about optimization. And there are
49 non-science applications that call linear algebra routines.
50
51 3. Maintaining different BLAS frameworks in repo/gentoo.git and
52 proj/sci.git wastes everybody's time, and causes endless confusion to
53 users. That offsets the time saved to make OpenBLAS the global
54 default.
55
56 Therefore, from the users' point of view, I still think runtime
57 switching makes more sense.
58
59 Yours,
60 Benda