Team Ai
Datasetpublic

hschumann2/TempleOS-Source-Code

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes847downloads
CPURep.txt74 linesDownload Raw Back to Adam
1 2#help_index "Info;Time/CPU Cycles;Processor"3class CCPURep4{5  Bool mp_start,mp_end;6  I64 mp_not_done_flags,7      **swaps,8      **cycles;9};10 11U0 MPCPURep(CCPURep *cr)12{13  I64 swaps=0,cycles_0,cycles_f;14  while (!cr->mp_start)15    Yield;16  cycles_0=GetTSC;17  while (!cr->mp_end) {18    swaps++;19    Yield;20  }21  cycles_f=GetTSC;22  cr->swaps[Gs->num]=swaps;23  cr->cycles[Gs->num]=cycles_f-cycles_0;24  LBtr(&cr->mp_not_done_flags,Gs->num);25}26 27public U0 CPURep(Bool full=FALSE)28{//Report number of cores and clock freq.29  I64 i,total_swaps,total_cycles;30  F64 t0,tf;31  CCPURep cr;32 33  if (!full)34    "%03X Cores %6h?nHz\n",mp_cnt,ToF64(cnts.time_stamp_freq);35  else {36    cr.swaps=CAlloc(sizeof(I64)*mp_cnt);37    cr.cycles=CAlloc(sizeof(I64)*mp_cnt);38    cr.mp_start=cr.mp_end=FALSE;39    cr.mp_not_done_flags=1<<mp_cnt-1;40    for (i=0;i<mp_cnt;i++)41      Spawn(&MPCPURep,&cr,NULL,i);42 43    t0=tS;44    cr.mp_start=TRUE;45    Sleep(2000);46    cr.mp_end=TRUE;47    while (cr.mp_not_done_flags)48      Yield;49    tf=tS;50 51    "\n%03X Cores %6h?nHz\n",mp_cnt,ToF64(cnts.time_stamp_freq);52    "\n         Context\n"53          "CPU     Swaps/s         Cycles\n"54          "--- ------------- -----------------\n";55    total_swaps=0;56    total_cycles=0;57    for (i=0;i<mp_cnt;i++) {58      " %02X %13,d %17,d\n",i,59            ToI64(cr.swaps[i]/(tf-t0)),ToI64(cr.cycles[i]/(tf-t0));60      total_swaps+=cr.swaps[i];61      total_cycles+=cr.cycles[i];62    }63    "--- ------------- -----------------\n";64    "%03X %13,d %17,d\n",i,65          ToI64(total_swaps/(tf-t0)),ToI64(total_cycles/(tf-t0));66    "Avg %13,d %17,d\n\n",67          ToI64(total_swaps/(tf-t0)/i),ToI64(total_cycles/(tf-t0)/i);68    "Avg Cycles/Swap: %12.6f\n",ToF64(total_cycles)/total_swaps;69    "Avg Time/Swap  : %12.6fns\n\n",(tf-t0)*1000000000.0*i/total_swaps;70    Free(cr.swaps);71    Free(cr.cycles);72  }73}74