flame / blis

BLAS-like Library Instantiation Software Framework

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

"Missing" symbols relative to OpenBLAS

jd-foster opened this issue · comments

A comparison of BLIS symbols compared to a BLAS API I'm looking into that uses OpenBLAS by default turned up three 'types' of functions that seem to have no correspondent in BLIS AFAIK. I would like to understand if there indeed are like-for-like equivalents?

The functions in question are:
crot, csymv, csyr
zrot, zsymv, zsyr

These aren't included in BLIS because they aren't included in Netlib BLAS, which is unfortunately one of a number of oversights in how the original BLAS interface was defined. Interfaces for the latter two could easily be added since they can be accomplished natively using the BLIS interface. The first one would be slightly more work in [sd]rot use a f2c'ed implementation from Netlib which would have to be adapted by hand or rewritten.

FYI I think these ARE included in Netlib LAPACK though...

@fgvanzee any interest in doing a PR for [cz]symv and [cz]syr? Should be very straightforward.

@fgvanzee any interest in doing a PR for [cz]symv and [cz]syr? Should be very straightforward.

Sure, I'll take a look at it.

I'm looking at crot.f and zrot.f too. It looks doable.

@jd-foster Take a look at #778. I'm pretty confident that [cz]syr_() and [cz]symv_() will work as expected. I'm somewhat less confident about [cz]rot_(), but if those rotation functions are broken they shouldn't be more than one or two revisions from working.

Thank you, this is great!

@jd-foster If you have a way to test [cz]rot_(), I'd sincerely appreciate the feedback! 😄

I wouldn't be sure how to do it within BLIS, but my goal is to ultimately test it from Julia's BLAS interface:

https://github.com/JuliaLang/julia/blob/6bca048d6b0781ab821c7eb656fcc68400dfbf6e/stdlib/LinearAlgebra/test/blas.jl#L97

I wouldn't be sure how to do it within BLIS, but my goal is to ultimately test it from Julia's BLAS interface:

https://github.com/JuliaLang/julia/blob/6bca048d6b0781ab821c7eb656fcc68400dfbf6e/stdlib/LinearAlgebra/test/blas.jl#L97

Testing it for us via Julia's BLAS API would be super-helpful to us!

I looked into hacking it into the existing BLAS test drivers that are distributed as part of BLIS. It's ugly enough that I'm not going to touch it. 😂

Excited to report that the PR version passes all the Julia BLAS tests now, especially the variants of XXrot.

That's wonderful news, @jd-foster! Thank you for your testing efforts and your inquiry/suggestion! ❤️

Unless you have any more concerns or comments, I'll merge #778 shortly.

Thank you, happy to see it merged! Would you consider tagging a new minor/patch release soon so we can bump the build tree version on the Julia side?

Certainly, I'll start the discussion in our Discord server.

@fgvanzee I saw your comment on #792 and I'm looking forward to the new release. I've just compiled and tested the current master branch on the Julia tooling and BLAS test-suite (gemmt and geru have been added as Julia BLAS library functions in the last 6 months), and everything passed smoothly. Cheers.

@jd-foster Thanks James! I appreciate you taking the time to test locally.