}
/* Allocate temporary receive buffer. */
- if(_xbt_replay_is_active()){
- recv_buf_free = (char*) SMPI_SHARED_MALLOC(buf_size);
- }else{
- recv_buf_free = (char*) xbt_malloc(buf_size);
- }
+ recv_buf_free = (char*) smpi_get_tmp_recvbuffer(buf_size);
+
recv_buf = recv_buf_free - lb;
if (NULL == recv_buf_free) {
err = MPI_ERR_OTHER;
}
/* allocate temporary buffer for results */
- if(_xbt_replay_is_active()){
- result_buf_free = (char*) SMPI_SHARED_MALLOC(buf_size);
- }else{
- result_buf_free = (char*) xbt_malloc(buf_size);
- }
+ result_buf_free = (char*) smpi_get_tmp_sendbuffer(buf_size);
+
result_buf = result_buf_free - lb;
/* copy local buffer into the temporary results */
cleanup:
if (NULL != disps) xbt_free(disps);
-
- if (!_xbt_replay_is_active()){
- if (NULL != recv_buf_free) xbt_free(recv_buf_free);
- if (NULL != result_buf_free) xbt_free(result_buf_free);
- }else{
- if (NULL != recv_buf_free) SMPI_SHARED_FREE(recv_buf_free);
- if (NULL != result_buf_free) SMPI_SHARED_FREE(result_buf_free);
- }
+ if (NULL != recv_buf_free) smpi_free_tmp_buffer(recv_buf_free);
+ if (NULL != result_buf_free) smpi_free_tmp_buffer(result_buf_free);
+
return err;
}
max_real_segsize = true_extent + (ptrdiff_t)(max_block_count - 1) * extent;
- accumbuf_free = (char*)xbt_malloc(true_extent + (ptrdiff_t)(total_count - 1) * extent);
+ accumbuf_free = (char*)smpi_get_tmp_recvbuffer(true_extent + (ptrdiff_t)(total_count - 1) * extent);
if (NULL == accumbuf_free) { ret = -1; line = __LINE__; goto error_hndl; }
accumbuf = accumbuf_free - lb;
- inbuf_free[0] = (char*)xbt_malloc(max_real_segsize);
+ inbuf_free[0] = (char*)smpi_get_tmp_sendbuffer(max_real_segsize);
if (NULL == inbuf_free[0]) { ret = -1; line = __LINE__; goto error_hndl; }
inbuf[0] = inbuf_free[0] - lb;
if (size > 2) {
- inbuf_free[1] = (char*)xbt_malloc(max_real_segsize);
+ inbuf_free[1] = (char*)smpi_get_tmp_sendbuffer(max_real_segsize);
if (NULL == inbuf_free[1]) { ret = -1; line = __LINE__; goto error_hndl; }
inbuf[1] = inbuf_free[1] - lb;
}
if (ret < 0) { line = __LINE__; goto error_hndl; }
if (NULL != displs) xbt_free(displs);
- if (NULL != accumbuf_free) xbt_free(accumbuf_free);
- if (NULL != inbuf_free[0]) xbt_free(inbuf_free[0]);
- if (NULL != inbuf_free[1]) xbt_free(inbuf_free[1]);
+ if (NULL != accumbuf_free) smpi_free_tmp_buffer(accumbuf_free);
+ if (NULL != inbuf_free[0]) smpi_free_tmp_buffer(inbuf_free[0]);
+ if (NULL != inbuf_free[1]) smpi_free_tmp_buffer(inbuf_free[1]);
return MPI_SUCCESS;
XBT_DEBUG( "%s:%4d\tRank %d Error occurred %d\n",
__FILE__, line, rank, ret);
if (NULL != displs) xbt_free(displs);
- if (NULL != accumbuf_free) xbt_free(accumbuf_free);
- if (NULL != inbuf_free[0]) xbt_free(inbuf_free[0]);
- if (NULL != inbuf_free[1]) xbt_free(inbuf_free[1]);
+ if (NULL != accumbuf_free) smpi_free_tmp_buffer(accumbuf_free);
+ if (NULL != inbuf_free[0]) smpi_free_tmp_buffer(inbuf_free[0]);
+ if (NULL != inbuf_free[1]) smpi_free_tmp_buffer(inbuf_free[1]);
return ret;
}