Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] openmpi-1.8.2rc2 and f08 interface built with PGI-14.7 causes link error
From: Paul Hargrove (phhargrove_at_[hidden])
Date: 2014-07-30 00:25:06


Giles,

If you look more carefully at the output I provided you will see that 1.8.1
*does* test for PROCEDURE support and finds it lacking. BOTH outputs
include:
 checking if Fortran compiler supports PROCEDURE... no

However in the 1.8.1 case that is apparently not sufficient to disqualify
building the f08 module.

The test does fail in both 1.8.1 and 1.8.2rc2.
Here is the related portion of config.log from one of them:

configure:57708: checking if Fortran compiler supports PROCEDURE
configure:57735: pgf90 -c -g conftest.f90 >&5 PGF90-S-0155-Illegal
procedure interface - mpi_user_function (conftest.f90: 12)
PGF90-S-0155-Illegal procedure interface - mpi_user_function (conftest.f90:
12) 0 inform, 0 warnings, 2 severes, 0 fatal for test_proc configure:57735:
$? = 2 configure: failed program was: | MODULE proc_mod | INTERFACE |
SUBROUTINE MPI_User_function | END SUBROUTINE | END INTERFACE | END MODULE
proc_mod | | PROGRAM test_proc | INTERFACE | SUBROUTINE binky(user_fn) |
USE proc_mod | PROCEDURE(MPI_User_function) :: user_fn | END SUBROUTINE |
END INTERFACE | END PROGRAM configure:57751: result: no

Other than the line numbers the 1.8.1 and 1.8.2rc2 output are identical in
this respect.

The test also fails run manually:

{hargrove_at_hopper04 OMPI}$ pgf90 -c -g conftest.f90 PGF90-S-0155-Illegal
procedure interface - mpi_user_function (conftest.f90: 12)
PGF90-S-0155-Illegal procedure interface - mpi_user_function (conftest.f90:
12) 0 inform, 0 warnings, 2 severes, 0 fatal for test_proc
{hargrove_at_hopper04 OMPI}$ pgf90 -V pgf90 13.10-0 64-bit target on x86-64
Linux -tp shanghai The Portland Group - PGI Compilers and Tools Copyright
(c) 2013, NVIDIA CORPORATION. All rights reserved.

-Paul

On Tue, Jul 29, 2014 at 9:09 PM, Gilles Gouaillardet <
gilles.gouaillardet_at_[hidden]> wrote:

