-
Notifications
You must be signed in to change notification settings - Fork 0
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
shared library naming and versioning #5
Comments
Related: pkg-config. |
Note that a typical soname is ELF symbol versioning is a powerful tool, but maybe out of scope here because not all systems are ELF. |
Why? I don't think we have to do this. In particular, on MacOS (.dyld), Linux (.so), and Windows (.dll), these shared libraries need to have different names by necessity. As long as the MPI compiler wrapper links against an MPI ABI stub that has the platform symbols, which library then provides those symbols does not matter AFAICT. An implementation could expose its implementation into multiple .so's on Linux, requiring the user to LD_PRELOAD multiple libraries to get all the symbols, and that would be fine. I'd rather solve this problem after having an MPI ABI, if this actually turns out to be a problem in practice. |
We already have |
Applications that want to use If this turns out to be a common thing people want to do, and this turns to be a problem, we could always sit down again then and solve it; its kind of orthogonal to the rest of the MPI ABI problem.
I can imagine that an HPC Center might want to just configure all their compiler toolchains to just link some If we wanted to solve this problem it wouldn't just be "library names", but also different kind of library files on different platforms (dyld, so, dlls, etc.), link flags (like RPATH!), environment required to find the library, maybe talk about LD_PRELOAD support, etc. Right now, I at least don't have this problem because I don't have a stable MPI ABI that could cause it. I think that if this turn out to be a real problem in the future, we can always sit down again with more data about the problem and try to fix it, but I am a bit worried about spending too much time "today" on this. |
It takes a bit of hackery to link However, I think it'll be a confusing mess to have |
If the goal of the ABI work is to allow an application to be compiled against (say) MPICH and run against (say) Open MPI without relinking and without major pain (other than setting an LD_LIBRARY_PATH, potentially), then the name of the library absolutely needs to be standardized. Not standardizing the name of the ABI-compliant library means that users would have to figure out how to modify the library dependency table for the application in question, which will be beyond the target audience. We also should not prohibit libmpi.$SUFFIX, because practically speaking, existing MPIs need to also provide ABI compliance with their existing ABI for the foreseeable future for all the same reasons. |
Yeah, I think we say that libmpi_abi.so (or whatever it will be) must support the standard ABI, and that libmpi.so may exist but does not necessarily support the standard ABI. This seems to meet the backwards-compatibility requirements folks have. |
Not standardizing the name of the ABI-compliant library means that users would have to figure out how to modify the library dependency table for the application in question, which will be beyond the target audience.
If different MPI implementations of a platform (eg Linux x86_64) pick all different names for this, then yes. My hope would be that “platforms” would define this name.
For example, we could update the Linux x86_64 ABI to state that MPI implementations must pick the libmpi_abi.so name on that platform. And we can be very precise with the name because it’s platform specific.
We can’t do the same for closed platforms with closed ABI specs, but we could suggest in the standard a library name.
My fear with specifying it in the MPI spec is that linking and library naming and even the concept of what a library is and how that’s resolved is very platform specific, and that trying to specify this will significantly delay the value that this ABI adds.
If we suggest a name in the MPI spec, avoid talking about linking, but then go add it to the platform specs where possible (Linux abis of all targets, x86, x64, arm64, ppc64le, RISCv, etc.) then we might get 99% there without having to define what linking even means.
If this does not suffice and “roughe” MPI implementations violate platform conventions or don’t follow the suggestion we could go the next mile in the MPI standard later.
Do we think that MPI implementations will actively try to be incompatible here by implementing this feature in a way that makes it useless ?
…________________________________
From: Jeff Hammond ***@***.***>
Sent: Friday, January 13, 2023 3:24:14 AM
To: mpiwg-abi/abi-issues ***@***.***>
Cc: Gonzalo Brito ***@***.***>; Comment ***@***.***>
Subject: Re: [mpiwg-abi/abi-issues] shared library naming and versioning (Issue #5)
Yeah, I think we say that libmpi_abi.so (or whatever it will be) must support the standard ABI, and that libmpi.so may exist but does not necessarily support the standard ABI. This seems to meet the backwards-compatibility requirements folks have.
—
Reply to this email directly, view it on GitHub<#5 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/APQD343IUO47P23TSF5BYHLWSAHY5ANCNFSM6AAAAAASEJHOCE>.
You are receiving this because you commented.Message ID: ***@***.***>
-----------------------------------------------------------------------------------
NVIDIA GmbH
Wuerselen
Amtsgericht Aachen
HRB 8361
Managing Directors: Michael Ching, Donald Robertson, Rebecca Peters and Ludwig von Reiche
-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information. Any unauthorized review, use, disclosure or distribution
is prohibited. If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------
|
What platforms are going to define anything about MPI? No one outside of a small HPC community cares about MPI, so we need to define what we need. I agree that pulling in a definition of linking is problematic. But providing no guidance is also problematic, because it's not that anyone will go rouge, but more that everyone will be working in parallel and not talking to each other. If it's not written in the spec, then there's flexibility in implementation. So at some point, whether it is part of the standard or a more flexible definition outside of the standard document itself, we have to write these things down. |
What platforms are going to define anything about MPI?
The goal of the platform ABI is to allow applications on that platform to interoperate, so from that point of view, specifying the name of the MPI library itself there makes sense, in particular, given that these names are platform specific.
The Linux platform ABI - which is probably the one our HPC community cares the most about - defines all sorts of things on its ABI and I’ve added some things myself (it's just a PR away).
…________________________________
From: Brian Barrett ***@***.***>
Sent: Friday, January 13, 2023 7:21:29 AM
To: mpiwg-abi/abi-issues ***@***.***>
Cc: Gonzalo Brito ***@***.***>; Comment ***@***.***>
Subject: Re: [mpiwg-abi/abi-issues] shared library naming and versioning (Issue #5)
What platforms are going to define anything about MPI? No one outside of a small HPC community cares about MPI, so we need to define what we need.
I agree that pulling in a definition of linking is problematic. But providing no guidance is also problematic, because it's not that anyone will go rouge, but more that everyone will be working in parallel and not talking to each other. If it's not written in the spec, then there's flexibility in implementation. So at some point, whether it is part of the standard or a more flexible definition outside of the standard document itself, we have to write these things down.
—
Reply to this email directly, view it on GitHub<#5 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/APQD347UDQ2SQIXD3VSA4TTWSBDSTANCNFSM6AAAAAASEJHOCE>.
You are receiving this because you commented.Message ID: ***@***.***>
-----------------------------------------------------------------------------------
NVIDIA GmbH
Wuerselen
Amtsgericht Aachen
HRB 8361
Managing Directors: Michael Ching, Donald Robertson, Rebecca Peters and Ludwig von Reiche
-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information. Any unauthorized review, use, disclosure or distribution
is prohibited. If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------
|
My suggestion is to use
MPICH's plan is to produce both |
This plan is fine with me. The name of the SO is one of the smaller problems we have here 😄 |
Yes, agree also |
Problem
We have to standardize the name of the MPI shared library.
Proposal
libmpi.$SUFFIX.$VERS
is widely used already.We could also pick a new convention, such as
libmpi5.$SUFFIX.$VERS
, so as to allow implementations to support both their existing and the new ABI in different libraries.Changes to the Text
Impact on Implementations
Impact on Users
References and Pull Requests
The text was updated successfully, but these errors were encountered: