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;
}

Reply via email to