-
Notifications
You must be signed in to change notification settings - Fork 900
Remove hwloc framework. #3029
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
Remove hwloc framework. #3029
Conversation
config/opal_check_hwloc.m4
Outdated
AC_DEFINE_UNQUOTED(hwloc_external_openfabrics_header, | ||
["$opal_hwloc_openfabrics_include"], | ||
[Location of external hwloc OpenFabrics header]) | ||
$1], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i do not think there are $1
nor $2
any more.
since hwloc is mandatory, should we simply abort when it is not found ?
last but not least, travis config should be updated to install hwloc packages (both linux and osx) and ibm, lanl and mellanox should be requested to install hwloc packages.
@artpol84 @jjhursey @hppritcha Can you please add an hwloc rpm to your Jenkins tests? |
@rhc54 how does it works now? Would download and installation of the recent hwloc + providing "--with-hwloc" to OMPI configuration be sufficient? |
We find hwloc by default so long as it is in a standard system location - if you install from rpm, that should be fine. There is no issue with external hwloc and the other components as we aren't setting any paths to the system directories. |
…oc.m4 and dedicate it to finding external hwloc installation. Update all files that access hwloc to the new location Have hwloc configure fail if support is not found or mistakenly directed to be omitted. Return an error if someone attempts to dss.copy an hwloc topology tree so we can still support OS versions that are at v1.5 by default Silence common symbol warning Fix typos Signed-off-by: Ralph Castain <[email protected]>
Signed-off-by: Gilles Gouaillardet <[email protected]>
HWLOC_OBJ_OSDEV_COPROC is not defined in hwloc 1.5, so do not try to detect coprocessors unless this symbol/macro is defined. Signed-off-by: Gilles Gouaillardet <[email protected]>
I went to try to install my OS distro's package for the "devel" version of hwloc today (i.e., that includes the hwloc headers). I ended up doing a bit of a survey of hwloc availability in several Linux distros:
This makes me a bit concerned about unbundling hwloc from Open MPI. I.e., it feels like hwloc has not yet taken over the world / it is not a safe assumption that a user can easily install hwloc from their OS / distro. |
It's easy enough to download and install the tarball, so the lack of a posted rpm doesn't seem like a blocker. We can/should contact the ones lacking it and push them to please add it - I doubt we'd get much resistance. |
I agree that we can download / install hwloc easily. But I'm concerned that we're raising the bar for the average user to install Open MPI properly for the distros that are out in the wild that do not have it. I agree that we can probably push hwloc on the distros, but that will take time. |
Well, come up with an alternative solution that resolves all the problems of external/internal packages and that doesn't distort the entire code base. I can't, and I haven't seen one yet. 😄 |
All I'm saying is: a big part of the reason for bundling hwloc was because it hadn't taken over the world yet. It seems like that is still true. |
I hear you - and all I'm saying is that bundling creates its own problems that are catching up to us. We haven't yet found a way out of those problems, other than to unbundle - which is what the distros have been begging us to do for years. So maybe it's time to bite the bullet and do it, pushing others to package the bundles we need. |
@jsquyres in ubuntu 14.04.3LTS, the package is called |
@jsquyres the |
@jsquyres I did come up with a possible alternative approach, but I very much doubt anyone (especially the distros) will like it. We could change the build system so we copy (or symlink) any external hwloc headers and libs to the prefix location, and then build/link against them from there. This would remove the problem of pulling in unintended versions for libevent and pmix (note: we could do the same for them). However, I'm not sure how sys admins would feel about us doing this. 🤷♂️ |
one of the issue was there were two
that might not be the most elegant approach, but
any thoughts ? |
:bot:mellanox:retest |
My preference would be to remove embedded hwloc and always use an external version. If that is unacceptable, I suspect the simplest solution is to leave things as they are, but change the configure logic. If the internal version is selected, then do not set the CPPFLAGS or LDFLAGS to point to the internal version's location. Instead, we would always create an If our internal version is selected, then we aim the build product at We then do the same thing for PMIx, and for libevent if we continue to use it. This eliminates the confusion caused by wanting an external version of one and an internal version of another. It also shouldn't be all that much disruption to the existing code base. |
@ggouaillardet Where are these packages available? I could not find them on the distribution DVD / ISOs. Can you supply a link to them? @rhc54 I'm not sure I grok your proposal about symlinks and whatnot. Wouldn't we still have to set (this might be easier to discuss on the call in ~30 mins...?). |
I'm going to surrender and withdraw this suggestion. It's clear there is going to be concern over removing the embedded code. I think we are going to have to do so eventually, but there is no driving force to make it happen now rather than later. |
@jsquyres these packages might not be on the DVD
|
fwiw, i will push a new PR tomorrow, that allows hwloc v1.5 |
Sweet -- thanks @ggouaillardet. That was on my to-do list yesterday, but I didn't get to it -- much appreciated if you could. |
well just an FYI I spent the last couple of hours getting hwloc installed on all the LANL jenkins slaves and plan to use the --with-hwloc going forward with all LANL jenkins slaves. hwloc 1.8 will be used. |
let me know if i should update travis config to use the external hwloc too |
Certainly not a bad idea to have some more testing with |
Shift hwloc configure logic to opal_check_hwloc.m4 and dedicate it to finding external hwloc installation. Update all files that access hwloc to the new location
Signed-off-by: Ralph Castain [email protected]