Jeff,
the output of "mpicc --showme" is attached below.

> Do you really need to add "-lbat -llsf" to the command line to make it work?
As both 1.6.5 and 1.8.3 versions are build for work with Platform LSF, yes, we need libbat and liblsf. The 1.6.5 version links this library explicitly in the link line. The 1.8.3 does not.



### 1.6.5:
icc -I/opt/MPI/openmpi-1.6.5/linux/intel/include/openmpi/opal/mca/hwloc/hwloc132/hwloc/include -I/opt/MPI/openmpi-1.6.5/linux/intel/include -I/opt/MPI/openmpi-1.6.5/linux/intel/include/openmpi -fexceptions -pthread -L/opt/lsf/9.1/linux2.6-glibc2.3-x86_64/lib -L/opt/MPI/openmpi-1.6.5/linux/intel/lib -lmpi -losmcomp -lrdmacm -libverbs -lrt -lnsl -lutil -lpsm_infinipath -lbat -llsf -ldl -lm -lnuma -lrt -lnsl -lutil

### 1.8.3:
icc -I/opt/MPI/openmpi-1.8.3/linux/intel/include/openmpi/opal/mca/hwloc/hwloc172/hwloc/include -I/opt/MPI/openmpi-1.8.3/linux/intel/include/openmpi/opal/mca/event/libevent2021/libevent -I/opt/MPI/openmpi-1.8.3/linux/intel/include/openmpi/opal/mca/event/libevent2021/libevent/include -I/opt/MPI/openmpi-1.8.3/linux/intel/include -I/opt/MPI/openmpi-1.8.3/linux/intel/include/openmpi -fexceptions -pthread -L/opt/lsf/9.1/linux2.6-glibc2.3-x86_64/lib -Wl,-rpath -Wl,/opt/lsf/9.1/linux2.6-glibc2.3-x86_64/lib -Wl,-rpath -Wl,/opt/MPI/openmpi-1.8.3/linux/intel/lib -Wl,--enable-new-dtags -L/opt/MPI/openmpi-1.8.3/linux/intel/lib -lmpi


On 10/18/14 01:56, Jeff Squyres (jsquyres) wrote:
I think the LSF part of this may be a red herring.  Do you really need to add "-lbat 
-llsf" to the command line to make it work?

The error message *sounds* like y.tab.o was compiled differently than 
others...?  It's hard to know without seeing the output of mpicc --showme.


On Oct 17, 2014, at 7:51 AM, Ralph Castain <r...@open-mpi.org> wrote:

Forwarding this for Paul until his email address gets updated on the User list:

Begin forwarded message:

Date: October 17, 2014 at 6:35:31 AM PDT
From: Paul Kapinos <kapi...@itc.rwth-aachen.de>
To: Open MPI Users <us...@open-mpi.org>
Cc: "Kapinos, Paul" <kapi...@itc.rwth-aachen.de>, <fri...@cats.rwth-aachen.de>
Subject: Open MPI 1.8: link problem when Fortran+C+Platform LSF

Dear Open MPI developer,

we have both Open MPI 1.6(.5) and 1.8(.3) in our cluster, configured to be used 
with Platform LSF.

One of our users run into an issue when trying to link his code (combination of 
lex/C and Fortran) with v.1.8, whereby with OpenMPI/1.6er the code can be 
linked OK.

$ make
mpif90 -c main.f90
yacc -d example4.y
mpicc -c y.tab.c
mpicc -c mymain.c
lex example4.l
mpicc -c lex.yy.c
mpif90 -o example main.o y.tab.o mymain.o lex.yy.o
ld: y.tab.o(.text+0xd9): unresolvable R_X86_64_PC32 relocation against symbol 
`yylval'
ld: y.tab.o(.text+0x16f): unresolvable R_X86_64_PC32 relocation against symbol 
`yyval'
.......

looking into "mpif90 --show-me" let us see that the link line and possibly the 
philosophy behind it has been changed, there is also a note on it:

# Note that per https://svn.open-mpi.org/trac/ompi/ticket/3422, we
# intentionally only link in the MPI libraries (ORTE, OPAL, etc. are
# pulled in implicitly) because we intend MPI applications to only use
# the MPI API.




Well, by now we know two workarounds:
a) add "-lbat -llsf" to the link line
b) add " -Wl,--as-needed" to the link line

What would be better? Maybe one of this should be added to linker_flags=..." in 
the .../share/openmpi/mpif90-wrapper-data.txt file? As of the note above, (b) would 
be better?

Best

Paul Kapinos

P.S. $ mpif90 --show-me

1.6.5
ifort -nofor-main -I/opt/MPI/openmpi-1.6.5/linux/intel/include -fexceptions 
-I/opt/MPI/openmpi-1.6.5/linux/intel/lib 
-L/opt/lsf/9.1/linux2.6-glibc2.3-x86_64/lib 
-L/opt/MPI/openmpi-1.6.5/linux/intel/lib -lmpi_f90 -lmpi_f77 -lmpi -losmcomp 
-lrdmacm -libverbs -lrt -lnsl -lutil -lpsm_infinipath -lbat -llsf -ldl -lm 
-lnuma -lrt -lnsl -lutil

1.8.3
ifort             -I/opt/MPI/openmpi-1.8.3/linux/intel/include -fexceptions 
-I/opt/MPI/openmpi-1.8.3/linux/intel/lib 
-L/opt/lsf/9.1/linux2.6-glibc2.3-x86_64/lib -Wl,-rpath 
-Wl,/opt/lsf/9.1/linux2.6-glibc2.3-x86_64/lib -Wl,-rpath 
-Wl,/opt/MPI/openmpi-1.8.3/linux/intel/lib -Wl,--enable-new-dtags 
-L/opt/MPI/openmpi-1.8.3/linux/intel/lib -lmpi_usempif08 
-lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi

P.S.2 $ man ld
....
       --as-needed
       --no-as-needed
           This option affects ELF DT_NEEDED tags for dynamic libraries
           mentioned on the command line after the --as-needed option.
           Normally the linker will add a DT_NEEDED tag for each dynamic
           library mentioned on the command line, regardless of whether the
           library is actually needed or not.  --as-needed causes a DT_NEEDED
           tag to only be emitted for a library that satisfies an undefined
           symbol reference from a regular object file or, if the library is
           not found in the DT_NEEDED lists of other libraries linked up to
           that point, an undefined symbol reference from another dynamic
           library.  --no-as-needed restores the default behaviour.

....

--
Dipl.-Inform. Paul Kapinos   -   High Performance Computing,
RWTH Aachen University, IT Center
Seffenter Weg 23,  D 52074  Aachen (Germany)
Tel: +49 241/80-24915


<lexyacc.zip>




--
Dipl.-Inform. Paul Kapinos   -   High Performance Computing,
RWTH Aachen University, IT Center
Seffenter Weg 23,  D 52074  Aachen (Germany)
Tel: +49 241/80-24915

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to