Recently I installed Parallel Studio XE 2019.1.053 on x64 Linux, and I want to compile a Fortran90 program with MPI. I get the following error:
>> ifort -O3 -ip -ipo -c parallel.f90 parallel.f90(7): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [MPI] use mpi ------^
I also tried to call mpiifort, but this command doesn't seem to exist. I have sourced psxevars.sh after installing Parallel Studio as instructed.
What am I doing wrong?
My guess is that you installed some edition of PSXE other than the Cluster Edition, as that is the only one that includes Intel MPI.
Correct Steve, I've got the Professional edition under an academic license. I was told by someone on Stackoverflow that I have to manually compile OpenMPI with the Intel compilers to work around this issue. Perhaps you could confirm this diagnosis?
I only played very briefly with OpenMPI a while ago, but I believe there are precompiled distributions of it. It seems unlikely you'd need to rebuild it, not to mention that it's C code. At most you'd need to compile the Fortran source for the MPI module. There are several MPI implementations you can use, OpenMPI is one of them.
In theory, as Steve says, only the Fortran library of OpenMPI (and mpifort wrapper) would need recompilation against ifort. I haven't seen anyone do this, as it would require finding the source of the exact pre-built binary version of OpenMPI, removing the gfortran components of the binary, and possibly incurring a complete rebuild anyway. With most linux distributions fully supported and tested by Intel with ifort, the supplied OpenMPI is probably out of date and doesn't conform with the desirable system analogous to ifort of building MPI with a version specific path to enable setting environment to that MPI or another.
I found that compiling and switching between two versions of OpenMPI works like a charm, as suggested on Stackoverflow. The Modules package allows me to easily switch between "Intel" or "GNU" environments, so that mpif90 always points to the right binary.