Re: [mpich-discuss] Erroneous MPI type tag warning
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 <[email protected]>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: [email protected] 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 [email protected] To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/discuss
participants (1)
-
Junchao Zhang