Re: [OMPI devel] pgi and fortran in master

2015-08-30 Thread Jeff Squyres (jsquyres)
Rolf --

Can you ask your compiler guys something?  I don't know enough Fortran to say 
whether this is a bug or we're doing something wrong in OMPI.

Here's the code in question (from 
ompi/mpi/fortran/use-mpi-f08/cart_create_f08.F90):

-
8  subroutine 
MPI_Cart_create_f08(comm_old,ndims,dims,periods,reorder,comm_cart,ierror)
9 use :: mpi_f08_types, only : MPI_Comm
10! See note in mpi-f-interfaces-bind.h for why we "use mpi" here and   
 
11! call a PMPI_* subroutine below. 
 
12use :: mpi, only : PMPI_Cart_create
13implicit none
-

The problem is occurring as a conflict between lines 9 and 12.

The "use :: FOO" statement is somewhat analogous to an #include file in C: it 
imports a series of types and declarations for the compiler to use.

However, Fortran has a special "only" clause that lets you selectively bring in 
only parts of the specified module.

On line 9, we're importing the mpi_f08_types module, but supposedly only the 
declaration of the MPI_Comm type.
Similarly, on line 12, we're importing the mpi module, but supposedly only the 
declaration of the PMPI_Cart_create subroutine.

The problem is that elsewhere in the mpi_f08_types and mpi modules, we have 
conflicting declarations for all the symbols listed in the error message (e.g., 
mpi_fortran_bottom).  Specifically:

- in mpi_f08_types, mpi_fortran_bottom is "integer, bind(C, 
name="mpi_fortran_bottom_") :: MPI_BOTTOM"
- in mpi, mpi_fortran_bottom is "common/mpi_fortran_bottom/MPI_BOTTOM"

(*** it's complicated as to why we do this -- don't ask, unless you really want 
to know! ***)

My understanding was that the "only" clauses on lines 9 and 12 would make this 
ok -- i.e., the Fortran compiler should be ignoring the rest of the modules, 
and therefore ignore the apparently conflict.

Can you ask your Fortran compiler guys what the Fortran language spec says 
about this?


> On Aug 26, 2015, at 10:23 AM, Rolf vandeVaart <rvandeva...@nvidia.com> wrote:
> 
> I just tested this against the PGI 15.7 compiler and I see the same thing. It 
> appears that we get this error on some of the files called out in 
> ompi/mpi/fortran/use-mpi-f08/mpi-f-interfaces-bind.h as not having an 
> "easy-peasy" solution. All the other files compile just fine.  I checked the 
> list of failing files against the list called out in the 
> mpi-f-interfaces-bind.h file.  The mpi-f-interfaces-bind.h file calls out 32 
> files, but here is the list of files that are failing which is a subset of 
> them (20). Maybe that is a clue to what is going wrong.
> 
>   0 inform,   0 warnings,   9 severes, 0 fatal for mpi_cart_create_f08
>   0 inform,   0 warnings,   9 severes, 0 fatal for mpi_cart_get_f08
>   0 inform,   0 warnings,   9 severes, 0 fatal for mpi_cart_map_f08
>   0 inform,   0 warnings,   9 severes, 0 fatal for mpi_cart_sub_f08
>   0 inform,   0 warnings,   9 severes, 0 fatal for mpi_comm_get_attr_f08
>   0 inform,   0 warnings,   9 severes, 0 fatal for mpi_comm_test_inter_f08
>   0 inform,   0 warnings,   9 severes, 0 fatal for 
> mpi_dist_graph_create_adjacent_f08
>   0 inform,   0 warnings,   9 severes, 0 fatal for mpi_dist_graph_create_f08
>   0 inform,   0 warnings,   9 severes, 0 fatal for 
> mpi_dist_graph_neighbors_count_f08
>   0 inform,   0 warnings,   9 severes, 0 fatal for mpi_graph_create_f08
>   0 inform,   0 warnings,   9 severes, 0 fatal for mpi_info_get_f08
>   0 inform,   0 warnings,   9 severes, 0 fatal for mpi_info_get_valuelen_f08
>   0 inform,   0 warnings,   9 severes, 0 fatal for mpi_intercomm_merge_f08
>   0 inform,   0 warnings,   9 severes, 0 fatal for mpi_op_commutative_f08
>   0 inform,   0 warnings,   9 severes, 0 fatal for mpi_op_create_f08
>   0 inform,   0 warnings,   9 severes, 0 fatal for mpi_type_get_attr_f08
>   0 inform,   0 warnings,   9 severes, 0 fatal for mpi_win_get_attr_f08
>   0 inform,   0 warnings,   9 severes, 0 fatal for mpi_win_test_f08
>   0 inform,   0 warnings,   9 severes, 0 fatal for mpi_file_get_atomicity_f08
>   0 inform,   0 warnings,   9 severes, 0 fatal for mpi_file_set_atomicity_f08
> 
> 
> 
> From: devel <devel-boun...@open-mpi.org> on behalf of Paul Hargrove 
> <phhargr...@lbl.gov>
> Sent: Wednesday, August 26, 2015 6:50 AM
> To: Open MPI Developers
> Subject: [OMPI devel] pgi and fortran in master
>  
> It looks like current and past PGI fortran compilers that are happy with 
> 1.8.x and 1.10.x are unhappy with master:
> 
> /bin/sh ../../../../libtool  --tag=FC   --mode=compile pgf90 -DHAVE_CONFIG_H 
> -I. 
> -I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/ompi/mpi/fortran/use-mpi-f08
>  -I../../../../opal/include -I../..

