You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We have HWLOC_API_VERSION and get_api_version() for checking the API version at build-time and runtime. This version increases with API changes, but it's often be the same for 2.x and 2.x.1 (it's even the same between 2.5 and 2.7.2).
We also have HWLOC_VERSION for checking the version of the lib at build-time. This version increases with each new release, but there's no way to check it at runtime afaik. For instance, how to check whether we're running on 2.7.1 or 2.7.2 to avoid the LevelZero backend crash on PVC in 2.7.1 (open-mpi/ompi#11246) ?
We also have a ABI soname which gets updated with every release but I don't know how to use that in the code at runtime.
Do we need a runtime function to check the lib version instead of the API ? Or should we increase the API version in every release and rely on get_version() at runtime?
Afaik, get_api_version() is mostly used to compare the major version number (avoid mixing hwloc 1 and 2). I am not sure anybody cares about the API lower bits at runtime. The new get_version() would be enough for this.
It does indeed help to have a function method for determining the actual library version (and not just the ABI version) for the reasons encountered in the OMPI issue you referenced. It isn't that uncommon for systems to have different software revision levels on backend vs frontend nodes, and getting the library version in those cases can be a valuable tool.
We have HWLOC_API_VERSION and get_api_version() for checking the API version at build-time and runtime. This version increases with API changes, but it's often be the same for 2.x and 2.x.1 (it's even the same between 2.5 and 2.7.2).
We also have HWLOC_VERSION for checking the version of the lib at build-time. This version increases with each new release, but there's no way to check it at runtime afaik. For instance, how to check whether we're running on 2.7.1 or 2.7.2 to avoid the LevelZero backend crash on PVC in 2.7.1 (open-mpi/ompi#11246) ?
We also have a ABI soname which gets updated with every release but I don't know how to use that in the code at runtime.
Do we need a runtime function to check the lib version instead of the API ? Or should we increase the API version in every release and rely on get_version() at runtime?
Afaik, get_api_version() is mostly used to compare the major version number (avoid mixing hwloc 1 and 2). I am not sure anybody cares about the API lower bits at runtime. The new get_version() would be enough for this.
CC'ing @jsquyres @rhc54 and @ggouaillardet since they were involved in some discussion about this in the past.
The text was updated successfully, but these errors were encountered: