#include "colls_private.h"
#include "coll_tuned_topo.h"
+#include "xbt/replay.h"
/*
* Recursive-halving function is (*mostly*) copied from the BASIC coll module.
}
/* Allocate temporary receive buffer. */
- recv_buf_free = (char*) xbt_malloc(buf_size);
+#ifndef WIN32
+ if(_xbt_replay_is_active()){
+ recv_buf_free = (char*) SMPI_SHARED_MALLOC(buf_size);
+ }else
+#endif
+ recv_buf_free = (char*) xbt_malloc(buf_size);
+
recv_buf = recv_buf_free - lb;
if (NULL == recv_buf_free) {
err = MPI_ERR_OTHER;
}
/* allocate temporary buffer for results */
- result_buf_free = (char*) xbt_malloc(buf_size);
+#ifndef WIN32
+ if(_xbt_replay_is_active()){
+ result_buf_free = (char*) SMPI_SHARED_MALLOC(buf_size);
+ }else
+#endif
+ result_buf_free = (char*) xbt_malloc(buf_size);
+
result_buf = result_buf_free - lb;
/* copy local buffer into the temporary results */
cleanup:
if (NULL != disps) xbt_free(disps);
- if (NULL != recv_buf_free) xbt_free(recv_buf_free);
- if (NULL != result_buf_free) xbt_free(result_buf_free);
-
+ 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);
+ }
+#ifndef WIN32
+ else{
+ if (NULL != recv_buf_free) SMPI_SHARED_FREE(recv_buf_free);
+ if (NULL != result_buf_free) SMPI_SHARED_FREE(result_buf_free);
+ }
+#endif
return err;
}