<div dir="ltr">Hi, Markus,<br> 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).<br> 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}.<div>
<div><br></div><div> 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.</div>
<div><br></div></div></div><div class="gmail_extra"><br clear="all"><div><div dir="ltr">--Junchao Zhang</div></div>
<br><br><div class="gmail_quote">On Sun, Dec 22, 2013 at 3:56 AM, Markus Geimer <span dir="ltr"><<a href="mailto:m.geimer@fz-juelich.de" target="_blank">m.geimer@fz-juelich.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Dear MPICH developers,<br>
<br>
When compiling the attached example with MPICH 3.1rc2 using Clang 3.3,<br>
I get the following compiler warnings:<br>
<br>
-------------------- snip --------------------<br>
mpi2int.c:17:20: warning: argument type 'int *' doesn't match specified<br>
'MPI' type tag [-Wtype-safety]<br>
MPI_Reduce(in, out, 1, MPI_2INT, MPI_MAXLOC, 0, MPI_COMM_WORLD);<br>
^~~ ~~~~~~~~<br>
mpi2int.c:17:16: warning: argument type 'int *' doesn't match specified<br>
'MPI' type tag [-Wtype-safety]<br>
MPI_Reduce(in, out, 1, MPI_2INT, MPI_MAXLOC, 0, MPI_COMM_WORLD);<br>
^~ ~~~~~~~~<br>
2 warnings generated.<br>
-------------------- snip --------------------<br>
<br>
According to the MPI standard, however, MPI_2INT is a datatype as if<br>
defined by<br>
<br>
MPI_Type_contiguous(2, MPI_INT, MPI_2INT)<br>
<br>
i.e., 'int[2]' should be a perfect match. This is not necessarily true<br>
for the type used for comparison,<br>
<br>
struct mpich_struct_mpi_2int { int i1; int i2; };<br>
<br>
which will only be contiguous if the compiler does not add any padding.<br>
<br>
Is there any chance this gets fixed for the final 3.1 release? Or did<br>
I miss something?<br>
<br>
Thanks,<br>
Markus<br>
<br>
--<br>
Dr. Markus Geimer<br>
Juelich Supercomputing Centre<br>
Institute for Advanced Simulation<br>
Forschungszentrum Juelich GmbH<br>
52425 Juelich, Germany<br>
<br>
Phone: +49-2461-61-1773<br>
Fax: +49-2461-61-6656<br>
E-mail: <a href="mailto:m.geimer@fz-juelich.de">m.geimer@fz-juelich.de</a><br>
WWW: <a href="http://www.fz-juelich.de/jsc/" target="_blank">http://www.fz-juelich.de/jsc/</a><br>
<br>
<br>
------------------------------------------------------------------------------------------------<br>
------------------------------------------------------------------------------------------------<br>
Forschungszentrum Juelich GmbH<br>
52425 Juelich<br>
Sitz der Gesellschaft: Juelich<br>
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498<br>
Vorsitzender des Aufsichtsrats: MinDir Dr. Karl Eugen Huthmacher<br>
Geschaeftsfuehrung: Prof. Dr. Achim Bachem (Vorsitzender),<br>
Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,<br>
Prof. Dr. Sebastian M. Schmidt<br>
------------------------------------------------------------------------------------------------<br>
------------------------------------------------------------------------------------------------<br>
<br>
<br>_______________________________________________<br>
discuss mailing list <a href="mailto:discuss@mpich.org">discuss@mpich.org</a><br>
To manage subscription options or unsubscribe:<br>
<a href="https://lists.mpich.org/mailman/listinfo/discuss" target="_blank">https://lists.mpich.org/mailman/listinfo/discuss</a><br></blockquote></div><br></div>