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-03-17 07:20:51


Have you seen the FAQ entry about this?

See the FAQ (http://www.lam-mpi.org/faq) in the section of "Platform
Specific Questions", the question "Does LAM/MPI work with Absoft's
ProFortran compiler?"

We've expanded the release notes about this in the upcoming 7.1.2
release. If you can pardon the LaTeX, here's what they say:

-----
\paragraph{Absoft Fortran Compilers.}

\index{Absoft Fortran compilers}
\index{Fortran compilers!Absoft}

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}
% stupid emacs mode: $

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 15, 2005, at 3:00 PM, Tony Arcieri wrote:

> Hello. I'm attempting to compile an MPI "Hello World" Fortran test
> program
> using the Absoft Pro Fortran 9.0 compiler on MacOS X 10.3.7. I
> compiled
> a snapshot of LAM MPI myself which is likely causing the problems, and
> the
> mpif77 wrapper script passes invalid options to the Absoft compiler so
> I end up having to manually pass flags.
>
> MPI_hello.f90 compiles fine:
>
> $ f90 -I/usr/local/include -c MPI_hello.f90
> $
>
> However when attempting to link, I run into the following errors:
>
> $ f90 -noaclib -L/usr/local/lib -llamf77mpi -lmpi -llam -o MPI_hello
> MPI_hello.o
> ld: Undefined symbols:
> _MPI_COMM_NULL_COPY_FN
> _MPI_COMM_NULL_DELETE_FN
> _MPI_NULL_COPY_FN
> _MPI_NULL_DELETE_FN
> _MPI_TYPE_NULL_COPY_FN
> _MPI_TYPE_NULL_DELETE_FN
> _MPI_WIN_NULL_COPY_FN
> _MPI_WIN_NULL_DELETE_FN
> MPI_hello.o reference to undefined _MPI_COMM_NULL_COPY_FN
> MPI_hello.o reference to undefined _MPI_COMM_NULL_DELETE_FN
> MPI_hello.o reference to undefined _MPI_NULL_COPY_FN
> MPI_hello.o reference to undefined _MPI_NULL_DELETE_FN
> MPI_hello.o reference to undefined _MPI_TYPE_NULL_COPY_FN
> MPI_hello.o reference to undefined _MPI_TYPE_NULL_DELETE_FN
> MPI_hello.o reference to undefined _MPI_WIN_NULL_COPY_FN
> MPI_hello.o reference to undefined _MPI_WIN_NULL_DELETE_FN
> link failed.
>
> Is there some other include file or option I should be using during the
> initial compilation? The source to MPI_hello.f90 is as follows:
>
> -- snip --
>
> program hello
> include 'mpif.h'
> integer rank, size, ierr
>
> call MPI_INIT(ierr)
> call MPI_COMM_RANK(MPI_COMM_WORLD,rank,ierr)
> call MPI_COMM_SIZE(MPI_COMM_WORLD,size,ierr)
>
> print*,'Hello',rank, 'of', size
>
> call MPI_FINALIZE(ierr)
>
> stop
> end
>
> -- snip --
>
> Any ideas?
>
> Tony Arcieri
> _______________________________________________
> This list is archived at http://www.lam-mpi.org/MailArchives/lam/
>

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