"Jeff Squyres (jsquyres)" <jsquy...@cisco.com> writes:

> On Nov 10, 2014, at 8:27 AM, Dave Love <d.l...@liverpool.ac.uk> wrote:
>
>>> https://github.com/open-mpi/ompi/commit/d7eaca83fac0d9783d40cac17e71c2b090437a8c
>> 
>> I don't have time to follow this properly, but am I reading right that
>> that says mpi_sizeof will now _not_ work with gcc < 4.9, i.e. the system
>> compiler of the vast majority of HPC GNU/Linux systems, whereas it did
>> before (at least in simple cases)?
>
> You raise a very good point, which raises another unfortunately good related 
> point.
>
> 1. No, the goal is to enable MPI_SIZEOF in *more* cases, and still preserve 
> all the old cases.  Your mail made me go back and test all the old cases this 
> morning, and I discovered a bug which I need to fix before 1.8.4 is released 
> (details unimportant, unless someone wants to gory details).

I haven't checked the source, but the commit message above says

  If the Fortran compiler supports both INTERFACE and ISO_FORTRAN_ENV,
  then we'll build the MPI_SIZEOF interfaces.  If not, we'll skip
  MPI_SIZEOF in mpif.h and the mpi module.

which implies it it's been removed for gcc < 4.9, whereas it worked before.

> The answer actually turned out to be "yes".  :-\
>
> Specifically: the spec just says it's available in the Fortran interfaces.  
> It doesn't say "the Fortran interfaces, except MPI_SIZEOF."
>
> Indeed, the spec doesn't prohibit explicit interfaces in mpif.h (it never 
> has).  It's just that most (all?) MPI implementations have not provided 
> explicit interfaces in mpif.h.
>
> But for MPI_SIZEOF to work, explicit interfaces are *required*.

[Yes, I understand -- sorry if that wasn't clear and you wasted time
explaining.]

>> but I'd expect that to be deprecated anyhow.
>> (The man pages generally don't mention USE, only INCLUDE, which seems
>> wrong.)
>
> Mmm.  Yes, true.
>
> Any chance I could convince you to submit a patch?  :-)

Maybe, but I don't really know what it should involve or whether it can
be done mechanically; I definitely don't have time to dissect the spec.
Actually, I'd have expected the API man pages to be reference versions,
shared across implementations, but MPICH's are different.

> Fortran 77 compilers haven't existed for *many, many years*.

[I think f2c still gets some use, and g77 was only obsoleted with gcc 4
-- I'm not _that old_!  I'm not actually advocating f77, of course.]

> And I'll say it again: MPI has *never* supported Fortran 77 (it's a
> common misconception that it ever did).

Well, having "Fortran77 interface" in the standard could confuse a
stupid person!  (As a former language lawyer for it, I'd allow laxity in
"Fortran77", like the latest MPI isn't completely compatible with the
latest Fortran either.)

>> Fortran has interfaces, not prototypes!
>
> Yes, sorry -- I'm a C programmer and I dabble in Fortran

That was mainly as in it's better ☺.

> (read: I'm the guy who keeps the Fortran stuff maintained in OMPI), so
> I sometimes use the wrong terminology.  Mea culpa!

Sure, and thanks.  I dare say you can get some community help if you
need it, especially if people think Fortran isn't being properly
supported, though I'm not complaining.

Reply via email to