クラス Onikiri::VisualizationDumper

#include <VisualizationDumper.h>

Onikiri::VisualizationDumperに対する継承グラフ

Inheritance graph
[凡例]
Onikiri::VisualizationDumperのコラボレーション図

Collaboration graph
[凡例]
すべてのメンバ一覧

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.h53 行で定義されています。


コンストラクタとデストラクタ

VisualizationDumper::VisualizationDumper (  ) 

VisualizationDumper.cpp68 行で定義されています。

00069 {
00070     m_visLastPrintCycle = 0;
00071     m_visCurrentCycle = 0;
00072     m_enabled = false;
00073     m_skipInsns = 0;
00074     m_visSerialID = 0;
00075 }

VisualizationDumper::~VisualizationDumper (  ) 

VisualizationDumper.cpp77 行で定義されています。

00078 {
00079 }


関数

void VisualizationDumper::Finalize (  ) 

VisualizationDumper.cpp478 行で定義されています。

参照先 Onikiri::ParamExchange::ReleaseParam().

00479 {
00480     ReleaseParam();
00481 }

関数の呼び出しグラフ:

void VisualizationDumper::Initialize ( const String suffix,
PhysicalResourceArray< Core > &  coreList 
)

VisualizationDumper.cpp441 行で定義されています。

参照先 Onikiri::g_envOnikiri::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.cpp111 行で定義されています。

参照元 Initialize().

00112 {
00113     return m_enabled;
00114 }

Here is the caller graph for this function:

void VisualizationDumper::PrintOpDependency ( const OpIterator  producerOp,
const OpIterator  consumerOp,
DumpDependency  type 
)

VisualizationDumper.cpp520 行で定義されています。

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.cpp486 行で定義されています。

参照先 Onikiri::DS_FETCHOnikiri::DS_FLUSHOnikiri::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.cpp277 行で定義されています。

参照先 Onikiri::VisualizationDumper::OpState::Stage::inOnikiri::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  ) 

VisualizationDumper.cpp333 行で定義されています。

00334 {
00335     PrintStall( op, true );
00336 }

void VisualizationDumper::PrintStallEnd ( OpIterator  op  ) 

VisualizationDumper.cpp338 行で定義されています。

00339 {
00340     PrintStall( op, false );
00341 }

void VisualizationDumper::SetCurrentCycle ( const s64  cycle  ) 

VisualizationDumper.cpp542 行で定義されています。

00543 {
00544     m_visCurrentCycle = cycle;
00545 }

void VisualizationDumper::SetCurrentInsnCount ( Thread thread,
const s64  count 
)

VisualizationDumper.cpp547 行で定義されています。

00548 {
00549     m_threadStateTable[thread].retiredInsnCount = count;
00550 }


このクラスの説明は次のファイルから生成されました:
Onikiri2に対してTue Jun 18 15:24:14 2013に生成されました。  doxygen 1.4.7