@@ -399,38 +399,43 @@ void print_output(PCM * m,
399
399
}
400
400
if (m->isHWTMAL2Supported ())
401
401
{
402
- cout << " Pipeline stalls: Frontend (fetch latency: " << int (100 . * getFetchLatencyBound (sstate1, sstate2)) <<" %, fetch bandwidth: " << int (100 . * getFetchBandwidthBound (sstate1, sstate2)) <<
403
- " %)\n bad Speculation (branch misprediction: " << int (100 . * getBranchMispredictionBound (sstate1, sstate2)) <<
402
+ cout << setColor (ASCII_BRIGHT_MAGENTA);
403
+ cout << " Pipeline stalls: " << setColor (ASCII_BRIGHT_CYAN) << " Frontend (fetch latency: " << int (100 . * getFetchLatencyBound (sstate1, sstate2)) <<" %, fetch bandwidth: " << int (100 . * getFetchBandwidthBound (sstate1, sstate2)) <<
404
+ " %)\n " << setColor (ASCII_BRIGHT_RED) << " bad Speculation (branch misprediction: " << int (100 . * getBranchMispredictionBound (sstate1, sstate2)) <<
404
405
" %, machine clears: " << int (100 . * getMachineClearsBound (sstate1, sstate2)) <<
405
- " %)\n Backend (buffer/cache/memory: " << int (100 . * getMemoryBound (sstate1, sstate2)) <<
406
+ " %)\n " << setColor (ASCII_BRIGHT_YELLOW) << " Backend (buffer/cache/memory: " << int (100 . * getMemoryBound (sstate1, sstate2)) <<
406
407
" %, core: " << int (100 . * getCoreBound (sstate1, sstate2)) <<
407
- " %)\n Retiring (heavy operations: " << int (100 . * getHeavyOperationsBound (sstate1, sstate2)) <<
408
+ " %)\n " << setColor (ASCII_BRIGHT_GREEN) << " Retiring (heavy operations: " << int (100 . * getHeavyOperationsBound (sstate1, sstate2)) <<
408
409
" %, light operations: " << int (100 . * getLightOperationsBound (sstate1, sstate2)) << " %)\n " ;
409
410
}
410
411
else if (m->isHWTMAL1Supported ())
411
412
{
412
- cout << " Pipeline stalls: Frontend bound: " << int (100 . * getFrontendBound (sstate1, sstate2)) <<
413
- " %, bad Speculation: " << int (100 . * getBadSpeculation (sstate1, sstate2)) <<
414
- " %, Backend bound: " << int (100 . * getBackendBound (sstate1, sstate2)) <<
415
- " %, Retiring: " << int (100 . * getRetiring (sstate1, sstate2)) << " %\n " ;
413
+ cout << setColor (ASCII_BRIGHT_MAGENTA);
414
+ cout << " Pipeline stalls: " << setColor (ASCII_BRIGHT_CYAN) << " Frontend bound: " << int (100 . * getFrontendBound (sstate1, sstate2)) <<
415
+ " %, " << setColor (ASCII_BRIGHT_RED) << " bad Speculation: " << int (100 . * getBadSpeculation (sstate1, sstate2)) <<
416
+ " %, " << setColor (ASCII_BRIGHT_YELLOW) << " Backend bound: " << int (100 . * getBackendBound (sstate1, sstate2)) <<
417
+ " %, " << setColor (ASCII_BRIGHT_GREEN) << " Retiring: " << int (100 . * getRetiring (sstate1, sstate2)) << " %\n " ;
416
418
}
417
419
418
420
if (m->isHWTMAL1Supported ())
419
421
{
422
+ cout << setColor (ASCII_BRIGHT_MAGENTA);
420
423
std::vector<StackedBarItem> TMAStackedBar;
421
424
TMAStackedBar.push_back (StackedBarItem (getFrontendBound (sstate1, sstate2), " " , ' F' ));
422
425
TMAStackedBar.push_back (StackedBarItem (getBadSpeculation (sstate1, sstate2), " " , ' S' ));
423
426
TMAStackedBar.push_back (StackedBarItem (getBackendBound (sstate1, sstate2), " " , ' B' ));
424
427
TMAStackedBar.push_back (StackedBarItem (getRetiring (sstate1, sstate2), " " , ' R' ));
425
428
drawStackedBar (" Pipeline stall distribution " , TMAStackedBar, 80 );
426
- cout << " \n " ;
429
+ cout << resetColor () << " \n " ;
427
430
}
428
431
429
432
#if 0
430
433
cout << " SMI count: " << getSMICount(sstate1, sstate2) << "\n";
431
434
#endif
432
435
}
433
436
437
+ cout << setColor (ASCII_BRIGHT_CYAN);
438
+
434
439
if (show_socket_output)
435
440
{
436
441
if (m->getNumSockets () > 1 && m->incomingQPITrafficMetricsAvailable ()) // QPI info only for multi socket systems
@@ -515,117 +520,119 @@ void print_output(PCM * m,
515
520
cout << " Total " << m->xPI () << " outgoing data and non-data traffic: " << unit_format (getAllOutgoingQPILinkBytes (sstate1, sstate2)) << " \n " ;
516
521
}
517
522
}
523
+ cout << resetColor ();
524
+
518
525
if (show_socket_output)
519
526
{
520
527
cout << " \n MEM (GB)->|" ;
521
528
if (m->memoryTrafficMetricsAvailable ())
522
- cout << " READ | WRITE |" ;
529
+ cout << setNextColor () << " READ | WRITE |" ;
523
530
if (m->localMemoryRequestRatioMetricAvailable ())
524
- cout << " LOCAL |" ;
531
+ cout << setNextColor () << " LOCAL |" ;
525
532
if (m->PMMTrafficMetricsAvailable ())
526
- cout << " PMM RD | PMM WR |" ;
533
+ cout << setNextColor () << " PMM RD | PMM WR |" ;
527
534
if (m->HBMmemoryTrafficMetricsAvailable ())
528
- cout << " HBM READ | HBM WRITE |" ;
535
+ cout << setNextColor () << " HBM READ | HBM WRITE |" ;
529
536
if (m->memoryIOTrafficMetricAvailable ())
530
- cout << " IO |" ;
537
+ cout << setNextColor () << " IO |" ;
531
538
if (m->memoryIOTrafficMetricAvailable ())
532
- cout << " IA |" ;
539
+ cout << setNextColor () << " IA |" ;
533
540
if (m->memoryIOTrafficMetricAvailable ())
534
- cout << " GT |" ;
541
+ cout << setNextColor () << " GT |" ;
535
542
if (m->packageEnergyMetricsAvailable ())
536
- cout << " CPU energy |" ;
543
+ cout << setNextColor () << " CPU energy |" ;
537
544
if (m->ppEnergyMetricsAvailable ())
538
545
{
539
- cout << " PP0 energy |" ;
540
- cout << " PP1 energy |" ;
546
+ cout << setNextColor () << " PP0 energy |" ;
547
+ cout << setNextColor () << " PP1 energy |" ;
541
548
}
542
549
if (m->dramEnergyMetricsAvailable ())
543
- cout << " DIMM energy |" ;
550
+ cout << setNextColor () << " DIMM energy |" ;
544
551
if (m->LLCReadMissLatencyMetricsAvailable ())
545
- cout << " LLCRDMISSLAT (ns)|" ;
552
+ cout << setNextColor () << " LLCRDMISSLAT (ns)|" ;
546
553
if (m->uncoreFrequencyMetricAvailable ())
547
- cout << " UncFREQ (Ghz)|" ;
548
- cout << " \n " ;
554
+ cout << setNextColor () << " UncFREQ (Ghz)|" ;
555
+ cout << resetColor () << " \n " ;
549
556
cout << longDiv;
550
557
for (uint32 i = 0 ; i < m->getNumSockets (); ++i)
551
558
{
552
559
cout << " SKT " << setw (2 ) << i;
553
560
if (m->memoryTrafficMetricsAvailable ())
554
- cout << " " << setw (5 ) << getBytesReadFromMC (sktstate1[i], sktstate2[i]) / double (1e9 ) <<
561
+ cout << setNextColor () << " " << setw (5 ) << getBytesReadFromMC (sktstate1[i], sktstate2[i]) / double (1e9 ) <<
555
562
" " << setw (5 ) << getBytesWrittenToMC (sktstate1[i], sktstate2[i]) / double (1e9 );
556
563
if (m->localMemoryRequestRatioMetricAvailable ())
557
- cout << " " << setw (3 ) << int (100 .* getLocalMemoryRequestRatio (sktstate1[i], sktstate2[i])) << " %" ;
564
+ cout << setNextColor () << " " << setw (3 ) << int (100 .* getLocalMemoryRequestRatio (sktstate1[i], sktstate2[i])) << " %" ;
558
565
if (m->PMMTrafficMetricsAvailable ())
559
- cout << " " << setw (5 ) << getBytesReadFromPMM (sktstate1[i], sktstate2[i]) / double (1e9 ) <<
566
+ cout << setNextColor () << " " << setw (5 ) << getBytesReadFromPMM (sktstate1[i], sktstate2[i]) / double (1e9 ) <<
560
567
" " << setw (5 ) << getBytesWrittenToPMM (sktstate1[i], sktstate2[i]) / double (1e9 );
561
568
if (m->HBMmemoryTrafficMetricsAvailable ())
562
- cout << " " << setw (11 ) << getBytesReadFromEDC (sktstate1[i], sktstate2[i]) / double (1e9 ) <<
569
+ cout << setNextColor () << " " << setw (11 ) << getBytesReadFromEDC (sktstate1[i], sktstate2[i]) / double (1e9 ) <<
563
570
" " << setw (11 ) << getBytesWrittenToEDC (sktstate1[i], sktstate2[i]) / double (1e9 );
564
571
if (m->memoryIOTrafficMetricAvailable ()) {
565
- cout << " " << setw (5 ) << getIORequestBytesFromMC (sktstate1[i], sktstate2[i]) / double (1e9 );
566
- cout << " " << setw (5 ) << getIARequestBytesFromMC (sktstate1[i], sktstate2[i]) / double (1e9 );
567
- cout << " " << setw (5 ) << getGTRequestBytesFromMC (sktstate1[i], sktstate2[i]) / double (1e9 );
572
+ cout << setNextColor () << " " << setw (5 ) << getIORequestBytesFromMC (sktstate1[i], sktstate2[i]) / double (1e9 );
573
+ cout << setNextColor () << " " << setw (5 ) << getIARequestBytesFromMC (sktstate1[i], sktstate2[i]) / double (1e9 );
574
+ cout << setNextColor () << " " << setw (5 ) << getGTRequestBytesFromMC (sktstate1[i], sktstate2[i]) / double (1e9 );
568
575
}
569
576
if (m->packageEnergyMetricsAvailable ()) {
570
- cout << " " ;
577
+ cout << setNextColor () << " " ;
571
578
cout << setw (6 ) << getConsumedJoules (sktstate1[i], sktstate2[i]);
572
579
}
573
580
if (m->ppEnergyMetricsAvailable ()) {
574
- cout << " " ;
581
+ cout << setNextColor () << " " ;
575
582
cout << setw (6 ) << getConsumedJoules (0 , sktstate1[i], sktstate2[i]);
576
- cout << " " ;
583
+ cout << setNextColor () << " " ;
577
584
cout << setw (6 ) << getConsumedJoules (1 , sktstate1[i], sktstate2[i]);
578
585
}
579
586
if (m->dramEnergyMetricsAvailable ()) {
580
- cout << " " ;
587
+ cout << setNextColor () << " " ;
581
588
cout << setw (6 ) << getDRAMConsumedJoules (sktstate1[i], sktstate2[i]);
582
589
}
583
590
if (m->LLCReadMissLatencyMetricsAvailable ()) {
584
- cout << " " ;
591
+ cout << setNextColor () << " " ;
585
592
cout << setw (6 ) << getLLCReadMissLatency (sktstate1[i], sktstate2[i]);
586
593
}
587
594
if (m->uncoreFrequencyMetricAvailable ()) {
588
- cout << " " ;
595
+ cout << setNextColor () << " " ;
589
596
cout << setw (4 ) << getAverageUncoreFrequencyGhz (sktstate1[i], sktstate2[i]);
590
597
}
591
- cout << " \n " ;
598
+ cout << resetColor () << " \n " ;
592
599
}
593
600
cout << longDiv;
594
601
if (m->getNumSockets () > 1 ) {
595
602
cout << " *" ;
596
603
if (m->memoryTrafficMetricsAvailable ())
597
- cout << " " << setw (5 ) << getBytesReadFromMC (sstate1, sstate2) / double (1e9 ) <<
604
+ cout << setNextColor () << " " << setw (5 ) << getBytesReadFromMC (sstate1, sstate2) / double (1e9 ) <<
598
605
" " << setw (5 ) << getBytesWrittenToMC (sstate1, sstate2) / double (1e9 );
599
606
if (m->localMemoryRequestRatioMetricAvailable ())
600
- cout << " " << setw (3 ) << int (100 .* getLocalMemoryRequestRatio (sstate1, sstate2)) << " %" ;
607
+ cout << setNextColor () << " " << setw (3 ) << int (100 .* getLocalMemoryRequestRatio (sstate1, sstate2)) << " %" ;
601
608
if (m->PMMTrafficMetricsAvailable ())
602
- cout << " " << setw (5 ) << getBytesReadFromPMM (sstate1, sstate2) / double (1e9 ) <<
609
+ cout << setNextColor () << " " << setw (5 ) << getBytesReadFromPMM (sstate1, sstate2) / double (1e9 ) <<
603
610
" " << setw (5 ) << getBytesWrittenToPMM (sstate1, sstate2) / double (1e9 );
604
611
if (m->memoryIOTrafficMetricAvailable ())
605
- cout << " " << setw (5 ) << getIORequestBytesFromMC (sstate1, sstate2) / double (1e9 );
612
+ cout << setNextColor () << " " << setw (5 ) << getIORequestBytesFromMC (sstate1, sstate2) / double (1e9 );
606
613
if (m->packageEnergyMetricsAvailable ()) {
607
- cout << " " ;
614
+ cout << setNextColor () << " " ;
608
615
cout << setw (6 ) << getConsumedJoules (sstate1, sstate2);
609
616
}
610
617
if (m->ppEnergyMetricsAvailable ()) {
611
- cout << " " ;
618
+ cout << setNextColor () << " " ;
612
619
cout << setw (6 ) << getConsumedJoules (0 , sstate1, sstate2);
613
- cout << " " ;
620
+ cout << setNextColor () << " " ;
614
621
cout << setw (6 ) << getConsumedJoules (1 , sstate1, sstate2);
615
622
}
616
623
if (m->dramEnergyMetricsAvailable ()) {
617
- cout << " " ;
624
+ cout << setNextColor () << " " ;
618
625
cout << setw (6 ) << getDRAMConsumedJoules (sstate1, sstate2);
619
626
}
620
627
if (m->LLCReadMissLatencyMetricsAvailable ()) {
621
- cout << " " ;
628
+ cout << setNextColor () << " " ;
622
629
cout << setw (6 ) << getLLCReadMissLatency (sstate1, sstate2);
623
630
}
624
631
if (m->uncoreFrequencyMetricAvailable ()) {
625
- cout << " " ;
632
+ cout << setNextColor () << " " ;
626
633
cout << setw (4 ) << getAverageUncoreFrequencyGhz (sstate1, sstate2);
627
634
}
628
- cout << " \n " ;
635
+ cout << resetColor () << " \n " ;
629
636
}
630
637
}
631
638
0 commit comments