-
Notifications
You must be signed in to change notification settings - Fork 637
SCALAPACK32: New version 2.2.2 #12231
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
SCALAPACK32: New version 2.2.2 #12231
Conversation
@eschnett What do you think of using We need to update MUMPS.jl and PETsc.jl to load a BLAS / LAPACK but that almost the only dependent packages. |
Sounds good (I don't know what that entails). I mostly wanted to clean up how MPI is handled. Do you want to make the respective changes? |
@amontoison Are you still planning to introduce libblastrampoline? |
Yes but we need to load a LP64 BLAS / LAPACK for high-level packages like MUMPS.jl / PETSc.jl in this case and I would like to do that we merge the PR such that we don't break them. |
Since this is an incompatible change I recommend changing the major version number of this package (
This uses major version numbers in the way they are intended by semver. There is no juggling to make sure everything happens simultaneously enough, and there is no chance of accidentally breaking anything. |
@eschnett If we change the major version number of |
@eschnett I opened a PR in the general registry to update the needed compat entry on As explained in CONTRIBUTING.md, the next step is to update the compat entry on Then it will be safe to merge this PR. |
@amontoison I see that you do not want to introduce a new major version for this incompatible change. I have been there in the past, with e.g. HDF5 or other packages making incompatible changes without increasing the major version number. This leads to a complicated mess, and any mistake will lead to segfaults at end users and will be difficult to track down. There is a long list of problematic packages here, and if we were to make an incompatible change here, then we would need to add The upper compat bound for all packages using We should also update the source of these packages ( |
The issue with a bump of the major version of the JLL is that it doesn't fix any of the compatibility issue because we never set any compat entry on
I agree with that for The issue is with
It is what I explained in my previous message but we need a merge in the general registry first. |
In general, we haven't made JLLs that need LP32 BLAS link against LBT because there is no guarantee there is a backing library loaded, and so the JLL on its own would essentially be broken when it is installed. While users could manually add OpenBLAS32 (or their favorite backend) to LBT, they might not realize they need to do that. IMO, before we link LP64 consumer libraries against LBT, we should build a way for the JLLs to selectively load OpenBLAS32 at runtime. We could make it more generic actually and have a flag for |
There's actually some, like ipopt, but consumer packages need to do something like https://github.com/jump-dev/Ipopt.jl/blob/480c9ecb0755b435c60aa5a9381a9e8e0b219c70/src/Ipopt.jl#L14-L20, otherwise everything goes boom. |
Yes, although I think the "boom" factor with ipopt is lower than with something like SCALAPACK32, because ipopt generally has fewer consumers but these base libraries could be used by many (already there appear to be 3 JLLs that reference this), and so then any consumer of those JLLs would need to have the loading logic in it - which just becomes a very large "boom" surface. |
It would be easiest if openblas could compile LP64 shims that just forward to ILP64 so that we can have both by default in Julia. Then LBT can have forward for both as well and a lot of stuff would simplify. |
That doesn't address the problem that we still need to have an LP64 openblas around. |
My mental model was if openblas has both lp64 and ilp64, then we are effectively shipping both BLAS. |
@imciner2 I disagree that we generally don't compile LP64 consumer libraries against LBT.
|
I believe the main issue is that LBT forwards have to be set up, and there isn't a convenient way to do that right now. For example, in Sundials.jl I just linked against OpenBLAS32_jll. If I link against LBT, I still need to make sure that an LP64 BLAS is available, then do the lbt forwards - might as well link to openblas32 directly. My latest thought thus was to include LP64 APIs in openblas that forward to the ILP64 ones - there by allowing us to ship a fully configured LBT+openblas with Julia. |
What is your source?? Ipopt_jll is used by WAY more people and packages than SCALAPACK32_jll. SCALAPACK is quite specific and not needed very often. (Only three JLL need it). To the best of my knowledge, I only know MUMPS and PETSc. I discovered the third one here. Prove me that I am wrong @imciner2 but I strongly disagree with your last two points:
|
@amontoison Would you recommend Sundials follow the same route? Link to LBT for LP64, depend on openblas32_jll and then set up the lbt_forward in the init? Using LBT while simultaneously depending on OpenBLAS32 and for every package then to set up the forward feels a little awkward (but naturally necessary currently). |
…0191) We plan to compile the next release of `SCALAPACK32_jll` with `libblastrampoline` (LBT) and because it requires an LP64 BLAS / LAPACK like `OpenBLAS32_jll` to be loaded manually, we want to ensure that we don't break current users of `MUMPS`, `QuantumEspresso` and `PETSc`. Related PR in Yggsrasil: JuliaPackaging/Yggdrasil#12231
Good to merge? |
Not yet, I need to update the compat entries on JLL of |
@ViralBShah Yes, I think it is a good idea! |
Ok thanks. I will do that when the next sundials release is out. |
No description provided.