[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.