I’ve compiled a version of OpenMPI 1.4.3 (and also 1.5.3) using pgf90 11.7 using: ./configure CC=pgcc CXX=pgcpp F77=pgf77 FC=pgf90.
The library compiles cleanly and the wrappers allow me to compile the CASTEP electronic structure code in parallel. The CASTEP code seems to run ok, but writes a long list of errors to std error like:
__fvs_exp_vex' causes overflow in R_X86_64_PC32 relocation Symbol __fvs_sin_vex’ causes overflow in R_X86_64_PC32 relocation
Symbol `__fvd_mod_fma4’ causes overflow in R_X86_64_PC32 relocation
I used the same procedure with pgf90 10.4 to make OpenMPI 1.4.3 and build a parallel CASTEP binary without those errors being produced. Does anyone have any suggestions as to what I’m doing wrong with version 11.7?
This is a known issue that was recently introduced when we added support for AVX processors. The problem will be fixed in our upcoming 11.8 release due out later this week.
Thanks for this. A workaround seemed to be to compile my parallel codes using “-mcmodel=medium”, it wasn’t clear to me why this was necessary.
I’ll await version 11.8.
You may only need to compile and link with
rather than -mcmodel=medium, so the
directory is used for runtime libs instead of the
$PGI/linux86-64/11.7/lib directory. Those libs
will link with other ones in shared libs, without the
R_X86_64_PC32 error messages.
The problem is that codes compiled without -fPIC
link with 32-bit offset based on the references, while
codes compiled -fPIC (and -mcmodel=medium) have
a 64-bit offset capable of linking dynamically, and are compatible
with other objects compiled that way.
Engineering reports that the TPR associated with this problem 18063,
works now. We should point out most ‘configure’ scripts we encounter need to define
FC and F77 as pgfortran, rather than pgf77.