On 10/22/20 1:06 PM, Aisha Tammy wrote:
> ...Currently I use in my work mainly sci-chemistry/nwchem, now at the > 7.0.0 version. It uses blas and lapack, and prefers compilation with > 64
bit integers (ILP64) data model, although an utility to convert it > for LP64
model with 32 bit integers is provided. I'm attaching my > ebuild that I've
finally used to install and start using the new > NWChem version. I'm also
adding all the patches the ebuild references > in case you wanted to test the
ebuild. I'm affraid the way I made it > use the ILP64 version of
sci-libs/openblas-0.3.10 is rather ugly, and > some more elegant, more
general, more systematic way should be > available...
Yes, you can try to install the OpenBLAS package from ::gentoo with
the 'index-64bit' use flag enabled, which will install a libopenblas64.so
which should have what you want.
I am working on cleanin up these packages, but this should work for your
particular problem.
I'm sorry I wrote too much of mostly irrelevant talking, and failed to
describe my problem properly.
Yes, I've found out that to get sci-libs/openblas compiled in the ILP64 model
I have to set the “index-64bit” USE flag instead of the former “int64”. I don't
understand why the flag was renamed, and I don't like it (I'll write more on the
topic further below), but I can live with it as long as I know what I have to
set to get what I need.
The worst problem I see in the effect of the flag: sci-libs/openblas-0.3.10
compiles in the LP64 (32 bit integer) model, and installs the library with all
the bells and whistles. In addition, if the “index-64bit” is set, the ILP64 (64
bit integer) model version is compiled, and the resulting library file installed
— completely bare, with no pkg-config file, no eselect configuration. As a
result eselect knows nothing of the ILP64 version being installed, and packages
that want to use it cannot get the necessary configuration information from
pkg-config, at least not directly; you can see in my sci-chemistry/nwchem ebuild
that I let it query pkg-config for the library directories of the LP64 openblas
version, and add the name of the ILP64 library, manually hardcoding in the
ebuild the knowledge got from reading the sci-libs/openblas ebuild of the name
used for the ILP64 library and of the fact it is installed into the same
directory as the LP64 version. This is non-elegant and error-prone in case
changes are made to the sci-libs/openblas ebuild in future version changing the
name used for the ILP64 library or the directory it's installed into.
Maybe I should ask questions and protest the current state of afaires in the
Gentoo bugzilla when the sci-libs/openblas ebuild resides in the main tree but I
think I've seen phasing out the eselect alternatives concept and moving the
ebuild to the main repository mentioned a few times in this list, so I think
people responsible for the changes, and knowing their rationale are somewhere
around.
The problem with eselect may span more packages, at least sci-libs/mkl, the
only linear algebra library besides sci-libs/openblas that supports the ILP64
model, as far as I know. In the past, in the eselect alternatives ecosystem,
ILP64 model libraries were installed as a separate category of linear algebra
libraries. Now sci-libs/openblas with the “index-64bit” flag set installs both
LP64 and ILP64 libraries, only does not inform pkg-config nor eselect of the
ILP64 version existence. On the other hand sci-libs/mkl isntalls, as far as I
understand its ebuild, always only one version, and the “int64” flag selects
whether it should use the LP64 }32 bit integer) or ILP64 (64 bit integer) model.
I don't use sci-libs/mkl and I have not tested its behaviour but I suspect that
after installing it with “int64”, selecting it with eselect will break all the
programs using linear algebra libraries and expecting 32 bit integers.
By the way, there are newer versions of sci-libs/mkl in the science overlay
than in the main tree but they still depend on the old removed eselect
alternatives ecosystem. That may add to the relevance of my questions and
comments on mostly main tree packages to the science overlay project, as it
suggests that phasing out the old eselect alternatives ecosystem, partial to the
science overlay, is still a work in progress, and while it includes moving
packages from the overlay to the main tree, recreating the functionality based
in the past on that ecosystem is a job of the overlay developers.
I have not experimented with setting the default integer size to 64 bits for
my whole system, so I don't know if such an approach is viable. I believe that
having LP64 and ILP64 mode packages coexisting side by side is desirable, and
that eselect should recognize LP64 and ILP64 libraries as separate categories,
and offer switching among different available implementations inside these
categories separately, just like it used to do in the eselect alternatives
times, never replace an LP64 model library with an ILP64 model one or vice
versa. Having all the ebuilds of the libraries that support installation in both
model install them both side by side when ILP64 model is selected would likely
be ideal, whenever possible.
Besides I think that the flag selecting the ILP64 model should retain its old
name “int64”. It's shorter than “index-64bit”, and at the same time more
descriptive, less confusing. Moreover it has a tradition. While in the science
overlay it's currently used only by my old sci-chemistry/nwchem and by
virtual/scalapack, where it selects as the scalapack implementation
sci-libs/mkl[int64], in the main tree it's used by:
sci-libs/hypre
sci-libs/mkl
sci-libs/parmetis
sci-libs/pastix
sci-libs/scotch
sci-libs/superlu_mt
In all those packages the “int64” flag makes the ebuild set the integer size
to 64 bits, only in the sci-libs/scotch-6.0.4-r2 it sets only some array indices
to 64 bits (-DIDXSIZE64), leaving all the other integers at the system default
size — and it may be wrong, and the setting for all integers to be 64 bits wide
(-DINTSIZE64) should likely be added, as sci-libs/pastix[int64] depends on
sci-libs/scotch[int64], and sets the size of all integers to 64 bits, so
sci-libs/scotch[int64] installed by the current ebuild may break it.
The “index-64bit” flag is unique to the sci-libs/openblas ebuild. There is
another solitaire flag “64bit-index” unique to the sci-libs/blis ebuild — and
its effect is to set the integer size to 64 bits.
I don't know where the “index” part came from but it's definitely messy.
That's, I'm afraid, more than enough commenting and criticising from me. I'm
getting back to my usual hibernation. After some time, rather long then short, I
may wake up again, and file some bugs on the Gentoo bugzilla, publish my
personal overlay, quit using Gentoo, or whatever.
All the best for now.
Honza Macháček