Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] openmpi 1.7.4rc1 and f08 interface
From: Åke Sandgren (ake.sandgren_at_[hidden])
Date: 2014-01-27 09:31:44


On 01/27/2014 03:28 PM, Åke Sandgren wrote:
> Hi!
>
> I just started trying to build 1.7.4rc1 with the new Pathscale EkoPath5
> compiler and stumbled onto this.
>
> When building without --enable-mpi-f08-subarray-prototype i get into
> problems with ompi/mpi/fortran/use-mpi-f08/mpi-f-interfaces-bind.h
>
> It defines
> subroutine
> ompi_comm_create_keyval_f(comm_copy_attr_fn,comm_delete_attr_fn, &
> comm_keyval,extra_state,ierror) &
> BIND(C, name="ompi_comm_create_keyval_f")
> use :: mpi_f08_types, only : MPI_ADDRESS_KIND
> use :: mpi_f08_interfaces_callbacks, only : MPI_Comm_copy_attr_function
> use :: mpi_f08_interfaces_callbacks, only :
> MPI_Comm_delete_attr_function
> implicit none
> OMPI_PROCEDURE(MPI_Comm_copy_attr_function) :: comm_copy_attr_fn
> OMPI_PROCEDURE(MPI_Comm_delete_attr_function) :: comm_delete_attr_fn
> INTEGER, INTENT(OUT) :: comm_keyval
> INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: extra_state
> INTEGER, INTENT(OUT) :: ierror
> end subroutine ompi_comm_create_keyval_f
>
> But at least the F2k3 specs says that
> "Each dummy argument of an interoperable procedure or interface must be
> an interoperable variable or an interoperable procedure."
>
> The code above violates that since comm_copy_attr_fn is not
> interoperable as far as i can see.
> If I'm reading this wrong then please let me know...
>
> The only definition of OMPI_PROCEDURE i can find is this one in
> ompi/mpi/fortran/configure-fortran-output-bottom.h
>
> #if OMPI_FORTRAN_HAVE_PROCEDURE
> #define OMPI_PROCEDURE(name) PROCEDURE(name)
> #else
> #define OMPI_PROCEDURE(name) EXTERNAL
> #endif
>
> I currently don't have any F2k8 specs to check so if this is changed
> there I'll try to get this sorted in the compiler.
>

According to people with the specs around F2k8 has the same restriction:
"C1255 (R1229) If proc-language-binding-spec is specified for a
procedure, each of the procedure’s dummy arguments shall be a
nonoptional interoperable variable (15.3.5, 15.3.6) or a nonoptional
interoperable procedure (15.3.7)."

-- 
Ake Sandgren, HPC2N, Umea University, S-90187 Umea, Sweden
Internet: ake_at_[hidden]   Phone: +46 90 7866134 Fax: +46 90 7866126
Mobile: +46 70 7716134 WWW: http://www.hpc2n.umu.se