This is with 1.10.1, configured with flags --enable-debug
--enable-mem-debug. Use the attached test cases to reproduce yourself.

* Iallgatherv() prints a warning, but otherwise seems to succeed (for
some reason, running under valgrind hangs, so I cannot test further):

$ mpicc iallgatherv.c
$ ./a.out
MPI Error in MPI_Pack_size() (0:0)

* Iscatterv() and Igatherv() both prints the pack-size error and fail:

$ mpicc iscatterv.c
$ ./a.out
MPI Error in MPI_Pack_size() (0:0)
Error in NBC_Copy() (49)
[kw2060:25204] *** An error occurred in MPI_Iscatterv
[kw2060:25204] *** reported by process [140736503742465,0]
[kw2060:25204] *** on communicator MPI_COMM_SELF
[kw2060:25204] *** MPI_ERR_SIZE: invalid size
[kw2060:25204] *** MPI_ERRORS_ARE_FATAL (processes in this
communicator will now abort,
[kw2060:25204] ***    and potentially your MPI job)

$ mpicc igatherv.c
$ ./a.out
MPI Error in MPI_Pack_size() (0:0)
Error in NBC_Copy() (49)
[kw2060:25212] *** An error occurred in MPI_Igatherv
[kw2060:25212] *** reported by process [140727914332161,0]
[kw2060:25212] *** on communicator MPI_COMM_SELF
[kw2060:25212] *** MPI_ERR_SIZE: invalid size
[kw2060:25212] *** MPI_ERRORS_ARE_FATAL (processes in this
communicator will now abort,
[kw2060:25212] ***    and potentially your MPI job)



-- 
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 <mpi.h>
int main(int argc, char *argv[])
{
  signed char a=1,b=2;
  int rcounts[1] = {0};
  int rdispls[1] = {0};
  MPI_Request request;
  MPI_Init(&argc, &argv);
  MPI_Iallgatherv(&a, 0, MPI_SIGNED_CHAR,
                  &b, rcounts, rdispls, MPI_SIGNED_CHAR,
                  MPI_COMM_SELF, &request);
  MPI_Wait(&request, MPI_STATUS_IGNORE);
  MPI_Finalize();
  return 0;
}
#include <mpi.h>
int main(int argc, char *argv[])
{
  signed char a=1,b=2;
  int rcounts[1] = {0};
  int rdispls[1] = {0};
  MPI_Request request;
  MPI_Init(&argc, &argv);
  MPI_Igatherv(&a, 0, MPI_SIGNED_CHAR,
               &b, rcounts, rdispls, MPI_SIGNED_CHAR,
               0, MPI_COMM_SELF, &request);
  MPI_Wait(&request, MPI_STATUS_IGNORE);
  MPI_Finalize();
  return 0;
}
#include <mpi.h>
int main(int argc, char *argv[])
{
  signed char a=1,b=2;
  int scounts[1] = {0};
  int sdispls[1] = {0};
  MPI_Request request;
  MPI_Init(&argc, &argv);
  MPI_Iscatterv(&a, scounts, sdispls, MPI_SIGNED_CHAR,
                &b, 0, MPI_SIGNED_CHAR,
                0, MPI_COMM_SELF, &request);
  MPI_Wait(&request, MPI_STATUS_IGNORE);
  MPI_Finalize();
  return 0;
}

Reply via email to