"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.