#include <VisualizationDumper.h>
Onikiri::VisualizationDumperに対する継承グラフ
Public メソッド | |
void | Finalize () |
void | Initialize (const String &suffix, PhysicalResourceArray< Core > &coreList) |
bool | IsEnabled () |
void | PrintOpDependency (const OpIterator producerOp, const OpIterator consumerOp, DumpDependency type) |
void | PrintOpState (OpIterator op, DUMP_STATE state) |
void | PrintRawOutput (OpIterator op, bool begin, const char *stage, DumpLane lane) |
void | PrintStallBegin (OpIterator op) |
void | PrintStallEnd (OpIterator op) |
void | SetCurrentCycle (const s64 cycle) |
void | SetCurrentInsnCount (Thread *thread, const s64 count) |
VisualizationDumper () | |
~VisualizationDumper () | |
構成 | |
struct | CoreState |
struct | OpState |
struct | ThreadState |
VisualizationDumper.h の 53 行で定義されています。
VisualizationDumper::VisualizationDumper | ( | ) |
VisualizationDumper.cpp の 68 行で定義されています。
00069 { 00070 m_visLastPrintCycle = 0; 00071 m_visCurrentCycle = 0; 00072 m_enabled = false; 00073 m_skipInsns = 0; 00074 m_visSerialID = 0; 00075 }
VisualizationDumper::~VisualizationDumper | ( | ) |
void VisualizationDumper::Finalize | ( | ) |
VisualizationDumper.cpp の 478 行で定義されています。
参照先 Onikiri::ParamExchange::ReleaseParam().
00479 { 00480 ReleaseParam(); 00481 }
関数の呼び出しグラフ:
void VisualizationDumper::Initialize | ( | const String & | suffix, | |
PhysicalResourceArray< Core > & | coreList | |||
) |
VisualizationDumper.cpp の 441 行で定義されています。
参照先 Onikiri::g_env・Onikiri::Environment::GetHostWorkPath()・Onikiri::PhysicalResourceArray< T >::GetSize()・IsEnabled()・Onikiri::ParamExchange::LoadParam()・Onikiri::PhysicalResourceArray< T >::Resize().
00444 { 00445 m_visCurrentCycle = 0; 00446 m_visLastPrintCycle = 0; 00447 00448 LoadParam(); 00449 if( IsEnabled() ){ 00450 String fileName = 00451 g_env.GetHostWorkPath() + 00452 MakeDumpFileName( m_visFileName, suffix, m_gzipEnabled ); 00453 00454 if (m_gzipEnabled){ 00455 m_visStream.push( 00456 iostreams::gzip_compressor( 00457 iostreams::gzip_params(m_gzipLevel) 00458 ) 00459 ); 00460 } 00461 00462 m_visStream.push( iostreams::file_sink( fileName, ios::binary ) ); 00463 m_visStream << MakeKanataHeaderString().c_str(); 00464 00465 00466 for( int i = 0; i < coreList.GetSize(); i++ ){ 00467 CoreState* coreState = &m_coreStateTable[ coreList[i] ]; 00468 coreState->opState.Resize( *coreList[i]->GetOpArray() ); 00469 for( int j = 0; j < coreList[i]->GetThreadCount(); j++ ){ 00470 m_threadStateTable[ coreList[i]->GetThread(j) ].retiredInsnCount = 0; 00471 } 00472 00473 } 00474 } 00475 }
関数の呼び出しグラフ:
bool VisualizationDumper::IsEnabled | ( | ) |
VisualizationDumper.cpp の 111 行で定義されています。
参照元 Initialize().
Here is the caller graph for this function:
void VisualizationDumper::PrintOpDependency | ( | const OpIterator | producerOp, | |
const OpIterator | consumerOp, | |||
DumpDependency | type | |||
) |
VisualizationDumper.cpp の 520 行で定義されています。
00524 { 00525 if( !m_enabled ) 00526 return; 00527 if( IsDumpSkipped( producerOp ) ) 00528 return; 00529 00530 if( !GetOpState( consumerOp )->inPipeline || !GetOpState( producerOp )->inPipeline ) 00531 return; 00532 00533 PrintCycle(); 00534 m_visStream << 00535 "W\t" << 00536 GetVisSerialID( consumerOp ) << "\t" << 00537 GetVisSerialID( producerOp ) << "\t" << 00538 type << "\n"; 00539 }
void VisualizationDumper::PrintOpState | ( | OpIterator | op, | |
DUMP_STATE | state | |||
) |
VisualizationDumper.cpp の 486 行で定義されています。
参照先 Onikiri::DS_FETCH・Onikiri::DS_FLUSH・Onikiri::DS_RETIRE.
00487 { 00488 if( !m_enabled ) 00489 return; 00490 00491 if( IsDumpSkipped( op ) ) 00492 return; 00493 00494 if( !GetOpState( op )->inPipeline && state != DS_FETCH ) 00495 return; 00496 00497 PrintCycle(); 00498 00499 // opvisDump(Fetch)Aop\ヲ 00500 if(state == DS_FETCH ){ 00501 PrintOpInit(op); 00502 } 00503 else{ 00504 // OstageAstageI\ヲ: FetchO 00505 PrintLastPipelineStage( op, GetLastState(op) ); 00506 } 00507 00508 if( state == DS_RETIRE || state == DS_FLUSH ){ 00509 // PipelineStageSI\ヲFopRetire/Flush 00510 PrintOpEnd( op, state ); 00511 } else { 00512 // opVPipelineStage\ヲ 00513 PrintNextPipelineStage( op, state ); 00514 SetLastState( op, state ); // stageXV 00515 } 00516 }
void VisualizationDumper::PrintRawOutput | ( | OpIterator | op, | |
bool | begin, | |||
const char * | stage, | |||
DumpLane | lane | |||
) |
VisualizationDumper.cpp の 277 行で定義されています。
参照先 Onikiri::VisualizationDumper::OpState::Stage::in・Onikiri::VisualizationDumper::OpState::Stage::name.
00279 { 00280 if(!m_enabled) 00281 return; 00282 if( IsDumpSkipped( op ) ) 00283 return; 00284 00285 OpState* opState = GetOpState( op ); 00286 if( !opState->inPipeline ) 00287 return; 00288 00289 OpState::Stage* info = &opState->lastRawStages[lane]; 00290 00291 if( begin && info->in ){ 00292 PrintRawOutput( op, false, info->name.c_str(), lane ); 00293 } 00294 00295 PrintCycle(); 00296 00297 const char* tag = begin ? "S\t" : "E\t"; 00298 m_visStream << 00299 tag << 00300 GetVisSerialID( op ) << "\t" << 00301 lane << "\t" << 00302 stage << "\t" << 00303 "\n"; 00304 00305 info->in = begin; 00306 info->name = stage; 00307 }
void VisualizationDumper::PrintStallBegin | ( | OpIterator | op | ) |
void VisualizationDumper::PrintStallEnd | ( | OpIterator | op | ) |
void VisualizationDumper::SetCurrentCycle | ( | const s64 | cycle | ) |