"Jeff Squyres (jsquyres)" <jsquy...@cisco.com> writes: > There were several commits; this was the first one: > > 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)? > IIRC, it only affected certain configure situations (e.g., only > certain fortran compilers). I'm failing to remember the exact > scenario offhand that was problematic right now, but it led to the > larger question of: "hey, wait, don't we have to support MPI_SIZEOF in > mpif.h, too?" I'd have said the answer was a clear "no", without knowing what the standard says about mpif.h, but I'd expect that to be deprecated anyhow. (The man pages generally don't mention USE, only INCLUDE, which seems wrong.) > >> I don't understand how it can work generally with mpif.h (f77?), as >> implied by the man page, rather than the module. > > According to discussion in the Forum Fortran working group, it is > required that MPI_SIZEOF must be supported in *all* MPI Fortran > interfaces, including mpif.h. Well that's generally impossible if it's meant to include Fortran77 compilers (which I must say doesn't seem worth it at this stage). > Hence, if certain conditions are met by your Fortran compiler (i.e., > it's modern enough), OMPI 1.8.4 will have MPI_SIZEOF prototypes in > mpif.h. If not, then you get the same old mpif.h you've always had > (i.e., no MPI_SIZEOF prototypes, and MPI_SIZEOF won't work properly if > you use the mpif.h interfaces). If it's any consolation, it doesn't work in the other MPIs here (mp(va)pich and intel), as I'd expect. > Keep in mind that MPI does not prohibit having prototypes in mpif.h -- > it's just that most (all?) MPI implementations don't tend to provide > them. However, in the case of MPI_SIZEOF, it is *required* that > prototypes are available because the implementation needs the type > information to return the size properly (in mpif.h., mpi module, and > mpi_f08 module). > > Make sense? Fortran has interfaces, not prototypes! I understand the technicalities -- I hacked on g77 intrinsics -- but I'm not sure how much sense it's making if things have effectively gone backwards with gfortran.