A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid
[simgrid.git]
/
src
/
smpi
/
colls
/
allreduce-ompi-ring-segmented.c
diff --git
a/src/smpi/colls/allreduce-ompi-ring-segmented.c
b/src/smpi/colls/allreduce-ompi-ring-segmented.c
index
d230b91
..
a8ea2ac
100644
(file)
--- a/
src/smpi/colls/allreduce-ompi-ring-segmented.c
+++ b/
src/smpi/colls/allreduce-ompi-ring-segmented.c
@@
-135,7
+135,7
@@
*
*/
*
*/
-
#define COLL_TUNED_COMPUTED_SEGCOUNT(SEGSIZE, TYPELNG, SEGCOUNT) \
+#define COLL_TUNED_COMPUTED_SEGCOUNT(SEGSIZE, TYPELNG, SEGCOUNT) \
if( ((SEGSIZE) >= (TYPELNG)) && \
((SEGSIZE) < ((TYPELNG) * (SEGCOUNT))) ) { \
size_t residual; \
if( ((SEGSIZE) >= (TYPELNG)) && \
((SEGSIZE) < ((TYPELNG) * (SEGCOUNT))) ) { \
size_t residual; \
@@
-152,8
+152,8
@@
if (0 != SPLIT_INDEX) { \
EARLY_BLOCK_COUNT = EARLY_BLOCK_COUNT + 1; \
} \
if (0 != SPLIT_INDEX) { \
EARLY_BLOCK_COUNT = EARLY_BLOCK_COUNT + 1; \
} \
-
-
#include "colls_private.h"
+
+#include "colls_private.h"
int
smpi_coll_tuned_allreduce_ompi_ring_segmented(void *sbuf, void *rbuf, int count,
MPI_Datatype dtype,
int
smpi_coll_tuned_allreduce_ompi_ring_segmented(void *sbuf, void *rbuf, int count,
MPI_Datatype dtype,
@@
-162,11
+162,12
@@
smpi_coll_tuned_allreduce_ompi_ring_segmented(void *sbuf, void *rbuf, int count,
{
int ret = MPI_SUCCESS;
int line;
{
int ret = MPI_SUCCESS;
int line;
- int
rank, size,
k, recv_from, send_to;
+ int k, recv_from, send_to;
int early_blockcount, late_blockcount, split_rank;
int segcount, max_segcount;
int num_phases, phase;
int early_blockcount, late_blockcount, split_rank;
int segcount, max_segcount;
int num_phases, phase;
- int block_count, inbi;
+ int block_count;
+ unsigned int inbi;
size_t typelng;
char *tmpsend = NULL, *tmprecv = NULL;
char *inbuf[2] = {NULL, NULL};
size_t typelng;
char *tmpsend = NULL, *tmprecv = NULL;
char *inbuf[2] = {NULL, NULL};
@@
-174,8
+175,8
@@
smpi_coll_tuned_allreduce_ompi_ring_segmented(void *sbuf, void *rbuf, int count,
ptrdiff_t block_offset, max_real_segsize;
MPI_Request reqs[2] = {NULL, NULL};
const size_t segsize = 1 << 20; /* 1 MB */
ptrdiff_t block_offset, max_real_segsize;
MPI_Request reqs[2] = {NULL, NULL};
const size_t segsize = 1 << 20; /* 1 MB */
- size = smpi_comm_size(comm);
- rank = smpi_comm_rank(comm);
+
unsigned int
size = smpi_comm_size(comm);
+
unsigned int
rank = smpi_comm_rank(comm);
XBT_DEBUG("coll:tuned:allreduce_intra_ring_segmented rank %d, count %d", rank, count);
XBT_DEBUG("coll:tuned:allreduce_intra_ring_segmented rank %d, count %d", rank, count);
@@
-228,10
+229,10
@@
smpi_coll_tuned_allreduce_ompi_ring_segmented(void *sbuf, void *rbuf, int count,
max_real_segsize = true_extent + (max_segcount - 1) * extent;
/* Allocate and initialize temporary buffers */
max_real_segsize = true_extent + (max_segcount - 1) * extent;
/* Allocate and initialize temporary buffers */
- inbuf[0] = (char*)
malloc
(max_real_segsize);
+ inbuf[0] = (char*)
smpi_get_tmp_sendbuffer
(max_real_segsize);
if (NULL == inbuf[0]) { ret = -1; line = __LINE__; goto error_hndl; }
if (size > 2) {
if (NULL == inbuf[0]) { ret = -1; line = __LINE__; goto error_hndl; }
if (size > 2) {
- inbuf[1] = (char*)
malloc
(max_real_segsize);
+ inbuf[1] = (char*)
smpi_get_tmp_recvbuffer
(max_real_segsize);
if (NULL == inbuf[1]) { ret = -1; line = __LINE__; goto error_hndl; }
}
if (NULL == inbuf[1]) { ret = -1; line = __LINE__; goto error_hndl; }
}
@@
-374,15
+375,15
@@
smpi_coll_tuned_allreduce_ompi_ring_segmented(void *sbuf, void *rbuf, int count,
}
}
- if (NULL != inbuf[0])
free
(inbuf[0]);
- if (NULL != inbuf[1])
free
(inbuf[1]);
+ if (NULL != inbuf[0])
smpi_free_tmp_buffer
(inbuf[0]);
+ if (NULL != inbuf[1])
smpi_free_tmp_buffer
(inbuf[1]);
return MPI_SUCCESS;
error_hndl:
XBT_DEBUG("%s:%4d\tRank %d Error occurred %d\n",
__FILE__, line, rank, ret);
return MPI_SUCCESS;
error_hndl:
XBT_DEBUG("%s:%4d\tRank %d Error occurred %d\n",
__FILE__, line, rank, ret);
- if (NULL != inbuf[0])
free
(inbuf[0]);
- if (NULL != inbuf[1])
free
(inbuf[1]);
+ if (NULL != inbuf[0])
smpi_free_tmp_buffer
(inbuf[0]);
+ if (NULL != inbuf[1])
smpi_free_tmp_buffer
(inbuf[1]);
return ret;
}
return ret;
}