stdlib-js/stdlib

[RFC]: Add BLAS bindings and implementations for linear algebra (tracking issue)

aman-095 opened this issue ยท 10 comments

Description

This RFC proposes adding BLAS routines. The purpose of this issue is to serve as a tracking issue for adding BLAS routines.

Implementation Status for BLAS Routines

Level 1

Single Precision

  • SROTG
  • SROTMG
  • SROT
  • SROTM
  • SSWAP
  • SSCAL
  • SCOPY
  • SAXPY
  • SDOT
  • SDSDOT
  • SNRM2
  • SCNRM2
  • SASUM
  • ISAMAX

Double Precision

  • DROTG
  • DROTMG
  • DROT
  • DROTM
  • DSWAP
  • DSCAL
  • DCOPY
  • DAXPY
  • DDOT
  • DSDOT
  • DNRM2
  • DZNRM2
  • DASUM
  • IDAMAX

Complex Single

  • CROTG
  • CSROT
  • CSWAP
  • CSCAL
  • CSSCAL
  • CCOPY
  • CAXPY
  • CDOTU
  • CDOTC
  • SCASUM
  • ICAMAX

Complex Double

  • ZROTG
  • ZDROT
  • ZSWAP
  • ZSCAL
  • ZDSCAL
  • ZCOPY
  • ZAXPY
  • ZDOTU
  • ZDOTC
  • DZASUM
  • IZAMAX

Level 2

Single Precision

  • SGEMV
  • SGBMV
  • SSYMV
  • SSBMV
  • SSPMV
  • STRMV
  • STBMV
  • STPMV
  • STRSV
  • STBSV
  • STPSV
  • SGER
  • SSYR
  • SSPR
  • SSYR2
  • SSPR2

Double Precision

  • DGEMV
  • DGBMV
  • DSYMV
  • DSBMV
  • DSPMV
  • DTRMV
  • DTBMV
  • DTPMV
  • DTRSV
  • DTBSV
  • DTPSV
  • DGER
  • DSYR
  • DSPR
  • DSYR2
  • DSPR2

Complex Single

  • CGEMV
  • CGBMV
  • CHEMV
  • CHBMV
  • CHPMV
  • CTRMV
  • CTBMV
  • CTPMV
  • CTRSV
  • CTBSV
  • CTPSV
  • CGERU
  • CGERC
  • CHER
  • CHPR
  • CHER2
  • CHPR2

Complex Double

  • ZGEMV
  • ZGBMV
  • ZHEMV
  • ZHBMV
  • ZHPMV
  • ZTRMV
  • ZTBMV
  • ZTPMV
  • ZTRSV
  • ZTBSV
  • ZTPSV
  • ZGERU
  • ZGERC
  • ZHER
  • ZHPR
  • ZHER2
  • ZHPR2

Level 3

Single Precision

  • SGEMM
  • SSYMM
  • SSYRK
  • SSYR2K
  • STRMM
  • STRSM

Double Precision

  • DGEMM
  • DSYMM
  • DSYRK
  • DSYR2K
  • DTRMM
  • DTRSM

Complex Single

  • CGEMM
  • CSYMM
  • CHEMM
  • CSYRK
  • CHERK
  • CSYR2K
  • CHER2K
  • CTRMM
  • CTRSM

Complex Double

  • ZGEMM
  • ZSYMM
  • ZHEMM
  • ZSYRK
  • ZHERK
  • ZSYR2K
  • ZHER2K
  • ZTRMM
  • ZTRSM

Related Issues

None.

Questions

No.

Other

No.

Checklist

  • I have read and understood the Code of Conduct.
  • Searched for existing issues and pull requests.
  • The issue name begins with RFC:.

Hello, thanks @aman-095 for adding this tracker. So, I just wanted to let you know that I am working on ZSWAP just so we don't end up working on the same package :)

Apologies for not adding an issue for the same earlier, thanks!

Working on idamax and isamax level 1 routines. 

Working on csscal (L1)

@performant23 That one is already being worked on in #2104.

@performant23 Maybe try dznrm2?

Oh, hey! I think csscal is different right? In cscal we have a complex scalar and in csscal we have a real scalar if I remember correctly.

Ah, you're right. That one should be straightforward.

Hi @kgryte, we would need a generic interface to perform Givens rotation with vectors of other data types like integers, right? If so, I'd like to work on such an interface i.e. grot to get an idea of how generic g* interfaces are sampled from their equivalent d* implementations and also since we have implementations for those available for this package (JS implementation for drot is reviewed), this should be good to go!

Working on Level 1 routine drotm

@performant23 Yes, go for it. The one thing you need to do is ensure accessor array support. See gcopy and gswap for an idea.