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
have smp-aware algorithms use number of cores on the node as basis for their computat...
[simgrid.git]
/
src
/
smpi
/
colls
/
allreduce-smp-rsag.c
diff --git
a/src/smpi/colls/allreduce-smp-rsag.c
b/src/smpi/colls/allreduce-smp-rsag.c
index
53d1a7f
..
9de2bcf
100644
(file)
--- a/
src/smpi/colls/allreduce-smp-rsag.c
+++ b/
src/smpi/colls/allreduce-smp-rsag.c
@@
-19,10
+19,13
@@
int smpi_coll_tuned_allreduce_smp_rsag(void *send_buf, void *recv_buf,
{
int comm_size, rank;
void *tmp_buf;
- int tag =
50
;
+ int tag =
COLL_TAG_ALLREDUCE
;
int mask, src, dst;
MPI_Status status;
- int num_core = NUM_CORE;
+ int num_core = simcall_host_get_core(SIMIX_host_self());
+ // do we use the default one or the number of cores in the platform ?
+ // if the number of cores is one, the platform may be simulated with 1 node = 1 core
+ if (num_core == 1) num_core = NUM_CORE;
/*
#ifdef MPICH2_REDUCTION
MPI_User_function * uop = MPIR_Op_table[op % 16 - 1];
@@
-65,7
+68,7
@@
int smpi_coll_tuned_allreduce_smp_rsag(void *send_buf, void *recv_buf,
// if (src < ((inter_rank + 1) * num_core)) {
if (src < comm_size) {
smpi_mpi_recv(tmp_buf, count, dtype, src, tag, comm, &status);
- s
tar_reduction
(op, tmp_buf, recv_buf, &count, &dtype);
+ s
mpi_op_apply
(op, tmp_buf, recv_buf, &count, &dtype);
//printf("Node %d recv from node %d when mask is %d\n", rank, src, mask);
}
} else {
@@
-105,7
+108,7
@@
int smpi_coll_tuned_allreduce_smp_rsag(void *send_buf, void *recv_buf,
&status);
// result is in rbuf
- s
tar_reduction
(op, tmp_buf, (char *) recv_buf + recv_offset, &seg_count,
+ s
mpi_op_apply
(op, tmp_buf, (char *) recv_buf + recv_offset, &seg_count,
&dtype);
}