from beowulf.org: http://www.beowulf.org/archive/2004-December/011486.html
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
0 comments:
Post a Comment