int leader_root, leader_of_root;
MPI_Status status;
MPI_Aint sendtype_extent = 0, recvtype_extent = 0; /* Datatype extent */
- MPI_Aint true_lb, sendtype_true_extent, recvtype_true_extent;
+ MPI_Aint true_lb = 0, sendtype_true_extent = 0, recvtype_true_extent = 0;
MPI_Comm shmem_comm, leader_comm;
void* tmp_buf = NULL;
if (local_rank == 0) {
/* Node leader, allocate tmp_buffer */
if (rank == root) {
- tmp_buf = xbt_malloc(recvcnt * MAX(recvtype_extent,
+ tmp_buf = smpi_get_tmp_recvbuffer(recvcnt * MAX(recvtype_extent,
recvtype_true_extent) * local_size);
} else {
- tmp_buf = xbt_malloc(sendcnt * MAX(sendtype_extent,
+ tmp_buf = smpi_get_tmp_sendbuffer(sendcnt * MAX(sendtype_extent,
sendtype_true_extent) *
local_size);
}
* leader and this process's rank in the leader_comm
* is the same as leader_root */
if(rank == root) {
- leader_gather_buf = xbt_malloc(recvcnt *
+ leader_gather_buf = smpi_get_tmp_recvbuffer(recvcnt *
MAX(recvtype_extent,
recvtype_true_extent) *
comm_size);
} else {
- leader_gather_buf = xbt_malloc(sendcnt *
+ leader_gather_buf = smpi_get_tmp_sendbuffer(sendcnt *
MAX(sendtype_extent,
sendtype_true_extent) *
comm_size);
if (leader_comm_rank == leader_root && root != leader_of_root) {
/* The root of the Gather operation is not a node-level leader
*/
- leader_gather_buf = xbt_malloc(nbytes * comm_size);
+ leader_gather_buf = smpi_get_tmp_sendbuffer(nbytes * comm_size);
if (leader_gather_buf == NULL) {
mpi_errno = MPI_ERR_OTHER;
return mpi_errno;
/* check if multiple threads are calling this collective function */
if (local_rank == 0 ) {
if (tmp_buf != NULL) {
- xbt_free(tmp_buf);
+ smpi_free_tmp_buffer(tmp_buf);
}
if (leader_gather_buf != NULL) {
- xbt_free(leader_gather_buf);
+ smpi_free_tmp_buffer(leader_gather_buf);
}
}