- MPI_Sendrecv(send_ptr + rank * send_chunk, send_count, send_type, rank, tag,
- recv_ptr + rank * recv_chunk, recv_count, recv_type, rank, tag,
- comm, &s);
+ smpi_mpi_sendrecv(send_ptr + rank * send_chunk, send_count, send_type, rank, tag,
+ recv_ptr + rank * recv_chunk, recv_count, recv_type, rank, tag,
+ comm, &s);
+
+ for (i = 1; i < num_procs; i++) {
+ src = (rank - i + num_procs) % num_procs;
+ dst = (rank + i) % num_procs;
+
+ smpi_mpi_sendrecv(send_ptr + dst * send_chunk, send_count, send_type,
+ dst, tag, recv_ptr + src * recv_chunk, recv_count,
+ recv_type, src, tag, comm, &s);