13 #ifndef _VT_FILTERC_H_
14 #define _VT_FILTERC_H_
23 #include "vt_inttypes.h"
36 std::set<uint32_t> subFuncs;
45 int64_t accDurationExcl;
46 int64_t accDurationIncl;
50 id(0), invocations(0), depth(0), accDurationExcl(0), accDurationIncl(0) {}
52 Function( uint32_t _id,
const std::string& nm ) :
53 id(_id), name(nm), invocations(0), depth(0), accDurationExcl(0), accDurationIncl(0) {}
55 bool operator<(
const Function& func )
const {
58 if( depth != func.depth )
return depth < func.depth;
59 else if( subFuncs.size() != func.subFuncs.size() )
return subFuncs.size() < func.subFuncs.size();
60 else return invocations > func.invocations;
63 void operator+=(
const Function& func ) {
64 invocations += func.invocations;
65 if( depth < func.depth ) depth = func.depth;
66 accDurationExcl += func.accDurationExcl;
67 accDurationIncl += func.accDurationIncl;
69 std::set<uint32_t>::const_iterator itsf;
71 for( itsf = func.subFuncs.begin(); itsf != func.subFuncs.end(); ++itsf ) {
72 if( subFuncs.find( *itsf ) == subFuncs.end() ) subFuncs.insert( *itsf );
77 VT_MPI_INT getPackSize(
void );
78 void packBuffer(
char*& buffer,
const VT_MPI_INT& buffersize, VT_MPI_INT& bufferpos );
79 void unpackBuffer(
char*& buffer,
const VT_MPI_INT& buffersize, VT_MPI_INT& bufferpos );
87 StackItem( std::map<uint32_t, Function>::iterator _it ) : it( _it ) {}
89 std::map<uint32_t, Function>::iterator it;
96 id( _id ), visited( vs ) { visited.insert( _id ); }
100 std::set<uint32_t> visited;
110 void setTimerResolution( uint64_t tickspersecond );
111 void addFunction( uint32_t func,
const std::string& name );
112 void addEnter( uint32_t func, uint32_t process, uint64_t time );
113 void addLeave( uint32_t process, uint64_t time );
115 void incrMessageCount()
117 void incrCollectiveCount()
118 { ++collectiveCount; }
124 void postProcessing();
131 std::vector<Function> getFunctions()
const;
138 std::set<uint32_t> reduceTo(
float* percent,
139 const std::set<uint32_t>& excludesymbols,
140 const std::set<uint32_t>& includesymbols,
141 bool includechildren,
145 uint32_t getMaxStackDepth()
const {
return maxStackDepth; }
146 uint64_t getTotalInvocations()
const {
return totalInvocations; }
147 uint64_t getMaxInvocations()
const {
return maxInvocations; }
148 uint64_t getTimerResolution()
const {
return timerResolution; }
149 uint64_t getMessageCount()
const {
return messageCount; }
150 uint64_t getCollectiveCount()
const {
return collectiveCount; }
152 void operator+=(
const Filter& filter );
154 const std::map<uint32_t, Function>& getFunctionMap()
const {
return functions; }
157 VT_MPI_INT getPackSize(
void );
158 void packBuffer(
char*& buffer,
const VT_MPI_INT& buffersize, VT_MPI_INT& bufferpos );
159 void unpackBuffer(
char*& buffer,
const VT_MPI_INT& buffersize, VT_MPI_INT& bufferpos );
169 uint32_t visitFunction( std::stack<PostStackItem>& stck,
170 std::set<uint32_t>* killed, uint64_t* killedinvocations,
171 const std::set<uint32_t>* nokill );
175 void visitFunctionExclude( std::stack<PostStackItem>& stck,
176 std::set<uint32_t>& nokill );
180 uint32_t maxStackDepth;
181 uint64_t totalInvocations;
182 uint64_t maxInvocations;
183 uint64_t timerResolution;
185 uint64_t messageCount;
186 uint64_t collectiveCount;
189 std::map<uint32_t ,
Function> functions;
191 std::map<uint32_t , std::stack< StackItem > > callStack;
Definition: vt_filterc.h:104
VampirTrace http://www.tu-dresden.de/zih/vampirtrace.
Definition: vt_filterc.h:30
Definition: vt_filterc.h:93
Definition: vt_filterc.h:85