From: Christian Heinrich Date: Tue, 14 Jun 2016 13:34:17 +0000 (+0200) Subject: [SMPI] C++ify smpi_mpi_testany(). There's more to do though. X-Git-Tag: v3_14~987^2~6^2~5 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/ebfaf0308c650a96e42eb454f2f81dc0b7346511?ds=sidebyside [SMPI] C++ify smpi_mpi_testany(). There's more to do though. --- diff --git a/src/smpi/smpi_base.cpp b/src/smpi/smpi_base.cpp index 3b4cdb9019..54ef209a49 100644 --- a/src/smpi/smpi_base.cpp +++ b/src/smpi/smpi_base.cpp @@ -775,30 +775,27 @@ int smpi_mpi_testany(int count, MPI_Request requests[], int *index, MPI_Status * { xbt_dynar_t comms; int i; - int* map; int flag = 0; - int size = 0; *index = MPI_UNDEFINED; comms = xbt_dynar_new(sizeof(smx_synchro_t), nullptr); - map = xbt_new(int, count); + std::vector map; /** Maps all matching comms back to their location in requests **/ for(i = 0; i < count; i++) { if ((requests[i] != MPI_REQUEST_NULL) && requests[i]->action && !(requests[i]->flags & PREPARED)) { xbt_dynar_push(comms, &requests[i]->action); - map[size] = i; - size++; + map.push_back(i); } } - if(size > 0) { + if(!map.empty()) { //multiplier to the sleeptime, to increase speed of execution, each failed testany will increase it static int nsleeps = 1; if(smpi_test_sleep > 0) simcall_process_sleep(nsleeps*smpi_test_sleep); - i = simcall_comm_testany(comms); + i = simcall_comm_testany(comms); // The i-th element in comms matches! // not MPI_UNDEFINED, as this is a simix return code - if(i != -1) { - *index = map[i]; + if (i != -1) { + *index = map[i]; finish_wait(&requests[*index], status); if (requests[*index] != MPI_REQUEST_NULL && (requests[*index]->flags & NON_PERSISTENT)) requests[*index] = MPI_REQUEST_NULL; @@ -812,7 +809,6 @@ int smpi_mpi_testany(int count, MPI_Request requests[], int *index, MPI_Status * flag=1; smpi_empty_status(status); } - xbt_free(map); xbt_dynar_free(&comms); return flag;