Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: [OMPI users] Bug Iscatterv/Igatherv
From: Pierre Jolivet (jolivet_at_[hidden])
Date: 2013-11-26 14:17:26


Hello,
Just like r29736, I believe that there are some missing tests in ompi/mca/coll/libnbc/nbc_iscatterv.c and ompi/mca/coll/libnbc/nbc_igatherv.c
Thoughts ?
Pierre

Index: nbc_igatherv.c
===================================================================
--- nbc_igatherv.c (revision 29756)
+++ nbc_igatherv.c (working copy)
@@ -36,8 +36,10 @@
  if (MPI_SUCCESS != res) { printf("MPI Error in MPI_Comm_rank() (%i)\n", res); return res; }
  res = MPI_Comm_size(comm, &p);
  if (MPI_SUCCESS != res) { printf("MPI Error in MPI_Comm_rank() (%i)\n", res); return res; }
- res = MPI_Type_extent(recvtype, &rcvext);
- if (MPI_SUCCESS != res) { printf("MPI Error in MPI_Type_extent() (%i)\n", res); return res; }
+ if (rank == root) {
+ res = MPI_Type_extent(recvtype, &rcvext);
+ if (MPI_SUCCESS != res) { printf("MPI Error in MPI_Type_extent() (%i)\n", res); return res; }
+ }

  schedule = (NBC_Schedule*)malloc(sizeof(NBC_Schedule));
  if (NULL == schedule) { printf("Error in malloc() (%i)\n", res); return res; }
Index: nbc_iscatterv.c
===================================================================
--- nbc_iscatterv.c (revision 29756)
+++ nbc_iscatterv.c (working copy)
@@ -38,8 +38,10 @@
  if (MPI_SUCCESS != res) { printf("MPI Error in MPI_Comm_rank() (%i)\n", res); return res; }
  res = MPI_Comm_size(comm, &p);
  if (MPI_SUCCESS != res) { printf("MPI Error in MPI_Comm_size() (%i)\n", res); return res; }
- res = MPI_Type_extent(sendtype, &sndext);
- if (MPI_SUCCESS != res) { printf("MPI Error in MPI_Type_extent() (%i)\n", res); return res; }
+ if (rank == root) {
+ res = MPI_Type_extent(sendtype, &sndext);
+ if (MPI_SUCCESS != res) { printf("MPI Error in MPI_Type_extent() (%i)\n", res); return res; }
+ }

  schedule = (NBC_Schedule*)malloc(sizeof(NBC_Schedule));
  if (NULL == schedule) { printf("Error in malloc()\n"); return res; }