Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #1419 +/- ##
=======================================
Coverage 69.36% 69.36%
=======================================
Files 6122 6122
Lines 486711 486711
Branches 23268 23268
=======================================
Hits 337584 337584
Misses 148689 148689
Partials 438 438
Continue to review full report in Codecov by Harness.
|
25ade75 to
d56328d
Compare
|
Thanks for the CI run, last go failed because I hadn't made it install |
I'm not sure if this will work. My guess is that it will pick only one of the libraries . Also does libblas64-dev export the extended API symbols or just the normal symbols with 64bit integers? I think the easiest would be to just disable the extended API. |
|
That may indeed turn out to be needed. Thank you for initiating the CI, I'll wait and see. If I understand right, that does raise the question of how to interface with optimised BLAS with 64-bit integers; may need additional CMake args like |
Well, I think the idea of the extended API was to have both versions (32-bit and 64-bit integers) in the same library. So ideally, MKL does exactly that. Which means it doesn't matter against which version we link, we always get both APIs which is what we need. |
d56328d to
0d833a3
Compare
|
Providing both 32 and 64 with the same library is definitely nice. But if Debian splits them, that suggests to me that LAPACK needs to handle that. What do you think? It seems LAPACK indeed can't handle the BLASes being split, as it's just failed again. I've scope-reduced this by turning off |
|
Well, the entire idea (and initial implementation) of the extended API came from the MKL team IIRC , so small wonder it does this. OpenBLAS optionally does the "64" suffixing, but only in the shared library, and its build system hasn't been updated yet to support combined builds |
I mean they have to be split, since the symbol names are the same. The Debian libraries Regarding |
I was forming a plan to handle that split, and
Quite right! I'd looked at their My thinking is the Debian packaging should switch to using CMake (I now know how to do that pretty painlessly, having figured it out with FlexiBLAS), and their 64-bit libraries should start having the suffixed names too. That would allow applications that needed to have both 32- and 64-bit versions available to work, so long as they put the 32-bit version first in the link line so the 32-bit version of un-suffixed stuff got picked up. Thoughts? By the way, as I write this, those CI jobs have been "queued" for 5 hours 41 mins (thanks whoever started them, that's awesome). Might be time to cancel and restart them? EDIT: Actually it looks like it's just because |
Nice, thanks for the link. We should probably coordinate to do the 3.13 release (#1210) when they are ready to switch to CMake.
I don't understand exactly why one would need both libraries on the link line? Both libraries will contain both the standard and extended APIs, the only difference is that in the libblas64 library the standard API also uses 64bit integers. Basically, libblas64 will become obsolete and should only used for older code that expects 64bit integers in the standard API. |
|
We should expect test failures when building against an optimized BLAS, so we should disable the fatal errors in the pipeline. Three options:
|
It makes sense what you're saying about a "normal" optimised BLAS. My approach here is to definitely run tests, and they shouldn't fail because the "optimised" BLAS is just the Debian-packaged reference one, which even if it's behind, shouldn't fail. My approach very much includes failing, so the additional config wouldn't be used here. Without having fully checked, my belief is the packaged BLAS "should" only fail because of Edit: I see what you mean about the "test summary" (and it's not |
My feeling is there's no reason for them to wait; I believe they "should" be using the CMake build already, including because it's cleaner and has the extended API as an option.
The way I see it, the current state of affairs, which they won't accept breaking, but we can surely add to (and by the way, I think you might be right that
The proposed new scheme:
The reason I mention having both is just that they might not wish to add that second line in the nominally 32-bit library. I shall email and ask (and loop you in)! |
Not sure yet what causes the errors, but I'll investigate. The problem is that if reference BLAS had fixes between the last release and the current master, the tests might fail with the current test suite. Also, the reference BLAS would probably be compiled with a different compiler version, which can also have an effect on the results (different vectorization, contractions, etc.), which might change the LAPACK results enough that some tests reach the error threshold. I think the most important thing this CI job should check is whether LAPACK builds with an optimized BLAS. We could even add jobs that build with MKL, AOCL, OpenBLAS, etc. |
0d833a3 to
d5ea3f3
Compare
|
I think you're right on the scope: it's adding value just to check for building against other BLASes; the One approach that might work for the testing failure might be a CMake parameter to force a particular precision, which could be made a bit less sensitive for this test. This also raises the issue I brought up in #1420; |
Description
There is currently a CI job to build LAPACKE + CBLAS with optimised BLAS and LAPACK, but not LAPACK with optimised BLAS. This is intended to exercise the upcoming
SET_XERBLA(#1407), which will need to function when the BLAS it's built against doesn't yet haveSET_BLAS_XERBLA.Checklist