/[escript]/trunk/paso/src/performance.h
ViewVC logotype

Diff of /trunk/paso/src/performance.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 494 by gross, Fri Feb 3 07:35:49 2006 UTC revision 2548 by jfenwick, Mon Jul 20 06:20:06 2009 UTC
# Line 1  Line 1 
1  /* $Id$ */  
2    /*******************************************************
3    *
4    * Copyright (c) 2003-2009 by University of Queensland
5    * Earth Systems Science Computational Center (ESSCC)
6    * http://www.uq.edu.au/esscc
7    *
8    * Primary Business: Queensland, Australia
9    * Licensed under the Open Software License version 3.0
10    * http://www.opensource.org/licenses/osl-3.0.php
11    *
12    *******************************************************/
13    
14    
15  /**************************************************************/  /**************************************************************/
16    
17  /* Paso: perfomance monitor interface using papi*/  /* Paso: perfomance monitor interface using papi              */
18    
19  /**************************************************************/  /**************************************************************/
20    
21  /* Copyrights by ACcESS Australia 2003/04 */  /* Copyrights by ACcESS Australia 2006 */
22  /* Author: gross@access.edu.au */  /* Author: gross@access.edu.au */
23    
24  /**************************************************************/  /**************************************************************/
# Line 14  Line 26 
26  #ifndef INC_PASO_PERFORMANCE  #ifndef INC_PASO_PERFORMANCE
27  #define INC_PASO_PERFORMANCE  #define INC_PASO_PERFORMANCE
28    
29  #ifdef PAPI  #define PERFORMANCE_UNMONITORED_EVENT -1
30    #define PERFORMANCE_NUM_EVENTS 10                         /* maximum number of events handeled by PAPI */
 #include <papi.h>  
31    
32  Paso_Performance* Performance_init();  #define PERFORMANCE_ALL 0
33  void Performance_start_solver(Paso_Performance&);  #define PERFORMANCE_SOLVER 1
34  void Performance_start_preconditioner_init(Paso_Performance&);  #define PERFORMANCE_PRECONDITIONER_INIT 2
35  void Performance_start_preconditioner(Paso_Performance&);  #define PERFORMANCE_PRECONDITIONER 3
36  void Performance_start_mvm(Paso_Performance&);  #define PERFORMANCE_MVM 4
37  void Performance_end_preconditioner(Paso_Performance&);  #define PERFORMANCE_ASSEMBLAGE 5
38  void Performance_end_preconditioner_init(Paso_Performance&);  #define PERFORMANCE_UNKNOWN 6                             /* more can be added here */
39  void Performance_end_mvm(Paso_Performance&);  #define PERFORMANCE_NUM_MONITORS PERFORMANCE_UNKNOWN+1
40  void Performance_end_solver(Paso_Performance&);  
41  void Performance_finalized(Paso_Performance&);  #define PERFORMANCE_UNUSED -1
42    #define PERFORMANCE_CLOSED 0
43    #define PERFORMANCE_OPENED 1
44    
45    #ifdef PAPI
46    #include <papi.h>
47  struct Paso_Performance {  struct Paso_Performance {
48        int event_set;                                                       /* papi event sets for the monitors */
49        int num_events;                                                     /* number of events tracked by the monitors */
50        int events[PERFORMANCE_NUM_EVENTS];                                 /* the event tracked by the monitors */
51        long_long values[PERFORMANCE_NUM_MONITORS][PERFORMANCE_NUM_EVENTS]; /* counter accummulator */
52        long_long cycles[PERFORMANCE_NUM_MONITORS];                         /* cycle accumulator */
53        int set[PERFORMANCE_NUM_MONITORS];
54    };
55    #else
56    struct Paso_Performance {
57        int none;
58  };  };
 typedef Paso_Performance struct Paso_Performance;  
   
59  #endif  #endif
60    typedef struct Paso_Performance Paso_Performance;
61    
62    
63  void Performance_init(void*) {  void Performance_open(Paso_Performance* pp,int verbose);
64     #ifdef PAPI  int  Performance_getEventIndex(Paso_Performance* pp, int event_id);
65        /* Initialize the PAPI library */  void Performance_close(Paso_Performance* pp,int verbose);
66        retval = PAPI_library_init(PAPI_VER_CURRENT);  void Performance_startMonitor(Paso_Performance* pp,int monitor);
67        if (retval != PAPI_VER_CURRENT && retval > 0) {  void Performance_stopMonitor(Paso_Performance* pp,int monitor);
         fprintf(stderr,"PAPI library version mismatch!\n");  
         exit(1);  
       }  
       if (retval < 0) {  
         fprintf(stderr, “Initialization error!\n”);  
         exit(1);  
       }  
    #endif  
    NUM_EVENTS=5;  
    events={PAPI_FP_OPS,PAPI_L1_DCM,PAPI_L2_DCM,PAPI_L3_DCM};  
   
    out->all  
    out->solver  
    out->preconditioner_init  
    out->preconditioner  
    out->mvm  
 }  
   
 Performance_start(Paso_Performance& pp) {  
     pp->  
   
68    
69    #endif
70    
71  }  /*
72     * $Log$
73    */

Legend:
Removed from v.494  
changed lines
  Added in v.2548

  ViewVC Help
Powered by ViewVC 1.1.26