Daniel,Thanks for the fix. It is indeed the right solution. I'll make sure it gets into the trunk asap.
Thanks, george. On Jan 18, 2008, at 4:57 PM, Daniel G. Hyams wrote:
Sorry to reply to my own mail, but the bug only affects MPI_Allgatherv.In this changeset: https://svn.open-mpi.org/trac/ompi/changeset/16360In coll_self_allgatherv.c, the "extent" variable is never used. So thefix is just to multiply "extent" by disps[0], on line 50. I've verified that this fixes the problem. Daniel G. Hyams wrote:I don't think that the displacements (disps) are being handled correctlyin MPI_Allgatherv, for a single process case. The disps are being handled as byte offsets, instead of 'item' offsets...they need to be multiplied by the size, in bytes, of the MPI_Datatype being sent. This bug seems to be closely related this: https://svn.open-mpi.org/trac/ompi/changeset/16360 and probably is present in all of the routines listed there.The following code demonstrates the problem; make sure you run it as oneprocess only. The input and output should be the same, but that is not the case. ================================================== #include <stdio.h> #include <stdlib.h> #include <mpi.h> void tcalloc(int **p,int n) { *p = (int*)calloc(n,sizeof(int)); } int main(int argc, char * argv[]) { int i; int nto_global = 0; int np = 1; int *propto_global = NULL; int *propto = NULL; int nto = 10; int counts[1]; int displs[1]; MPI_Init(&argc,&argv); tcalloc(&propto,nto+1); for (i = 1; i <= nto; i++) propto[i] = i; counts[0] = nto; displs[0] = 1;// BUG: if I set displs[0] above to 4, things work as expected. But,the displacements // are supposed to be the number of items, not bytes. for (i = 0; i < np; i++) { nto_global += counts[i]; } tcalloc(&propto_global, nto_global+1); for (i = 1; i <= nto; i++) printf("INPUT %d --> %d\n",i,propto[i]); MPI_Allgatherv(propto+1, nto, MPI_INT, propto_global, counts, displs, MPI_INT, MPI_COMM_WORLD); for (i = 1; i <= nto_global; i++) printf("OUTPUT %d --> %d\n",i,propto_global[i]); free(propto_global); free(propto); return(0); }-- ========================================================= Daniel G. Hyams Associate Research Professor UT SimCenter at Chattanooga Email: daniel-hy...@utc.edu Phone: 423-425-5491 Fax: 423-425-5517 ========================================================= _______________________________________________ devel mailing list de...@open-mpi.org http://www.open-mpi.org/mailman/listinfo.cgi/devel
smime.p7s
Description: S/MIME cryptographic signature