-
-
Notifications
You must be signed in to change notification settings - Fork 3
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
planning ABI compatible builds #12
Comments
@j34ni can you test if an mpich built against 1.19 can run against 1.14 (or 1.15.2, if that's the oldest you find)? If that appears to work, then I think we can take the simplest strategy and only need to maintain 1.19 and 'latest'. But we'll need to get |
It does not seem to work with version 1.19.1 |
Should we push 1.18.0 to test it? |
Sure. What is the error with 1.19? |
It is as it it was already 1.7 |
Strange. I ran a local build of mpich linked against the recently published 1.19.1 and installed libfabric 1.14.0 and it still seems to work fine. Can you share more about how you are doing your tests? |
Can you test with this build:
it is build against the conda-forge build of libfabric 1.19.1 from #13, and seems to run fine when I replace libfabric 1.19 with libfabric 1.14 from here. Here's a sample Dockerfile that runs mpich built with libfabric 1.19.1 with libfabric 1.14.0 at runtime: https://gist.github.com/minrk/22707269668cdb7cc8933fc6d57e1d44 |
almost ready for this. If mpich doesn't benefit from the newer ABI features, the simplest version of this is to keep building mpich with the oldest supported version (e.g. 1.19), which means builds will be compatible with >=1.14. We can start adding a matrix if mpich will benefit from new features if built against newer libfabric. |
@j34ni is leading some work on building multiple ABI versions of libfabric so that host builds can be dropped-in (like we have for
external
builds of mpich/openmpi, but at the libfabric level). Since HPC systems often hardware-optimized, but often outdated libfabric.To do this, I think we only need to build at most one version for each ABI version.
ABI version table:
Note that libfabric 2 has breaking API changes, but reports to be a minor ABI revision. That means that e.g. mpich built against any past version of libfabric should still be runtime-compatible with libfabric 2.0. This should be testable easily enough by building libfabric 2 and testing it with existing builds of mpich.
Available strategies:
We need to:
libfabric-abi
metapackage with the ABI version because semver pinning of package versions doesn't accurately represent compatibility and make sure we get the right compatibility between libfabric versions (it never does for libraries, but it is close enough often enough that it's what we usually use).external
variants to allow empty installs to reference libfabric from the host, like we do for mpich/openmpi alreadyI suggest we start with building only the latest version and use 1.19 for ABI 1.6 (should support running back to libfabric 1.14)
If we skip the libfabric-abi package, we can use API versioning, but we would need to use stricter pinnings than are technically needed, since we can't assume 2.0 or 3.0 won't break the ABI until they are released.
The text was updated successfully, but these errors were encountered: