Override impi defaults for mpicc etc.#493
Override impi defaults for mpicc etc.#493boegel merged 20 commits intoeasybuilders:developfrom ocaisa:change_impi_default_compiler
Conversation
installation. Defaults are to wrap the system compilers with mpicc, mpicxx, mpif90, ... The switch overrides this behaviour by setting some environment varaibles. These environment varaibles also affect the behaviour of mpigcc and mpigxx so I've added aliases to give back the expected behaviour that they wrap the GNU compilers.
|
Automatic reply from Jenkins: Can I test this? |
compiler -> compilers
|
Jenkins: ok to test |
There was a problem hiding this comment.
and maybe change to # $FC isn't defined by EasyBuild framework, so use $F90 instead
|
Test FAILed. |
There was a problem hiding this comment.
how about using a for-loop here:
for var in ['CC', 'CXX', 'F77', 'F90']:
txt += self.moduleGenerator.set_environment('I_MPI_%s' % var, os.getenv[var])|
Test FAILed. |
|
Test FAILed. |
Updated based on comments
|
Test FAILed. |
|
No mpigfortran with Intel MPI so this alias has not been set |
|
Test PASSed. |
There was a problem hiding this comment.
this should use set_mpi_wrappers_compiler now...
|
Test PASSed. |
|
Test PASSed. |
|
@geimer: any thoughts on this before we merge it in? Looks good to me: optional, disabled by default, ... |
|
Test PASSed. |
|
@boegel: The approach looks OK to me. |
|
This is working as intended now for |
|
However, there's a problem for
|
There was a problem hiding this comment.
@ocaisa: shouldn't we apply the same trick to mpiicc, mpiicpc, etc.? What if Intel MPI is installed on top of GCC? Setting $I_MPI_CC to gcc would cause mpiicc to produce unexpected behaviour.
If we fix it for the GCC-specific wrappers, we should also do so for the Intel specific wrappers?
There was a problem hiding this comment.
@boegel: IMHO, modifying the normal behaviour of mpiicc sounds kinda overzealous.
Note that this issue relates nicely to case #100 and it is in effect a tunable implementation of the style of the very last proposition there; the bigger picture here is, that sites need control to configure those variables, in a centralized way.
btw.
The very best group of people to ask about desired behaviour of such settings are those involved with benchmarking (thinking of Jube now, but not exclusively) and mpi testing, across multiple architectures...
So, I'd suggest to invite, via an RFC email, experts on or off the mailing list to validate the prototyped solution.
|
and one more remark: using aliases within modulefiles is a tricky proposition, because they do not get inherited properly on children shells (I don't recall if this is mainly a bash itch or affects more). I used to use them in the past until I got bitten a few times and then learned to find other workarounds (such as adding in the $PATH a binary that actually does the wrapping). |
check compiler env vars before using them
|
Test PASSed. |
|
Test PASSed. |
There was a problem hiding this comment.
add a separate parameter for defining aliases for the 'GCC-specific' wrappers, e.g. set_mpi_wrapper_aliases_gcc
Added individual triggers for the environment variables and the aliases, as well as a catch-all for everything
|
Test PASSed. |
Added a debug error statement
|
Test PASSed. |
minor style fixes
|
Test PASSed. |
Typos
|
Test PASSed. |
|
Visual check: PASSed :) |
|
Test PASSed. |
|
Going in, thanks a lot for tackling this @ocaisa, and for being so patient with the revisions! |
Override impi defaults for mpicc etc.
Added a switch so that one can override the defaults of the impi installation. Defaults are to wrap the system compilers with mpicc, mpicxx, mpif90...
The switch overrides this behaviour by setting environment variables.
These environment variables also affect the behaviour of mpigcc and mpigxx so I've added aliases to give back the expected behaviour that they wrap the GNU compilers.