> Paul,
>
> from the logs, the only difference i see is about Fortran PROCEDURE.
>
> openpmi 1.8 (svn checkout) does not build the usempif08 bindings if
> PROCEDURE is not supported.
>
> from the logs, openmpi 1.8.1 does not check whether PROCEDURE is supported
> or not
>
> here is the sample program to check PROCEDURE (from
> config/ompi_fortran_check_procedure.m4)
>
> MODULE proc_mod
> INTERFACE
> SUBROUTINE MPI_User_function
> END SUBROUTINE
> END INTERFACE
> END MODULE proc_mod
>
> PROGRAM test_proc
> INTERFACE
> SUBROUTINE binky(user_fn)
> USE proc_mod
> PROCEDURE(MPI_User_function) :: user_fn
> END SUBROUTINE
> END INTERFACE
> END PROGRAM
>
> i do not have a PGI license, could you please confirm the PGI compiler
> fails compiling the test above ?
>
> Cheers,
>
> Gilles
>
> On 2014/07/30 12:54, Paul Hargrove wrote:
>
> On Tue, Jul 29, 2014 at 6:38 PM, Paul Hargrove <phhargrove_at_[hidden]> <phhargrove_at_[hidden]> wrote:
>
>
> On Tue, Jul 29, 2014 at 6:33 PM, Paul Hargrove <phhargrove_at_[hidden]> <phhargrove_at_[hidden]> wrote:
>
>
> I am trying again with an explicit --enable-mpi-fortran=usempi at
> configure time to see what happens.
>
>
> Of course that should have said --enable-mpi-fortran=usempif08
>
>
> I've switched to using PG13.6 for my testing.
> I find that even when I pass that flag I see that use_mpi_f08 is NOT
> enabled:
>
> checking Fortran compiler ignore TKR syntax... not cached; checking variants
> checking for Fortran compiler support of TYPE(*), DIMENSION(*)... no
> checking for Fortran compiler support of !DEC$ ATTRIBUTES NO_ARG_CHECK... no
> checking for Fortran compiler support of !$PRAGMA IGNORE_TKR... no
> checking for Fortran compiler support of !DIR$ IGNORE_TKR... yes
> checking Fortran compiler ignore TKR syntax... 1:real, dimension(*):!DIR$
> IGNORE_TKR
> checking if Fortran compiler supports ISO_C_BINDING... yes
> checking if building Fortran 'use mpi' bindings... yes
> checking if Fortran compiler supports SUBROUTINE BIND(C)... yes
> checking if Fortran compiler supports TYPE, BIND(C)... yes
> checking if Fortran compiler supports TYPE(type), BIND(C, NAME="name")...
> yes
> checking if Fortran compiler supports PROCEDURE... no
> *checking if building Fortran 'use mpi_f08' bindings... no*
>
> Contrast that to openmpi-1.8.1 and the same compiler:
>
> checking Fortran compiler ignore TKR syntax... not cached; checking variants
> checking for Fortran compiler support of TYPE(*), DIMENSION(*)... no
> checking for Fortran compiler support of !DEC$ ATTRIBUTES NO_ARG_CHECK... no
> checking for Fortran compiler support of !$PRAGMA IGNORE_TKR... no
> checking for Fortran compiler support of !DIR$ IGNORE_TKR... yes
> checking Fortran compiler ignore TKR syntax... 1:real, dimension(*):!DIR$
> IGNORE_TKR
> checking if building Fortran 'use mpi' bindings... yes
> checking if Fortran compiler supports ISO_C_BINDING... yes
> checking if Fortran compiler supports SUBROUTINE BIND(C)... yes
> checking if Fortran compiler supports TYPE, BIND(C)... yes
> checking if Fortran compiler supports TYPE(type), BIND(C, NAME="name")...
> yes
> checking if Fortran compiler supports optional arguments... yes
> checking if Fortran compiler supports PRIVATE... yes
> checking if Fortran compiler supports PROTECTED... yes
> checking if Fortran compiler supports ABSTRACT... yes
> checking if Fortran compiler supports ASYNCHRONOUS... yes
> checking if Fortran compiler supports PROCEDURE... no
> checking size of Fortran type(test_mpi_handle)... 4
> checking Fortran compiler F08 assumed rank syntax... not cached; checking
> checking for Fortran compiler support of TYPE(*), DIMENSION(..)... no
> checking Fortran compiler F08 assumed rank syntax... no
> checking which mpi_f08 implementation to build... "good" compiler, no array
> subsections
> *checking if building Fortran 'use mpi_f08' bindings... yes*
>
> So, somewhere between 1.8.1 and 1.8.2rc2 something has happened in the
> configure logic to disqualify the pgf90 compiler.
>
> I also surprised to see 1.8.2rc2 performing *fewer* tests of FC then 1.8.1
> did (unless they moved elsewhere?).
>
> In the end I cannot reproduce the originally reported problem for the
> simple reason that I instead see:
>
> {hargrove_at_hopper04 openmpi-1.8.2rc2-linux-x86_64-pgi-14.4}$
> ./INST/bin/mpif90 ../test.f
> PGF90-F-0004-Unable to open MODULE file mpi_f08.mod (../test.f: 2)
> PGF90/x86-64 Linux 14.4-0: compilation aborted
>
>
> Tetsuya Mishima,
>
> Is it possible that your installation of 1.8.2rc2 was to the same prefix as
> an older build?
> It that is the case, you may have the mpi_f08.mod from the older build even
> though no f08 support is in the new build.
>
>
> -Paul
>
>
>
>
>
> _______________________________________________
> devel mailing listdevel_at_[hidden]
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
> Link to this post: http://www.open-mpi.org/community/lists/devel/2014/07/15342.php
>
>
>
> _______________________________________________
> devel mailing list
> devel_at_[hidden]
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
> Link to this post:
> http://www.open-mpi.org/community/lists/devel/2014/07/15343.php
>

-- 
Paul H. Hargrove                          PHHargrove_at_[hidden]
Future Technologies Group
Computer and Data Sciences Department     Tel: +1-510-495-2352
Lawrence Berkeley National Laboratory     Fax: +1-510-486-6900