Re: [OMPI devel] pgi and fortran in master

2015-08-26 Thread Rolf vandeVaart
I just tested this against the PGI 15.7 compiler and I see the same thing. It 
appears that we get this error on some of the files called out in 
ompi/mpi/fortran/use-mpi-f08/mpi-f-interfaces-bind.h as not having an 
"easy-peasy" solution. All the other files compile just fine.  I checked the 
list of failing files against the list called out in the 
mpi-f-interfaces-bind.h file.  The mpi-f-interfaces-bind.h file calls out 32 
files, but here is the list of files that are failing which is a subset of them 
(20). Maybe that is a clue to what is going wrong.


  0 inform,   0 warnings,   9 severes, 0 fatal for mpi_cart_create_f08
  0 inform,   0 warnings,   9 severes, 0 fatal for mpi_cart_get_f08
  0 inform,   0 warnings,   9 severes, 0 fatal for mpi_cart_map_f08
  0 inform,   0 warnings,   9 severes, 0 fatal for mpi_cart_sub_f08
  0 inform,   0 warnings,   9 severes, 0 fatal for mpi_comm_get_attr_f08
  0 inform,   0 warnings,   9 severes, 0 fatal for mpi_comm_test_inter_f08
  0 inform,   0 warnings,   9 severes, 0 fatal for 
mpi_dist_graph_create_adjacent_f08
  0 inform,   0 warnings,   9 severes, 0 fatal for mpi_dist_graph_create_f08
  0 inform,   0 warnings,   9 severes, 0 fatal for 
mpi_dist_graph_neighbors_count_f08
  0 inform,   0 warnings,   9 severes, 0 fatal for mpi_graph_create_f08
  0 inform,   0 warnings,   9 severes, 0 fatal for mpi_info_get_f08
  0 inform,   0 warnings,   9 severes, 0 fatal for mpi_info_get_valuelen_f08
  0 inform,   0 warnings,   9 severes, 0 fatal for mpi_intercomm_merge_f08
  0 inform,   0 warnings,   9 severes, 0 fatal for mpi_op_commutative_f08
  0 inform,   0 warnings,   9 severes, 0 fatal for mpi_op_create_f08
  0 inform,   0 warnings,   9 severes, 0 fatal for mpi_type_get_attr_f08
  0 inform,   0 warnings,   9 severes, 0 fatal for mpi_win_get_attr_f08
  0 inform,   0 warnings,   9 severes, 0 fatal for mpi_win_test_f08
  0 inform,   0 warnings,   9 severes, 0 fatal for mpi_file_get_atomicity_f08
  0 inform,   0 warnings,   9 severes, 0 fatal for mpi_file_set_atomicity_f08





From: devel <devel-boun...@open-mpi.org> on behalf of Paul Hargrove 
<phhargr...@lbl.gov>
Sent: Wednesday, August 26, 2015 6:50 AM
To: Open MPI Developers
Subject: [OMPI devel] pgi and fortran in master

It looks like current and past PGI fortran compilers that are happy with 1.8.x 
and 1.10.x are unhappy with master:

/bin/sh ../../../../libtool  --tag=FC   --mode=compile pgf90 -DHAVE_CONFIG_H 
-I. 
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/ompi/mpi/fortran/use-mpi-f08
 -I../../../../opal/include -I../../../../ompi/include 
