if (source < comm_size) {
source = (source + root) % comm_size;
smpi_mpi_recv(tmp_buf, count, datatype, source, tag, comm, &status);
if (source < comm_size) {
source = (source + root) % comm_size;
smpi_mpi_recv(tmp_buf, count, datatype, source, tag, comm, &status);