-
Notifications
You must be signed in to change notification settings - Fork 159
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
Add configuration stanza for the Intel oneAPI compilers with generic MPI wrappers #250
Conversation
The logic in the compile script to print compiler version information now recognizes the Intel oneAPI Fortran compiler, ifx.
The MPI wrappers in the new stanza are generic MPI wrappers, mpifort and mpicc, rather than those for the Intel MPI library.
@islas One additional change that could be included in this PR would rename the existing Intel stanzas from |
Agreed, especially as that is the nomenclature that Intel uses. I saw the discussion regarding |
…aults Throughout the arch/configure.defaults file, this commit changes occurrences of "Intel compiler" to "Intel Classic compilers" to distinguish the use of the "Classic" fort/icc compilers from the use of ifx/icx in the "Intel oneAPI compilers" stanza.
@islas I've just pushed a commit to change "Intel compiler" to "Intel Classic compilers" throughout the I suppose we could switch to using |
Right, I think as long as the MPI implementation you want is first in your path it should work, assuming that implementation supplies an |
The 'mpif90' wrapper seems to be more widely available than 'mpifort'.
Ok, I've just pushed another commit to switch from |
I am unfortunately seeing the same behavior @HathewayWill described where without specifying the serial compiler you run the risk of getting something else:
My path specifically puts the Intel compiler before the system gfortran... |
The WRF stanza does have those args used, for better or worse. |
I don't think the @islas Out of curiosity, does the following subroutine compile with both subroutine nvsend()
use mpi_f08
real, dimension(100) :: buf
integer :: count, dest, tag
type(MPI_Datatype) :: datatype
type(MPI_Comm) :: comm
type(MPI_Request) :: request
integer :: ierror
call MPI_Isend(buf, count, datatype, dest, tag, comm, request, ierror)
end subroutine nvsend (Specifically, you should not load a different set of modules between attempts.) My suspicion is that both won't work, as the |
What can I test for you on my side? @mgduda |
@mgduda Suspicion confirmed:
So would the onus fall on the user / sys admin to ensure a compatible wrapper is supplied? Also, while it did do what I wanted and expected (use the compiler I said to), the same cannot be said for OpenMPI:
|
Not sure if this is helpful to you but I tested the compilers after enabling the intel one llvm environment workhorse@workhorse-MS-7D91:~/Desktop$ source /opt/intel/oneapi/setvars.sh
|
@islas I think your test results do illustrate that (1) I would say that it's the responsibility of the sys admin or user to ensure that the available serial Fortran compiler agrees with the |
Sounds good, I'll make a note to change the WRF stanza in the next update to follow suit. |
I just got this from the Intel developers. @islas @weiwangncar @mgduda @kkeene44 Looks like the old wrappers are going away |
@HathewayWill Thanks for the info. On the WPS side, don't think this will affect us, as we don't currently have any configuration stanzas that use the Intel MPI wrappers ( |
I do see this in the configure.defaults in the WRF. Not sure if it's in the WPS ones. @mgduda
|
This PR adds a new configuration stanza for the Intel oneAPI compilers, with compiler wrapper names appropriate for most MPI implementations.
Also included in this PR is an update to the logic in the
configure
script to print compiler version information for theifx
compiler.