OpenMPI 1.4.3 and pgf90 11.7

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:
Symbol__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?

Many thanks,
Andrew Morris

Hi Andrew,

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,
Mat

Hi Mat,

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.

Best wishes,
Andrew.

Andrew,

You may only need to compile and link with

-fPIC

rather than -mcmodel=medium, so the
$PGI/linux86-64/11.7/libso
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.

dave

Andrew,

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.

regards,
dave