Re: RFC: Naming convention for ILP64 variant of BLAS/LAPACK
- Date: Tue, 23 Oct 2018 14:12:16 +0000
- From: Mo Zhou <lumin@xxxxxxxxxx>
- Subject: Re: RFC: Naming convention for ILP64 variant of BLAS/LAPACK
On Mon, Oct 22, 2018 at 07:58:38PM +0200, Bastian Blank wrote:
> On Mon, Oct 22, 2018 at 07:55:10PM +0200, Sébastien Villemot wrote:
> > For BLAS/LAPACK implementations implemented in C, like OpenBLAS, they
> > will be compiled using LP64, and not ILP64. Only integers exposed
> > through the interface will be affected, through the use of appropriate
> > types.
> So you could also to a proper library transition and drop the support
> for 32-bit indicies completely?
Completely dropping 32-bit-index version of BLAS/LAPACK for 64-bit
architectures is a long way to go. We can keep 32-bit-index version and
64-bit-index version at the same time for a while and see if the
32-bit-version is really droppable.
This reminds me two points about wheter the 32-bit-index version is
droppable. As far as I know, Debian (will) have these BLAS providers:
(1) bin:libblas3 from src:lapack
(2) bin:libatlas3-base from src:atlas
(3) bin:libopenblas-base from src:openblas
(4) bin:libblis1 from src:blis [WIP]
(5) bin:libmkl-rt from src:intel-mkl [non-free]
(6) bin:libnvblas9.1 from src:nvidia-cuda-toolkit [non-free] 
* I confirm these providers support 64-bit index in the API.
(2) (3) (4) (5)
@Sebastien could you please confirm the status of 64-bit-index support
in lapack, i.e. (1) ?
* Provider (6) will become a tragedy when Debian no longer provide
32-bit-index version of BLAS... nvBLAS is a quite special BLAS
implementation. NVIDIA calls it a "drop in" BLAS library but in fact
it only implemented several level-3 BLAS routines. When a program
calls a BLAS function that doesn't exist in nvBLAS, nvBLAS will pass
the call into another BLAS implementation which is defined in a
configuration file given by the user.
That means, nvBLAS should call a library which uses index in the same
width. And nvblas.h suggests that this library only supports 32-bit
60 /* GEMM */
61 void sgemm_ (const char *transa, const char *transb, const int *m, const int *n, const int *k,
62 const float *alpha, const float *a, const int *lda, const float *b, const int *ldb,
63 const float *beta, float *c, const int *ldc);
nvBLAS blocks the removal of 32-bit-index version of BLAS...
 Not mentioning LAPACK here.
 It has not been added to the update-alternatives system yet.