X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0f5e8daaa6e9f74521068aa75837200bcd182ea6..db76b8c2bb3acf20452613ccac46a9bee673f1b6:/src/instr/smpi_instr.c diff --git a/src/instr/smpi_instr.c b/src/instr/smpi_instr.c index 18ca3ebf9e..e02385fa2b 100644 --- a/src/instr/smpi_instr.c +++ b/src/instr/smpi_instr.c @@ -19,31 +19,34 @@ static char *TRACE_smpi_container(int rank, char *container, int n) static char *TRACE_smpi_put_key(int src, int dst, char *key, int n) { //get the dynar for src#dst - char aux[100]; - snprintf(aux, 100, "%d#%d", src, dst); + char aux[INSTR_DEFAULT_STR_SIZE]; + snprintf(aux, INSTR_DEFAULT_STR_SIZE, "%d#%d", src, dst); xbt_dynar_t d = xbt_dict_get_or_null(keys, aux); if (d == NULL) { - d = xbt_dynar_new(sizeof(char *), xbt_free); + d = xbt_dynar_new(sizeof(char *), &xbt_free_ref); xbt_dict_set(keys, aux, d, xbt_free); } //generate the key - static long long counter = 0; + static unsigned long long counter = 0; snprintf(key, n, "%d%d%lld", src, dst, counter++); - xbt_dynar_insert_at(d, 0, xbt_strdup(key)); + //push it + char *a = (char*)xbt_strdup(key); + xbt_dynar_push_as(d, char *, a); + return key; } static char *TRACE_smpi_get_key(int src, int dst, char *key, int n) { - char aux[100]; - snprintf(aux, 100, "%d#%d", src, dst); + char aux[INSTR_DEFAULT_STR_SIZE]; + snprintf(aux, INSTR_DEFAULT_STR_SIZE, "%d#%d", src, dst); xbt_dynar_t d = xbt_dict_get_or_null(keys, aux); int length = xbt_dynar_length(d); - char stored_key[n]; - xbt_dynar_remove_at(d, length - 1, stored_key); - strncpy(key, stored_key, n); + char *s = xbt_dynar_get_as (d, length-1, char *); + snprintf (key, n, "%s", s); + xbt_dynar_remove_at (d, length-1, NULL); return key; } @@ -72,10 +75,15 @@ void TRACE_smpi_init(int rank) if (!IS_TRACING_SMPI) return; - char str[100]; - TRACE_smpi_container(rank, str, 100); - pajeCreateContainer(SIMIX_get_clock(), str, "MPI_PROCESS", + char str[INSTR_DEFAULT_STR_SIZE]; + TRACE_smpi_container(rank, str, INSTR_DEFAULT_STR_SIZE); + if (TRACE_smpi_is_grouped()){ + pajeCreateContainer(SIMIX_get_clock(), str, "MPI_PROCESS", SIMIX_host_get_name(SIMIX_host_self()), str); + }else{ + pajeCreateContainer(SIMIX_get_clock(), str, "MPI_PROCESS", + "platform", str); + } } void TRACE_smpi_finalize(int rank) @@ -83,9 +91,9 @@ void TRACE_smpi_finalize(int rank) if (!IS_TRACING_SMPI) return; - char str[100]; + char str[INSTR_DEFAULT_STR_SIZE]; pajeDestroyContainer(SIMIX_get_clock(), "MPI_PROCESS", - TRACE_smpi_container(rank, str, 100)); + TRACE_smpi_container(rank, str, INSTR_DEFAULT_STR_SIZE)); } void TRACE_smpi_collective_in(int rank, int root, const char *operation) @@ -93,9 +101,9 @@ void TRACE_smpi_collective_in(int rank, int root, const char *operation) if (!IS_TRACING_SMPI) return; - char str[100]; + char str[INSTR_DEFAULT_STR_SIZE]; pajePushState(SIMIX_get_clock(), "MPI_STATE", - TRACE_smpi_container(rank, str, 100), operation); + TRACE_smpi_container(rank, str, INSTR_DEFAULT_STR_SIZE), operation); } void TRACE_smpi_collective_out(int rank, int root, const char *operation) @@ -103,9 +111,9 @@ void TRACE_smpi_collective_out(int rank, int root, const char *operation) if (!IS_TRACING_SMPI) return; - char str[100]; + char str[INSTR_DEFAULT_STR_SIZE]; pajePopState(SIMIX_get_clock(), "MPI_STATE", - TRACE_smpi_container(rank, str, 100)); + TRACE_smpi_container(rank, str, INSTR_DEFAULT_STR_SIZE)); } void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation) @@ -113,9 +121,9 @@ void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation) if (!IS_TRACING_SMPI) return; - char str[100]; + char str[INSTR_DEFAULT_STR_SIZE]; pajePushState(SIMIX_get_clock(), "MPI_STATE", - TRACE_smpi_container(rank, str, 100), operation); + TRACE_smpi_container(rank, str, INSTR_DEFAULT_STR_SIZE), operation); } void TRACE_smpi_ptp_out(int rank, int src, int dst, const char *operation) @@ -123,9 +131,9 @@ void TRACE_smpi_ptp_out(int rank, int src, int dst, const char *operation) if (!IS_TRACING_SMPI) return; - char str[100]; + char str[INSTR_DEFAULT_STR_SIZE]; pajePopState(SIMIX_get_clock(), "MPI_STATE", - TRACE_smpi_container(rank, str, 100)); + TRACE_smpi_container(rank, str, INSTR_DEFAULT_STR_SIZE)); } void TRACE_smpi_send(int rank, int src, int dst) @@ -133,10 +141,10 @@ void TRACE_smpi_send(int rank, int src, int dst) if (!IS_TRACING_SMPI) return; - char key[100], str[100]; - TRACE_smpi_put_key(src, dst, key, 100); + char key[INSTR_DEFAULT_STR_SIZE], str[INSTR_DEFAULT_STR_SIZE]; + TRACE_smpi_put_key(src, dst, key, INSTR_DEFAULT_STR_SIZE); pajeStartLink(SIMIX_get_clock(), "MPI_LINK", "0", "PTP", - TRACE_smpi_container(src, str, 100), key); + TRACE_smpi_container(src, str, INSTR_DEFAULT_STR_SIZE), key); } void TRACE_smpi_recv(int rank, int src, int dst) @@ -144,9 +152,9 @@ void TRACE_smpi_recv(int rank, int src, int dst) if (!IS_TRACING_SMPI) return; - char key[100], str[100]; - TRACE_smpi_get_key(src, dst, key, 100); + char key[INSTR_DEFAULT_STR_SIZE], str[INSTR_DEFAULT_STR_SIZE]; + TRACE_smpi_get_key(src, dst, key, INSTR_DEFAULT_STR_SIZE); pajeEndLink(SIMIX_get_clock(), "MPI_LINK", "0", "PTP", - TRACE_smpi_container(dst, str, 100), key); + TRACE_smpi_container(dst, str, INSTR_DEFAULT_STR_SIZE), key); } #endif