From b63b0b51178fdc7e9c7a1fdf021907ecda5c0239 Mon Sep 17 00:00:00 2001 From: Franck HOUSSEN Date: Mon, 1 Apr 2024 20:06:26 +0200 Subject: [PATCH 1/2] Add documentation on ILP64. --- CHANGES | 3 +++ README.md | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/CHANGES b/CHANGES index ee0ac71fa..0a3b8574e 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,8 @@ -- Franck Houssen Sat, 11 Feb 2023 13:52:57 +0100 +[ Franck Houssen ] + * Add documentation on ILP64. + arpack-ng - 3.9.0 [ Vikas Sharma ] diff --git a/README.md b/README.md index cab992726..d0cb4c915 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,27 @@ About ILP64 support: - Sequential arpack supports [ILP64](https://www.intel.com/content/www/us/en/develop/documentation/onemkl-linux-developer-guide/top/linking-your-application-with-onemkl/linking-in-detail/linking-with-interface-libraries/using-the-ilp64-interface-vs-lp64-interface.html), but, parallel arpack doesn't. - Reminder: you can NOT mix `ILP64` with `LP64`. If you compile `arpack-ng` with `ILP64` (resp. `LP64`) support, you MUST insure your BLAS/LAPACK is compliant with `ILP64` (resp. `LP64`). - Set `INTERFACE64` at configure time. +- As this can not be automated/checked, you need to make sure that the BLAS/LAPACK libraries you pass to `arpack-ng`: + - Are built with ILP64 support. + In case these ILP64 BLAS/LAPACK libraries have a non-usual name, you must specify them like so: + ``` + >> ./configure --with-blas=openblas64_ ... + ``` + - Do export ILP64-flavored symbols. In case these symbols have a non-usual name, you must: + - Make sure the ILP64 BLAS/LAPACK libraries do indeed export ILP64 symbols: + ``` + >> nm /path/to/libopenblas64_.so | grep scopy64_ + 0000000000000000 T scopy64_ + ``` + - Specify them to `arpack-ng` using `SYMBOLSUFFIX`: + ``` + >> SYMBOLSUFFIX=64_ ./configure ... + ... + Configuration summary for ARPACK-NG + ... + FFLAGS : -fdefault-integer-8 -Dscopy=scopy64_ ... + ``` + FFLAGS used by `arpack-ng` (built from `SYMBOLSUFFIX` - reported in configure log) *must* redirect the usual symbols to the *same* ones exported by the ILP64 BLAS/LAPACK libraries. Note for F77/F90 developers: From 249bd887b8df0ed5ec01d5f3f779e07112cdfd16 Mon Sep 17 00:00:00 2001 From: Franck HOUSSEN Date: Mon, 1 Apr 2024 20:17:18 +0200 Subject: [PATCH 2/2] Rephrase. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d0cb4c915..c90c8d46c 100644 --- a/README.md +++ b/README.md @@ -42,14 +42,14 @@ About ILP64 support: - Sequential arpack supports [ILP64](https://www.intel.com/content/www/us/en/develop/documentation/onemkl-linux-developer-guide/top/linking-your-application-with-onemkl/linking-in-detail/linking-with-interface-libraries/using-the-ilp64-interface-vs-lp64-interface.html), but, parallel arpack doesn't. - Reminder: you can NOT mix `ILP64` with `LP64`. If you compile `arpack-ng` with `ILP64` (resp. `LP64`) support, you MUST insure your BLAS/LAPACK is compliant with `ILP64` (resp. `LP64`). - Set `INTERFACE64` at configure time. -- As this can not be automated/checked, you need to make sure that the BLAS/LAPACK libraries you pass to `arpack-ng`: +- As this can not be automated, you need to make sure that the BLAS/LAPACK libraries you pass to `arpack-ng`: - Are built with ILP64 support. In case these ILP64 BLAS/LAPACK libraries have a non-usual name, you must specify them like so: ``` >> ./configure --with-blas=openblas64_ ... ``` - Do export ILP64-flavored symbols. In case these symbols have a non-usual name, you must: - - Make sure the ILP64 BLAS/LAPACK libraries do indeed export ILP64 symbols: + - Check for ILP64 symbols exported by the ILP64 BLAS/LAPACK libraries: ``` >> nm /path/to/libopenblas64_.so | grep scopy64_ 0000000000000000 T scopy64_ @@ -62,7 +62,7 @@ About ILP64 support: ... FFLAGS : -fdefault-integer-8 -Dscopy=scopy64_ ... ``` - FFLAGS used by `arpack-ng` (built from `SYMBOLSUFFIX` - reported in configure log) *must* redirect the usual symbols to the *same* ones exported by the ILP64 BLAS/LAPACK libraries. + FFLAGS used by `arpack-ng` (built from `SYMBOLSUFFIX` - reported in configure log) *must* redirect the usual symbols to the non-usual ones exported by the ILP64 BLAS/LAPACK libraries: this check is the responsability of the user. Note for F77/F90 developers: