static int pretty_print_status(void) { char * state_str = NULL; double cur_time; cur_time = get_time(); if( timer_last == 0 ) { timer_last = cur_time; } orte_snapc_ckpt_state_str(&state_str, orte_checkpoint_globals.ckpt_status); if( NULL != global_snapshot_handle ) { opal_output(0, "[%6.2f / %6.2f] %*s - %s\n", (cur_time - timer_last), (cur_time - timer_start), 25, state_str, global_snapshot_handle); } else { opal_output(0, "[%6.2f / %6.2f] %*s - ...\n", (cur_time - timer_last), (cur_time - timer_start), 25, state_str); } if( NULL != state_str) { free(state_str); } timer_last = cur_time; return ORTE_SUCCESS; }
/*************** * Pretty Print ***************/ static int pretty_print_status(void) { char * state_str = NULL; state_str = orte_snapc_ckpt_state_str(orte_checkpoint_globals.ckpt_status); opal_output(0, "%*s - Global Snapshot Reference: %s\n", 25, state_str, global_snapshot_handle); if( NULL != state_str) { free(state_str); } return ORTE_SUCCESS; }
static int pretty_print_vpids(orte_job_t *job) { int len_o_proc_name = 0, len_proc_name = 0, len_rank = 0, len_pid = 0, len_state = 0, len_node = 0, len_ckpt_s = 0, len_ckpt_r = 0, len_ckpt_l = 0; int i, line_len; orte_vpid_t v; orte_proc_t *vpid; orte_app_context_t *app; char *o_proc_name; #if OPAL_ENABLE_FT_CR == 1 char *state_str = NULL; #endif /* * Caculate segment lengths */ len_o_proc_name = (int)strlen("ORTE Name"); len_proc_name = (int)strlen("Process Name"); len_rank = (int)strlen("Local Rank"); len_pid = 6; len_state = 0; len_node = 0; #if OPAL_ENABLE_FT_CR == 1 len_ckpt_s = strlen("Ckpt State"); len_ckpt_r = strlen("Ckpt Ref"); len_ckpt_l = strlen("Ckpt Loc"); #else len_ckpt_s = -3; len_ckpt_r = -3; len_ckpt_l = -3; #endif for(v=0; v < job->num_procs; v++) { char *rankstr; vpid = (orte_proc_t*)job->procs->addr[v]; /* * Find my app context */ if( 0 >= (int)job->num_apps ) { if( 0 == vpid->name.vpid ) { if( (int)strlen("orterun") > len_proc_name) len_proc_name = strlen("orterun"); } else { if( (int)strlen("orted") > len_proc_name) len_proc_name = strlen("orted"); } } for( i = 0; i < (int)job->num_apps; ++i) { app = (orte_app_context_t*)job->apps->addr[i]; if( app->idx == vpid->app_idx ) { if( (int)strlen(app->app) > len_proc_name) len_proc_name = strlen(app->app); break; } } o_proc_name = orte_util_print_name_args(&vpid->name); if ((int)strlen(o_proc_name) > len_o_proc_name) len_o_proc_name = strlen(o_proc_name); asprintf(&rankstr, "%u", (uint)vpid->local_rank); if ((int)strlen(rankstr) > len_rank) len_rank = strlen(rankstr); free(rankstr); if( NULL != vpid->nodename && (int)strlen(vpid->nodename) > len_node) { len_node = strlen(vpid->nodename); } else if ((int)strlen("Unknown") > len_node) { len_node = strlen("Unknown"); } if( (int)strlen(orte_proc_state_to_str(vpid->state)) > len_state) len_state = strlen(orte_proc_state_to_str(vpid->state)); #if OPAL_ENABLE_FT_CR == 1 orte_snapc_ckpt_state_str(&state_str, vpid->ckpt_state); if( (int)strlen(state_str) > len_ckpt_s) len_ckpt_s = strlen(state_str); if( NULL != vpid->ckpt_snapshot_ref && (int)strlen(vpid->ckpt_snapshot_ref) > len_ckpt_r) len_ckpt_r = strlen(vpid->ckpt_snapshot_ref); if( NULL != vpid->ckpt_snapshot_loc && (int)strlen(vpid->ckpt_snapshot_loc) > len_ckpt_l) len_ckpt_l = strlen(vpid->ckpt_snapshot_loc); #endif } line_len = (len_o_proc_name + 3 + len_proc_name + 3 + len_rank + 3 + len_pid + 3 + len_state + 3 + len_node + 3 + len_ckpt_s + 3 + len_ckpt_r + 3 + len_ckpt_l) + 2; /* * Print Header */ printf("\t"); printf("%*s | ", len_proc_name , "Process Name"); printf("%*s | ", len_o_proc_name , "ORTE Name"); printf("%*s | ", len_rank , "Local Rank"); printf("%*s | ", len_pid , "PID"); printf("%*s | ", len_node , "Node"); printf("%*s | ", len_state , "State"); #if OPAL_ENABLE_FT_CR == 1 printf("%*s | ", len_ckpt_s , "Ckpt State"); printf("%*s | ", len_ckpt_r , "Ckpt Ref"); printf("%*s |", len_ckpt_l , "Ckpt Loc"); #endif printf("\n"); printf("\t"); pretty_print_dashed_line(line_len); /* * Print Info */ for(v=0; v < job->num_procs; v++) { vpid = (orte_proc_t*)job->procs->addr[v]; printf("\t"); if( 0 >= (int)job->num_apps ) { if( 0 == vpid->name.vpid ) { printf("%*s | ", len_proc_name, "orterun"); } else { printf("%*s | ", len_proc_name, "orted"); } } for( i = 0; i < (int)job->num_apps; ++i) { app = (orte_app_context_t*)job->apps->addr[i]; if( app->idx == vpid->app_idx ) { printf("%*s | ", len_proc_name, app->app); break; } } o_proc_name = orte_util_print_name_args(&vpid->name); printf("%*s | ", len_o_proc_name, o_proc_name); printf("%*u | ", len_rank , (uint)vpid->local_rank); printf("%*d | ", len_pid , vpid->pid); printf("%*s | ", len_node , (NULL == vpid->nodename) ? "Unknown" : vpid->nodename); printf("%*s | ", len_state , orte_proc_state_to_str(vpid->state)); #if OPAL_ENABLE_FT_CR == 1 printf("%*s | ", len_ckpt_s, state_str); printf("%*s | ", len_ckpt_r, (NULL == vpid->ckpt_snapshot_ref ? "" : vpid->ckpt_snapshot_ref)); printf("%*s |", len_ckpt_l, (NULL == vpid->ckpt_snapshot_loc ? "" : vpid->ckpt_snapshot_loc)); #endif printf("\n"); } return ORTE_SUCCESS; }
static int pretty_print_jobs(orte_job_t **jobs, orte_std_cntr_t num_jobs) { int len_jobid = 0, len_state = 0, len_slots = 0, len_vpid_r = 0, len_ckpt_s = 0, len_ckpt_r = 0, len_ckpt_l = 0; int line_len; orte_job_t *job; orte_std_cntr_t i; char *jobstr; orte_jobid_t mask=0x0000ffff; #if OPAL_ENABLE_FT_CR == 1 char * state_str = NULL; #endif for(i=0; i < num_jobs; i++) { job = jobs[i]; /* check the jobid to see if this is the daemons' job */ if ((0 == (mask & job->jobid)) && !orte_ps_globals.daemons) { continue; } /* setup the printed name - do -not- free this! */ jobstr = ORTE_JOBID_PRINT(job->jobid); /* * Caculate segment lengths */ len_jobid = strlen(jobstr);; len_state = (int) (strlen(orte_job_state_to_str(job->state)) < strlen("State") ? strlen("State") : strlen(orte_job_state_to_str(job->state))); len_slots = 6; len_vpid_r = (int) strlen("Num Procs"); #if OPAL_ENABLE_FT_CR == 1 orte_snapc_ckpt_state_str(&state_str, job->ckpt_state); len_ckpt_s = (int) (strlen(state_str) < strlen("Ckpt State") ? strlen("Ckpt State") : strlen(state_str) ); len_ckpt_r = (int) (NULL == job->ckpt_snapshot_ref ? strlen("Ckpt Ref") : (strlen(job->ckpt_snapshot_ref) < strlen("Ckpt Ref") ? strlen("Ckpt Ref") : strlen(job->ckpt_snapshot_ref) ) ); len_ckpt_l = (int) (NULL == job->ckpt_snapshot_loc ? strlen("Ckpt Loc") : (strlen(job->ckpt_snapshot_loc) < strlen("Ckpt Loc") ? strlen("Ckpt Loc") : strlen(job->ckpt_snapshot_loc) ) ); #else len_ckpt_s = -3; len_ckpt_r = -3; len_ckpt_l = -3; #endif line_len = (len_jobid + 3 + len_state + 3 + len_slots + 3 + len_vpid_r + 3 + len_ckpt_s + 3 + len_ckpt_r + 3 + len_ckpt_l) + 2; /* * Print Header */ printf("\n"); printf("%*s | ", len_jobid , "JobID"); printf("%*s | ", len_state , "State"); printf("%*s | ", len_slots , "Slots"); printf("%*s | ", len_vpid_r , "Num Procs"); #if OPAL_ENABLE_FT_CR == 1 printf("%*s | ", len_ckpt_s , "Ckpt State"); printf("%*s | ", len_ckpt_r , "Ckpt Ref"); printf("%*s |", len_ckpt_l , "Ckpt Loc"); #endif printf("\n"); pretty_print_dashed_line(line_len); /* * Print Info */ printf("%*s | ", len_jobid , ORTE_JOBID_PRINT(job->jobid)); printf("%*s | ", len_state , orte_job_state_to_str(job->state)); printf("%*d | ", len_slots , (uint)job->total_slots_alloc); printf("%*d | ", len_vpid_r, job->num_procs); #if OPAL_ENABLE_FT_CR == 1 printf("%*s | ", len_ckpt_s, state_str); printf("%*s | ", len_ckpt_r, (NULL == job->ckpt_snapshot_ref ? "" : job->ckpt_snapshot_ref) ); printf("%*s |", len_ckpt_l, (NULL == job->ckpt_snapshot_loc ? "" : job->ckpt_snapshot_loc) ); #endif printf("\n"); pretty_print_vpids(job); printf("\n\n"); /* give a little room between job outputs */ } return ORTE_SUCCESS; }