tlog fileΥեޥå:

tlog fileΥեޥåȤϡ16ХȤevent recordϢ³Ƥ
ΤǤ롣

  typedef struct {
    short proc_id;	/* processor id */
    char log_type;	/* major type */
    char arg1;		/* minor type */
    int arg2;
    double time_stamp;
  } tlog_exec_event;

log_typeˤϥ٥ֹ桢proc_idMPIrank롣arg1, arg2ϻȤ
Ƥʤtime_stampˤϥ٥Ȥä֤tlog_initalize
ηв()ǵϿƤ롣(tlog_initˤơƤΥץ
л֤׻adjustƤ)

    ʤtlogtime_stamp,javaɽΤˡbig endianǵϿ
      Ƥ롣little endianΥޥ(x86)ľɤ߹ϡХ
      åפ뤳ȡʤ٤βϥ롼ȤȤ侩롣
     ϥ롼ǤϡνäƤ롣

ޤproc_idȤˤϻֽ˵ϿƤ뤬proc_idۤʤ륤٥
ȤȤˤϻֽݾڤƤʤΤդ뤳ȡ
(ºݡtlog_finalizeץå齸Τǡºݤˤϥץå
ȤˤʤäƤ)
  
tlog_logǤϡ˥٥ȵϿѤΰʤ鵭ϿƤ롣
Τᡢ٥ȼΥСإåɤŪ˾٤٥
Ȥä硢꤬񤵤졢ˤäƤϼ¹ԤǤʤʤǽ
Τǡɤΰ̤β٤ǥ٥Ȥ뤫ˤĤƤϹθɬפ
롣

tlog ϤΤΥ롼

ϤΤΥ롼ȤưʲΥ饤֥꤬tloglib.aˤ롣
ǡ¤Τincludeեϡtlog_event.hʤΤǡinclude
롣

tlog_exec_profile *tlog_read_file(char *fname,int n_node);

tlogե fname ɤ߹ࡣΡɿn_nodeǻꡣ
log˥뤿ι¤tlog_exec_fileؤΥݥ󥿤֤

int tlog_get_N_events(tlog_exec_profile *ep, int node);

ΡֹnodeΥ٥ȿ֤
tlog_exec_profileؤΥݥ󥿤ȥΡֹnodeȤ롣

tlog_exec_event *tlog_get_event(tlog_exec_profile *ep,int node, int i);
Ρֹnodeiܤeventؤpointer֤

Ȥ㡧

ȤС64ץåΥեtrace.logɤ߹ƤΥǡ
ФץϰʲΤ褦ˤʤ롣

#include <stdio.h>
#include "tlog.h"
#include "tlog_event.h"

main()
{
  tlog_exec_profile *epp;
  tlog_exec_event *ep;
  int n,n_node;
  int n_data,i;

  n_node = 64;
  epp = tlog_read_file("trace.log",n_node);
  for(n = 0; n < n_node; n++){
    n_data = tlog_get_N_events(epp,n);
    printf("--- Tlog exec profile dump: proc=%d, #data=%d\n",n,n_data);
    for(i = 0; i < n_data; i++){
      ep = tlog_get_event(epp,n,i);
      printf("%d:proc_id=%d, log_type=%d, time=%g\n",
	     i,ep->proc_id, ep->log_type,ep->time_stamp);
    }
  }
  exit(0);
}

Υץ sample.cȥǡsamplendirectoryˤΤǻͤ
ȡ

tlogviewΥǥ쥯ȥˡjavaǽ񤫤줿tlogǡdumpץ
   tlogDump.java
ΤǡͤΤȡ
