Changeset 1657 for XIOS


Ignore:
Timestamp:
03/15/19 17:02:22 (5 years ago)
Author:
ymipsl
Message:

Implement tracing with ITAC (intel trace analyser)

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/tracer.cpp

    r1655 r1657  
    99#include <scorep/SCOREP_User.h> 
    1010 
     11#elif defined(ITAC) 
     12 
     13#include <VT.h> 
     14 
    1115#endif 
    1216 
    1317#include <string> 
     18#include <map> 
     19#include <iostream> 
    1420 
    1521namespace xios 
    1622{ 
    1723  using namespace std ; 
     24 
     25  std::map<std::string,int> regionId ; 
     26  int count=0 ; 
    1827   
    1928  void traceOn(void) 
     
    2231    VT_ON() ; 
    2332#elif defined(SCOREP) 
    24     SCOREP_RECORDING_ON() 
     33    SCOREP_RECORDING_ON() ; 
     34#elif defined(ITAC) 
     35    VT_traceon() ; 
    2536#endif 
    2637  } 
     
    3243#elif defined(SCOREP) 
    3344    SCOREP_RECORDING_OFF() 
     45#elif defined(ITAC) 
     46    VT_traceoff()   ;   
    3447#endif 
    3548  } 
     
    4154#elif defined(SCOREP) 
    4255    SCOREP_USER_REGION_BY_NAME_BEGIN(name.c_str(),SCOREP_USER_REGION_TYPE_COMMON) 
     56 
     57#elif defined(ITAC) 
     58    int classhandle ; 
     59    auto it = regionId.find(name); 
     60    if (it==regionId.end()) 
     61    { 
     62      classhandle=count ; 
     63      count++ ; 
     64      VT_symdef (classhandle, name.c_str(), "XIOS") ; 
     65      regionId[name]=classhandle; 
     66    } 
     67    else classhandle = it->second ; 
     68    VT_begin(classhandle) ; 
     69    cout<<"VT_begin "<<name<<"  "<<classhandle<<endl ; 
     70 
    4371#endif 
     72 
    4473  } 
    4574   
    4675  void traceEnd(const string& name) 
    4776  { 
    48 #ifdef defined(VTRACE) 
     77#if defined (VTRACE) 
    4978    VT_USER_END(name.c_str()) ; 
    5079#elif defined(SCOREP) 
    5180    SCOREP_USER_REGION_BY_NAME_END(name.c_str()) 
     81#elif defined(ITAC) 
     82    int classhandle ; 
     83    auto it = regionId.find(name); 
     84    if (it==regionId.end()) 
     85    { 
     86      return ; 
     87      VT_classdef (name.c_str(), &classhandle) ; 
     88      regionId[name]=classhandle; 
     89    } 
     90    else classhandle = it->second ; 
     91    VT_end(classhandle) ;     
     92    cout<<"VT_end "<<name<<"  "<<classhandle<<endl ; 
     93 
    5294#endif 
    5395  } 
    5496   
     97    
    5598//  void marker(const string& name,const string& text) ; 
    5699   
Note: See TracChangeset for help on using the changeset viewer.