[mpich2-dev] some comments on attribute catching, create/free() keyvals and all that.
Dave Goodell
goodell at mcs.anl.gov
Fri Mar 13 13:14:42 CDT 2009
Lisandro,
Have you seen our recent commits on this issue? I believe that the
issues you pointed out were resolved in the following changesets:
r4025-r4030, r4044, r4048.
Related trac tickets: #222, #449
-Dave
On Mar 13, 2009, at 1:01 PM, Lisandro Dalcin wrote:
> As I've shown in a previous emal, MPICH2 likely implement
> create()/free() for keyvals using a counter that is incr/decr ...
>
> Now, give a try to the code pasted below. This shows that (at least in
> MPICH2), MPI_Keyval_free() have to be used with great care as it is
> IMHO dangerous, and basically these calls should be all done near
> MPI_Finalize() time... or bad things could happen...
>
> The only reference I can found in the MPI standard is at
> (http://www.mpi-forum.org/docs/mpi21-report-bw/node147.htm#Node147)
> where MPI_Comm_free_keyval() is explained... However, I believe that
> description is talking about different things...
>
> Should MPICH2 stop decrefing the keyval counter? You know, about 2<<31
> values should be enough, right ;-) ?
> But then.. What the pourpose of having MPI_Keyval_free()? Just to
> invalidate de passed value by setting it to KEYVAL_INVALID?
>
>
> #include <mpi.h>
> #include <stdio.h>
>
> int free_KeyVal(MPI_Comm c, int k, void *v,void *ctx)
> {
> printf("free_KeyVal()\n");
> return MPI_SUCCESS;
> }
>
> int main( int argc, char ** argv ) {
> int Key1, Key2, Val1=1, Val2=2, ValOut;
> MPI_Init(&argc, &argv);
>
> MPI_Keyval_create(MPI_NULL_COPY_FN, free_KeyVal, &Key1,(void *) 0);
> MPI_Attr_put(MPI_COMM_SELF, Key1, &Val1);
> MPI_Keyval_free(&Key1);
>
> MPI_Keyval_create(MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, &Key2,(void
> *) 0);
> MPI_Attr_put(MPI_COMM_SELF, Key2, &Val2);
> MPI_Keyval_free(&Key2);
>
> MPI_Finalize();
>
> return 0;
> }
>
>
> --
> Lisandro Dalcín
> ---------------
> Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
> Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
> Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
> PTLC - Güemes 3450, (3000) Santa Fe, Argentina
> Tel/Fax: +54-(0)342-451.1594
More information about the mpich2-dev
mailing list