int size = comm->size();
int count = 0;
int* displs = new int[size];
+ int regular=1;
for (int i = 0; i < size; i++) {
+ if(recvcounts[i]!=recvcounts[0]){
+ regular=0;
+ continue;
+ }
displs[i] = count;
count += recvcounts[i];
}
+ if(not regular)
+ return reduce_scatter__ompi(sendbuf, recvbuf, recvcounts, datatype, op, comm);
+
unsigned char* tmpbuf = smpi_get_tmp_sendbuffer(count * datatype->get_extent());
int ret = reduce__default(sendbuf, tmpbuf, count, datatype, op, 0, comm);