while (sent_count < (size - 1)) {
for (i = 1; i < size; i++) {
- if (already_received[i] == 0)
+ if (already_received[i] == 0) {
smpi_mpi_iprobe(i, MPI_ANY_TAG, MPI_COMM_WORLD, &flag_array[i],
- MPI_STATUSES_IGNORE);
+ MPI_STATUSES_IGNORE);
+ simcall_process_sleep(0.0001);
+ }
}
header_index = 0;
smpi_mpi_send(header_buf, HEADER_SIZE, MPI_INT, to, tag, comm);
smpi_mpi_recv(tmp_buf, count, datatype, from, tag, comm, &status);
- star_reduction(op, tmp_buf, rbuf, &count, &datatype);
+ smpi_op_apply(op, tmp_buf, rbuf, &count, &datatype);
}
} /* while loop */
}
from = header_buf[myordering - 1];
smpi_mpi_recv(tmp_buf, count, datatype, header_buf[myordering - 1], tag,
comm, &status);
- star_reduction(op, tmp_buf, rbuf, &count, &datatype);
+ smpi_op_apply(op, tmp_buf, rbuf, &count, &datatype);
smpi_mpi_send(rbuf, count, datatype, to, tag, comm);
}
} /* non-root */
for (i = 0; i < pipe_length; i++) {
smpi_mpi_recv(tmp_buf + (i * increment), segment, datatype, from, tag,
comm, &status);
- star_reduction(op, tmp_buf + (i * increment),
+ smpi_op_apply(op, tmp_buf + (i * increment),
(char *)rbuf + (i * increment), &segment, &datatype);
}
}
}
for (i = 0; i < pipe_length; i++) {
smpi_mpi_wait(&recv_request_array[i], MPI_STATUS_IGNORE);
- star_reduction(op, tmp_buf + (i * increment), (char *)rbuf + (i * increment),
+ smpi_op_apply(op, tmp_buf + (i * increment), (char *)rbuf + (i * increment),
&segment, &datatype);
send_request_array[i]=smpi_mpi_isend((char *)rbuf + (i * increment), segment, datatype, to, tag, comm);
}