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
Build failure with Intel compiler (main branch of open mpi) #11133
Comments
Full error log:
|
Turn off the "picky" behavior or you'll drive yourself mad with that compiler. |
@rhc54 still no luck. I removed --enable-picky:
|
You might have to check and see what OMPI is adding itself and tell it to stop adding some of the flags. Intel has what I'd consider a bug in its compiler that causes it to not consider |
Thanks, @rhc54. But I am still puzzled about how to fix this. Any other thoughts? Doesn't this look like a code issue? I was able to compile open mpi with intel compiler a few months ago. But now it fails. |
FYI, I found another issue Snaipe/Criterion#76 with a similar failure. This issue was resolved by changing the code. |
if you're building pmix/prrte as submodules of ompi you're always building these with the --enable-picky option. Built pmix standalone and with --disable-picky and the the compiler "error" will vanish. Are you using intel classic or intel oneapi compilers? |
never mind didn't see you're full config line. |
I believe you just have to add
Not really - according to the standard, |
no pmix has a hardwired thing in its configury. It all flows from this logic:
this overrides the --disable-picky from the ompi config line at present. |
Ah - okay, that is easily fixed |
@hppritcha which file can I change to avoid this override? I prefer not to build my own openmpix. I don't want to deal with an extra separate build. |
Just adding |
@rhc54 @hppritcha Thanks everyone - looks like adding |
Just so you understand why I say this is a compiler bug, take this one instance:
Now look at the code: enum pmix_mca_base_register_flag_t {
PMIX_MCA_BASE_REGISTER_DEFAULT = 0,
/** Register all components (ignore selection MCA variables) */
PMIX_MCA_BASE_REGISTER_ALL = 1,
/** Do not register DSO components */
PMIX_MCA_BASE_REGISTER_STATIC_ONLY = 2
};
typedef enum pmix_mca_base_register_flag_t pmix_mca_base_register_flag_t; and where it is used: int pmix_mca_base_framework_register(struct pmix_mca_base_framework_t *framework,
pmix_mca_base_register_flag_t flags)
<space>
flags |= PMIX_MCA_BASE_REGISTER_STATIC_ONLY; So you can see that the "flags" variable and the value it is being set to both match in declared type. Yet the compiler complains anyway. Best we have been able to decipher is that the compiler gets confused by the setting of the enum value to a specific integer, and thus thinks that it is of type "int" - and therefore conflicts in type with the variable since Intel decided that "enum" doesn't default to base type "int". The only way we have found to "fix" it is either to remove all enum's from the code, or to remove all value settings from within enum definitions. The latter doesn't match the C standard, which is annoying but tolerable. The option we would likely pursue is the former, but that takes effort that is better used on other things. I'm sure we will eventually succumb and remove the enum's - it is just incredibly frustrating to have these compiler "quirks" force projects to waste effort, and to lose the debugger feature of showing you the enum name instead of some integer value. |
well I would not get too concerned here as the intel classic compilers, which @MamziB isusing are going into maintenance mode (i forgot the exact Intel terminiology) starting this coming January as I understand it. This problem may go away by using the Intel OneAPI compilers. |
1 similar comment
well I would not get too concerned here as the intel classic compilers, which @MamziB isusing are going into maintenance mode (i forgot the exact Intel terminiology) starting this coming January as I understand it. This problem may go away by using the Intel OneAPI compilers. |
@hppritcha I double-checked with our system administrator. Classic compilers are too old and we don’t use them. So all these compiler complaints are coming from oneAPI: |
Perhaps someone should report the bug to Intel? You can use the example I posted above - it's pretty basic and clearly wrong. |
No, those are the classic compilers. The oneAPI compiler names are |
@rhc54 Good point. I did not know this. I tried icx and icpx and now openmpi compiles. |
I am trying to build the latest main branch using the intel compiler. But it is throwing the following error:
Thoughts/comments? Configure option follows:
Adding the pmix commit that is getting used:
The text was updated successfully, but these errors were encountered: