/* * Instrumentation functions to trace MSG processes (msg_process_t) */ void TRACE_msg_process_change_host(msg_process_t process, msg_host_t old_host, msg_host_t new_host) { if (TRACE_msg_process_is_enabled()){ static long long int counter = 0; char key[INSTR_DEFAULT_STR_SIZE]; snprintf (key, INSTR_DEFAULT_STR_SIZE, "%lld", counter++); int len = INSTR_DEFAULT_STR_SIZE; char str[INSTR_DEFAULT_STR_SIZE]; //start link container_t msg = PJ_container_get (instr_process_id(process, str, len)); type_t type = PJ_type_get ("MSG_PROCESS_LINK", PJ_type_get_root()); new_pajeStartLink (MSG_get_clock(), PJ_container_get_root(), type, msg, "M", key); //destroy existing container of this process TRACE_msg_process_destroy (MSG_process_get_name (process), MSG_process_get_PID (process)); //create new container on the new_host location TRACE_msg_process_create (MSG_process_get_name (process), MSG_process_get_PID (process), new_host); //end link msg = PJ_container_get(instr_process_id(process, str, len)); type = PJ_type_get ("MSG_PROCESS_LINK", PJ_type_get_root()); new_pajeEndLink (MSG_get_clock(), PJ_container_get_root(), type, msg, "M", key); } }
void TRACE_smpi_recv(int rank, int src, int dst) { if (!TRACE_smpi_is_enabled()) return; char key[INSTR_DEFAULT_STR_SIZE]; bzero (key, INSTR_DEFAULT_STR_SIZE); TRACE_smpi_get_key(src, dst, key, INSTR_DEFAULT_STR_SIZE); char str[INSTR_DEFAULT_STR_SIZE]; smpi_container(dst, str, INSTR_DEFAULT_STR_SIZE); container_t container = PJ_container_get (str); type_t type = PJ_type_get ("MPI_LINK", PJ_type_get_root()); new_pajeEndLink (SIMIX_get_clock(), PJ_container_get_root(), type, container, "PTP", key); }
void TRACE_smpi_init(int rank) { if (!TRACE_smpi_is_enabled()) return; char str[INSTR_DEFAULT_STR_SIZE]; smpi_container(rank, str, INSTR_DEFAULT_STR_SIZE); container_t father; if (TRACE_smpi_is_grouped()){ father = PJ_container_get (SIMIX_host_self_get_name()); }else{ father = PJ_container_get_root (); } xbt_assert(father!=NULL, "Could not find a parent for mpi rank %s at function %s", str, __FUNCTION__); PJ_container_new(str, INSTR_SMPI, father); }
void TRACE_msg_task_get_end(double start_time, msg_task_t task) { XBT_DEBUG("GET,out %p, %lld, %s", task, task->counter, task->category); if (TRACE_msg_process_is_enabled()){ int len = INSTR_DEFAULT_STR_SIZE; char str[INSTR_DEFAULT_STR_SIZE]; container_t process_container = PJ_container_get (instr_process_id(MSG_process_self(), str, len)); type_t type = PJ_type_get ("MSG_PROCESS_STATE", process_container->type); new_pajePopState (MSG_get_clock(), process_container, type); char key[INSTR_DEFAULT_STR_SIZE]; snprintf (key, INSTR_DEFAULT_STR_SIZE, "p%lld", task->counter); type = PJ_type_get ("MSG_PROCESS_TASK_LINK", PJ_type_get_root()); new_pajeEndLink(MSG_get_clock(), PJ_container_get_root(), type, process_container, "SR", key); } }
/* MSG_task_put related functions */ int TRACE_msg_task_put_start(msg_task_t task) { XBT_DEBUG("PUT,in %p, %lld, %s", task, task->counter, task->category); if (TRACE_msg_process_is_enabled()){ int len = INSTR_DEFAULT_STR_SIZE; char str[INSTR_DEFAULT_STR_SIZE]; container_t process_container = PJ_container_get (instr_process_id(MSG_process_self(), str, len)); type_t type = PJ_type_get ("MSG_PROCESS_STATE", process_container->type); val_t value = PJ_value_get ("send", type); new_pajePushState (MSG_get_clock(), process_container, type, value); char key[INSTR_DEFAULT_STR_SIZE]; snprintf (key, INSTR_DEFAULT_STR_SIZE, "p%lld", task->counter); type = PJ_type_get ("MSG_PROCESS_TASK_LINK", PJ_type_get_root()); new_pajeStartLink(MSG_get_clock(), PJ_container_get_root(), type, process_container, "SR", key); } return 1; }