X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1830ec873b286ded8981e8fb3327715d1e6a737f..5bd175db106a40f35d99c26bb77276b29343646d:/src/smpi/colls/smpi_intel_mpi_selector.cpp diff --git a/src/smpi/colls/smpi_intel_mpi_selector.cpp b/src/smpi/colls/smpi_intel_mpi_selector.cpp index 26bdbf4a21..a126d72c1c 100644 --- a/src/smpi/colls/smpi_intel_mpi_selector.cpp +++ b/src/smpi/colls/smpi_intel_mpi_selector.cpp @@ -2262,35 +2262,33 @@ intel_tuning_table_element intel_alltoallv_table[] = #define SIZECOMP_alltoallv\ size_t block_dsize = 1; -#define IMPI_COLL_SELECT(cat, ret, args, args2)\ -ret Coll_ ## cat ## _impi:: cat (COLL_UNPAREN args)\ -{\ - int comm_size = comm->size();\ - int i =0;\ - SIZECOMP_ ## cat\ - i=0;\ - int j =0, k=0;\ - if(comm->get_leaders_comm()==MPI_COMM_NULL){\ - comm->init_smp();\ - }\ - int local_size=1;\ - if (comm->is_uniform()) {\ - local_size = comm->get_intra_comm()->size();\ - }\ - while(i < INTEL_MAX_NB_PPN &&\ - local_size!=intel_ ## cat ## _table[i].ppn)\ - i++;\ - if(i==INTEL_MAX_NB_PPN) i=0;\ - while(comm_size>intel_ ## cat ## _table[i].elems[j].max_num_proc\ - && j < INTEL_MAX_NB_THRESHOLDS)\ - j++;\ - while(block_dsize >=intel_ ## cat ## _table[i].elems[j].elems[k].max_size\ - && k< intel_ ## cat ## _table[i].elems[j].num_elems)\ - k++;\ - return (intel_ ## cat ## _functions_table[intel_ ## cat ## _table[i].elems[j].elems[k].algo-1]\ - args2);\ -} - +#define IMPI_COLL_SELECT(cat, ret, args, args2) \ + ret _XBT_CONCAT3(Coll_, cat, _impi)::cat(COLL_UNPAREN args) \ + { \ + int comm_size = comm->size(); \ + int i = 0; \ + _XBT_CONCAT(SIZECOMP_, cat) \ + i = 0; \ + int j = 0, k = 0; \ + if (comm->get_leaders_comm() == MPI_COMM_NULL) { \ + comm->init_smp(); \ + } \ + int local_size = 1; \ + if (comm->is_uniform()) { \ + local_size = comm->get_intra_comm()->size(); \ + } \ + while (i < INTEL_MAX_NB_PPN && local_size != _XBT_CONCAT3(intel_, cat, _table)[i].ppn) \ + i++; \ + if (i == INTEL_MAX_NB_PPN) \ + i = 0; \ + while (comm_size > _XBT_CONCAT3(intel_, cat, _table)[i].elems[j].max_num_proc && j < INTEL_MAX_NB_THRESHOLDS) \ + j++; \ + while (block_dsize >= _XBT_CONCAT3(intel_, cat, _table)[i].elems[j].elems[k].max_size && \ + k < _XBT_CONCAT3(intel_, cat, _table)[i].elems[j].num_elems) \ + k++; \ + return (_XBT_CONCAT3(intel_, cat, \ + _functions_table)[_XBT_CONCAT3(intel_, cat, _table)[i].elems[j].elems[k].algo - 1] args2); \ + } COLL_APPLY(IMPI_COLL_SELECT, COLL_ALLGATHERV_SIG, (send_buff, send_count, send_type, recv_buff, recv_count, recv_disps, recv_type, comm)); COLL_APPLY(IMPI_COLL_SELECT, COLL_ALLREDUCE_SIG, (sbuf, rbuf, rcount, dtype, op, comm));