All,

     I think that a GNU build of OpenMPI will allow compiling with both
gfortan and ifort, so I think OMPI_FC is useful.  I'd like to see it fully
supported if possible, so if the higher-dimensions in mpif-sizeof.h are
not vital and there is another way of accomplishing the same thing I think
it would be useful to address.
     If not, I would at least like to see some warnings in the documentation
of the OMPI_FC section that would list the cases like this where it will
fail.

                 Dave

On Thu, Mar 3, 2016 at 9:07 PM, Larry Baker <ba...@usgs.gov> wrote:

> Dave,
>
> Both Gilles and Chris raise important points.  You really cannot expect to
> mix modules from two different Fortran compilers in a single executable.
> There is no requirement placed on a compiler by the Fortran standard for
> what object language it should use, how the information in modules is made
> available across compilation units, or the procedure calling conventions.
> This makes me wonder, as you do, what the point is of the OMPI_CC and
> OMPI_FC environment variables?  I do think that Intel has tried to make
> their objects interoperable with GCC objects.  That is a link-time issue.
> You are encountering compile-time issues.  Gilles says whatever
> mpif-sizeof.h was intended to define, it cannot be done in gfortran.  Even
> if mpif-sizeof.h generated for an Intel compiler was standard-conforming
> (so the errors you encountered are not show stoppers), I'm not sure you
> would be able to get past the incompatibility between the internal formats
> used by each compiler to store module definitions and declarations for
> later USE by another compilation unit.  I think your expectations cannot be
> fulfilled because of the compilers, not because of OpenMPI.
>
> Larry Baker
> US Geological Survey
> 650-329-5608
> ba...@usgs.gov
>
>
>
> On 3 Mar 2016, at 6:39 PM, Dave Turner wrote:
>
> Gilles,
>
>     I don't see the point of having the OMPI_CC and OMPI_FC environment
> variables at all if you're saying that we shouldn't expect them to work.
> I
> actually do think they work fine if you do a GNU build and use them to
> specify the Intel compilers.  I also think it works fine when you do an
> Intel build and compile with gcc.  So to me it just looks like that one
> include file is the problem.
>
>                   Dave
>
> On Thu, Mar 3, 2016 at 8:02 PM, Gilles Gouaillardet <gil...@rist.or.jp>
> wrote:
>
>> Dave,
>>
>> you should not expect anything when mixing Fortran compilers
>> (and to be on the safe side, you might not expect much when mixing C/C++
>> compilers too,
>> for example, if you built ompi with intel and use gcc for your app, gcc
>> might complain about unresolved symbols from the intel runtime)
>>
>> if you compile OpenMPI with gfortran 4.8.5, the automatically generated
>> mpif-sizeof.h contains
>>
>> ! Sad panda.
>> !
>> ! This compiler does not support the Right Stuff to enable MPI_SIZEOF.
>> ! Specifically: we need support for the INTERFACE keyword,
>> ! ISO_FORTRAN_ENV, and the STORAGE_SIZE() intrinsic on all types.
>> ! Apparently, this compiler does not support both of those things, so
>> ! this file will be (effecitvely) blank (i.e., we didn't bother
>> ! generating the necessary stuff for MPI_SIZEOF because the compiler
>> ! doesn't support
>> ! it).
>> !
>> ! If you want support for MPI_SIZEOF, please use a different Fortran
>> ! compiler to build Open MPI.
>>
>> intel fortran compilers have the right stuff, so mpif-sizeof.h is usable,
>> and you get something very different.
>>
>> Cheers,
>>
>> Gilles
>>
>>
>> On 3/4/2016 10:17 AM, Dave Turner wrote:
>>
>>
>>      My understanding is that OpenMPI built with either Intel or
>> GNU compilers should be able to use the other compilers using the
>> OMPI_CC and OMPI_FC environmental variables.
>>      For OpenMPI-1.8.8 built with Intel compilers, if you try to
>> compile any code that includes mpif.h using OMPI_FC=gfortran it
>> fails.  The Intel build creates mpi-sizeof.h that dimensions
>> arrays to more than 6 dimensions which gfortran cannot handle.
>> The example below illustrates this.
>>      I wasn't able to find any other reports like this on the
>> web, and I don't see any way of specifying a path to an alternate
>> mpif.h include file.  This looks to be a bug to me, but please let
>> me know if I missed a config flag somewhere.
>>
>>                Dave Turner
>>
>>
>>
>> Selene cat bugtest.F
>> ! Program to illustrate bug when OpenMPI is compiled with Intel
>> !    compilers but run using OMPI_FC=gfortran.
>>
>>       PROGRAM BUGTEST
>>
>>       INCLUDE "mpif.h"
>>
>>       END
>> Selene cat go
>> #!/bin/bash
>>
>>
>> echo "Compile test using default ifort"
>>
>> mpifort --version
>> mpifort bugtest.F -o bugtest_ifort
>>
>>
>> echo "Compile test using gfortan when OpenMPI was compiled with ifort/icc"
>>
>> export OMPI_FC=gfortran
>>
>> mpifort --version
>> mpifort bugtest.F -o bugtest_gfortran
>>
>>
>> Selene ./go
>> Compile test using default ifort
>> ifort (IFORT) 15.0.3 20150407
>> Copyright (C) 1985-2015 Intel Corporation.  All rights reserved.
>>
>> Compile test using gfortan when OpenMPI was compiled with ifort/icc
>> GNU Fortran (Gentoo 4.9.3 p1.4, pie-0.6.4) 4.9.3
>> Copyright (C) 2015 Free Software Foundation, Inc.
>>
>> GNU Fortran comes with NO WARRANTY, to the extent permitted by law.
>> You may redistribute copies of GNU Fortran
>> under the terms of the GNU General Public License.
>> For more information about these matters, see the file named COPYING
>>
>> mpif-sizeof.h:75.48:
>>     Included at mpif.h:61:
>>     Included at bugtest.F:6:
>>
>>       COMPLEX(REAL128), DIMENSION(1,1,1,1,1,1,1,*)::x
>>                                                 1
>> Error: Array specification at (1) has more than 7 dimensions
>> mpif-sizeof.h:82.48:
>>     Included at mpif.h:61:
>>     Included at bugtest.F:6:
>>
>>       COMPLEX(REAL128), DIMENSION(1,1,1,1,1,1,1,1,*)::x
>>                                                 1
>> Error: Array specification at (1) has more than 7 dimensions
>> mpif-sizeof.h:89.48:
>>     Included at mpif.h:61:
>>     Included at bugtest.F:6:
>>
>>       COMPLEX(REAL128), DIMENSION(1,1,1,1,1,1,1,1,1,*)::x
>>                                                 1
>> Error: Array specification at (1) has more than 7 dimensions
>>
>> [ More of the same errors have been clipped ]
>>
>>
>> --
>> Work:     davetur...@ksu.edu     (785) 532-7791
>>              2219 Durland, Manhattan KS  66502
>> Home:    drdavetur...@gmail.com
>>               cell: (785) 770-5929
>>
>>
>> _______________________________________________
>> devel mailing listde...@open-mpi.org
>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>> Link to this post: 
>> http://www.open-mpi.org/community/lists/devel/2016/03/18671.php
>>
>>
>>
>
>
> --
> Work:     davetur...@ksu.edu     (785) 532-7791
>              2219 Durland, Manhattan KS  66502
> Home:    drdavetur...@gmail.com
>               cell: (785) 770-5929
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
> Link to this post:
> http://www.open-mpi.org/community/lists/devel/2016/03/18678.php
>
>
>


-- 
Work:     davetur...@ksu.edu     (785) 532-7791
             2219 Durland, Manhattan KS  66502
Home:    drdavetur...@gmail.com
              cell: (785) 770-5929

Reply via email to