I guess a bunch of you already saw this on the lam mail alias.  The part that caught my eye was a user choosing LAM over OMPI due to lack of "clear documentation" for OMPI.

-------- Original Message --------
Subject: LAM: undefined reference to `mpi_bcast__'
Date: Thu, 28 May 2009 08:32:46 -0700 (PDT)
From: Silviu Groza <silviugr...@yahoo.com>
Reply-To: General LAM/MPI mailing list <l...@lam-mpi.org>
To: l...@lam-mpi.org


Hello,

I am trying to install a qauntum chemistry program (Dalton) with LAM-MPI under PelicanHPC. PelicanHPC has both LAM-MPI as well as OpenMPI. I have chosen LAM-MPI due to lack of clear documentation of OpenMPI, and because LAM-MPI environment is the default on PelicanHPC.

So, I have the following outputs:

user@pelican:~$ mpif77 -c foo.c
user@pelican:~$ mpif77 -show
gfortran -I/usr/lib/lam/include -pthread -L/usr/lib/lam/lib -llammpio
 -llamf77mpi -lmpi -llam -lutil -ldl
user@pelican:~$ mpicc -show
gcc -I/usr/lib/lam/include -pthread -L/usr/lib/lam/lib -llammpio -llamf77mpi 
-lmpi -llam -lutil -ldl


Therefore, my Makefile.config is:

ARCH        = linux 
# 
# 
CPPFLAGS      = -DVAR_G77 -DSYS_LINUX -DVAR_MFDS -D'INSTALL_WRKMEM=100000000' -D'INSTALL_BASDIR="/mnt/sda8/home/dan/Daltonsubpelican/dalton-2.0/basis/"' -DVAR_MPI -DIMPLICIT_NONE 
F77           = mpif77 
CC            = mpicc 
RM            = rm -f 
FFLAGS        = -march=x86-64 -O3 -ffast-math -fexpensive-optimizations -funroll-loops -fno-range-check -fsecond-underscore 
SAFEFFLAGS    = -march=x86-64 -O3 -ffast-math -fexpensive-optimizations -funroll-loops -fno-range-check -fsecond-underscore 
CFLAGS        = -march=x86-64 -O3 -ffast-math -fexpensive-optimizations -funroll-loops -std=c99 -DRESTRICT=restrict 
INCLUDES      = -I../include 
LIBS          = -L/usr/lib -llapack -lblas 
INSTALLDIR    = /mnt/sda8/home/dalton-2.0/bin 
PDPACK_EXTRAS = linpack.o eispack.o 
GP_EXTRAS     = 
AR            = ar 
ARFLAGS       = rvs 
# flags for ftnchek on Dalton /hjaaj 
CHEKFLAGS  = -nopure -nopretty -nocommon -nousage -noarray -notruncation -quiet  -noargumants -arguments=number  -usage=var-unitialized 
# -usage=var-unitialized:arg-const-modified:arg-alias 
# -usage=var-unitialized:var-set-unused:arg-unused:arg-const-modified:arg-alias 
# 
default : linuxparallel.x 
# 
# Parallel initialization 
# 
MPI_INCLUDE_DIR = -I/usr/lib/lam/include 
MPI_LIB_PATH    = -L/usr/lib/lam/lib 
MPI_LIB         = -lmpi 
# 
# 
# Suffix rules 
# hjaaj Oct 04: .g is a "cheat" suffix, for debugging. 
#               'make x.g' will create x.o from x.F or x.c with -g debug flag set. 
# 
.SUFFIXES : .F .o .c .i .g 

.F.o: 
        $(F77) $(INCLUDES) $(CPPFLAGS) $(FFLAGS) -c $*.F 

.F.g: 
        $(F77) $(INCLUDES) $(CPPFLAGS) $(FFLAGS) -g -c $*.F 

.c.o: 
        $(CC) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) -c $*.c 

.c.g: 
        $(CC) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) -g -c $*.c 

.F.i: 
        $(F77) $(INCLUDES) $(CPPFLAGS) -E $*.F > $*.i 




and the errors are: 





---------------> Linking parallel dalpar.x ... 
mpif77 -march=x86-64 -O3 -ffast-math -fexpensive-optimizations -funroll-loops -fno-range-check -fsecond-underscore \ 
        -o /mnt/sda8/home/dalton-2.0/bin/dalpar.x abacus/dalton.o cc/crayio.o abacus/linux_mem_allo.o \ 
        abacus/herpar.o eri/eri2par.o amfi/amfi.o amfi/symtra.o -Labacus -labacus -Lrsp -lrsp -Lsirius -lsirius -labacus -Leri -leri -Ldensfit -ldensfit -Lcc  -lcc -Ldft -ldft -Lgp -lgp -Lpdpack -lpdpack -L/usr/lib -llapack -lblas  \ 
        -L/usr/lib/lam/lib -lmpi 
abacus/dalton.o: In function `getmmbas_': 
dalton.F:(.text+0x379): undefined reference to `mpi_bcast__' 
abacus/dalton.o: In function `MAIN__': 
dalton.F:(.text+0x739): undefined reference to `mpi_bcast__' 
abacus/libabacus.a(dalgnr.o): In function `parion_': 
dalgnr.F:(.text+0x223): undefined reference to `mpi_bcast__' 
dalgnr.F:(.text+0x3ea): undefined reference to `mpi_bcast__' 
dalgnr.F:(.text+0x438): undefined reference to `mpi_bcast__' 
abacus/libabacus.a(dalgnr.o):dalgnr.F:(.text+0x686): more undefined references to `mpi_bcast__' follow 
dft/libdft.a(dft_ksm.o): In function `ksmcollect_': 
dft_ksm.F:(.text+0x8c): undefined reference to `mpi_reduce__' 
dft_ksm.F:(.text+0xd7): undefined reference to `mpi_reduce__' 
dft/libdft.a(dft_ksm.o): In function `ksmsync_': 
dft_ksm.F:(.text+0x12c): undefined reference to `mpi_bcast__' 
dft/libdft.a(dft_ksm.o): In function `kick_ksm_slaves_alive__': 
dft_ksm.F:(.text+0x27d): undefined reference to `mpi_bcast__' 
dft_ksm.F:(.text+0x29f): undefined reference to `mpi_bcast__' 
dft/libdft.a(dft_mag.o): In function `dft_suscep_collect__': 
dft_mag.F:(.text+0x21b0): undefined reference to `mpi_reduce__' 
dft/libdft.a(dft_mag.o): In function `kick_slaves_suscep__': 
dft_mag.F:(.text+0x231d): undefined reference to `mpi_bcast__' 
dft_mag.F:(.text+0x233f): undefined reference to `mpi_bcast__' 
dft/libdft.a(dft_mag.o): In function `dft_brhs_collect__': 
dft_mag.F:(.text+0x23e0): undefined reference to `mpi_reduce__' 
dft/libdft.a(dft_mag.o): In function `dft_brhs_slave__': 
dft_mag.F:(.text+0x2480): undefined reference to `mpi_bcast__' 
dft_mag.F:(.text+0x24a2): undefined reference to `mpi_bcast__' 
dft/libdft.a(dft_mag.o): In function `kick_slaves_brhs__': 
dft_mag.F:(.text+0x25e5): undefined reference to `mpi_bcast__' 
dft_mag.F:(.text+0x2607): undefined reference to `mpi_bcast__' 
dft_mag.F:(.text+0x2629): undefined reference to `mpi_bcast__' 
dft/libdft.a(dft_mag.o):dft_mag.F:(.text+0x264b): more undefined references to `mpi_bcast__' follow 
dft/libdft.a(dft_grad.o): In function `gradslave_collect__': 
dft_grad.F:(.text+0x11f0): undefined reference to `mpi_reduce__' 
dft/libdft.a(dft_grad.o): In function `kick_slaves_grad__': 
dft_grad.F:(.text+0x135d): undefined reference to `mpi_bcast__' 
dft_grad.F:(.text+0x137f): undefined reference to `mpi_bcast__' 
dft/libdft.a(dft_hes.o): In function `dft_hed_collect__': 
dft_hes.F:(.text+0x7ef): undefined reference to `mpi_reduce__' 
dft_hes.F:(.text+0x848): undefined reference to `mpi_reduce__' 
dft/libdft.a(dft_hes.o): In function `dfthed_slave__': 
dft_hes.F:(.text+0x924): undefined reference to `mpi_bcast__' 
dft_hes.F:(.text+0x967): undefined reference to `mpi_bcast__' 
dft/libdft.a(dft_hes.o): In function `kick_slaves_hed__': 
dft_hes.F:(.text+0xad5): undefined reference to `mpi_bcast__' 
dft_hes.F:(.text+0xaf7): undefined reference to `mpi_bcast__' 
dft_hes.F:(.text+0xb19): undefined reference to `mpi_bcast__' 
dft/libdft.a(dft_hes.o):dft_hes.F:(.text+0xb59): more undefined references to `mpi_bcast__' follow 
dft/libdft.a(dft_hes.o): In function `dft_hesstat_collect__': 
dft_hes.F:(.text+0xbd0): undefined reference to `mpi_reduce__' 
dft/libdft.a(dft_hes.o): In function `dft_hesstat_slave__': 
dft_hes.F:(.text+0xcb8): undefined reference to `mpi_bcast__' 
dft_hes.F:(.text+0xcf9): undefined reference to `mpi_bcast__' 
dft_hes.F:(.text+0xd43): undefined reference to `mpi_bcast__' 
dft_hes.F:(.text+0xd77): undefined reference to `mpi_bcast__' 
dft/libdft.a(dft_hes.o): In function `kick_slaves_hesstat__': 
dft_hes.F:(.text+0xee2): undefined reference to `mpi_bcast__' 
dft/libdft.a(dft_hes.o):dft_hes.F:(.text+0xf06): more undefined references to `mpi_bcast__' follow 
dft/libdft.a(dft_int.o): In function `dftintcollect_': 
dft_int.F:(.text+0x42): undefined reference to `mpi_reduce__' 
dft/libdft.a(dft_int.o): In function `dftintbcast_': 
dft_int.F:(.text+0x78): undefined reference to `mpi_bcast__' 
dft_int.F:(.text+0x9a): undefined reference to `mpi_bcast__' 
dft_int.F:(.text+0xbc): undefined reference to `mpi_bcast__' 
dft_int.F:(.text+0xde): undefined reference to `mpi_bcast__' 
dft_int.F:(.text+0x100): undefined reference to `mpi_bcast__' 
dft/libdft.a(dft_int.o):dft_int.F:(.text+0x122): more undefined references to `mpi_bcast__' follow 
gp/libgp.a(gptrygve.o): In function `quit_': 
gptrygve.F:(.text+0x581b): undefined reference to `mpi_abort__' 
gp/libgp.a(mpimacro.o): In function `mpi_myfail__': 
mpimacro.F:(.text+0x21): undefined reference to `mpi_error_class__' 
gp/libgp.a(mpimacro.o): In function `mpixsend_': 
mpimacro.F:(.text+0xb57): undefined reference to `mpi_send__' 
gp/libgp.a(mpimacro.o): In function `mpixrecv_': 
mpimacro.F:(.text+0xe8f): undefined reference to `mpi_recv__' 
mpimacro.F:(.text+0xf49): undefined reference to `mpi_recv__' 
gp/libgp.a(mpimacro.o): In function `mpixbcast_': 
mpimacro.F:(.text+0x10d7): undefined reference to `mpi_bcast__' 
gp/libgp.a(mpimacro.o): In function `mpixfinalize_': 
mpimacro.F:(.text+0x1260): undefined reference to `mpi_finalize__' 
gp/libgp.a(mpimacro.o): In function `mpixinit_': 
mpimacro.F:(.text+0x1296): undefined reference to `mpi_init__' 
mpimacro.F:(.text+0x12bf): undefined reference to `mpi_comm_rank__' 
mpimacro.F:(.text+0x12e8): undefined reference to `mpi_comm_size__' 
collect2: ld returned 1 exit status 
mpif77: No such file or directory 
make: *** [linuxparallel.x] Error 1 


As you can see, I also get the error "mpif77: No such file or directory".
Please look at the MPI_INCLUDE_DIR ,MPI_LIB_PATH  and MPI_LIB in Makefile.config, because I susspect that the paths are wrong.

Regards,
Silviu



_______________________________________________
This list is archived at http://www.lam-mpi.org/MailArchives/lam/

Reply via email to