LAM/MPI logo

LAM/MPI General User's Mailing List Archives

  |   Home   |   Download   |   Documentation   |   FAQ   |   all just in this list

From: Jeff Squyres (jsquyres_at_[hidden])
Date: 2005-04-06 21:56:38


Tony --

Sorry for the delay in replying. Can you send the full ./configure
line that was used to configure LAM/MPI?

With some hints from the Absoft engineers, we're wondering if you're
somehow using both -YEXT_SFX=_ and -B108, which could cause the triple
underscore suffix.

Here's the latest suggestions from Absoft -- this text is included in
the upcoming 7.1.2 release (forgive the LaTeX markup):

-----
To use the Absoft Fortran compilers with LAM/MPI on OS X, you must
have at least version 9.0 EP (Enhancement Pack). Contact
\url{mailto:support_at_[hidden]} for details.

LAM can use either \cmd{f77} or \cmd{f90} as its back-end Fortran
compiler, despite the fact that LAM's wrapper compiler is named
\cmd{mpif77}.

Additionally, Absoft recommends the following flags (on all
platforms):

\begin{itemize}
\item \cmd{f77} compiler: \cmdarg{-f} \cmdarg{-N15} \cmdarg{-lU77}

\item \cmd{f90} compiler: \cmdarg{-YEXT\_NAME=LCS}
\cmdarg{-YEXT\_SFX=\_}
\cmdarg{-lU77}
\end{itemize}

The \cmdarg{-f} and \cmdarg{-YEXT\_NAME=LCS} flags force the compiler
to use case-insensitive symbol names (which LAM expects). The
\cmdarg{-N15} and \cmdarg{-YEXT\_SFX=\_} flags are to enable
recognizing the Unix compatability library (\cmdarg{-lU77}) properly.
The Unix compatability library enables Fortran programs to invoke
functions such as \func{system(3F)} properly.

{\bf NOTE:} It is advisable to specify all of these flags in the
\ienvvar{FC} environment variable (as opposed to specifying the
compiler in \ienvvar{FC} and the flags in \ienvvar{FFLAGS}). Putting
them all in \ienvvar{FC} allows LAM to propagate these values down
into k the \cmd{mpif77} wrapper compiler so that users will not have
to explicitly specify the additional flags on the \cmd{mpif77} command
line. For example:

\lstset{style=lam-cmdline}
\begin{lstlisting}
shell$ ./configure ``FC=f77 -f -N15 -lU77'' ...
\end{lstlisting}

The quotes {\em are} important. This allows users to run:

\lstset{style=lam-cmdline}
\begin{lstlisting}
shell$ mpif77 my_mpi_application.f -o my_mpi_application
\end{lstlisting}

Rather than:

\lstset{style=lam-cmdline}
\begin{lstlisting}
shell$ mpif77 -f -N15 -lU77 my_mpi_application.f -o my_mpi_application
\end{lstlisting}
-----

On Mar 30, 2005, at 4:28 PM, Tony Arcieri wrote:

