Despite working for communicators and windows, setting a NULL
attribute value in datatypes fails with MPI_ERR_ARG. Run the attached
test case to reproduce.
--
Lisandro Dalcin
============
Research Scientist
Computer, Electrical and Mathematical Sciences & Engineering (CEMSE)
Numerical Porous Media Center (NumPor)
King Abdullah University of Science and Technology (KAUST)
http://numpor.kaust.edu.sa/
4700 King Abdullah University of Science and Technology
al-Khawarizmi Bldg (Bldg 1), Office # 4332
Thuwal 23955-6900, Kingdom of Saudi Arabia
http://www.kaust.edu.sa
Office Phone: +966 12 808-0459
#include <stdlib.h>
#include <mpi.h>
int main(int argc, char *argv[])
{
int keyval;
MPI_Win win = MPI_WIN_NULL;
MPI_Comm comm = MPI_COMM_WORLD;
MPI_Datatype datatype = MPI_BYTE;
MPI_Init(&argc, &argv);
MPI_Win_create_keyval(MPI_WIN_NULL_COPY_FN, MPI_WIN_NULL_DELETE_FN, &keyval, NULL);
MPI_Win_create(MPI_BOTTOM, 0, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &win);
MPI_Win_set_attr(win, keyval, NULL);
MPI_Win_delete_attr(win, keyval);
MPI_Win_free(&win);
MPI_Win_free_keyval(&keyval);
MPI_Comm_create_keyval(MPI_COMM_NULL_COPY_FN, MPI_COMM_NULL_DELETE_FN, &keyval, NULL);
MPI_Comm_set_attr(comm, keyval, NULL);
MPI_Comm_delete_attr(comm, keyval);
MPI_Comm_free_keyval(&keyval);
MPI_Type_create_keyval(MPI_TYPE_NULL_COPY_FN, MPI_TYPE_NULL_DELETE_FN, &keyval, NULL);
MPI_Type_set_attr(datatype, keyval, NULL);
MPI_Type_delete_attr(datatype, keyval);
MPI_Type_free_keyval(&keyval);
MPI_Finalize();
return 0;
}