#include "private.h"
#include "colls/colls.h"
+#include "simgrid/sg_config.h"
s_mpi_coll_description_t mpi_coll_allgather_description[] = {
{"default",
{NULL, NULL, NULL} /* this array must be NULL terminated */
};
+s_mpi_coll_description_t mpi_coll_allgatherv_description[] = {
+ {"default",
+ "allgatherv default collective",
+ smpi_mpi_allgatherv},
+COLL_ALLGATHERVS(COLL_DESCRIPTION, COLL_COMMA),
+ {NULL, NULL, NULL} /* this array must be NULL terminated */
+};
+
s_mpi_coll_description_t mpi_coll_allreduce_description[] = {
{"default",
"allreduce default collective",
};
s_mpi_coll_description_t mpi_coll_alltoall_description[] = {
- {"ompi",
+ {"default",
"Ompi alltoall default collective",
- smpi_coll_tuned_alltoall_ompi},
+ smpi_coll_tuned_alltoall_ompi2},
COLL_ALLTOALLS(COLL_DESCRIPTION, COLL_COMMA),
{"bruck",
"Alltoall Bruck (SG) collective",
}
int find_coll_description(s_mpi_coll_description_t * table,
- const char *name)
+ char *name)
{
int i;
char *name_list = NULL;
-
+ int selector_on=0;
+ if(name==NULL){//no argument provided, use active selector's algorithm
+ name=(char*)sg_cfg_get_string("smpi/coll_selector");
+ selector_on=1;
+ }
for (i = 0; table[i].name; i++)
if (!strcmp(name, table[i].name)) {
return i;
}
+
+ if(selector_on){
+ // collective seems not handled by the active selector, try with default one
+ name=(char*)"default";
+ for (i = 0; table[i].name; i++)
+ if (!strcmp(name, table[i].name)) {
+ return i;
+ }
+ }
name_list = strdup(table[0].name);
for (i = 1; table[i].name; i++) {
name_list =
return -1;
}
-
-
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_coll, smpi,
"Logging specific to SMPI (coll)");
int (*mpi_coll_allgather_fun)(void *, int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm);
+int (*mpi_coll_allgatherv_fun)(void *, int, MPI_Datatype, void*, int*, int*, MPI_Datatype, MPI_Comm);
int (*mpi_coll_allreduce_fun)(void *sbuf, void *rbuf, int rcount, MPI_Datatype dtype, MPI_Op op, MPI_Comm comm);
int (*mpi_coll_alltoall_fun)(void *, int, MPI_Datatype, void*, int, MPI_Datatype, MPI_Comm);
int (*mpi_coll_alltoallv_fun)(void *, int*, int*, MPI_Datatype, void*, int*, int*, MPI_Datatype, MPI_Comm);
free_tree(tree);
}
-int smpi_coll_tuned_alltoall_ompi(void *sendbuf, int sendcount,
+int smpi_coll_tuned_alltoall_ompi2(void *sendbuf, int sendcount,
MPI_Datatype sendtype, void *recvbuf,
int recvcount, MPI_Datatype recvtype,
MPI_Comm comm)