[Beowulf] MPICH with ICC 8.1

Don Holmgren djholm at fnal.gov
Sat Dec 25 10:19:56 PST 2004


Oops - sorry, I just showed my complete ignorance of the profiling
interface.

The configure option --disable-weak-symbols will give you separate
libpmpich.a and libmpich.a libraries, containing respectively the
"PMPI_xxx" and "MPI_xxx" versions of the code.  The "PMPI_xxx" versions
are the "real" versions.  The "MPI_xxx" versions allow implementation of
routines which intercept a given call, say to do profiling, and which
also call the "PMPI_xxx"  versions.

If I'm interpreting the documentation correctly, with
"--disable-weak-symbols" if you want to profile some calls and not other
calls, you'd have to use a link command something like:
     cc ... -lprof -lpmpi -lmpi
where libprof.a contains profiling versions of selected routines, eg,
MPI_Send, which in turn call the base version, PMPI_Send, resolved in
libpmpi.a.  Other routines not defined in libprof.a would be resolved in
libmpi.   With weak symbols, on the other hand, it is sufficient to use
     cc ... -lprof -lmpi
and then an "MPI_xxx" symbol not defined in libprof.a will be resolved
by "PMPI_xxx" in libmpi.a

See, for example,
  http://www.netlib.org/utk/papers/mpi-book/node190.html

I just checked on two versions of mvapich on one of my machines, one
built with the Intel 7.1 compiler and the other with the 8.1 compiler.
The latter required "--disable-weak-symbols".  I verified that mpif77,
for example, explicitly linked with "-lpmpich -lmpich" on the 8.1
version, but only with "-lmpich" on the 7.1 version.

Don Holmgren
Fermilab



On Fri, 24 Dec 2004, Don Holmgren wrote:

>
> If you can do without weak symbols for the MPICH profiling interface
> (i.e., when you want to profile, your code would have to preface the
> names of mpi calls with "p", as in pmpi_wait instead of mpi_wait), then
> during the configure step add the switch
>
>    --disable-weak-symbols
>
> I haven't found a compiler option, only this MPICH build option.
>
> Don Holmgren
> Fermilab
>
>
>
> On Thu, 23 Dec 2004, John Lau wrote:
>
> > Hi,
> >
> > I can't compile MPICH 1.2.5.2 with the new Intel compiler 8.1. I used to
> > compile it successfully with the ICC 8.0. This is the error message:
> >
> > /usr/intel/intel_cc_80/bin/icc -I.
> > -I/usr/src/redhat/BUILD/mpich-1.2.5.2-8chess/src/fortran/src
> > -I../include
> > -I/usr/src/redhat/BUILD/mpich-1.2.5.2-8chess/src/fortran/include -I..
> > -I/usr/src/redhat/BUILD/mpich-1.2.5.2-8chess/include
> > -I/usr/src/redhat/BUILD/mpich-1.2.5.2-8chess/icc8/include
> > -I/usr/src/redhat/BUILD/mpich-1.2.5.2-8chess/icc8/mpid/ch_p4
> > -I/usr/src/redhat/BUILD/mpich-1.2.5.2-8chess/mpid/util
> > -I/usr/src/redhat/BUILD/mpich-1.2.5.2-8chess/mpid/ch_p4  -fPIC -O2
> > -mcpu=pentium4 -gcc-version=320 -DUSE_SOCKLEN_T -DUSE_U_INT_FOR_XDR
> > -DHAVE_MPICHCONF_H
> > -c /usr/src/redhat/BUILD/mpich-1.2.5.2-8chess/src/fortran/src/addressf.c
> > /usr/src/redhat/BUILD/mpich-1.2.5.2-8chess/src/fortran/src/addressf.c(25): error: identifier "mpi_address_" is undefined
> >   #pragma weak mpi_address_ = pmpi_address_
> >
> > I think it is related to the weak symbol defination checking. Because
> > when I put the function defination before weak symbol defination, it can
> > be compiled with ICC 8.1.
> >
> > So is there any compiler option or workaround for ICC 8.1, so that I
> > dont need to change the sources?
> >
> > Thanks in advance.
> >
> > Best regards,
> > John Lau
> > --
> > John Lau Chi Fai
> > cflau at clc.cuhk.edu.hk
> > Software Engineer
> > Center for Large-Scale Computation
> >
> > _______________________________________________
> > Beowulf mailing list, Beowulf at beowulf.org
> > To change your subscription (digest mode or unsubscribe) visit http://www.beowulf.org/mailman/listinfo/beowulf
> >
> _______________________________________________
> Beowulf mailing list, Beowulf at beowulf.org
> To change your subscription (digest mode or unsubscribe) visit http://www.beowulf.org/mailman/listinfo/beowulf
>



More information about the Beowulf mailing list