> I've built the latest beta of LAM with the EP version of the Absoft
> Pro Fortran
> 9.0 with the patches to support the flags LAM's mpif77 needs, and
> trivial
> MPI applications compile just fine now. Here's the flags it's using:
>
> $ mpif77 -show
> f90 -YEXT_NAMES=LCS -YEXT_SFX=_ -lU77 -I/usr/local/include -Wl,-u
> -Wl,_lam_darwin_malloc_linker_hack -Wl,-multiply_defined,suppress
> -Wl,-force_flat_namespace -Wl,-flat_namespace -Wl,-multiply_defined
> -Wl,suppress -L/usr/local/lib -llammpio -llamf77mpi -lmpi -llam -ldl
>
> However, upon linking we still run into the following errors:
>
> ld: Undefined symbols:
> _mpi_comm_dup_fn___
> _mpi_comm_null_copy_fn___
> _mpi_comm_null_delete_fn___
> _mpi_dup_fn___
> _mpi_null_copy_fn___
> _mpi_null_delete_fn___
> _mpi_type_dup_fn___
> _mpi_type_null_copy_fn___
> _mpi_type_null_delete_fn___
> _mpi_win_dup_fn___
> _mpi_win_null_copy_fn___
> _mpi_win_null_delete_fn___
> _defnatres___
> _getf___
> _mpi_bcast___
> _mpi_scatterv___
> _timeinterp___
> _registerdefnat___
> _registerget___
> _registertimeinterp___
> _baclose___
> _baopen___
> _system___
> _mpi_gatherv___
> _readlai___
> _readsai___
> _mpi_address___
> _mpi_type_commit___
> _mpi_type_struct___
> _getenv___
> _readelevdiff___
> _readlandcover___
> _readlandmask___
> _makedomain___
> _readinput___
> _registerdomain___
> _registerinput___
> _putgb___
> _registerreadelevdiff___
> _mpi_abort___
> _getgb___
> _readclay___
> _readsand___
> _exit___
> _registerreadlai___
> _registerreadsai___
> _registerreadlc___
> _registerreadmask___
> _mpi_barrier___
> _lis_log_blocked_msg__
> _lis_log_msg__
> _endrun_
> _flush___
> _mpi_finalize___
> _lsmdynsetup___
> _lsmf2t___
> _lsmini___
> _lsmoutput___
> _lsmrestart___
> _lsmrun___
> _lsmsetup___
> _lsmwrst___
> _registerlsmdynsetup___
> _registerlsmf2t___
> _registerlsmini___
> _registerlsmoutput___
> _registerlsmrestart___
> _registerlsmrun___
> _registerlsmsetup___
> _registerlsmwrst___
> _defnatrespcp___
> _glbprecip___
> _timeinterppcp___
> _defnatresrad___
> _getrad___
> _timeinterprad___
> _registerdefnatpcp___
> _registerpget___
> _registerpti___
> _registerdefnatrad___
> _registerrget___
> _registerrti___
> _set_parammap___
> _set_soilparam___
> _getarg___
> _iargc___
> _readsilt___
> _abort___
> _mpi_initialized___
> _registerreadclay___
> _registerreadsand___
> _registerreadsilt___
> _mpi_comm_rank___
> _mpi_comm_size___
> _mpi_init___
> _vic_f2t___
> _get_vicvar___
> _vic_run___
> _vic_gather___
> _vic_singlegather___
> _vic_totinit___
> _initialize_model_state2___
> _read_initial_model_state___
> _calc_root_fractions___
> _initialize_model_state___
> _read_veglib___
> _read_vegparam___
> _vic_bcast___
> _vic_scatter___
> _vic_allocate___
> _gather_model_state___
> _write_model_state___
> _mpi_gather___
> _mpi_irecv___
> _mpi_isend___
> _mpi_pack___
> _mpi_pack_size___
> _mpi_recv___
> _mpi_reduce___
> _mpi_scatter___
> _mpi_send___
> _mpi_sendrecv___
> _mpi_unpack___
> _mpi_waitall___
> BalanceCheck.o reference to undefined _mpi_comm_dup_fn___
> BalanceCheck.o reference to undefined _mpi_comm_null_copy_fn___
> BalanceCheck.o reference to undefined _mpi_comm_null_delete_fn___
> BalanceCheck.o reference to undefined _mpi_dup_fn___
> BalanceCheck.o reference to undefined _mpi_null_copy_fn___
> BalanceCheck.o reference to undefined _mpi_null_delete_fn___
> BalanceCheck.o reference to undefined _mpi_type_dup_fn___
> BalanceCheck.o reference to undefined _mpi_type_null_copy_fn___
> BalanceCheck.o reference to undefined _mpi_type_null_delete_fn___
> BalanceCheck.o reference to undefined _mpi_win_dup_fn___
> more references to undefined symbols ...
> link failed.
>
> Some of those appear to be intrinsic to the model but the majority seem
> MPI related. Any ideas as to what we could be doing wrong?
>
> Also note that the model builds fine without MPI bindings active...
>
> Tony Arcieri
> _______________________________________________
> This list is archived at http://www.lam-mpi.org/MailArchives/lam/
>

-- 
{+} Jeff Squyres
{+} jsquyres_at_[hidden]
{+} http://www.lam-mpi.org/