void TRACE_smpi_computing_in(int rank) { //do not forget to set the color first, otherwise this will explode if (!TRACE_smpi_is_enabled()|| !TRACE_smpi_is_computing()) return; char str[INSTR_DEFAULT_STR_SIZE]; smpi_container(rank, str, INSTR_DEFAULT_STR_SIZE); container_t container = PJ_container_get (str); type_t type = PJ_type_get ("MPI_STATE", container->type); val_t value = PJ_value_get_or_new ("computing", NULL, type); new_pajePushState (SIMIX_get_clock(), container, type, value); }
void TRACE_smpi_collective_in(int rank, int root, const char *operation) { if (!TRACE_smpi_is_enabled()) return; char str[INSTR_DEFAULT_STR_SIZE]; smpi_container(rank, str, INSTR_DEFAULT_STR_SIZE); container_t container = PJ_container_get (str); type_t type = PJ_type_get ("MPI_STATE", container->type); const char *color = instr_find_color (operation); val_t value = PJ_value_get_or_new (operation, color, type); new_pajePushState (SIMIX_get_clock(), container, type, value); }
void TRACE_msg_process_suspend(msg_process_t process) { 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(process, str, len)); type_t type = PJ_type_get ("MSG_PROCESS_STATE", process_container->type); val_t value = PJ_value_get ("suspend", type); new_pajePushState (MSG_get_clock(), process_container, type, value); } }
/* MSG_task_get related functions */ void TRACE_msg_task_get_start(void) { XBT_DEBUG("GET,in"); 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 ("receive", type); new_pajePushState (MSG_get_clock(), process_container, type, value); } }
/* MSG_task_execute related functions */ void TRACE_msg_task_execute_start(msg_task_t task) { XBT_DEBUG("EXEC,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 ("task_execute", type); new_pajePushState (MSG_get_clock(), process_container, type, value); } }
void TRACE_smpi_computing_init(int rank) { //first use, initialize the color in the trace //TODO : check with lucas and Pierre how to generalize this approach //to avoid unnecessary access to the color array if (!TRACE_smpi_is_enabled() || !TRACE_smpi_is_computing()) return; char str[INSTR_DEFAULT_STR_SIZE]; smpi_container(rank, str, INSTR_DEFAULT_STR_SIZE); container_t container = PJ_container_get (str); type_t type = PJ_type_get ("MPI_STATE", container->type); const char *color = instr_find_color ("computing"); val_t value = PJ_value_get_or_new ("computing", color, type); new_pajePushState (SIMIX_get_clock(), container, type, value); }
/* 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; }