int smpi_coll_tuned_alltoall_2dmesh(void *send_buff, int send_count,
MPI_Datatype send_type,
void *recv_buff, int recv_count,
- MPI_Datatype recv_type,
- MPI_Comm comm)
+ MPI_Datatype recv_type, MPI_Comm comm)
{
MPI_Status *statuses, s;
MPI_Request *reqs, *req_ptr;;
int i, j, src, dst, rank, num_procs, count, num_reqs;
int X, Y, send_offset, recv_offset;
int my_row_base, my_col_base, src_row_base, block_size;
- int tag = 1, failure = 0, success = 1;
+ int tag = 1;
MPI_Comm_rank(comm, &rank);
MPI_Comm_size(comm, &num_procs);
MPI_Type_extent(send_type, &extent);
if (!alltoall_check_is_2dmesh(num_procs, &X, &Y))
- return failure;
+ return MPI_ERR_OTHER;
my_row_base = (rank / Y) * Y;
my_col_base = rank % Y;
if (!tmp_buff1) {
XBT_DEBUG("alltoall-2dmesh_shoot.c:88: cannot allocate memory");
MPI_Finalize();
- exit(failure);
+ exit(MPI_ERR_OTHER);
}
tmp_buff2 = (char *) malloc(block_size * Y);
if (!tmp_buff2) {
XBT_WARN("alltoall-2dmesh_shoot.c:88: cannot allocate memory");
MPI_Finalize();
- exit(failure);
+ exit(MPI_ERR_OTHER);
}
if (!reqs) {
XBT_WARN("alltoall-2dmesh_shoot.c:88: cannot allocate memory");
MPI_Finalize();
- exit(failure);
+ exit(MPI_ERR_OTHER);
}
req_ptr = reqs;
recv_offset = (my_row_base * block_size) + (i * block_size);
if (i + my_row_base == rank)
- MPI_Sendrecv((char *)send_buff + recv_offset, send_count, send_type,
+ MPI_Sendrecv((char *) send_buff + recv_offset, send_count, send_type,
rank, tag,
- (char*)recv_buff + recv_offset, recv_count, recv_type,
+ (char *) recv_buff + recv_offset, recv_count, recv_type,
rank, tag, comm, &s);
else
MPI_Sendrecv(tmp_buff1 + send_offset, send_count, send_type,
rank, tag,
- (char *)recv_buff + recv_offset, recv_count, recv_type,
+ (char *) recv_buff + recv_offset, recv_count, recv_type,
rank, tag, comm, &s);
}
continue;
src_row_base = (src / Y) * Y;
- MPI_Irecv((char *)recv_buff + src_row_base * block_size, recv_count * Y,
+ MPI_Irecv((char *) recv_buff + src_row_base * block_size, recv_count * Y,
recv_type, src, tag, comm, req_ptr++);
}
send_offset = (dst + j * num_procs) * block_size;
if (j + my_row_base == rank)
- MPI_Sendrecv((char *)send_buff + dst * block_size, send_count, send_type,
- rank, tag,
- tmp_buff2 + recv_offset, recv_count, recv_type,
- rank, tag, comm, &s);
+ MPI_Sendrecv((char *) send_buff + dst * block_size, send_count,
+ send_type, rank, tag, tmp_buff2 + recv_offset, recv_count,
+ recv_type, rank, tag, comm, &s);
else
MPI_Sendrecv(tmp_buff1 + send_offset, send_count, send_type,
rank, tag,
free(statuses);
free(tmp_buff1);
free(tmp_buff2);
- return success;
+ return MPI_SUCCESS;
}