-I../../../../oshmem/include 
-I../../../../opal/mca/hwloc/hwloc1110/hwloc/include/private/autogen 
-I../../../../opal/mca/hwloc/hwloc1110/hwloc/include/hwloc/autogen 
-I../../../../ompi/mpiext/cuda/c   
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df
 -I../../../.. 
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/opal/include
 
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/orte/include
 -I../../../../orte/include 
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/ompi/include
 
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/oshmem/include
   
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/opal/mca/hwloc/hwloc1110/hwloc/include
 
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/BLD/opal/mca/hwloc/hwloc1110/hwloc/include
 
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/opal/mca/event/libevent2022/libevent
 
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/opal/mca/event/libevent2022/libevent/include
 
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/BLD/opal/mca/event/libevent2022/libevent/include
 -I../../../../ompi/include 
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/ompi/include
 -I../../../../ompi/mpi/fortran/use-mpi-ignore-tkr -I. 
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df
  -g -c -o cart_create_f08.lo 
/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/ompi/mpi/fortran/use-mpi-f08/cart_create_f08.F90
libtool: compile:  pgf90 -DHAVE_CONFIG_H -I. 
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/ompi/mpi/fortran/use-mpi-f08
 -I../../../../opal/include -I../../../../ompi/include 
-I../../../../oshmem/include 
-I../../../../opal/mca/hwloc/hwloc1110/hwloc/include/private/autogen 
-I../../../../op

[OMPI devel] pgi and fortran in master

2015-08-26 Thread Paul Hargrove
It looks like current and past PGI fortran compilers that are happy with
1.8.x and 1.10.x are unhappy with master:

/bin/sh ../../../../libtool  --tag=FC   --mode=compile pgf90
-DHAVE_CONFIG_H -I.
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/ompi/mpi/fortran/use-mpi-f08
-I../../../../opal/include -I../../../../ompi/include
-I../../../../oshmem/include
-I../../../../opal/mca/hwloc/hwloc1110/hwloc/include/private/autogen
-I../../../../opal/mca/hwloc/hwloc1110/hwloc/include/hwloc/autogen
-I../../../../ompi/mpiext/cuda/c
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df
-I../../../..
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/opal/include
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/orte/include
-I../../../../orte/include
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/ompi/include
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/oshmem/include

-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/opal/mca/hwloc/hwloc1110/hwloc/include
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/BLD/opal/mca/hwloc/hwloc1110/hwloc/include
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/opal/mca/event/libevent2022/libevent
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/opal/mca/event/libevent2022/libevent/include
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/BLD/opal/mca/event/libevent2022/libevent/include
-I../../../../ompi/include
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/ompi/include
-I../../../../ompi/mpi/fortran/use-mpi-ignore-tkr -I.
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df
 -g -c -o cart_create_f08.lo
/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/ompi/mpi/fortran/use-mpi-f08/cart_create_f08.F90
libtool: compile:  pgf90 -DHAVE_CONFIG_H -I.
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/ompi/mpi/fortran/use-mpi-f08
-I../../../../opal/include -I../../../../ompi/include
-I../../../../oshmem/include
-I../../../../opal/mca/hwloc/hwloc1110/hwloc/include/private/autogen
-I../../../../opal/mca/hwloc/hwloc1110/hwloc/include/hwloc/autogen
-I../../../../ompi/mpiext/cuda/c
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df
-I../../../..
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/opal/include
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/orte/include
-I../../../../orte/include
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/ompi/include
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/oshmem/include
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/opal/mca/hwloc/hwloc1110/hwloc/include
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/BLD/opal/mca/hwloc/hwloc1110/hwloc/include
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/opal/mca/event/libevent2022/libevent
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/opal/mca/event/libevent2022/libevent/include
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/BLD/opal/mca/event/libevent2022/libevent/include
-I../../../../ompi/include
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/ompi/include
-I../../../../ompi/mpi/fortran/use-mpi-ignore-tkr -I.
-I/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df
-g -c
/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/ompi/mpi/fortran/use-mpi-f08/cart_create_f08.F90
 -fpic -o .libs/cart_create_f08.o
PGF90-S-0166-mpi_fortran_weights_empty cannot be a common block and a
subprogram
(/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/ompi/mpi/fortran/use-mpi-f08/cart_create_f08.F90)
PGF90-S-0166-mpi_fortran_unweighted cannot be a common block and a
subprogram
(/scratch/scratchdirs/hargrove/OMPI/openmpi-master-linux-x86_64-pgi-14.7/openmpi-dev-2371-gea935df/ompi/mpi/fortran/use-mpi-f08/cart_create_f08.F90)
PGF90-S-0166-mpi_fortran_statuses_ignore cannot be a common block and a