Re: [OMPI devel] pgi and fortran in master
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
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
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