From 0249cf7510f7d9b8264ebddea2e84c2c35039ef1 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 19 Jun 2020 01:10:45 -0400 Subject: [PATCH] better and more general version of the previous commit --- src/comm.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/comm.cpp b/src/comm.cpp index 2ac933fe45..8fad736af6 100644 --- a/src/comm.cpp +++ b/src/comm.cpp @@ -901,7 +901,7 @@ rendezvous_irregular(int n, char *inbuf, int insize, int inorder, int *procs, if (inorder) nrvous = irregular->create_data_grouped(n,procs); else nrvous = irregular->create_data(n,procs); - char *inbuf_rvous = (char *) memory->smalloc((bigint) nrvous*insize, + char *inbuf_rvous = (char *) memory->smalloc((bigint) nrvous*insize+1, "rendezvous:inbuf"); irregular->exchange_data(inbuf,insize,inbuf_rvous); @@ -936,7 +936,7 @@ rendezvous_irregular(int n, char *inbuf, int insize, int inorder, int *procs, nout = irregular->create_data_grouped(nrvous_out,procs_rvous); else nout = irregular->create_data(nrvous_out,procs_rvous); - outbuf = (char *) memory->smalloc((bigint) nout*outsize, + outbuf = (char *) memory->smalloc((bigint) nout*outsize+1, "rendezvous:outbuf"); irregular->exchange_data(outbuf_rvous,outsize,outbuf); @@ -975,9 +975,9 @@ rendezvous_all2all(int n, char *inbuf, int insize, int inorder, int *procs, if (!inorder) { memory->create(procs_a2a,nprocs,"rendezvous:procs"); - inbuf_a2a = (char *) memory->smalloc((bigint) n*insize, + inbuf_a2a = (char *) memory->smalloc((bigint) n*insize+1, "rendezvous:inbuf"); - memset(inbuf_a2a,0,(bigint)(n+1)*insize*sizeof(char)); + memset(inbuf_a2a,0,(bigint)n*insize*sizeof(char)); memory->create(offsets,nprocs,"rendezvous:offsets"); for (int i = 0; i < nprocs; i++) procs_a2a[i] = 0; @@ -1039,7 +1039,7 @@ rendezvous_all2all(int n, char *inbuf, int insize, int inorder, int *procs, // all2all comm of inbuf from caller decomp to rendezvous decomp - char *inbuf_rvous = (char *) memory->smalloc((bigint) (nrvous+1)*insize, + char *inbuf_rvous = (char *) memory->smalloc((bigint) nrvous*insize+1, "rendezvous:inbuf"); memset(inbuf_rvous,0,(bigint) nrvous*insize*sizeof(char)); @@ -1079,7 +1079,7 @@ rendezvous_all2all(int n, char *inbuf, int insize, int inorder, int *procs, if (!outorder) { memory->create(procs_a2a,nprocs,"rendezvous_a2a:procs"); - outbuf_a2a = (char *) memory->smalloc((bigint) (nrvous_out+1)*outsize, + outbuf_a2a = (char *) memory->smalloc((bigint) nrvous_out*outsize+1, "rendezvous:outbuf"); memory->create(offsets,nprocs,"rendezvous:offsets"); @@ -1139,7 +1139,7 @@ rendezvous_all2all(int n, char *inbuf, int insize, int inorder, int *procs, // all2all comm of outbuf from rendezvous decomp back to caller decomp // caller will free outbuf - outbuf = (char *) memory->smalloc((bigint)(nout+1)*outsize,"rendezvous:outbuf"); + outbuf = (char *) memory->smalloc((bigint) nout*outsize+1,"rendezvous:outbuf"); MPI_Alltoallv(outbuf_a2a,sendcount,sdispls,MPI_CHAR, outbuf,recvcount,rdispls,MPI_CHAR,world);