<div dir="ltr">Oops, MPI_MAXLOC requires MPI_DOUBLE_INT and the like. <div>The <span style="font-family:arial,sans-serif;font-size:13px">MPI_Reduce(in, out, 2, INT, MPI_MAXLOC, ...)  approach is incorrect.</span><div><span style="font-family:arial,sans-serif;font-size:13px"><br>
</span></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 10:58 PM, Junchao Zhang <span dir="ltr"><<a href="mailto:jczhang@mcs.anl.gov" target="_blank">jczhang@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<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"><div><div class="h5">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>
</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
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:  <a href="tel:%2B49-2461-61-1773" value="+492461611773" target="_blank">+49-2461-61-1773</a><br>
Fax:    <a href="tel:%2B49-2461-61-6656" value="+492461616656" target="_blank">+49-2461-61-6656</a><br>
E-mail: <a href="mailto:m.geimer@fz-juelich.de" target="_blank">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></div></div>_______________________________________________<br>
discuss mailing list     <a href="mailto:discuss@mpich.org" target="_blank">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>
</blockquote></div><br></div>