Re: [mpich-discuss] [PATCH v2] test: add attrdeleteget, MPI_Attr_get called from delete_fn
Hi Jed, You should use MPI_COMM_CREATE_KEYVAL and MPI_COMM_GET_ATTR. KEYVAL_CREATE and ATTR_GET are deprecated. I'm not sure I understand the program. If the comm is invalidated before the delete_fn is called, this is erroneous. But if it is invalidated after the delete_fn is called, this is valid. So what exactly are you trying to do? -- Pavan On 05/17/2013 11:52 PM US Central Time, Jed Brown wrote:
With MS-MPI 64-bit from HPC Pack 2008 and 2012, MPI_Attr_get returns error code 773 when called from delete_fn on a communicator obtained from MPI_Comm_split.
Signed-off-by: Jed Brown <[email protected]> Signed-off-by: Satish Balay <[email protected]> --- Updated to propagate the error code from MPI_Attr_get.
test/mpi/.gitignore | 1 + test/mpi/attr/Makefile.am | 1 + test/mpi/attr/attrdeleteget.c | 36 ++++++++++++++++++++++++++++++++++++ test/mpi/attr/testlist | 1 + 4 files changed, 39 insertions(+) create mode 100644 test/mpi/attr/attrdeleteget.c
diff --git a/test/mpi/.gitignore b/test/mpi/.gitignore index 3aadba2..0bdcd15 100644 --- a/test/mpi/.gitignore +++ b/test/mpi/.gitignore @@ -51,6 +51,7 @@ /attr/attrerr /attr/attrerrcomm /attr/attrerrtype +/attr/attrdeleteget /attr/attric /attr/attrorder /attr/attrordercomm diff --git a/test/mpi/attr/Makefile.am b/test/mpi/attr/Makefile.am index a672192..e1d788b 100644 --- a/test/mpi/attr/Makefile.am +++ b/test/mpi/attr/Makefile.am @@ -18,6 +18,7 @@ noinst_PROGRAMS = \ attrerr \ attrerrcomm \ attrerrtype \ + attrdeleteget \ attr2type \ attrorder \ attrordercomm \ diff --git a/test/mpi/attr/attrdeleteget.c b/test/mpi/attr/attrdeleteget.c new file mode 100644 index 0000000..05afaa4 --- /dev/null +++ b/test/mpi/attr/attrdeleteget.c @@ -0,0 +1,36 @@ +/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ +/* + * + * (C) 2013 by Argonne National Laboratory. + * See COPYRIGHT in top-level directory. + */ + +#include <stdio.h> +#include "mpi.h" +#include "mpitest.h" + +int key = MPI_KEYVAL_INVALID; +char a[100]; + +int delete_fn (MPI_Comm, int, void *, void *); + +int main(int argc,char **argv) +{ + MPI_Comm scomm; + + MTest_Init(&argc,&argv); + MPI_Comm_split(MPI_COMM_WORLD,1,0,&scomm); + MPI_Keyval_create(MPI_NULL_COPY_FN,delete_fn,&key,(void*)0); + MPI_Attr_put(scomm,key,a); + MPI_Comm_free(&scomm); + MPI_Finalize(); + return 0; +} + +int delete_fn(MPI_Comm comm,int keyval,void *attr_val,void *extra_state) +{ + int flg; + void *ptr; + + return MPI_Attr_get(comm,key,&ptr,&flg); +} diff --git a/test/mpi/attr/testlist b/test/mpi/attr/testlist index 61bd613..4db94df 100644 --- a/test/mpi/attr/testlist +++ b/test/mpi/attr/testlist @@ -7,6 +7,7 @@ attrend2 1 attrend2 5 attrerrcomm 1 attrerrtype 1 +attrdeleteget 1 attr2type 1 attrorder 1 attrordercomm 1
-- Pavan Balaji http://www.mcs.anl.gov/~balaji
participants (1)
-
Pavan Balaji