mpicc and mpif77 under LAM

View: New views
6 Messages — Rating Filter:   Alert me  

mpicc and mpif77 under LAM

by silviugroza :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello,

I am trying to install a quantum chemistry program (Dalton) under LAM/MPI.
I am stuck because I get the error:
"mpif77: No such file or directory"

but:
user@pelican:~$ which mpif77
/usr/bin/mpif77

and:
user@pelican:~$ file /usr/bin/mpif77
/usr/bin/mpif77: symbolic link to `/etc/alternatives/mpif77'
user@pelican:~$ file /etc/alternatives/mpif77
/etc/alternatives/mpif77: symbolic link to `/usr/bin/mpif77.lam'
user@pelican:~$ file /usr/bin/mpif77.lam
/usr/bin/mpif77.lam: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped

I know that there is also mpif77.openmpi, but due to the lack of clear documentation concerning OpenMPI, I want to use LAM/MPI instead. So far, I wasn't able to install the program due to the error above: "mpif77: No such file or directory".

Just type the following "mpif77 -c foo.c" in your terminal and you will see the error.

Is there any way in order to solve this?

Regards,
Silviu

Re: mpicc and mpif77 under LAM

by Michael Creel :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I'm not seeing any problem. I'm using PelicanHPC 64 bit, a development version which is essentially the same as the last released version. See the attached screenshot. If you specify the full path to mpif77, do you see the problem? What version of PelicanHPC are you using (not that it should matter)?

My suspicion is path troubles, for some reason. Are you compiling as root by any chances?
mpif77.png

Re: mpicc and mpif77 under LAM

by silviugroza :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Thank you for your answer.

I downloaded the latest version (1.9_64bit) and I don't get that error when typing "mpif77 -c foo.c".
But when trying to install dalton I receive a series of errors concerning mpi.

The Makefile.config is the following:

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 there is still the error "mpif77: No such file or directory".
I think that this is no more related with PelicanHPC but with LAM-MPI.
Maybe someone could analyse the mpi-paths in Makefile.config and let me informed about any error I made.

Thank you,

Silviu

Re: mpicc and mpif77 under LAM

by Michael Creel :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I agree that this is probably not a problem of PelicanHPC, but one of getting the options set properly. Probably asking users of the code for help, or asking on the LAM/MPI mail list might help.

Also, Open MPI is pretty well tested by now, so you might want to try it out. You can use update-alternatives to select Open MPI instead of LAM/MPI as the default.

Good luck!

Re: mpicc and mpif77 under LAM

by silviugroza :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello,

I asked at LAM/MPI forum about these errors and it seems that gfortran under PelicanHPC was compiled without -fsecond-underscore, which in turn, is essential to build my program (Dalton). Check here for the answer that I received:

http://www.lam-mpi.org/MailArchives/lam/2009/05/14042.php

Well, I think that this is beyond my level of knowledge.
I don't know what should I do now.
I still want to use PelicanHPC as it is very simple and intuitive to build a cluster.

Regards,
Silviu

Re: mpicc and mpif77 under LAM

by Michael Creel :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hmm, I've never had trouble like this myself, but maybe I've just been lucky. PelicanHPC gets its packages from Debian stable (Lenny). LAM/MPI, gfortran, etc. are all pre-compiled binaries. The details of how they were compiled in Debian, I don't know, and I've never had to worry about that. This is the first report of this type of problem.

You could try to compile a statically-linked version of your app on another machine where things are working properly, and just put the binary into /home/user on Pelican to run it on a cluster.

I'm a little skeptical that the Debian packages have some problem that prevents successful compilation. I believe that it should be a matter of getting the Makefile set up correctly. Sorry, but I don't have any other ideas.