Hi, Markus,
  I think you should change MPI_Reduce(in, out, 1, MPI_2INT, MPI_MAXLOC, 0, MPI_COMM_WORLD)  to  MPI_Reduce(in, out, 2, INT, MPI_MAXLOC, 0, MPI_COMM_WORLD).
  I guess the warning has nothing to do with padding. For MPI_Reduce(in, out, 1, MPI_2INT, ...), the compiler tries to match int, i.e., typeof(*in), with MPI_2INT.  Whatever the layout of MPI_2INT is defined (e.g., struct {int i1; int i2} or int[2]), the compiler fails at matching. If you want to use MPI_2INT, then in, out should be defined as of type struct {int v1;  int v2}.

  I agree that MPI_Reduce(in, out, 1, MPI_2INT, ...) is absolutely right.  I think the only reason for the warning is that the compiler is not smart enough. For example, when matching a pointer P with a type T, the compiler should try to match typeof(*P) ~ T, typeof(*P)[2] ~T, typeof(*P)[3] ~ T, etc.


--Junchao Zhang


On Sun, Dec 22, 2013 at 3:56 AM, Markus Geimer <m.geimer@fz-juelich.de> wrote:
Dear MPICH developers,

When compiling the attached example with MPICH 3.1rc2 using Clang 3.3,
I get the following compiler warnings:

-------------------- snip --------------------
mpi2int.c:17:20: warning: argument type 'int *' doesn't match specified
'MPI' type tag [-Wtype-safety]
    MPI_Reduce(in, out, 1, MPI_2INT, MPI_MAXLOC, 0, MPI_COMM_WORLD);
                   ^~~     ~~~~~~~~
mpi2int.c:17:16: warning: argument type 'int *' doesn't match specified
'MPI' type tag [-Wtype-safety]
    MPI_Reduce(in, out, 1, MPI_2INT, MPI_MAXLOC, 0, MPI_COMM_WORLD);
               ^~          ~~~~~~~~
2 warnings generated.
-------------------- snip --------------------

According to the MPI standard, however, MPI_2INT is a datatype as if
defined by

        MPI_Type_contiguous(2, MPI_INT, MPI_2INT)

i.e., 'int[2]' should be a perfect match. This is not necessarily true
for the type used for comparison,

        struct mpich_struct_mpi_2int { int i1; int i2; };

which will only be contiguous if the compiler does not add any padding.

Is there any chance this gets fixed for the final 3.1 release? Or did
I miss something?

Thanks,
Markus

--
Dr. Markus Geimer
Juelich Supercomputing Centre
Institute for Advanced Simulation
Forschungszentrum Juelich GmbH
52425 Juelich, Germany

Phone:  +49-2461-61-1773
Fax:    +49-2461-61-6656
E-mail: m.geimer@fz-juelich.de
WWW:    http://www.fz-juelich.de/jsc/


------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
Forschungszentrum Juelich GmbH
52425 Juelich
Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzender des Aufsichtsrats: MinDir Dr. Karl Eugen Huthmacher
Geschaeftsfuehrung: Prof. Dr. Achim Bachem (Vorsitzender),
Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,
Prof. Dr. Sebastian M. Schmidt
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------


_______________________________________________
discuss mailing list     discuss@mpich.org
To manage subscription options or unsubscribe:
https://lists.mpich.org/mailman/listinfo/discuss