Web lists-archives.com

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[1] 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] [2]

* 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
  index.
  
  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...


[1] Not mentioning LAPACK here.
[2] It has not been added to the update-alternatives system yet.